commit 4f2a629340af8602f19999bc8465a7d35e52b405 Author: Abhishek Kumar Date: Tue Sep 9 14:37:32 2025 +0530 Initial Commit 🚀 🚀 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..3a7c634 --- /dev/null +++ b/.env.example @@ -0,0 +1,29 @@ +# Core application config +ENVIRONMENT: "local" +LOG_LEVEL: "INFO" + +# Database configuration (using containerized postgres) +DATABASE_URL: "postgresql+asyncpg://postgres:postgres@postgres:5432/postgres" + +# Redis configuration (using containerized redis) +REDIS_URL: "redis://:redissecret@redis:6379" + +# Storage configuration - using local MinIO +ENABLE_AWS_S3: "false" + +# MinIO +MINIO_ENDPOINT: "minio:9000" +MINIO_ACCESS_KEY: "minioadmin" +MINIO_SECRET_KEY: "minioadmin" +MINIO_BUCKET: "voice-audio" +MINIO_SECURE: "false" + +# Langfuse +ENABLE_TRACING: "false" +# LANGFUSE_SECRET_KEY: "" +# LANGFUSE_PUBLIC_KEY: "" +# LANGFUSE_HOST: "https://langfuse.dograh.com" + +# Sentry +ENABLE_SETRY: "false" +SENTRY_DSN: "" \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f0ffdd1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +__pycache__ +.DS_Store +.env + +# logs and run directory on production +/logs/ +/run/ +docs/ +infrastructure/ +nginx/ +scripts/ diff --git a/api/.cursorignore b/api/.cursorignore new file mode 100644 index 0000000..8aace1e --- /dev/null +++ b/api/.cursorignore @@ -0,0 +1,15 @@ +# root +.git +.pytest_cache +.ruff_cache +.DS_Store +__pycache__ +.pytest_cache + +# ui +ui/.next +ui/node_modules +ui/dist +ui/build +ui/coverage +ui/public diff --git a/api/.dockerignore b/api/.dockerignore new file mode 100644 index 0000000..ea73fa8 --- /dev/null +++ b/api/.dockerignore @@ -0,0 +1,94 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +*.egg +*.egg-info/ +dist/ +build/ +.Python +pip-log.txt +pip-delete-this-directory.txt +.tox/ +.coverage +.coverage.* +.cache +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ +*.log + +# Virtual Environments +venv/ +env/ +ENV/ +.venv/ +.ENV/ +virtualenv/ + +# IDEs +.vscode/ +.idea/ +*.swp +*.swo +*~ +.DS_Store + +# Git +.git/ +.gitignore +.gitattributes + +# Environment files (we'll copy only what's needed) +.env +.env.* + +# Documentation +*.md +docs/ +README* + +# Tests +tests/ +test/ +*_test.py +test_*.py + +# CI/CD +.github/ +.gitlab-ci.yml +.travis.yml + +# Temporary files +*.tmp +tmp/ +temp/ + +# Database +*.db +*.sqlite +*.sqlite3 + +# Notebooks +*.ipynb +.ipynb_checkpoints/ +notebooks/ + +# Docker +Dockerfile +docker-compose*.yml +docker-compose*.yaml +.dockerignore + +# Other unnecessary files for production +*.bak +*.orig +.editorconfig +.pre-commit-config.yaml +pyproject.toml +setup.cfg +Makefile +scripts/ +migrations/alembic.ini \ No newline at end of file diff --git a/api/.env.example b/api/.env.example new file mode 100644 index 0000000..8803380 --- /dev/null +++ b/api/.env.example @@ -0,0 +1,84 @@ +# Environment Configuration +ENVIRONMENT="local" +LOG_LEVEL="DEBUG" + +# Backend API Configuration +BACKEND_API_ENDPOINT="your-ngrok-url.ngrok-free.app" + +# Database Configuration +DATABASE_URL="postgresql+asyncpg://postgres:postgres@localhost:5432/postgres" +REDIS_URL="redis://:redissecret@localhost:6379" + +# Superuser Configuration +SUPERUSER_PASSWORD="your-secure-password" + +# AI Service API Keys (commented out by default) +# CARTESIA_API_KEY="sk_car_xxxxxxxxxxxxxxxxx" +# DEEPGRAM_API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + +# LiveKit Configuration (optional) +# LIVEKIT_API_KEY="APIxxxxxxxxxx" +# LIVEKIT_API_SECRET="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +# LIVEKIT_URL="wss://your-livekit-instance.livekit.cloud" + +# AWS S3 Configuration (required for SaaS mode) +AWS_ACCESS_KEY_ID="AKIAXXXXXXXXXXXXXXXXX" +AWS_SECRET_ACCESS_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +S3_BUCKET="your-s3-bucket-name" +S3_REGION="us-east-1" + +# Stack Auth Configuration +STACK_AUTH_API_URL="https://api.stack-auth.com" +STACK_AUTH_PROJECT_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" +STACK_SECRET_SERVER_KEY="ssk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +STACK_PUBLISHABLE_CLIENT_KEY="pck_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + +# Twilio Configuration +TWILIO_ACCOUNT_SID="SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +TWILIO_AUTH_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +TWILIO_FROM_NUMBER="+1234567890" + +# Tracing and Analytics +ENABLE_TRACING=true +LANGFUSE_SECRET_KEY="sk-lf-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" +LANGFUSE_PUBLIC_KEY="pk-lf-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" +LANGFUSE_HOST="https://langfuse.your-domain.com" + +# AI Service API Keys +GROQ_API_KEY="gsk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +NEUPHONIC_API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" +NANGO_API_KEY="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + +# Default API Keys for new user signups +OPENAI_API_KEY="sk-proj-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +ELEVENLABS_API_KEY="sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +DEEPGRAM_API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +GOOGLE_API_KEY="AIzaSyXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + +# Smart Turn Configuration +ENABLE_SMART_TURN=true +SMART_TURN_WS_SERVICE_ENDPOINT="wss://your-gpu-server.domain.com/ws" +SMART_TURN_HTTP_SERVICE_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=" + +# SSL Key Logging (for debugging) +# SSLKEYLOGFILE=/path/to/ssl-keys.log + +# Turn Logging +ENABLE_TURN_LOGGING=true + +# OpenTelemetry Configuration +OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true +SIGNOZ_EXPORTER_ENDPOINT="ingest.us.signoz.cloud:443" +SIGNOZ_EXPORTER_HEADERS="signoz-ingestion-key=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + +# Storage Configuration +# User mode: 'saas' (default) uses AWS S3; 'oss' uses local MinIO +USER_MODE=saas + +# OSS (MinIO) Configuration - only required when USER_MODE=oss +# These values are optional and will use defaults if not provided +MINIO_ENDPOINT=localhost:9000 +MINIO_ACCESS_KEY=minioadmin +MINIO_SECRET_KEY=minioadmin +MINIO_BUCKET=voice-audio +MINIO_SECURE=false \ No newline at end of file diff --git a/api/.gitignore b/api/.gitignore new file mode 100644 index 0000000..749423c --- /dev/null +++ b/api/.gitignore @@ -0,0 +1,2 @@ +services/admin_utils +services/gender/names \ No newline at end of file diff --git a/api/Dockerfile b/api/Dockerfile new file mode 100644 index 0000000..a30415f --- /dev/null +++ b/api/Dockerfile @@ -0,0 +1,24 @@ +# Dockerfile +FROM python:3.12-slim + +WORKDIR /app + +RUN apt-get update && apt-get install -y \ + git \ + ffmpeg \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +# Copy and install requirements +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +COPY . ./api + +ENV PYTHONPATH=/app + +# Expose the port FastAPI will run on +EXPOSE 8000 + +# Run the FastAPI app with uvicorn +CMD ["uvicorn", "api.app:app", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file diff --git a/api/__init__.py b/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/alembic.ini b/api/alembic.ini new file mode 100644 index 0000000..b2cca73 --- /dev/null +++ b/api/alembic.ini @@ -0,0 +1,121 @@ +# A generic, single database configuration. + +[alembic] +# path to migration scripts +# Use forward slashes (/) also on windows to provide an os agnostic path +script_location = %(here)s/alembic + +# template used to generate migration file names; The default value is %%(rev)s_%%(slug)s +# Uncomment the line below if you want the files to be prepended with date and time +# see https://alembic.sqlalchemy.org/en/latest/tutorial.html#editing-the-ini-file +# for all available tokens +# file_template = %%(year)d_%%(month).2d_%%(day).2d_%%(hour).2d%%(minute).2d-%%(rev)s_%%(slug)s + +# sys.path path, will be prepended to sys.path if present. +# defaults to the current working directory. +prepend_sys_path = . + +# timezone to use when rendering the date within the migration file +# as well as the filename. +# If specified, requires the python>=3.9 or backports.zoneinfo library and tzdata library. +# Any required deps can installed by adding `alembic[tz]` to the pip requirements +# string value is passed to ZoneInfo() +# leave blank for localtime +# timezone = + +# max length of characters to apply to the "slug" field +# truncate_slug_length = 40 + +# set to 'true' to run the environment during +# the 'revision' command, regardless of autogenerate +# revision_environment = false + +# set to 'true' to allow .pyc and .pyo files without +# a source .py file to be detected as revisions in the +# versions/ directory +# sourceless = false + +# version location specification; This defaults +# to alembic/versions. When using multiple version +# directories, initial revisions must be specified with --version-path. +# The path separator used here should be the separator specified by "version_path_separator" below. +# version_locations = %(here)s/bar:%(here)s/bat:alembic/versions + +# version path separator; As mentioned above, this is the character used to split +# version_locations. The default within new alembic.ini files is "os", which uses os.pathsep. +# If this key is omitted entirely, it falls back to the legacy behavior of splitting on spaces and/or commas. +# Valid values for version_path_separator are: +# +# version_path_separator = : +# version_path_separator = ; +# version_path_separator = space +# version_path_separator = newline +# +# Use os.pathsep. Default configuration used for new projects. +version_path_separator = os + +# set to 'true' to search source files recursively +# in each "version_locations" directory +# new in Alembic version 1.10 +# recursive_version_locations = false + +# the output encoding used when revision files +# are written from script.py.mako +# output_encoding = utf-8 + +# This is only a fallback. The actual value is determined in +# alembic/env.py get_url() method +sqlalchemy.url = "" + + +[post_write_hooks] +# post_write_hooks defines scripts or Python functions that are run +# on newly generated revision scripts. See the documentation for further +# detail and examples + +# format using "black" - use the console_scripts runner, against the "black" entrypoint +# hooks = black +# black.type = console_scripts +# black.entrypoint = black +# black.options = -l 79 REVISION_SCRIPT_FILENAME + +# lint with attempts to fix using "ruff" - use the exec runner, execute a binary +# hooks = ruff +# ruff.type = exec +# ruff.executable = %(here)s/.venv/bin/ruff +# ruff.options = --fix REVISION_SCRIPT_FILENAME + +# Logging configuration +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARNING +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARNING +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/api/alembic/env.py b/api/alembic/env.py new file mode 100644 index 0000000..697aa50 --- /dev/null +++ b/api/alembic/env.py @@ -0,0 +1,111 @@ +import asyncio +import sys +from logging.config import fileConfig +from pathlib import Path + +import alembic_postgresql_enum # noqa: F401 - registers enum handling hooks +from alembic import context +from sqlalchemy import pool +from sqlalchemy.ext.asyncio import create_async_engine + +from api.constants import DATABASE_URL + +# Add parent directory to path +sys.path.insert(0, str(Path(__file__).parent.parent.parent)) + +# Interpret the config file for Python logging. +config = context.config +fileConfig(config.config_file_name) + +# Import your model's MetaData object for 'autogenerate' support. +from api.db.models import Base # noqa: E402 ensure this points to your models.py + +target_metadata = Base.metadata + + +def get_url(): + """Get database URL from environment variable or config file.""" + return DATABASE_URL or config.get_main_option("sqlalchemy.url") + + +def run_migrations_offline(): + """Run migrations in 'offline' mode.""" + url = get_url() + context.configure( + url=url, + target_metadata=target_metadata, + literal_binds=True, + include_object=include_object, + render_item=render_item, + compare_type=True, + compare_server_default=True, + ) + with context.begin_transaction(): + context.run_migrations() + + +def include_object(object, name, type_, reflected, compare_to): + """ + Custom function to exclude redundant indexes on primary keys. + """ + # Unused parameters are required by Alembic's API + _ = (name, reflected, compare_to) + + if type_ == "index": + # Skip indexes on primary key columns that aren't unique + # Primary keys already have implicit unique indexes + if hasattr(object, "columns") and len(object.columns) == 1: + col = list(object.columns)[0] + if col.primary_key and not object.unique: + return False + return True + + +def render_item(type_, obj, autogen_context): + """ + Custom render function to fix index generation. + """ + # Unused parameter is required by Alembic's API + _ = autogen_context + + if type_ == "index": + # For indexes on columns marked as unique in the model, + # ensure the index is also unique + if hasattr(obj, "columns"): + for col in obj.columns: + if hasattr(col, "unique") and col.unique and not obj.unique: + obj.unique = True + break + return False # Let Alembic handle the rendering + + +def do_run_migrations(connection): + context.configure( + connection=connection, + target_metadata=target_metadata, + include_object=include_object, + render_item=render_item, + compare_type=True, + compare_server_default=True, + ) + with context.begin_transaction(): + context.run_migrations() + + +async def run_migrations_online(): + """Run migrations in 'online' mode.""" + connectable = create_async_engine( + get_url(), + poolclass=pool.NullPool, + ) + + async with connectable.connect() as connection: + # Run migrations using the synchronous 'do_run_migrations' function + await connection.run_sync(do_run_migrations) + await connectable.dispose() + + +if context.is_offline_mode(): + run_migrations_offline() +else: + asyncio.run(run_migrations_online()) diff --git a/api/alembic/script.py.mako b/api/alembic/script.py.mako new file mode 100644 index 0000000..fbc4b07 --- /dev/null +++ b/api/alembic/script.py.mako @@ -0,0 +1,26 @@ +"""${message} + +Revision ID: ${up_revision} +Revises: ${down_revision | comma,n} +Create Date: ${create_date} + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +${imports if imports else ""} + +# revision identifiers, used by Alembic. +revision: str = ${repr(up_revision)} +down_revision: Union[str, None] = ${repr(down_revision)} +branch_labels: Union[str, Sequence[str], None] = ${repr(branch_labels)} +depends_on: Union[str, Sequence[str], None] = ${repr(depends_on)} + + +def upgrade() -> None: + ${upgrades if upgrades else "pass"} + + +def downgrade() -> None: + ${downgrades if downgrades else "pass"} diff --git a/api/alembic/versions/08bb6e7f1397_added_campaign_table.py b/api/alembic/versions/08bb6e7f1397_added_campaign_table.py new file mode 100644 index 0000000..2265fde --- /dev/null +++ b/api/alembic/versions/08bb6e7f1397_added_campaign_table.py @@ -0,0 +1,91 @@ +"""added campaign table + +Revision ID: 08bb6e7f1397 +Revises: 0c1223cc266f +Create Date: 2025-07-23 18:46:38.955381 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "08bb6e7f1397" +down_revision: Union[str, None] = "0c1223cc266f" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "campaigns", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("name", sa.String(), nullable=False), + sa.Column("organization_id", sa.Integer(), nullable=False), + sa.Column("workflow_id", sa.Integer(), nullable=False), + sa.Column("created_by", sa.Integer(), nullable=False), + sa.Column("source_type", sa.String(), nullable=False), + sa.Column("source_id", sa.String(), nullable=False), + sa.Column( + "state", + sa.Enum( + "created", + "running", + "paused", + "completed", + "failed", + name="campaign_state", + ), + nullable=False, + ), + sa.Column("total_rows", sa.Integer(), nullable=True), + sa.Column("processed_rows", sa.Integer(), nullable=False), + sa.Column("failed_rows", sa.Integer(), nullable=False), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=True), + sa.Column("started_at", sa.DateTime(timezone=True), nullable=True), + sa.Column("completed_at", sa.DateTime(timezone=True), nullable=True), + sa.Column("updated_at", sa.DateTime(timezone=True), nullable=True), + sa.ForeignKeyConstraint( + ["created_by"], + ["users.id"], + ), + sa.ForeignKeyConstraint( + ["organization_id"], + ["organizations.id"], + ), + sa.ForeignKeyConstraint( + ["workflow_id"], + ["workflows.id"], + ), + sa.PrimaryKeyConstraint("id"), + ) + op.create_index(op.f("ix_campaigns_id"), "campaigns", ["id"], unique=False) + op.create_index(op.f("ix_campaigns_name"), "campaigns", ["name"], unique=False) + op.create_index( + "ix_campaigns_org_id", "campaigns", ["organization_id"], unique=False + ) + op.create_index("ix_campaigns_state", "campaigns", ["state"], unique=False) + op.create_index( + "ix_campaigns_workflow_id", "campaigns", ["workflow_id"], unique=False + ) + op.add_column( + "workflow_runs", sa.Column("campaign_id", sa.Integer(), nullable=True) + ) + op.create_foreign_key(None, "workflow_runs", "campaigns", ["campaign_id"], ["id"]) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, "workflow_runs", type_="foreignkey") + op.drop_column("workflow_runs", "campaign_id") + op.drop_index("ix_campaigns_workflow_id", table_name="campaigns") + op.drop_index("ix_campaigns_state", table_name="campaigns") + op.drop_index("ix_campaigns_org_id", table_name="campaigns") + op.drop_index(op.f("ix_campaigns_name"), table_name="campaigns") + op.drop_index(op.f("ix_campaigns_id"), table_name="campaigns") + op.drop_table("campaigns") + # ### end Alembic commands ### diff --git a/api/alembic/versions/0c1223cc266f_make_json_not_nullable.py b/api/alembic/versions/0c1223cc266f_make_json_not_nullable.py new file mode 100644 index 0000000..3182e85 --- /dev/null +++ b/api/alembic/versions/0c1223cc266f_make_json_not_nullable.py @@ -0,0 +1,207 @@ +"""make json not nullable + +Revision ID: 0c1223cc266f +Revises: 0fe708f2acb9 +Create Date: 2025-07-21 14:36:31.182969 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision: str = "0c1223cc266f" +down_revision: Union[str, None] = "0fe708f2acb9" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # Update existing NULL values to empty dict for workflows table + op.execute(""" + UPDATE workflows + SET template_context_variables = '{}'::jsonb + WHERE template_context_variables IS NULL + """) + op.execute(""" + UPDATE workflows + SET call_disposition_codes = '{}'::jsonb + WHERE call_disposition_codes IS NULL + """) + + # Update existing NULL values to empty dict for workflow_runs table + op.execute(""" + UPDATE workflow_runs + SET usage_info = '{}'::jsonb + WHERE usage_info IS NULL + """) + op.execute(""" + UPDATE workflow_runs + SET cost_info = '{}'::jsonb + WHERE cost_info IS NULL + """) + op.execute(""" + UPDATE workflow_runs + SET initial_context = '{}'::jsonb + WHERE initial_context IS NULL + """) + op.execute(""" + UPDATE workflow_runs + SET gathered_context = '{}'::jsonb + WHERE gathered_context IS NULL + """) + op.execute(""" + UPDATE workflow_runs + SET annotations = '{}'::jsonb + WHERE annotations IS NULL + """) + + # Update existing NULL values to empty dict for looptalk_test_sessions table + op.execute(""" + UPDATE looptalk_test_sessions + SET results = '{}'::jsonb + WHERE results IS NULL + """) + + # Update existing NULL values to empty dict for looptalk_conversations table + op.execute(""" + UPDATE looptalk_conversations + SET transcript = '{}'::jsonb + WHERE transcript IS NULL + """) + op.execute(""" + UPDATE looptalk_conversations + SET metrics = '{}'::jsonb + WHERE metrics IS NULL + """) + + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column( + "looptalk_conversations", + "transcript", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=False, + ) + op.alter_column( + "looptalk_conversations", + "metrics", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=False, + ) + op.alter_column( + "looptalk_test_sessions", + "results", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=False, + ) + op.alter_column( + "workflow_runs", + "usage_info", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=False, + ) + op.alter_column( + "workflow_runs", + "cost_info", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=False, + ) + op.alter_column( + "workflow_runs", + "initial_context", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=False, + ) + op.alter_column( + "workflow_runs", + "gathered_context", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=False, + ) + op.alter_column( + "workflow_runs", + "annotations", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=False, + ) + op.alter_column( + "workflows", + "template_context_variables", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=False, + ) + op.alter_column( + "workflows", + "call_disposition_codes", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=False, + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column( + "workflows", + "call_disposition_codes", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=True, + ) + op.alter_column( + "workflows", + "template_context_variables", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=True, + ) + op.alter_column( + "workflow_runs", + "annotations", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=True, + ) + op.alter_column( + "workflow_runs", + "gathered_context", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=True, + ) + op.alter_column( + "workflow_runs", + "initial_context", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=True, + ) + op.alter_column( + "workflow_runs", + "cost_info", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=True, + ) + op.alter_column( + "workflow_runs", + "usage_info", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=True, + ) + op.alter_column( + "looptalk_test_sessions", + "results", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=True, + ) + op.alter_column( + "looptalk_conversations", + "metrics", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=True, + ) + op.alter_column( + "looptalk_conversations", + "transcript", + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=True, + ) + # ### end Alembic commands ### diff --git a/api/alembic/versions/0c1bbc83fe9e_fix_unique_constraint_on_workflow_.py b/api/alembic/versions/0c1bbc83fe9e_fix_unique_constraint_on_workflow_.py new file mode 100644 index 0000000..7c85b00 --- /dev/null +++ b/api/alembic/versions/0c1bbc83fe9e_fix_unique_constraint_on_workflow_.py @@ -0,0 +1,51 @@ +"""fix unique constraint on workflow definition + +Revision ID: 0c1bbc83fe9e +Revises: 9f5f2d35f6fb +Create Date: 2025-06-04 15:56:02.979658 + +""" + +from typing import Sequence, Union + +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "0c1bbc83fe9e" +down_revision: Union[str, None] = "9f5f2d35f6fb" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index( + "ix_workflow_definitions_workflow_hash", table_name="workflow_definitions" + ) + op.create_index( + "ix_workflow_hash_workflow_id", + "workflow_definitions", + ["workflow_hash", "workflow_id"], + unique=False, + ) + op.create_unique_constraint( + "uq_workflow_hash_workflow_id", + "workflow_definitions", + ["workflow_hash", "workflow_id"], + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint( + "uq_workflow_hash_workflow_id", "workflow_definitions", type_="unique" + ) + op.drop_index("ix_workflow_hash_workflow_id", table_name="workflow_definitions") + op.create_index( + "ix_workflow_definitions_workflow_hash", + "workflow_definitions", + ["workflow_hash"], + unique=True, + ) + # ### end Alembic commands ### diff --git a/api/alembic/versions/0fe708f2acb9_add_call_disposition_codes.py b/api/alembic/versions/0fe708f2acb9_add_call_disposition_codes.py new file mode 100644 index 0000000..fe0c5dc --- /dev/null +++ b/api/alembic/versions/0fe708f2acb9_add_call_disposition_codes.py @@ -0,0 +1,32 @@ +"""add call disposition codes + +Revision ID: 0fe708f2acb9 +Revises: 1225ac786848 +Create Date: 2025-07-21 14:27:42.942689 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "0fe708f2acb9" +down_revision: Union[str, None] = "1225ac786848" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "workflows", sa.Column("call_disposition_codes", sa.JSON(), nullable=True) + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("workflows", "call_disposition_codes") + # ### end Alembic commands ### diff --git a/api/alembic/versions/1225ac786848_add_organization_configurations.py b/api/alembic/versions/1225ac786848_add_organization_configurations.py new file mode 100644 index 0000000..c9a4b9c --- /dev/null +++ b/api/alembic/versions/1225ac786848_add_organization_configurations.py @@ -0,0 +1,63 @@ +"""add organization configurations + +Revision ID: 1225ac786848 +Revises: 1da1d650c0e4 +Create Date: 2025-07-12 16:32:04.725072 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "1225ac786848" +down_revision: Union[str, None] = "1da1d650c0e4" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "organization_configurations", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("organization_id", sa.Integer(), nullable=False), + sa.Column("key", sa.String(), nullable=False), + sa.Column("value", sa.JSON(), nullable=False), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=True), + sa.Column("updated_at", sa.DateTime(timezone=True), nullable=True), + sa.ForeignKeyConstraint( + ["organization_id"], ["organizations.id"], ondelete="CASCADE" + ), + sa.PrimaryKeyConstraint("id"), + sa.UniqueConstraint("organization_id", "key", name="_organization_key_uc"), + ) + op.create_index( + op.f("ix_organization_configurations_id"), + "organization_configurations", + ["id"], + unique=False, + ) + op.create_index( + "ix_organization_configurations_organization_id", + "organization_configurations", + ["organization_id"], + unique=False, + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index( + "ix_organization_configurations_organization_id", + table_name="organization_configurations", + ) + op.drop_index( + op.f("ix_organization_configurations_id"), + table_name="organization_configurations", + ) + op.drop_table("organization_configurations") + # ### end Alembic commands ### diff --git a/api/alembic/versions/13ccd6e1f5ad_add_workflow_run_mode.py b/api/alembic/versions/13ccd6e1f5ad_add_workflow_run_mode.py new file mode 100644 index 0000000..db5f56c --- /dev/null +++ b/api/alembic/versions/13ccd6e1f5ad_add_workflow_run_mode.py @@ -0,0 +1,39 @@ +"""add workflow run mode + +Revision ID: 13ccd6e1f5ad +Revises: 4735a1f0cdb3 +Create Date: 2025-07-28 17:44:10.827671 + +""" + +from typing import Sequence, Union + +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "13ccd6e1f5ad" +down_revision: Union[str, None] = "4735a1f0cdb3" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.execute( + "ALTER TYPE workflow_run_mode ADD VALUE IF NOT EXISTS 'webrtc' AFTER 'CHAT';" + ) + op.execute( + "ALTER TYPE workflow_run_mode ADD VALUE IF NOT EXISTS 'smallwebrtc' AFTER 'webrtc';" + ) + op.execute( + "ALTER TYPE workflow_run_mode ADD VALUE IF NOT EXISTS 'twilio' AFTER 'smallwebrtc';" + ) + op.execute( + "ALTER TYPE workflow_run_mode ADD VALUE IF NOT EXISTS 'stasis' AFTER 'twilio';" + ) + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### diff --git a/api/alembic/versions/1d441e79db94_add_user_model.py b/api/alembic/versions/1d441e79db94_add_user_model.py new file mode 100644 index 0000000..75cc0cc --- /dev/null +++ b/api/alembic/versions/1d441e79db94_add_user_model.py @@ -0,0 +1,48 @@ +"""Add user model + +Revision ID: 1d441e79db94 +Revises: 2d6e2f41caa2 +Create Date: 2025-04-16 17:40:04.699129 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "1d441e79db94" +down_revision: Union[str, None] = "2d6e2f41caa2" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "users", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("provider_id", sa.String(), nullable=False), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=True), + sa.PrimaryKeyConstraint("id"), + ) + op.create_index(op.f("ix_users_id"), "users", ["id"], unique=False) + op.create_index(op.f("ix_users_provider_id"), "users", ["provider_id"], unique=True) + op.add_column("livekit_rooms", sa.Column("user_id", sa.Integer(), nullable=True)) + op.create_foreign_key(None, "livekit_rooms", "users", ["user_id"], ["id"]) + op.add_column("workflows", sa.Column("user_id", sa.Integer(), nullable=True)) + op.create_foreign_key(None, "workflows", "users", ["user_id"], ["id"]) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, "workflows", type_="foreignkey") + op.drop_column("workflows", "user_id") + op.drop_constraint(None, "livekit_rooms", type_="foreignkey") + op.drop_column("livekit_rooms", "user_id") + op.drop_index(op.f("ix_users_provider_id"), table_name="users") + op.drop_index(op.f("ix_users_id"), table_name="users") + op.drop_table("users") + # ### end Alembic commands ### diff --git a/api/alembic/versions/1da1d650c0e4_add_total_call_duration_to_usage.py b/api/alembic/versions/1da1d650c0e4_add_total_call_duration_to_usage.py new file mode 100644 index 0000000..2e1c52e --- /dev/null +++ b/api/alembic/versions/1da1d650c0e4_add_total_call_duration_to_usage.py @@ -0,0 +1,38 @@ +"""add total call duration to usage + +Revision ID: 1da1d650c0e4 +Revises: ec010596a0b4 +Create Date: 2025-07-08 15:41:15.039999 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "1da1d650c0e4" +down_revision: Union[str, None] = "ec010596a0b4" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "organization_usage_cycles", + sa.Column( + "total_duration_seconds", + sa.Integer(), + nullable=False, + server_default=sa.text("0"), + ), + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("organization_usage_cycles", "total_duration_seconds") + # ### end Alembic commands ### diff --git a/api/alembic/versions/20c780c2a218_add_provider.py b/api/alembic/versions/20c780c2a218_add_provider.py new file mode 100644 index 0000000..69a76a3 --- /dev/null +++ b/api/alembic/versions/20c780c2a218_add_provider.py @@ -0,0 +1,30 @@ +"""add provider + +Revision ID: 20c780c2a218 +Revises: ac6da37c5034 +Create Date: 2025-06-09 19:23:00.111377 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "20c780c2a218" +down_revision: Union[str, None] = "ac6da37c5034" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column("integrations", sa.Column("provider", sa.String(), nullable=False)) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("integrations", "provider") + # ### end Alembic commands ### diff --git a/api/alembic/versions/2159d4ac431a_added_quota_tables.py b/api/alembic/versions/2159d4ac431a_added_quota_tables.py new file mode 100644 index 0000000..51efc4c --- /dev/null +++ b/api/alembic/versions/2159d4ac431a_added_quota_tables.py @@ -0,0 +1,118 @@ +"""added quota tables + +Revision ID: 2159d4ac431a +Revises: e0d1a9b9f6c4 +Create Date: 2025-07-08 14:38:38.542486 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "2159d4ac431a" +down_revision: Union[str, None] = "e0d1a9b9f6c4" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + # 1) Create the `quota_type` enum *before* we add the column that references it. + # Alembic does **not** automatically emit a CREATE TYPE statement for Enum + # objects when they are used inside `op.add_column()`. If we skip this step + # Postgres raises `type "quota_type" does not exist` when applying the + # migration. + quota_type_enum = sa.Enum("monthly", "annual", name="quota_type") + quota_type_enum.create(op.get_bind(), checkfirst=True) + + op.create_table( + "organization_usage_cycles", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("organization_id", sa.Integer(), nullable=False), + sa.Column("period_start", sa.DateTime(), nullable=False), + sa.Column("period_end", sa.DateTime(), nullable=False), + sa.Column("quota_dograh_tokens", sa.Integer(), nullable=False), + sa.Column("used_dograh_tokens", sa.Integer(), nullable=False), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=True), + sa.Column("updated_at", sa.DateTime(timezone=True), nullable=True), + sa.ForeignKeyConstraint( + ["organization_id"], + ["organizations.id"], + ), + sa.PrimaryKeyConstraint("id"), + sa.UniqueConstraint( + "organization_id", "period_start", "period_end", name="unique_org_period" + ), + ) + op.create_index( + "idx_usage_cycles_org_period", + "organization_usage_cycles", + ["organization_id", "period_end"], + unique=False, + ) + op.create_index( + op.f("ix_organization_usage_cycles_id"), + "organization_usage_cycles", + ["id"], + unique=False, + ) + # Add the column now that the enum type exists. + op.add_column( + "organizations", + sa.Column( + "quota_type", quota_type_enum, nullable=False, server_default="monthly" + ), + ) + op.add_column( + "organizations", + sa.Column( + "quota_dograh_tokens", + sa.Integer(), + nullable=False, + server_default=sa.text("0"), + ), + ) + op.add_column( + "organizations", + sa.Column( + "quota_reset_day", + sa.Integer(), + nullable=False, + server_default=sa.text("LEAST(EXTRACT(DAY FROM CURRENT_DATE)::int, 28)"), + ), + ) + op.add_column( + "organizations", sa.Column("quota_start_date", sa.DateTime(), nullable=True) + ) + op.add_column( + "organizations", + sa.Column( + "quota_enabled", + sa.Boolean(), + nullable=False, + server_default=sa.text("false"), + ), + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("organizations", "quota_enabled") + op.drop_column("organizations", "quota_start_date") + op.drop_column("organizations", "quota_reset_day") + op.drop_column("organizations", "quota_dograh_tokens") + op.drop_column("organizations", "quota_type") + op.drop_index( + op.f("ix_organization_usage_cycles_id"), table_name="organization_usage_cycles" + ) + op.drop_index("idx_usage_cycles_org_period", table_name="organization_usage_cycles") + op.drop_table("organization_usage_cycles") + + # Drop the enum type now that no column depends on it. + quota_type_enum = sa.Enum(name="quota_type") + quota_type_enum.drop(op.get_bind(), checkfirst=True) + # ### end Alembic commands ### diff --git a/api/alembic/versions/2d6e2f41caa2_add_workflow_run.py b/api/alembic/versions/2d6e2f41caa2_add_workflow_run.py new file mode 100644 index 0000000..172abe3 --- /dev/null +++ b/api/alembic/versions/2d6e2f41caa2_add_workflow_run.py @@ -0,0 +1,46 @@ +"""Add workflow run + +Revision ID: 2d6e2f41caa2 +Revises: bee2a9fcc6a6 +Create Date: 2025-04-11 17:02:58.461460 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "2d6e2f41caa2" +down_revision: Union[str, None] = "bee2a9fcc6a6" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "workflow_runs", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("name", sa.String(), nullable=False), + sa.Column("workflow_id", sa.Integer(), nullable=False), + sa.Column( + "mode", sa.Enum("VOICE", "CHAT", name="workflow_run_mode"), nullable=False + ), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=True), + sa.ForeignKeyConstraint( + ["workflow_id"], + ["workflows.id"], + ), + sa.PrimaryKeyConstraint("id"), + ) + op.create_index(op.f("ix_workflow_runs_id"), "workflow_runs", ["id"], unique=False) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f("ix_workflow_runs_id"), table_name="workflow_runs") + op.drop_table("workflow_runs") + # ### end Alembic commands ### diff --git a/api/alembic/versions/2dfee251117b_fix_defaults.py b/api/alembic/versions/2dfee251117b_fix_defaults.py new file mode 100644 index 0000000..cb5a0f3 --- /dev/null +++ b/api/alembic/versions/2dfee251117b_fix_defaults.py @@ -0,0 +1,27 @@ +"""fix defaults + +Revision ID: 2dfee251117b +Revises: 2159d4ac431a +Create Date: 2025-07-08 14:47:40.747689 + +""" + +from typing import Sequence, Union + +# revision identifiers, used by Alembic. +revision: str = "2dfee251117b" +down_revision: Union[str, None] = "2159d4ac431a" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### diff --git a/api/alembic/versions/2ed4baa89f15_add_annotations_in_workflow_run_model.py b/api/alembic/versions/2ed4baa89f15_add_annotations_in_workflow_run_model.py new file mode 100644 index 0000000..fd7b6b7 --- /dev/null +++ b/api/alembic/versions/2ed4baa89f15_add_annotations_in_workflow_run_model.py @@ -0,0 +1,30 @@ +"""add annotations in workflow run model + +Revision ID: 2ed4baa89f15 +Revises: cdc80a4fd2dd +Create Date: 2025-06-17 13:30:43.784644 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "2ed4baa89f15" +down_revision: Union[str, None] = "cdc80a4fd2dd" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column("workflow_runs", sa.Column("annotations", sa.JSON(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("workflow_runs", "annotations") + # ### end Alembic commands ### diff --git a/api/alembic/versions/3717ae6146e2_add_workflow_configurations.py b/api/alembic/versions/3717ae6146e2_add_workflow_configurations.py new file mode 100644 index 0000000..6c38d56 --- /dev/null +++ b/api/alembic/versions/3717ae6146e2_add_workflow_configurations.py @@ -0,0 +1,38 @@ +"""add workflow configurations + +Revision ID: 3717ae6146e2 +Revises: f952c9c1105a +Create Date: 2025-08-19 14:41:44.852794 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "3717ae6146e2" +down_revision: Union[str, None] = "f952c9c1105a" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "workflows", + sa.Column( + "workflow_configurations", + sa.JSON(), + nullable=False, + server_default=sa.text("'{}'"), + ), + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("workflows", "workflow_configurations") + # ### end Alembic commands ### diff --git a/api/alembic/versions/37d0a90fccba_add_api_keys_model.py b/api/alembic/versions/37d0a90fccba_add_api_keys_model.py new file mode 100644 index 0000000..184751f --- /dev/null +++ b/api/alembic/versions/37d0a90fccba_add_api_keys_model.py @@ -0,0 +1,60 @@ +"""Add API Keys model + +Revision ID: 37d0a90fccba +Revises: c425d3445750 +Create Date: 2025-09-06 14:19:35.300761 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "37d0a90fccba" +down_revision: Union[str, None] = "c425d3445750" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "api_keys", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("organization_id", sa.Integer(), nullable=False), + sa.Column("name", sa.String(), nullable=False), + sa.Column("key_hash", sa.String(), nullable=False), + sa.Column("key_prefix", sa.String(), nullable=False), + sa.Column("is_active", sa.Boolean(), nullable=False), + sa.Column("created_by", sa.Integer(), nullable=True), + sa.Column("last_used_at", sa.DateTime(timezone=True), nullable=True), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=True), + sa.Column("archived_at", sa.DateTime(timezone=True), nullable=True), + sa.ForeignKeyConstraint( + ["created_by"], + ["users.id"], + ), + sa.ForeignKeyConstraint( + ["organization_id"], ["organizations.id"], ondelete="CASCADE" + ), + sa.PrimaryKeyConstraint("id"), + ) + op.create_index("ix_api_keys_active", "api_keys", ["is_active"], unique=False) + op.create_index(op.f("ix_api_keys_id"), "api_keys", ["id"], unique=False) + op.create_index("ix_api_keys_key_hash", "api_keys", ["key_hash"], unique=True) + op.create_index( + "ix_api_keys_organization_id", "api_keys", ["organization_id"], unique=False + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index("ix_api_keys_organization_id", table_name="api_keys") + op.drop_index("ix_api_keys_key_hash", table_name="api_keys") + op.drop_index(op.f("ix_api_keys_id"), table_name="api_keys") + op.drop_index("ix_api_keys_active", table_name="api_keys") + op.drop_table("api_keys") + # ### end Alembic commands ### diff --git a/api/alembic/versions/3a0384c5ab2e_add_user_configuration.py b/api/alembic/versions/3a0384c5ab2e_add_user_configuration.py new file mode 100644 index 0000000..ab5c928 --- /dev/null +++ b/api/alembic/versions/3a0384c5ab2e_add_user_configuration.py @@ -0,0 +1,44 @@ +"""add user configuration + +Revision ID: 3a0384c5ab2e +Revises: 1d441e79db94 +Create Date: 2025-04-24 12:26:33.635090 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "3a0384c5ab2e" +down_revision: Union[str, None] = "1d441e79db94" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "user_configurations", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("user_id", sa.Integer(), nullable=True), + sa.Column("configuration", sa.JSON(), nullable=False), + sa.ForeignKeyConstraint( + ["user_id"], + ["users.id"], + ), + sa.PrimaryKeyConstraint("id"), + ) + op.create_index( + op.f("ix_user_configurations_id"), "user_configurations", ["id"], unique=False + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f("ix_user_configurations_id"), table_name="user_configurations") + op.drop_table("user_configurations") + # ### end Alembic commands ### diff --git a/api/alembic/versions/3a30110d7cd7_added_livekit_room.py b/api/alembic/versions/3a30110d7cd7_added_livekit_room.py new file mode 100644 index 0000000..181744f --- /dev/null +++ b/api/alembic/versions/3a30110d7cd7_added_livekit_room.py @@ -0,0 +1,64 @@ +"""Added livekit room + +Revision ID: 3a30110d7cd7 +Revises: 93a1ddbb6ffd +Create Date: 2025-04-05 15:03:00.749510 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "3a30110d7cd7" +down_revision: Union[str, None] = "93a1ddbb6ffd" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "livekit_rooms", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column( + "type", sa.Enum("VOICE", "TEXT", "VIDEO", name="room_type"), nullable=False + ), + sa.Column( + "state", + sa.Enum( + "CONNECTED", + "DISCONNECTED", + "RECONNECTING", + "RECONNECTED", + name="room_state", + ), + nullable=False, + ), + sa.Column("name", sa.String(), nullable=False), + sa.Column("created_at", sa.DateTime(), nullable=True), + sa.PrimaryKeyConstraint("id"), + ) + op.create_index(op.f("ix_livekit_rooms_id"), "livekit_rooms", ["id"], unique=False) + op.create_index( + op.f("ix_livekit_rooms_name"), "livekit_rooms", ["name"], unique=False + ) + op.create_index( + op.f("ix_livekit_rooms_state"), "livekit_rooms", ["state"], unique=False + ) + op.create_index( + op.f("ix_livekit_rooms_type"), "livekit_rooms", ["type"], unique=False + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f("ix_livekit_rooms_type"), table_name="livekit_rooms") + op.drop_index(op.f("ix_livekit_rooms_state"), table_name="livekit_rooms") + op.drop_index(op.f("ix_livekit_rooms_name"), table_name="livekit_rooms") + op.drop_index(op.f("ix_livekit_rooms_id"), table_name="livekit_rooms") + op.drop_table("livekit_rooms") + # ### end Alembic commands ### diff --git a/api/alembic/versions/45fa7fec2993_add_selected_organisation_id_field_in_.py b/api/alembic/versions/45fa7fec2993_add_selected_organisation_id_field_in_.py new file mode 100644 index 0000000..0ca157e --- /dev/null +++ b/api/alembic/versions/45fa7fec2993_add_selected_organisation_id_field_in_.py @@ -0,0 +1,36 @@ +"""add selected organisation id field in user model + +Revision ID: 45fa7fec2993 +Revises: f6f19156bcb7 +Create Date: 2025-06-09 16:00:52.209779 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "45fa7fec2993" +down_revision: Union[str, None] = "f6f19156bcb7" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "users", sa.Column("selected_organization_id", sa.Integer(), nullable=True) + ) + op.create_foreign_key( + None, "users", "organizations", ["selected_organization_id"], ["id"] + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, "users", type_="foreignkey") + op.drop_column("users", "selected_organization_id") + # ### end Alembic commands ### diff --git a/api/alembic/versions/4735a1f0cdb3_add_queued_runs_table.py b/api/alembic/versions/4735a1f0cdb3_add_queued_runs_table.py new file mode 100644 index 0000000..024ceee --- /dev/null +++ b/api/alembic/versions/4735a1f0cdb3_add_queued_runs_table.py @@ -0,0 +1,94 @@ +"""add queued runs table + +Revision ID: 4735a1f0cdb3 +Revises: 08bb6e7f1397 +Create Date: 2025-07-24 16:04:07.899092 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "4735a1f0cdb3" +down_revision: Union[str, None] = "08bb6e7f1397" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "queued_runs", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("campaign_id", sa.Integer(), nullable=False), + sa.Column("source_uuid", sa.String(), nullable=False), + sa.Column("context_variables", sa.JSON(), nullable=False), + sa.Column( + "state", + sa.Enum("queued", "processed", name="queued_run_state"), + nullable=False, + ), + sa.Column("workflow_run_id", sa.Integer(), nullable=True), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=True), + sa.Column("processed_at", sa.DateTime(timezone=True), nullable=True), + sa.ForeignKeyConstraint(["campaign_id"], ["campaigns.id"], ondelete="CASCADE"), + sa.ForeignKeyConstraint( + ["workflow_run_id"], + ["workflow_runs.id"], + ), + sa.PrimaryKeyConstraint("id"), + sa.UniqueConstraint( + "campaign_id", "source_uuid", name="unique_campaign_source_uuid" + ), + ) + op.create_index( + "idx_queued_runs_campaign_state", + "queued_runs", + ["campaign_id", "state"], + unique=False, + ) + op.create_index( + "idx_queued_runs_created", "queued_runs", ["created_at"], unique=False + ) + op.create_index( + "idx_queued_runs_source_uuid", "queued_runs", ["source_uuid"], unique=False + ) + op.create_index(op.f("ix_queued_runs_id"), "queued_runs", ["id"], unique=False) + op.add_column( + "campaigns", sa.Column("rate_limit_per_second", sa.Integer(), nullable=False) + ) + op.add_column("campaigns", sa.Column("max_retries", sa.Integer(), nullable=False)) + op.add_column( + "campaigns", sa.Column("source_sync_status", sa.String(), nullable=False) + ) + op.add_column( + "campaigns", + sa.Column("source_last_synced_at", sa.DateTime(timezone=True), nullable=True), + ) + op.add_column( + "campaigns", sa.Column("source_sync_error", sa.String(), nullable=True) + ) + + # Add syncing in the campaign_state + op.execute( + "ALTER TYPE campaign_state ADD VALUE IF NOT EXISTS 'syncing' AFTER 'created';" + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("campaigns", "source_sync_error") + op.drop_column("campaigns", "source_last_synced_at") + op.drop_column("campaigns", "source_sync_status") + op.drop_column("campaigns", "max_retries") + op.drop_column("campaigns", "rate_limit_per_second") + op.drop_index(op.f("ix_queued_runs_id"), table_name="queued_runs") + op.drop_index("idx_queued_runs_source_uuid", table_name="queued_runs") + op.drop_index("idx_queued_runs_created", table_name="queued_runs") + op.drop_index("idx_queued_runs_campaign_state", table_name="queued_runs") + op.drop_table("queued_runs") + # ### end Alembic commands ### diff --git a/api/alembic/versions/477b47ce346b_add_organisation_id_in_workflow.py b/api/alembic/versions/477b47ce346b_add_organisation_id_in_workflow.py new file mode 100644 index 0000000..cc3b207 --- /dev/null +++ b/api/alembic/versions/477b47ce346b_add_organisation_id_in_workflow.py @@ -0,0 +1,36 @@ +"""add organisation_id in workflow + +Revision ID: 477b47ce346b +Revises: fec0fb9a8db7 +Create Date: 2025-08-15 14:11:28.088841 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "477b47ce346b" +down_revision: Union[str, None] = "fec0fb9a8db7" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "workflows", sa.Column("organization_id", sa.Integer(), nullable=True) + ) + op.create_foreign_key( + None, "workflows", "organizations", ["organization_id"], ["id"] + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, "workflows", type_="foreignkey") + op.drop_column("workflows", "organization_id") + # ### end Alembic commands ### diff --git a/api/alembic/versions/5253971e3f03_add_teplate_context_variables_in_.py b/api/alembic/versions/5253971e3f03_add_teplate_context_variables_in_.py new file mode 100644 index 0000000..86c8e95 --- /dev/null +++ b/api/alembic/versions/5253971e3f03_add_teplate_context_variables_in_.py @@ -0,0 +1,32 @@ +"""add teplate context variables in workflow + +Revision ID: 5253971e3f03 +Revises: 0c1bbc83fe9e +Create Date: 2025-06-05 14:06:51.059664 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "5253971e3f03" +down_revision: Union[str, None] = "0c1bbc83fe9e" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "workflows", sa.Column("template_context_variables", sa.JSON(), nullable=True) + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("workflows", "template_context_variables") + # ### end Alembic commands ### diff --git a/api/alembic/versions/58f17b468b3c_add_workflow_definition.py b/api/alembic/versions/58f17b468b3c_add_workflow_definition.py new file mode 100644 index 0000000..2ae6ea8 --- /dev/null +++ b/api/alembic/versions/58f17b468b3c_add_workflow_definition.py @@ -0,0 +1,66 @@ +"""add workflow definition + +Revision ID: 58f17b468b3c +Revises: a2b092ff7282 +Create Date: 2025-06-03 13:08:23.709070 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "58f17b468b3c" +down_revision: Union[str, None] = "a2b092ff7282" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "workflow_definitions", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("workflow_hash", sa.String(), nullable=False), + sa.Column("workflow_json", sa.JSON(), nullable=False), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=True), + sa.PrimaryKeyConstraint("id"), + ) + op.create_index( + op.f("ix_workflow_definitions_id"), "workflow_definitions", ["id"], unique=False + ) + op.create_index( + op.f("ix_workflow_definitions_workflow_hash"), + "workflow_definitions", + ["workflow_hash"], + unique=True, + ) + op.add_column( + "workflow_runs", sa.Column("definition_id", sa.Integer(), nullable=True) + ) + op.create_foreign_key( + None, "workflow_runs", "workflow_definitions", ["definition_id"], ["id"] + ) + op.add_column( + "workflows", sa.Column("current_definition_id", sa.Integer(), nullable=True) + ) + op.create_foreign_key( + None, "workflows", "workflow_definitions", ["current_definition_id"], ["id"] + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, "workflows", type_="foreignkey") + op.drop_column("workflows", "current_definition_id") + op.drop_constraint(None, "workflow_runs", type_="foreignkey") + op.drop_column("workflow_runs", "definition_id") + op.drop_index( + op.f("ix_workflow_definitions_workflow_hash"), table_name="workflow_definitions" + ) + op.drop_index(op.f("ix_workflow_definitions_id"), table_name="workflow_definitions") + op.drop_table("workflow_definitions") + # ### end Alembic commands ### diff --git a/api/alembic/versions/594f16adf97c_add_timezone_info_on_tables.py b/api/alembic/versions/594f16adf97c_add_timezone_info_on_tables.py new file mode 100644 index 0000000..8d6f610 --- /dev/null +++ b/api/alembic/versions/594f16adf97c_add_timezone_info_on_tables.py @@ -0,0 +1,71 @@ +"""add timezone info on tables + +Revision ID: 594f16adf97c +Revises: 2dfee251117b +Create Date: 2025-07-08 15:01:26.642043 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision: str = "594f16adf97c" +down_revision: Union[str, None] = "2dfee251117b" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column( + "organization_usage_cycles", + "period_start", + existing_type=postgresql.TIMESTAMP(), + type_=sa.DateTime(timezone=True), + existing_nullable=False, + ) + op.alter_column( + "organization_usage_cycles", + "period_end", + existing_type=postgresql.TIMESTAMP(), + type_=sa.DateTime(timezone=True), + existing_nullable=False, + ) + op.alter_column( + "organizations", + "quota_start_date", + existing_type=postgresql.TIMESTAMP(), + type_=sa.DateTime(timezone=True), + existing_nullable=True, + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column( + "organizations", + "quota_start_date", + existing_type=sa.DateTime(timezone=True), + type_=postgresql.TIMESTAMP(), + existing_nullable=True, + ) + op.alter_column( + "organization_usage_cycles", + "period_end", + existing_type=sa.DateTime(timezone=True), + type_=postgresql.TIMESTAMP(), + existing_nullable=False, + ) + op.alter_column( + "organization_usage_cycles", + "period_start", + existing_type=sa.DateTime(timezone=True), + type_=postgresql.TIMESTAMP(), + existing_nullable=False, + ) + # ### end Alembic commands ### diff --git a/api/alembic/versions/693a865c011f_add_status_in_workflow.py b/api/alembic/versions/693a865c011f_add_status_in_workflow.py new file mode 100644 index 0000000..455d17a --- /dev/null +++ b/api/alembic/versions/693a865c011f_add_status_in_workflow.py @@ -0,0 +1,54 @@ +"""add status in workflow + +Revision ID: 693a865c011f +Revises: 477b47ce346b +Create Date: 2025-08-15 14:27:46.748114 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "693a865c011f" +down_revision: Union[str, None] = "477b47ce346b" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + # First create the enum type + workflow_status_enum = sa.Enum("active", "archived", name="workflow_status") + workflow_status_enum.create(op.get_bind(), checkfirst=True) + + # Then add the column with the enum type + op.add_column( + "workflows", + sa.Column( + "status", + workflow_status_enum, + nullable=False, + server_default=sa.text("'active'"), + ), + ) + + # Create index for better query performance + op.create_index("ix_workflows_status", "workflows", ["status"]) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + # Drop index first + op.drop_index("ix_workflows_status", table_name="workflows") + + # Drop the column + op.drop_column("workflows", "status") + + # Drop the enum type + workflow_status_enum = sa.Enum("active", "archived", name="workflow_status") + workflow_status_enum.drop(op.get_bind(), checkfirst=True) + # ### end Alembic commands ### diff --git a/api/alembic/versions/7e90cc8d025b_add_workflow_template.py b/api/alembic/versions/7e90cc8d025b_add_workflow_template.py new file mode 100644 index 0000000..ec4129d --- /dev/null +++ b/api/alembic/versions/7e90cc8d025b_add_workflow_template.py @@ -0,0 +1,50 @@ +"""add workflow template + +Revision ID: 7e90cc8d025b +Revises: 9f25ff8f3cbd +Create Date: 2025-06-10 18:17:55.080973 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "7e90cc8d025b" +down_revision: Union[str, None] = "9f25ff8f3cbd" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "workflow_templates", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("template_name", sa.String(), nullable=False), + sa.Column("template_json", sa.JSON(), nullable=False), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=True), + sa.PrimaryKeyConstraint("id"), + ) + op.create_index( + op.f("ix_workflow_templates_id"), "workflow_templates", ["id"], unique=False + ) + op.create_index( + op.f("ix_workflow_templates_template_name"), + "workflow_templates", + ["template_name"], + unique=False, + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index( + op.f("ix_workflow_templates_template_name"), table_name="workflow_templates" + ) + op.drop_index(op.f("ix_workflow_templates_id"), table_name="workflow_templates") + op.drop_table("workflow_templates") + # ### end Alembic commands ### diff --git a/api/alembic/versions/7feef09d7cc6_add_price_per_second_usd.py b/api/alembic/versions/7feef09d7cc6_add_price_per_second_usd.py new file mode 100644 index 0000000..d4e382b --- /dev/null +++ b/api/alembic/versions/7feef09d7cc6_add_price_per_second_usd.py @@ -0,0 +1,32 @@ +"""add price_per_second_usd + +Revision ID: 7feef09d7cc6 +Revises: 3717ae6146e2 +Create Date: 2025-08-25 13:04:13.436156 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "7feef09d7cc6" +down_revision: Union[str, None] = "3717ae6146e2" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "organizations", sa.Column("price_per_second_usd", sa.Float(), nullable=True) + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("organizations", "price_per_second_usd") + # ### end Alembic commands ### diff --git a/api/alembic/versions/93a1ddbb6ffd_add_workflow_model.py b/api/alembic/versions/93a1ddbb6ffd_add_workflow_model.py new file mode 100644 index 0000000..236aa81 --- /dev/null +++ b/api/alembic/versions/93a1ddbb6ffd_add_workflow_model.py @@ -0,0 +1,41 @@ +"""Add workflow model + +Revision ID: 93a1ddbb6ffd +Revises: +Create Date: 2025-04-03 20:06:47.970117 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "93a1ddbb6ffd" +down_revision: Union[str, None] = None +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "workflows", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("name", sa.String(), nullable=False), + sa.Column("workflow_definition", sa.JSON(), nullable=False), + sa.Column("created_at", sa.DateTime(), nullable=True), + sa.PrimaryKeyConstraint("id"), + ) + op.create_index(op.f("ix_workflows_id"), "workflows", ["id"], unique=False) + op.create_index(op.f("ix_workflows_name"), "workflows", ["name"], unique=False) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f("ix_workflows_name"), table_name="workflows") + op.drop_index(op.f("ix_workflows_id"), table_name="workflows") + op.drop_table("workflows") + # ### end Alembic commands ### diff --git a/api/alembic/versions/9641b4f306cd_add_is_superuser_to_user_model.py b/api/alembic/versions/9641b4f306cd_add_is_superuser_to_user_model.py new file mode 100644 index 0000000..6791af7 --- /dev/null +++ b/api/alembic/versions/9641b4f306cd_add_is_superuser_to_user_model.py @@ -0,0 +1,30 @@ +"""add is_superuser to user model + +Revision ID: 9641b4f306cd +Revises: 3a0384c5ab2e +Create Date: 2025-05-07 11:37:44.295774 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "9641b4f306cd" +down_revision: Union[str, None] = "3a0384c5ab2e" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column("users", sa.Column("is_superuser", sa.Boolean(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("users", "is_superuser") + # ### end Alembic commands ### diff --git a/api/alembic/versions/982ec8e434be_add_storage_backend_in_workflow.py b/api/alembic/versions/982ec8e434be_add_storage_backend_in_workflow.py new file mode 100644 index 0000000..c755aa6 --- /dev/null +++ b/api/alembic/versions/982ec8e434be_add_storage_backend_in_workflow.py @@ -0,0 +1,87 @@ +"""add storage backend in workflow + +Revision ID: 982ec8e434be +Revises: d0060de90c18 +Create Date: 2025-09-09 10:39:12.894626 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op +from alembic_postgresql_enum import TableReference +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision: str = "982ec8e434be" +down_revision: Union[str, None] = "d0060de90c18" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + sa.Enum("s3", "minio", name="storage_backend").create(op.get_bind()) + op.drop_constraint( + "queued_runs_workflow_run_id_fkey", "queued_runs", type_="foreignkey" + ) + op.drop_column("queued_runs", "workflow_run_id") + op.add_column( + "workflow_runs", + sa.Column( + "storage_backend", + postgresql.ENUM("s3", "minio", name="storage_backend", create_type=False), + server_default=sa.text("'s3'::storage_backend"), + nullable=False, + ), + ) + sa.Enum("VOICE", "TEXT", "VIDEO", name="room_type").drop(op.get_bind()) + sa.Enum( + "CONNECTED", "DISCONNECTED", "RECONNECTING", "RECONNECTED", name="room_state" + ).drop(op.get_bind()) + op.sync_enum_values( + enum_schema="public", + enum_name="workflow_run_mode", + new_values=["twilio", "stasis", "webrtc", "smallwebrtc", "VOICE", "CHAT"], + affected_columns=[ + TableReference( + table_schema="public", table_name="workflow_runs", column_name="mode" + ) + ], + enum_values_to_rename=[], + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.sync_enum_values( + enum_schema="public", + enum_name="workflow_run_mode", + new_values=["VOICE", "CHAT", "webrtc", "smallwebrtc", "twilio", "stasis"], + affected_columns=[ + TableReference( + table_schema="public", table_name="workflow_runs", column_name="mode" + ) + ], + enum_values_to_rename=[], + ) + sa.Enum( + "CONNECTED", "DISCONNECTED", "RECONNECTING", "RECONNECTED", name="room_state" + ).create(op.get_bind()) + sa.Enum("VOICE", "TEXT", "VIDEO", name="room_type").create(op.get_bind()) + op.drop_column("workflow_runs", "storage_backend") + op.add_column( + "queued_runs", + sa.Column("workflow_run_id", sa.INTEGER(), autoincrement=False, nullable=True), + ) + op.create_foreign_key( + "queued_runs_workflow_run_id_fkey", + "queued_runs", + "workflow_runs", + ["workflow_run_id"], + ["id"], + ) + sa.Enum("s3", "minio", name="storage_backend").drop(op.get_bind()) + # ### end Alembic commands ### diff --git a/api/alembic/versions/9be6240baa00_add_recording_and_transcript_urls_in_.py b/api/alembic/versions/9be6240baa00_add_recording_and_transcript_urls_in_.py new file mode 100644 index 0000000..d9be4d4 --- /dev/null +++ b/api/alembic/versions/9be6240baa00_add_recording_and_transcript_urls_in_.py @@ -0,0 +1,40 @@ +"""add recording and transcript urls in workflow run + +Revision ID: 9be6240baa00 +Revises: 9641b4f306cd +Create Date: 2025-05-09 21:50:03.369283 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "9be6240baa00" +down_revision: Union[str, None] = "9641b4f306cd" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "workflow_runs", sa.Column("is_completed", sa.Boolean(), nullable=True) + ) + op.add_column( + "workflow_runs", sa.Column("recording_url", sa.String(), nullable=True) + ) + op.add_column( + "workflow_runs", sa.Column("transcript_url", sa.String(), nullable=True) + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("workflow_runs", "transcript_url") + op.drop_column("workflow_runs", "recording_url") + op.drop_column("workflow_runs", "is_completed") + # ### end Alembic commands ### diff --git a/api/alembic/versions/9ef49df72862_add_workflow_id_in_workflow_definition.py b/api/alembic/versions/9ef49df72862_add_workflow_id_in_workflow_definition.py new file mode 100644 index 0000000..778386a --- /dev/null +++ b/api/alembic/versions/9ef49df72862_add_workflow_id_in_workflow_definition.py @@ -0,0 +1,36 @@ +"""add workflow id in workflow definition + +Revision ID: 9ef49df72862 +Revises: 58f17b468b3c +Create Date: 2025-06-04 10:54:01.714149 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "9ef49df72862" +down_revision: Union[str, None] = "58f17b468b3c" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "workflow_definitions", sa.Column("workflow_id", sa.Integer(), nullable=True) + ) + op.create_foreign_key( + None, "workflow_definitions", "workflows", ["workflow_id"], ["id"] + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, "workflow_definitions", type_="foreignkey") + op.drop_column("workflow_definitions", "workflow_id") + # ### end Alembic commands ### diff --git a/api/alembic/versions/9f25ff8f3cbd_add_actions.py b/api/alembic/versions/9f25ff8f3cbd_add_actions.py new file mode 100644 index 0000000..a8eced2 --- /dev/null +++ b/api/alembic/versions/9f25ff8f3cbd_add_actions.py @@ -0,0 +1,30 @@ +"""add actions + +Revision ID: 9f25ff8f3cbd +Revises: d11fbd083a55 +Create Date: 2025-06-09 20:16:19.418495 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "9f25ff8f3cbd" +down_revision: Union[str, None] = "d11fbd083a55" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column("integrations", sa.Column("action", sa.String(), nullable=False)) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("integrations", "action") + # ### end Alembic commands ### diff --git a/api/alembic/versions/9f5f2d35f6fb_remove_workflow_definition_id_from_.py b/api/alembic/versions/9f5f2d35f6fb_remove_workflow_definition_id_from_.py new file mode 100644 index 0000000..89e0387 --- /dev/null +++ b/api/alembic/versions/9f5f2d35f6fb_remove_workflow_definition_id_from_.py @@ -0,0 +1,52 @@ +"""remove workflow definition id from workflow + +Revision ID: 9f5f2d35f6fb +Revises: 9ef49df72862 +Create Date: 2025-06-04 13:27:45.776741 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "9f5f2d35f6fb" +down_revision: Union[str, None] = "9ef49df72862" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "workflow_definitions", + sa.Column( + "is_current", sa.Boolean(), nullable=False, server_default=sa.false() + ), + ) + op.drop_constraint( + "workflows_current_definition_id_fkey", "workflows", type_="foreignkey" + ) + op.drop_column("workflows", "current_definition_id") + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "workflows", + sa.Column( + "current_definition_id", sa.INTEGER(), autoincrement=False, nullable=True + ), + ) + op.create_foreign_key( + "workflows_current_definition_id_fkey", + "workflows", + "workflow_definitions", + ["current_definition_id"], + ["id"], + ) + op.drop_column("workflow_definitions", "is_current") + # ### end Alembic commands ### diff --git a/api/alembic/versions/a29b05f31ddf_add_last_validated_at.py b/api/alembic/versions/a29b05f31ddf_add_last_validated_at.py new file mode 100644 index 0000000..07fdf1a --- /dev/null +++ b/api/alembic/versions/a29b05f31ddf_add_last_validated_at.py @@ -0,0 +1,33 @@ +"""add last validated at + +Revision ID: a29b05f31ddf +Revises: 9be6240baa00 +Create Date: 2025-05-21 22:59:27.008241 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "a29b05f31ddf" +down_revision: Union[str, None] = "9be6240baa00" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "user_configurations", + sa.Column("last_validated_at", sa.DateTime(timezone=True), nullable=True), + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("user_configurations", "last_validated_at") + # ### end Alembic commands ### diff --git a/api/alembic/versions/a2b092ff7282_add_usage_info.py b/api/alembic/versions/a2b092ff7282_add_usage_info.py new file mode 100644 index 0000000..8d84e96 --- /dev/null +++ b/api/alembic/versions/a2b092ff7282_add_usage_info.py @@ -0,0 +1,40 @@ +"""add usage info + +Revision ID: a2b092ff7282 +Revises: a29b05f31ddf +Create Date: 2025-05-29 20:25:37.110818 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "a2b092ff7282" +down_revision: Union[str, None] = "a29b05f31ddf" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column("workflow_runs", sa.Column("usage_info", sa.JSON(), nullable=True)) + op.add_column("workflow_runs", sa.Column("cost_info", sa.JSON(), nullable=True)) + op.add_column( + "workflow_runs", sa.Column("initial_context", sa.JSON(), nullable=True) + ) + op.add_column( + "workflow_runs", sa.Column("gathered_context", sa.JSON(), nullable=True) + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("workflow_runs", "gathered_context") + op.drop_column("workflow_runs", "initial_context") + op.drop_column("workflow_runs", "cost_info") + op.drop_column("workflow_runs", "usage_info") + # ### end Alembic commands ### diff --git a/api/alembic/versions/a75ae71af479_add_log_in_workflow_run_model.py b/api/alembic/versions/a75ae71af479_add_log_in_workflow_run_model.py new file mode 100644 index 0000000..6e67bf1 --- /dev/null +++ b/api/alembic/versions/a75ae71af479_add_log_in_workflow_run_model.py @@ -0,0 +1,38 @@ +"""add log in workflow run model + +Revision ID: a75ae71af479 +Revises: 13ccd6e1f5ad +Create Date: 2025-08-05 22:37:06.248630 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "a75ae71af479" +down_revision: Union[str, None] = "13ccd6e1f5ad" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "workflow_runs", + sa.Column( + "logs", + sa.JSON(), + nullable=False, + server_default=sa.text("'{}'"), + ), + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("workflow_runs", "logs") + # ### end Alembic commands ### diff --git a/api/alembic/versions/ac6da37c5034_add_created_by_in_integration.py b/api/alembic/versions/ac6da37c5034_add_created_by_in_integration.py new file mode 100644 index 0000000..a7acc7c --- /dev/null +++ b/api/alembic/versions/ac6da37c5034_add_created_by_in_integration.py @@ -0,0 +1,32 @@ +"""add created by in integration + +Revision ID: ac6da37c5034 +Revises: d666f3244648 +Create Date: 2025-06-09 17:27:37.088950 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "ac6da37c5034" +down_revision: Union[str, None] = "d666f3244648" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column("integrations", sa.Column("created_by", sa.Integer(), nullable=True)) + op.create_foreign_key(None, "integrations", "users", ["created_by"], ["id"]) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, "integrations", type_="foreignkey") + op.drop_column("integrations", "created_by") + # ### end Alembic commands ### diff --git a/api/alembic/versions/bee2a9fcc6a6_fix_datetime_to_be_in_utc.py b/api/alembic/versions/bee2a9fcc6a6_fix_datetime_to_be_in_utc.py new file mode 100644 index 0000000..ebc7d03 --- /dev/null +++ b/api/alembic/versions/bee2a9fcc6a6_fix_datetime_to_be_in_utc.py @@ -0,0 +1,57 @@ +"""fix datetime to be in utc + +Revision ID: bee2a9fcc6a6 +Revises: 3a30110d7cd7 +Create Date: 2025-04-05 15:40:00.807226 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision: str = "bee2a9fcc6a6" +down_revision: Union[str, None] = "3a30110d7cd7" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column( + "livekit_rooms", + "created_at", + existing_type=postgresql.TIMESTAMP(), + type_=sa.DateTime(timezone=True), + existing_nullable=True, + ) + op.alter_column( + "workflows", + "created_at", + existing_type=postgresql.TIMESTAMP(), + type_=sa.DateTime(timezone=True), + existing_nullable=True, + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column( + "workflows", + "created_at", + existing_type=sa.DateTime(timezone=True), + type_=postgresql.TIMESTAMP(), + existing_nullable=True, + ) + op.alter_column( + "livekit_rooms", + "created_at", + existing_type=sa.DateTime(timezone=True), + type_=postgresql.TIMESTAMP(), + existing_nullable=True, + ) + # ### end Alembic commands ### diff --git a/api/alembic/versions/c425d3445750_add_columns_in_usage_table.py b/api/alembic/versions/c425d3445750_add_columns_in_usage_table.py new file mode 100644 index 0000000..998e712 --- /dev/null +++ b/api/alembic/versions/c425d3445750_add_columns_in_usage_table.py @@ -0,0 +1,38 @@ +"""add columns in usage table + +Revision ID: c425d3445750 +Revises: 7feef09d7cc6 +Create Date: 2025-08-25 13:37:15.524965 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "c425d3445750" +down_revision: Union[str, None] = "7feef09d7cc6" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "organization_usage_cycles", + sa.Column("used_amount_usd", sa.Float(), nullable=True), + ) + op.add_column( + "organization_usage_cycles", + sa.Column("quota_amount_usd", sa.Float(), nullable=True), + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("organization_usage_cycles", "quota_amount_usd") + op.drop_column("organization_usage_cycles", "used_amount_usd") + # ### end Alembic commands ### diff --git a/api/alembic/versions/cdc80a4fd2dd_add_template_description.py b/api/alembic/versions/cdc80a4fd2dd_add_template_description.py new file mode 100644 index 0000000..4529070 --- /dev/null +++ b/api/alembic/versions/cdc80a4fd2dd_add_template_description.py @@ -0,0 +1,43 @@ +"""add template description + +Revision ID: cdc80a4fd2dd +Revises: 7e90cc8d025b +Create Date: 2025-06-10 18:31:30.952698 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "cdc80a4fd2dd" +down_revision: Union[str, None] = "7e90cc8d025b" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "workflow_templates", + sa.Column("template_description", sa.String(), nullable=False), + ) + op.create_index( + op.f("ix_workflow_templates_template_description"), + "workflow_templates", + ["template_description"], + unique=False, + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index( + op.f("ix_workflow_templates_template_description"), + table_name="workflow_templates", + ) + op.drop_column("workflow_templates", "template_description") + # ### end Alembic commands ### diff --git a/api/alembic/versions/d0060de90c18_fix_migrations.py b/api/alembic/versions/d0060de90c18_fix_migrations.py new file mode 100644 index 0000000..97d1287 --- /dev/null +++ b/api/alembic/versions/d0060de90c18_fix_migrations.py @@ -0,0 +1,63 @@ +"""Fix Migrations + +Revision ID: d0060de90c18 +Revises: 37d0a90fccba +Create Date: 2025-09-08 13:19:03.854682 + +""" + +from typing import Sequence, Union + +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "d0060de90c18" +down_revision: Union[str, None] = "37d0a90fccba" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index("ix_api_keys_key_hash", table_name="api_keys") + op.create_index(op.f("ix_api_keys_key_hash"), "api_keys", ["key_hash"], unique=True) + + # remove redundant id indexes that got created + op.drop_index("ix_api_keys_id", table_name="api_keys") + op.drop_index("ix_users_id", table_name="users") + op.drop_index("ix_organizations_id", table_name="organizations") + op.drop_index("ix_workflows_id", table_name="workflows") + op.drop_index("ix_workflow_definitions_id", table_name="workflow_definitions") + op.drop_index("ix_workflow_templates_id", table_name="workflow_templates") + op.drop_index("ix_workflow_runs_id", table_name="workflow_runs") + op.drop_index("ix_campaigns_id", table_name="campaigns") + op.drop_index("ix_integrations_id", table_name="integrations") + op.drop_index("ix_queued_runs_id", table_name="queued_runs") + op.drop_index("ix_user_configurations_id", table_name="user_configurations") + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f("ix_api_keys_key_hash"), table_name="api_keys") + op.create_index("ix_api_keys_key_hash", "api_keys", ["key_hash"], unique=False) + + # Recreate all the redundant id indexes (reverting to the incorrect state) + op.create_index( + "ix_user_configurations_id", "user_configurations", ["id"], unique=False + ) + op.create_index("ix_queued_runs_id", "queued_runs", ["id"], unique=False) + op.create_index("ix_integrations_id", "integrations", ["id"], unique=False) + op.create_index("ix_campaigns_id", "campaigns", ["id"], unique=False) + op.create_index("ix_workflow_runs_id", "workflow_runs", ["id"], unique=False) + op.create_index( + "ix_workflow_templates_id", "workflow_templates", ["id"], unique=False + ) + op.create_index( + "ix_workflow_definitions_id", "workflow_definitions", ["id"], unique=False + ) + op.create_index("ix_workflows_id", "workflows", ["id"], unique=False) + op.create_index("ix_organizations_id", "organizations", ["id"], unique=False) + op.create_index("ix_users_id", "users", ["id"], unique=False) + op.create_index("ix_api_keys_id", "api_keys", ["id"], unique=False) + # ### end Alembic commands ### diff --git a/api/alembic/versions/d11fbd083a55_add_connection_details.py b/api/alembic/versions/d11fbd083a55_add_connection_details.py new file mode 100644 index 0000000..76b5d79 --- /dev/null +++ b/api/alembic/versions/d11fbd083a55_add_connection_details.py @@ -0,0 +1,32 @@ +"""add connection details + +Revision ID: d11fbd083a55 +Revises: 20c780c2a218 +Create Date: 2025-06-09 19:49:24.999108 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "d11fbd083a55" +down_revision: Union[str, None] = "20c780c2a218" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "integrations", sa.Column("connection_details", sa.JSON(), nullable=False) + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("integrations", "connection_details") + # ### end Alembic commands ### diff --git a/api/alembic/versions/d666f3244648_add_integrations.py b/api/alembic/versions/d666f3244648_add_integrations.py new file mode 100644 index 0000000..46d5967 --- /dev/null +++ b/api/alembic/versions/d666f3244648_add_integrations.py @@ -0,0 +1,51 @@ +"""add integrations + +Revision ID: d666f3244648 +Revises: 45fa7fec2993 +Create Date: 2025-06-09 16:50:56.647020 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "d666f3244648" +down_revision: Union[str, None] = "45fa7fec2993" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "integrations", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("integration_id", sa.String(), nullable=False), + sa.Column("organisation_id", sa.Integer(), nullable=False), + sa.Column("is_active", sa.Boolean(), nullable=False), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=True), + sa.ForeignKeyConstraint( + ["organisation_id"], + ["organizations.id"], + ), + sa.PrimaryKeyConstraint("id"), + ) + op.create_index(op.f("ix_integrations_id"), "integrations", ["id"], unique=False) + op.create_index( + op.f("ix_integrations_integration_id"), + "integrations", + ["integration_id"], + unique=False, + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f("ix_integrations_integration_id"), table_name="integrations") + op.drop_index(op.f("ix_integrations_id"), table_name="integrations") + op.drop_table("integrations") + # ### end Alembic commands ### diff --git a/api/alembic/versions/e0d1a9b9f6c4_add_looptalk_testing_tables_without_.py b/api/alembic/versions/e0d1a9b9f6c4_add_looptalk_testing_tables_without_.py new file mode 100644 index 0000000..ec65039 --- /dev/null +++ b/api/alembic/versions/e0d1a9b9f6c4_add_looptalk_testing_tables_without_.py @@ -0,0 +1,148 @@ +"""add_looptalk_testing_tables_without_turns + +Revision ID: e0d1a9b9f6c4 +Revises: 2ed4baa89f15 +Create Date: 2025-07-01 14:29:12.081935 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "e0d1a9b9f6c4" +down_revision: Union[str, None] = "2ed4baa89f15" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "looptalk_test_sessions", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("organization_id", sa.Integer(), nullable=False), + sa.Column("name", sa.String(), nullable=False), + sa.Column( + "status", + sa.Enum( + "pending", "running", "completed", "failed", name="test_session_status" + ), + nullable=False, + ), + sa.Column("actor_workflow_id", sa.Integer(), nullable=False), + sa.Column("adversary_workflow_id", sa.Integer(), nullable=False), + sa.Column("load_test_group_id", sa.String(), nullable=True), + sa.Column("test_index", sa.Integer(), nullable=True), + sa.Column("config", sa.JSON(), nullable=False), + sa.Column("results", sa.JSON(), nullable=True), + sa.Column("error", sa.String(), nullable=True), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=True), + sa.Column("started_at", sa.DateTime(timezone=True), nullable=True), + sa.Column("completed_at", sa.DateTime(timezone=True), nullable=True), + sa.ForeignKeyConstraint( + ["actor_workflow_id"], + ["workflows.id"], + ), + sa.ForeignKeyConstraint( + ["adversary_workflow_id"], + ["workflows.id"], + ), + sa.ForeignKeyConstraint( + ["organization_id"], + ["organizations.id"], + ), + sa.PrimaryKeyConstraint("id"), + ) + op.create_index( + "ix_looptalk_test_sessions_group_id", + "looptalk_test_sessions", + ["load_test_group_id"], + unique=False, + ) + op.create_index( + op.f("ix_looptalk_test_sessions_id"), + "looptalk_test_sessions", + ["id"], + unique=False, + ) + op.create_index( + op.f("ix_looptalk_test_sessions_load_test_group_id"), + "looptalk_test_sessions", + ["load_test_group_id"], + unique=False, + ) + op.create_index( + "ix_looptalk_test_sessions_org_id", + "looptalk_test_sessions", + ["organization_id"], + unique=False, + ) + op.create_index( + "ix_looptalk_test_sessions_status", + "looptalk_test_sessions", + ["status"], + unique=False, + ) + op.create_table( + "looptalk_conversations", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("test_session_id", sa.Integer(), nullable=False), + sa.Column("duration_seconds", sa.Integer(), nullable=True), + sa.Column("actor_recording_url", sa.String(), nullable=True), + sa.Column("adversary_recording_url", sa.String(), nullable=True), + sa.Column("combined_recording_url", sa.String(), nullable=True), + sa.Column("transcript", sa.JSON(), nullable=True), + sa.Column("metrics", sa.JSON(), nullable=True), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=True), + sa.Column("ended_at", sa.DateTime(timezone=True), nullable=True), + sa.ForeignKeyConstraint( + ["test_session_id"], + ["looptalk_test_sessions.id"], + ), + sa.PrimaryKeyConstraint("id"), + ) + op.create_index( + op.f("ix_looptalk_conversations_id"), + "looptalk_conversations", + ["id"], + unique=False, + ) + op.create_index( + "ix_looptalk_conversations_session_id", + "looptalk_conversations", + ["test_session_id"], + unique=False, + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index( + "ix_looptalk_conversations_session_id", table_name="looptalk_conversations" + ) + op.drop_index( + op.f("ix_looptalk_conversations_id"), table_name="looptalk_conversations" + ) + op.drop_table("looptalk_conversations") + op.drop_index( + "ix_looptalk_test_sessions_status", table_name="looptalk_test_sessions" + ) + op.drop_index( + "ix_looptalk_test_sessions_org_id", table_name="looptalk_test_sessions" + ) + op.drop_index( + op.f("ix_looptalk_test_sessions_load_test_group_id"), + table_name="looptalk_test_sessions", + ) + op.drop_index( + op.f("ix_looptalk_test_sessions_id"), table_name="looptalk_test_sessions" + ) + op.drop_index( + "ix_looptalk_test_sessions_group_id", table_name="looptalk_test_sessions" + ) + op.drop_table("looptalk_test_sessions") + # ### end Alembic commands ### diff --git a/api/alembic/versions/ec010596a0b4_change_datatype_of_usage_to_float.py b/api/alembic/versions/ec010596a0b4_change_datatype_of_usage_to_float.py new file mode 100644 index 0000000..4011feb --- /dev/null +++ b/api/alembic/versions/ec010596a0b4_change_datatype_of_usage_to_float.py @@ -0,0 +1,42 @@ +"""change datatype of usage to float + +Revision ID: ec010596a0b4 +Revises: 594f16adf97c +Create Date: 2025-07-08 15:25:49.387567 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "ec010596a0b4" +down_revision: Union[str, None] = "594f16adf97c" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column( + "organization_usage_cycles", + "used_dograh_tokens", + existing_type=sa.INTEGER(), + type_=sa.Float(), + existing_nullable=False, + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column( + "organization_usage_cycles", + "used_dograh_tokens", + existing_type=sa.Float(), + type_=sa.INTEGER(), + existing_nullable=False, + ) + # ### end Alembic commands ### diff --git a/api/alembic/versions/f6f19156bcb7_add_organisation_table.py b/api/alembic/versions/f6f19156bcb7_add_organisation_table.py new file mode 100644 index 0000000..56c5a7a --- /dev/null +++ b/api/alembic/versions/f6f19156bcb7_add_organisation_table.py @@ -0,0 +1,104 @@ +"""add organisation table + +Revision ID: f6f19156bcb7 +Revises: 5253971e3f03 +Create Date: 2025-06-09 15:12:14.636802 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision: str = "f6f19156bcb7" +down_revision: Union[str, None] = "5253971e3f03" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "organizations", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("provider_id", sa.String(), nullable=False), + sa.Column("created_at", sa.DateTime(timezone=True), nullable=True), + sa.PrimaryKeyConstraint("id"), + ) + op.create_index(op.f("ix_organizations_id"), "organizations", ["id"], unique=False) + op.create_index( + op.f("ix_organizations_provider_id"), + "organizations", + ["provider_id"], + unique=True, + ) + op.create_table( + "organization_users", + sa.Column("user_id", sa.Integer(), nullable=False), + sa.Column("organization_id", sa.Integer(), nullable=False), + sa.ForeignKeyConstraint( + ["organization_id"], + ["organizations.id"], + ), + sa.ForeignKeyConstraint( + ["user_id"], + ["users.id"], + ), + sa.PrimaryKeyConstraint("user_id", "organization_id"), + ) + op.drop_index("ix_livekit_rooms_id", table_name="livekit_rooms") + op.drop_index("ix_livekit_rooms_name", table_name="livekit_rooms") + op.drop_index("ix_livekit_rooms_state", table_name="livekit_rooms") + op.drop_index("ix_livekit_rooms_type", table_name="livekit_rooms") + op.drop_table("livekit_rooms") + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "livekit_rooms", + sa.Column("id", sa.INTEGER(), autoincrement=True, nullable=False), + sa.Column( + "type", + postgresql.ENUM("VOICE", "TEXT", "VIDEO", name="room_type"), + autoincrement=False, + nullable=False, + ), + sa.Column( + "state", + postgresql.ENUM( + "CONNECTED", + "DISCONNECTED", + "RECONNECTING", + "RECONNECTED", + name="room_state", + ), + autoincrement=False, + nullable=False, + ), + sa.Column("name", sa.VARCHAR(), autoincrement=False, nullable=False), + sa.Column( + "created_at", + postgresql.TIMESTAMP(timezone=True), + autoincrement=False, + nullable=True, + ), + sa.Column("user_id", sa.INTEGER(), autoincrement=False, nullable=True), + sa.ForeignKeyConstraint( + ["user_id"], ["users.id"], name="livekit_rooms_user_id_fkey" + ), + sa.PrimaryKeyConstraint("id", name="livekit_rooms_pkey"), + ) + op.create_index("ix_livekit_rooms_type", "livekit_rooms", ["type"], unique=False) + op.create_index("ix_livekit_rooms_state", "livekit_rooms", ["state"], unique=False) + op.create_index("ix_livekit_rooms_name", "livekit_rooms", ["name"], unique=False) + op.create_index("ix_livekit_rooms_id", "livekit_rooms", ["id"], unique=False) + op.drop_table("organization_users") + op.drop_index(op.f("ix_organizations_provider_id"), table_name="organizations") + op.drop_index(op.f("ix_organizations_id"), table_name="organizations") + op.drop_table("organizations") + # ### end Alembic commands ### diff --git a/api/alembic/versions/f952c9c1105a_add_failed_state_to_queued_runs.py b/api/alembic/versions/f952c9c1105a_add_failed_state_to_queued_runs.py new file mode 100644 index 0000000..8140a8a --- /dev/null +++ b/api/alembic/versions/f952c9c1105a_add_failed_state_to_queued_runs.py @@ -0,0 +1,30 @@ +"""add failed state to queued runs + +Revision ID: f952c9c1105a +Revises: 693a865c011f +Create Date: 2025-08-16 17:32:47.877340 + +""" + +from typing import Sequence, Union + +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "f952c9c1105a" +down_revision: Union[str, None] = "693a865c011f" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index("ix_workflows_status", table_name="workflows") + op.execute("ALTER TYPE queued_run_state ADD VALUE IF NOT EXISTS 'failed'") + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_index("ix_workflows_status", "workflows", ["status"], unique=False) + # ### end Alembic commands ### diff --git a/api/alembic/versions/fec0fb9a8db7_add_index.py b/api/alembic/versions/fec0fb9a8db7_add_index.py new file mode 100644 index 0000000..178d1ea --- /dev/null +++ b/api/alembic/versions/fec0fb9a8db7_add_index.py @@ -0,0 +1,84 @@ +"""add index + +Revision ID: fec0fb9a8db7 +Revises: fefdd1835b7d +Create Date: 2025-08-06 16:21:56.450309 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "fec0fb9a8db7" +down_revision: Union[str, None] = "fefdd1835b7d" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "campaigns", + sa.Column("last_batch_scheduled_at", sa.DateTime(timezone=True), nullable=True), + ) + op.add_column( + "campaigns", + sa.Column("last_activity_at", sa.DateTime(timezone=True), nullable=True), + ) + op.add_column( + "campaigns", + sa.Column( + "orchestrator_metadata", + sa.JSON(), + nullable=False, + server_default=sa.text("'{}'"), + ), + ) + op.create_index( + "idx_campaigns_active_status", + "campaigns", + ["state"], + unique=False, + postgresql_where=sa.text("state IN ('syncing', 'running', 'paused')"), + ) + op.create_index( + "idx_queued_runs_campaign_state_optimized", + "queued_runs", + ["campaign_id", "state"], + unique=False, + postgresql_where=sa.text("state = 'queued'"), + ) + op.create_index( + "idx_queued_runs_scheduled_optimized", + "queued_runs", + ["campaign_id", "scheduled_for"], + unique=False, + postgresql_where=sa.text("scheduled_for IS NOT NULL"), + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index( + "idx_queued_runs_scheduled_optimized", + table_name="queued_runs", + postgresql_where=sa.text("scheduled_for IS NOT NULL"), + ) + op.drop_index( + "idx_queued_runs_campaign_state_optimized", + table_name="queued_runs", + postgresql_where=sa.text("state = 'queued'"), + ) + op.drop_index( + "idx_campaigns_active_status", + table_name="campaigns", + postgresql_where=sa.text("state IN ('syncing', 'running', 'paused')"), + ) + op.drop_column("campaigns", "orchestrator_metadata") + op.drop_column("campaigns", "last_activity_at") + op.drop_column("campaigns", "last_batch_scheduled_at") + # ### end Alembic commands ### diff --git a/api/alembic/versions/fefdd1835b7d_retry_outbound_calls_for_campaigns.py b/api/alembic/versions/fefdd1835b7d_retry_outbound_calls_for_campaigns.py new file mode 100644 index 0000000..30ae8d9 --- /dev/null +++ b/api/alembic/versions/fefdd1835b7d_retry_outbound_calls_for_campaigns.py @@ -0,0 +1,84 @@ +"""retry outbound calls for campaigns + +Revision ID: fefdd1835b7d +Revises: a75ae71af479 +Create Date: 2025-08-06 13:37:54.151453 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "fefdd1835b7d" +down_revision: Union[str, None] = "a75ae71af479" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "campaigns", + sa.Column( + "retry_config", + sa.JSON(), + nullable=False, + server_default=sa.text( + """'{\"enabled\": true, \"max_retries\": 2, \"retry_delay_seconds\": 120, \"retry_on_busy\": true, \"retry_on_no_answer\": true, \"retry_on_voicemail\": true}'::jsonb""" + ), + ), + ) + op.add_column( + "queued_runs", + sa.Column( + "retry_count", sa.Integer(), nullable=False, server_default=sa.text("0") + ), + ) + op.add_column( + "queued_runs", sa.Column("parent_queued_run_id", sa.Integer(), nullable=True) + ) + op.add_column( + "queued_runs", + sa.Column("scheduled_for", sa.DateTime(timezone=True), nullable=True), + ) + op.add_column("queued_runs", sa.Column("retry_reason", sa.String(), nullable=True)) + op.drop_constraint("unique_campaign_source_uuid", "queued_runs", type_="unique") + op.create_index( + "idx_queued_runs_scheduled", "queued_runs", ["scheduled_for"], unique=False + ) + op.create_unique_constraint( + "unique_campaign_source_retry", + "queued_runs", + ["campaign_id", "source_uuid", "retry_count"], + ) + op.create_foreign_key( + None, "queued_runs", "queued_runs", ["parent_queued_run_id"], ["id"] + ) + op.add_column( + "workflow_runs", sa.Column("queued_run_id", sa.Integer(), nullable=True) + ) + op.create_foreign_key( + None, "workflow_runs", "queued_runs", ["queued_run_id"], ["id"] + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, "workflow_runs", type_="foreignkey") + op.drop_column("workflow_runs", "queued_run_id") + op.drop_constraint(None, "queued_runs", type_="foreignkey") + op.drop_constraint("unique_campaign_source_retry", "queued_runs", type_="unique") + op.drop_index("idx_queued_runs_scheduled", table_name="queued_runs") + op.create_unique_constraint( + "unique_campaign_source_uuid", "queued_runs", ["campaign_id", "source_uuid"] + ) + op.drop_column("queued_runs", "retry_reason") + op.drop_column("queued_runs", "scheduled_for") + op.drop_column("queued_runs", "parent_queued_run_id") + op.drop_column("queued_runs", "retry_count") + op.drop_column("campaigns", "retry_config") + # ### end Alembic commands ### diff --git a/api/app.py b/api/app.py new file mode 100644 index 0000000..9054be5 --- /dev/null +++ b/api/app.py @@ -0,0 +1,122 @@ +"""Set up logging before importing anything else""" + +import sentry_sdk + +from api.constants import ENABLE_SENTRY, REDIS_URL, SENTRY_DSN +from api.logging_config import ENVIRONMENT, setup_logging + +# Set up logging and get the listener for cleanup +logging_queue_listener = setup_logging() + + +if ENABLE_SENTRY: + if not SENTRY_DSN: + print( + "Warning: ENABLE_SENTRY is true but SENTRY_DSN is not configured. Sentry disabled." + ) + else: + sentry_sdk.init( + dsn=SENTRY_DSN, + # Add data like request headers and IP for users, + # see https://docs.sentry.io/platforms/python/data-management/data-collected/ for more info + send_default_pii=True, + environment=ENVIRONMENT, + ) + print(f"Sentry initialized in environment: {ENVIRONMENT}") +else: + print(f"Sentry disabled (ENABLE_SENTRY=false)") + + +import asyncio +from contextlib import asynccontextmanager +from typing import Optional + +import redis.asyncio as aioredis +from fastapi import APIRouter, FastAPI +from fastapi.middleware.cors import CORSMiddleware +from loguru import logger + +from api.routes.main import router as main_router +from api.routes.rtc_offer import pcs_map +from api.services.telephony.worker_event_subscriber import ( + WorkerEventSubscriber, + setup_worker_subscriber, +) +from api.tasks.arq import get_arq_redis + +API_PREFIX = "/api/v1" + +# Global reference to worker subscriber for graceful shutdown +worker_subscriber_instance: Optional[WorkerEventSubscriber] = None + + +@asynccontextmanager +async def lifespan(app: FastAPI): + global worker_subscriber_instance + + # warmup arq pool + await get_arq_redis() + + # Setup Redis connection for distributed mode + redis = await aioredis.from_url(REDIS_URL, decode_responses=True) + + # Setup worker subscriber (ARI Manager runs separately) + worker_subscriber = await setup_worker_subscriber(redis) + worker_subscriber_instance = worker_subscriber + + # Store worker ID in app state for health check + app.state.worker_id = worker_subscriber.worker_id + app.state.worker_subscriber = worker_subscriber + + yield # Run app + + # Shutdown sequence - this runs when FastAPI is shutting down + logger.info("Starting graceful shutdown...") + + # First, try graceful shutdown with timeout + if worker_subscriber: + try: + # Check if we should do graceful shutdown (e.g., if SIGTERM was received) + # For now, we'll attempt graceful shutdown for all shutdowns + await worker_subscriber.graceful_shutdown(max_wait_seconds=300) + except Exception as e: + logger.error(f"Error during graceful shutdown: {e}") + # Fall back to immediate stop + await worker_subscriber.stop() + + # close all dangling pipecat connections + coros = [pc.close() for pc in pcs_map.values()] + await asyncio.gather(*coros) + pcs_map.clear() + + await redis.aclose() + + if logging_queue_listener is not None: + logging_queue_listener.stop() + + +app = FastAPI( + title="Dograh API", + description="API for the Dograh app", + version="1.0.0", + openapi_url=f"{API_PREFIX}/openapi.json", + lifespan=lifespan, +) + + +# Configure CORS +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], # Allows all origins + allow_credentials=True, + allow_methods=["*"], # Allows all methods + allow_headers=["*"], # Allows all headers +) + +api_router = APIRouter() + +# include subrouters here +api_router.include_router(main_router) + +# main router with api prefix +app.include_router(api_router, prefix=API_PREFIX) diff --git a/api/assets/office-ambience-16000-mono.wav b/api/assets/office-ambience-16000-mono.wav new file mode 100644 index 0000000..e6b4a38 Binary files /dev/null and b/api/assets/office-ambience-16000-mono.wav differ diff --git a/api/assets/office-ambience-8000-mono.wav b/api/assets/office-ambience-8000-mono.wav new file mode 100644 index 0000000..73fa234 Binary files /dev/null and b/api/assets/office-ambience-8000-mono.wav differ diff --git a/api/conftest.py b/api/conftest.py new file mode 100644 index 0000000..88d8caf --- /dev/null +++ b/api/conftest.py @@ -0,0 +1,182 @@ +""" +Shared pytest fixtures for the API tests. +This file contains database setup, test client configuration, and utility fixtures +that can be reused across all test files. +""" + +import os +import subprocess +import uuid + +import pytest_asyncio +from httpx import ASGITransport, AsyncClient +from loguru import logger +from sqlalchemy import text +from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine + +from api.app import app +from api.db import db_client + +# Test database setup globals +TEST_DATABASE_NAME = None +TEST_DATABASE_URL = None + + +@pytest_asyncio.fixture +async def test_database(): + """ + Set up a temporary PostgreSQL database for testing. + This fixture creates a unique test database, runs migrations, and cleans up afterward. + """ + global TEST_DATABASE_NAME, TEST_DATABASE_URL + + # Generate a unique test database name + TEST_DATABASE_NAME = f"test_dograh_{uuid.uuid4().hex[:8]}" + + # Get the base DATABASE_URL and parse it + base_url = os.environ.get("DATABASE_URL") + # Extract connection parts and replace database name + url_parts = base_url.split("/") + base_connection = "/".join(url_parts[:-1]) + TEST_DATABASE_URL = f"{base_connection}/{TEST_DATABASE_NAME}" + + # Create a connection to the default postgres database to create our test database + default_engine = create_async_engine(base_url) + + try: + # Create the test database + async with default_engine.connect() as conn: + # Use autocommit mode to create database + await conn.execute(text("COMMIT")) + await conn.execute(text(f"CREATE DATABASE {TEST_DATABASE_NAME}")) + + await default_engine.dispose() + + # Run migrations on the test database + env = os.environ.copy() + env["DATABASE_URL"] = TEST_DATABASE_URL + # Add the parent directory to PYTHONPATH so alembic can find the api module + parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + env["PYTHONPATH"] = parent_dir + ":" + env.get("PYTHONPATH", "") + + # Run alembic upgrade to create all tables + result = subprocess.run( + [ + "conda", + "run", + "-n", + "dograh", + "python", + "-m", + "alembic", + "-c", + "alembic.ini", + "upgrade", + "head", + ], + env=env, + capture_output=True, + text=True, + ) + + if result.returncode != 0: + logger.error(f"Alembic stderr: {result.stderr}") + logger.error(f"Alembic stdout: {result.stdout}") + raise RuntimeError(f"Alembic migration failed: {result.stderr}") + + logger.info(f"Created test database: {TEST_DATABASE_NAME}") + yield TEST_DATABASE_URL + + finally: + # Cleanup: Drop the test database + cleanup_engine = create_async_engine(base_url) + try: + async with cleanup_engine.connect() as conn: + # Terminate any connections to the test database + await conn.execute(text("COMMIT")) + await conn.execute( + text(f""" + SELECT pg_terminate_backend(pid) + FROM pg_stat_activity + WHERE datname = '{TEST_DATABASE_NAME}' AND pid <> pg_backend_pid() + """) + ) + await conn.execute( + text(f"DROP DATABASE IF EXISTS {TEST_DATABASE_NAME}") + ) + logger.info(f"Cleaned up test database: {TEST_DATABASE_NAME}") + except Exception as e: + logger.error( + f"Warning: Could not clean up test database {TEST_DATABASE_NAME}: {e}" + ) + finally: + await cleanup_engine.dispose() + + +@pytest_asyncio.fixture +async def db_session(test_database): + """ + Create a test database client that uses the temporary database. + This fixture replaces the global db_client with a test version. + """ + original_engine = db_client.engine + original_session = db_client.async_session + + # Replace the database client's engine and session with test ones + test_engine = create_async_engine(test_database) + test_session_maker = async_sessionmaker(bind=test_engine) + + db_client.engine = test_engine + db_client.async_session = test_session_maker + + yield db_client + + # Restore original database client + await test_engine.dispose() + db_client.engine = original_engine + db_client.async_session = original_session + + +@pytest_asyncio.fixture +async def test_client_factory(db_session): + """ + Factory fixture that creates test clients for specific users. + This allows tests to create custom users and test clients on demand. + + Usage: + async def test_something(test_client_factory, db_session): + # Create a custom user + user = await db_session.get_or_create_user_by_provider_id("custom_user_123") + + # Create a test client for this user + async with test_client_factory(user) as client: + # Use the client in your test + response = await client.get("/some/endpoint") + """ + from contextlib import asynccontextmanager + + from api.services.auth.depends import get_user + + @asynccontextmanager + async def _create_client_for_user(user): + # Create mock auth dependency for this user + async def mock_get_user(): + return user + + # Override the dependency + original_override = app.dependency_overrides.get(get_user) + app.dependency_overrides[get_user] = mock_get_user + + try: + async with AsyncClient( + transport=ASGITransport(app=app), base_url="http://test" + ) as client: + yield client + finally: + # Clean up the override + if original_override: + app.dependency_overrides[get_user] = original_override + else: + app.dependency_overrides.pop(get_user, None) + + return _create_client_for_user diff --git a/api/constants.py b/api/constants.py new file mode 100644 index 0000000..abe00ff --- /dev/null +++ b/api/constants.py @@ -0,0 +1,47 @@ +import os +from pathlib import Path + +# Absolute path to the project root directory (i.e. the directory containing +# the top-level api/ package). Having a single canonical location helps +# when constructing file-system paths elsewhere in the codebase. +APP_ROOT_DIR: Path = Path(__file__).resolve().parent + +FILLER_SOUND_PROBABILITY = 0.0 + +VOICEMAIL_RECORDING_DURATION = 5.0 + +# Configuration constants +ENABLE_SMART_TURN = os.getenv("ENABLE_SMART_TURN", "false").lower() == "true" +ENABLE_TRACING = os.getenv("ENABLE_TRACING", "false").lower() == "true" +ENABLE_RNNOISE = os.getenv("ENABLE_RNNOISE", "false").lower() == "true" + +BACKEND_API_ENDPOINT = os.getenv("BACKEND_API_ENDPOINT", None) +TWILIO_ACCOUNT_SID = os.getenv("TWILIO_ACCOUNT_SID", None) +TWILIO_AUTH_TOKEN = os.getenv("TWILIO_AUTH_TOKEN", None) +TWILIO_DEFAULT_FROM_NUMBER = os.getenv("TWILIO_FROM_NUMBER", None) + +DATABASE_URL = os.environ["DATABASE_URL"] +REDIS_URL = os.environ["REDIS_URL"] + +DEPLOYMENT_MODE = os.getenv("DEPLOYMENT_MODE", "oss") +DOGRAH_MPS_SECRET_KEY = os.getenv("DOGRAH_MPS_SECRET_KEY", None) +MPS_API_URL = os.getenv("MPS_API_URL", "https://services.dograh.com") + +# Storage Configuration +ENABLE_AWS_S3 = os.getenv("ENABLE_AWS_S3", "false").lower() == "true" + +# MinIO Configuration +MINIO_ENDPOINT = os.getenv("MINIO_ENDPOINT", "localhost:9000") +MINIO_PUBLIC_ENDPOINT = os.getenv("MINIO_PUBLIC_ENDPOINT") +MINIO_ACCESS_KEY = os.getenv("MINIO_ACCESS_KEY", "minioadmin") +MINIO_SECRET_KEY = os.getenv("MINIO_SECRET_KEY", "minioadmin") +MINIO_BUCKET = os.getenv("MINIO_BUCKET", "voice-audio") +MINIO_SECURE = os.getenv("MINIO_SECURE", "false").lower() == "true" + +# AWS S3 Configuration +S3_BUCKET = os.environ.get("S3_BUCKET") +S3_REGION = os.environ.get("S3_REGION", "us-east-1") + +# Sentry configuration +ENABLE_SENTRY = os.getenv("ENABLE_SENTRY", "false").lower() == "true" +SENTRY_DSN = os.getenv("SENTRY_DSN") diff --git a/api/db/__init__.py b/api/db/__init__.py new file mode 100644 index 0000000..b4a9d0e --- /dev/null +++ b/api/db/__init__.py @@ -0,0 +1,3 @@ +from api.db.db_client import DBClient + +db_client = DBClient() diff --git a/api/db/api_key_client.py b/api/db/api_key_client.py new file mode 100644 index 0000000..7ecfe86 --- /dev/null +++ b/api/db/api_key_client.py @@ -0,0 +1,108 @@ +from typing import List, Optional + +from sqlalchemy import and_ +from sqlalchemy.future import select + +from api.db.base_client import BaseDBClient +from api.db.models import APIKeyModel +from api.utils.api_key import generate_api_key, hash_api_key + + +class APIKeyClient(BaseDBClient): + async def create_api_key( + self, organization_id: int, name: str, created_by: Optional[int] = None + ) -> tuple[APIKeyModel, str]: + """Create a new API key for an organization. + + Returns: + Tuple of (APIKeyModel, raw_api_key) + """ + # Generate a secure random API key + raw_api_key, key_hash, key_prefix = generate_api_key() + + async with self.async_session() as session: + api_key = APIKeyModel( + organization_id=organization_id, + name=name, + key_hash=key_hash, + key_prefix=key_prefix, + created_by=created_by, + is_active=True, + ) + session.add(api_key) + await session.commit() + await session.refresh(api_key) + + return api_key, raw_api_key + + async def get_api_keys_by_organization( + self, organization_id: int, include_archived: bool = False + ) -> List[APIKeyModel]: + """Get all API keys for an organization.""" + async with self.async_session() as session: + query = select(APIKeyModel).where( + APIKeyModel.organization_id == organization_id + ) + + if not include_archived: + query = query.where(APIKeyModel.archived_at.is_(None)) + + result = await session.execute(query) + return result.scalars().all() + + async def get_api_key_by_hash(self, key_hash: str) -> Optional[APIKeyModel]: + """Get an API key by its hash.""" + async with self.async_session() as session: + result = await session.execute( + select(APIKeyModel).where( + and_( + APIKeyModel.key_hash == key_hash, + APIKeyModel.is_active == True, + APIKeyModel.archived_at.is_(None), + ) + ) + ) + return result.scalars().first() + + async def validate_api_key(self, raw_api_key: str) -> Optional[APIKeyModel]: + """Validate an API key and return the associated model if valid.""" + key_hash = hash_api_key(raw_api_key) + api_key = await self.get_api_key_by_hash(key_hash) + + if api_key: + # Update last_used_at + from datetime import datetime, timezone + + async with self.async_session() as session: + await session.execute( + APIKeyModel.__table__.update() + .where(APIKeyModel.id == api_key.id) + .values(last_used_at=datetime.now(timezone.utc)) + ) + await session.commit() + + return api_key + + async def archive_api_key(self, api_key_id: int) -> bool: + """Archive an API key (soft delete).""" + from datetime import datetime, timezone + + async with self.async_session() as session: + result = await session.execute( + APIKeyModel.__table__.update() + .where(APIKeyModel.id == api_key_id) + .values(is_active=False, archived_at=datetime.now(timezone.utc)) + ) + await session.commit() + return result.rowcount > 0 + + async def reactivate_api_key(self, api_key_id: int) -> bool: + """Reactivate an archived API key.""" + async with self.async_session() as session: + result = await session.execute( + APIKeyModel.__table__.update() + .where(APIKeyModel.id == api_key_id) + .values(is_active=True, archived_at=None) + ) + await session.commit() + return result.rowcount > 0 diff --git a/api/db/base_client.py b/api/db/base_client.py new file mode 100644 index 0000000..45c02a7 --- /dev/null +++ b/api/db/base_client.py @@ -0,0 +1,34 @@ +from typing import Any, Dict, List + +from sqlalchemy import text +from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine + +from api.constants import DATABASE_URL + + +class BaseDBClient: + def __init__(self): + self.engine = create_async_engine(DATABASE_URL) + self.async_session = async_sessionmaker(bind=self.engine) + + async def execute_raw_query( + self, query: str, params: Dict[str, Any] = None + ) -> List[Dict[str, Any]]: + """ + Execute a raw SQL query and return results as a list of dictionaries. + + Args: + query: The SQL query to execute + params: Optional dictionary of query parameters + + Returns: + List of dictionaries containing the query results + """ + async with self.async_session() as session: + result = await session.execute(text(query), params or {}) + rows = result.fetchall() + if rows: + # Convert rows to dictionaries + columns = result.keys() + return [dict(zip(columns, row)) for row in rows] + return [] diff --git a/api/db/campaign_client.py b/api/db/campaign_client.py new file mode 100644 index 0000000..0b8cff7 --- /dev/null +++ b/api/db/campaign_client.py @@ -0,0 +1,379 @@ +from datetime import UTC, datetime +from typing import Optional + +from sqlalchemy import func +from sqlalchemy.future import select + +from api.db.base_client import BaseDBClient +from api.db.models import CampaignModel, QueuedRunModel, WorkflowRunModel + + +class CampaignClient(BaseDBClient): + async def create_campaign( + self, + name: str, + workflow_id: int, + source_type: str, + source_id: str, + user_id: int, + organization_id: int, + ) -> CampaignModel: + """Create a new campaign""" + async with self.async_session() as session: + campaign = CampaignModel( + name=name, + workflow_id=workflow_id, + source_type=source_type, + source_id=source_id, + created_by=user_id, + organization_id=organization_id, + ) + session.add(campaign) + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(campaign) + return campaign + + async def get_campaigns( + self, + organization_id: int, + ) -> list[CampaignModel]: + """Get all campaigns for organization""" + async with self.async_session() as session: + query = ( + select(CampaignModel) + .where(CampaignModel.organization_id == organization_id) + .order_by(CampaignModel.created_at.desc()) + ) + + result = await session.execute(query) + return list(result.scalars().all()) + + async def get_campaign( + self, + campaign_id: int, + organization_id: int, + ) -> Optional[CampaignModel]: + """Get single campaign by ID, ensuring organization access""" + async with self.async_session() as session: + query = select(CampaignModel).where( + CampaignModel.id == campaign_id, + CampaignModel.organization_id == organization_id, + ) + result = await session.execute(query) + return result.scalar_one_or_none() + + async def update_campaign_state( + self, + campaign_id: int, + state: str, + organization_id: int, + ) -> CampaignModel: + """Update campaign state (start/pause/resume)""" + async with self.async_session() as session: + query = select(CampaignModel).where( + CampaignModel.id == campaign_id, + CampaignModel.organization_id == organization_id, + ) + result = await session.execute(query) + campaign = result.scalar_one_or_none() + + if not campaign: + raise ValueError(f"Campaign {campaign_id} not found") + + campaign.state = state + if state == "running" and not campaign.started_at: + campaign.started_at = datetime.now(UTC) + elif state in ["completed", "failed"]: + campaign.completed_at = datetime.now(UTC) + + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(campaign) + return campaign + + async def update_campaign_progress( + self, + campaign_id: int, + processed_rows: int, + failed_rows: int, + organization_id: int, + ) -> None: + """Update campaign progress counters""" + async with self.async_session() as session: + query = select(CampaignModel).where( + CampaignModel.id == campaign_id, + CampaignModel.organization_id == organization_id, + ) + result = await session.execute(query) + campaign = result.scalar_one_or_none() + + if not campaign: + raise ValueError(f"Campaign {campaign_id} not found") + + campaign.processed_rows = processed_rows + campaign.failed_rows = failed_rows + campaign.updated_at = datetime.now(UTC) + + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + + async def get_campaign_runs( + self, + campaign_id: int, + organization_id: int, + ) -> list[WorkflowRunModel]: + """Get workflow runs for a campaign""" + async with self.async_session() as session: + # First verify campaign belongs to organization + campaign_query = select(CampaignModel).where( + CampaignModel.id == campaign_id, + CampaignModel.organization_id == organization_id, + ) + campaign_result = await session.execute(campaign_query) + campaign = campaign_result.scalar_one_or_none() + + if not campaign: + raise ValueError(f"Campaign {campaign_id} not found") + + query = ( + select(WorkflowRunModel) + .where(WorkflowRunModel.campaign_id == campaign_id) + .order_by(WorkflowRunModel.created_at.desc()) + ) + + result = await session.execute(query) + return list(result.scalars().all()) + + async def get_campaign_by_id(self, campaign_id: int) -> Optional[CampaignModel]: + """Get campaign by ID without organization check (for internal use)""" + async with self.async_session() as session: + query = select(CampaignModel).where(CampaignModel.id == campaign_id) + result = await session.execute(query) + return result.scalar_one_or_none() + + async def update_campaign(self, campaign_id: int, **kwargs) -> CampaignModel: + """Update campaign with arbitrary fields""" + async with self.async_session() as session: + query = select(CampaignModel).where(CampaignModel.id == campaign_id) + result = await session.execute(query) + campaign = result.scalar_one_or_none() + + if not campaign: + raise ValueError(f"Campaign {campaign_id} not found") + + # Update fields + for key, value in kwargs.items(): + if hasattr(campaign, key): + setattr(campaign, key, value) + + campaign.updated_at = datetime.now(UTC) + + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(campaign) + return campaign + + # QueuedRun methods + async def bulk_create_queued_runs(self, queued_runs_data: list[dict]) -> None: + """Bulk create queued runs""" + async with self.async_session() as session: + queued_runs = [QueuedRunModel(**data) for data in queued_runs_data] + session.add_all(queued_runs) + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + + async def get_queued_runs( + self, + campaign_id: int, + state: str = "queued", + limit: int = 10, + scheduled_for: Optional[bool] = None, + ) -> list[QueuedRunModel]: + """Get queued runs for processing, optionally filtering by scheduled status""" + async with self.async_session() as session: + query = select(QueuedRunModel).where( + QueuedRunModel.campaign_id == campaign_id, + QueuedRunModel.state == state, + ) + + # Filter by scheduled status if specified + if scheduled_for is True: + query = query.where(QueuedRunModel.scheduled_for.isnot(None)) + elif scheduled_for is False: + query = query.where(QueuedRunModel.scheduled_for.is_(None)) + + query = query.order_by(QueuedRunModel.created_at).limit(limit) + + result = await session.execute(query) + return list(result.scalars().all()) + + async def update_queued_run(self, queued_run_id: int, **kwargs) -> QueuedRunModel: + """Update queued run""" + async with self.async_session() as session: + query = select(QueuedRunModel).where(QueuedRunModel.id == queued_run_id) + result = await session.execute(query) + queued_run = result.scalar_one_or_none() + + if not queued_run: + raise ValueError(f"QueuedRun {queued_run_id} not found") + + # Update fields + for key, value in kwargs.items(): + if hasattr(queued_run, key): + setattr(queued_run, key, value) + + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(queued_run) + return queued_run + + async def count_queued_runs( + self, campaign_id: int, state: Optional[str] = None + ) -> int: + """Count queued runs, optionally filtered by state""" + async with self.async_session() as session: + query = select(func.count(QueuedRunModel.id)).where( + QueuedRunModel.campaign_id == campaign_id + ) + if state: + query = query.where(QueuedRunModel.state == state) + + result = await session.execute(query) + return result.scalar() or 0 + + async def get_workflow_runs_by_campaign( + self, campaign_id: int + ) -> list[WorkflowRunModel]: + """Get all workflow runs for a campaign (internal use)""" + async with self.async_session() as session: + query = ( + select(WorkflowRunModel) + .where(WorkflowRunModel.campaign_id == campaign_id) + .order_by(WorkflowRunModel.created_at) + ) + result = await session.execute(query) + return list(result.scalars().all()) + + # New methods for retry support + async def get_scheduled_queued_runs( + self, campaign_id: int, scheduled_before: datetime, limit: int = 10 + ) -> list[QueuedRunModel]: + """Get scheduled queued runs that are due for processing""" + async with self.async_session() as session: + query = ( + select(QueuedRunModel) + .where( + QueuedRunModel.campaign_id == campaign_id, + QueuedRunModel.state == "queued", + QueuedRunModel.scheduled_for.isnot(None), + QueuedRunModel.scheduled_for <= scheduled_before, + ) + .order_by(QueuedRunModel.scheduled_for) + .limit(limit) + ) + result = await session.execute(query) + return list(result.scalars().all()) + + async def create_queued_run( + self, + campaign_id: int, + source_uuid: str, + context_variables: dict, + state: str = "queued", + retry_count: int = 0, + parent_queued_run_id: Optional[int] = None, + scheduled_for: Optional[datetime] = None, + retry_reason: Optional[str] = None, + ) -> QueuedRunModel: + """Create a single queued run with retry support""" + async with self.async_session() as session: + queued_run = QueuedRunModel( + campaign_id=campaign_id, + source_uuid=source_uuid, + context_variables=context_variables, + state=state, + retry_count=retry_count, + parent_queued_run_id=parent_queued_run_id, + scheduled_for=scheduled_for, + retry_reason=retry_reason, + ) + session.add(queued_run) + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(queued_run) + return queued_run + + async def get_queued_run_by_id( + self, queued_run_id: int + ) -> Optional[QueuedRunModel]: + """Get a queued run by ID""" + async with self.async_session() as session: + query = select(QueuedRunModel).where(QueuedRunModel.id == queued_run_id) + result = await session.execute(query) + return result.scalar_one_or_none() + + async def get_campaigns_by_status(self, statuses: list[str]) -> list[CampaignModel]: + """Get campaigns by status""" + async with self.async_session() as session: + query = ( + select(CampaignModel) + .where(CampaignModel.state.in_(statuses)) + .order_by(CampaignModel.created_at.desc()) + ) + result = await session.execute(query) + return list(result.scalars().all()) + + async def get_queued_runs_count(self, campaign_id: int, states: list[str]) -> int: + """Get count of queued runs for a campaign in specified states""" + async with self.async_session() as session: + query = select(func.count(QueuedRunModel.id)).where( + QueuedRunModel.campaign_id == campaign_id, + QueuedRunModel.state.in_(states), + ) + result = await session.execute(query) + return result.scalar() or 0 + + async def get_scheduled_runs_count( + self, + campaign_id: int, + scheduled_before: Optional[datetime] = None, + scheduled_after: Optional[datetime] = None, + ) -> int: + """Get count of scheduled runs for a campaign""" + async with self.async_session() as session: + conditions = [ + QueuedRunModel.campaign_id == campaign_id, + QueuedRunModel.scheduled_for.isnot(None), + QueuedRunModel.state == "queued", + ] + + if scheduled_before: + conditions.append(QueuedRunModel.scheduled_for <= scheduled_before) + if scheduled_after: + conditions.append(QueuedRunModel.scheduled_for > scheduled_after) + + query = select(func.count(QueuedRunModel.id)).where(*conditions) + result = await session.execute(query) + return result.scalar() or 0 diff --git a/api/db/database.py b/api/db/database.py new file mode 100644 index 0000000..6a2b6dd --- /dev/null +++ b/api/db/database.py @@ -0,0 +1,9 @@ +import os + +from sqlalchemy.ext.asyncio import create_async_engine +from sqlalchemy.orm import sessionmaker + +DATABASE_URL = os.environ["DATABASE_URL"] + +engine = create_async_engine(DATABASE_URL, echo=True) +async_session = sessionmaker(engine) diff --git a/api/db/db_client.py b/api/db/db_client.py new file mode 100644 index 0000000..dabdf5d --- /dev/null +++ b/api/db/db_client.py @@ -0,0 +1,47 @@ +from api.db.api_key_client import APIKeyClient +from api.db.campaign_client import CampaignClient +from api.db.integration_client import IntegrationClient +from api.db.looptalk_client import LoopTalkClient +from api.db.organization_client import OrganizationClient +from api.db.organization_configuration_client import OrganizationConfigurationClient +from api.db.organization_usage_client import OrganizationUsageClient +from api.db.reports_client import ReportsClient +from api.db.user_client import UserClient +from api.db.workflow_client import WorkflowClient +from api.db.workflow_run_client import WorkflowRunClient +from api.db.workflow_template_client import WorkflowTemplateClient + + +class DBClient( + WorkflowClient, + WorkflowRunClient, + UserClient, + OrganizationClient, + OrganizationConfigurationClient, + OrganizationUsageClient, + IntegrationClient, + WorkflowTemplateClient, + LoopTalkClient, + CampaignClient, + ReportsClient, + APIKeyClient, +): + """ + Unified database client that combines all specialized database operations. + + This client inherits from: + - WorkflowClient: handles workflow and workflow definition operations + - WorkflowRunClient: handles workflow run operations + - UserClient: handles user and user configuration operations + - OrganizationClient: handles organization operations + - OrganizationConfigurationClient: handles organization configuration operations + - OrganizationUsageClient: handles organization usage and quota operations + - IntegrationClient: handles integration operations + - WorkflowTemplateClient: handles workflow template operations + - LoopTalkClient: handles LoopTalk testing operations + - CampaignClient: handles campaign operations + - ReportsClient: handles reports and analytics operations + - APIKeyClient: handles API key operations + """ + + pass diff --git a/api/db/filters.py b/api/db/filters.py new file mode 100644 index 0000000..4aba067 --- /dev/null +++ b/api/db/filters.py @@ -0,0 +1,198 @@ +"""Common filter utilities for database queries.""" + +from datetime import datetime +from typing import Any, Dict, List, Optional + +from sqlalchemy import Integer, and_, cast +from sqlalchemy.dialects.postgresql import JSONB + +from api.db.models import WorkflowRunModel + +# Mapping of attribute names to database fields +ATTRIBUTE_FIELD_MAPPING = { + "dateRange": "created_at", + "dispositionCode": "gathered_context.mapped_call_disposition", + "duration": "usage_info.call_duration_seconds", + "status": "is_completed", + "tokenUsage": "cost_info.total_cost_usd", + "runId": "id", + "workflowId": "workflow_id", + "callTags": "gathered_context.call_tags", + "phoneNumber": "initial_context.phone", +} + + +def apply_workflow_run_filters( + base_query, + filters: Optional[List[Dict[str, Any]]] = None, +): + """ + Apply filters to a workflow run query. + + Supports filtering by: + - dateRange: Filter by created_at date range + - dispositionCode: Filter by gathered_context.mapped_call_disposition + - duration: Filter by usage_info.call_duration_seconds range + - status: Filter by is_completed status + - tokenUsage: Filter by cost_info.total_cost_usd range + - runId: Filter by workflow run ID (exact match) + - workflowId: Filter by workflow ID (exact match) + - callTags: Filter by gathered_context.call_tags (array of strings) + - phoneNumber: Filter by initial_context.phone (text search) + + Args: + base_query: The base SQLAlchemy query to apply filters to + filters: List of filter dictionaries with structure: + {"attribute": "filterName", "type": "filterType", "value": {...}} + + Where type is one of: + - "dateRange": Date range filter with {"from": ..., "to": ...} + - "multiSelect": Multi-select filter with {"codes": [...]} + - "numberRange": Number range filter with {"min": ..., "max": ...} + - "number": Exact number filter with {"value": number} + - "text": Text search filter with {"value": string} + - "radio": Radio/status filter with {"status": ...} + - "tags": Tags filter with {"codes": [...]} + + Returns: + The query with filters applied + """ + + if not filters: + return base_query + + filter_conditions = [] + + for filter_item in filters: + attribute = filter_item.get("attribute") + filter_type = filter_item.get("type") + value = filter_item.get("value", {}) + + # Resolve field from attribute mapping + field = ATTRIBUTE_FIELD_MAPPING.get(attribute) + if not field: + # Skip unknown attributes + continue + + # Apply the filter based on provided type + if field and filter_type: + if filter_type == "number" and field == "id": + # Filter by exact workflow run ID + if value.get("value") is not None: + filter_conditions.append(WorkflowRunModel.id == value["value"]) + + elif filter_type == "number" and field == "workflow_id": + # Filter by exact workflow ID + if value.get("value") is not None: + filter_conditions.append( + WorkflowRunModel.workflow_id == value["value"] + ) + + elif filter_type == "dateRange" and field == "created_at": + # Same as attribute-based dateRange + if value.get("from"): + filter_conditions.append( + WorkflowRunModel.created_at + >= datetime.fromisoformat(value["from"]) + ) + if value.get("to"): + filter_conditions.append( + WorkflowRunModel.created_at + <= datetime.fromisoformat(value["to"]) + ) + + elif ( + filter_type == "multiSelect" + and field == "gathered_context.mapped_call_disposition" + ): + codes = value.get("codes", []) + if codes: + filter_conditions.append( + cast(WorkflowRunModel.gathered_context, JSONB)[ + "mapped_call_disposition" + ] + .as_string() + .in_(codes) + ) + + elif filter_type == "radio" and field == "is_completed": + status = value.get("status") + if status == "completed": + filter_conditions.append(WorkflowRunModel.is_completed == True) + elif status == "in_progress": + filter_conditions.append(WorkflowRunModel.is_completed == False) + + elif ( + filter_type in ("tags", "multiSelect") + and field == "gathered_context.call_tags" + ): + tags = value.get("codes", []) + if tags: + filter_conditions.append( + cast(WorkflowRunModel.gathered_context, JSONB)[ + "call_tags" + ].contains(tags) + ) + + elif filter_type == "text" and field == "initial_context.phone": + # Filter by phone number (contains search) + phone = value.get("value", "").strip() + if phone: + filter_conditions.append( + cast(WorkflowRunModel.initial_context, JSONB)["phone"] + .as_string() + .contains(phone) + ) + + elif filter_type == "numberRange": + min_val = value.get("min") + max_val = value.get("max") + + if field == "usage_info.call_duration_seconds": + if min_val is not None: + filter_conditions.append( + cast( + cast(WorkflowRunModel.usage_info, JSONB)[ + "call_duration_seconds" + ], + Integer, + ) + >= min_val + ) + if max_val is not None: + filter_conditions.append( + cast( + cast(WorkflowRunModel.usage_info, JSONB)[ + "call_duration_seconds" + ], + Integer, + ) + <= max_val + ) + + elif field == "cost_info.total_cost_usd": + if min_val is not None: + filter_conditions.append( + cast( + cast(WorkflowRunModel.cost_info, JSONB)[ + "total_cost_usd" + ], + Integer, + ) + >= min_val + ) + if max_val is not None: + filter_conditions.append( + cast( + cast(WorkflowRunModel.cost_info, JSONB)[ + "total_cost_usd" + ], + Integer, + ) + <= max_val + ) + + if filter_conditions: + base_query = base_query.where(and_(*filter_conditions)) + + return base_query diff --git a/api/db/integration_client.py b/api/db/integration_client.py new file mode 100644 index 0000000..e1a7c54 --- /dev/null +++ b/api/db/integration_client.py @@ -0,0 +1,103 @@ +from typing import List + +from sqlalchemy.future import select + +from api.db.base_client import BaseDBClient +from api.db.models import IntegrationModel + + +class IntegrationClient(BaseDBClient): + async def get_integrations_by_organization_id( + self, organization_id: int + ) -> list[IntegrationModel]: + """Get all integrations for a specific organization.""" + async with self.async_session() as session: + result = await session.execute( + select(IntegrationModel).where( + IntegrationModel.organisation_id == organization_id + ) + ) + return result.scalars().all() + + async def create_integration( + self, + integration_id: str, + provider: str, + organisation_id: int, + connection_details: dict, + created_by: int = None, + is_active: bool = True, + ) -> IntegrationModel: + """Create a new integration for an organization.""" + async with self.async_session() as session: + new_integration = IntegrationModel( + integration_id=integration_id, + organisation_id=organisation_id, + created_by=created_by, + is_active=is_active, + provider=provider, + connection_details=connection_details, + ) + session.add(new_integration) + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(new_integration) + return new_integration + + async def update_integration_status( + self, integration_id: int, is_active: bool + ) -> IntegrationModel | None: + """Update the active status of an integration.""" + async with self.async_session() as session: + result = await session.execute( + select(IntegrationModel).where(IntegrationModel.id == integration_id) + ) + integration = result.scalars().first() + if not integration: + return None + + integration.is_active = is_active + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(integration) + return integration + + async def update_integration_connection_details( + self, integration_id: int, connection_details: dict + ) -> IntegrationModel | None: + """Update the connection details of an integration.""" + async with self.async_session() as session: + result = await session.execute( + select(IntegrationModel).where(IntegrationModel.id == integration_id) + ) + integration = result.scalars().first() + if not integration: + return None + + integration.connection_details = connection_details + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(integration) + return integration + + async def get_active_integrations_by_organization( + self, organization_id: int + ) -> List[IntegrationModel]: + """Get all active integrations for a specific organization.""" + async with self.async_session() as session: + result = await session.execute( + select(IntegrationModel).where( + IntegrationModel.organisation_id == organization_id, + IntegrationModel.is_active == True, + ) + ) + return result.scalars().all() diff --git a/api/db/looptalk_client.py b/api/db/looptalk_client.py new file mode 100644 index 0000000..3a9a9e1 --- /dev/null +++ b/api/db/looptalk_client.py @@ -0,0 +1,259 @@ +from datetime import UTC, datetime +from typing import Any, Dict, List, Optional +from uuid import uuid4 + +from sqlalchemy.future import select +from sqlalchemy.orm import selectinload + +from api.db.base_client import BaseDBClient +from api.db.models import ( + LoopTalkConversation, + LoopTalkTestSession, +) + + +class LoopTalkClient(BaseDBClient): + """Database client for LoopTalk testing operations.""" + + async def create_test_session( + self, + organization_id: int, + name: str, + actor_workflow_id: int, + adversary_workflow_id: int, + config: Dict[str, Any], + load_test_group_id: Optional[str] = None, + test_index: Optional[int] = None, + ) -> LoopTalkTestSession: + """Create a new LoopTalk test session.""" + async with self.async_session() as session: + test_session = LoopTalkTestSession( + organization_id=organization_id, + name=name, + actor_workflow_id=actor_workflow_id, + adversary_workflow_id=adversary_workflow_id, + config=config, + load_test_group_id=load_test_group_id, + test_index=test_index, + status="pending", + ) + session.add(test_session) + await session.commit() + await session.refresh(test_session) + return test_session + + async def get_test_session( + self, test_session_id: int, organization_id: int + ) -> Optional[LoopTalkTestSession]: + """Get a test session by ID.""" + async with self.async_session() as session: + result = await session.execute( + select(LoopTalkTestSession) + .options( + selectinload(LoopTalkTestSession.actor_workflow), + selectinload(LoopTalkTestSession.adversary_workflow), + selectinload(LoopTalkTestSession.conversations), + ) + .where( + LoopTalkTestSession.id == test_session_id, + LoopTalkTestSession.organization_id == organization_id, + ) + ) + return result.scalar_one_or_none() + + async def list_test_sessions( + self, + organization_id: int, + status: Optional[str] = None, + load_test_group_id: Optional[str] = None, + limit: int = 20, + offset: int = 0, + ) -> List[LoopTalkTestSession]: + """List test sessions with optional filtering.""" + async with self.async_session() as session: + query = select(LoopTalkTestSession).where( + LoopTalkTestSession.organization_id == organization_id + ) + + if status: + # "active" is a virtual status used by the UI to represent + # both "pending" and "running" sessions. Translate it into + # the real enum values stored in the database to avoid + # invalid enum casting errors (e.g. asyncpg InvalidTextRepresentationError). + if status == "active": + query = query.where( + LoopTalkTestSession.status.in_(["pending", "running"]) + ) + else: + query = query.where(LoopTalkTestSession.status == status) + + if load_test_group_id: + query = query.where( + LoopTalkTestSession.load_test_group_id == load_test_group_id + ) + + query = ( + query.order_by(LoopTalkTestSession.created_at.desc()) + .limit(limit) + .offset(offset) + ) + + result = await session.execute(query) + return result.scalars().all() + + async def update_test_session_status( + self, + test_session_id: int, + status: str, + error: Optional[str] = None, + results: Optional[Dict[str, Any]] = None, + ) -> LoopTalkTestSession: + """Update test session status and related fields.""" + async with self.async_session() as session: + result = await session.execute( + select(LoopTalkTestSession).where( + LoopTalkTestSession.id == test_session_id + ) + ) + test_session = result.scalar_one() + + test_session.status = status + + if status == "running": + test_session.started_at = datetime.now(UTC) + elif status in ["completed", "failed"]: + test_session.completed_at = datetime.now(UTC) + + if error: + test_session.error = error + + if results: + test_session.results = results + + await session.commit() + await session.refresh(test_session) + return test_session + + async def create_conversation(self, test_session_id: int) -> LoopTalkConversation: + """Create a new conversation for a test session.""" + async with self.async_session() as session: + conversation = LoopTalkConversation(test_session_id=test_session_id) + session.add(conversation) + await session.commit() + await session.refresh(conversation) + return conversation + + async def update_conversation( + self, + conversation_id: int, + duration_seconds: Optional[int] = None, + actor_recording_url: Optional[str] = None, + adversary_recording_url: Optional[str] = None, + combined_recording_url: Optional[str] = None, + transcript: Optional[Dict[str, Any]] = None, + metrics: Optional[Dict[str, Any]] = None, + ended_at: Optional[datetime] = None, + ) -> LoopTalkConversation: + """Update conversation details.""" + async with self.async_session() as session: + result = await session.execute( + select(LoopTalkConversation).where( + LoopTalkConversation.id == conversation_id + ) + ) + conversation = result.scalar_one() + + if duration_seconds is not None: + conversation.duration_seconds = duration_seconds + if actor_recording_url: + conversation.actor_recording_url = actor_recording_url + if adversary_recording_url: + conversation.adversary_recording_url = adversary_recording_url + if combined_recording_url: + conversation.combined_recording_url = combined_recording_url + if transcript: + conversation.transcript = transcript + if metrics: + conversation.metrics = metrics + if ended_at: + conversation.ended_at = ended_at + + await session.commit() + await session.refresh(conversation) + return conversation + + # Note: Turn tracking is handled by Langfuse, not stored in our database + + async def create_load_test_group( + self, + organization_id: int, + name_prefix: str, + actor_workflow_id: int, + adversary_workflow_id: int, + config: Dict[str, Any], + test_count: int, + ) -> List[LoopTalkTestSession]: + """Create multiple test sessions for load testing.""" + load_test_group_id = str(uuid4()) + test_sessions = [] + + async with self.async_session() as session: + for i in range(test_count): + test_session = LoopTalkTestSession( + organization_id=organization_id, + name=f"{name_prefix} - Test {i + 1}", + actor_workflow_id=actor_workflow_id, + adversary_workflow_id=adversary_workflow_id, + config=config, + load_test_group_id=load_test_group_id, + test_index=i, + status="pending", + ) + session.add(test_session) + test_sessions.append(test_session) + + await session.commit() + + # Refresh all sessions + for test_session in test_sessions: + await session.refresh(test_session) + + return test_sessions + + async def get_load_test_group_stats( + self, load_test_group_id: str, organization_id: int + ) -> Dict[str, Any]: + """Get statistics for a load test group.""" + async with self.async_session() as session: + # Get all sessions in the group + result = await session.execute( + select(LoopTalkTestSession).where( + LoopTalkTestSession.load_test_group_id == load_test_group_id, + LoopTalkTestSession.organization_id == organization_id, + ) + ) + sessions = result.scalars().all() + + # Calculate stats + stats = { + "total": len(sessions), + "pending": sum(1 for s in sessions if s.status == "pending"), + "running": sum(1 for s in sessions if s.status == "running"), + "completed": sum(1 for s in sessions if s.status == "completed"), + "failed": sum(1 for s in sessions if s.status == "failed"), + "sessions": [ + { + "id": s.id, + "name": s.name, + "status": s.status, + "test_index": s.test_index, + "created_at": s.created_at, + "started_at": s.started_at, + "completed_at": s.completed_at, + "error": s.error, + } + for s in sessions + ], + } + + return stats diff --git a/api/db/models.py b/api/db/models.py new file mode 100644 index 0000000..dfa02c5 --- /dev/null +++ b/api/db/models.py @@ -0,0 +1,608 @@ +from datetime import UTC, datetime + +from loguru import logger +from sqlalchemy import ( + JSON, + Boolean, + Column, + DateTime, + Enum, + Float, + ForeignKey, + Index, + Integer, + String, + Table, + UniqueConstraint, + and_, + text, +) +from sqlalchemy.orm import declarative_base, relationship + +from ..enums import IntegrationAction, WorkflowRunMode, WorkflowStatus + +Base = declarative_base() + + +# TODO: remove workflow_defintion after migration, remove nullable workflow_defintion_id from Workflow and Workflowrun + + +# Association table for many-to-many relationship between users and organizations +organization_users_association = Table( + "organization_users", + Base.metadata, + Column("user_id", Integer, ForeignKey("users.id"), primary_key=True), + Column( + "organization_id", Integer, ForeignKey("organizations.id"), primary_key=True + ), +) + + +class UserModel(Base): + __tablename__ = "users" + id = Column(Integer, primary_key=True, index=True) + provider_id = Column(String, unique=True, index=True, nullable=False) + created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(UTC)) + workflows = relationship("WorkflowModel", back_populates="user") + selected_organization_id = Column( + Integer, ForeignKey("organizations.id"), nullable=True + ) + selected_organization = relationship("OrganizationModel", back_populates="users") + organizations = relationship( + "OrganizationModel", + secondary=organization_users_association, + back_populates="users", + ) + is_superuser = Column(Boolean, default=False) + + +class UserConfigurationModel(Base): + __tablename__ = "user_configurations" + id = Column(Integer, primary_key=True, index=True) + user_id = Column(Integer, ForeignKey("users.id"), nullable=True) + configuration = Column(JSON, nullable=False, default=dict) + last_validated_at = Column(DateTime(timezone=True), nullable=True) + + +# New Organization model +class OrganizationModel(Base): + __tablename__ = "organizations" + + id = Column(Integer, primary_key=True, index=True) + provider_id = Column(String, unique=True, index=True, nullable=False) + created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(UTC)) + + # Quota fields + quota_type = Column( + Enum("monthly", "annual", name="quota_type"), + nullable=False, + default="monthly", + server_default=text("'monthly'::quota_type"), + ) + quota_dograh_tokens = Column( + Integer, nullable=False, default=0, server_default=text("0") + ) + quota_reset_day = Column( + Integer, nullable=False, default=1, server_default=text("1") + ) # 1-28, only for monthly + quota_start_date = Column(DateTime(timezone=True), nullable=True) # Only for annual + quota_enabled = Column( + Boolean, nullable=False, default=False, server_default=text("false") + ) + + price_per_second_usd = Column(Float, nullable=True) + + # Relationships + users = relationship( + "UserModel", + secondary=organization_users_association, + back_populates="organizations", + ) + integrations = relationship("IntegrationModel", back_populates="organization") + usage_cycles = relationship( + "OrganizationUsageCycleModel", back_populates="organization" + ) + configurations = relationship( + "OrganizationConfigurationModel", back_populates="organization" + ) + api_keys = relationship("APIKeyModel", back_populates="organization") + + +class APIKeyModel(Base): + __tablename__ = "api_keys" + + id = Column(Integer, primary_key=True, index=True) + organization_id = Column( + Integer, ForeignKey("organizations.id", ondelete="CASCADE"), nullable=False + ) + name = Column(String, nullable=False) + key_hash = Column(String, nullable=False, unique=True, index=True) + key_prefix = Column(String, nullable=False) # Store first 8 chars for display + is_active = Column(Boolean, default=True, nullable=False) + created_by = Column(Integer, ForeignKey("users.id"), nullable=True) + last_used_at = Column(DateTime(timezone=True), nullable=True) + created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(UTC)) + archived_at = Column(DateTime(timezone=True), nullable=True) + + # Relationships + organization = relationship("OrganizationModel", back_populates="api_keys") + created_by_user = relationship("UserModel") + + # Indexes for performance + __table_args__ = ( + Index("ix_api_keys_organization_id", "organization_id"), + Index("ix_api_keys_key_hash", "key_hash"), + Index("ix_api_keys_active", "is_active"), + ) + + +class OrganizationConfigurationModel(Base): + __tablename__ = "organization_configurations" + + id = Column(Integer, primary_key=True, index=True) + organization_id = Column( + Integer, ForeignKey("organizations.id", ondelete="CASCADE"), nullable=False + ) + key = Column(String, nullable=False) + value = Column(JSON, nullable=False, default=dict) + created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(UTC)) + updated_at = Column( + DateTime(timezone=True), + default=lambda: datetime.now(UTC), + onupdate=lambda: datetime.now(UTC), + ) + + # Relationships + organization = relationship("OrganizationModel", back_populates="configurations") + + # Constraints and indexes + __table_args__ = ( + UniqueConstraint("organization_id", "key", name="_organization_key_uc"), + Index("ix_organization_configurations_organization_id", "organization_id"), + ) + + +class IntegrationModel(Base): + __tablename__ = "integrations" + + id = Column(Integer, primary_key=True, index=True) + integration_id = Column(String, nullable=False, index=True) # Nango Connection ID + organisation_id = Column(Integer, ForeignKey("organizations.id"), nullable=False) + provider = Column(String, nullable=False) + created_by = Column(Integer, ForeignKey("users.id")) + is_active = Column(Boolean, default=True, nullable=False) + created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(UTC)) + connection_details = Column(JSON, nullable=False, default=dict) + action = Column(String, nullable=False, default=IntegrationAction.ALL_CALLS.value) + + # Relationships + organization = relationship("OrganizationModel", back_populates="integrations") + + +class WorkflowDefinitionModel(Base): + __tablename__ = "workflow_definitions" + id = Column(Integer, primary_key=True, index=True) + workflow_hash = Column(String, nullable=False) + workflow_json = Column(JSON, nullable=False, default=dict) + workflow_id = Column(Integer, ForeignKey("workflows.id"), nullable=True) + is_current = Column( + Boolean, default=False, nullable=False, server_default=text("false") + ) + created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(UTC)) + + # Table constraints and indexes + __table_args__ = ( + UniqueConstraint( + "workflow_hash", "workflow_id", name="uq_workflow_hash_workflow_id" + ), + Index("ix_workflow_hash_workflow_id", "workflow_hash", "workflow_id"), + ) + + # Relationships + workflow = relationship( + "WorkflowModel", + back_populates="definitions", + foreign_keys=[workflow_id], + ) + workflow_runs = relationship("WorkflowRunModel", back_populates="definition") + + +class WorkflowModel(Base): + __tablename__ = "workflows" + id = Column(Integer, primary_key=True, index=True) + user_id = Column(Integer, ForeignKey("users.id"), nullable=True) + user = relationship("UserModel", back_populates="workflows") + organization_id = Column(Integer, ForeignKey("organizations.id"), nullable=True) + organization = relationship("OrganizationModel") + name = Column(String, index=True, nullable=False) + status = Column( + Enum(*[status.value for status in WorkflowStatus], name="workflow_status"), + nullable=False, + default=WorkflowStatus.ACTIVE.value, + server_default=text("'active'::workflow_status"), + ) + workflow_definition = Column(JSON, nullable=False, default=dict) + template_context_variables = Column(JSON, nullable=False, default=dict) + call_disposition_codes = Column(JSON, nullable=False, default=dict) + workflow_configurations = Column( + JSON, nullable=False, default=dict, server_default=text("'{}'::json") + ) + runs = relationship("WorkflowRunModel", back_populates="workflow") + created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(UTC)) + + # All versions / historical definitions of this workflow + definitions = relationship( + "WorkflowDefinitionModel", + back_populates="workflow", + foreign_keys="WorkflowDefinitionModel.workflow_id", + ) + + # Relationship to fetch the current (is_current=True) definition + current_definition = relationship( + "WorkflowDefinitionModel", + primaryjoin=lambda: and_( + WorkflowDefinitionModel.workflow_id == WorkflowModel.id, + WorkflowDefinitionModel.is_current.is_(True), + ), + uselist=False, + viewonly=True, + ) + + @property + def current_definition_id(self): + """Return ID of the current workflow definition (helper for backwards-compat).""" + current_def = self.__dict__.get("current_definition") + if current_def is not None: + return current_def.id + + # If relationship is not loaded, we cannot safely access definitions without + # risking an implicit lazy load on a detached instance. Return ``None`` in + # that scenario so callers can handle the absence explicitly. + return None + + @property + def workflow_definition_with_fallback(self): + """ + Get workflow definition with fallback to legacy workflow_definition field. + + Returns: + dict: The workflow definition JSON + """ + # Access the relationship only if it has ALREADY been eagerly loaded on this + # instance to avoid triggering an implicit lazy load once the SQLAlchemy + # Session has been closed (which would raise a DetachedInstanceError). + + # ``__dict__`` will contain "current_definition" **only** when the attribute + # has been populated (e.g. via `selectinload` or an explicit access while + # the session was still open). Using ``__dict__.get`` guarantees that we + # do not accidentally issue a lazy load query on a detached instance. + + current_definition = self.__dict__.get("current_definition") + + if current_definition is not None: + return current_definition.workflow_json + + # Fallback for backwards-compatibility when the relationship is not (yet) + # loaded. In this case we fall back to the legacy ``workflow_definition`` + # column that always contains the most recent definition JSON. + logger.warning( + f"Workflow {self.id} has no loaded current definition, using workflow_definition as fallback", + ) + return self.workflow_definition + + +class WorkflowTemplates(Base): + __tablename__ = "workflow_templates" + id = Column(Integer, primary_key=True, index=True) + template_name = Column(String, nullable=False, index=True) + template_description = Column(String, nullable=False, index=True) + template_json = Column(JSON, nullable=False, default=dict) + created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(UTC)) + + +class WorkflowRunModel(Base): + __tablename__ = "workflow_runs" + id = Column(Integer, primary_key=True, index=True) + name = Column(String, nullable=False) + workflow_id = Column(Integer, ForeignKey("workflows.id"), nullable=False) + workflow = relationship("WorkflowModel", back_populates="runs") + definition_id = Column( + Integer, ForeignKey("workflow_definitions.id"), nullable=True + ) + definition = relationship("WorkflowDefinitionModel", back_populates="workflow_runs") + mode = Column( + Enum(*[mode.value for mode in WorkflowRunMode], name="workflow_run_mode"), + nullable=False, + ) + is_completed = Column(Boolean, default=False) + recording_url = Column(String, nullable=True) + transcript_url = Column(String, nullable=True) + # Store storage backend as string enum (s3, minio) + storage_backend = Column( + Enum("s3", "minio", name="storage_backend"), + nullable=False, + default="s3", + server_default=text("'s3'::storage_backend"), + ) + usage_info = Column(JSON, nullable=False, default=dict) + cost_info = Column(JSON, nullable=False, default=dict) + initial_context = Column(JSON, nullable=False, default=dict) + gathered_context = Column(JSON, nullable=False, default=dict) + logs = Column(JSON, nullable=False, default=dict, server_default=text("'{}'::json")) + annotations = Column(JSON, nullable=False, default=dict) + created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(UTC)) + campaign_id = Column(Integer, ForeignKey("campaigns.id"), nullable=True) + campaign = relationship("CampaignModel") + queued_run_id = Column(Integer, ForeignKey("queued_runs.id"), nullable=True) + queued_run = relationship("QueuedRunModel", foreign_keys=[queued_run_id]) + + +# LoopTalk Testing Models +class LoopTalkTestSession(Base): + __tablename__ = "looptalk_test_sessions" + + id = Column(Integer, primary_key=True, index=True) + organization_id = Column(Integer, ForeignKey("organizations.id"), nullable=False) + name = Column(String, nullable=False) + status = Column( + Enum("pending", "running", "completed", "failed", name="test_session_status"), + nullable=False, + default="pending", + ) + + # Workflow configuration + actor_workflow_id = Column(Integer, ForeignKey("workflows.id"), nullable=False) + adversary_workflow_id = Column(Integer, ForeignKey("workflows.id"), nullable=False) + + # Load testing configuration + load_test_group_id = Column(String, nullable=True, index=True) + test_index = Column(Integer, nullable=True) + + # Test metadata + config = Column(JSON, nullable=False, default=dict) + results = Column(JSON, nullable=False, default=dict) + error = Column(String, nullable=True) + + # Timestamps + created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(UTC)) + started_at = Column(DateTime(timezone=True), nullable=True) + completed_at = Column(DateTime(timezone=True), nullable=True) + + # Relationships + organization = relationship("OrganizationModel") + actor_workflow = relationship("WorkflowModel", foreign_keys=[actor_workflow_id]) + adversary_workflow = relationship( + "WorkflowModel", foreign_keys=[adversary_workflow_id] + ) + conversations = relationship("LoopTalkConversation", back_populates="test_session") + + # Indexes for performance + __table_args__ = ( + Index("ix_looptalk_test_sessions_org_id", "organization_id"), + Index("ix_looptalk_test_sessions_group_id", "load_test_group_id"), + Index("ix_looptalk_test_sessions_status", "status"), + ) + + +class LoopTalkConversation(Base): + __tablename__ = "looptalk_conversations" + + id = Column(Integer, primary_key=True, index=True) + test_session_id = Column( + Integer, ForeignKey("looptalk_test_sessions.id"), nullable=False + ) + + # Conversation metadata + duration_seconds = Column(Integer, nullable=True) + # Note: Turn tracking is handled by Langfuse, not stored here + + # Audio recording URLs + actor_recording_url = Column(String, nullable=True) + adversary_recording_url = Column(String, nullable=True) + combined_recording_url = Column(String, nullable=True) + + # Transcripts (if needed for quick access) + transcript = Column(JSON, nullable=False, default=dict) + + # Metrics + metrics = Column(JSON, nullable=False, default=dict) + + # Timestamps + created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(UTC)) + ended_at = Column(DateTime(timezone=True), nullable=True) + + # Relationships + test_session = relationship("LoopTalkTestSession", back_populates="conversations") + + # Indexes + __table_args__ = (Index("ix_looptalk_conversations_session_id", "test_session_id"),) + + +class OrganizationUsageCycleModel(Base): + """ + This model is used to track the usage of Dograh tokens for an organization for a given usage + cycle. + """ + + __tablename__ = "organization_usage_cycles" + + id = Column(Integer, primary_key=True, index=True) + organization_id = Column(Integer, ForeignKey("organizations.id"), nullable=False) + period_start = Column(DateTime(timezone=True), nullable=False) + period_end = Column(DateTime(timezone=True), nullable=False) + quota_dograh_tokens = Column(Integer, nullable=False) + used_dograh_tokens = Column(Float, nullable=False, default=0) + total_duration_seconds = Column( + Integer, nullable=False, default=0, server_default=text("0") + ) + # New USD tracking fields + used_amount_usd = Column(Float, nullable=True, default=0) + quota_amount_usd = Column(Float, nullable=True) + created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(UTC)) + updated_at = Column( + DateTime(timezone=True), + default=lambda: datetime.now(UTC), + onupdate=lambda: datetime.now(UTC), + ) + + # Relationships + organization = relationship("OrganizationModel", back_populates="usage_cycles") + + # Constraints and indexes + __table_args__ = ( + UniqueConstraint( + "organization_id", "period_start", "period_end", name="unique_org_period" + ), + Index("idx_usage_cycles_org_period", "organization_id", "period_end"), + ) + + +class CampaignModel(Base): + __tablename__ = "campaigns" + + id = Column(Integer, primary_key=True, index=True) + name = Column(String, nullable=False, index=True) + organization_id = Column(Integer, ForeignKey("organizations.id"), nullable=False) + workflow_id = Column(Integer, ForeignKey("workflows.id"), nullable=False) + created_by = Column(Integer, ForeignKey("users.id"), nullable=False) + + # Source configuration + source_type = Column(String, nullable=False, default="google-sheet") + source_id = Column(String, nullable=False) # Sheet URL + + # State management + state = Column( + Enum( + "created", + "syncing", + "running", + "paused", + "completed", + "failed", + name="campaign_state", + ), + nullable=False, + default="created", + ) + + # Progress tracking + total_rows = Column(Integer, nullable=True) + processed_rows = Column(Integer, nullable=False, default=0) + failed_rows = Column(Integer, nullable=False, default=0) + + # Rate limiting and sync configuration + rate_limit_per_second = Column(Integer, nullable=False, default=1) + max_retries = Column(Integer, nullable=False, default=0) + source_sync_status = Column(String, nullable=False, default="pending") + source_last_synced_at = Column(DateTime(timezone=True), nullable=True) + source_sync_error = Column(String, nullable=True) + + # Retry configuration for call failures + retry_config = Column( + JSON, + nullable=False, + default={ + "enabled": True, + "max_retries": 2, + "retry_delay_seconds": 120, + "retry_on_busy": True, + "retry_on_no_answer": True, + "retry_on_voicemail": True, + }, + server_default=text( + '\'{"enabled": true, "max_retries": 2, "retry_on_busy": true, "retry_on_no_answer": true, "retry_on_voicemail": true, "retry_delay_seconds": 120}\'::jsonb' + ), + ) + + # Orchestrator tracking fields + last_batch_scheduled_at = Column(DateTime(timezone=True), nullable=True) + last_activity_at = Column(DateTime(timezone=True), nullable=True) + orchestrator_metadata = Column( + JSON, nullable=False, default=dict, server_default=text("'{}'::json") + ) + + # Timestamps + created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(UTC)) + started_at = Column(DateTime(timezone=True), nullable=True) + completed_at = Column(DateTime(timezone=True), nullable=True) + updated_at = Column( + DateTime(timezone=True), + default=lambda: datetime.now(UTC), + onupdate=lambda: datetime.now(UTC), + ) + + # Relationships + organization = relationship("OrganizationModel") + workflow = relationship("WorkflowModel") + created_by_user = relationship("UserModel") + + # Indexes + __table_args__ = ( + Index("ix_campaigns_org_id", "organization_id"), + Index("ix_campaigns_state", "state"), + Index("ix_campaigns_workflow_id", "workflow_id"), + # Index for efficient querying of active campaigns + Index( + "idx_campaigns_active_status", + "state", + postgresql_where=text("state IN ('syncing', 'running', 'paused')"), + ), + ) + + +class QueuedRunModel(Base): + __tablename__ = "queued_runs" + + id = Column(Integer, primary_key=True, index=True) + campaign_id = Column( + Integer, ForeignKey("campaigns.id", ondelete="CASCADE"), nullable=False + ) + source_uuid = Column(String, nullable=False) + context_variables = Column(JSON, nullable=False, default=dict) + state = Column( + Enum("queued", "processed", "failed", name="queued_run_state"), + nullable=False, + default="queued", + ) + created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(UTC)) + processed_at = Column(DateTime(timezone=True), nullable=True) + + # New retry-related fields + retry_count = Column(Integer, default=0, nullable=False, server_default=text("0")) + parent_queued_run_id = Column(Integer, ForeignKey("queued_runs.id"), nullable=True) + scheduled_for = Column(DateTime(timezone=True), nullable=True) + retry_reason = Column(String, nullable=True) # 'busy', 'no_answer', 'voicemail' + + # Relationships + campaign = relationship("CampaignModel") + parent_queued_run = relationship("QueuedRunModel", remote_side=[id]) + + # Indexes + __table_args__ = ( + Index("idx_queued_runs_campaign_state", "campaign_id", "state"), + Index("idx_queued_runs_created", "created_at"), + Index("idx_queued_runs_source_uuid", "source_uuid"), + Index( + "idx_queued_runs_scheduled", "scheduled_for" + ), # New index for scheduled retries + # Optimized index for checking queued runs efficiently + Index( + "idx_queued_runs_campaign_state_optimized", + "campaign_id", + "state", + postgresql_where=text("state = 'queued'"), + ), + # Optimized index for scheduled retries + Index( + "idx_queued_runs_scheduled_optimized", + "campaign_id", + "scheduled_for", + postgresql_where=text("scheduled_for IS NOT NULL"), + ), + UniqueConstraint( + "campaign_id", + "source_uuid", + "retry_count", + name="unique_campaign_source_retry", + ), + ) diff --git a/api/db/organization_client.py b/api/db/organization_client.py new file mode 100644 index 0000000..6adc347 --- /dev/null +++ b/api/db/organization_client.py @@ -0,0 +1,114 @@ +from datetime import datetime, timezone +from typing import Optional + +from sqlalchemy.dialects.postgresql import insert +from sqlalchemy.future import select + +from api.db.base_client import BaseDBClient +from api.db.models import ( + APIKeyModel, + OrganizationModel, + organization_users_association, +) +from api.utils.api_key import generate_api_key + + +class OrganizationClient(BaseDBClient): + async def get_organization_by_id( + self, organization_id: int + ) -> Optional[OrganizationModel]: + """Get an organization by its ID.""" + async with self.async_session() as session: + result = await session.execute( + select(OrganizationModel).where(OrganizationModel.id == organization_id) + ) + return result.scalars().first() + + async def get_or_create_organization_by_provider_id( + self, org_provider_id: str, user_id: int + ) -> tuple[OrganizationModel, bool]: + """Get an existing organization by provider_id or create a new one. + + Returns: + A tuple of (organization, was_created) where was_created is True if the organization + was created in this call, False if it already existed. + """ + async with self.async_session() as session: + # First try to get existing organization + result = await session.execute( + select(OrganizationModel).where( + OrganizationModel.provider_id == org_provider_id + ) + ) + organization = result.scalars().first() + + if organization is None: + # Use PostgreSQL's INSERT ... ON CONFLICT DO NOTHING + # This is atomic and handles race conditions at the database level + + stmt = insert(OrganizationModel.__table__).values( + provider_id=org_provider_id, created_at=datetime.now(timezone.utc) + ) + # ON CONFLICT DO NOTHING - if another request already inserted, this becomes a no-op + stmt = stmt.on_conflict_do_nothing(index_elements=["provider_id"]) + + result = await session.execute(stmt) + await session.commit() + + # Check if we actually inserted (rowcount > 0) or if there was a conflict (rowcount == 0) + was_created = result.rowcount > 0 + + # Now fetch the organization (either the one we just created or the one that existed) + result = await session.execute( + select(OrganizationModel).where( + OrganizationModel.provider_id == org_provider_id + ) + ) + organization = result.scalars().first() + + if organization is None: + # This should never happen, but handle it just in case + error_msg = f"Failed to create or fetch organization with provider_id {org_provider_id}" + raise ValueError(error_msg) + + # Only create API key if we actually created the organization + if was_created: + # Create a default API key for the new organization + _, key_hash, key_prefix = generate_api_key() + + api_key = APIKeyModel( + organization_id=organization.id, + name="Default API Key", + key_hash=key_hash, + key_prefix=key_prefix, + is_active=True, + created_by=user_id, + ) + session.add(api_key) + await session.commit() + + await session.refresh(organization) + return organization, was_created + return organization, False + + async def add_user_to_organization( + self, user_id: int, organization_id: int + ) -> None: + """Ensure that a user is linked to an organization (many-to-many). + + The association is created only if it does not already exist. + Uses INSERT ... ON CONFLICT DO NOTHING to handle race conditions. + """ + async with self.async_session() as session: + # Use PostgreSQL's INSERT ... ON CONFLICT DO NOTHING + # This handles race conditions at the database level + + stmt = insert(organization_users_association).values( + user_id=user_id, organization_id=organization_id + ) + # ON CONFLICT DO NOTHING - if another request already inserted, this becomes a no-op + # The primary key constraint on (user_id, organization_id) will trigger the conflict + stmt = stmt.on_conflict_do_nothing() + + await session.execute(stmt) + await session.commit() diff --git a/api/db/organization_configuration_client.py b/api/db/organization_configuration_client.py new file mode 100644 index 0000000..a169b89 --- /dev/null +++ b/api/db/organization_configuration_client.py @@ -0,0 +1,96 @@ +from typing import Any, Optional + +from sqlalchemy.future import select + +from api.db.base_client import BaseDBClient +from api.db.models import OrganizationConfigurationModel + + +class OrganizationConfigurationClient(BaseDBClient): + async def get_configuration( + self, organization_id: int, key: str + ) -> Optional[OrganizationConfigurationModel]: + """Get a specific configuration for an organization by key.""" + async with self.async_session() as session: + result = await session.execute( + select(OrganizationConfigurationModel).where( + OrganizationConfigurationModel.organization_id == organization_id, + OrganizationConfigurationModel.key == key, + ) + ) + return result.scalars().first() + + async def get_all_configurations( + self, organization_id: int + ) -> list[OrganizationConfigurationModel]: + """Get all configurations for an organization.""" + async with self.async_session() as session: + result = await session.execute( + select(OrganizationConfigurationModel).where( + OrganizationConfigurationModel.organization_id == organization_id + ) + ) + return result.scalars().all() + + async def upsert_configuration( + self, organization_id: int, key: str, value: Any + ) -> OrganizationConfigurationModel: + """Create or update a configuration for an organization.""" + async with self.async_session() as session: + # First try to get existing configuration + result = await session.execute( + select(OrganizationConfigurationModel).where( + OrganizationConfigurationModel.organization_id == organization_id, + OrganizationConfigurationModel.key == key, + ) + ) + config = result.scalars().first() + + if config: + # Update existing configuration + config.value = value + else: + # Create new configuration + config = OrganizationConfigurationModel( + organization_id=organization_id, + key=key, + value=value, + ) + session.add(config) + + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(config) + return config + + async def delete_configuration(self, organization_id: int, key: str) -> bool: + """Delete a configuration for an organization.""" + async with self.async_session() as session: + result = await session.execute( + select(OrganizationConfigurationModel).where( + OrganizationConfigurationModel.organization_id == organization_id, + OrganizationConfigurationModel.key == key, + ) + ) + config = result.scalars().first() + + if not config: + return False + + await session.delete(config) + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + return True + + async def get_configuration_value( + self, organization_id: int, key: str, default: Any = None + ) -> Any: + """Get the value of a configuration, returning default if not found.""" + config = await self.get_configuration(organization_id, key) + return config.value if config else default diff --git a/api/db/organization_usage_client.py b/api/db/organization_usage_client.py new file mode 100644 index 0000000..582ede9 --- /dev/null +++ b/api/db/organization_usage_client.py @@ -0,0 +1,524 @@ +from datetime import datetime, timezone +from typing import Optional +from zoneinfo import ZoneInfo + +from dateutil.relativedelta import relativedelta +from sqlalchemy import Date, and_, cast, func, select +from sqlalchemy.dialects.postgresql import insert +from sqlalchemy.orm import joinedload + +from api.db.base_client import BaseDBClient +from api.db.filters import apply_workflow_run_filters +from api.db.models import ( + OrganizationModel, + OrganizationUsageCycleModel, + UserConfigurationModel, + UserModel, + WorkflowModel, + WorkflowRunModel, +) +from api.schemas.user_configuration import UserConfiguration + + +class OrganizationUsageClient(BaseDBClient): + """Client for managing organization usage and quota operations.""" + + async def get_or_create_current_cycle( + self, organization_id: int, session=None + ) -> OrganizationUsageCycleModel: + """Get or create the current usage cycle for an organization. + + Args: + organization_id: The organization ID + session: Optional session to use for the operation. If provided, + the caller is responsible for committing. + """ + if session is None: + async with self.async_session() as session: + return await self._get_or_create_current_cycle_impl( + organization_id, session, commit=True + ) + else: + return await self._get_or_create_current_cycle_impl( + organization_id, session, commit=False + ) + + async def _get_or_create_current_cycle_impl( + self, organization_id: int, session, commit: bool + ) -> OrganizationUsageCycleModel: + """Internal implementation for get_or_create_current_cycle.""" + # Get organization to determine quota type + org_result = await session.execute( + select(OrganizationModel).where(OrganizationModel.id == organization_id) + ) + org = org_result.scalar_one() + + # Calculate current period + period_start, period_end = self._calculate_current_period(org) + + # Try to get existing cycle + cycle_result = await session.execute( + select(OrganizationUsageCycleModel).where( + and_( + OrganizationUsageCycleModel.organization_id == organization_id, + OrganizationUsageCycleModel.period_start == period_start, + OrganizationUsageCycleModel.period_end == period_end, + ) + ) + ) + cycle = cycle_result.scalar_one_or_none() + + if cycle: + return cycle + + # Create new cycle if it doesn't exist + stmt = insert(OrganizationUsageCycleModel).values( + organization_id=organization_id, + period_start=period_start, + period_end=period_end, + quota_dograh_tokens=org.quota_dograh_tokens, + ) + # Handle concurrent inserts gracefully + stmt = stmt.on_conflict_do_nothing( + index_elements=["organization_id", "period_start", "period_end"] + ) + + await session.execute(stmt) + + if commit: + await session.commit() + + # Fetch the created cycle + cycle_result = await session.execute( + select(OrganizationUsageCycleModel).where( + and_( + OrganizationUsageCycleModel.organization_id == organization_id, + OrganizationUsageCycleModel.period_start == period_start, + OrganizationUsageCycleModel.period_end == period_end, + ) + ) + ) + return cycle_result.scalar_one() + + async def check_and_reserve_quota( + self, organization_id: int, estimated_tokens: int = 0 + ) -> bool: + """ + Check if organization has sufficient quota and optionally reserve tokens. + Returns True if quota is available, False otherwise. + + This method is fully atomic and safe for concurrent access from multiple processes. + """ + async with self.async_session() as session: + # Get organization + org_result = await session.execute( + select(OrganizationModel).where(OrganizationModel.id == organization_id) + ) + org = org_result.scalar_one_or_none() + + if not org or not org.quota_enabled: + # No quota enforcement if not enabled + return True + + # Get or create current cycle within the same session/transaction + cycle = await self._get_or_create_current_cycle_impl( + organization_id, session, commit=False + ) + + # Atomic check and update with row-level lock + result = await session.execute( + select(OrganizationUsageCycleModel) + .where( + and_( + OrganizationUsageCycleModel.id == cycle.id, + OrganizationUsageCycleModel.used_dograh_tokens + + estimated_tokens + <= OrganizationUsageCycleModel.quota_dograh_tokens, + ) + ) + .with_for_update(skip_locked=False) + ) + + cycle_locked = result.scalar_one_or_none() + if cycle_locked: + # Update the usage atomically + cycle_locked.used_dograh_tokens += estimated_tokens + await session.commit() + return True + + return False + + async def update_usage_after_run( + self, + organization_id: int, + actual_tokens: int, + duration_seconds: int = 0, + charge_usd: float = None, + ) -> None: + """Update usage after a workflow run completes with actual token count and duration. + + This method is fully atomic and safe for concurrent access from multiple processes. + """ + async with self.async_session() as session: + # Get or create current cycle within the same session/transaction + cycle = await self._get_or_create_current_cycle_impl( + organization_id, session, commit=False + ) + + # Acquire a row-level lock for atomic update + result = await session.execute( + select(OrganizationUsageCycleModel) + .where(OrganizationUsageCycleModel.id == cycle.id) + .with_for_update(skip_locked=False) + ) + cycle_locked = result.scalar_one() + + # Update usage atomically + cycle_locked.used_dograh_tokens += actual_tokens + cycle_locked.total_duration_seconds += int(round(duration_seconds)) + + # Update USD amount if provided + if charge_usd is not None: + if cycle_locked.used_amount_usd is None: + cycle_locked.used_amount_usd = 0 + cycle_locked.used_amount_usd += charge_usd + + await session.commit() + + async def get_current_usage(self, organization_id: int) -> dict: + """Get current period usage information.""" + async with self.async_session() as session: + # Get organization + org_result = await session.execute( + select(OrganizationModel).where(OrganizationModel.id == organization_id) + ) + org = org_result.scalar_one() + + # Get or create current cycle within the same session + cycle = await self._get_or_create_current_cycle_impl( + organization_id, session, commit=False + ) + + # Calculate next refresh date + if org.quota_type == "monthly": + next_refresh = cycle.period_end + relativedelta(days=1) + else: # annual + next_refresh = cycle.period_end + relativedelta(days=1) + + result = { + "period_start": cycle.period_start.isoformat(), + "period_end": cycle.period_end.isoformat(), + "used_dograh_tokens": cycle.used_dograh_tokens, + "quota_dograh_tokens": cycle.quota_dograh_tokens, + "percentage_used": ( + round( + (cycle.used_dograh_tokens / cycle.quota_dograh_tokens) * 100, 2 + ) + if cycle.quota_dograh_tokens > 0 + else 0 + ), + "next_refresh_date": next_refresh.date().isoformat(), + "quota_enabled": org.quota_enabled, + "total_duration_seconds": cycle.total_duration_seconds, + } + + # Add USD fields if organization has pricing + if org.price_per_second_usd is not None: + result["used_amount_usd"] = cycle.used_amount_usd or 0 + result["quota_amount_usd"] = cycle.quota_amount_usd + result["currency"] = "USD" + result["price_per_second_usd"] = org.price_per_second_usd + + # Calculate percentage based on USD if available + if cycle.quota_amount_usd and cycle.quota_amount_usd > 0: + result["percentage_used"] = round( + ((cycle.used_amount_usd or 0) / cycle.quota_amount_usd) * 100, 2 + ) + + return result + + async def get_usage_history( + self, + organization_id: int, + start_date: Optional[datetime] = None, + end_date: Optional[datetime] = None, + limit: int = 50, + offset: int = 0, + filters: Optional[list[dict]] = None, + ) -> tuple[list[dict], int]: + """Get paginated workflow runs with usage for an organization.""" + async with self.async_session() as session: + query = ( + select(WorkflowRunModel) + .join(WorkflowModel, WorkflowRunModel.workflow_id == WorkflowModel.id) + .join(UserModel, WorkflowModel.user_id == UserModel.id) + .where( + UserModel.selected_organization_id == organization_id, + WorkflowRunModel.cost_info.isnot(None), + ) + .order_by(WorkflowRunModel.created_at.desc()) + ) + + # Apply date filters if provided + if start_date: + query = query.where(WorkflowRunModel.created_at >= start_date) + if end_date: + query = query.where(WorkflowRunModel.created_at <= end_date) + + # Only allow specific filters for usage history endpoint + # This ensures security and prevents unexpected filter attributes + allowed_filters = {"duration", "dispositionCode", "phoneNumber"} + sanitized_filters = [] + + if filters: + for filter_item in filters: + attribute = filter_item.get("attribute") + + # Only process allowed filters + if attribute in allowed_filters: + sanitized_filters.append(filter_item) + + # Apply filters using the common filter function + query = apply_workflow_run_filters(query, sanitized_filters) + + # Get total count + count_result = await session.execute( + select(func.count()).select_from(query.subquery()) + ) + total_count = count_result.scalar() + + results = await session.execute( + query.options(joinedload(WorkflowRunModel.workflow)) + .limit(limit) + .offset(offset) + ) + runs = results.scalars().all() + + # Format runs + formatted_runs = [] + total_tokens = 0 + total_duration_seconds = 0 + for run in runs: + if run.cost_info: + # Try to get dograh_token_usage first (new format) + dograh_tokens = run.cost_info.get("dograh_token_usage", 0) + # If not present, calculate from total_cost_usd (old format) + if dograh_tokens == 0 and "total_cost_usd" in run.cost_info: + dograh_tokens = round( + float(run.cost_info["total_cost_usd"]) * 100, 2 + ) + # Get call duration + call_duration = run.cost_info.get("call_duration_seconds", 0) + else: + dograh_tokens = 0 + call_duration = 0 + total_tokens += dograh_tokens + total_duration_seconds += int(round(call_duration)) + + # Extract phone number from initial_context + phone_number = None + if run.initial_context: + phone_number = run.initial_context.get("phone_number") + + # Extract disposition from gathered_context + disposition = None + if run.gathered_context: + disposition = run.gathered_context.get("mapped_call_disposition") + + run_data = { + "id": run.id, + "workflow_id": run.workflow_id, + "workflow_name": run.workflow.name if run.workflow else None, + "name": run.name, + "created_at": run.created_at.isoformat(), + "dograh_token_usage": dograh_tokens, + "call_duration_seconds": int(round(call_duration)), + "recording_url": run.recording_url, + "transcript_url": run.transcript_url, + "phone_number": phone_number, + "disposition": disposition, + "initial_context": run.initial_context, + "gathered_context": run.gathered_context, + } + + # Add USD cost if available in cost_info + if run.cost_info and "charge_usd" in run.cost_info: + run_data["charge_usd"] = run.cost_info["charge_usd"] + + formatted_runs.append(run_data) + + return formatted_runs, total_count, total_tokens, total_duration_seconds + + async def get_daily_usage_breakdown( + self, + organization_id: int, + start_date: datetime, + end_date: datetime, + price_per_second_usd: float, + user_id: Optional[int] = None, + ) -> dict: + """Get daily usage breakdown for an organization with pricing.""" + + async with self.async_session() as session: + # Get user timezone if user_id is provided + user_timezone = "UTC" # Default timezone + if user_id: + config_result = await session.execute( + select(UserConfigurationModel).where( + UserConfigurationModel.user_id == user_id + ) + ) + config_obj = config_result.scalar_one_or_none() + if config_obj and config_obj.configuration: + user_config = UserConfiguration.model_validate( + config_obj.configuration + ) + if user_config.timezone: + user_timezone = user_config.timezone + + # Validate timezone string + try: + # Test if timezone is valid + ZoneInfo(user_timezone) + except Exception: + # Fallback to UTC if timezone is invalid + user_timezone = "UTC" + # Query to get daily aggregates + # Use AT TIME ZONE to convert to user's timezone before grouping by date + date_expr = cast( + func.timezone(user_timezone, WorkflowRunModel.created_at), Date + ) + + daily_usage = await session.execute( + select( + date_expr.label("date"), + func.sum( + WorkflowRunModel.cost_info["call_duration_seconds"].as_float() + ).label("total_seconds"), + func.count(WorkflowRunModel.id).label("call_count"), + ) + .join(WorkflowModel, WorkflowModel.id == WorkflowRunModel.workflow_id) + .join(UserModel, UserModel.id == WorkflowModel.user_id) + .where( + UserModel.selected_organization_id == organization_id, + WorkflowRunModel.created_at >= start_date, + WorkflowRunModel.created_at <= end_date, + WorkflowRunModel.is_completed == True, + ) + .group_by(date_expr) + .order_by(date_expr.desc()) + ) + + breakdown = [] + total_minutes = 0 + total_cost_usd = 0 + total_dograh_tokens = 0 + + for row in daily_usage: + seconds = row.total_seconds or 0 + minutes = seconds / 60 + cost_usd = seconds * price_per_second_usd + dograh_tokens = cost_usd * 100 # 1 cent = 1 token + + total_minutes += minutes + total_cost_usd += cost_usd + total_dograh_tokens += dograh_tokens + + breakdown.append( + { + "date": row.date.isoformat(), + "minutes": round(minutes, 1), + "cost_usd": round(cost_usd, 2), + "dograh_tokens": round(dograh_tokens, 0), + "call_count": row.call_count, + } + ) + + return { + "breakdown": breakdown, + "total_minutes": round(total_minutes, 1), + "total_cost_usd": round(total_cost_usd, 2), + "total_dograh_tokens": round(total_dograh_tokens, 0), + "currency": "USD", + } + + async def update_organization_quota( + self, + organization_id: int, + quota_type: str, + quota_dograh_tokens: int, + quota_reset_day: Optional[int] = None, + quota_start_date: Optional[datetime] = None, + ) -> OrganizationModel: + """Update organization quota settings.""" + async with self.async_session() as session: + result = await session.execute( + select(OrganizationModel).where(OrganizationModel.id == organization_id) + ) + org = result.scalar_one() + + org.quota_type = quota_type + org.quota_dograh_tokens = quota_dograh_tokens + org.quota_enabled = True + + if quota_type == "monthly" and quota_reset_day: + org.quota_reset_day = quota_reset_day + elif quota_type == "annual" and quota_start_date: + org.quota_start_date = quota_start_date + + await session.commit() + await session.refresh(org) + return org + + def _calculate_current_period( + self, org: OrganizationModel + ) -> tuple[datetime, datetime]: + """Calculate the current billing period based on organization settings.""" + now = datetime.now(timezone.utc) + + if org.quota_type == "monthly": + # Find the start of the current billing month + reset_day = org.quota_reset_day + + # Handle month boundaries + if now.day >= reset_day: + period_start = now.replace( + day=reset_day, hour=0, minute=0, second=0, microsecond=0 + ) + else: + # Previous month + period_start = (now - relativedelta(months=1)).replace( + day=reset_day, hour=0, minute=0, second=0, microsecond=0 + ) + + # End is one month later minus 1 second + period_end = ( + period_start + relativedelta(months=1) - relativedelta(seconds=1) + ) + + else: # annual + if not org.quota_start_date: + # Default to calendar year + period_start = now.replace( + month=1, day=1, hour=0, minute=0, second=0, microsecond=0 + ) + period_end = ( + period_start + relativedelta(years=1) - relativedelta(seconds=1) + ) + else: + # Find current annual period + start_date = org.quota_start_date.replace(tzinfo=timezone.utc) + years_diff = now.year - start_date.year + + # Adjust for whether we've passed the anniversary + if now.month < start_date.month or ( + now.month == start_date.month and now.day < start_date.day + ): + years_diff -= 1 + + period_start = start_date + relativedelta(years=years_diff) + period_end = ( + period_start + relativedelta(years=1) - relativedelta(seconds=1) + ) + + return period_start, period_end diff --git a/api/db/reports_client.py b/api/db/reports_client.py new file mode 100644 index 0000000..579caba --- /dev/null +++ b/api/db/reports_client.py @@ -0,0 +1,156 @@ +from datetime import datetime +from typing import Any, Dict, List, Optional + +from sqlalchemy import String, and_, func, select + +from api.db.base_client import BaseDBClient +from api.db.models import WorkflowModel, WorkflowRunModel + + +class ReportsClient(BaseDBClient): + async def get_workflow_runs_for_daily_report( + self, + organization_id: int, + start_utc: datetime, + end_utc: datetime, + workflow_id: Optional[int] = None, + ) -> List[Dict[str, Any]]: + """ + Optimized method for daily reports - fetches only required JSON fields. + Uses PostgreSQL JSON operators to extract only needed fields from JSON columns. + + Args: + organization_id: The organization ID to filter by + start_utc: Start datetime in UTC + end_utc: End datetime in UTC + workflow_id: Optional workflow ID to filter by + + Returns: + List of dictionaries with report-specific fields + """ + async with self.async_session() as session: + # Select only the specific JSON fields needed for daily reports + # Using PostgreSQL's JSON operators to extract specific fields + query = ( + select( + WorkflowRunModel.id, + WorkflowRunModel.workflow_id, + WorkflowRunModel.created_at, + # Extract only specific fields from JSON columns + # Use TRIM and REPLACE to remove any quotes from JSON values + func.coalesce( + func.replace( + func.replace( + func.cast( + WorkflowRunModel.gathered_context[ + "mapped_call_disposition" + ], + String, + ), + '"', + "", + ), + "'", + "", + ), + "UNKNOWN", + ).label("disposition"), + func.coalesce( + func.replace( + func.replace( + func.cast( + WorkflowRunModel.gathered_context[ + "customer_phone_number" + ], + String, + ), + '"', + "", + ), + "'", + "", + ), + func.replace( + func.replace( + func.cast( + WorkflowRunModel.initial_context["phone_number"], + String, + ), + '"', + "", + ), + "'", + "", + ), + "", + ).label("phone_number"), + func.coalesce( + func.replace( + func.replace( + func.cast( + WorkflowRunModel.usage_info[ + "call_duration_seconds" + ], + String, + ), + '"', + "", + ), + "'", + "", + ), + "0", + ).label("call_duration_seconds"), + WorkflowModel.name.label("workflow_name"), + ) + .select_from(WorkflowRunModel) + .join(WorkflowModel, WorkflowRunModel.workflow_id == WorkflowModel.id) + .where( + and_( + WorkflowModel.organization_id == organization_id, + WorkflowRunModel.created_at >= start_utc, + WorkflowRunModel.created_at <= end_utc, + ) + ) + ) + + if workflow_id is not None: + query = query.where(WorkflowRunModel.workflow_id == workflow_id) + + result = await session.execute(query) + rows = result.all() + + return [ + { + "id": row.id, + "workflow_id": row.workflow_id, + "workflow_name": row.workflow_name, + "created_at": row.created_at, + "gathered_context": { + "mapped_call_disposition": row.disposition, + "customer_phone_number": row.phone_number, # Also provide it here for compatibility + }, + "usage_info": {"call_duration_seconds": row.call_duration_seconds}, + "initial_context": {"phone_number": row.phone_number}, + } + for row in rows + ] + + async def get_workflows_for_organization( + self, organization_id: int + ) -> List[WorkflowModel]: + """ + Get all workflows for an organization. + + Args: + organization_id: The organization ID + """ + async with self.async_session() as session: + query = ( + select(WorkflowModel) + .where(WorkflowModel.organization_id == organization_id) + .order_by(WorkflowModel.name) + ) + + result = await session.execute(query) + return result.scalars().all() diff --git a/api/db/user_client.py b/api/db/user_client.py new file mode 100644 index 0000000..c24a85f --- /dev/null +++ b/api/db/user_client.py @@ -0,0 +1,139 @@ +from datetime import datetime, timezone + +from sqlalchemy.future import select + +from api.db.base_client import BaseDBClient +from api.db.models import UserConfigurationModel, UserModel +from api.schemas.user_configuration import UserConfiguration + + +class UserClient(BaseDBClient): + async def get_or_create_user_by_provider_id(self, provider_id: str) -> UserModel: + async with self.async_session() as session: + # First try to get existing user + result = await session.execute( + select(UserModel).where(UserModel.provider_id == provider_id) + ) + user = result.scalars().first() + + if user is None: + # Use PostgreSQL's INSERT ... ON CONFLICT DO NOTHING + # This is atomic and handles race conditions at the database level + from sqlalchemy.dialects.postgresql import insert + + stmt = insert(UserModel.__table__).values( + provider_id=provider_id, + created_at=datetime.now(timezone.utc), + selected_organization_id=None, # Will be set later + is_superuser=False, # Default value + ) + # ON CONFLICT DO NOTHING - if another request already inserted, this becomes a no-op + stmt = stmt.on_conflict_do_nothing(index_elements=["provider_id"]) + + result = await session.execute(stmt) + await session.commit() + + # Now fetch the user (either the one we just created or the one that existed) + result = await session.execute( + select(UserModel).where(UserModel.provider_id == provider_id) + ) + user = result.scalars().first() + + if user is None: + # This should never happen, but handle it just in case + error_msg = ( + f"Failed to create or fetch user with provider_id {provider_id}" + ) + raise ValueError(error_msg) + return user + + async def get_user_by_id(self, user_id: int) -> UserModel | None: + """Fetch a user by their internal ID.""" + async with self.async_session() as session: + result = await session.execute( + select(UserModel).where(UserModel.id == user_id) + ) + return result.scalars().first() + + async def get_user_configurations(self, user_id: int) -> UserConfiguration: + async with self.async_session() as session: + result = await session.execute( + select(UserConfigurationModel).where( + UserConfigurationModel.user_id == user_id + ) + ) + configuration_obj = result.scalars().first() + if not configuration_obj: + return UserConfiguration() + + return UserConfiguration.model_validate( + { + **configuration_obj.configuration, + "last_validated_at": configuration_obj.last_validated_at, + } + ) + + async def update_user_configuration( + self, user_id: int, configuration: UserConfiguration + ) -> UserConfiguration: + async with self.async_session() as session: + result = await session.execute( + select(UserConfigurationModel).where( + UserConfigurationModel.user_id == user_id + ) + ) + configuration_obj = result.scalars().first() + if not configuration_obj: + configuration_obj = UserConfigurationModel( + user_id=user_id, configuration=configuration.model_dump() + ) + session.add(configuration_obj) + else: + configuration_obj.configuration = configuration.model_dump() + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(configuration_obj) + return UserConfiguration.model_validate(configuration_obj.configuration) + + async def update_user_configuration_last_validated_at(self, user_id: int) -> None: + async with self.async_session() as session: + result = await session.execute( + select(UserConfigurationModel).where( + UserConfigurationModel.user_id == user_id + ) + ) + configuration_obj = result.scalars().first() + if not configuration_obj: + raise ValueError(f"User configuration with ID {user_id} not found") + configuration_obj.last_validated_at = datetime.now() + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(configuration_obj) + + async def update_user_selected_organization( + self, user_id: int, organization_id: int + ) -> None: + """Update the user's selected organization ID.""" + async with self.async_session() as session: + from sqlalchemy import update + + # Use a direct UPDATE statement to avoid race conditions + # This is atomic at the database level + stmt = ( + update(UserModel) + .where(UserModel.id == user_id) + .values(selected_organization_id=organization_id) + ) + + result = await session.execute(stmt) + + if result.rowcount == 0: + raise ValueError(f"User with ID {user_id} not found") + + await session.commit() diff --git a/api/db/workflow_client.py b/api/db/workflow_client.py new file mode 100644 index 0000000..7ce4078 --- /dev/null +++ b/api/db/workflow_client.py @@ -0,0 +1,312 @@ +import hashlib +import json +from typing import Optional + +from sqlalchemy import func +from sqlalchemy.future import select +from sqlalchemy.orm import selectinload + +from api.db.base_client import BaseDBClient +from api.db.models import WorkflowDefinitionModel, WorkflowModel, WorkflowRunModel + + +class WorkflowClient(BaseDBClient): + def _generate_workflow_hash(self, workflow_definition: dict) -> str: + """Generate a consistent hash for workflow definition.""" + # Convert to JSON with sorted keys for consistent hashing + json_str = json.dumps( + workflow_definition, sort_keys=True, separators=(",", ":") + ) + return hashlib.sha256(json_str.encode()).hexdigest() + + async def _get_or_create_workflow_definition( + self, workflow_definition: dict, session, workflow_id: int = None + ) -> WorkflowDefinitionModel: + """Get existing workflow definition by hash or create a new one.""" + workflow_hash = self._generate_workflow_hash(workflow_definition) + + # Try to find existing definition + result = await session.execute( + select(WorkflowDefinitionModel).where( + WorkflowDefinitionModel.workflow_hash == workflow_hash, + WorkflowDefinitionModel.workflow_id == workflow_id, + ) + ) + existing_definition = result.scalars().first() + + if existing_definition: + return existing_definition + + # Create new definition if it doesn't exist + new_definition = WorkflowDefinitionModel( + workflow_hash=workflow_hash, + workflow_json=workflow_definition, + workflow_id=workflow_id, + ) + session.add(new_definition) + await session.flush() # Flush to get the ID without committing + return new_definition + + async def create_workflow( + self, + name: str, + workflow_definition: dict, + user_id: int, + organization_id: int = None, + ) -> WorkflowModel: + async with self.async_session() as session: + try: + new_workflow = WorkflowModel( + name=name, + workflow_definition=workflow_definition, # Keep for backwards compatibility + user_id=user_id, + organization_id=organization_id, + ) + session.add(new_workflow) + await session.flush() # Flush to get the workflow ID + + # Now get or create workflow definition with the workflow_id + definition = await self._get_or_create_workflow_definition( + workflow_definition, session, new_workflow.id + ) + + # Mark this definition as the current one and unset others + definition.is_current = True + # Set any other definitions for this workflow to not current + other_defs_result = await session.execute( + select(WorkflowDefinitionModel).where( + WorkflowDefinitionModel.workflow_id == new_workflow.id, + WorkflowDefinitionModel.id != definition.id, + ) + ) + for other_def in other_defs_result.scalars().all(): + other_def.is_current = False + + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(new_workflow) + return new_workflow + + async def get_all_workflows( + self, user_id: int = None, organization_id: int = None, status: str = None + ) -> list[WorkflowModel]: + async with self.async_session() as session: + query = select(WorkflowModel).options( + selectinload(WorkflowModel.current_definition) + ) + + if organization_id: + # Filter by organization_id when provided + query = query.where(WorkflowModel.organization_id == organization_id) + elif user_id: + # Fallback to user_id for backwards compatibility + query = query.where(WorkflowModel.user_id == user_id) + + # Filter by status if provided + if status: + query = query.where(WorkflowModel.status == status) + + result = await session.execute(query) + return result.scalars().all() + + async def get_workflow( + self, workflow_id: int, user_id: int = None, organization_id: int = None + ) -> WorkflowModel | None: + async with self.async_session() as session: + query = ( + select(WorkflowModel) + .options(selectinload(WorkflowModel.current_definition)) + .where(WorkflowModel.id == workflow_id) + ) + + if organization_id: + # Filter by organization_id when provided + query = query.where(WorkflowModel.organization_id == organization_id) + elif user_id: + # Fallback to user_id for backwards compatibility + query = query.where(WorkflowModel.user_id == user_id) + + result = await session.execute(query) + return result.scalars().first() + + async def get_workflow_by_id(self, workflow_id: int) -> WorkflowModel | None: + async with self.async_session() as session: + result = await session.execute( + select(WorkflowModel) + .options(selectinload(WorkflowModel.current_definition)) + .where(WorkflowModel.id == workflow_id) + ) + return result.scalars().first() + + async def update_workflow( + self, + workflow_id: int, + name: str, + workflow_definition: dict | None, + template_context_variables: dict | None, + workflow_configurations: dict | None, + user_id: int = None, + organization_id: int = None, + ) -> WorkflowModel: + """ + Update an existing workflow in the database. + + Args: + workflow_id: The ID of the workflow to update + name: The new name for the workflow + workflow_definition: The new workflow definition + template_context_variables: The template context variables + user_id: The user ID (for backwards compatibility) + organization_id: The organization ID + + Returns: + The updated WorkflowModel + + Raises: + ValueError: If the workflow with the given ID is not found + """ + async with self.async_session() as session: + query = ( + select(WorkflowModel) + .options(selectinload(WorkflowModel.current_definition)) + .where(WorkflowModel.id == workflow_id) + ) + + if organization_id: + # Filter by organization_id when provided + query = query.where(WorkflowModel.organization_id == organization_id) + elif user_id: + # Fallback to user_id for backwards compatibility + query = query.where(WorkflowModel.user_id == user_id) + + result = await session.execute(query) + workflow = result.scalars().first() + if not workflow: + raise ValueError(f"Workflow with ID {workflow_id} not found") + + workflow.name = name + + if template_context_variables is not None: + workflow.template_context_variables = template_context_variables + + if workflow_configurations is not None: + workflow.workflow_configurations = workflow_configurations + + # In case of only name update, the workflow_definition can be None + if workflow_definition: + # Get or create new workflow definition + definition = await self._get_or_create_workflow_definition( + workflow_definition, session, workflow_id + ) + + # Update legacy field for backwards compatibility + workflow.workflow_definition = workflow_definition + + # Mark new definition as current and reset others + definition.is_current = True + other_defs_result = await session.execute( + select(WorkflowDefinitionModel).where( + WorkflowDefinitionModel.workflow_id == workflow_id, + WorkflowDefinitionModel.id != definition.id, + ) + ) + for other_def in other_defs_result.scalars().all(): + other_def.is_current = False + + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(workflow) + return workflow + + async def get_workflows_by_ids( + self, workflow_ids: list[int], organization_id: int + ) -> list[WorkflowModel]: + """Get workflows by IDs for a specific organization""" + async with self.async_session() as session: + result = await session.execute( + select(WorkflowModel) + .join(WorkflowModel.user) + .where( + WorkflowModel.id.in_(workflow_ids), + WorkflowModel.user.has(selected_organization_id=organization_id), + ) + ) + return result.scalars().all() + + async def get_workflow_name( + self, workflow_id: int, user_id: int = None, organization_id: int = None + ) -> Optional[str]: + """Get just the workflow name by ID""" + async with self.async_session() as session: + query = select(WorkflowModel.name).where(WorkflowModel.id == workflow_id) + + if organization_id: + # Filter by organization_id when provided + query = query.where(WorkflowModel.organization_id == organization_id) + elif user_id: + # Fallback to user_id for backwards compatibility + query = query.where(WorkflowModel.user_id == user_id) + + result = await session.execute(query) + return result.scalar_one_or_none() + + async def update_workflow_status( + self, + workflow_id: int, + status: str, + organization_id: int = None, + ) -> WorkflowModel: + """ + Update the status of a workflow. + + Args: + workflow_id: The ID of the workflow to update + status: The new status (active/archived) + organization_id: The organization ID + + Returns: + The updated WorkflowModel + + Raises: + ValueError: If the workflow is not found + """ + async with self.async_session() as session: + query = ( + select(WorkflowModel) + .options(selectinload(WorkflowModel.current_definition)) + .where(WorkflowModel.id == workflow_id) + ) + + if organization_id: + query = query.where(WorkflowModel.organization_id == organization_id) + + result = await session.execute(query) + workflow = result.scalars().first() + + if not workflow: + raise ValueError(f"Workflow with ID {workflow_id} not found") + + workflow.status = status + + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(workflow) + return workflow + + async def get_workflow_run_count(self, workflow_id: int) -> int: + """Get the count of runs for a workflow.""" + async with self.async_session() as session: + result = await session.execute( + select(func.count(WorkflowRunModel.id)).where( + WorkflowRunModel.workflow_id == workflow_id + ) + ) + return result.scalar() or 0 diff --git a/api/db/workflow_run_client.py b/api/db/workflow_run_client.py new file mode 100644 index 0000000..d71984f --- /dev/null +++ b/api/db/workflow_run_client.py @@ -0,0 +1,404 @@ +from datetime import datetime, timezone +from typing import Any, Dict, List, Optional, Tuple + +from sqlalchemy import func +from sqlalchemy.future import select +from sqlalchemy.orm import joinedload, selectinload + +from api.db.base_client import BaseDBClient +from api.db.filters import apply_workflow_run_filters +from api.db.models import ( + OrganizationModel, + UserModel, + WorkflowDefinitionModel, + WorkflowModel, + WorkflowRunModel, +) +from api.schemas.workflow import WorkflowRunResponseSchema + + +class WorkflowRunClient(BaseDBClient): + async def create_workflow_run( + self, + name: str, + workflow_id: int, + mode: str, + user_id: int, + initial_context: dict = None, + campaign_id: int = None, + queued_run_id: int = None, + ) -> WorkflowRunModel: + async with self.async_session() as session: + # Get workflow and user to check organization + workflow = await session.execute( + select(WorkflowModel) + .options(joinedload(WorkflowModel.user)) + .where( + WorkflowModel.id == workflow_id, WorkflowModel.user_id == user_id + ) + ) + workflow = workflow.scalars().first() + if not workflow: + raise ValueError(f"Workflow with ID {workflow_id} not found") + + # # Check quota if user has an organization + # if workflow.user and workflow.user.selected_organization_id: + # # Import here to avoid circular dependency + # from api.db.organization_usage_client import OrganizationUsageClient + + # usage_client = OrganizationUsageClient() + + # # Check quota (no reservation for now, actual cost will be added after completion) + # has_quota = await usage_client.check_and_reserve_quota( + # workflow.user.selected_organization_id, estimated_tokens=0 + # ) + + # if not has_quota: + # raise ValueError( + # "Organization quota exceeded. Please contact your administrator." + # ) + + # Fetch the current definition for this workflow + current_def_result = await session.execute( + select(WorkflowDefinitionModel).where( + WorkflowDefinitionModel.workflow_id == workflow.id, + WorkflowDefinitionModel.is_current == True, + ) + ) + current_def = current_def_result.scalars().first() + + new_run = WorkflowRunModel( + name=name, + workflow=workflow, + mode=mode, + definition_id=current_def.id if current_def else None, + initial_context=initial_context or workflow.template_context_variables, + campaign_id=campaign_id, + queued_run_id=queued_run_id, + ) + session.add(new_run) + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(new_run) + return new_run + + async def get_all_workflow_runs(self) -> list[WorkflowRunModel]: + async with self.async_session() as session: + result = await session.execute(select(WorkflowRunModel)) + return result.scalars().all() + + async def get_workflow_runs_for_superadmin( + self, + limit: int = 50, + offset: int = 0, + filters: Optional[List[Dict[str, Any]]] = None, + ) -> tuple[list[dict], int]: + """ + Get paginated workflow runs for superadmin with organization information. + Returns tuple of (workflow_runs, total_count). + """ + async with self.async_session() as session: + # Build base query with joins + base_query = ( + select(WorkflowRunModel) + .join(WorkflowModel, WorkflowRunModel.workflow_id == WorkflowModel.id) + .join(UserModel, WorkflowModel.user_id == UserModel.id) + .outerjoin( + OrganizationModel, + UserModel.selected_organization_id == OrganizationModel.id, + ) + ) + + # Apply filters + base_query = apply_workflow_run_filters(base_query, filters) + + # Count total with filters + count_query = base_query.with_only_columns(func.count(WorkflowRunModel.id)) + count_result = await session.execute(count_query) + total_count = count_result.scalar() + + # Get paginated results with filters + result = await session.execute( + base_query.options( + joinedload(WorkflowRunModel.workflow).joinedload( + WorkflowModel.user + ), + joinedload(WorkflowRunModel.workflow) + .joinedload(WorkflowModel.user) + .joinedload(UserModel.selected_organization), + ) + .order_by(WorkflowRunModel.created_at.desc()) + .limit(limit) + .offset(offset) + ) + workflow_runs = result.scalars().all() + + # Format the response + formatted_runs = [] + for run in workflow_runs: + organization = ( + run.workflow.user.selected_organization + if run.workflow.user + else None + ) + formatted_runs.append( + { + "id": run.id, + "name": run.name, + "workflow_id": run.workflow_id, + "workflow_name": run.workflow.name if run.workflow else None, + "user_id": run.workflow.user_id if run.workflow else None, + "organization_id": organization.id if organization else None, + "organization_name": organization.provider_id + if organization + else None, + "mode": run.mode, + "is_completed": run.is_completed, + "recording_url": run.recording_url, + "transcript_url": run.transcript_url, + "usage_info": run.usage_info, + "cost_info": run.cost_info, + "initial_context": run.initial_context, + "gathered_context": run.gathered_context, + "admin_comment": (run.annotations or {}).get("admin_comment"), + "admin_comment_ts": (run.annotations or {}).get( + "admin_comment_ts" + ), + "created_at": run.created_at, + } + ) + + return formatted_runs, total_count + + async def get_workflow_run( + self, run_id: int, user_id: int = None, organization_id: int = None + ) -> WorkflowRunModel | None: + async with self.async_session() as session: + query = select(WorkflowRunModel).join(WorkflowRunModel.workflow) + + if organization_id: + # Filter by organization_id when provided + query = query.where( + WorkflowRunModel.id == run_id, + WorkflowModel.organization_id == organization_id, + ) + elif user_id: + # Fallback to user_id for backwards compatibility + query = query.where( + WorkflowRunModel.id == run_id, + WorkflowModel.user_id == user_id, + ) + else: + query = query.where(WorkflowRunModel.id == run_id) + + result = await session.execute(query) + return result.scalars().first() + + async def get_workflow_run_by_id(self, run_id: int) -> WorkflowRunModel | None: + """Get workflow run by ID without user filtering - for background tasks""" + async with self.async_session() as session: + result = await session.execute( + select(WorkflowRunModel) + .options( + joinedload(WorkflowRunModel.workflow).joinedload(WorkflowModel.user) + ) + .where(WorkflowRunModel.id == run_id) + ) + return result.scalars().first() + + async def get_workflow_runs_by_workflow_id( + self, + workflow_id: int, + user_id: int = None, + organization_id: int = None, + limit: int = 50, + offset: int = 0, + filters: Optional[List[Dict[str, Any]]] = None, + ) -> tuple[list[WorkflowRunResponseSchema], int]: + async with self.async_session() as session: + # Build base query + base_query = ( + select(WorkflowRunModel) + .join(WorkflowModel, WorkflowRunModel.workflow_id == WorkflowModel.id) + .where(WorkflowRunModel.workflow_id == workflow_id) + ) + + if organization_id: + # Filter by organization_id when provided + base_query = base_query.where( + WorkflowModel.organization_id == organization_id + ) + elif user_id: + # Fallback to user_id for backwards compatibility + base_query = base_query.where(WorkflowModel.user_id == user_id) + + # Apply filters + base_query = apply_workflow_run_filters(base_query, filters) + + # Count total with filters + count_query = base_query.with_only_columns(func.count(WorkflowRunModel.id)) + count_result = await session.execute(count_query) + total_count = count_result.scalar() + + # Get paginated results with filters + result = await session.execute( + base_query.order_by(WorkflowRunModel.created_at.desc()) + .limit(limit) + .offset(offset) + ) + runs = [ + WorkflowRunResponseSchema.model_validate( + { + "id": run.id, + "workflow_id": run.workflow_id, + "name": run.name, + "mode": run.mode, + "created_at": run.created_at, + "is_completed": run.is_completed, + "recording_url": run.recording_url, + "transcript_url": run.transcript_url, + "cost_info": { + "dograh_token_usage": ( + run.cost_info.get("dograh_token_usage") + if run.cost_info + and "dograh_token_usage" in run.cost_info + else round( + float(run.cost_info.get("total_cost_usd", 0)) * 100, + 2, + ) + if run.cost_info and "total_cost_usd" in run.cost_info + else 0 + ), + "call_duration_seconds": int( + round(run.cost_info.get("call_duration_seconds") or 0) + ) + if run.cost_info + else None, + } + if run.cost_info + else None, + "definition_id": run.definition_id, + "initial_context": run.initial_context, + "gathered_context": run.gathered_context, + } + ) + for run in result.scalars().all() + ] + return runs, total_count + + async def update_workflow_run( + self, + run_id: int, + is_completed: bool = False, + recording_url: str | None = None, + transcript_url: str | None = None, + storage_backend: str | None = None, + usage_info: dict | None = None, + cost_info: dict | None = None, + initial_context: dict | None = None, + gathered_context: dict | None = None, + logs: dict | None = None, + ) -> WorkflowRunModel: + async with self.async_session() as session: + result = await session.execute( + select(WorkflowRunModel).where(WorkflowRunModel.id == run_id) + ) + run = result.scalars().first() + if not run: + raise ValueError(f"Workflow run with ID {run_id} not found") + if recording_url: + run.recording_url = recording_url + if transcript_url: + run.transcript_url = transcript_url + if storage_backend: + run.storage_backend = storage_backend + if usage_info: + run.usage_info = usage_info + if cost_info: + run.cost_info = cost_info + if initial_context: + run.initial_context = initial_context + if gathered_context: + # Lets merge the incoming gathered context keys with the existing ones + run.gathered_context = { + **run.gathered_context, + **gathered_context, + } + if logs: + # Lets merge the incoming logs key with existing ones + run.logs = {**run.logs, **logs} + if is_completed: + run.is_completed = is_completed + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(run) + return run + + async def update_admin_comment( + self, run_id: int, admin_comment: str + ) -> WorkflowRunModel: + """Update (or create) the admin comment inside the ``annotations`` JSON column. + + The comment is stored under the key ``admin_comment`` so we do not + overwrite any other existing annotations that may be present. + """ + async with self.async_session() as session: + result = await session.execute( + select(WorkflowRunModel).where(WorkflowRunModel.id == run_id) + ) + run = result.scalars().first() + if run is None: + raise ValueError(f"Workflow run with ID {run_id} not found") + + # Ensure we never mutate a shared dict between instances + current_annotations = dict(run.annotations or {}) + current_annotations["admin_comment"] = admin_comment + + current_annotations["admin_comment_ts"] = datetime.now( + timezone.utc + ).isoformat() + run.annotations = current_annotations + + try: + await session.commit() + except Exception as e: + await session.rollback() + raise e + await session.refresh(run) + return run + + async def get_workflow_run_with_context( + self, workflow_run_id: int + ) -> Tuple[Optional[WorkflowRunModel], Optional[int]]: + """ + Get workflow run with all related data and return organization_id. + + Returns: + Tuple of (workflow_run, organization_id) or (None, None) if not found + """ + async with self.async_session() as session: + result = await session.execute( + select(WorkflowRunModel) + .options( + selectinload(WorkflowRunModel.workflow).selectinload( + WorkflowModel.user + ) + ) + .where(WorkflowRunModel.id == workflow_run_id) + ) + workflow_run = result.scalars().first() + + if not workflow_run: + return None, None + + if not workflow_run.workflow or not workflow_run.workflow.user: + return workflow_run, None + + organization_id = workflow_run.workflow.user.selected_organization_id + return workflow_run, organization_id diff --git a/api/db/workflow_template_client.py b/api/db/workflow_template_client.py new file mode 100644 index 0000000..d9ed623 --- /dev/null +++ b/api/db/workflow_template_client.py @@ -0,0 +1,99 @@ +from sqlalchemy.future import select + +from api.db.base_client import BaseDBClient +from api.db.models import WorkflowTemplates + + +class WorkflowTemplateClient(BaseDBClient): + async def get_workflow_template(self, template_id: int) -> WorkflowTemplates | None: + """Get a workflow template by ID.""" + async with self.async_session() as session: + result = await session.execute( + select(WorkflowTemplates).where(WorkflowTemplates.id == template_id) + ) + return result.scalars().first() + + async def get_workflow_template_by_name( + self, template_name: str + ) -> WorkflowTemplates | None: + """Get a workflow template by name.""" + async with self.async_session() as session: + result = await session.execute( + select(WorkflowTemplates).where( + WorkflowTemplates.template_name == template_name + ) + ) + return result.scalars().first() + + async def get_all_workflow_templates(self) -> list[WorkflowTemplates]: + """Get all workflow templates.""" + async with self.async_session() as session: + result = await session.execute(select(WorkflowTemplates)) + return result.scalars().all() + + async def create_workflow_template( + self, template_name: str, template_description: str, template_json: dict + ) -> WorkflowTemplates: + """Create a new workflow template.""" + async with self.async_session() as session: + try: + new_template = WorkflowTemplates( + template_name=template_name, + template_description=template_description, + template_json=template_json, + ) + session.add(new_template) + await session.commit() + await session.refresh(new_template) + return new_template + except Exception as e: + await session.rollback() + raise e + + async def update_workflow_template( + self, + template_id: int, + template_name: str | None = None, + template_json: dict | None = None, + ) -> WorkflowTemplates: + """Update an existing workflow template.""" + async with self.async_session() as session: + try: + result = await session.execute( + select(WorkflowTemplates).where(WorkflowTemplates.id == template_id) + ) + template = result.scalars().first() + if not template: + raise ValueError( + f"Workflow template with ID {template_id} not found" + ) + + if template_name is not None: + template.template_name = template_name + if template_json is not None: + template.template_json = template_json + + await session.commit() + await session.refresh(template) + return template + except Exception as e: + await session.rollback() + raise e + + async def delete_workflow_template(self, template_id: int) -> bool: + """Delete a workflow template by ID.""" + async with self.async_session() as session: + try: + result = await session.execute( + select(WorkflowTemplates).where(WorkflowTemplates.id == template_id) + ) + template = result.scalars().first() + if not template: + return False + + await session.delete(template) + await session.commit() + return True + except Exception as e: + await session.rollback() + raise e diff --git a/api/enums.py b/api/enums.py new file mode 100644 index 0000000..7cc019e --- /dev/null +++ b/api/enums.py @@ -0,0 +1,81 @@ +from enum import Enum + + +class IntegrationAction(Enum): + ALL_CALLS = "All Calls" + QUALIFIED_CALLS = "Qualified Calls" + + +class Environment(Enum): + LOCAL = "local" + PRODUCTION = "production" + TEST = "test" + + +class WorkflowRunMode(Enum): + TWILIO = "twilio" + STASIS = "stasis" + WEBRTC = "webrtc" + SMALLWEBRTC = "smallwebrtc" + + # Historical, not used anymore. Don't + # use and don't remove + VOICE = "VOICE" + CHAT = "CHAT" + + +class StorageBackend(Enum): + """Storage backend enumeration. + + Currently supported backends: + - S3: Amazon S3 + - MINIO: MinIO + + Future extensibility: Additional backends like GCS, Azure can be added by: + 1. Adding new enum values as strings + 2. Implementing storage logic in services/storage.py + 3. Database will automatically support new values via SQLAlchemy Enum type + """ + + # Currently implemented backends + S3 = "s3" # AWS S3 for cloud deployments + MINIO = "minio" # MinIO for local/OSS deployments + + @classmethod + def get_current_backend(cls): + """Get current backend based on ENABLE_AWS_S3 flag.""" + from api.constants import ENABLE_AWS_S3 + + if ENABLE_AWS_S3: + return cls.S3 + else: + return cls.MINIO + + +class WorkflowRunStatus(Enum): + # historical modes + VOICE = "VOICE" + CHAT = "CHAT" + + +class OrganizationConfigurationKey(Enum): + DISPOSITION_CODE_MAPPING = "DISPOSITION_CODE_MAPPING" + DISPOSITION_MESSAGE_TEMPLATE = "DISPOSITION_MESSAGE_TEMPLATE" + CONCURRENT_CALL_LIMIT = "CONCURRENT_CALL_LIMIT" + TWILIO_PHONE_NUMBERS = "TWILIO_PHONE_NUMBERS" + + +class WorkflowStatus(Enum): + """Workflow status values""" + + ACTIVE = "active" + ARCHIVED = "archived" + # Future statuses can be added here like: + # DRAFT = "draft" + # PAUSED = "paused" + + +class RedisChannel(Enum): + """Redis pub/sub channel names""" + + CAMPAIGN_EVENTS = "campaign_events" diff --git a/api/logging_config.py b/api/logging_config.py new file mode 100644 index 0000000..de68fb3 --- /dev/null +++ b/api/logging_config.py @@ -0,0 +1,217 @@ +import atexit +import logging +import os +import queue +import sys +from logging.handlers import QueueHandler, QueueListener + +import loguru +from axiom_py import Client +from axiom_py.logging import AxiomHandler +from pipecat.utils.context import run_id_var, turn_var + +from api.enums import Environment +from api.utils.worker import get_worker_id, is_worker_process + +# ----- NEW CODE START ----- +# Helper to map string log level to Python logging level, adding support for "TRACE" +TRACE_LEVEL_NUM = 5 # Below DEBUG (10) + + +def _get_logging_level(level_name: str) -> int: + """Return numeric logging level for a given level name. + + Supports the standard logging levels as well as the custom ``TRACE`` level + used by *loguru*. If ``TRACE`` is requested and not yet defined in the + ``logging`` module, it will be registered dynamically. + """ + level_name = level_name.upper() + + # Standard levels are present on the ``logging`` module. + if hasattr(logging, level_name): + return getattr(logging, level_name) + + # Add support for TRACE (finer-grained than DEBUG) + if level_name == "TRACE": + if not hasattr(logging, "TRACE"): + logging.addLevelName(TRACE_LEVEL_NUM, "TRACE") + + def trace(self, message, *args, **kwargs): # type: ignore[override] + if self.isEnabledFor(TRACE_LEVEL_NUM): + self._log(TRACE_LEVEL_NUM, message, args, **kwargs) + + logging.Logger.trace = trace # type: ignore[attr-defined] + return TRACE_LEVEL_NUM + + # Fallback to DEBUG if an unknown level is provided + return logging.DEBUG + + +# ----- NEW CODE END ----- + +ENVIRONMENT = os.getenv("ENVIRONMENT", Environment.LOCAL.value) +ENABLE_TURN_LOGGING = os.getenv("ENABLE_TURN_LOGGING", "false").lower() == "true" + +# Log rotation settings from environment +LOG_ROTATION_SIZE = os.getenv("LOG_ROTATION_SIZE", "100 MB") # e.g., "100 MB", "1 GB" +LOG_ROTATION_TIME = os.getenv("LOG_ROTATION_TIME", None) # e.g., "00:00", "12:00" +LOG_RETENTION = os.getenv( + "LOG_RETENTION", "7 days" +) # e.g., "7 days", "1 week", "10 files" +LOG_COMPRESSION = os.getenv( + "LOG_COMPRESSION", "gz" +) # "gz", "bz2", "xz", "tar", "tar.gz", "tar.bz2", "tar.xz", "zip" +LOG_FILE_PATH = os.getenv( + "LOG_FILE_PATH", None +) # If set, write to file instead of stdout + +# Track if logging has been initialized +_logging_initialized = False +_axiom_listener = None + + +def inject_run_id(record): + """Inject run_id from context variable into log record""" + record["extra"]["run_id"] = run_id_var.get() + + # Only handle turn logging if enabled + if ENABLE_TURN_LOGGING: + # Get turn number with fallback mechanism + turn = turn_var.get() + + # If turn is still 0, try the turn context manager + if turn == 0: + try: + from api.services.pipecat.turn_context import get_turn_context_manager + + turn = get_turn_context_manager().get_turn() + except ImportError: + # Turn context manager not available + pass + + record["extra"]["turn"] = turn + else: + # Turn logging disabled, use default value + record["extra"]["turn"] = 0 + + +def setup_logging(): + """Set up logging for the main application""" + global _logging_initialized, _axiom_listener + + # Return early if already initialized + if _logging_initialized: + return _axiom_listener + + log_level = os.getenv("LOG_LEVEL", "DEBUG").upper() + + # Don't setup logging in test environment + if ENVIRONMENT == Environment.TEST.value: + return + + # Remove default loguru handler + try: + loguru.logger.remove(0) + except ValueError: + # Handler might already be removed + pass + + # Patch loguru to inject run_id + patched = loguru.logger.patch(inject_run_id) + + # Determine log format + if ENABLE_TURN_LOGGING: + log_format = "{time:YYYY-MM-DD HH:mm:ss.SSS} | {level} | [run_id={extra[run_id]}] [turn={extra[turn]}] | {file.name}:{line} | {message}" + else: + log_format = "{time:YYYY-MM-DD HH:mm:ss.SSS} | {level} | [run_id={extra[run_id]}] | {file.name}:{line} | {message}" + + # Add handler - either file with rotation or console + if LOG_FILE_PATH: + # File handler with rotation + rotation_config = {} + + # Size-based rotation (e.g., "100 MB", "1 GB") + if LOG_ROTATION_SIZE: + rotation_config["rotation"] = LOG_ROTATION_SIZE + + # Time-based rotation (e.g., "00:00" for daily at midnight) + if LOG_ROTATION_TIME: + rotation_config["rotation"] = LOG_ROTATION_TIME + + # If no rotation specified, default to 100 MB + if not rotation_config: + rotation_config["rotation"] = "100 MB" + + # Retention policy (e.g., "7 days", "10 files") + if LOG_RETENTION: + rotation_config["retention"] = LOG_RETENTION + + # Compression format + if LOG_COMPRESSION and LOG_COMPRESSION.lower() != "none": + rotation_config["compression"] = LOG_COMPRESSION + + # Determine the actual log file path + actual_log_path = LOG_FILE_PATH + + # If we're in a worker process, append worker ID to the filename + if is_worker_process(): + worker_id = get_worker_id() + # Split the path to insert worker ID before extension + base_path, ext = os.path.splitext(LOG_FILE_PATH) + actual_log_path = f"{base_path}-worker-{worker_id}{ext}" + loguru.logger.info(f"Worker {worker_id} will log to: {actual_log_path}") + + patched.add( + actual_log_path, + format=log_format, + level=log_level, + colorize=False, # No colors in file logs + enqueue=True, # Thread-safe writing + **rotation_config, + ) + else: + # Console handler (existing behavior) + patched.add( + sys.stdout, + format=log_format, + level=log_level, + colorize=True, + ) + + # Set up queue-based logging for Axiom + log_q = queue.Queue(-1) # infinite size (tweak if needed) + queue_handler = QueueHandler(log_q) # puts LogRecord on the queue + queue_handler.setLevel(_get_logging_level(log_level)) + + # Set up Axiom handler if credentials are available + axiom_token = os.environ.get("AXIOM_TOKEN") + axiom_org = os.environ.get("AXIOM_ORG") + axiom_dataset = os.getenv("AXIOM_LOG_DATASET") + + if axiom_token and axiom_org and axiom_dataset: + client = Client(token=axiom_token, org_id=axiom_org) + axiom_handler = AxiomHandler(client, axiom_dataset) + axiom_handler.setLevel(_get_logging_level(log_level)) + + listener = QueueListener( + log_q, + axiom_handler, + respect_handler_level=True, + ) + listener.start() + + patched.add(queue_handler, level=log_level, enqueue=False) + + # Register cleanup + atexit.register(listener.stop) + + # Return the listener for manual cleanup if needed + loguru.logger = patched + _logging_initialized = True + _axiom_listener = listener + return listener + else: + # No Axiom logging available + loguru.logger = patched + _logging_initialized = True + return None diff --git a/api/native/rnnoise/librnnoise.so b/api/native/rnnoise/librnnoise.so new file mode 120000 index 0000000..acac028 --- /dev/null +++ b/api/native/rnnoise/librnnoise.so @@ -0,0 +1 @@ +librnnoise.so.0.4.1 \ No newline at end of file diff --git a/api/native/rnnoise/librnnoise.so.0 b/api/native/rnnoise/librnnoise.so.0 new file mode 120000 index 0000000..acac028 --- /dev/null +++ b/api/native/rnnoise/librnnoise.so.0 @@ -0,0 +1 @@ +librnnoise.so.0.4.1 \ No newline at end of file diff --git a/api/native/rnnoise/librnnoise.so.0.4.1 b/api/native/rnnoise/librnnoise.so.0.4.1 new file mode 100755 index 0000000..08e0ec7 Binary files /dev/null and b/api/native/rnnoise/librnnoise.so.0.4.1 differ diff --git a/api/pytest.ini b/api/pytest.ini new file mode 100644 index 0000000..908eec0 --- /dev/null +++ b/api/pytest.ini @@ -0,0 +1,11 @@ +[pytest] +asyncio_mode = strict +asyncio_default_fixture_loop_scope = function +testpaths = . +python_files = test_*.py *_test.py +python_classes = Test* +python_functions = test_* +addopts = -v --tb=short -s +markers = + asyncio: mark test as an async test + slow: mark test as slow running \ No newline at end of file diff --git a/api/requirements.dev.txt b/api/requirements.dev.txt new file mode 100644 index 0000000..a102a54 --- /dev/null +++ b/api/requirements.dev.txt @@ -0,0 +1,5 @@ +mypy==1.15.0 +ruff==0.11.3 +pytest==8.3.5 +pytest-asyncio==0.26.0 +pre-commit==4.2.0 diff --git a/api/requirements.txt b/api/requirements.txt new file mode 100644 index 0000000..9407c1c --- /dev/null +++ b/api/requirements.txt @@ -0,0 +1,121 @@ +aenum==3.1.16 +aiofiles==24.1.0 +aiohappyeyeballs==2.6.1 +aiohttp==3.11.16 +aiosignal==1.3.2 +alembic==1.15.2 +amqp==5.3.1 +annotated-types==0.7.0 +anyio==4.9.0 +asyncpg==0.30.0 +attrs==25.3.0 +audioop-lts==0.2.1; python_version>='3.13' +av==14.2.0 +backoff==2.2.1 +billiard==4.2.1 +certifi==2025.1.31 +cffi==1.17.1 +charset-normalizer==3.4.1 +click==8.1.8 +click-didyoumean==0.3.1 +click-plugins==1.1.1 +click-repl==0.3.0 +colorama==0.4.6 +coloredlogs==15.0.1 +dataclasses-json==0.6.7 +deprecation==2.1.0 +distro==1.9.0 +docstring_parser==0.16 +eval_type_backport==0.2.2 +fastapi==0.115.12 +filelock==3.18.0 +flatbuffers==25.2.10 +frozenlist==1.5.0 +fsspec==2025.3.2 +future==1.0.0 +greenlet==3.1.1 +h11==0.14.0 +httpcore==1.0.7 +httpx==0.28.1 +huggingface-hub==0.30.1 +humanfriendly==10.0 +idna==3.10 +Jinja2==3.1.6 +jiter==0.9.0 +jmespath==1.0.1 +kombu==5.5.2 +langfuse==3.2.7 +llvmlite==0.44.0 +loguru==0.7.3 +Mako==1.3.9 +Markdown==3.8 +MarkupSafe==3.0.2 +marshmallow==3.26.1 +mpmath==1.3.0 +multidict==6.2.0 +mypy_extensions==1.1.0 +numba==0.61.2 +numpy==1.26.4 +onnxruntime==1.21.0 +packaging==24.2 +pillow==11.1.0 +pipecat-ai[cartesia,deepgram,openai,elevenlabs,groq,google,azure] @ git+https://github.com/dograh-hq/pipecat.git@main +prompt_toolkit==3.0.51 +propcache==0.3.1 +protobuf==5.29.4 +psutil==7.0.0 +pycparser==2.22 +pydantic==2.10.6 +pydantic_core==2.27.2 +PyJWT==2.10.1 +pyloudnorm==0.1.1 +python-dateutil==2.9.0.post0 +python-dotenv==1.1.0 +PyYAML==6.0.2 +redis==5.2.1 +regex==2024.11.6 +requests==2.32.3 +resampy==0.4.3 +safetensors==0.5.3 +scipy==1.15.2 +setuptools==75.8.0 +six==1.17.0 +sniffio==1.3.1 +sounddevice==0.5.1 +soxr==0.5.0.post1 +SQLAlchemy==2.0.40 +starlette==0.46.1 +sympy==1.13.3 +tokenizers==0.21.1 +tqdm==4.67.1 +transformers==4.50.3 +types-protobuf==4.25.0.20240417 +typing-inspect==0.9.0 +typing-inspection==0.4.0 +typing_extensions==4.13.0 +tzdata==2025.2 +urllib3==2.3.0 +uvicorn==0.34.0 +vine==5.1.0 +watchfiles==1.0.4 +wcwidth==0.2.13 +websockets==13.1 +wheel==0.45.1 +wrapt==1.17.2 +yarl==1.18.3 +aiortc==1.11.0 +opencv-python-headless==4.11.0.86 +aioboto3==14.3.0 +arq==0.26.3 +opentelemetry-sdk==1.33.1 +opentelemetry-api==1.33.1 +opentelemetry-exporter-otlp==1.33.1 +torch==2.7.0 +torchaudio==2.7.0 +axiom-py==0.9.0 +sentry-sdk[fastapi]==2.30.0 +twilio==9.7.0 +python-multipart==0.0.20 +soundfile==0.13.1 +minio==7.2.7 +alembic-postgresql-enum==1.8.0 \ No newline at end of file diff --git a/api/routes/__init__.py b/api/routes/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/routes/campaign.py b/api/routes/campaign.py new file mode 100644 index 0000000..97f9cd6 --- /dev/null +++ b/api/routes/campaign.py @@ -0,0 +1,347 @@ +from datetime import datetime +from typing import List, Optional + +from fastapi import APIRouter, Depends, HTTPException +from pydantic import BaseModel, Field + +from api.db import db_client +from api.db.models import UserModel +from api.enums import OrganizationConfigurationKey +from api.services.auth.depends import get_user +from api.services.campaign.runner import campaign_runner_service + +router = APIRouter(prefix="/campaign") + + +class CreateCampaignRequest(BaseModel): + name: str = Field(..., min_length=1, max_length=255) + workflow_id: int + source_id: str # Sheet URL + + +class CampaignResponse(BaseModel): + id: int + name: str + workflow_id: int + workflow_name: str + state: str + source_type: str + source_id: str + total_rows: Optional[int] + processed_rows: int + failed_rows: int + created_at: datetime + started_at: Optional[datetime] + completed_at: Optional[datetime] + + +class CampaignsResponse(BaseModel): + campaigns: List[CampaignResponse] + + +class WorkflowRunResponse(BaseModel): + id: int + workflow_id: int + state: str + created_at: datetime + completed_at: Optional[datetime] + + +class CampaignProgressResponse(BaseModel): + campaign_id: int + state: str + total_rows: int + processed_rows: int + failed_calls: int + progress_percentage: float + source_sync: dict + rate_limit: int + started_at: Optional[datetime] + completed_at: Optional[datetime] + + +@router.post("/create") +async def create_campaign( + request: CreateCampaignRequest, + user: UserModel = Depends(get_user), +) -> CampaignResponse: + """Create a new campaign""" + # Verify workflow exists and belongs to organization + workflow_name = await db_client.get_workflow_name(request.workflow_id, user.id) + if not workflow_name: + raise HTTPException(status_code=404, detail="Workflow not found") + + campaign = await db_client.create_campaign( + name=request.name, + workflow_id=request.workflow_id, + source_type="google-sheet", + source_id=request.source_id, + user_id=user.id, + organization_id=user.selected_organization_id, + ) + + return CampaignResponse( + id=campaign.id, + name=campaign.name, + workflow_id=campaign.workflow_id, + workflow_name=workflow_name, + state=campaign.state, + source_type=campaign.source_type, + source_id=campaign.source_id, + total_rows=campaign.total_rows, + processed_rows=campaign.processed_rows, + failed_rows=campaign.failed_rows, + created_at=campaign.created_at, + started_at=campaign.started_at, + completed_at=campaign.completed_at, + ) + + +@router.get("/") +async def get_campaigns( + user: UserModel = Depends(get_user), +) -> CampaignsResponse: + """Get campaigns for user's organization""" + campaigns = await db_client.get_campaigns(user.selected_organization_id) + + # Get workflow names for all campaigns + workflow_ids = list(set(c.workflow_id for c in campaigns)) + workflows = await db_client.get_workflows_by_ids( + workflow_ids, user.selected_organization_id + ) + workflow_map = {w.id: w.name for w in workflows} + + campaign_responses = [ + CampaignResponse( + id=c.id, + name=c.name, + workflow_id=c.workflow_id, + workflow_name=workflow_map.get(c.workflow_id, "Unknown"), + state=c.state, + source_type=c.source_type, + source_id=c.source_id, + total_rows=c.total_rows, + processed_rows=c.processed_rows, + failed_rows=c.failed_rows, + created_at=c.created_at, + started_at=c.started_at, + completed_at=c.completed_at, + ) + for c in campaigns + ] + + return CampaignsResponse(campaigns=campaign_responses) + + +@router.get("/{campaign_id}") +async def get_campaign( + campaign_id: int, + user: UserModel = Depends(get_user), +) -> CampaignResponse: + """Get campaign details""" + campaign = await db_client.get_campaign(campaign_id, user.selected_organization_id) + if not campaign: + raise HTTPException(status_code=404, detail="Campaign not found") + + workflow_name = await db_client.get_workflow_name(campaign.workflow_id, user.id) + + return CampaignResponse( + id=campaign.id, + name=campaign.name, + workflow_id=campaign.workflow_id, + workflow_name=workflow_name or "Unknown", + state=campaign.state, + source_type=campaign.source_type, + source_id=campaign.source_id, + total_rows=campaign.total_rows, + processed_rows=campaign.processed_rows, + failed_rows=campaign.failed_rows, + created_at=campaign.created_at, + started_at=campaign.started_at, + completed_at=campaign.completed_at, + ) + + +@router.post("/{campaign_id}/start") +async def start_campaign( + campaign_id: int, + user: UserModel = Depends(get_user), +) -> CampaignResponse: + """Start campaign execution""" + # Check if organization has TWILIO_PHONE_NUMBERS configured + twilio_config = await db_client.get_configuration( + user.selected_organization_id, + OrganizationConfigurationKey.TWILIO_PHONE_NUMBERS.value, + ) + + if ( + not twilio_config + or not twilio_config.value + or not twilio_config.value.get("value") + ): + raise HTTPException( + status_code=401, + detail="Your organisation is not allowed to make phone call. Contact founders@dograh.com for further support.", + ) + + # Verify campaign exists and belongs to organization + campaign = await db_client.get_campaign(campaign_id, user.selected_organization_id) + if not campaign: + raise HTTPException(status_code=404, detail="Campaign not found") + + # Start the campaign using the runner service + try: + await campaign_runner_service.start_campaign(campaign_id) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + + # Get updated campaign + campaign = await db_client.get_campaign(campaign_id, user.selected_organization_id) + workflow_name = await db_client.get_workflow_name(campaign.workflow_id, user.id) + + return CampaignResponse( + id=campaign.id, + name=campaign.name, + workflow_id=campaign.workflow_id, + workflow_name=workflow_name or "Unknown", + state=campaign.state, + source_type=campaign.source_type, + source_id=campaign.source_id, + total_rows=campaign.total_rows, + processed_rows=campaign.processed_rows, + failed_rows=campaign.failed_rows, + created_at=campaign.created_at, + started_at=campaign.started_at, + completed_at=campaign.completed_at, + ) + + +@router.post("/{campaign_id}/pause") +async def pause_campaign( + campaign_id: int, + user: UserModel = Depends(get_user), +) -> CampaignResponse: + """Pause campaign execution""" + # Verify campaign exists and belongs to organization + campaign = await db_client.get_campaign(campaign_id, user.selected_organization_id) + if not campaign: + raise HTTPException(status_code=404, detail="Campaign not found") + + # Pause the campaign using the runner service + try: + await campaign_runner_service.pause_campaign(campaign_id) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + + # Get updated campaign + campaign = await db_client.get_campaign(campaign_id, user.selected_organization_id) + workflow_name = await db_client.get_workflow_name(campaign.workflow_id, user.id) + + return CampaignResponse( + id=campaign.id, + name=campaign.name, + workflow_id=campaign.workflow_id, + workflow_name=workflow_name or "Unknown", + state=campaign.state, + source_type=campaign.source_type, + source_id=campaign.source_id, + total_rows=campaign.total_rows, + processed_rows=campaign.processed_rows, + failed_rows=campaign.failed_rows, + created_at=campaign.created_at, + started_at=campaign.started_at, + completed_at=campaign.completed_at, + ) + + +@router.get("/{campaign_id}/runs") +async def get_campaign_runs( + campaign_id: int, + user: UserModel = Depends(get_user), +) -> List[WorkflowRunResponse]: + """Get campaign workflow runs""" + runs = await db_client.get_campaign_runs(campaign_id, user.selected_organization_id) + + return [ + WorkflowRunResponse( + id=run.id, + workflow_id=run.workflow_id, + state="completed" if run.is_completed else "running", + created_at=run.created_at, + completed_at=run.created_at if run.is_completed else None, + ) + for run in runs + ] + + +@router.post("/{campaign_id}/resume") +async def resume_campaign( + campaign_id: int, + user: UserModel = Depends(get_user), +) -> CampaignResponse: + """Resume a paused campaign""" + # Check if organization has TWILIO_PHONE_NUMBERS configured + twilio_config = await db_client.get_configuration( + user.selected_organization_id, + OrganizationConfigurationKey.TWILIO_PHONE_NUMBERS.value, + ) + + if ( + not twilio_config + or not twilio_config.value + or not twilio_config.value.get("value") + ): + raise HTTPException( + status_code=401, + detail="Your organisation is not allowed to make phone call. Contact founders@dograh.com for further support.", + ) + + # Verify campaign exists and belongs to organization + campaign = await db_client.get_campaign(campaign_id, user.selected_organization_id) + if not campaign: + raise HTTPException(status_code=404, detail="Campaign not found") + + # Resume the campaign using the runner service + try: + await campaign_runner_service.resume_campaign(campaign_id) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + + # Get updated campaign + campaign = await db_client.get_campaign(campaign_id, user.selected_organization_id) + workflow_name = await db_client.get_workflow_name(campaign.workflow_id, user.id) + + return CampaignResponse( + id=campaign.id, + name=campaign.name, + workflow_id=campaign.workflow_id, + workflow_name=workflow_name or "Unknown", + state=campaign.state, + source_type=campaign.source_type, + source_id=campaign.source_id, + total_rows=campaign.total_rows, + processed_rows=campaign.processed_rows, + failed_rows=campaign.failed_rows, + created_at=campaign.created_at, + started_at=campaign.started_at, + completed_at=campaign.completed_at, + ) + + +@router.get("/{campaign_id}/progress") +async def get_campaign_progress( + campaign_id: int, + user: UserModel = Depends(get_user), +) -> CampaignProgressResponse: + """Get current campaign progress and statistics""" + # Verify campaign exists and belongs to organization + campaign = await db_client.get_campaign(campaign_id, user.selected_organization_id) + if not campaign: + raise HTTPException(status_code=404, detail="Campaign not found") + + # Get progress from runner service + try: + progress = await campaign_runner_service.get_campaign_status(campaign_id) + return CampaignProgressResponse(**progress) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) diff --git a/api/routes/integration.py b/api/routes/integration.py new file mode 100644 index 0000000..71eb727 --- /dev/null +++ b/api/routes/integration.py @@ -0,0 +1,262 @@ +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, TypedDict + +from fastapi import APIRouter, Depends, HTTPException, Request +from loguru import logger +from pydantic import BaseModel + +from api.db import db_client +from api.db.models import UserModel +from api.services.auth.depends import get_user +from api.services.integrations.nango import nango_service + +router = APIRouter(prefix="/integration") + + +@dataclass +class IntegrationResponse: + id: int + integration_id: str + organisation_id: int + created_by: Optional[int] + provider: str + is_active: bool + created_at: str + action: str + provider_data: dict + + +class SessionResponse(TypedDict): + session_token: str + expires_at: str + + +class WebhookResponse(TypedDict): + status: str + message: str + + +class UpdateIntegrationRequest(BaseModel): + selected_files: List[Dict[str, Any]] + + +class AccessTokenResponse(BaseModel): + access_token: Optional[str] + refresh_token: Optional[str] + expires_at: Optional[str] + connection_id: str + + +def build_integration_response(integration) -> IntegrationResponse: + """Build a standardized integration response with provider-specific data.""" + provider_data = {} + + if integration.provider == "google-sheet": + # For Google Sheets, include selected_files + provider_data["selected_files"] = integration.connection_details.get( + "selected_files", [] + ) + elif integration.provider == "slack": + # For Slack, include channel information + channel = integration.connection_details.get("connection_config", {}).get( + "incoming_webhook.channel" + ) + if channel: + provider_data["channel"] = channel + + return IntegrationResponse( + id=integration.id, + integration_id=integration.integration_id, + organisation_id=integration.organisation_id, + created_by=integration.created_by, + provider=integration.provider, + is_active=integration.is_active, + created_at=integration.created_at.isoformat(), + action=integration.action, + provider_data=provider_data, + ) + + +@router.get("/") +async def get_integrations( + user: UserModel = Depends(get_user), +) -> list[IntegrationResponse]: + """ + Get all integrations for the user's selected organization. + + Returns: + List of integrations associated with the user's selected organization + """ + if not user.selected_organization_id: + raise HTTPException( + status_code=400, detail="No organization selected for the user" + ) + + integrations = await db_client.get_integrations_by_organization_id( + user.selected_organization_id + ) + + return [build_integration_response(integration) for integration in integrations] + + +@router.post("/session") +async def create_session( + user: UserModel = Depends(get_user), +) -> SessionResponse: + """ + Create a Nango session for the user's selected organization. + + Returns: + Session token and ID for the created session + """ + if not user.selected_organization_id: + raise HTTPException( + status_code=400, detail="No organization selected for the user" + ) + + try: + session_data = await nango_service.create_session( + user_id=str(user.id), organization_id=user.selected_organization_id + ) + + return { + "session_token": session_data["data"]["token"], + "expires_at": session_data["data"]["expires_at"], + } + except ValueError as e: + raise HTTPException(status_code=500, detail=str(e)) + except Exception as e: + raise HTTPException( + status_code=500, detail=f"Failed to create session: {str(e)}" + ) + + +@router.put("/{integration_id}") +async def update_integration( + integration_id: int, + request: UpdateIntegrationRequest, + user: UserModel = Depends(get_user), +) -> IntegrationResponse: + """ + Update an integration's selected files (for Google Sheets). + + Args: + integration_id: The ID of the integration to update + request: The update request containing selected files + user: The authenticated user + + Returns: + Updated integration details + """ + if not user.selected_organization_id: + raise HTTPException( + status_code=400, detail="No organization selected for the user" + ) + + # Get the integration first to verify ownership + integrations = await db_client.get_integrations_by_organization_id( + user.selected_organization_id + ) + + integration = next((i for i in integrations if i.id == integration_id), None) + if not integration: + raise HTTPException(status_code=404, detail="Integration not found") + + # Only allow updating selected_files for google-sheet provider + if integration.provider != "google-sheet": + raise HTTPException( + status_code=400, + detail="This endpoint only supports updating Google Sheet integrations", + ) + + # Update the connection_details with the new selected_files + updated_connection_details = integration.connection_details.copy() + updated_connection_details["selected_files"] = request.selected_files + + # Update the integration + updated_integration = await db_client.update_integration_connection_details( + integration_id=integration_id, connection_details=updated_connection_details + ) + + if not updated_integration: + raise HTTPException(status_code=500, detail="Failed to update integration") + + return build_integration_response(updated_integration) + + +@router.get("/{integration_id}/access-token") +async def get_integration_access_token( + integration_id: int, + user: UserModel = Depends(get_user), +) -> AccessTokenResponse: + """ + Get the latest access token for an integration from Nango. + + Args: + integration_id: The ID of the integration + user: The authenticated user + + Returns: + Dict containing access token and expiration info + """ + if not user.selected_organization_id: + raise HTTPException( + status_code=400, detail="No organization selected for the user" + ) + + # Get the integration to verify ownership and get connection details + integrations = await db_client.get_integrations_by_organization_id( + user.selected_organization_id + ) + + integration = next((i for i in integrations if i.id == integration_id), None) + if not integration: + raise HTTPException(status_code=404, detail="Integration not found") + + try: + # Fetch the latest access token from Nango + token_data = await nango_service.get_access_token( + connection_id=integration.integration_id, + provider_config_key=integration.provider, + ) + + # Extract relevant fields + return AccessTokenResponse( + access_token=token_data.get("credentials", {}).get("access_token"), + refresh_token=token_data.get("credentials", {}).get("refresh_token"), + expires_at=token_data.get("credentials", {}).get("expires_at"), + connection_id=integration.integration_id, + ) + + except Exception as e: + logger.error(f"Failed to get access token: {str(e)}") + raise HTTPException( + status_code=500, detail=f"Failed to fetch access token: {str(e)}" + ) + + +@router.post("/webhook", include_in_schema=False) +async def handle_nango_webhook( + request: Request, +) -> WebhookResponse: + """ + Handle Nango integration webhook requests. + + Processes webhook events from Nango when integrations are created/updated + and stores the integration details in the database. + + Args: + request: The raw FastAPI request object + + Returns: + WebhookResponse with status and message + """ + raw_body = await request.body() + + # Get signature from headers (you may need to adjust the header name) + signature = request.headers.get("X-Nango-Signature") + + # Use the nango service to process the webhook + result = await nango_service.process_webhook(raw_body, signature) + + return result diff --git a/api/routes/looptalk.py b/api/routes/looptalk.py new file mode 100644 index 0000000..c8073eb --- /dev/null +++ b/api/routes/looptalk.py @@ -0,0 +1,316 @@ +from datetime import datetime +from typing import Any, Dict, List, Optional + +from fastapi import ( + APIRouter, + BackgroundTasks, + Depends, + HTTPException, + WebSocket, +) +from pydantic import BaseModel, Field + +from api.db import db_client +from api.db.models import UserModel +from api.services.auth.depends import get_user +from api.services.looptalk.orchestrator import LoopTalkTestOrchestrator + +router = APIRouter(prefix="/looptalk") + + +# Request/Response Models +class CreateTestSessionRequest(BaseModel): + name: str + actor_workflow_id: int + adversary_workflow_id: int + config: Dict[str, Any] = Field(default_factory=dict) + + +class StartTestSessionRequest(BaseModel): + test_session_id: int + + +class CreateLoadTestRequest(BaseModel): + name_prefix: str + actor_workflow_id: int + adversary_workflow_id: int + test_count: int = Field(ge=1, le=10) + config: Dict[str, Any] = Field(default_factory=dict) + + +class TestSessionResponse(BaseModel): + id: int + name: str + status: str + actor_workflow_id: int + adversary_workflow_id: int + load_test_group_id: Optional[str] + test_index: Optional[int] + config: Dict[str, Any] + results: Optional[Dict[str, Any]] + error: Optional[str] + created_at: datetime + started_at: Optional[datetime] + completed_at: Optional[datetime] + + +class ConversationResponse(BaseModel): + id: int + test_session_id: int + duration_seconds: Optional[int] + actor_recording_url: Optional[str] + adversary_recording_url: Optional[str] + combined_recording_url: Optional[str] + transcript: Optional[Dict[str, Any]] + metrics: Optional[Dict[str, Any]] + created_at: datetime + ended_at: Optional[datetime] + + +# Note: Turn tracking is handled by Langfuse, not exposed via API + + +class LoadTestStatsResponse(BaseModel): + total: int + pending: int + running: int + completed: int + failed: int + sessions: List[Dict[str, Any]] + + +# Singleton orchestrator instance +_orchestrator: Optional[LoopTalkTestOrchestrator] = None + + +def get_orchestrator() -> LoopTalkTestOrchestrator: + """Get or create the LoopTalk orchestrator instance.""" + global _orchestrator + if _orchestrator is None: + _orchestrator = LoopTalkTestOrchestrator(db_client=db_client) + return _orchestrator + + +@router.post("/test-sessions", response_model=TestSessionResponse) +async def create_test_session( + request: CreateTestSessionRequest, user: UserModel = Depends(get_user) +): + """Create a new LoopTalk test session.""" + + # Verify user has access to both workflows + actor_workflow = await db_client.get_workflow(request.actor_workflow_id, user.id) + if not actor_workflow: + raise HTTPException(status_code=404, detail="Actor workflow not found") + + adversary_workflow = await db_client.get_workflow( + request.adversary_workflow_id, user.id + ) + if not adversary_workflow: + raise HTTPException(status_code=404, detail="Adversary workflow not found") + + # Create test session + test_session = await db_client.create_test_session( + organization_id=user.selected_organization_id, + name=request.name, + actor_workflow_id=request.actor_workflow_id, + adversary_workflow_id=request.adversary_workflow_id, + config=request.config, + ) + + return test_session + + +@router.get("/test-sessions", response_model=List[TestSessionResponse]) +async def list_test_sessions( + status: Optional[str] = None, + load_test_group_id: Optional[str] = None, + limit: int = 20, + offset: int = 0, + user: UserModel = Depends(get_user), +): + """List LoopTalk test sessions.""" + + test_sessions = await db_client.list_test_sessions( + organization_id=user.selected_organization_id, + status=status, + load_test_group_id=load_test_group_id, + limit=limit, + offset=offset, + ) + + return test_sessions + + +@router.get("/test-sessions/{test_session_id}", response_model=TestSessionResponse) +async def get_test_session(test_session_id: int, user: UserModel = Depends(get_user)): + """Get a specific test session.""" + + test_session = await db_client.get_test_session( + test_session_id=test_session_id, organization_id=user.selected_organization_id + ) + + if not test_session: + raise HTTPException(status_code=404, detail="Test session not found") + + return test_session + + +@router.post("/test-sessions/{test_session_id}/start") +async def start_test_session( + test_session_id: int, + background_tasks: BackgroundTasks, + user: UserModel = Depends(get_user), + orchestrator: LoopTalkTestOrchestrator = Depends(get_orchestrator), +): + """Start a LoopTalk test session.""" + + # Verify test session exists and user has access + test_session = await db_client.get_test_session( + test_session_id=test_session_id, organization_id=user.selected_organization_id + ) + + if not test_session: + raise HTTPException(status_code=404, detail="Test session not found") + + if test_session.status != "pending": + raise HTTPException( + status_code=400, + detail=f"Test session is {test_session.status}, not pending", + ) + + # Start test session in background + background_tasks.add_task( + orchestrator.start_test_session, + test_session_id=test_session_id, + organization_id=user.selected_organization_id, + ) + + return {"message": "Test session starting", "test_session_id": test_session_id} + + +@router.post("/test-sessions/{test_session_id}/stop") +async def stop_test_session( + test_session_id: int, + user: UserModel = Depends(get_user), + orchestrator: LoopTalkTestOrchestrator = Depends(get_orchestrator), +): + """Stop a running test session.""" + + # Verify test session exists and user has access + test_session = await db_client.get_test_session( + test_session_id=test_session_id, organization_id=user.selected_organization_id + ) + + if not test_session: + raise HTTPException(status_code=404, detail="Test session not found") + + if test_session.status != "running": + raise HTTPException( + status_code=400, + detail=f"Test session is {test_session.status}, not running", + ) + + # Stop test session + result = await orchestrator.stop_test_session(test_session_id=test_session_id) + + return result + + +@router.get("/test-sessions/{test_session_id}/conversation") +async def get_test_session_conversation( + test_session_id: int, user: UserModel = Depends(get_user) +): + """Get conversation details for a test session.""" + + # Verify test session exists and user has access + test_session = await db_client.get_test_session( + test_session_id=test_session_id, organization_id=user.selected_organization_id + ) + + if not test_session: + raise HTTPException(status_code=404, detail="Test session not found") + + # Get conversation + if test_session.conversations: + conversation = test_session.conversations[ + 0 + ] # For now, one conversation per session + + # Note: Turn details are available in Langfuse, not here + return { + "conversation": conversation, + "message": "Turn details are tracked in Langfuse", + } + + return {"conversation": None} + + +@router.post("/load-tests", response_model=Dict[str, Any]) +async def create_load_test( + request: CreateLoadTestRequest, + background_tasks: BackgroundTasks, + user: UserModel = Depends(get_user), + orchestrator: LoopTalkTestOrchestrator = Depends(get_orchestrator), +): + """Create and start a load test.""" + + # Verify user has access to both workflows + actor_workflow = await db_client.get_workflow(request.actor_workflow_id, user.id) + if not actor_workflow: + raise HTTPException(status_code=404, detail="Actor workflow not found") + + adversary_workflow = await db_client.get_workflow( + request.adversary_workflow_id, user.id + ) + if not adversary_workflow: + raise HTTPException(status_code=404, detail="Adversary workflow not found") + + # Start load test in background + result = await orchestrator.start_load_test( + organization_id=user.selected_organization_id, + name_prefix=request.name_prefix, + actor_workflow_id=request.actor_workflow_id, + adversary_workflow_id=request.adversary_workflow_id, + config=request.config, + test_count=request.test_count, + ) + + return result + + +@router.get( + "/load-tests/{load_test_group_id}/stats", response_model=LoadTestStatsResponse +) +async def get_load_test_stats( + load_test_group_id: str, user: UserModel = Depends(get_user) +): + """Get statistics for a load test group.""" + + stats = await db_client.get_load_test_group_stats( + load_test_group_id=load_test_group_id, + organization_id=user.selected_organization_id, + ) + + return stats + + +@router.get("/active-tests") +async def get_active_tests( + orchestrator: LoopTalkTestOrchestrator = Depends(get_orchestrator), + user: UserModel = Depends(get_user), +): + """Get information about currently active test sessions.""" + + return orchestrator.get_active_test_info() + + +@router.websocket("/test-sessions/{test_session_id}/audio-stream") +async def audio_stream_websocket( + websocket: WebSocket, + test_session_id: int, + role: str = "mixed", # "actor", "adversary", or "mixed" + token: Optional[str] = None, +): + """WebSocket endpoint for real-time audio streaming from LoopTalk test sessions.""" + # TODO: to be implemented + pass diff --git a/api/routes/main.py b/api/routes/main.py new file mode 100644 index 0000000..3a04e2c --- /dev/null +++ b/api/routes/main.py @@ -0,0 +1,39 @@ +from fastapi import APIRouter +from loguru import logger + +from api.routes.campaign import router as campaign_router +from api.routes.integration import router as integration_router +from api.routes.looptalk import router as looptalk_router +from api.routes.organization_usage import router as organization_usage_router +from api.routes.reports import router as reports_router +from api.routes.rtc_offer import router as rtc_offer_router +from api.routes.s3_signed_url import router as s3_router +from api.routes.service_keys import router as service_keys_router +from api.routes.superuser import router as superuser_router +from api.routes.twilio import router as twilio_router +from api.routes.user import router as user_router +from api.routes.workflow import router as workflow_router + +router = APIRouter( + tags=["main"], + responses={404: {"description": "Not found"}}, +) + +router.include_router(twilio_router) +router.include_router(rtc_offer_router) +router.include_router(superuser_router) +router.include_router(workflow_router) +router.include_router(user_router) +router.include_router(campaign_router) +router.include_router(integration_router) +router.include_router(s3_router) +router.include_router(service_keys_router) +router.include_router(looptalk_router) +router.include_router(organization_usage_router) +router.include_router(reports_router) + + +@router.get("/health") +async def health(): + logger.debug("Health endpoint called") + return {"message": "OK"} diff --git a/api/routes/organization_usage.py b/api/routes/organization_usage.py new file mode 100644 index 0000000..ca1ccee --- /dev/null +++ b/api/routes/organization_usage.py @@ -0,0 +1,180 @@ +import json +from datetime import datetime, timedelta +from typing import Any, Dict, List, Optional + +from fastapi import APIRouter, Depends, HTTPException, Query +from pydantic import BaseModel + +from api.db import db_client +from api.db.models import UserModel +from api.services.auth.depends import get_user + +router = APIRouter(prefix="/organizations") + + +class CurrentUsageResponse(BaseModel): + period_start: str + period_end: str + used_dograh_tokens: float + quota_dograh_tokens: int + percentage_used: float + next_refresh_date: str + quota_enabled: bool + total_duration_seconds: int + # New USD fields + used_amount_usd: Optional[float] = None + quota_amount_usd: Optional[float] = None + currency: Optional[str] = None + price_per_second_usd: Optional[float] = None + + +class WorkflowRunUsageResponse(BaseModel): + id: int + workflow_id: int + workflow_name: Optional[str] + name: str + created_at: str + dograh_token_usage: float + call_duration_seconds: int + recording_url: Optional[str] = None + transcript_url: Optional[str] = None + phone_number: Optional[str] = None + disposition: Optional[str] = None + initial_context: Optional[Dict[str, Any]] = None + gathered_context: Optional[Dict[str, Any]] = None + # New USD field + charge_usd: Optional[float] = None + + +class UsageHistoryResponse(BaseModel): + runs: List[WorkflowRunUsageResponse] + total_dograh_tokens: float + total_duration_seconds: int + total_count: int + page: int + limit: int + total_pages: int + + +class DailyUsageItem(BaseModel): + date: str + minutes: float + cost_usd: Optional[float] = None + dograh_tokens: float + call_count: int + + +class DailyUsageBreakdownResponse(BaseModel): + breakdown: List[DailyUsageItem] + total_minutes: float + total_cost_usd: Optional[float] = None + total_dograh_tokens: float + currency: Optional[str] = None + + +@router.get("/usage/current-period", response_model=CurrentUsageResponse) +async def get_current_period_usage(user: UserModel = Depends(get_user)): + """Get current billing period usage for the user's organization.""" + if not user.selected_organization_id: + raise HTTPException(status_code=400, detail="No organization selected") + + try: + usage = await db_client.get_current_usage(user.selected_organization_id) + return usage + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + + +@router.get("/usage/runs", response_model=UsageHistoryResponse) +async def get_usage_history( + start_date: Optional[str] = Query(None, description="ISO format date string"), + end_date: Optional[str] = Query(None, description="ISO format date string"), + page: int = Query(1, ge=1), + limit: int = Query(50, ge=1, le=100), + filters: Optional[str] = Query(None, description="JSON string of filters"), + user: UserModel = Depends(get_user), +): + """Get paginated workflow runs with usage for the organization.""" + if not user.selected_organization_id: + raise HTTPException(status_code=400, detail="No organization selected") + + # Parse dates if provided + start_dt = datetime.fromisoformat(start_date) if start_date else None + end_dt = datetime.fromisoformat(end_date) if end_date else None + + # Parse filters if provided + parsed_filters = None + if filters: + try: + parsed_filters = json.loads(filters) + except json.JSONDecodeError: + raise HTTPException(status_code=400, detail="Invalid filters format") + + try: + offset = (page - 1) * limit + ( + runs, + total_count, + total_tokens, + total_duration, + ) = await db_client.get_usage_history( + user.selected_organization_id, + start_date=start_dt, + end_date=end_dt, + limit=limit, + offset=offset, + filters=parsed_filters, + ) + + total_pages = (total_count + limit - 1) // limit + + return { + "runs": runs, + "total_dograh_tokens": total_tokens, + "total_duration_seconds": total_duration, + "total_count": total_count, + "page": page, + "limit": limit, + "total_pages": total_pages, + } + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + + +@router.get("/usage/daily-breakdown", response_model=DailyUsageBreakdownResponse) +async def get_daily_usage_breakdown( + days: int = Query(7, ge=1, le=30, description="Number of days to include"), + user: UserModel = Depends(get_user), +): + """Get daily usage breakdown for the last N days. Only available for organizations with pricing.""" + if not user.selected_organization_id: + raise HTTPException(status_code=400, detail="No organization selected") + + try: + # Get organization to check if it has pricing + org = await db_client.get_organization_by_id(user.selected_organization_id) + if not org or org.price_per_second_usd is None: + raise HTTPException( + status_code=400, + detail="Daily breakdown is only available for organizations with pricing configured", + ) + + # Calculate date range + end_date = datetime.now() + start_date = end_date - timedelta(days=days - 1) + start_date = start_date.replace(hour=0, minute=0, second=0, microsecond=0) + + # Get daily breakdown + breakdown = await db_client.get_daily_usage_breakdown( + user.selected_organization_id, + start_date, + end_date, + org.price_per_second_usd, + user_id=user.id, + ) + + return breakdown + except HTTPException: + raise + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) diff --git a/api/routes/reports.py b/api/routes/reports.py new file mode 100644 index 0000000..0272e90 --- /dev/null +++ b/api/routes/reports.py @@ -0,0 +1,132 @@ +from datetime import datetime +from typing import Any, Dict, List, Optional + +from fastapi import APIRouter, Depends, HTTPException, Query +from pydantic import BaseModel + +from api.db.models import UserModel +from api.services.auth.depends import get_user +from api.services.reports import DailyReportService + +router = APIRouter(prefix="/organizations/reports") + + +class DailyReportResponse(BaseModel): + date: str + timezone: str + workflow_id: Optional[int] + metrics: Dict[str, int] + disposition_distribution: List[Dict[str, Any]] + call_duration_distribution: List[Dict[str, Any]] + + +class WorkflowOption(BaseModel): + id: int + name: str + + +class WorkflowRunDetail(BaseModel): + phone_number: str + disposition: str + duration_seconds: float + workflow_id: int + run_id: int + workflow_name: str + created_at: str + + +@router.get("/daily", response_model=DailyReportResponse) +async def get_daily_report( + date: str = Query(..., description="Date in YYYY-MM-DD format"), + timezone: str = Query(..., description="IANA timezone (e.g., 'America/New_York')"), + workflow_id: Optional[int] = Query( + None, description="Optional workflow ID to filter by" + ), + user: UserModel = Depends(get_user), +) -> DailyReportResponse: + """ + Get daily report for the specified date and timezone. + If workflow_id is provided, filters results to that specific workflow. + If workflow_id is None, includes all workflows for the organization. + """ + if not user.selected_organization_id: + raise HTTPException(status_code=400, detail="No organization selected") + + # Validate date format + try: + datetime.strptime(date, "%Y-%m-%d") + except ValueError: + raise HTTPException( + status_code=400, detail="Invalid date format. Use YYYY-MM-DD" + ) + + report_service = DailyReportService() + + try: + report = await report_service.get_daily_report( + organization_id=user.selected_organization_id, + date=date, + timezone=timezone, + workflow_id=workflow_id, + ) + return DailyReportResponse(**report) + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + + +@router.get("/workflows", response_model=List[WorkflowOption]) +async def get_workflow_options( + user: UserModel = Depends(get_user), +) -> List[WorkflowOption]: + """ + Get all workflows for the user's organization. + Used to populate the workflow selector dropdown in the reports page. + """ + if not user.selected_organization_id: + raise HTTPException(status_code=400, detail="No organization selected") + + report_service = DailyReportService() + + workflows = await report_service.get_workflows_for_organization( + organization_id=user.selected_organization_id + ) + + return [WorkflowOption(**w) for w in workflows] + + +@router.get("/daily/runs", response_model=List[WorkflowRunDetail]) +async def get_daily_runs_detail( + date: str = Query(..., description="Date in YYYY-MM-DD format"), + timezone: str = Query(..., description="IANA timezone (e.g., 'America/New_York')"), + workflow_id: Optional[int] = Query( + None, description="Optional workflow ID to filter by" + ), + user: UserModel = Depends(get_user), +) -> List[WorkflowRunDetail]: + """ + Get detailed workflow runs for the specified date. + Used for CSV export functionality. + """ + if not user.selected_organization_id: + raise HTTPException(status_code=400, detail="No organization selected") + + # Validate date format + try: + datetime.strptime(date, "%Y-%m-%d") + except ValueError: + raise HTTPException( + status_code=400, detail="Invalid date format. Use YYYY-MM-DD" + ) + + report_service = DailyReportService() + + try: + runs = await report_service.get_daily_runs_detail( + organization_id=user.selected_organization_id, + date=date, + timezone=timezone, + workflow_id=workflow_id, + ) + return [WorkflowRunDetail(**run) for run in runs] + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) diff --git a/api/routes/rtc_offer.py b/api/routes/rtc_offer.py new file mode 100644 index 0000000..a8e7973 --- /dev/null +++ b/api/routes/rtc_offer.py @@ -0,0 +1,77 @@ +from typing import Dict + +from fastapi import APIRouter, BackgroundTasks, Depends +from loguru import logger +from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection +from pipecat.utils.context import set_current_run_id +from pydantic import BaseModel + +from api.db.models import UserModel +from api.services.auth.depends import get_user +from api.services.pipecat.run_pipeline import run_pipeline_smallwebrtc + +router = APIRouter(prefix="/pipecat") + +pcs_map: Dict[str, SmallWebRTCConnection] = {} +ice_servers = ["stun:stun.l.google.com:19302"] + + +class RTCOfferRequest(BaseModel): + pc_id: str | None + sdp: str + type: str + workflow_id: int + workflow_run_id: int + restart_pc: bool = False + call_context_vars: dict | None = None + + +@router.post("/rtc-offer") +async def offer( + request: RTCOfferRequest, + background_tasks: BackgroundTasks, + user: UserModel = Depends(get_user), +): + pc_id = request.pc_id + + if pc_id and pc_id in pcs_map: + # Ensure run_id context is available for logs even when reusing an existing PC. + set_current_run_id(request.workflow_run_id) + + pipecat_connection = pcs_map[pc_id] + logger.info(f"Reusing existing connection for pc_id: {pc_id}") + await pipecat_connection.renegotiate( + sdp=request.sdp, + type=request.type, + restart_pc=request.restart_pc, + ) + else: + # Set the run_id *before* creating the SmallWebRTCConnection so that all + # async tasks and event-handler coroutines spawned inside the + # constructor inherit the correct context variable value. Otherwise the + # default ("NA") leaks into the log output produced by those tasks. + set_current_run_id(request.workflow_run_id) + + pipecat_connection = SmallWebRTCConnection(ice_servers) + await pipecat_connection.initialize(sdp=request.sdp, type=request.type) + + @pipecat_connection.event_handler("closed") + async def handle_disconnected(webrtc_connection: SmallWebRTCConnection): + logger.info( + f"In pipecat connection closed handler. Popping peer connection pc_id: {webrtc_connection.pc_id} from pcs_map" + ) + pcs_map.pop(webrtc_connection.pc_id, None) + + background_tasks.add_task( + run_pipeline_smallwebrtc, + pipecat_connection, + request.workflow_id, + request.workflow_run_id, + user.id, + request.call_context_vars or {}, + ) + + answer = pipecat_connection.get_answer() + pcs_map[answer["pc_id"]] = pipecat_connection + + return answer diff --git a/api/routes/s3_signed_url.py b/api/routes/s3_signed_url.py new file mode 100644 index 0000000..e0d1d12 --- /dev/null +++ b/api/routes/s3_signed_url.py @@ -0,0 +1,219 @@ +from typing import Annotated, Any, Dict, Optional, TypedDict + +from botocore.exceptions import ClientError +from fastapi import APIRouter, Depends, HTTPException, Query +from loguru import logger + +from api.db import db_client +from api.enums import StorageBackend +from api.services.auth.depends import get_user +from api.services.storage import get_storage_for_backend, storage_fs + + +class S3SignedUrlResponse(TypedDict): + url: str + expires_in: int + + +class FileMetadataResponse(TypedDict): + key: str + metadata: Optional[Dict[str, Any]] + + +router = APIRouter(prefix="/s3", tags=["s3"]) + + +async def _validate_and_extract_workflow_run_id( + key: str, allow_special_paths: bool = False +) -> Optional[int]: + """Validate the S3 key format and extract workflow_run_id if present. + + Args: + key: S3 object key + allow_special_paths: If True, allows looptalk/voicemail paths + + Returns: + workflow_run_id if found, None for special paths (when allowed) + + Raises: + HTTPException: If key format is invalid + """ + if key.startswith("transcripts/") and key.endswith(".txt"): + run_id_str = key[len("transcripts/") : -4] # strip prefix & suffix + elif key.startswith("recordings/") and key.endswith(".wav"): + run_id_str = key[len("recordings/") : -4] + elif allow_special_paths and ( + key.startswith("looptalk/") or key.startswith("voicemail_detections/") + ): + # Allow looptalk and voicemail paths for debugging (only if explicitly allowed) + return None # Skip validation for these paths + else: + raise HTTPException(status_code=400, detail="Invalid key format") + + if not run_id_str.isdigit(): + raise HTTPException(status_code=400, detail="Invalid workflow_run_id in key") + + return int(run_id_str) + + +async def _authorize_and_get_workflow_run( + run_id: Optional[int], user, require_workflow_run: bool = True +) -> Optional[Any]: + """Authorize access to workflow run and retrieve it. + + Args: + run_id: Workflow run ID (can be None for special paths) + user: Current user from auth + require_workflow_run: If True, raises exception when run not found + + Returns: + WorkflowRunModel or None + + Raises: + HTTPException: If access is denied + """ + if run_id is None: + return None + + workflow_run = None + if not user.is_superuser: + # Regular users: Use organization_id to check access (security constraint) + workflow_run = await db_client.get_workflow_run( + run_id, organization_id=user.selected_organization_id + ) + if not workflow_run and require_workflow_run: + raise HTTPException( + status_code=403, detail="Access denied for this workflow run" + ) + else: + # Superusers: Use get_workflow_run_by_id (no user/org constraint needed) + workflow_run = await db_client.get_workflow_run_by_id(run_id) + + return workflow_run + + +@router.get( + "/signed-url", + response_model=S3SignedUrlResponse, + summary="Generate a signed S3 URL", +) +async def get_signed_url( + key: Annotated[str, Query(description="S3 object key")], + expires_in: int = 3600, + inline: bool = False, + user=Depends(get_user), +): + """Return a short-lived signed URL for a transcript or recording file stored on S3. + + Access Control: + * Superusers can request any key. + * Regular users can only request resources belonging to **their** workflow runs. + """ + + # Validate key and extract workflow_run_id (don't allow special paths for signed URLs) + run_id = await _validate_and_extract_workflow_run_id(key, allow_special_paths=False) + if run_id is None: + raise HTTPException(status_code=400, detail="Invalid key format") + + # Authorize and get workflow run + workflow_run = await _authorize_and_get_workflow_run(run_id, user) + + # ------------------------------------------------------------------ + # 3. Generate the signed URL using the correct storage backend + # ------------------------------------------------------------------ + try: + # Use the storage backend recorded when the file was uploaded + if ( + workflow_run + and hasattr(workflow_run, "storage_backend") + and workflow_run.storage_backend + ): + backend = workflow_run.storage_backend + storage = get_storage_for_backend(backend) + logger.info( + f"DOWNLOAD: Using stored {backend} (value: {backend}) for signed URL generation - workflow_run_id: {run_id}, key: {key}" + ) + else: + # Fallback to current storage for legacy records without storage_backend + storage = storage_fs + current_backend = StorageBackend.get_current_backend() + logger.warning( + f"DOWNLOAD: No storage_backend found for workflow run {run_id}, falling back to current {current_backend.name} - key: {key}" + ) + + url = await storage.aget_signed_url( + key, expiration=expires_in, force_inline=inline + ) + if not url: + raise HTTPException(status_code=500, detail="Failed to generate signed URL") + + # Log successful URL generation + backend_info = ( + f"stored {backend}" + if workflow_run + and hasattr(workflow_run, "storage_backend") + and workflow_run.storage_backend + else f"current {StorageBackend.get_current_backend().name}" + ) + logger.info( + f"Successfully generated signed URL using {backend_info} - expires in {expires_in}s" + ) + + return {"url": url, "expires_in": expires_in} + except ClientError as exc: + logger.error(f"Error generating signed URL: {exc}") + raise HTTPException(status_code=500, detail="Failed to generate signed URL") + + +@router.get( + "/file-metadata", + response_model=FileMetadataResponse, + summary="Get file metadata for debugging", +) +async def get_file_metadata( + key: Annotated[str, Query(description="S3 object key")], + user=Depends(get_user), +): + """Get file metadata including creation timestamp for debugging. + + Access Control: + * Superusers can request any key. + * Regular users can only request resources belonging to **their** workflow runs. + """ + + # Validate key and extract workflow_run_id (allow special paths for metadata) + run_id = await _validate_and_extract_workflow_run_id(key, allow_special_paths=True) + + # Authorize and get workflow run (for special paths, run_id might be None) + workflow_run = await _authorize_and_get_workflow_run( + run_id, user, require_workflow_run=False + ) + + # ------------------------------------------------------------------ + # 3. Get file metadata using the correct storage backend + # ------------------------------------------------------------------ + try: + # Use the storage backend recorded when the file was uploaded + if ( + workflow_run + and hasattr(workflow_run, "storage_backend") + and workflow_run.storage_backend + ): + backend = workflow_run.storage_backend + storage = get_storage_for_backend(backend) + logger.info( + f"METADATA: Using stored {backend} for metadata request - key: {key}" + ) + else: + # Fallback to current storage for legacy records or looptalk/voicemail files + storage = storage_fs + current_backend = StorageBackend.get_current_backend() + logger.warning( + f"METADATA: No storage_backend found, using current {current_backend.name} for metadata request - key: {key}" + ) + + metadata = await storage.aget_file_metadata(key) + return {"key": key, "metadata": metadata} + except Exception as exc: + logger.error(f"Error getting file metadata: {exc}") + raise HTTPException(status_code=500, detail="Failed to get file metadata") diff --git a/api/routes/service_keys.py b/api/routes/service_keys.py new file mode 100644 index 0000000..d58f11f --- /dev/null +++ b/api/routes/service_keys.py @@ -0,0 +1,141 @@ +from typing import List + +from fastapi import APIRouter, Depends, HTTPException +from loguru import logger + +from api.constants import DEPLOYMENT_MODE +from api.db.models import UserModel +from api.schemas.service_key import ( + CreateServiceKeyRequest, + CreateServiceKeyResponse, + ServiceKeyResponse, +) +from api.services.auth.depends import get_user +from api.services.mps_service_key_client import mps_service_key_client + +router = APIRouter() + + +@router.get("/user/service-keys", response_model=List[ServiceKeyResponse]) +async def get_service_keys( + include_archived: bool = False, + user: UserModel = Depends(get_user), +): + """Get all service keys for the user's organization.""" + try: + # For OSS mode, use provider_id as created_by + # For authenticated mode, use organization_id + if DEPLOYMENT_MODE == "oss": + service_keys = await mps_service_key_client.get_service_keys( + created_by=str(user.provider_id), + include_archived=include_archived, + ) + else: + if not user.selected_organization_id: + raise HTTPException(status_code=400, detail="No organization selected") + + service_keys = await mps_service_key_client.get_service_keys( + organization_id=user.selected_organization_id, + include_archived=include_archived, + ) + + return [ServiceKeyResponse.model_validate(key) for key in service_keys] + except Exception as e: + logger.error(f"Failed to get service keys: {e}") + raise HTTPException(status_code=500, detail="Failed to retrieve service keys") + + +@router.post("/user/service-keys", response_model=CreateServiceKeyResponse) +async def create_service_key( + request: CreateServiceKeyRequest, + user: UserModel = Depends(get_user), +): + """Create a new service key for the user's organization.""" + try: + # For OSS mode, don't pass organization_id + # For authenticated mode, pass organization_id + if DEPLOYMENT_MODE == "oss": + result = await mps_service_key_client.create_service_key( + name=request.name, + created_by=str(user.provider_id), + expires_in_days=request.expires_in_days or 90, + description=f"Service key: {request.name}", + ) + else: + if not user.selected_organization_id: + raise HTTPException(status_code=400, detail="No organization selected") + + result = await mps_service_key_client.create_service_key( + name=request.name, + organization_id=user.selected_organization_id, + created_by=str(user.provider_id), + expires_in_days=request.expires_in_days or 90, + description=f"Service key for organization {user.selected_organization_id}", + ) + + return CreateServiceKeyResponse.model_validate(result) + + except Exception as e: + logger.error(f"Failed to create service key: {e}") + raise HTTPException( + status_code=500, + detail=f"Failed to create service key: {str(e)}", + ) + + +@router.delete("/user/service-keys/{service_key_id}") +async def archive_service_key( + service_key_id: str, # Changed from int to str since MPS uses string IDs + user: UserModel = Depends(get_user), +): + """Archive a service key.""" + try: + # For OSS mode, use provider_id as created_by for validation + # For authenticated mode, use organization_id for validation + if DEPLOYMENT_MODE == "oss": + success = await mps_service_key_client.archive_service_key( + key_id=service_key_id, + created_by=str(user.provider_id), + ) + else: + if not user.selected_organization_id: + raise HTTPException(status_code=400, detail="No organization selected") + + success = await mps_service_key_client.archive_service_key( + key_id=service_key_id, + organization_id=user.selected_organization_id, + ) + + if not success: + raise HTTPException( + status_code=404, + detail="Service key not found, already archived, or access denied", + ) + + return {"message": "Service key archived successfully"} + + except Exception as e: + logger.error(f"Failed to archive service key: {e}") + raise HTTPException( + status_code=500, + detail=f"Failed to archive service key: {str(e)}", + ) + + +@router.put("/user/service-keys/{service_key_id}/reactivate") +async def reactivate_service_key( + service_key_id: str, # Changed from int to str since MPS uses string IDs + user: UserModel = Depends(get_user), # Kept for consistency but not used +): + """ + Reactivate an archived service key. + + Note: This endpoint is provided for API compatibility but service key + reactivation is not supported by MPS. Once archived, a service key + cannot be reactivated and a new key must be created instead. + """ + # MPS does not support reactivation of archived service keys + raise HTTPException( + status_code=501, # Not Implemented + detail="Service key reactivation is not supported. Once a service key is archived, it cannot be reactivated. Please create a new service key instead.", + ) diff --git a/api/routes/stasis_rtp.py b/api/routes/stasis_rtp.py new file mode 100644 index 0000000..c18682a --- /dev/null +++ b/api/routes/stasis_rtp.py @@ -0,0 +1,45 @@ +import random + +from loguru import logger +from pipecat.utils.context import set_current_run_id + +from api.db import db_client +from api.enums import WorkflowRunMode +from api.services.pipecat.run_pipeline import run_pipeline_ari_stasis +from api.services.telephony.stasis_rtp_connection import StasisRTPConnection + + +async def on_stasis_call(call: StasisRTPConnection, call_context_vars: dict): + workflow_id = call_context_vars.get("workflow_id") or call_context_vars.get( + "campaign_id" + ) + user_id = call_context_vars.get("user_id") + + assert workflow_id is not None + assert user_id is not None + + try: + workflow_id = int(workflow_id) + user_id = int(user_id) + except ValueError: + logger.error(f"Invalid workflow ID or user ID: {workflow_id} or {user_id}") + return + + workflow_run_name = f"WR-ARI-{random.randint(1000, 9999)}" + workflow_run = await db_client.create_workflow_run( + workflow_run_name, workflow_id, WorkflowRunMode.STASIS.value, user_id + ) + + set_current_run_id(workflow_run.id) + + # Store the workflow_run_id in the connection for later use + call.workflow_run_id = workflow_run.id + + # Connect channelID with Workflow run ID in logs + logger.info( + f"channelID: {call.caller_channel_id} run_id: {workflow_run.id} " + f"Received call for workflow ID {workflow_id}, user ID {user_id}" + ) + await run_pipeline_ari_stasis( + call, workflow_id, workflow_run.id, user_id, call_context_vars + ) diff --git a/api/routes/superuser.py b/api/routes/superuser.py new file mode 100644 index 0000000..78ca064 --- /dev/null +++ b/api/routes/superuser.py @@ -0,0 +1,185 @@ +import json +from datetime import datetime +from typing import List, Optional + +from fastapi import APIRouter, Depends, HTTPException, Query, status +from pydantic import BaseModel + +from api.db import db_client +from api.db.models import UserModel +from api.services.auth.depends import get_superuser +from api.services.auth.stack_auth import stackauth + +router = APIRouter(prefix="/superuser", tags=["superuser"]) + + +class ImpersonateRequest(BaseModel): + """Request payload for superadmin impersonation. + + Either ``provider_user_id`` **or** ``user_id`` must be supplied. If both are + provided, ``provider_user_id`` takes precedence. + """ + + provider_user_id: str | None = None + user_id: int | None = None + + +class ImpersonateResponse(BaseModel): + refresh_token: str + access_token: str + + +class SuperuserWorkflowRunResponse(BaseModel): + id: int + name: str + workflow_id: int + workflow_name: Optional[str] + user_id: Optional[int] + organization_id: Optional[int] + organization_name: Optional[str] + mode: str + is_completed: bool + recording_url: Optional[str] + transcript_url: Optional[str] + usage_info: Optional[dict] + cost_info: Optional[dict] + initial_context: Optional[dict] + gathered_context: Optional[dict] + admin_comment: Optional[str] + admin_comment_ts: Optional[datetime] + created_at: datetime + + +class SuperuserWorkflowRunsListResponse(BaseModel): + workflow_runs: List[SuperuserWorkflowRunResponse] + total_count: int + page: int + limit: int + total_pages: int + + +@router.post("/impersonate") +async def impersonate( + request: ImpersonateRequest, user: UserModel = Depends(get_superuser) +) -> ImpersonateResponse: + """Impersonate a user as a super-admin. + Internally, Stack Auth requires the **provider user ID** (a UUID-ish string) + to create an impersonation session. + """ + + provider_user_id: str | None = request.provider_user_id + + # ------------------------------------------------------------------ + # Fallback: resolve provider_user_id from internal ``user_id`` + # ------------------------------------------------------------------ + if provider_user_id is None: + if request.user_id is None: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="Either 'provider_user_id' or 'user_id' must be provided.", + ) + + db_user = await db_client.get_user_by_id(request.user_id) + + if db_user is None: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"User with ID {request.user_id} not found.", + ) + + provider_user_id = db_user.provider_id + + # ------------------------------------------------------------------ + # Call Stack Auth to create the impersonation session + # ------------------------------------------------------------------ + session = await stackauth.impersonate(provider_user_id) + + return ImpersonateResponse( + refresh_token=session["refresh_token"], + access_token=session["access_token"], + ) + + +@router.get("/workflow-runs") +async def get_workflow_runs( + page: int = Query(1, ge=1, description="Page number (starts from 1)"), + limit: int = Query(50, ge=1, le=100, description="Number of items per page"), + filters: Optional[str] = Query(None, description="JSON-encoded filter criteria"), + user: UserModel = Depends(get_superuser), +) -> SuperuserWorkflowRunsListResponse: + """ + Get paginated list of all workflow runs with organization information. + Requires superuser privileges. + + Filters should be provided as a JSON-encoded array of filter criteria. + Example: [{"field": "id", "type": "number", "value": {"value": 680}}] + """ + offset = (page - 1) * limit + + # Parse filters if provided + filter_criteria = None + if filters: + try: + filter_criteria = json.loads(filters) + except json.JSONDecodeError: + raise HTTPException(status_code=400, detail="Invalid filter format") + + workflow_runs, total_count = await db_client.get_workflow_runs_for_superadmin( + limit=limit, offset=offset, filters=filter_criteria + ) + + total_pages = (total_count + limit - 1) // limit # Ceiling division + + return SuperuserWorkflowRunsListResponse( + workflow_runs=[SuperuserWorkflowRunResponse(**run) for run in workflow_runs], + total_count=total_count, + page=page, + limit=limit, + total_pages=total_pages, + ) + + +# ------------------ Admin Comment ------------------ + + +class AdminCommentRequest(BaseModel): + admin_comment: str + + +class AdminCommentResponse(BaseModel): + success: bool + admin_comment: str + admin_comment_ts: datetime + + +# ------------------ Routes ------------------ + + +@router.post("/workflow-runs/{run_id}/comment", response_model=AdminCommentResponse) +async def set_admin_comment( + run_id: int, + request: AdminCommentRequest, + user: UserModel = Depends(get_superuser), +): + """Add or update an *admin-only* comment for a workflow run. + + The comment is stored inside the ``annotations`` JSON column under the + ``admin_comment`` key so that it does not interfere with any other + annotations recorded by the system. + """ + + await db_client.update_admin_comment( + run_id=run_id, admin_comment=request.admin_comment + ) + + # Fetch the updated run to get the timestamp from annotations + updated_run = await db_client.get_workflow_run_by_id(run_id) + admin_comment_ts = None + if updated_run and updated_run.annotations: + admin_comment_ts = updated_run.annotations.get("admin_comment_ts") + + return AdminCommentResponse( + success=True, + admin_comment=request.admin_comment, + admin_comment_ts=admin_comment_ts, + ) diff --git a/api/routes/twilio.py b/api/routes/twilio.py new file mode 100644 index 0000000..603fde0 --- /dev/null +++ b/api/routes/twilio.py @@ -0,0 +1,258 @@ +import json +import random +from datetime import UTC, datetime +from typing import Annotated, Optional + +from fastapi import APIRouter, Depends, Form, Header, HTTPException, Request, WebSocket +from loguru import logger +from pipecat.utils.context import set_current_run_id +from pydantic import BaseModel +from starlette.responses import HTMLResponse + +from api.db import db_client +from api.db.models import UserModel +from api.enums import OrganizationConfigurationKey, WorkflowRunMode +from api.services.auth.depends import get_user +from api.services.campaign.call_dispatcher import campaign_call_dispatcher +from api.services.campaign.campaign_event_publisher import ( + get_campaign_event_publisher, +) +from api.services.pipecat.run_pipeline import run_pipeline_twilio +from api.services.telephony.twilio import TwilioService + +router = APIRouter(prefix="/twilio") + + +class InitiateCallRequest(BaseModel): + workflow_id: int + workflow_run_id: int | None = None + + +class TwilioStatusCallbackRequest(BaseModel): + CallSid: str + CallStatus: str + From: Optional[str] = None + To: Optional[str] = None + Direction: Optional[str] = None + Duration: Optional[str] = None + CallDuration: Optional[str] = None + RecordingUrl: Optional[str] = None + RecordingSid: Optional[str] = None + Timestamp: Optional[str] = None + + +@router.post("/initiate-call") +async def initiate_call( + request: InitiateCallRequest, user: UserModel = Depends(get_user) +): + # Check if organization has TWILIO_PHONE_NUMBERS configured + twilio_config = await db_client.get_configuration( + user.selected_organization_id, + OrganizationConfigurationKey.TWILIO_PHONE_NUMBERS.value, + ) + + if ( + not twilio_config + or not twilio_config.value + or not twilio_config.value.get("value") + ): + raise HTTPException( + status_code=401, + detail="Your organisation is not allowed to make phone call. Contact founders@dograh.com for further support.", + ) + + user_configuration = await db_client.get_user_configurations(user.id) + + workflow_run_id = request.workflow_run_id + + if not workflow_run_id: + workflow_run_name = f"WR-TEL-{random.randint(1000, 9999)}" + workflow_run = await db_client.create_workflow_run( + workflow_run_name, + request.workflow_id, + WorkflowRunMode.TWILIO.value, + initial_context={ + "phone_number": user_configuration.test_phone_number, + }, + user_id=user.id, + ) + workflow_run_id = workflow_run.id + else: + workflow_run = await db_client.get_workflow_run(workflow_run_id, user.id) + if not workflow_run: + raise HTTPException(status_code=400, detail="Workflow run not found") + workflow_run_name = workflow_run.name + + if user_configuration.test_phone_number: + await TwilioService().initiate_call( + to_number=user_configuration.test_phone_number, + url_args={ + "workflow_id": request.workflow_id, + "user_id": user.id, + "workflow_run_id": workflow_run_id, + }, + workflow_run_id=workflow_run_id, + organization_id=user.selected_organization_id, + ) + return { + "message": f"Call initiated successfully with run name {workflow_run_name}" + } + else: + raise HTTPException(status_code=400, detail="Test phone number not set") + + +@router.post("/twiml", include_in_schema=False) +async def start_call(workflow_id: int, user_id: int, workflow_run_id: int): + twiml_content = await TwilioService().get_start_call_twiml( + workflow_id, user_id, workflow_run_id + ) + return HTMLResponse(content=twiml_content, media_type="application/xml") + + +@router.websocket("/ws/{workflow_id}/{user_id}/{workflow_run_id}") +async def websocket_endpoint( + websocket: WebSocket, workflow_id: int, user_id: int, workflow_run_id: int +): + await websocket.accept() + + try: + # "connected" (ignore) + msg = json.loads(await websocket.receive_text()) + if msg.get("event") != "connected": + raise RuntimeError("Expected connected message first") + + # "start" – this has everything we need + start_msg = await websocket.receive_text() + + # set the run context + set_current_run_id(workflow_run_id) + + logger.debug(f"Received start message: {start_msg}") + + start_msg = json.loads(start_msg) + if start_msg.get("event") != "start": + raise RuntimeError("Expected start message second") + + try: + stream_sid = start_msg["start"]["streamSid"] + call_sid = start_msg["start"]["callSid"] + except KeyError: + logger.error( + "Missing callSID and streamSID in start message. Closing connection." + ) + await websocket.close(code=4400, reason="Missing or bad start message") + return + + # Run your Pipecat bot + await run_pipeline_twilio( + websocket, stream_sid, call_sid, workflow_id, workflow_run_id, user_id + ) + except Exception as e: + logger.error(f"Error in Twilio WebSocket connection: {e}") + await websocket.close(1011, "Internal server error") + + +@router.post("/status-callback/{workflow_run_id}", include_in_schema=False) +async def status_callback( + request: Request, + workflow_run_id: int, + x_twilio_signature: Annotated[ + Optional[str], Header(alias="X-Twilio-Signature") + ] = None, + CallSid: str = Form(...), + CallStatus: str = Form(...), + From: Optional[str] = Form(None), + To: Optional[str] = Form(None), + Direction: Optional[str] = Form(None), + Duration: Optional[str] = Form(None), + CallDuration: Optional[str] = Form(None), + RecordingUrl: Optional[str] = Form(None), + RecordingSid: Optional[str] = Form(None), + Timestamp: Optional[str] = Form(None), +): + """Handle Twilio status callbacks for call lifecycle events.""" + try: + # TODO: Implement Twilio signature verification + + # Create callback data object + callback_data = { + "CallSid": CallSid, + "CallStatus": CallStatus, + "From": From, + "To": To, + "Direction": Direction, + "Duration": Duration, + "CallDuration": CallDuration, + "RecordingUrl": RecordingUrl, + "RecordingSid": RecordingSid, + "Timestamp": Timestamp, + } + + # Remove None values for cleaner logging + callback_data = {k: v for k, v in callback_data.items() if v is not None} + + logger.info( + f"Received Twilio status callback for workflow_run_id {workflow_run_id}: {CallStatus}" + ) + + # Get the current workflow run + workflow_run = await db_client.get_workflow_run_by_id(workflow_run_id) + if not workflow_run: + logger.error(f"Workflow run {workflow_run_id} not found for callback") + return {"status": "error", "message": "Workflow run not found"} + + callback_logs = workflow_run.logs.get("twilio_status_callbacks", []) + + # Add new callback log entry to logs + callback_log = { + "status": CallStatus, + "timestamp": datetime.now(UTC).isoformat(), + "data": callback_data, + } + callback_logs.append(callback_log) + + # Update the workflow run with the new logs + await db_client.update_workflow_run( + run_id=workflow_run_id, logs={"twilio_status_callbacks": callback_logs} + ) + + # Release concurrent slot when call ends (for any terminal status) + terminal_statuses = ["completed", "busy", "no-answer", "failed", "canceled"] + if CallStatus.lower() in terminal_statuses and workflow_run.campaign_id: + # Release the concurrent slot for this call + await campaign_call_dispatcher.release_call_slot(workflow_run_id) + + # Check if retry is needed for campaign calls + if ( + CallStatus.lower() in ["busy", "no-answer", "failed"] + and workflow_run.campaign_id + ): + # Lets retry for busy and no-answer + if CallStatus.lower() in ["busy", "no-answer"]: + publisher = await get_campaign_event_publisher() + await publisher.publish_retry_needed( + workflow_run_id=workflow_run_id, + reason=CallStatus.lower().replace( + "-", "_" + ), # Convert no-answer to no_answer + campaign_id=workflow_run.campaign_id, + queued_run_id=workflow_run.queued_run_id, + ) + + # Update workflow run with appropriate tags + call_tags = workflow_run.gathered_context.get("call_tags", []) + call_tags.extend(["not_connected", f"twilio_{CallStatus.lower()}"]) + + await db_client.update_workflow_run( + run_id=workflow_run_id, + is_completed=True, + gathered_context={ + "call_tags": call_tags, + }, + ) + + return {"status": "success", "message": "Callback processed"} + + except Exception as e: + logger.error(f"Error processing Twilio status callback: {e}") + return {"status": "error", "message": str(e)} diff --git a/api/routes/user.py b/api/routes/user.py new file mode 100644 index 0000000..388c75e --- /dev/null +++ b/api/routes/user.py @@ -0,0 +1,276 @@ +from datetime import datetime, timedelta +from typing import List, Optional, TypedDict, Union + +from fastapi import APIRouter, Depends, HTTPException, Query +from pydantic import BaseModel + +from api.db import db_client +from api.db.models import ( + UserModel, +) +from api.services.auth.depends import get_user +from api.services.configuration.check_validity import ( + APIKeyStatusResponse, + UserConfigurationValidator, +) +from api.services.configuration.defaults import DEFAULT_SERVICE_PROVIDERS +from api.services.configuration.masking import mask_user_config +from api.services.configuration.merge import merge_user_configurations +from api.services.configuration.registry import REGISTRY, ServiceType + +router = APIRouter(prefix="/user") + + +class AuthUserResponse(TypedDict): + id: int + is_superuser: bool + + +class DefaultConfigurationsResponse(TypedDict): + llm: dict[str, dict] + tts: dict[str, dict] + stt: dict[str, dict] + default_providers: dict[str, str] + + +@router.get("/configurations/defaults") +async def get_default_configurations() -> DefaultConfigurationsResponse: + configurations = { + "llm": { + provider: model_cls.model_json_schema() + for provider, model_cls in REGISTRY[ServiceType.LLM].items() + }, + "tts": { + provider: model_cls.model_json_schema() + for provider, model_cls in REGISTRY[ServiceType.TTS].items() + }, + "stt": { + provider: model_cls.model_json_schema() + for provider, model_cls in REGISTRY[ServiceType.STT].items() + }, + "default_providers": DEFAULT_SERVICE_PROVIDERS, + } + return configurations + + +@router.get("/auth/user") +async def get_auth_user( + user: UserModel = Depends(get_user), +) -> AuthUserResponse: + return { + "id": user.id, + "is_superuser": user.is_superuser, + } + + +class UserConfigurationRequestResponseSchema(BaseModel): + llm: dict[str, Union[str, float]] | None = None + tts: dict[str, Union[str, float]] | None = None + stt: dict[str, Union[str, float]] | None = None + test_phone_number: str | None = None + timezone: str | None = None + organization_pricing: dict[str, Union[float, str, bool]] | None = None + + +@router.get("/configurations/user") +async def get_user_configurations( + user: UserModel = Depends(get_user), +) -> UserConfigurationRequestResponseSchema: + user_configurations = await db_client.get_user_configurations(user.id) + masked_config = mask_user_config(user_configurations) + + # Add organization pricing info if available + if user.selected_organization_id: + org = await db_client.get_organization_by_id(user.selected_organization_id) + if org and org.price_per_second_usd is not None: + masked_config["organization_pricing"] = { + "price_per_second_usd": org.price_per_second_usd, + "currency": "USD", + "billing_enabled": True, + } + + return masked_config + + +@router.put("/configurations/user") +async def update_user_configurations( + request: UserConfigurationRequestResponseSchema, + user: UserModel = Depends(get_user), +) -> UserConfigurationRequestResponseSchema: + existing_config = await db_client.get_user_configurations(user.id) + + incoming_dict = request.model_dump(exclude_none=True) + + # Remove organization_pricing from incoming dict as it's read-only + incoming_dict.pop("organization_pricing", None) + + # Merge via helper + user_configurations = merge_user_configurations(existing_config, incoming_dict) + + try: + validator = UserConfigurationValidator() + await validator.validate(user_configurations) + except ValueError as e: + raise HTTPException(status_code=422, detail=e.args[0]) + + user_configurations = await db_client.update_user_configuration( + user.id, user_configurations + ) + + # Return masked version of updated config + masked_config = mask_user_config(user_configurations) + + # Add organization pricing info if available + if user.selected_organization_id: + org = await db_client.get_organization_by_id(user.selected_organization_id) + if org and org.price_per_second_usd is not None: + masked_config["organization_pricing"] = { + "price_per_second_usd": org.price_per_second_usd, + "currency": "USD", + "billing_enabled": True, + } + + return masked_config + + +@router.get("/configurations/user/validate") +async def validate_user_configurations( + validity_ttl_seconds: int = Query(default=60, ge=0, le=86400), + user: UserModel = Depends(get_user), +) -> APIKeyStatusResponse: + configurations = await db_client.get_user_configurations(user.id) + + if ( + configurations.last_validated_at + and configurations.last_validated_at + < datetime.now() - timedelta(seconds=validity_ttl_seconds) + ): + validator = UserConfigurationValidator() + try: + status = await validator.validate(configurations) + await db_client.update_user_configuration_last_validated_at(user.id) + return status + except ValueError as e: + raise HTTPException(status_code=422, detail=e.args[0]) + else: + return {"status": []} + + +# API Key Management Endpoints +class APIKeyResponse(BaseModel): + id: int + name: str + key_prefix: str + is_active: bool + created_at: datetime + last_used_at: Optional[datetime] = None + archived_at: Optional[datetime] = None + + +class CreateAPIKeyRequest(BaseModel): + name: str + + +class CreateAPIKeyResponse(BaseModel): + id: int + name: str + key_prefix: str + api_key: str # Only returned when creating a new key + created_at: datetime + + +@router.get("/api-keys") +async def get_api_keys( + include_archived: bool = Query(default=False), + user: UserModel = Depends(get_user), +) -> List[APIKeyResponse]: + """Get all API keys for the user's selected organization.""" + if not user.selected_organization_id: + raise HTTPException(status_code=400, detail="No organization selected") + + api_keys = await db_client.get_api_keys_by_organization( + user.selected_organization_id, include_archived=include_archived + ) + + return [ + APIKeyResponse( + id=key.id, + name=key.name, + key_prefix=key.key_prefix, + is_active=key.is_active, + created_at=key.created_at, + last_used_at=key.last_used_at, + archived_at=key.archived_at, + ) + for key in api_keys + ] + + +@router.post("/api-keys") +async def create_api_key( + request: CreateAPIKeyRequest, + user: UserModel = Depends(get_user), +) -> CreateAPIKeyResponse: + """Create a new API key for the user's selected organization.""" + if not user.selected_organization_id: + raise HTTPException(status_code=400, detail="No organization selected") + + api_key, raw_key = await db_client.create_api_key( + organization_id=user.selected_organization_id, + name=request.name, + created_by=user.id, + ) + + return CreateAPIKeyResponse( + id=api_key.id, + name=api_key.name, + key_prefix=api_key.key_prefix, + api_key=raw_key, + created_at=api_key.created_at, + ) + + +@router.delete("/api-keys/{api_key_id}") +async def archive_api_key( + api_key_id: int, + user: UserModel = Depends(get_user), +) -> dict: + """Archive an API key (soft delete).""" + if not user.selected_organization_id: + raise HTTPException(status_code=400, detail="No organization selected") + + # Verify the API key belongs to the user's organization + api_keys = await db_client.get_api_keys_by_organization( + user.selected_organization_id, include_archived=True + ) + if not any(key.id == api_key_id for key in api_keys): + raise HTTPException(status_code=404, detail="API key not found") + + success = await db_client.archive_api_key(api_key_id) + if not success: + raise HTTPException(status_code=500, detail="Failed to archive API key") + + return {"success": True, "message": "API key archived successfully"} + + +@router.put("/api-keys/{api_key_id}/reactivate") +async def reactivate_api_key( + api_key_id: int, + user: UserModel = Depends(get_user), +) -> dict: + """Reactivate an archived API key.""" + if not user.selected_organization_id: + raise HTTPException(status_code=400, detail="No organization selected") + + # Verify the API key belongs to the user's organization + api_keys = await db_client.get_api_keys_by_organization( + user.selected_organization_id, include_archived=True + ) + if not any(key.id == api_key_id for key in api_keys): + raise HTTPException(status_code=404, detail="API key not found") + + success = await db_client.reactivate_api_key(api_key_id) + if not success: + raise HTTPException(status_code=500, detail="Failed to reactivate API key") + + return {"success": True, "message": "API key reactivated successfully"} diff --git a/api/routes/workflow.py b/api/routes/workflow.py new file mode 100644 index 0000000..846ef20 --- /dev/null +++ b/api/routes/workflow.py @@ -0,0 +1,665 @@ +import json +from datetime import datetime +from typing import List, Literal, Optional + +from fastapi import APIRouter, Depends, HTTPException, Query +from httpx import HTTPStatusError +from loguru import logger +from pydantic import BaseModel, ValidationError + +from api.constants import DEPLOYMENT_MODE +from api.db import db_client +from api.db.models import UserModel +from api.db.workflow_template_client import WorkflowTemplateClient +from api.schemas.workflow import WorkflowRunResponseSchema +from api.services.auth.depends import get_user +from api.services.mps_service_key_client import mps_service_key_client +from api.services.workflow.dto import ReactFlowDTO +from api.services.workflow.errors import ItemKind, WorkflowError +from api.services.workflow.workflow import WorkflowGraph + +router = APIRouter(prefix="/workflow") + + +class ValidateWorkflowResponse(BaseModel): + is_valid: bool + errors: list[WorkflowError] + + +class WorkflowResponse(BaseModel): + id: int + name: str + status: str + created_at: datetime + workflow_definition: dict + current_definition_id: int | None + template_context_variables: dict | None = None + call_disposition_codes: dict | None = None + total_runs: int | None = None + workflow_configurations: dict | None = None + + +class WorkflowTemplateResponse(BaseModel): + id: int + template_name: str + template_description: str + template_json: dict + created_at: datetime + + +class CreateWorkflowRequest(BaseModel): + name: str + workflow_definition: dict + + +class DuplicateTemplateRequest(BaseModel): + template_id: int + workflow_name: str + + +class UpdateWorkflowRequest(BaseModel): + name: str + workflow_definition: dict | None = None + template_context_variables: dict | None = None + workflow_configurations: dict | None = None + + +class UpdateWorkflowStatusRequest(BaseModel): + status: str # "active" or "archived" + + +class CreateWorkflowRunRequest(BaseModel): + mode: str + name: str + + +class CreateWorkflowRunResponse(BaseModel): + id: int + workflow_id: int + name: str + mode: str + created_at: datetime + definition_id: int + initial_context: dict | None = None + + +class CreateWorkflowTemplateRequest(BaseModel): + call_type: Literal["INBOUND", "OUTBOUND"] + use_case: str + activity_description: str + + +@router.post("/{workflow_id}/validate") +async def validate_workflow( + workflow_id: int, + user: UserModel = Depends(get_user), +) -> ValidateWorkflowResponse: + """ + Validate all nodes in a workflow to ensure they have required fields. + + Args: + workflow_id: The ID of the workflow to validate + user: The authenticated user + + Returns: + Object indicating if workflow is valid and any invalid nodes/edges + """ + workflow = await db_client.get_workflow( + workflow_id, organization_id=user.selected_organization_id + ) + + if workflow is None: + raise HTTPException( + status_code=404, detail=f"Workflow with id {workflow_id} not found" + ) + + errors: list[WorkflowError] = [] + + # Get workflow definition from WorkflowDefinition table, fallback to workflow_definition field + workflow_definition = workflow.workflow_definition_with_fallback + + # ----------- DTO Validation ------------ + dto: Optional[ReactFlowDTO] = None + + try: + dto = ReactFlowDTO.model_validate(workflow_definition) + except ValidationError as exc: + errors.extend(_transform_schema_errors(exc, workflow_definition)) + + # ----------- Graph Validation if DTO is valid ------------ + try: + if dto: + WorkflowGraph(dto) + except ValueError as e: + errors.extend(e.args[0]) + + if errors: + raise HTTPException( + status_code=422, + detail=ValidateWorkflowResponse(is_valid=False, errors=errors).model_dump(), + ) + + return ValidateWorkflowResponse(is_valid=True, errors=[]) + + +def _transform_schema_errors( + exc: ValidationError, workflow_definition: dict +) -> list[WorkflowError]: + out: list[WorkflowError] = [] + + for err in exc.errors(): + loc = err["loc"] + idx = workflow_definition[loc[0]][loc[1]]["id"] + + kind: ItemKind = ItemKind.node if loc[0] == "nodes" else ItemKind.edge + + out.append( + WorkflowError( + kind=kind, + id=idx, + field=".".join(str(p) for p in err["loc"][2:]) or None, + message=err["msg"].capitalize(), + ) + ) + return out + + +@router.post("/create/definition") +async def create_workflow( + request: CreateWorkflowRequest, user: UserModel = Depends(get_user) +) -> WorkflowResponse: + """ + Create a new workflow from the client + + Args: + request: The create workflow request + user: The user to create the workflow for + """ + workflow = await db_client.create_workflow( + request.name, + request.workflow_definition, + user.id, + user.selected_organization_id, + ) + return { + "id": workflow.id, + "name": workflow.name, + "status": workflow.status, + "created_at": workflow.created_at, + "workflow_definition": workflow.workflow_definition_with_fallback, + "current_definition_id": workflow.current_definition_id, + "template_context_variables": workflow.template_context_variables, + "call_disposition_codes": workflow.call_disposition_codes, + "workflow_configurations": workflow.workflow_configurations, + } + + +@router.post("/create/template") +async def create_workflow_from_template( + request: CreateWorkflowTemplateRequest, + user: UserModel = Depends(get_user), +) -> WorkflowResponse: + """ + Create a new workflow from a natural language template request. + + This endpoint: + 1. Uses mps_service_key_client to call MPS workflow API + 2. Passes organization ID (authenticated mode) or created_by (OSS mode) + 3. Creates the workflow in the database + + Args: + request: The template creation request with call_type, use_case, and activity_description + user: The authenticated user + + Returns: + The created workflow + + Raises: + HTTPException: If MPS API call fails + """ + try: + # Call MPS API to generate workflow using the client + if DEPLOYMENT_MODE == "oss": + workflow_data = await mps_service_key_client.call_workflow_api( + call_type=request.call_type, + use_case=request.use_case, + activity_description=request.activity_description, + created_by=str(user.provider_id), + ) + else: + if not user.selected_organization_id: + raise HTTPException(status_code=400, detail="No organization selected") + + workflow_data = await mps_service_key_client.call_workflow_api( + call_type=request.call_type, + use_case=request.use_case, + activity_description=request.activity_description, + organization_id=user.selected_organization_id, + ) + + # Create the workflow in our database + workflow = await db_client.create_workflow( + name=workflow_data.get("name", f"{request.use_case} - {request.call_type}"), + workflow_definition=workflow_data.get("workflow_definition", {}), + user_id=user.id, + organization_id=user.selected_organization_id, + ) + + return { + "id": workflow.id, + "name": workflow.name, + "status": workflow.status, + "created_at": workflow.created_at, + "workflow_definition": workflow.workflow_definition_with_fallback, + "current_definition_id": workflow.current_definition_id, + "template_context_variables": workflow.template_context_variables, + "call_disposition_codes": workflow.call_disposition_codes, + "workflow_configurations": workflow.workflow_configurations, + } + + except HTTPStatusError as e: + logger.error(f"MPS API error: {e}") + raise HTTPException( + status_code=e.response.status_code if hasattr(e, "response") else 500, + detail=str(e), + ) + except Exception as e: + logger.error(f"Unexpected error creating workflow from template: {e}") + raise HTTPException( + status_code=500, + detail=f"An unexpected error occurred: {str(e)}", + ) + + +class WorkflowSummaryResponse(BaseModel): + id: int + name: str + + +@router.get("/fetch") +async def get_workflows( + user: UserModel = Depends(get_user), + status: Optional[str] = Query( + None, + description="Filter by status - can be single value (active/archived) or comma-separated (active,archived)", + ), +) -> List[WorkflowResponse]: + """Get all workflows for the authenticated user's organization""" + # Handle comma-separated status values + if status and "," in status: + # Split comma-separated values and fetch workflows for each status + status_list = [s.strip() for s in status.split(",")] + all_workflows = [] + for status_value in status_list: + workflows = await db_client.get_all_workflows( + organization_id=user.selected_organization_id, status=status_value + ) + all_workflows.extend(workflows) + workflows = all_workflows + else: + # Single status or no status filter + workflows = await db_client.get_all_workflows( + organization_id=user.selected_organization_id, status=status + ) + + # Get run counts for each workflow + workflow_responses = [] + for workflow in workflows: + run_count = await db_client.get_workflow_run_count(workflow.id) + workflow_responses.append( + { + "id": workflow.id, + "name": workflow.name, + "status": workflow.status, + "created_at": workflow.created_at, + "workflow_definition": workflow.workflow_definition_with_fallback, + "current_definition_id": workflow.current_definition_id, + "template_context_variables": workflow.template_context_variables, + "call_disposition_codes": workflow.call_disposition_codes, + "workflow_configurations": workflow.workflow_configurations, + "total_runs": run_count, + } + ) + + return workflow_responses + + +@router.get("/fetch/{workflow_id}") +async def get_workflow( + workflow_id: int, + user: UserModel = Depends(get_user), +) -> WorkflowResponse: + """Get a single workflow by ID""" + workflow = await db_client.get_workflow( + workflow_id, organization_id=user.selected_organization_id + ) + if workflow is None: + raise HTTPException( + status_code=404, detail=f"Workflow with id {workflow_id} not found" + ) + + return { + "id": workflow.id, + "name": workflow.name, + "status": workflow.status, + "created_at": workflow.created_at, + "workflow_definition": workflow.workflow_definition_with_fallback, + "current_definition_id": workflow.current_definition_id, + "template_context_variables": workflow.template_context_variables, + "call_disposition_codes": workflow.call_disposition_codes, + "workflow_configurations": workflow.workflow_configurations, + } + + +@router.get("/summary") +async def get_workflows_summary( + user: UserModel = Depends(get_user), +) -> List[WorkflowSummaryResponse]: + """Get minimal workflow information (id and name only) for all workflows""" + workflows = await db_client.get_all_workflows( + organization_id=user.selected_organization_id + ) + return [ + WorkflowSummaryResponse(id=workflow.id, name=workflow.name) + for workflow in workflows + ] + + +@router.put("/{workflow_id}/status") +async def update_workflow_status( + workflow_id: int, + request: UpdateWorkflowStatusRequest, + user: UserModel = Depends(get_user), +) -> WorkflowResponse: + """ + Update the status of a workflow (e.g., archive/unarchive). + + Args: + workflow_id: The ID of the workflow to update + request: The status update request + + Returns: + The updated workflow + """ + try: + workflow = await db_client.update_workflow_status( + workflow_id=workflow_id, + status=request.status, + organization_id=user.selected_organization_id, + ) + run_count = await db_client.get_workflow_run_count(workflow.id) + return { + "id": workflow.id, + "name": workflow.name, + "status": workflow.status, + "created_at": workflow.created_at, + "workflow_definition": workflow.workflow_definition_with_fallback, + "current_definition_id": workflow.current_definition_id, + "template_context_variables": workflow.template_context_variables, + "call_disposition_codes": workflow.call_disposition_codes, + "workflow_configurations": workflow.workflow_configurations, + "total_runs": run_count, + } + except ValueError as e: + raise HTTPException(status_code=404, detail=str(e)) + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + + +@router.put("/{workflow_id}") +async def update_workflow( + workflow_id: int, + request: UpdateWorkflowRequest, + user: UserModel = Depends(get_user), +) -> WorkflowResponse: + """ + Update an existing workflow. + + Args: + workflow_id: The ID of the workflow to update + request: The update request containing the new name and workflow definition + + Returns: + The updated workflow + + Raises: + HTTPException: If the workflow is not found or if there's a database error + """ + try: + workflow = await db_client.update_workflow( + workflow_id=workflow_id, + name=request.name, + workflow_definition=request.workflow_definition, + template_context_variables=request.template_context_variables, + workflow_configurations=request.workflow_configurations, + organization_id=user.selected_organization_id, + ) + return { + "id": workflow.id, + "name": workflow.name, + "status": workflow.status, + "created_at": workflow.created_at, + "workflow_definition": workflow.workflow_definition_with_fallback, + "current_definition_id": workflow.current_definition_id, + "template_context_variables": workflow.template_context_variables, + "call_disposition_codes": workflow.call_disposition_codes, + "workflow_configurations": workflow.workflow_configurations, + } + except ValueError as e: + raise HTTPException(status_code=404, detail=str(e)) + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + + +@router.post("/{workflow_id}/runs") +async def create_workflow_run( + workflow_id: int, + request: CreateWorkflowRunRequest, + user: UserModel = Depends(get_user), +) -> CreateWorkflowRunResponse: + """ + Create a new workflow run when the user decides to execute the workflow via chat or voice + + Args: + workflow_id: The ID of the workflow to run + request: The create workflow run request + user: The user to create the workflow run for + """ + run = await db_client.create_workflow_run( + request.name, workflow_id, request.mode, user.id + ) + return { + "id": run.id, + "workflow_id": run.workflow_id, + "name": run.name, + "mode": run.mode, + "created_at": run.created_at, + "definition_id": run.definition_id, + "initial_context": run.initial_context, + "gathered_context": run.gathered_context, + } + + +@router.get("/{workflow_id}/runs/{run_id}") +async def get_workflow_run( + workflow_id: int, run_id: int, user: UserModel = Depends(get_user) +) -> WorkflowRunResponseSchema: + run = await db_client.get_workflow_run( + run_id, organization_id=user.selected_organization_id + ) + if not run: + raise HTTPException(status_code=404, detail="Workflow run not found") + return { + "id": run.id, + "workflow_id": run.workflow_id, + "name": run.name, + "mode": run.mode, + "is_completed": run.is_completed, + "transcript_url": run.transcript_url, + "recording_url": run.recording_url, + "cost_info": { + "dograh_token_usage": ( + run.cost_info.get("dograh_token_usage") + if run.cost_info and "dograh_token_usage" in run.cost_info + else round(float(run.cost_info.get("total_cost_usd", 0)) * 100, 2) + if run.cost_info and "total_cost_usd" in run.cost_info + else 0 + ), + "call_duration_seconds": int( + round(run.cost_info.get("call_duration_seconds")) + ) + if run.cost_info + else None, + } + if run.cost_info + else None, + "created_at": run.created_at, + "definition_id": run.definition_id, + "initial_context": run.initial_context, + "gathered_context": run.gathered_context, + } + + +class WorkflowRunsResponse(BaseModel): + runs: List[WorkflowRunResponseSchema] + total_count: int + page: int + limit: int + total_pages: int + applied_filters: Optional[List[dict]] = None + + +@router.get("/{workflow_id}/runs") +async def get_workflow_runs( + workflow_id: int, + page: int = 1, + limit: int = 50, + filters: Optional[str] = Query(None, description="JSON-encoded filter criteria"), + user: UserModel = Depends(get_user), +) -> WorkflowRunsResponse: + """ + Get workflow runs with optional filtering. + + Filters should be provided as a JSON-encoded array of filter criteria. + Example: [{"attribute": "dateRange", "value": {"from": "2024-01-01", "to": "2024-01-31"}}] + """ + offset = (page - 1) * limit + + # Parse filters if provided + filter_criteria = [] + if filters: + try: + filter_criteria = json.loads(filters) + except json.JSONDecodeError: + raise HTTPException(status_code=400, detail="Invalid filter format") + + # Restrict allowed filter attributes for regular users + allowed_attributes = { + "dateRange", + "dispositionCode", + "duration", + "status", + "tokenUsage", + } + for filter_item in filter_criteria: + attribute = filter_item.get("attribute") + if attribute and attribute not in allowed_attributes: + raise HTTPException( + status_code=403, detail=f"Invalid attribute '{attribute}'" + ) + + # Apply filters if any + if filter_criteria: + runs, total_count = await db_client.get_workflow_runs_by_workflow_id( + workflow_id, + organization_id=user.selected_organization_id, + limit=limit, + offset=offset, + filters=filter_criteria, + ) + else: + # Use existing logic for unfiltered results + runs, total_count = await db_client.get_workflow_runs_by_workflow_id( + workflow_id, + organization_id=user.selected_organization_id, + limit=limit, + offset=offset, + ) + + total_pages = (total_count + limit - 1) // limit + + return WorkflowRunsResponse( + runs=runs, + total_count=total_count, + page=page, + limit=limit, + total_pages=total_pages, + applied_filters=filter_criteria if filter_criteria else None, + ) + + +@router.get("/templates") +async def get_workflow_templates() -> List[WorkflowTemplateResponse]: + """ + Get all available workflow templates. + + Returns: + List of workflow templates + """ + template_client = WorkflowTemplateClient() + templates = await template_client.get_all_workflow_templates() + + return [ + { + "id": template.id, + "template_name": template.template_name, + "template_description": template.template_description, + "template_json": template.template_json, + "created_at": template.created_at, + } + for template in templates + ] + + +@router.post("/templates/duplicate") +async def duplicate_workflow_template( + request: DuplicateTemplateRequest, user: UserModel = Depends(get_user) +) -> WorkflowResponse: + """ + Duplicate a workflow template to create a new workflow for the user. + + Args: + request: The duplicate template request + user: The authenticated user + + Returns: + The newly created workflow + """ + template_client = WorkflowTemplateClient() + template = await template_client.get_workflow_template(request.template_id) + + if not template: + raise HTTPException( + status_code=404, + detail=f"Workflow template with id {request.template_id} not found", + ) + + # Create a new workflow from the template + workflow = await db_client.create_workflow( + request.workflow_name, + template.template_json, + user.id, + user.selected_organization_id, + ) + + return { + "id": workflow.id, + "name": workflow.name, + "status": workflow.status, + "created_at": workflow.created_at, + "workflow_definition": workflow.workflow_definition_with_fallback, + "current_definition_id": workflow.current_definition_id, + "template_context_variables": workflow.template_context_variables, + "call_disposition_codes": workflow.call_disposition_codes, + "workflow_configurations": workflow.workflow_configurations, + } diff --git a/api/schemas/__init__.py b/api/schemas/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/schemas/service_key.py b/api/schemas/service_key.py new file mode 100644 index 0000000..1c96f99 --- /dev/null +++ b/api/schemas/service_key.py @@ -0,0 +1,37 @@ +from datetime import datetime +from typing import Optional + +from pydantic import BaseModel + + +class ServiceKeyBase(BaseModel): + name: str + + +class CreateServiceKeyRequest(ServiceKeyBase): + expires_in_days: Optional[int] = 90 + + +class ServiceKeyResponse(ServiceKeyBase): + id: int # Database stores as int + key_prefix: str + is_active: bool + created_at: datetime + last_used_at: Optional[datetime] = None + expires_at: Optional[datetime] = None + archived_at: Optional[datetime] = None + created_by: Optional[str] = None # provider_id from auth + + class Config: + from_attributes = True + + +class CreateServiceKeyResponse(BaseModel): + id: int # Database stores as int + name: str + service_key: str # Only returned on creation + key_prefix: str + expires_at: Optional[datetime] = None + + class Config: + from_attributes = True diff --git a/api/schemas/user_configuration.py b/api/schemas/user_configuration.py new file mode 100644 index 0000000..4a1fac4 --- /dev/null +++ b/api/schemas/user_configuration.py @@ -0,0 +1,18 @@ +from datetime import datetime + +from pydantic import BaseModel + +from api.services.configuration.registry import ( + LLMConfig, + STTConfig, + TTSConfig, +) + + +class UserConfiguration(BaseModel): + llm: LLMConfig | None = None + stt: STTConfig | None = None + tts: TTSConfig | None = None + test_phone_number: str | None = None + timezone: str | None = None + last_validated_at: datetime | None = None diff --git a/api/schemas/workflow.py b/api/schemas/workflow.py new file mode 100644 index 0000000..5ea1cec --- /dev/null +++ b/api/schemas/workflow.py @@ -0,0 +1,19 @@ +from datetime import datetime +from typing import Any, Dict + +from pydantic import BaseModel + + +class WorkflowRunResponseSchema(BaseModel): + id: int + workflow_id: int + name: str + mode: str + created_at: datetime + is_completed: bool + transcript_url: str | None + recording_url: str | None + cost_info: Dict[str, Any] | None + definition_id: int | None # This is for backward compatibility + initial_context: dict | None = None + gathered_context: dict | None = None diff --git a/api/services/auth/__init__.py b/api/services/auth/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/services/auth/depends.py b/api/services/auth/depends.py new file mode 100644 index 0000000..d9f4a4f --- /dev/null +++ b/api/services/auth/depends.py @@ -0,0 +1,330 @@ +from typing import Annotated, Optional + +import httpx +from fastapi import Header, HTTPException +from loguru import logger +from pydantic import ValidationError + +from api.constants import DEPLOYMENT_MODE, DOGRAH_MPS_SECRET_KEY, MPS_API_URL +from api.db import db_client +from api.db.models import UserModel +from api.schemas.user_configuration import UserConfiguration +from api.services.auth.stack_auth import stackauth +from api.services.configuration.registry import ( + DograhLLMModel, + DograhSTTModel, + DograhTTSModel, + DograhVoice, + ServiceProviders, +) + + +async def get_user( + authorization: Annotated[str | None, Header()] = None, +) -> UserModel: + # ------------------------------------------------------------------ + # Check if we're in OSS deployment mode + # ------------------------------------------------------------------ + if DEPLOYMENT_MODE == "oss": + return await _handle_oss_auth(authorization) + + # ------------------------------------------------------------------ + # 1. Validate and fetch the authenticated Stack user + # ------------------------------------------------------------------ + + stack_user = await stackauth.get_user(authorization) + if stack_user is None: + raise HTTPException(status_code=401, detail="Unauthorized") + + # ------------------------------------------------------------------ + # 2. Ensure the user has a team (Stack "selected_team_id") + # ------------------------------------------------------------------ + + selected_team_id: str | None = stack_user.get("selected_team_id") + if not selected_team_id and stack_user.get("selected_team"): + selected_team_id = stack_user["selected_team"].get("id") + + if not selected_team_id: + raise HTTPException(status_code=400, detail="No team selected") + + # ------------------------------------------------------------------ + # 3. Persist/Fetch the local User model + # ------------------------------------------------------------------ + + try: + user_model = await db_client.get_or_create_user_by_provider_id(stack_user["id"]) + except Exception as e: + raise HTTPException( + status_code=500, detail=f"Error while creating user from database {e}" + ) + + # ------------------------------------------------------------------ + # 4. Persist Organization (team) and mapping in local database + # ------------------------------------------------------------------ + + try: + ( + organization, + org_was_created, + ) = await db_client.get_or_create_organization_by_provider_id( + org_provider_id=selected_team_id, user_id=user_model.id + ) + + # Check if user's selected organization differs from the current organization + if user_model.selected_organization_id != organization.id: + await db_client.add_user_to_organization(user_model.id, organization.id) + + # Update user's selected organization + await db_client.update_user_selected_organization( + user_model.id, organization.id + ) + + # Update the user_model object to reflect the change + user_model.selected_organization_id = organization.id + + # Only create default configuration if organization was just created + # This prevents race conditions where multiple concurrent requests + # might try to create configurations + if org_was_created: + existing_cfg = await db_client.get_user_configurations(user_model.id) + if not (existing_cfg.llm or existing_cfg.tts or existing_cfg.stt): + mps_config = await create_user_configuration_with_mps_key( + user_model.id, organization.id, stack_user["id"] + ) + if mps_config: + await db_client.update_user_configuration( + user_model.id, mps_config + ) + + except Exception as exc: + raise HTTPException( + status_code=500, + detail=f"Failed to map user to organization: {exc}", + ) + + return user_model + + +async def _handle_oss_auth(authorization: str | None) -> UserModel: + """ + Handle authentication for OSS deployment mode. + Uses the authorization token as provider_id and creates user/org if needed. + """ + if not authorization: + raise HTTPException(status_code=401, detail="Authorization header required") + + # Remove "Bearer " prefix if present + token = ( + authorization.replace("Bearer ", "") + if authorization.startswith("Bearer ") + else authorization + ) + + if not token: + raise HTTPException(status_code=401, detail="Invalid authorization token") + + try: + # Use token as provider_id for OSS mode + user_model = await db_client.get_or_create_user_by_provider_id( + provider_id=token + ) + + # Create or get organization for OSS user + # Each OSS user gets their own organization using their token as org ID + organization = await db_client.get_or_create_organization_by_provider_id( + provider_id=f"org_{token}" + ) + + # Ensure user is mapped to their organization + if user_model.selected_organization_id != organization.id: + # add_user_to_organization now handles race conditions with ON CONFLICT DO NOTHING + await db_client.add_user_to_organization(user_model.id, organization.id) + await db_client.update_user_selected_organization( + user_model.id, organization.id + ) + user_model.selected_organization_id = organization.id + + return user_model + + except Exception as e: + raise HTTPException( + status_code=500, detail=f"Error while handling OSS authentication: {e}" + ) + + +async def get_user_optional( + authorization: Annotated[str | None, Header()] = None, +) -> UserModel | None: + """ + Same as get_user but returns None instead of raising 401 if unauthorized. + Useful for endpoints that need to work both with and without auth. + """ + try: + return await get_user(authorization) + except HTTPException as e: + if e.status_code == 401: + return None + raise + + +async def _handle_oss_auth(authorization: str | None) -> UserModel: + """ + Handle authentication for OSS deployment mode. + Uses the authorization token as provider_id and creates user/org if needed. + """ + if not authorization: + raise HTTPException(status_code=401, detail="Authorization header required") + + # Remove "Bearer " prefix if present + token = ( + authorization.replace("Bearer ", "") + if authorization.startswith("Bearer ") + else authorization + ) + + if not token: + raise HTTPException(status_code=401, detail="Invalid authorization token") + + try: + # Use token as provider_id for OSS mode + user_model = await db_client.get_or_create_user_by_provider_id( + provider_id=token + ) + + # Create or get organization for OSS user + # Each OSS user gets their own organization using their token as org ID + ( + organization, + org_was_created, + ) = await db_client.get_or_create_organization_by_provider_id( + org_provider_id=f"org_{token}", user_id=user_model.id + ) + + # Ensure user is mapped to their organization + if user_model.selected_organization_id != organization.id: + # add_user_to_organization now handles race conditions with ON CONFLICT DO NOTHING + await db_client.add_user_to_organization(user_model.id, organization.id) + await db_client.update_user_selected_organization( + user_model.id, organization.id + ) + user_model.selected_organization_id = organization.id + + # Only create default configuration if organization was just created + # This prevents race conditions where multiple concurrent requests + # might try to create configurations + if org_was_created: + existing_cfg = await db_client.get_user_configurations(user_model.id) + if not (existing_cfg.llm or existing_cfg.tts or existing_cfg.stt): + mps_config = await create_user_configuration_with_mps_key( + user_model.id, organization.id, token + ) + if mps_config: + await db_client.update_user_configuration( + user_model.id, mps_config + ) + + return user_model + + except Exception as e: + raise HTTPException( + status_code=500, detail=f"Error while handling OSS authentication: {e}" + ) + + +async def create_user_configuration_with_mps_key( + user_id: int, organization_id: int, user_provider_id: str +) -> Optional[UserConfiguration]: + """Create user configuration using MPS service key. + + Args: + user_id: The user's ID + organization_id: The organization's ID + user_provider_id: The user's provider ID (for created_by field) + + Returns: + UserConfiguration with MPS-provided API keys or None if failed + """ + + async with httpx.AsyncClient() as client: + # Use MPS API URL from constants + if DEPLOYMENT_MODE == "oss": + # For OSS mode, create a temporary service key without authentication + response = await client.post( + f"{MPS_API_URL}/api/v1/service-keys/", + json={ + "name": f"Default Dograh Model Service Key", + "description": "Auto-generated key for OSS user", + "expires_in_days": 7, # Short-lived for OSS + "created_by": user_provider_id, + }, + timeout=10.0, + ) + else: + # For authenticated mode, use the secret key and organization ID + if not DOGRAH_MPS_SECRET_KEY: + logger.warning( + "Warning: DOGRAH_MPS_SECRET_KEY not set for authenticated mode" + ) + raise ValidationError("Missing DOGRAH_MPS_SECRET_KEY in non oss mode") + + response = await client.post( + f"{MPS_API_URL}/api/v1/service-keys/", + json={ + "name": f"Default Dograh Model Service Key", + "description": f"Auto-generated key for organization {organization_id}", + "organization_id": organization_id, + "expires_in_days": 90, # Longer-lived for authenticated users + "created_by": user_provider_id, + }, + headers={"X-Secret-Key": DOGRAH_MPS_SECRET_KEY}, + timeout=10.0, + ) + + if response.status_code == 200: + data = response.json() + service_key = data.get("service_key") + + if service_key: + # Create configuration JSON for storage in database + # The service_factory will use this to instantiate actual services + configuration = { + "llm": { + "provider": ServiceProviders.DOGRAH.value, + "api_key": service_key, + "model": DograhLLMModel.DEFAULT.value, # Default model + }, + "tts": { + "provider": ServiceProviders.DOGRAH.value, + "api_key": service_key, + "model": DograhTTSModel.DEFAULT.value, # Default model + "voice": DograhVoice.DEFAULT.value, # Default voice + }, + "stt": { + "provider": ServiceProviders.DOGRAH.value, + "api_key": service_key, + "model": DograhSTTModel.DEFAULT.value, # Default model + }, + } + user_config = UserConfiguration(**configuration) + return user_config + else: + logger.warning( + f"Failed to get MPS service key: {response.status_code} - {response.text}" + ) + + +async def get_superuser( + authorization: Annotated[str | None, Header()] = None, +) -> UserModel: + """ + Dependency to check if the authenticated user is a superuser. + Raises HTTPException if user is not authenticated or not a superuser. + """ + user = await get_user(authorization) + + if not user.is_superuser: + raise HTTPException( + status_code=403, detail="Access denied. Superuser privileges required." + ) + + return user diff --git a/api/services/auth/stack_auth.py b/api/services/auth/stack_auth.py new file mode 100644 index 0000000..36246bf --- /dev/null +++ b/api/services/auth/stack_auth.py @@ -0,0 +1,122 @@ +import os + +import aiohttp + + +class StackAuth: + def __init__(self): + self.project_id = os.environ.get("STACK_AUTH_PROJECT_ID") + self.secret_server_key = os.environ.get("STACK_SECRET_SERVER_KEY") + + # ------------------------------------------------------------------ + # Internal helpers + # ------------------------------------------------------------------ + + def _strip_bearer(self, access_token: str | None) -> str | None: + """Remove the leading "Bearer " prefix from the token if present.""" + if not access_token: + return None + if access_token.startswith("Bearer "): + return access_token.split(" ", 1)[1] + return access_token + + async def get_user(self, access_token: str): + if not access_token: + return None + + access_token = self._strip_bearer(access_token) + + url = os.environ.get("STACK_AUTH_API_URL") + "/api/v1/users/me" + headers = { + "x-stack-access-type": "server", + "x-stack-project-id": self.project_id, + "x-stack-secret-server-key": self.secret_server_key, + "x-stack-access-token": access_token, + } + + async with aiohttp.ClientSession() as session: + async with session.get(url, headers=headers) as response: + response = await response.json() + if "id" in response: + return response + else: + return None + + async def impersonate(self, stack_user_id: str): + url = os.environ.get("STACK_AUTH_API_URL") + "/api/v1/auth/sessions" + headers = { + "x-stack-access-type": "server", + "x-stack-project-id": self.project_id, + "x-stack-secret-server-key": self.secret_server_key, + } + + data = { + "user_id": stack_user_id, + "expires_in_millis": 3600000, + "is_impersonation": True, + } + + async with aiohttp.ClientSession() as session: + async with session.post(url, headers=headers, json=data) as response: + response = await response.json() + return response + + # ------------------------------------------------------------------ + # Team & user management helpers + # ------------------------------------------------------------------ + + # async def create_team( + # self, + # access_token: str, + # display_name: str, + # profile_image_url: str | None = None, + # client_metadata: dict | None = None, + # ) -> dict: + # """Create a new team for the authenticated user and return the API response.""" + # token = self._strip_bearer(access_token) + # if token is None: + # raise ValueError("Access token required to create team") + + # url = os.environ.get("STACK_AUTH_API_URL") + "/api/v1/teams" + # headers = { + # "x-stack-access-type": "server", + # "x-stack-project-id": self.project_id, + # "x-stack-secret-server-key": self.secret_server_key, + # "x-stack-access-token": token, + # "Content-Type": "application/json", + # } + + # payload: dict = { + # "display_name": display_name, + # "creator_user_id": "me", + # } + # if profile_image_url is not None: + # payload["profile_image_url"] = profile_image_url + # if client_metadata is not None: + # payload["client_metadata"] = client_metadata + + # async with aiohttp.ClientSession() as session: + # async with session.post(url, headers=headers, json=payload) as response: + # return await response.json() + + # async def update_user(self, access_token: str, data: dict) -> dict: + # """Patch the current user with supplied data and return the API response.""" + # token = self._strip_bearer(access_token) + # if token is None: + # raise ValueError("Access token required to update user") + + # url = os.environ.get("STACK_AUTH_API_URL") + "/api/v1/users/me" + # headers = { + # "x-stack-access-type": "server", + # "x-stack-project-id": self.project_id, + # "x-stack-secret-server-key": self.secret_server_key, + # "x-stack-access-token": token, + # "Content-Type": "application/json", + # } + + # async with aiohttp.ClientSession() as session: + # async with session.patch(url, headers=headers, json=data) as response: + # return await response.json() + + +stackauth = StackAuth() diff --git a/api/services/campaign/__init__.py b/api/services/campaign/__init__.py new file mode 100644 index 0000000..5c5202c --- /dev/null +++ b/api/services/campaign/__init__.py @@ -0,0 +1,5 @@ +"""Campaign service package""" + +from .rate_limiter import rate_limiter + +__all__ = ["rate_limiter"] diff --git a/api/services/campaign/call_dispatcher.py b/api/services/campaign/call_dispatcher.py new file mode 100644 index 0000000..adedb02 --- /dev/null +++ b/api/services/campaign/call_dispatcher.py @@ -0,0 +1,329 @@ +import asyncio +import time +from datetime import UTC, datetime +from typing import Optional + +from loguru import logger + +from api.db import db_client +from api.db.models import QueuedRunModel, WorkflowRunModel +from api.enums import OrganizationConfigurationKey, WorkflowRunMode +from api.services.campaign.rate_limiter import rate_limiter +from api.services.telephony.twilio import TwilioService + + +class CampaignCallDispatcher: + """Manages rate-limited and concurrent-limited call dispatching""" + + def __init__(self): + self._twilio_service = None + self.default_concurrent_limit = 20 + + @property + def twilio_service(self): + """Lazy initialization of TwilioService""" + if self._twilio_service is None: + self._twilio_service = TwilioService() + return self._twilio_service + + async def get_org_concurrent_limit(self, organization_id: int) -> int: + """Get the concurrent call limit for an organization.""" + try: + config = await db_client.get_configuration( + organization_id, + OrganizationConfigurationKey.CONCURRENT_CALL_LIMIT.value, + ) + if config and config.value: + return int(config.value["value"]) + except Exception as e: + logger.warning( + f"Error getting concurrent limit for org {organization_id}: {e}" + ) + return self.default_concurrent_limit + + async def process_batch(self, campaign_id: int, batch_size: int = 10) -> int: + """ + Processes a batch of queued runs with priority for scheduled retries + Returns: number of processed runs + """ + # Get campaign details + campaign = await db_client.get_campaign_by_id(campaign_id) + if not campaign: + raise ValueError(f"Campaign {campaign_id} not found") + + # Check if campaign is in running state + if campaign.state != "running": + logger.info( + f"Campaign {campaign_id} is not in running state: {campaign.state}" + ) + return 0 + + # First, get any scheduled retries that are due + scheduled_runs = await db_client.get_scheduled_queued_runs( + campaign_id=campaign_id, + scheduled_before=datetime.now(UTC), + limit=batch_size, + ) + + remaining_slots = batch_size - len(scheduled_runs) + + # Then get regular queued runs + regular_runs = [] + if remaining_slots > 0: + regular_runs = await db_client.get_queued_runs( + campaign_id=campaign_id, + state="queued", + scheduled_for=False, # Exclude scheduled runs + limit=remaining_slots, + ) + + queued_runs = scheduled_runs + regular_runs + + if not queued_runs: + logger.info(f"No more queued runs for campaign {campaign_id}") + return 0 + + processed_count = 0 + for queued_run in queued_runs: + try: + # Apply rate limiting + await self.apply_rate_limit( + campaign.organization_id, campaign.rate_limit_per_second + ) + + # Dispatch the call + workflow_run = await self.dispatch_call(queued_run, campaign) + + # Update queued run as processed + await db_client.update_queued_run( + queued_run_id=queued_run.id, + state="processed", + workflow_run_id=workflow_run.id, + processed_at=datetime.now(UTC), + ) + + processed_count += 1 + + # Update campaign processed count + await db_client.update_campaign( + campaign_id=campaign_id, processed_rows=campaign.processed_rows + 1 + ) + + except Exception as e: + logger.warning(f"Error processing queued run {queued_run.id}: {e}") + + # Mark the queued run as failed to prevent infinite retry loops + try: + await db_client.update_queued_run( + queued_run_id=queued_run.id, + state="failed", + processed_at=datetime.now(UTC), + ) + logger.info( + f"Marked queued run {queued_run.id} as failed due to error: {e}" + ) + except Exception as update_error: + logger.error( + f"Failed to mark queued run {queued_run.id} as failed: {update_error}" + ) + + return processed_count + + async def dispatch_call( + self, queued_run: QueuedRunModel, campaign: any + ) -> Optional[WorkflowRunModel]: + """Creates workflow run and initiates call with concurrent limiting""" + # Get concurrent limit for organization + max_concurrent = await self.get_org_concurrent_limit(campaign.organization_id) + + # Track wait time for alerting + wait_start = time.time() + slot_id = None + + # Wait until we can acquire a concurrent slot + while True: + slot_id = await rate_limiter.try_acquire_concurrent_slot( + campaign.organization_id, max_concurrent + ) + if slot_id: + break + + # Check if we've been waiting too long + wait_time = time.time() - wait_start + if wait_time > 600: # 10 minutes + logger.error( + f"Waiting for concurrent slot for {wait_time:.1f}s, " + f"org: {campaign.organization_id}, campaign: {campaign.id}" + ) + + logger.debug( + f"Attempting to get a slot for {campaign.organization_id} {campaign.id}" + ) + + # Wait before retrying + await asyncio.sleep(1) + + # Get workflow details + workflow = await db_client.get_workflow_by_id(campaign.workflow_id) + if not workflow: + # Release slot before raising + await rate_limiter.release_concurrent_slot( + campaign.organization_id, slot_id + ) + raise ValueError(f"Workflow {campaign.workflow_id} not found") + + # Merge context variables (queued_run context already includes retry info if applicable) + initial_context = { + **workflow.template_context_variables, + **queued_run.context_variables, + "campaign_id": campaign.id, + } + + # Extract phone number + phone_number = queued_run.context_variables.get("phone_number") + if not phone_number: + # Release slot before raising + await rate_limiter.release_concurrent_slot( + campaign.organization_id, slot_id + ) + raise ValueError(f"No phone number in queued run {queued_run.id}") + + # Create workflow run with queued_run_id tracking + workflow_run_name = f"WR-CAMPAIGN-{campaign.id}-{queued_run.id}" + + try: + workflow_run = await db_client.create_workflow_run( + name=workflow_run_name, + workflow_id=campaign.workflow_id, + mode=WorkflowRunMode.TWILIO.value, + user_id=campaign.created_by, + initial_context=initial_context, + campaign_id=campaign.id, + queued_run_id=queued_run.id, # Link to queued run for retry tracking + ) + + # Store slot_id mapping in Redis for cleanup later + await rate_limiter.store_workflow_slot_mapping( + workflow_run.id, campaign.organization_id, slot_id + ) + except Exception as e: + # Release slot on error + await rate_limiter.release_concurrent_slot( + campaign.organization_id, slot_id + ) + raise + + # Add "retry" tag if this is a retry call + if queued_run.context_variables.get("is_retry"): + retry_reason = queued_run.context_variables.get("retry_reason", "unknown") + await db_client.update_workflow_run( + run_id=workflow_run.id, + gathered_context={ + "call_tags": ["retry", f"retry_reason_{retry_reason}"] + }, + ) + + # Initiate call via Twilio + try: + call_result = await self.twilio_service.initiate_call( + to_number=phone_number, + workflow_run_id=workflow_run.id, + organization_id=campaign.organization_id, + url_args={ + "workflow_id": campaign.workflow_id, + "user_id": campaign.created_by, + "workflow_run_id": workflow_run.id, + "campaign_id": campaign.id, + }, + ) + + logger.info( + f"Call initiated for workflow run {workflow_run.id}, SID: {call_result.get('sid')}" + ) + + except Exception as e: + logger.error( + f"Failed to initiate call for workflow run {workflow_run.id}: {e}" + ) + + # Update workflow run as failed + twilio_callback_logs = workflow_run.logs.get("twilio_status_callbacks", []) + twilio_callback_log = { + "status": "failed", + "timestamp": datetime.now(UTC).isoformat(), + "data": {"error": str(e)}, + } + twilio_callback_logs.append(twilio_callback_log) + await db_client.update_workflow_run( + run_id=workflow_run.id, + is_completed=True, + gathered_context={ + "error": str(e), + }, + logs={ + "twilio_status_callbacks": twilio_callback_logs, + }, + ) + + # Release concurrent slot on failure + mapping = await rate_limiter.get_workflow_slot_mapping(workflow_run.id) + if mapping: + org_id, slot_id = mapping + await rate_limiter.release_concurrent_slot(org_id, slot_id) + await rate_limiter.delete_workflow_slot_mapping(workflow_run.id) + + raise + + return workflow_run + + async def apply_rate_limit(self, organization_id: int, rate_limit: int) -> None: + """ + Enforces rate limiting - waits if necessary to comply with rate limit + + Example usage: + ``` + # This will wait up to 1 second if needed to respect rate limit + await self.apply_rate_limit(org_id, 1) # 1 call per second + await twilio.initiate_call(...) # Now safe to call + ``` + """ + max_wait = 1.0 # Maximum time to wait for a slot + start_time = time.time() + + while True: + # Try to acquire token + if await rate_limiter.acquire_token(organization_id, rate_limit): + return # Got permission to proceed + + # Check how long to wait + wait_time = await rate_limiter.get_next_available_slot( + organization_id, rate_limit + ) + + # Don't wait forever + if time.time() - start_time + wait_time > max_wait: + raise TimeoutError("Rate limit timeout - try again later") + + # Wait for next available slot + await asyncio.sleep(wait_time) + + async def release_call_slot(self, workflow_run_id: int) -> bool: + """ + Release concurrent slot when a call completes. + Called by Twilio webhooks or workflow completion handlers. + """ + mapping = await rate_limiter.get_workflow_slot_mapping(workflow_run_id) + if mapping: + org_id, slot_id = mapping + success = await rate_limiter.release_concurrent_slot(org_id, slot_id) + if success: + await rate_limiter.delete_workflow_slot_mapping(workflow_run_id) + logger.info( + f"Released concurrent slot for workflow run {workflow_run_id}" + ) + return success + return False + + +# Global instance +campaign_call_dispatcher = CampaignCallDispatcher() diff --git a/api/services/campaign/campaign_event_protocol.py b/api/services/campaign/campaign_event_protocol.py new file mode 100644 index 0000000..32ad1f9 --- /dev/null +++ b/api/services/campaign/campaign_event_protocol.py @@ -0,0 +1,258 @@ +"""Campaign event protocol for orchestrator communication. + +Defines message formats and helpers for campaign event publishing and handling. +""" + +import json +from dataclasses import asdict, dataclass +from enum import Enum +from typing import Any, Dict, Optional + + +class CampaignEventType(str, Enum): + """Types of campaign events.""" + + # Batch processing events + BATCH_COMPLETED = "batch_completed" + BATCH_FAILED = "batch_failed" + + # Sync events + SYNC_STARTED = "sync_started" + SYNC_COMPLETED = "sync_completed" + SYNC_FAILED = "sync_failed" + + # Campaign lifecycle events + CAMPAIGN_STARTED = "campaign_started" + CAMPAIGN_PAUSED = "campaign_paused" + CAMPAIGN_RESUMED = "campaign_resumed" + CAMPAIGN_COMPLETED = "campaign_completed" + CAMPAIGN_FAILED = "campaign_failed" + + # Retry events + RETRY_NEEDED = "retry_needed" + RETRY_SCHEDULED = "retry_scheduled" + RETRY_FAILED = "retry_failed" + + +class RetryReason(str, Enum): + """Reasons for retry.""" + + BUSY = "busy" + NO_ANSWER = "no_answer" + VOICEMAIL = "voicemail" + FAILED = "failed" + ERROR = "error" + + +@dataclass +class BaseCampaignEvent: + """Base class for all campaign events.""" + + type: str + campaign_id: int = 0 + timestamp: Optional[str] = None + + def __post_init__(self): + if self.timestamp is None: + from datetime import UTC, datetime + + self.timestamp = datetime.now(UTC).isoformat() + + def to_json(self) -> str: + return json.dumps(asdict(self)) + + @classmethod + def from_json(cls, data: str): + return cls(**json.loads(data)) + + +@dataclass +class BatchCompletedEvent(BaseCampaignEvent): + """Event sent when a batch processing completes.""" + + type: str = CampaignEventType.BATCH_COMPLETED + processed_count: int = 0 + failed_count: int = 0 + batch_size: int = 0 + metadata: Optional[Dict[str, Any]] = None + + def __post_init__(self): + super().__post_init__() + if self.metadata is None: + self.metadata = {} + + +@dataclass +class BatchFailedEvent(BaseCampaignEvent): + """Event sent when a batch processing fails.""" + + type: str = CampaignEventType.BATCH_FAILED + error: str = "" + processed_count: int = 0 + metadata: Optional[Dict[str, Any]] = None + + def __post_init__(self): + super().__post_init__() + if self.metadata is None: + self.metadata = {} + + +@dataclass +class SyncStartedEvent(BaseCampaignEvent): + """Event sent when campaign source sync starts.""" + + type: str = CampaignEventType.SYNC_STARTED + source_type: str = "" + source_id: str = "" + + +@dataclass +class SyncCompletedEvent(BaseCampaignEvent): + """Event sent when campaign source sync completes.""" + + type: str = CampaignEventType.SYNC_COMPLETED + total_rows: int = 0 + source_type: str = "" + source_id: str = "" + metadata: Optional[Dict[str, Any]] = None + + def __post_init__(self): + super().__post_init__() + if self.metadata is None: + self.metadata = {} + + +@dataclass +class SyncFailedEvent(BaseCampaignEvent): + """Event sent when campaign source sync fails.""" + + type: str = CampaignEventType.SYNC_FAILED + error: str = "" + source_type: str = "" + source_id: str = "" + + +@dataclass +class CampaignStartedEvent(BaseCampaignEvent): + """Event sent when a campaign starts.""" + + type: str = CampaignEventType.CAMPAIGN_STARTED + workflow_id: int = 0 + total_rows: Optional[int] = None + + +@dataclass +class CampaignPausedEvent(BaseCampaignEvent): + """Event sent when a campaign is paused.""" + + type: str = CampaignEventType.CAMPAIGN_PAUSED + processed_rows: int = 0 + failed_rows: int = 0 + + +@dataclass +class CampaignResumedEvent(BaseCampaignEvent): + """Event sent when a campaign is resumed.""" + + type: str = CampaignEventType.CAMPAIGN_RESUMED + processed_rows: int = 0 + failed_rows: int = 0 + + +@dataclass +class CampaignCompletedEvent(BaseCampaignEvent): + """Event sent when a campaign completes.""" + + type: str = CampaignEventType.CAMPAIGN_COMPLETED + total_rows: int = 0 + processed_rows: int = 0 + failed_rows: int = 0 + duration_seconds: Optional[float] = None + + +@dataclass +class CampaignFailedEvent(BaseCampaignEvent): + """Event sent when a campaign fails.""" + + type: str = CampaignEventType.CAMPAIGN_FAILED + error: str = "" + processed_rows: int = 0 + failed_rows: int = 0 + + +@dataclass +class RetryNeededEvent(BaseCampaignEvent): + """Event sent when a call needs retry.""" + + type: str = CampaignEventType.RETRY_NEEDED + workflow_run_id: int = 0 + queued_run_id: int = 0 + reason: str = "" # RetryReason value + metadata: Optional[Dict[str, Any]] = None + + def __post_init__(self): + super().__post_init__() + if self.metadata is None: + self.metadata = {} + + +@dataclass +class RetryScheduledEvent(BaseCampaignEvent): + """Event sent when a retry is scheduled.""" + + type: str = CampaignEventType.RETRY_SCHEDULED + queued_run_id: int = 0 + retry_run_id: int = 0 + retry_count: int = 0 + scheduled_for: str = "" # ISO timestamp + reason: str = "" # RetryReason value + + +@dataclass +class RetryFailedEvent(BaseCampaignEvent): + """Event sent when max retries reached.""" + + type: str = CampaignEventType.RETRY_FAILED + queued_run_id: int = 0 + retry_count: int = 0 + last_reason: str = "" # RetryReason value + + +def parse_campaign_event(data: str) -> Any: + """Parse a campaign event message.""" + try: + parsed = json.loads(data) + event_type = parsed.get("type") + + # Map event types to their classes + event_class_map = { + CampaignEventType.BATCH_COMPLETED: BatchCompletedEvent, + CampaignEventType.BATCH_FAILED: BatchFailedEvent, + CampaignEventType.SYNC_STARTED: SyncStartedEvent, + CampaignEventType.SYNC_COMPLETED: SyncCompletedEvent, + CampaignEventType.SYNC_FAILED: SyncFailedEvent, + CampaignEventType.CAMPAIGN_STARTED: CampaignStartedEvent, + CampaignEventType.CAMPAIGN_PAUSED: CampaignPausedEvent, + CampaignEventType.CAMPAIGN_RESUMED: CampaignResumedEvent, + CampaignEventType.CAMPAIGN_COMPLETED: CampaignCompletedEvent, + CampaignEventType.CAMPAIGN_FAILED: CampaignFailedEvent, + CampaignEventType.RETRY_NEEDED: RetryNeededEvent, + CampaignEventType.RETRY_SCHEDULED: RetryScheduledEvent, + CampaignEventType.RETRY_FAILED: RetryFailedEvent, + } + + event_class = event_class_map.get(event_type) + if event_class: + return event_class(**parsed) + + # Unknown event type + from loguru import logger + + logger.warning(f"Unknown campaign event type: {event_type}") + return None + + except Exception as e: + from loguru import logger + + logger.error(f"Failed to parse campaign event: {e}, data: {data}") + return None diff --git a/api/services/campaign/campaign_event_publisher.py b/api/services/campaign/campaign_event_publisher.py new file mode 100644 index 0000000..95b319a --- /dev/null +++ b/api/services/campaign/campaign_event_publisher.py @@ -0,0 +1,121 @@ +"""Campaign event publisher for orchestrator communication. + +Handles publishing of campaign events to Redis pub/sub channels. +""" + +from typing import Dict, Optional + +import redis.asyncio as aioredis +from loguru import logger + +from api.constants import REDIS_URL +from api.enums import RedisChannel +from api.services.campaign.campaign_event_protocol import ( + BatchCompletedEvent, + CampaignCompletedEvent, + RetryNeededEvent, + SyncCompletedEvent, +) + + +class CampaignEventPublisher: + """Helper class for publishing campaign events.""" + + def __init__(self, redis_client): + self.redis = redis_client + + async def publish_batch_completed( + self, + campaign_id: int, + processed_count: int, + failed_count: int = 0, + batch_size: int = 0, + metadata: Optional[Dict] = None, + ): + """Publish batch completed event.""" + event = BatchCompletedEvent( + campaign_id=campaign_id, + processed_count=processed_count, + failed_count=failed_count, + batch_size=batch_size, + metadata=metadata, + ) + + await self.redis.publish(RedisChannel.CAMPAIGN_EVENTS.value, event.to_json()) + + async def publish_sync_completed( + self, + campaign_id: int, + total_rows: int, + source_type: str = "", + source_id: str = "", + metadata: Optional[Dict] = None, + ): + """Publish sync completed event.""" + event = SyncCompletedEvent( + campaign_id=campaign_id, + total_rows=total_rows, + source_type=source_type, + source_id=source_id, + metadata=metadata, + ) + + await self.redis.publish(RedisChannel.CAMPAIGN_EVENTS.value, event.to_json()) + + async def publish_retry_needed( + self, + workflow_run_id: int, + reason: str, + campaign_id: Optional[int] = None, + queued_run_id: Optional[int] = None, + metadata: Optional[Dict] = None, + ): + """Publish retry needed event.""" + event = RetryNeededEvent( + campaign_id=campaign_id or 0, + workflow_run_id=workflow_run_id, + queued_run_id=queued_run_id or 0, + reason=reason, + metadata=metadata or {}, + ) + + await self.redis.publish(RedisChannel.CAMPAIGN_EVENTS.value, event.to_json()) + + logger.info( + f"Published retry event for workflow_run {workflow_run_id}, " + f"reason: {reason}, campaign: {campaign_id}" + ) + + async def publish_campaign_completed( + self, + campaign_id: int, + total_rows: int, + processed_rows: int, + failed_rows: int, + duration_seconds: Optional[float] = None, + ): + """Publish campaign completed event.""" + event = CampaignCompletedEvent( + campaign_id=campaign_id, + total_rows=total_rows, + processed_rows=processed_rows, + failed_rows=failed_rows, + duration_seconds=duration_seconds, + ) + + await self.redis.publish(RedisChannel.CAMPAIGN_EVENTS.value, event.to_json()) + + +# Global publisher instance with lazy Redis connection +async def get_campaign_event_publisher() -> CampaignEventPublisher: + """Get or create the campaign event publisher.""" + global _campaign_publisher + global _campaign_redis_client + + if "_campaign_publisher" not in globals(): + _campaign_redis_client = await aioredis.from_url( + REDIS_URL, decode_responses=True + ) + _campaign_publisher = CampaignEventPublisher(_campaign_redis_client) + + return _campaign_publisher diff --git a/api/services/campaign/campaign_orchestrator.py b/api/services/campaign/campaign_orchestrator.py new file mode 100644 index 0000000..72a0d5f --- /dev/null +++ b/api/services/campaign/campaign_orchestrator.py @@ -0,0 +1,563 @@ +"""Campaign Orchestrator Service. + +This service ensures continuous campaign processing by listening to events +and scheduling batches immediately upon completion. It also monitors campaigns +for final completion after 1 hour of inactivity and handles retry events. +""" + +from api.logging_config import setup_logging + +logging_queue_listener = setup_logging() + + +import asyncio +import signal +from datetime import UTC, datetime, timedelta +from typing import Dict + +import redis.asyncio as aioredis +from loguru import logger + +from api.constants import REDIS_URL +from api.db import db_client +from api.db.models import CampaignModel, QueuedRunModel +from api.enums import RedisChannel +from api.services.campaign.campaign_event_protocol import ( + CampaignCompletedEvent, + CampaignEventType, + RetryNeededEvent, + parse_campaign_event, +) +from api.tasks.arq import enqueue_job +from api.tasks.function_names import FunctionNames + + +class CampaignOrchestrator: + """Orchestrates campaign processing, retry handling, and completion detection.""" + + def __init__(self, redis_client: aioredis.Redis): + self.redis = redis_client + self.completion_check_interval = 60 # 1 minute + self.completion_timeout = 3600 # 1 hour + self._processing_locks: Dict[int, datetime] = {} # prevent duplicate scheduling + self._last_activity: Dict[ + int, datetime + ] = {} # track last activity per campaign + self._batch_in_progress: Dict[ + int, datetime + ] = {} # track batches that have been scheduled but not completed + self._running = False + self._pubsub = None + + async def run(self): + """Main service with two concurrent tasks.""" + self._running = True + logger.info("Campaign Orchestrator starting...") + + try: + # Task 1: Listen for events and react immediately + event_task = asyncio.create_task(self._listen_for_events()) + + # Task 2: Periodically check for stale campaigns + completion_task = asyncio.create_task(self._monitor_completion()) + + # Wait for both tasks + await asyncio.gather(event_task, completion_task) + + except asyncio.CancelledError: + logger.info("Campaign Orchestrator cancelled") + raise + except Exception as e: + logger.error(f"Campaign Orchestrator error: {e}") + raise + finally: + await self.shutdown() + + async def _listen_for_events(self): + """Listen for campaign events and react immediately.""" + self._pubsub = self.redis.pubsub() + await self._pubsub.subscribe(RedisChannel.CAMPAIGN_EVENTS.value) + logger.info(f"Subscribed to {RedisChannel.CAMPAIGN_EVENTS.value} channel") + + async for message in self._pubsub.listen(): + if not self._running: + break + + if message["type"] == "message": + try: + event = parse_campaign_event(message["data"]) + if event: + await self._handle_event(event) + else: + logger.error( + f"Failed to parse campaign event: {message['data']}" + ) + except Exception as e: + logger.error(f"Error handling campaign event: {e}") + + async def _handle_event(self, event): + """Handle campaign events including retry events.""" + # Handle RetryNeededEvent + if isinstance(event, RetryNeededEvent): + await self._handle_retry_event(event) + return + + # All events should have campaign_id + if not hasattr(event, "campaign_id") or not event.campaign_id: + logger.warning(f"Event missing campaign_id: {type(event).__name__}") + return + + campaign_id = event.campaign_id + event_type = event.type + + logger.debug(f"campaign_id: {campaign_id} - Received event: {event_type}") + + if event_type == CampaignEventType.BATCH_COMPLETED: + # Clear the batch in progress flag + if campaign_id in self._batch_in_progress: + del self._batch_in_progress[campaign_id] + logger.debug( + f"campaign_id: {campaign_id} - Batch completed, cleared in-progress flag" + ) + + # Immediately schedule next batch + await self._schedule_next_batch(campaign_id) + self._last_activity[campaign_id] = datetime.now(UTC) + + elif event_type == CampaignEventType.SYNC_COMPLETED: + # Start processing after sync + logger.info( + f"campaign_id: {campaign_id} - Sync completed, starting processing" + ) + await self._schedule_next_batch(campaign_id) + self._last_activity[campaign_id] = datetime.now(UTC) + + async def _handle_retry_event(self, event: RetryNeededEvent): + """Process retry event and schedule if eligible (from campaign_retry_manager).""" + + # Check retry eligibility + campaign_id = event.campaign_id + if not campaign_id: + logger.debug("Skipping non-campaign retry event") + return + + # Get campaign configuration + campaign = await db_client.get_campaign_by_id(campaign_id) + if not campaign: + logger.error(f"campaign_id: {campaign_id} - Campaign not found") + return + + retry_config = campaign.retry_config or {} + if not retry_config.get("enabled", True): + logger.info(f"campaign_id: {campaign_id} - Retry disabled") + return + + # Check if this reason should be retried + reason = event.reason + if reason == "busy" and not retry_config.get("retry_on_busy", True): + logger.info(f"campaign_id: {campaign_id} - Skipping retry for busy signal") + return + if reason == "no_answer" and not retry_config.get("retry_on_no_answer", True): + logger.info(f"campaign_id: {campaign_id} - Skipping retry for no-answer") + return + if reason == "voicemail" and not retry_config.get("retry_on_voicemail", True): + logger.info(f"campaign_id: {campaign_id} - Skipping retry for voicemail") + return + + # Get the original queued run + queued_run = await db_client.get_queued_run_by_id(event.queued_run_id) + if not queued_run: + logger.error( + f"campaign_id: {campaign_id} - Queued run {event.queued_run_id} not found" + ) + return + + max_retries = retry_config.get("max_retries", 1) + + if queued_run.retry_count >= max_retries: + await self._mark_final_failure(queued_run, reason) + logger.info( + f"campaign_id: {campaign_id} - Max retries ({max_retries}) reached for queued run {queued_run.id}" + ) + return + + # Create scheduled retry entry + retry_delay = retry_config.get("retry_delay_seconds", 120) + await self._schedule_retry(queued_run, reason, retry_delay) + + # Update last activity + self._last_activity[campaign_id] = datetime.now(UTC) + + async def _schedule_retry( + self, original_run: QueuedRunModel, reason: str, delay_seconds: int + ): + """Create a new queued run for retry.""" + + campaign_id = original_run.campaign_id + + # Create retry context + retry_context = { + **original_run.context_variables, + "is_retry": True, + "retry_attempt": original_run.retry_count + 1, + "retry_reason": reason, + } + + logger.debug( + f"campaign_id: {campaign_id} - Scheduling retry for {reason} in {delay_seconds}s, " + f"retry attempt {original_run.retry_count + 1}" + ) + + # Create retry entry with unique source_uuid + retry_run = await db_client.create_queued_run( + campaign_id=campaign_id, + source_uuid=f"{original_run.source_uuid}_retry_{original_run.retry_count + 1}", + context_variables=retry_context, + state="queued", + retry_count=original_run.retry_count + 1, + parent_queued_run_id=original_run.id, + scheduled_for=datetime.now(UTC) + timedelta(seconds=delay_seconds), + retry_reason=reason, + ) + + logger.info( + f"campaign_id: {campaign_id} - Scheduled retry {retry_run.id} for {reason} in {delay_seconds}s, " + f"retry attempt {retry_run.retry_count}" + ) + + async def _mark_final_failure(self, queued_run: QueuedRunModel, reason: str): + """Mark a queued run as finally failed after max retries.""" + campaign_id = queued_run.campaign_id + + # Update the campaign's failed_rows counter + campaign = await db_client.get_campaign_by_id(campaign_id) + if campaign: + await db_client.update_campaign( + campaign_id=campaign_id, failed_rows=campaign.failed_rows + 1 + ) + + logger.info( + f"campaign_id: {campaign_id} - Queued run {queued_run.id} finally failed after max retries, " + f"last reason: {reason}" + ) + + async def _schedule_next_batch(self, campaign_id: int): + """Schedule next batch immediately if work available.""" + + # Prevent duplicate scheduling with in-memory lock + if campaign_id in self._processing_locks: + lock_time = self._processing_locks[campaign_id] + if (datetime.now(UTC) - lock_time).total_seconds() < 5: + logger.debug( + f"campaign_id: {campaign_id} - Batch already scheduled recently" + ) + return + + # Set lock + self._processing_locks[campaign_id] = datetime.now(UTC) + + try: + # Check campaign status + campaign = await db_client.get_campaign_by_id(campaign_id) + if not campaign: + logger.error(f"campaign_id: {campaign_id} - Campaign not found") + return + + if campaign.state not in ["running", "syncing"]: + logger.info( + f"campaign_id: {campaign_id} - Campaign not in running state: {campaign.state}" + ) + return + + # Check for available work (queued runs + due retries) + has_work = await self._has_pending_work(campaign_id) + + if has_work: + # Schedule batch immediately + await enqueue_job( + FunctionNames.PROCESS_CAMPAIGN_BATCH, + campaign_id, + 10, # batch_size + ) + logger.info(f"campaign_id: {campaign_id} - Scheduled next batch") + + # Set batch in progress flag + self._batch_in_progress[campaign_id] = datetime.now(UTC) + + # Update database + await db_client.update_campaign( + campaign_id=campaign_id, + last_batch_scheduled_at=datetime.now(UTC), + last_activity_at=datetime.now(UTC), + ) + else: + logger.info( + f"campaign_id: {campaign_id} - No pending work to process, " + f"campaign may complete or wait for retries" + ) + + except Exception as e: + logger.error(f"campaign_id: {campaign_id} - Error scheduling batch: {e}") + finally: + # Release lock after a short delay + asyncio.create_task(self._release_lock_after_delay(campaign_id, 5)) + + async def _release_lock_after_delay(self, campaign_id: int, delay: int): + """Release processing lock after delay.""" + await asyncio.sleep(delay) + if campaign_id in self._processing_locks: + del self._processing_locks[campaign_id] + logger.debug(f"campaign_id: {campaign_id} - Released processing lock") + + async def _monitor_completion(self): + """Periodically check for campaigns that should be marked complete.""" + while self._running: + try: + await self._check_stale_campaigns() + except Exception as e: + logger.error(f"Completion monitoring failed: {e}") + + await asyncio.sleep(self.completion_check_interval) + + async def _check_stale_campaigns(self): + """Check all running campaigns for completion or orphaned work.""" + logger.debug("Checking for stale campaigns...") + + campaigns = await db_client.get_campaigns_by_status(statuses=["running"]) + + for campaign in campaigns: + try: + campaign_id = campaign.id + + # Check if batch is stuck (initiated > 5 minutes ago but no completion) + if campaign_id in self._batch_in_progress: + batch_start_time = self._batch_in_progress[campaign_id] + time_since_batch_start = ( + datetime.now(UTC) - batch_start_time + ).total_seconds() + + if time_since_batch_start > 300: # 5 minutes + logger.warning( + f"campaign_id: {campaign_id} - Batch stuck for {time_since_batch_start:.0f}s, " + f"clearing flag and checking for more work" + ) + del self._batch_in_progress[campaign_id] + + # Check if there's work to be done + if await self._has_pending_work(campaign_id): + logger.info( + f"campaign_id: {campaign_id} - Found pending work after stuck batch, " + f"scheduling new batch" + ) + await self._schedule_next_batch(campaign_id) + continue + + # Check for orphaned work (e.g., newly created retries with no batch in progress) + if campaign_id not in self._batch_in_progress: + has_work = await self._has_pending_work(campaign_id) + if has_work: + logger.info( + f"campaign_id: {campaign_id} - Found orphaned work (likely new retries), " + f"scheduling batch to process" + ) + await self._schedule_next_batch(campaign_id) + continue + + # Check if campaign should be marked complete + if await self._should_mark_complete(campaign): + await self._complete_campaign(campaign) + except Exception as e: + logger.error( + f"campaign_id: {campaign.id} - Completion check failed: {e}" + ) + + async def _should_mark_complete(self, campaign: CampaignModel) -> bool: + """Check if campaign has no activity for 1 hour.""" + campaign_id = campaign.id + + # Don't mark complete if batch is in progress + if campaign_id in self._batch_in_progress: + logger.debug( + f"campaign_id: {campaign_id} - Batch in progress, not marking complete" + ) + return False + + # Check for any pending work + has_work = await self._has_pending_work(campaign_id) + if has_work: + return False + + # Check in-memory last activity + last_activity = self._last_activity.get(campaign_id) + if not last_activity: + # Fall back to database + last_activity = campaign.last_activity_at + + if not last_activity: + # No activity recorded, use last batch scheduled time + last_activity = campaign.last_batch_scheduled_at + + if not last_activity: + # No activity at all, use started_at + last_activity = campaign.started_at + + if last_activity: + time_since = datetime.now(UTC) - last_activity + if time_since.total_seconds() < self.completion_timeout: + return False + + logger.info( + f"campaign_id: {campaign_id} - No activity for {self.completion_timeout}s, " + f"marking complete" + ) + return True + + async def _has_pending_work(self, campaign_id: int) -> bool: + """Check if campaign has any work to do.""" + # Check queued runs + queued_count = await db_client.get_queued_runs_count( + campaign_id=campaign_id, states=["queued"] + ) + + if queued_count > 0: + logger.debug(f"campaign_id: {campaign_id} - Has {queued_count} queued runs") + return True + + # Check scheduled retries that are due + scheduled_count = await db_client.get_scheduled_runs_count( + campaign_id=campaign_id, scheduled_before=datetime.now(UTC) + ) + + if scheduled_count > 0: + logger.debug( + f"campaign_id: {campaign_id} - Has {scheduled_count} scheduled retries due" + ) + return True + + return False + + async def _complete_campaign(self, campaign: CampaignModel): + """Mark campaign as complete.""" + campaign_id = campaign.id + + try: + # Double-check no pending work + if await self._has_pending_work(campaign_id): + logger.info( + f"campaign_id: {campaign_id} - Found pending work, not completing" + ) + return + + # Update campaign status + await db_client.update_campaign( + campaign_id=campaign_id, + state="completed", + completed_at=datetime.now(UTC), + ) + + logger.info(f"campaign_id: {campaign_id} - Campaign marked as completed") + + # Publish completion event using typed event + completion_event = CampaignCompletedEvent( + campaign_id=campaign_id, + total_rows=campaign.total_rows or 0, + processed_rows=campaign.processed_rows, + failed_rows=campaign.failed_rows, + ) + + # Calculate duration if started_at is available + if campaign.started_at: + duration = (datetime.now(UTC) - campaign.started_at).total_seconds() + completion_event.duration_seconds = duration + + await self.redis.publish( + RedisChannel.CAMPAIGN_EVENTS.value, completion_event.to_json() + ) + + # Clean up in-memory state + if campaign_id in self._last_activity: + del self._last_activity[campaign_id] + if campaign_id in self._processing_locks: + del self._processing_locks[campaign_id] + if campaign_id in self._batch_in_progress: + del self._batch_in_progress[campaign_id] + + except Exception as e: + logger.error( + f"campaign_id: {campaign_id} - Failed to complete campaign: {e}" + ) + + async def shutdown(self): + """Clean shutdown of the orchestrator.""" + logger.info("Campaign Orchestrator shutting down...") + self._running = False + + if self._pubsub: + try: + await self._pubsub.unsubscribe(RedisChannel.CAMPAIGN_EVENTS.value) + await self._pubsub.close() + except Exception as e: + logger.error(f"Error closing pubsub: {e}") + + logger.info("Campaign Orchestrator shutdown complete") + + +async def main(): + """Main entry point for Campaign Orchestrator service.""" + + # Setup Redis connection + redis = await aioredis.from_url(REDIS_URL, decode_responses=True) + + # Create and run orchestrator + orchestrator = CampaignOrchestrator(redis) + + # Create a shutdown event for clean coordination + shutdown_event = asyncio.Event() + + # Setup signal handlers + loop = asyncio.get_event_loop() + + def signal_handler(signum): + logger.info(f"Received shutdown signal {signum}") + shutdown_event.set() + + for sig in (signal.SIGTERM, signal.SIGINT): + loop.add_signal_handler(sig, lambda s=sig: signal_handler(s)) + + # Run orchestrator with shutdown monitoring + orchestrator_task = asyncio.create_task(orchestrator.run()) + shutdown_task = asyncio.create_task(shutdown_event.wait()) + + try: + # Wait for either orchestrator to complete or shutdown signal + done, _ = await asyncio.wait( + [orchestrator_task, shutdown_task], return_when=asyncio.FIRST_COMPLETED + ) + + # If shutdown was triggered, stop the orchestrator + if shutdown_task in done: + logger.info("Shutdown signal received, stopping orchestrator...") + orchestrator._running = False + # Wait for orchestrator to finish gracefully + try: + await asyncio.wait_for(orchestrator_task, timeout=5.0) + except asyncio.TimeoutError: + logger.warning("Orchestrator shutdown timeout, cancelling...") + orchestrator_task.cancel() + try: + await orchestrator_task + except asyncio.CancelledError: + pass + + except KeyboardInterrupt: + logger.info("Keyboard interrupt received") + finally: + # Ensure clean shutdown + await orchestrator.shutdown() + await redis.aclose() + + logger.info("Campaign Orchestrator service stopped") + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/api/services/campaign/rate_limiter.py b/api/services/campaign/rate_limiter.py new file mode 100644 index 0000000..5c1120d --- /dev/null +++ b/api/services/campaign/rate_limiter.py @@ -0,0 +1,256 @@ +import time +import uuid +from typing import Optional + +import redis.asyncio as aioredis +from loguru import logger + +from api.constants import REDIS_URL + + +class RateLimiter: + """Sliding window rate limiter to enforce strict per-second limits and concurrent call limits""" + + def __init__(self): + self.redis_client: Optional[aioredis.Redis] = None + self.stale_call_timeout = 1800 # 30 minutes in seconds + + async def _get_redis(self) -> aioredis.Redis: + """Get or create Redis connection""" + if self.redis_client is None: + self.redis_client = await aioredis.from_url( + REDIS_URL, decode_responses=True + ) + return self.redis_client + + async def acquire_token(self, organization_id: int, rate_limit: int = 1) -> bool: + """ + Enforces strict rate limit: max N calls per rolling second window + Returns True if allowed, False if rate limited + """ + redis_client = await self._get_redis() + + key = f"rate_limit:{organization_id}" + now = time.time() + window_start = now - 1.0 # 1 second sliding window + + # Lua script for atomic sliding window operation + lua_script = """ + local key = KEYS[1] + local now = tonumber(ARGV[1]) + local window_start = tonumber(ARGV[2]) + local max_requests = tonumber(ARGV[3]) + + -- Remove timestamps older than window + redis.call('ZREMRANGEBYSCORE', key, 0, window_start) + + -- Count requests in current window + local current_requests = redis.call('ZCARD', key) + + if current_requests < max_requests then + -- Add current timestamp + redis.call('ZADD', key, now, now) + redis.call('EXPIRE', key, 2) -- Expire after 2 seconds + return 1 + else + return 0 + end + """ + + try: + result = await redis_client.eval( + lua_script, 1, key, now, window_start, rate_limit + ) + return bool(result) + except Exception as e: + logger.error(f"Rate limiter error: {e}") + # On error, be conservative and deny + return False + + async def get_next_available_slot( + self, organization_id: int, rate_limit: int = 1 + ) -> float: + """ + Returns seconds until next available slot + Useful for implementing retry with backoff + """ + redis_client = await self._get_redis() + + key = f"rate_limit:{organization_id}" + + try: + # Get oldest timestamp in current window + oldest = await redis_client.zrange(key, 0, 0, withscores=True) + if not oldest: + return 0.0 # Can call immediately + + oldest_time = oldest[0][1] + next_available = oldest_time + 1.0 # 1 second after oldest + wait_time = max(0, next_available - time.time()) + + return wait_time + except Exception as e: + logger.error(f"Rate limiter get_next_available_slot error: {e}") + return 1.0 # Default wait time on error + + async def try_acquire_concurrent_slot( + self, organization_id: int, max_concurrent: int = 20 + ) -> Optional[str]: + """ + Try to acquire a concurrent call slot. + Returns a unique slot_id if successful, None if limit reached. + """ + redis_client = await self._get_redis() + + concurrent_key = f"concurrent_calls:{organization_id}" + now = time.time() + stale_cutoff = now - self.stale_call_timeout + + # Lua script for atomic operation + lua_script = """ + local key = KEYS[1] + local now = tonumber(ARGV[1]) + local max_concurrent = tonumber(ARGV[2]) + local stale_cutoff = tonumber(ARGV[3]) + local slot_id = ARGV[4] + + -- Remove stale entries (older than 30 minutes) + redis.call('ZREMRANGEBYSCORE', key, 0, stale_cutoff) + + -- Get current count + local current_count = redis.call('ZCARD', key) + + if current_count < max_concurrent then + -- Add new slot + redis.call('ZADD', key, now, slot_id) + redis.call('EXPIRE', key, 3600) -- Expire after 1 hour + return slot_id + else + return nil + end + """ + + # Generate unique slot ID (timestamp + random component) + slot_id = f"{int(now * 1000)}_{uuid.uuid4().hex[:8]}" + + try: + result = await redis_client.eval( + lua_script, + 1, + concurrent_key, + now, + max_concurrent, + stale_cutoff, + slot_id, + ) + return result + except Exception as e: + logger.error(f"Concurrent limiter error: {e}") + return None + + async def release_concurrent_slot(self, organization_id: int, slot_id: str) -> bool: + """ + Release a concurrent call slot. + Returns True if slot was released, False otherwise. + """ + if not slot_id: + return False + + redis_client = await self._get_redis() + concurrent_key = f"concurrent_calls:{organization_id}" + + try: + removed = await redis_client.zrem(concurrent_key, slot_id) + if removed: + logger.debug( + f"Released concurrent slot {slot_id} for org {organization_id}" + ) + return bool(removed) + except Exception as e: + logger.error(f"Error releasing concurrent slot: {e}") + return False + + async def get_concurrent_count(self, organization_id: int) -> int: + """ + Get current number of active concurrent calls for an organization. + Automatically cleans up stale entries. + """ + redis_client = await self._get_redis() + concurrent_key = f"concurrent_calls:{organization_id}" + + try: + # Clean up stale entries first + stale_cutoff = time.time() - self.stale_call_timeout + await redis_client.zremrangebyscore(concurrent_key, 0, stale_cutoff) + + # Get current count + count = await redis_client.zcard(concurrent_key) + return count + except Exception as e: + logger.error(f"Error getting concurrent count: {e}") + return 0 + + async def store_workflow_slot_mapping( + self, workflow_run_id: int, organization_id: int, slot_id: str + ) -> bool: + """ + Store the mapping between workflow_run_id and its concurrent slot. + Used for cleanup when calls complete. + """ + redis_client = await self._get_redis() + mapping_key = f"workflow_slot_mapping:{workflow_run_id}" + + try: + # Store as a hash with TTL + await redis_client.hset( + mapping_key, mapping={"org_id": organization_id, "slot_id": slot_id} + ) + # Set expiry to match stale timeout + await redis_client.expire(mapping_key, self.stale_call_timeout) + return True + except Exception as e: + logger.error(f"Error storing workflow slot mapping: {e}") + return False + + async def get_workflow_slot_mapping( + self, workflow_run_id: int + ) -> Optional[tuple[int, str]]: + """ + Get the concurrent slot mapping for a workflow run. + Returns (organization_id, slot_id) tuple or None if not found. + """ + redis_client = await self._get_redis() + mapping_key = f"workflow_slot_mapping:{workflow_run_id}" + + try: + mapping = await redis_client.hgetall(mapping_key) + if mapping and "org_id" in mapping and "slot_id" in mapping: + return (int(mapping["org_id"]), mapping["slot_id"]) + return None + except Exception as e: + logger.error(f"Error getting workflow slot mapping: {e}") + return None + + async def delete_workflow_slot_mapping(self, workflow_run_id: int) -> bool: + """ + Delete the workflow slot mapping after releasing the slot. + """ + redis_client = await self._get_redis() + mapping_key = f"workflow_slot_mapping:{workflow_run_id}" + + try: + deleted = await redis_client.delete(mapping_key) + return bool(deleted) + except Exception as e: + logger.error(f"Error deleting workflow slot mapping: {e}") + return False + + async def close(self): + """Close Redis connection""" + if self.redis_client: + await self.redis_client.close() + self.redis_client = None + + +# Global rate limiter instance +rate_limiter = RateLimiter() diff --git a/api/services/campaign/runner.py b/api/services/campaign/runner.py new file mode 100644 index 0000000..d4e08e1 --- /dev/null +++ b/api/services/campaign/runner.py @@ -0,0 +1,122 @@ +from datetime import UTC, datetime +from typing import Any, Dict + +from loguru import logger + +from api.db import db_client +from api.tasks.arq import enqueue_job +from api.tasks.function_names import FunctionNames + + +class CampaignRunnerService: + """Orchestrates campaign execution""" + + async def start_campaign(self, campaign_id: int) -> None: + """Entry point - updates state to 'syncing' and enqueues sync task""" + # Get campaign + campaign = await db_client.get_campaign_by_id(campaign_id) + if not campaign: + raise ValueError(f"Campaign {campaign_id} not found") + + if campaign.state != "created": + raise ValueError( + f"Campaign must be in 'created' state to start, current state: {campaign.state}" + ) + + # Update campaign state to syncing + await db_client.update_campaign( + campaign_id=campaign_id, + state="syncing", + started_at=datetime.now(UTC), + source_sync_status="in_progress", + ) + + # Enqueue the sync task + await enqueue_job(FunctionNames.SYNC_CAMPAIGN_SOURCE, campaign_id) + + logger.info(f"Campaign {campaign_id} started, syncing source data") + + async def pause_campaign(self, campaign_id: int) -> None: + """Pauses active campaign processing""" + campaign = await db_client.get_campaign_by_id(campaign_id) + if not campaign: + raise ValueError(f"Campaign {campaign_id} not found") + + if campaign.state not in ["running", "syncing"]: + raise ValueError( + f"Campaign must be in 'running' or 'syncing' state to pause, current state: {campaign.state}" + ) + + # Update state to paused + await db_client.update_campaign(campaign_id=campaign_id, state="paused") + + logger.info(f"Campaign {campaign_id} paused") + + async def resume_campaign(self, campaign_id: int) -> None: + """Resumes paused campaign""" + campaign = await db_client.get_campaign_by_id(campaign_id) + if not campaign: + raise ValueError(f"Campaign {campaign_id} not found") + + if campaign.state != "paused": + raise ValueError( + f"Campaign must be in 'paused' state to resume, current state: {campaign.state}" + ) + + # Update state to running + await db_client.update_campaign(campaign_id=campaign_id, state="running") + + # Enqueue process batch task to continue processing + await enqueue_job(FunctionNames.PROCESS_CAMPAIGN_BATCH, campaign_id) + + logger.info(f"Campaign {campaign_id} resumed") + + async def get_campaign_status(self, campaign_id: int) -> Dict[str, Any]: + """Returns detailed campaign status""" + campaign = await db_client.get_campaign_by_id(campaign_id) + if not campaign: + raise ValueError(f"Campaign {campaign_id} not found") + + # Count failed calls from workflow runs + failed_calls = await self._count_failed_campaign_calls(campaign_id) + + return { + "campaign_id": campaign_id, + "state": campaign.state, + "total_rows": campaign.total_rows or 0, + "processed_rows": campaign.processed_rows, + "failed_calls": failed_calls, + "progress_percentage": ( + (campaign.processed_rows / campaign.total_rows * 100) + if campaign.total_rows and campaign.total_rows > 0 + else 0 + ), + "source_sync": { + "status": campaign.source_sync_status, + "last_synced_at": campaign.source_last_synced_at, + "error": campaign.source_sync_error, + }, + "rate_limit": campaign.rate_limit_per_second, + "started_at": campaign.started_at, + "completed_at": campaign.completed_at, + } + + async def _count_failed_campaign_calls(self, campaign_id: int) -> int: + """Count failed calls by examining workflow_run Twilio callbacks""" + # Get all workflow runs for this campaign + workflow_runs = await db_client.get_workflow_runs_by_campaign(campaign_id) + + failed_count = 0 + for run in workflow_runs: + callbacks = run.logs.get("twilio_status_callbacks", []) + if callbacks: + # Check final status + final_status = callbacks[-1].get("status", "").lower() + if final_status in ["failed", "busy", "no-answer"]: + failed_count += 1 + + return failed_count + + +# Global instance +campaign_runner_service = CampaignRunnerService() diff --git a/api/services/campaign/source_sync.py b/api/services/campaign/source_sync.py new file mode 100644 index 0000000..f92bdfd --- /dev/null +++ b/api/services/campaign/source_sync.py @@ -0,0 +1,49 @@ +from abc import ABC, abstractmethod +from typing import Any, Dict + +from loguru import logger + + +class CampaignSourceSyncService(ABC): + """Base class for campaign data source synchronization""" + + @abstractmethod + async def sync_source_data(self, campaign_id: int) -> int: + """ + Fetches data from source and creates queued_runs + Each record gets a unique source_uuid based on source type + Returns: number of records synced + """ + pass + + @abstractmethod + async def validate_source_schema(self, source_config: Dict[str, Any]) -> bool: + """Validates required fields exist in source""" + pass + + async def get_source_credentials( + self, organization_id: int, source_type: str + ) -> Dict[str, Any]: + """Gets OAuth tokens or API credentials via Nango""" + # This would be implemented to work with Nango service + # For now, returning placeholder + logger.info( + f"Getting credentials for org {organization_id}, source {source_type}" + ) + return {} + + +def get_sync_service(source_type: str) -> CampaignSourceSyncService: + """Returns appropriate sync service based on source type""" + from .sources.google_sheets import GoogleSheetsSyncService + + services = { + "google-sheet": GoogleSheetsSyncService, + # Add more as needed: "hubspot": HubSpotSyncService, + } + + service_class = services.get(source_type) + if not service_class: + raise ValueError(f"Unknown source type: {source_type}") + + return service_class() diff --git a/api/services/campaign/sources/__init__.py b/api/services/campaign/sources/__init__.py new file mode 100644 index 0000000..3c283ee --- /dev/null +++ b/api/services/campaign/sources/__init__.py @@ -0,0 +1,5 @@ +"""Campaign source sync services""" + +from .google_sheets import GoogleSheetsSyncService + +__all__ = ["GoogleSheetsSyncService"] diff --git a/api/services/campaign/sources/google_sheets.py b/api/services/campaign/sources/google_sheets.py new file mode 100644 index 0000000..5302305 --- /dev/null +++ b/api/services/campaign/sources/google_sheets.py @@ -0,0 +1,180 @@ +import re +from typing import Any, Dict, List + +import httpx +from loguru import logger + +from api.db import db_client +from api.services.campaign.source_sync import CampaignSourceSyncService +from api.services.integrations.nango import NangoService + + +class GoogleSheetsSyncService(CampaignSourceSyncService): + """Implementation for Google Sheets synchronization""" + + def __init__(self): + self.nango_service = NangoService() + self.sheets_api_base = "https://sheets.googleapis.com/v4/spreadsheets" + + async def sync_source_data(self, campaign_id: int) -> int: + """ + Fetches data from Google Sheets and creates queued_runs + """ + # Get campaign + campaign = await db_client.get_campaign_by_id(campaign_id) + if not campaign: + raise ValueError(f"Campaign {campaign_id} not found") + + # 1. Get Google Sheets integration for the organization + integrations = await db_client.get_integrations_by_organization_id( + campaign.organization_id + ) + integration = None + for intg in integrations: + if intg.provider == "google-sheet" and intg.is_active: + integration = intg + break + + if not integration: + raise ValueError("Google Sheets integration not found or inactive") + + # 2. Get OAuth token via Nango using the integration_id (which is the Nango connection ID) + token_data = await self.nango_service.get_access_token( + connection_id=integration.integration_id, provider_config_key="google-sheet" + ) + access_token = token_data["credentials"]["access_token"] + + # 3. Extract sheet ID from URL + sheet_id = self._extract_sheet_id(campaign.source_id) + + # 4. Get sheet metadata (to find data range) + metadata = await self._get_sheet_metadata(sheet_id, access_token) + if not metadata.get("sheets"): + raise ValueError("No sheets found in the spreadsheet") + + sheet_name = metadata["sheets"][0]["properties"]["title"] + + # 5. Fetch all data from sheet + sheet_data = await self._fetch_sheet_data( + sheet_id, + f"{sheet_name}!A:Z", # Get all columns A-Z + access_token, + ) + + # 6. Convert to queued_runs + if not sheet_data or len(sheet_data) < 2: + logger.warning(f"No data found in sheet for campaign {campaign_id}") + return 0 + + headers = sheet_data[0] # First row is headers + rows = sheet_data[1:] # Rest is data + + queued_runs = [] + for idx, row_values in enumerate(rows, 1): + # Pad row to match headers length + padded_row = row_values + [""] * (len(headers) - len(row_values)) + + # Create context variables dict + context_vars = dict(zip(headers, padded_row)) + + # Skip if no phone number + if not context_vars.get("phone_number"): + logger.debug(f"Skipping row {idx}: no phone_number") + continue + + # Generate unique source UUID + source_uuid = f"sheet_{sheet_id}_row_{idx}" + + queued_runs.append( + { + "campaign_id": campaign_id, + "source_uuid": source_uuid, + "context_variables": context_vars, + "state": "queued", + } + ) + + # 7. Bulk insert + if queued_runs: + await db_client.bulk_create_queued_runs(queued_runs) + logger.info( + f"Created {len(queued_runs)} queued runs for campaign {campaign_id}" + ) + + # 8. Update campaign total_rows + await db_client.update_campaign( + campaign_id=campaign_id, + total_rows=len(queued_runs), + source_sync_status="completed", + ) + + return len(queued_runs) + + async def _fetch_sheet_data( + self, sheet_id: str, range: str, access_token: str + ) -> List[List[str]]: + """Fetch data from Google Sheets API""" + url = f"{self.sheets_api_base}/{sheet_id}/values/{range}" + headers = {"Authorization": f"Bearer {access_token}"} + + async with httpx.AsyncClient() as client: + response = await client.get(url, headers=headers) + response.raise_for_status() + + data = response.json() + return data.get("values", []) + + async def _get_sheet_metadata( + self, sheet_id: str, access_token: str + ) -> Dict[str, Any]: + """Get sheet metadata including sheet names""" + url = f"{self.sheets_api_base}/{sheet_id}" + headers = {"Authorization": f"Bearer {access_token}"} + + logger.debug(f"Fetching sheet metadata from URL: {url}") + logger.debug(f"Using sheet_id: {sheet_id}") + + async with httpx.AsyncClient() as client: + try: + response = await client.get(url, headers=headers) + response.raise_for_status() + return response.json() + except httpx.HTTPStatusError as e: + logger.error(f"HTTP error {e.response.status_code} for URL: {url}") + logger.error(f"Response body: {e.response.text}") + raise + except Exception as e: + logger.error(f"Error fetching sheet metadata: {e}") + raise + + def _extract_sheet_id(self, sheet_url: str) -> str: + """ + Extract sheet ID from various Google Sheets URL formats: + - https://docs.google.com/spreadsheets/d/{id}/edit + - https://docs.google.com/spreadsheets/d/{id}/edit#gid=0 + """ + pattern = r"/spreadsheets/d/([a-zA-Z0-9-_]+)" + match = re.search(pattern, sheet_url) + if match: + return match.group(1) + raise ValueError(f"Invalid Google Sheets URL: {sheet_url}") + + async def validate_source_schema(self, source_config: Dict[str, Any]) -> bool: + """Validate that required columns exist""" + required_columns = ["phone_number", "first_name", "last_name"] + + # Fetch just the header row + sheet_id = self._extract_sheet_id(source_config["source_id"]) + access_token = source_config["access_token"] + + headers = await self._fetch_sheet_data( + sheet_id, + "A1:Z1", # Just first row + access_token, + ) + + if not headers: + return False + + header_row = headers[0] + return all(col in header_row for col in required_columns) diff --git a/api/services/configuration/__init__.py b/api/services/configuration/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/services/configuration/check_validity.py b/api/services/configuration/check_validity.py new file mode 100644 index 0000000..5167e37 --- /dev/null +++ b/api/services/configuration/check_validity.py @@ -0,0 +1,153 @@ +from typing import Dict, Optional, TypedDict + +import openai +from deepgram import ( + DeepgramClient, + LiveOptions, +) +from groq import Groq + +# try: +# from pyneuphonic import Neuphonic +# except ImportError: +# Neuphonic = None +from api.schemas.user_configuration import ( + UserConfiguration, +) +from api.services.configuration.registry import ServiceConfig, ServiceProviders + + +class APIKeyStatus(TypedDict): + model: str + message: str + + +class APIKeyStatusResponse(TypedDict): + status: list[APIKeyStatus] + + +class UserConfigurationValidator: + def __init__(self): + self._provider_api_key_validity_status: Dict[str, bool] = {} + self._validator_map = { + ServiceProviders.OPENAI.value: self._check_openai_api_key, + ServiceProviders.DEEPGRAM.value: self._check_deepgram_api_key, + ServiceProviders.GROQ.value: self._check_groq_api_key, + ServiceProviders.ELEVENLABS.value: self._validate_elevenlabs_api_key, + ServiceProviders.GOOGLE.value: self._check_google_api_key, + ServiceProviders.AZURE.value: self._check_azure_api_key, + ServiceProviders.CARTESIA.value: self._check_cartesia_api_key, + ServiceProviders.DOGRAH.value: self._check_dograh_api_key, + } + + async def validate(self, configuration: UserConfiguration) -> APIKeyStatusResponse: + status_list = [] + + status_list.extend(self._validate_service(configuration.llm, "llm")) + status_list.extend(self._validate_service(configuration.stt, "stt")) + status_list.extend(self._validate_service(configuration.tts, "tts")) + + if status_list: + raise ValueError(status_list) + + return {"status": [{"model": "all", "message": "ok"}]} + + def _validate_service( + self, service_config: Optional[ServiceConfig], service_name: str + ) -> list[APIKeyStatus]: + """Validate a service configuration and return any error statuses.""" + if not service_config: + return [{"model": service_name, "message": "API key is missing"}] + + provider = service_config.provider + api_key = service_config.api_key + + if not self._check_api_key(provider, api_key): + return [{"model": service_name, "message": f"Invalid {provider} API key"}] + + return [] + + def _check_api_key(self, provider: str, api_key: str) -> bool: + """Check if an API key for a provider is valid.""" + validator = self._validator_map.get(provider) + if not validator: + return False + + return validator(provider, api_key) + + def _check_openai_api_key(self, model: str, api_key: str) -> bool: + if model in self._provider_api_key_validity_status: + return self._provider_api_key_validity_status[model] + + client = openai.OpenAI(api_key=api_key) + try: + client.models.list() + self._provider_api_key_validity_status[model] = True + except openai.AuthenticationError: + self._provider_api_key_validity_status[model] = False + return self._provider_api_key_validity_status[model] + + def _check_deepgram_api_key(self, model: str, api_key: str) -> bool: + if model in self._provider_api_key_validity_status: + return self._provider_api_key_validity_status[model] + + deepgram = DeepgramClient(api_key) + dg_connection = deepgram.listen.websocket.v("1") + + try: + options = LiveOptions( + model="nova-2", + language="en-US", + smart_format=True, + ) + + connected = dg_connection.start(options) + self._provider_api_key_validity_status[model] = connected + finally: + dg_connection.finish() + return self._provider_api_key_validity_status[model] + + def _check_groq_api_key(self, model: str, api_key: str) -> bool: + if model in self._provider_api_key_validity_status: + return self._provider_api_key_validity_status[model] + + client = Groq(api_key=api_key) + try: + client.models.list() + self._provider_api_key_validity_status[model] = True + except Exception: + self._provider_api_key_validity_status[model] = False + return self._provider_api_key_validity_status[model] + + def _validate_elevenlabs_api_key(self, model: str, api_key: str) -> bool: + return True + + def _check_google_api_key(self, model: str, api_key: str) -> bool: + return True + + def _check_azure_api_key(self, model: str, api_key: str) -> bool: + return True + + def _check_cartesia_api_key(self, model: str, api_key: str) -> bool: + return True + + def _check_dograh_api_key(self, model: str, api_key: str) -> bool: + return True + + # def _check_neuphonic_api_key(self, model: str, api_key: str) -> bool: + # if not Neuphonic: + # self._provider_api_key_validity_status[model] = False + # return self._provider_api_key_validity_status[model] + + # if model in self._provider_api_key_validity_status: + # return self._provider_api_key_validity_status[model] + + # client = Neuphonic(api_key=api_key) + # try: + # response = client.voices.list() # get's all available voices + # voices = response.data["voices"] + # self._provider_api_key_validity_status[model] = True + # except Exception: + # self._provider_api_key_validity_status[model] = False + + # return self._provider_api_key_validity_status[model] diff --git a/api/services/configuration/defaults.py b/api/services/configuration/defaults.py new file mode 100644 index 0000000..c2058e1 --- /dev/null +++ b/api/services/configuration/defaults.py @@ -0,0 +1,34 @@ +from __future__ import annotations + +"""Utilities for building default service configurations for a new user. + +The defaults follow the same provider choices exposed by `/user/configurations/defaults`. +Values for `api_key` are pulled from environment variables named *{PROVIDER}_API_KEY*. + +If an environment variable is missing, that particular provider configuration is +left as ``None``. +""" + + +from api.services.configuration.registry import ( + DeepgramSTTConfiguration, + ElevenlabsTTSConfiguration, + OpenAILLMService, + ServiceProviders, +) + +# Mapping of service to (provider enum, configuration class) +_DEFAULTS = { + "llm": (ServiceProviders.OPENAI, OpenAILLMService), + "tts": (ServiceProviders.ELEVENLABS, ElevenlabsTTSConfiguration), + "stt": (ServiceProviders.DEEPGRAM, DeepgramSTTConfiguration), +} + +# Public mapping of service name -> default provider +DEFAULT_SERVICE_PROVIDERS = { + field: provider for field, (provider, _) in _DEFAULTS.items() +} + +__all__ = [ + "DEFAULT_SERVICE_PROVIDERS", +] diff --git a/api/services/configuration/masking.py b/api/services/configuration/masking.py new file mode 100644 index 0000000..4d6488d --- /dev/null +++ b/api/services/configuration/masking.py @@ -0,0 +1,69 @@ +from __future__ import annotations + +"""Utilities for masking API keys before they are sent to the client. + +The rules are simple: +1. Only expose the last *visible* characters (default 4) of a key. +2. Incoming masked keys are considered a placeholder – if they equal the mask of + the already-stored key, we treat them as *unchanged* and keep the real value + in storage. +""" + +from typing import Any, Dict, Optional + +from api.schemas.user_configuration import UserConfiguration +from api.services.configuration.registry import ServiceConfig + +VISIBLE_CHARS = 4 # number of trailing characters to reveal +MASK_CHAR = "*" + + +def mask_key(real_key: str, visible: int = VISIBLE_CHARS) -> str: + """Return a masked representation of *real_key*. + + Example: + >>> mask_key("sk-1234567890abcdef") + '****************cdef' + """ + if real_key is None: + return "" + + if visible <= 0 or visible >= len(real_key): + # mask entire key or nothing to mask – edge-cases + return MASK_CHAR * len(real_key) + + masked_part = MASK_CHAR * (len(real_key) - visible) + return f"{masked_part}{real_key[-visible:]}" + + +def is_mask_of(masked: str, real_key: str) -> bool: + """Return *True* if *masked* equals the mask of *real_key* under the current rules.""" + return mask_key(real_key) == masked + + +# --------------------------------------------------------------------------- +# High-level helpers for UserConfiguration objects +# --------------------------------------------------------------------------- + + +def _mask_service(service_cfg: Optional[ServiceConfig]) -> Optional[Dict[str, Any]]: + if service_cfg is None: + return None + + # Work on a dict copy so we don't mutate original models + data = service_cfg.model_dump() + if "api_key" in data and data["api_key"]: + data["api_key"] = mask_key(data["api_key"]) + return data + + +def mask_user_config(config: UserConfiguration) -> Dict[str, Any]: + """Return a JSON-serialisable dict of *config* with every api_key masked.""" + + return { + "llm": _mask_service(config.llm), + "tts": _mask_service(config.tts), + "stt": _mask_service(config.stt), + "test_phone_number": config.test_phone_number, + "timezone": config.timezone, + } diff --git a/api/services/configuration/merge.py b/api/services/configuration/merge.py new file mode 100644 index 0000000..ac3f424 --- /dev/null +++ b/api/services/configuration/merge.py @@ -0,0 +1,75 @@ +from __future__ import annotations + +"""Helpers for merging incoming user-configuration updates with what is already +stored, while honouring masked API keys. +""" + +from typing import Dict + +from api.schemas.user_configuration import UserConfiguration +from api.services.configuration.masking import is_mask_of + +SERVICE_FIELDS = ("llm", "tts", "stt") + + +def merge_user_configurations( + existing: UserConfiguration, incoming_partial: Dict[str, dict] +) -> UserConfiguration: + """Merge *incoming_partial* onto *existing* and return a new UserConfiguration. + + *incoming_partial* is the body of the PUT request (already `model_dump()`ed or + extracted via Pydantic `model_dump`). + + Rules: + 1. If a service block is absent in the request, keep the existing one. + 2. If provider unchanged and the api_key field is either missing or equal to + the masked placeholder, preserve the existing real key. + 3. If provider changes, the incoming api_key is used verbatim (validation + will fail later if it is missing). + 4. Non-service top-level fields (e.g. `test_phone_number`) are overwritten + when supplied. + """ + + merged = existing.model_dump(exclude_none=True) + + def _merge_service_block(service_name: str): + incoming_cfg = incoming_partial.get(service_name) + if incoming_cfg is None: + return # nothing to do + + old_cfg = merged.get(service_name, {}) + + provider_changed = ( + old_cfg.get("provider") is not None + and incoming_cfg.get("provider") is not None + and incoming_cfg.get("provider") != old_cfg.get("provider") + ) + + incoming_api_key = incoming_cfg.get("api_key") + + if not provider_changed: + # conditional preservation of api_key + if incoming_api_key is not None: + if ( + old_cfg + and "api_key" in old_cfg + and is_mask_of(incoming_api_key, old_cfg["api_key"]) + ): + incoming_cfg["api_key"] = old_cfg["api_key"] + else: + if "api_key" in old_cfg: + incoming_cfg["api_key"] = old_cfg["api_key"] + + merged[service_name] = incoming_cfg + + for service in SERVICE_FIELDS: + _merge_service_block(service) + + # other simple fields + if "test_phone_number" in incoming_partial: + merged["test_phone_number"] = incoming_partial["test_phone_number"] + + if "timezone" in incoming_partial: + merged["timezone"] = incoming_partial["timezone"] + + return UserConfiguration.model_validate(merged) diff --git a/api/services/configuration/registry.py b/api/services/configuration/registry.py new file mode 100644 index 0000000..2eb468a --- /dev/null +++ b/api/services/configuration/registry.py @@ -0,0 +1,356 @@ +from enum import Enum, auto +from typing import Annotated, Dict, Literal, Type, TypeVar, Union + +from pydantic import BaseModel, Field, computed_field + + +class ServiceType(Enum): + LLM = auto() + TTS = auto() + STT = auto() + + +class ServiceProviders(str, Enum): + OPENAI = "openai" + DEEPGRAM = "deepgram" + GROQ = "groq" + CARTESIA = "cartesia" + # NEUPHONIC = "neuphonic" + ELEVENLABS = "elevenlabs" + GOOGLE = "google" + AZURE = "azure" + DOGRAH = "dograh" + + +class BaseServiceConfiguration(BaseModel): + provider: Literal[ + ServiceProviders.OPENAI, + ServiceProviders.DEEPGRAM, + ServiceProviders.GROQ, + ServiceProviders.ELEVENLABS, + ServiceProviders.GOOGLE, + ServiceProviders.AZURE, + ServiceProviders.DOGRAH, + ] + api_key: str + + +class BaseLLMConfiguration(BaseServiceConfiguration): + model: str + + +class BaseTTSConfiguration(BaseServiceConfiguration): + model: str + + +class BaseSTTConfiguration(BaseServiceConfiguration): + model: str + + +# Unified registry for all service types +REGISTRY: Dict[ServiceType, Dict[str, Type[BaseServiceConfiguration]]] = { + ServiceType.LLM: {}, + ServiceType.TTS: {}, + ServiceType.STT: {}, +} + +T = TypeVar("T", bound=BaseServiceConfiguration) + + +def register_service(service_type: ServiceType): + """Generic decorator for registering service configurations""" + + def decorator(cls: Type[T]) -> Type[T]: + # Get provider from class attributes or field defaults + provider = getattr(cls, "provider", None) + if provider is None: + # Try to get from model fields + provider = cls.model_fields.get("provider", None) + if provider is not None: + provider = provider.default + if provider is None: + raise ValueError(f"Provider not specified for {cls.__name__}") + + REGISTRY[service_type][provider] = cls + return cls + + return decorator + + +# Convenience decorators +def register_llm(cls: Type[BaseLLMConfiguration]): + return register_service(ServiceType.LLM)(cls) + + +def register_tts(cls: Type[BaseTTSConfiguration]): + return register_service(ServiceType.TTS)(cls) + + +def register_stt(cls: Type[BaseSTTConfiguration]): + return register_service(ServiceType.STT)(cls) + + +###################################################### LLM ######################################################################## + + +class OpenAIModel(str, Enum): + GPT3_5_TURBO = "gpt-3.5-turbo" + GPT4_1 = "gpt-4.1" + GPT4_1_MINI = "gpt-4.1-mini" + GPT4_1_NANO = "gpt-4.1-nano" + GPT5 = "gpt-5" + GPT5_MINI = "gpt-5-mini" + GPT5_NANO = "gpt-5-nano" + + +@register_llm +class OpenAILLMService(BaseLLMConfiguration): + provider: Literal[ServiceProviders.OPENAI] = ServiceProviders.OPENAI + model: OpenAIModel = OpenAIModel.GPT4_1 + api_key: str + + +class GoogleModel(str, Enum): + GEMINI_2_0_FLASH = "gemini-2.0-flash" + GEMINI_2_0_FLASH_LITE = "gemini-2.0-flash-lite" + GEMINI_2_5_FLASH = "gemini-2.5-flash" + GEMINI_2_5_FLASH_LITE = "gemini-2.5-flash-lite" + + +@register_llm +class GoogleLLMService(BaseLLMConfiguration): + provider: Literal[ServiceProviders.GOOGLE] = ServiceProviders.GOOGLE + model: GoogleModel = GoogleModel.GEMINI_2_0_FLASH + api_key: str + + +class GroqModel(str, Enum): + LLAMA_3_3_70B = "llama-3.3-70b-versatile" + DEEPSEEK_R1_DISTILL_LLAMA_70B = "deepseek-r1-distill-llama-70b" + QUEN_QWQ_32B = "qwen-qwq-32b" + LLAMA_4_SCOUT_17B_16E_INSTRUCT = "meta-llama/llama-4-scout-17b-16e-instruct" + LLAMA_4_MAVERICK_17B_128E_INSTRUCT = "meta-llama/llama-4-maverick-17b-128e-instruct" + GEMMA2_9B_IT = "gemma2-9b-it" + LLAMA_3_1_8B_INSTANT = "llama-3.1-8b-instant" + OPENAI_GPT_OSS_120B = "openai/gpt-oss-120b" + + +@register_llm +class GroqLLMService(BaseLLMConfiguration): + provider: Literal[ServiceProviders.GROQ] = ServiceProviders.GROQ + model: GroqModel = GroqModel.LLAMA_3_3_70B + api_key: str + + +class AzureModel(str, Enum): + GPT4_1_MINI = "gpt-4.1-mini" + + +@register_llm +class AzureLLMService(BaseLLMConfiguration): + provider: Literal[ServiceProviders.AZURE] = ServiceProviders.AZURE + model: AzureModel = AzureModel.GPT4_1_MINI + api_key: str + endpoint: str + + +# Dograh LLM Service +class DograhLLMModel(str, Enum): + DEFAULT = "default" + + +@register_llm +class DograhLLMService(BaseLLMConfiguration): + provider: Literal[ServiceProviders.DOGRAH] = ServiceProviders.DOGRAH + model: DograhLLMModel = DograhLLMModel.DEFAULT + api_key: str + + +LLMConfig = Annotated[ + Union[ + OpenAILLMService, + GroqLLMService, + GoogleLLMService, + AzureLLMService, + DograhLLMService, + ], + Field(discriminator="provider"), +] + +###################################################### TTS ######################################################################## + + +class DeepgramVoice(str, Enum): + HELENA = "aura-2-helena-en" + THALIA = "aura-2-thalia-en" + + +@register_tts +class DeepgramTTSConfiguration(BaseServiceConfiguration): + provider: Literal[ServiceProviders.DEEPGRAM] = ServiceProviders.DEEPGRAM + voice: DeepgramVoice = DeepgramVoice.HELENA + api_key: str + + @computed_field + @property + def model(self) -> str: + # Deepgram model's name is inferred using the voice name. + # It can either contain aura-2 or aura-1 + if "aura-2" in self.voice: + return "aura-2" + elif "aura-1" in self.voice: + return "aura-1" + else: + # Default fallback + return "aura-2" + + +class ElevenlabsVoice(str, Enum): + ALEXANDRA = "Alexandra - 3dzJXoCYueSQiptQ6euE" + AMY = "Amy - oGn4Ha2pe2vSJkmIJgLQ" + ANGELA = "Angela - FUfBrNit0NNZAwb58KWH" + ARIA = "Aria - 9BWtsMINqrJLrRacOk9x" + CHELSEA = "Chelsea - NHRgOEwqx5WZNClv5sat" + CHRISTINA = "Christina - X03mvPuTfprif8QBAVeJ" + CLARA = "Clara - ZIlrSGI4jZqobxRKprJz" + CLYDE = "Clyde - 2EiwWnXFnvU5JabPnv8n" + DAVE = "Dave - CYw3kZ02Hs0563khs1Fj" + DOMI = "Domi - AZnzlk1XvdvUeBnXmlld" + DREW = "Drew - 29vD33N1CtxCmqQRPOHJ" + EVE = "Eve - BZgkqPqms7Kj9ulSkVzn" + FIN = "Fin - D38z5RcWu1voky8WS1ja" + HOPE_BESTIE = "Hope_Bestie - uYXf8XasLslADfZ2MB4u" + HOPE_NATURAL = "Hope_Natural - OYTbf65OHHFELVut7v2H" + JARNATHAN = "Jarnathan - c6SfcYrb2t09NHXiT80T" + JENNA = "Jenna - C2BkQxlGNzBn7WD2bqfR" + JESSICA = "Jessica - cgSgspJ2msm6clMCkdW9" + JUNIPER = "Juniper - aMSt68OGf4xUZAnLpTU8" + LAUREN = "Lauren - 3liN8q8YoeB9Hk6AboKe" + LINA = "Lina - oWjuL7HSoaEJRMDMP3HD" + OLIVIA = "Olivia - 1rviaVF7GGGkTU36HNpz" + PAUL = "Paul - 5Q0t7uMcjvnagumLfvZi" + RACHEL = "Rachel - 21m00Tcm4TlvDq8ikWAM" + ROGER = "Roger - CwhRBWXzGAHq8TQ4Fs17" + SAMI_REAL = "Sami_Real - O4cGUVdAocn0z4EpQ9yF" + SARAH = "Sarah - EXAVITQu4vr4xnSDxMaL" + + +class ElevenlabsModel(str, Enum): + FLASH_2 = "eleven_flash_v2_5" + + +@register_tts +class ElevenlabsTTSConfiguration(BaseServiceConfiguration): + provider: Literal[ServiceProviders.ELEVENLABS] = ServiceProviders.ELEVENLABS + voice: ElevenlabsVoice = ElevenlabsVoice.RACHEL + speed: float = Field(default=1.0, ge=0.1, le=2.0, description="Speed of the voice") + model: ElevenlabsModel = ElevenlabsModel.FLASH_2 + api_key: str + + +class OpenAIVoice(str, Enum): + ALLY = "alloy" + + +class OpenAITTSModel(str, Enum): + GPT_4o_MINI = "gpt-4o-mini-tts" + + +@register_tts +class OpenAITTSService(BaseTTSConfiguration): + provider: Literal[ServiceProviders.OPENAI] = ServiceProviders.OPENAI + model: OpenAITTSModel = OpenAITTSModel.GPT_4o_MINI + voice: OpenAIVoice = OpenAIVoice.ALLY + api_key: str + + +# class NeuphonicVoice(str, Enum): +# EMILY = "Emily - fc854436-2dac-4d21-aa69-ae17b54e98eb" + + +# @register_tts +# class NeuphonicTTSService(BaseTTSConfiguration): +# provider: Literal[ServiceProviders.NEUPHONIC] = ServiceProviders.NEUPHONIC +# voice: NeuphonicVoice = NeuphonicVoice.EMILY +# model: str = "NA" +# api_key: str + + +# Dograh TTS Service +class DograhVoice(str, Enum): + DEFAULT = "default" + + +class DograhTTSModel(str, Enum): + DEFAULT = "default" + + +@register_tts +class DograhTTSService(BaseTTSConfiguration): + provider: Literal[ServiceProviders.DOGRAH] = ServiceProviders.DOGRAH + model: DograhTTSModel = DograhTTSModel.DEFAULT + voice: DograhVoice = DograhVoice.DEFAULT + api_key: str + + +TTSConfig = Annotated[ + Union[ + DeepgramTTSConfiguration, + OpenAITTSService, + ElevenlabsTTSConfiguration, + DograhTTSService, + ], + Field(discriminator="provider"), +] + +###################################################### STT ######################################################################## + + +class DeepgramSTTModel(str, Enum): + NOVA_3_GENERAL = "nova-3-general" + + +@register_stt +class DeepgramSTTConfiguration(BaseSTTConfiguration): + provider: Literal[ServiceProviders.DEEPGRAM] = ServiceProviders.DEEPGRAM + model: DeepgramSTTModel = DeepgramSTTModel.NOVA_3_GENERAL + api_key: str + + +@register_stt +class CartesiaSTTConfiguration(BaseSTTConfiguration): + provider: Literal[ServiceProviders.CARTESIA] = ServiceProviders.CARTESIA + api_key: str + + +class OpenAISTTModel(str, Enum): + GPT_4o_TRANSCRIBE = "gpt-4o-transcribe" + + +@register_stt +class OpenAISTTConfiguration(BaseSTTConfiguration): + provider: Literal[ServiceProviders.OPENAI] = ServiceProviders.OPENAI + model: OpenAISTTModel = OpenAISTTModel.GPT_4o_TRANSCRIBE + api_key: str + + +# Dograh STT Service +class DograhSTTModel(str, Enum): + DEFAULT = "default" + + +@register_stt +class DograhSTTService(BaseSTTConfiguration): + provider: Literal[ServiceProviders.DOGRAH] = ServiceProviders.DOGRAH + model: DograhSTTModel = DograhSTTModel.DEFAULT + api_key: str + + +STTConfig = Annotated[ + Union[DeepgramSTTConfiguration, OpenAISTTConfiguration, DograhSTTService], + Field(discriminator="provider"), +] + +ServiceConfig = Annotated[ + Union[LLMConfig, TTSConfig, STTConfig], Field(discriminator="provider") +] diff --git a/api/services/filesystem/__init__.py b/api/services/filesystem/__init__.py new file mode 100644 index 0000000..fb716f3 --- /dev/null +++ b/api/services/filesystem/__init__.py @@ -0,0 +1,9 @@ +from .base import BaseFileSystem +from .minio import MinioFileSystem +from .s3 import S3FileSystem + +__all__ = [ + "BaseFileSystem", + "S3FileSystem", + "MinioFileSystem", +] diff --git a/api/services/filesystem/base.py b/api/services/filesystem/base.py new file mode 100644 index 0000000..f0eee3d --- /dev/null +++ b/api/services/filesystem/base.py @@ -0,0 +1,60 @@ +from abc import ABC, abstractmethod +from typing import Any, BinaryIO, Dict, Optional + + +class BaseFileSystem(ABC): + """Abstract base class for filesystem operations.""" + + @abstractmethod + async def acreate_file(self, file_path: str, content: BinaryIO) -> bool: + """Create a new file with the given content. + + Args: + file_path: Path where the file should be created + content: File content as a binary stream + + Returns: + bool: True if file was created successfully, False otherwise + """ + pass + + @abstractmethod + async def aupload_file(self, local_path: str, destination_path: str) -> bool: + """Upload a file from local path to destination. + + Args: + local_path: Path to the local file + destination_path: Path where the file should be uploaded + + Returns: + bool: True if file was uploaded successfully, False otherwise + """ + pass + + @abstractmethod + async def aget_signed_url( + self, file_path: str, expiration: int = 3600 + ) -> Optional[str]: + """Generate a signed URL for temporary access to a file. + + Args: + file_path: Path to the file + expiration: URL expiration time in seconds (default: 1 hour) + + Returns: + Optional[str]: Signed URL if successful, None otherwise + """ + pass + + @abstractmethod + async def aget_file_metadata(self, file_path: str) -> Optional[Dict[str, Any]]: + """Get metadata for a file. + + Args: + file_path: Path to the file + + Returns: + Optional[Dict[str, Any]]: File metadata if successful, None otherwise + Contains: size, created_at, modified_at, etag, etc. + """ + pass diff --git a/api/services/filesystem/local.py b/api/services/filesystem/local.py new file mode 100644 index 0000000..7a9d975 --- /dev/null +++ b/api/services/filesystem/local.py @@ -0,0 +1,95 @@ +import asyncio +import os +from datetime import datetime +from typing import BinaryIO, Optional + +import aiofiles + +from .base import BaseFileSystem + + +class LocalFileSystem(BaseFileSystem): + """Local filesystem implementation.""" + + def __init__(self, base_path: str): + """Initialize local filesystem. + + Args: + base_path: Base directory path for file operations + """ + self.base_path = base_path + os.makedirs(base_path, exist_ok=True) + + def _get_full_path(self, file_path: str) -> str: + """Get the full path by joining with base path.""" + return os.path.join(self.base_path, file_path) + + async def acreate_file(self, file_path: str, content: BinaryIO) -> bool: + try: + full_path = self._get_full_path(file_path) + os.makedirs(os.path.dirname(full_path), exist_ok=True) + + async with aiofiles.open(full_path, "wb") as f: + await f.write(await content.read()) + return True + except Exception: + return False + + async def create_temp_file(self, file_path: str) -> bool: + try: + full_path = self._get_full_path(file_path) + os.makedirs(os.path.dirname(full_path), exist_ok=True) + + return True + except Exception: + return False + + async def aupload_file(self, local_path: str, destination_path: str) -> bool: + try: + full_dest_path = self._get_full_path(destination_path) + os.makedirs(os.path.dirname(full_dest_path), exist_ok=True) + + async with ( + aiofiles.open(local_path, "rb") as src, + aiofiles.open(full_dest_path, "wb") as dst, + ): + await dst.write(await src.read()) + return True + except Exception: + return False + + async def aget_signed_url( + self, file_path: str, expiration: int = 3600 + ) -> Optional[str]: + # For local filesystem, we'll create a temporary symlink with expiration + try: + full_path = self._get_full_path(file_path) + if not os.path.exists(full_path): + return None + + # Create a temporary directory for symlinks + temp_dir = os.path.join(self.base_path, ".temp_links") + os.makedirs(temp_dir, exist_ok=True) + + # Generate a unique temporary filename + temp_filename = ( + f"{datetime.now().timestamp()}_{os.path.basename(file_path)}" + ) + temp_path = os.path.join(temp_dir, temp_filename) + + # Create symlink + os.symlink(full_path, temp_path) + + # Schedule deletion after expiration + async def delete_after_expiration(): + await asyncio.sleep(expiration) + try: + os.remove(temp_path) + except Exception: + pass + + asyncio.create_task(delete_after_expiration()) + + return f"/files/{temp_filename}" + except Exception: + return None diff --git a/api/services/filesystem/minio.py b/api/services/filesystem/minio.py new file mode 100644 index 0000000..bdc0154 --- /dev/null +++ b/api/services/filesystem/minio.py @@ -0,0 +1,137 @@ +import asyncio +from datetime import timedelta +from typing import Any, BinaryIO, Dict, Optional + +from minio import Minio +from minio.error import S3Error + +from .base import BaseFileSystem + + +class MinioFileSystem(BaseFileSystem): + """MinIO implementation of the filesystem interface for OSS users. + + Handles both internal (container-to-container) and external (browser) access: + - endpoint: Used for API operations (uploads, downloads from code) + - public_endpoint: Used for generating browser-accessible presigned URLs + + Auto-detection logic: + 1. If MINIO_PUBLIC_ENDPOINT env var is set, use it (for production/custom domains) + 2. If endpoint is "minio:9000" (Docker internal), auto-use "localhost:9000" for browser + 3. Otherwise, endpoint works for both (e.g., "localhost:9000" in local non-Docker setup) + """ + + def __init__( + self, + endpoint: str = "localhost:9000", + access_key: str = "minioadmin", + secret_key: str = "minioadmin", + bucket_name: str = "voice-audio", + secure: bool = False, + public_endpoint: Optional[str] = None, + ): + self.bucket_name = bucket_name + self.endpoint = endpoint + self.public_endpoint = public_endpoint or endpoint + self.secure = secure + self.access_key = access_key + self.secret_key = secret_key + + # Client for internal operations (uploads, etc.) + self.client = Minio( + endpoint, access_key=access_key, secret_key=secret_key, secure=secure + ) + + # Ensure bucket exists (using internal client) + try: + if not self.client.bucket_exists(self.bucket_name): + self.client.make_bucket(self.bucket_name) + except Exception as e: + # Bucket might already exist or we might be in a restricted environment + pass + + async def acreate_file(self, file_path: str, content: BinaryIO) -> bool: + try: + data = await content.read() + + def _put(): + self.client.put_object( + self.bucket_name, + file_path, + data=bytes(data), + length=len(data), + ) + + await asyncio.to_thread(_put) + return True + except S3Error: + return False + + async def aupload_file(self, local_path: str, destination_path: str) -> bool: + try: + + def _fput(): + self.client.fput_object(self.bucket_name, destination_path, local_path) + + await asyncio.to_thread(_fput) + return True + except S3Error: + return False + + async def aget_signed_url( + self, file_path: str, expiration: int = 3600, force_inline: bool = False + ) -> Optional[str]: + try: + + def _presign(): + response_headers = None + if force_inline and file_path.endswith(".txt"): + response_headers = { + "response-content-type": "text/plain", + "response-content-disposition": "inline", + } + + # Generate URL with the main client + url = self.client.presigned_get_object( + self.bucket_name, + file_path, + expires=timedelta(seconds=expiration), + response_headers=response_headers, + ) + + # If we have different public endpoint, replace it in the URL + if self.endpoint != self.public_endpoint: + # Simple string replacement since presigned URLs are just strings + # Replace the endpoint in the URL + url = url.replace( + f"://{self.endpoint}/", f"://{self.public_endpoint}/" + ) + url = url.replace( + f"Host={self.endpoint}", f"Host={self.public_endpoint}" + ) + + return url + + url = await asyncio.to_thread(_presign) + return url + except S3Error: + return None + + async def aget_file_metadata(self, file_path: str) -> Optional[Dict[str, Any]]: + """Get MinIO object metadata.""" + try: + + def _stat(): + return self.client.stat_object(self.bucket_name, file_path) + + stat = await asyncio.to_thread(_stat) + return { + "size": stat.size, + "created_at": stat.last_modified, + "modified_at": stat.last_modified, + "etag": stat.etag.strip('"') if stat.etag else None, + "content_type": stat.content_type, + "storage_class": None, # MinIO doesn't have storage classes like S3 + } + except S3Error: + return None diff --git a/api/services/filesystem/s3.py b/api/services/filesystem/s3.py new file mode 100644 index 0000000..7155e92 --- /dev/null +++ b/api/services/filesystem/s3.py @@ -0,0 +1,99 @@ +from typing import Any, BinaryIO, Dict, Optional + +import aioboto3 +from botocore.exceptions import ClientError + +from .base import BaseFileSystem + + +class S3FileSystem(BaseFileSystem): + """S3 implementation of the filesystem interface.""" + + def __init__(self, bucket_name: str, region_name: str = "us-east-1"): + """Initialize S3 filesystem. + + Args: + bucket_name: Name of the S3 bucket + region_name: AWS region name + """ + self.bucket_name = bucket_name + self.region_name = region_name + self.session = aioboto3.Session() + + async def acreate_file(self, file_path: str, content: BinaryIO) -> bool: + try: + async with self.session.client( + "s3", region_name=self.region_name + ) as s3_client: + await s3_client.put_object( + Bucket=self.bucket_name, Key=file_path, Body=await content.read() + ) + return True + except ClientError: + return False + + async def aupload_file(self, local_path: str, destination_path: str) -> bool: + try: + async with self.session.client( + "s3", region_name=self.region_name + ) as s3_client: + await s3_client.upload_file( + local_path, self.bucket_name, destination_path + ) + return True + except ClientError: + return False + + async def aget_signed_url( + self, file_path: str, expiration: int = 3600, force_inline: bool = False + ) -> Optional[str]: + """Generate a presigned GET url for the given object. + + For transcript text files we force the response headers so that the + browser renders the content **inline** instead of triggering a file + download. We do this by asking S3 to override the content type & + disposition on the response. + """ + try: + async with self.session.client( + "s3", region_name=self.region_name + ) as s3_client: + params = {"Bucket": self.bucket_name, "Key": file_path} + + # Make transcripts viewable inline in the browser when requested + if force_inline and file_path.endswith(".txt"): + params.update( + { + "ResponseContentType": "text/plain", + "ResponseContentDisposition": "inline", + } + ) + + url = await s3_client.generate_presigned_url( + "get_object", + Params=params, + ExpiresIn=expiration, + ) + return url + except ClientError: + return None + + async def aget_file_metadata(self, file_path: str) -> Optional[Dict[str, Any]]: + """Get S3 object metadata.""" + try: + async with self.session.client( + "s3", region_name=self.region_name + ) as s3_client: + response = await s3_client.head_object( + Bucket=self.bucket_name, Key=file_path + ) + return { + "size": response.get("ContentLength"), + "created_at": response.get("LastModified"), + "modified_at": response.get("LastModified"), + "etag": response.get("ETag", "").strip('"'), + "content_type": response.get("ContentType"), + "storage_class": response.get("StorageClass"), + } + except ClientError: + return None diff --git a/api/services/gender/README.md b/api/services/gender/README.md new file mode 100644 index 0000000..4b15692 --- /dev/null +++ b/api/services/gender/README.md @@ -0,0 +1,219 @@ +# Gender Prediction Service + +An internal service for predicting gender from first names using SSA (Social Security Administration) baby names data with GenderAPI fallback for uncertain predictions. + +## Overview + +This service provides gender prediction with: +- **Local model** built from 145 years of SSA data (1880-2024) +- **104,819 unique names** with confidence scores +- **Compressed storage** (2.21 MB model file) +- **GenderAPI fallback** for unknown or low-confidence names + +## Data Source + +The SSA baby names data is already downloaded in the `names/` directory from: +https://catalog.data.gov/dataset/baby-names-from-social-security-card-applications-national-data + +## Building the Model + +### Prerequisites +- Python 3.11+ +- SSA data files in `names/` directory (already included) + +### Build Steps + +```bash +# Navigate to the gender service directory +cd dograh/api/services/gender/ + +# Run the model builder +python build_model.py +``` + +This will: +1. Process all 145 year files (yob1880.txt to yob2024.txt) +2. Aggregate name counts across all years +3. Calculate confidence scores based on gender ratios +4. Generate a compressed `model.txt` file (~2.21 MB) + +### Model Output + +The builder generates `model.txt` with: +- **Version**: Model version number +- **Metadata**: Build date, statistics, thresholds +- **Names**: Compressed array format `[male_count, female_count, confidence]` + +Example output: +``` +Model saved to: .../services/gender/model.txt +File size: 2.21 MB + +Model statistics: + Total names: 104,819 + High confidence names (≥0.85): 1,711 + Confidence percentage: 1.6% +``` + +## Using the Service + +### Basic Usage + +```python +from services.gender.gender_service import GenderService + +# Initialize the service +service = GenderService() + +# Predict gender for a single name +result = await service.predict("John") +print(f"Gender: {result.gender}") # "male" +print(f"Confidence: {result.confidence}") # 0.996 +print(f"Source: {result.source}") # "model" + +# Get salutation for a name +greeting = await service.get_salutation("John") +print(f"Salutation: {greeting}") # "Mr." + +greeting = await service.get_salutation("Mary") +print(f"Salutation: {greeting}") # "Ms." + +greeting = await service.get_salutation("Unknown") +print(f"Salutation: {greeting}") # "Dear" + +# Clean up +await service.close() +``` + +### Configuration Options + +```python +# Custom configuration +service = GenderService( + model_path="custom/path/to/model.txt", # Default: ./model.txt + confidence_threshold=0.85, # Default: 0.85 + gender_api_key="your-api-key", # Default: from GENDER_API_KEY env + gender_api_url="https://..." # Default: GenderAPI v2 endpoint +) +``` + +### Salutation Generation + +```python +# Get appropriate salutation based on gender +salutation = await service.get_salutation("John") # "Mr." +salutation = await service.get_salutation("Mary") # "Ms." +salutation = await service.get_salutation("Unknown") # "Dear" + +# Custom confidence threshold for salutation +salutation = await service.get_salutation( + "Taylor", # Ambiguous name + confidence_threshold=0.9 # Higher threshold +) # Returns "Dear" due to low confidence + +# Salutation logic: +# - "Mr." for male with confidence >= threshold +# - "Ms." for female with confidence >= threshold +# - "Dear" for unknown gender or low confidence +``` + +### Batch Predictions + +```python +# Predict multiple names at once +names = ["Alice", "Bob", "Charlie", "Diana"] +results = await service.batch_predict(names) + +for name, result in zip(names, results): + print(f"{name}: {result.gender} ({result.confidence:.2f})") +``` + +### Response Format + +```python +class GenderPrediction: + gender: "male" | "female" | "unknown" # Predicted gender + confidence: float # 0.0 to 1.0 + source: "model" | "genderapi" # Prediction source +``` + +### Service Statistics + +```python +# Get service statistics +stats = await service.get_stats() +print(f"Total names: {stats['model']['total_names']:,}") +print(f"High confidence: {stats['model']['high_confidence_names']:,}") +print(f"Cached names in Redis: {stats['cache']['cached_names']}") +print(f"Cache TTL: {stats['cache']['ttl_seconds']} seconds") +print(f"API enabled: {stats['api']['enabled']}") +``` + +### Cache Management + +```python +# Clear Redis cache +await service.clear_cache() +``` + +## Environment Variables + +```bash +# Required: Redis connection URL +export REDIS_URL=redis://localhost:6379 + +# Optional: Set GenderAPI key for fallback +export GENDERAPI_API_KEY=your-api-key-here + +# Optional: Override confidence threshold (default: 0.85) +export CONFIDENCE_THRESHOLD=0.85 +``` + +## How It Works + +1. **Name normalization**: Converts to lowercase, strips whitespace +2. **Local model check**: Looks up name in pre-built model +3. **Confidence evaluation**: If confidence ≥ 0.85, returns local prediction +4. **Redis cache check**: Checks Redis for previously fetched API results +5. **API fallback**: For unknown/low-confidence names, calls GenderAPI +6. **Redis caching**: Stores API responses in Redis with 30-day TTL + +## Testing + +Run the test suite to verify the service: + +```bash +python test_service.py +``` + +This tests: +- High-confidence predictions +- Ambiguous names +- Edge cases (empty strings, special characters) +- International names (with API key) +- Batch predictions + +## Model Updates + +The model should be rebuilt annually when new SSA data is released: + +1. Download new year file (e.g., yob2025.txt) to `names/` directory +2. Run `python build_model.py` to rebuild +3. Test with `python test_service.py` +4. Commit the updated `model.txt` + +## Performance + +- **Model size**: 2.21 MB (compressed JSON) +- **Load time**: < 100ms +- **Prediction time**: < 1ms (local), < 5ms (Redis cache), < 500ms (API) +- **Memory usage**: ~10 MB for model in memory +- **Cache**: Redis-based with 30-day TTL +- **Scalability**: Shared cache across all service instances + +## Limitations + +- Based on US SSA data (may not work well for non-US names) +- Historical bias in older data +- Unisex names have lower confidence +- Requires GenderAPI key for comprehensive coverage diff --git a/api/services/gender/__init__.py b/api/services/gender/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/services/gender/build_model.py b/api/services/gender/build_model.py new file mode 100644 index 0000000..1482138 --- /dev/null +++ b/api/services/gender/build_model.py @@ -0,0 +1,164 @@ +""" +Build gender prediction model from SSA baby names data. +Generates a compressed JSON model file. +""" + +import json +from collections import defaultdict +from datetime import datetime +from math import log10 +from pathlib import Path + +from api.services.gender.constants import CONFIDENCE_THRESHOLD + + +def calculate_confidence(male_count: int, female_count: int) -> float: + """Calculate confidence score for gender prediction.""" + total = male_count + female_count + + # Minimum sample size requirement + if total < 100: + return 0.0 + + # Calculate gender ratio + ratio = max(male_count, female_count) / total + + # Apply logarithmic scaling for sample size + # Max confidence at 100,000 occurrences + sample_weight = min(1.0, log10(total) / 5) + + # Final confidence + return round(ratio * sample_weight, 4) + + +def build_model(): + """Build gender prediction model from SSA data.""" + # Initialize counters + name_stats = defaultdict(lambda: {"M": 0, "F": 0}) + + # Get the path to names directory + names_dir = Path(__file__).parent / "names" + + if not names_dir.exists(): + raise FileNotFoundError(f"Names directory not found: {names_dir}") + + file_count = 0 + # Process all year files + for year_file in sorted(names_dir.glob("yob*.txt")): + file_count += 1 + with open(year_file, "r", encoding="utf-8") as f: + for line in f: + line = line.strip() + if not line: + continue + + parts = line.split(",") + if len(parts) != 3: + continue + + name, gender, count = parts + name = name.lower() + count = int(count) + + # Simple aggregation - no year weighting + name_stats[name][gender] += count + + print(f"Processed {file_count} year files") + + # Build compressed model format + names_data = {} + high_confidence_count = 0 + + for name, stats in name_stats.items(): + male_count = stats["M"] + female_count = stats["F"] + + if male_count == 0 and female_count == 0: + continue + + # Calculate confidence + confidence = calculate_confidence(male_count, female_count) + + # Store as compact array: [male_count, female_count, confidence] + names_data[name] = [male_count, female_count, confidence] + + if confidence >= CONFIDENCE_THRESHOLD: + high_confidence_count += 1 + + # Create final model structure with metadata + model = { + "version": "1.0", + "metadata": { + "confidence_threshold": CONFIDENCE_THRESHOLD, + "total_names": len(names_data), + "high_confidence_names": high_confidence_count, + "build_date": datetime.now().isoformat(), + "source_files": file_count, + }, + "names": names_data, + } + + return model + + +def save_model(model, output_path="model.txt"): + """Save model to compressed JSON file.""" + output_file = Path(__file__).parent / output_path + + # Write compressed JSON (no indentation for smaller size) + with open(output_file, "w", encoding="utf-8") as f: + json.dump(model, f, separators=(",", ":")) + + # Calculate file size + file_size_mb = output_file.stat().st_size / (1024 * 1024) + + print(f"\nModel saved to: {output_file}") + print(f"File size: {file_size_mb:.2f} MB") + print(f"\nModel statistics:") + print(f" Total names: {model['metadata']['total_names']:,}") + print( + f" High confidence names (≥{CONFIDENCE_THRESHOLD}): {model['metadata']['high_confidence_names']:,}" + ) + print( + f" Confidence percentage: {model['metadata']['high_confidence_names'] / model['metadata']['total_names'] * 100:.1f}%" + ) + + +def test_model(model): + """Test model with sample names.""" + print("\nSample predictions:") + test_names = [ + "john", + "mary", + "alex", + "taylor", + "michael", + "sarah", + "jordan", + "casey", + ] + + for name in test_names: + if name in model["names"]: + male_count, female_count, confidence = model["names"][name] + gender = "male" if male_count > female_count else "female" + print( + f" {name.capitalize():10} -> {gender:6} (confidence: {confidence:.3f}, M:{male_count:,} F:{female_count:,})" + ) + else: + print(f" {name.capitalize():10} -> not found in dataset") + + +if __name__ == "__main__": + print("Building gender prediction model from SSA data...") + print("=" * 50) + + try: + model = build_model() + save_model(model) + test_model(model) + print("\n✓ Model build complete!") + + except Exception as e: + print(f"\n✗ Error building model: {e}") + raise diff --git a/api/services/gender/constants.py b/api/services/gender/constants.py new file mode 100644 index 0000000..bd3f561 --- /dev/null +++ b/api/services/gender/constants.py @@ -0,0 +1,10 @@ +""" +Hyperparameters and configuration for gender prediction service. +""" + +# Confidence threshold for using local model predictions +CONFIDENCE_THRESHOLD = 0.85 + +# Redis cache configuration +REDIS_CACHE_TTL = 86400 * 30 # 30 days in seconds +REDIS_KEY_PREFIX = "genderservice:" diff --git a/api/services/gender/gender_service.py b/api/services/gender/gender_service.py new file mode 100644 index 0000000..60ba601 --- /dev/null +++ b/api/services/gender/gender_service.py @@ -0,0 +1,391 @@ +""" +Gender prediction service with local model and GenderAPI fallback. +Internal service for use within Dograh platform. +""" + +import json +import os +import time +from pathlib import Path +from typing import Literal, Optional + +import httpx +import redis.asyncio as aioredis +from loguru import logger +from pydantic import BaseModel, Field + +from api.constants import REDIS_URL +from api.services.gender.constants import ( + CONFIDENCE_THRESHOLD, + REDIS_CACHE_TTL, + REDIS_KEY_PREFIX, +) + + +class GenderPrediction(BaseModel): + """Gender prediction result.""" + + gender: Literal["male", "female", "unknown"] = Field( + ..., description="Predicted gender" + ) + confidence: float = Field(..., ge=0, le=1, description="Confidence score (0-1)") + source: Literal["model", "genderapi"] = Field( + ..., description="Source of prediction" + ) + + +class GenderService: + """ + Internal service for predicting gender from names. + Uses local SSA-based model with GenderAPI fallback. + """ + + def __init__( + self, + model_path: Optional[str] = None, + confidence_threshold: float = CONFIDENCE_THRESHOLD, + gender_api_key: Optional[str] = None, + gender_api_url: str = "https://gender-api.com/v2/gender", + ): + """ + Initialize the gender service. + + Args: + model_path: Path to the model file (default: ./model.txt) + confidence_threshold: Minimum confidence to use local model + gender_api_key: API key for GenderAPI (falls back to env var) + gender_api_url: GenderAPI endpoint URL + """ + self.confidence_threshold = confidence_threshold + self.gender_api_key = gender_api_key or os.getenv("GENDERAPI_API_KEY") + self.gender_api_url = gender_api_url + + # Load model + if model_path is None: + model_path = Path(__file__).parent / "model.txt" + else: + model_path = Path(model_path) + + self.model = self._load_model(model_path) + self._http_client = None + self._redis_client: Optional[aioredis.Redis] = None + + def _load_model(self, model_path: Path) -> dict: + """Load the compressed gender prediction model.""" + if not model_path.exists(): + logger.warning(f"Warning: Model file not found at {model_path}") + return {"metadata": {}, "names": {}} + + try: + with open(model_path, "r", encoding="utf-8") as f: + model = json.load(f) + + # Validate model structure + if "names" not in model or "metadata" not in model: + raise ValueError("Invalid model format") + + logger.debug( + f"Loaded gender prediction model with {model['metadata'].get('total_names', 0):,} names" + ) + + return model + + except Exception as e: + logger.error(f"Error loading gender prediction model: {e}") + return {"metadata": {}, "names": {}} + + @property + def http_client(self) -> httpx.AsyncClient: + """Get or create HTTP client for API calls.""" + if self._http_client is None: + self._http_client = httpx.AsyncClient( + timeout=httpx.Timeout(30.0), + limits=httpx.Limits(max_keepalive_connections=5), + ) + return self._http_client + + async def _get_redis(self) -> aioredis.Redis: + """Get or create Redis connection.""" + if self._redis_client is None: + self._redis_client = await aioredis.from_url( + REDIS_URL, decode_responses=True + ) + return self._redis_client + + async def predict( + self, first_name: str, last_name: Optional[str] = None + ) -> GenderPrediction: + """ + Predict gender for a given name. + + Args: + first_name: First name to predict gender for + last_name: Last name (optional, not used in v1.0) + + Returns: + GenderPrediction with gender, confidence, and source + """ + if not first_name: + return GenderPrediction(gender="unknown", confidence=0.0, source="model") + + # Normalize name for lookup + normalized_name = first_name.lower().strip() + + # Step 1: Check local model + if normalized_name in self.model["names"]: + male_count, female_count, confidence = self.model["names"][normalized_name] + + # Use local model if confidence meets threshold + if confidence >= self.confidence_threshold: + gender = "male" if male_count > female_count else "female" + logger.debug( + f"GenderService: Local Prediction {first_name} - {gender} with confidence: {confidence}" + ) + return GenderPrediction( + gender=gender, confidence=confidence, source="model" + ) + else: + logger.debug( + f"GenderService: Low Confidence Local Prediction {first_name} - with confidence: {confidence}" + ) + + # Step 2: Check Redis cache for previous API responses + try: + redis_client = await self._get_redis() + cache_key = f"{REDIS_KEY_PREFIX}{normalized_name}" + cached_data = await redis_client.get(cache_key) + + if cached_data: + cached_result = json.loads(cached_data) + logger.debug( + f"GenderService: Redis Cache Hit {first_name} - {cached_result['gender']} with confidence: {cached_result['confidence']}" + ) + return GenderPrediction(**cached_result, source="genderapi") + except Exception as e: + logger.warning(f"Redis cache check failed: {e}") + + # Step 3: Fallback to GenderAPI + if self.gender_api_key: + try: + result = await self._call_gender_api(first_name) + + # Cache the result in Redis + try: + redis_client = await self._get_redis() + cache_key = f"{REDIS_KEY_PREFIX}{normalized_name}" + cache_data = json.dumps( + {"gender": result.gender, "confidence": result.confidence} + ) + await redis_client.setex(cache_key, REDIS_CACHE_TTL, cache_data) + except Exception as e: + logger.warning(f"Failed to cache result in Redis: {e}") + + # No need for additional debug log here as _call_gender_api logs with timing + return result + except Exception as e: + # Error already logged in _call_gender_api with timing + pass + + # Step 4: Return best guess from model or unknown + if normalized_name in self.model["names"]: + male_count, female_count, confidence = self.model["names"][normalized_name] + gender = "male" if male_count > female_count else "female" + return GenderPrediction( + gender=gender, confidence=confidence, source="model" + ) + + # Final fallback: unknown + return GenderPrediction(gender="unknown", confidence=0.0, source="model") + + async def _call_gender_api(self, first_name: str) -> GenderPrediction: + """ + Call GenderAPI for gender prediction. + + Args: + first_name: First name to predict + + Returns: + GenderPrediction from API response + """ + headers = { + "Authorization": f"Bearer {self.gender_api_key}", + "Content-Type": "application/json", + } + + payload = {"first_name": first_name} + + try: + # Track API call timing + start_time = time.perf_counter() + + response = await self.http_client.post( + self.gender_api_url, headers=headers, json=payload + ) + response.raise_for_status() + + # Calculate elapsed time + elapsed_time = ( + time.perf_counter() - start_time + ) * 1000 # Convert to milliseconds + + data = response.json() + + # Map GenderAPI response format + gender = data.get("gender", "unknown").lower() + if gender not in ["male", "female"]: + gender = "unknown" + + # GenderAPI returns accuracy as probability + confidence = data.get("probability", 0) + + # Log the API call with timing + logger.info( + f"GenderAPI call for '{first_name}': {gender} with confidence {confidence:.2f} " + f"(took {elapsed_time:.2f}ms)" + ) + + return GenderPrediction( + gender=gender, confidence=confidence, source="genderapi" + ) + + except httpx.HTTPStatusError as e: + # Log error with timing if we got a response + elapsed_time = ( + (time.perf_counter() - start_time) * 1000 + if "start_time" in locals() + else 0 + ) + logger.error( + f"GenderAPI HTTP error for '{first_name}': {e.response.status_code} " + f"(took {elapsed_time:.2f}ms)" + ) + + if e.response.status_code == 401: + raise ValueError("Invalid GenderAPI key") + elif e.response.status_code == 429: + raise ValueError("GenderAPI rate limit exceeded") + else: + raise ValueError(f"GenderAPI HTTP error: {e.response.status_code}") + + except httpx.TimeoutException as e: + elapsed_time = ( + (time.perf_counter() - start_time) * 1000 + if "start_time" in locals() + else 0 + ) + logger.error( + f"GenderAPI timeout for '{first_name}' after {elapsed_time:.2f}ms" + ) + raise ValueError(f"GenderAPI request timed out") + + except Exception as e: + elapsed_time = ( + (time.perf_counter() - start_time) * 1000 + if "start_time" in locals() + else 0 + ) + logger.error( + f"GenderAPI unexpected error for '{first_name}': {str(e)} " + f"(took {elapsed_time:.2f}ms)" + ) + raise + + async def get_salutation( + self, + first_name: str, + last_name: Optional[str] = None, + confidence_threshold: Optional[float] = None, + ) -> str: + """ + Get appropriate salutation based on gender prediction. + + Args: + first_name: First name to predict gender for + last_name: Last name (optional, not used in v1.0) + confidence_threshold: Optional override for confidence threshold + + Returns: + "Mr." for male, "Ms." for female, "Dear" for unknown/low confidence + """ + if not first_name: + return "Dear" + + # Get gender prediction + prediction = await self.predict(first_name, last_name) + + # Return salutation based on gender and confidence + if prediction.gender == "unknown": + return "Dear" + elif prediction.gender == "male": + return "Mr." + else: # female + return "Ms." + + async def batch_predict(self, names: list[str]) -> list[GenderPrediction]: + """ + Predict gender for multiple names. + + Args: + names: List of first names + + Returns: + List of GenderPrediction results + """ + results = [] + for name in names: + result = await self.predict(name) + results.append(result) + return results + + async def close(self): + """Close HTTP and Redis clients and cleanup resources.""" + if self._http_client: + await self._http_client.aclose() + self._http_client = None + if self._redis_client: + await self._redis_client.close() + self._redis_client = None + + async def get_stats(self) -> dict: + """Get statistics about the service and model.""" + metadata = self.model.get("metadata", {}) + + # Get Redis cache stats + cache_stats = {} + try: + redis_client = await self._get_redis() + # Count keys matching our prefix pattern + keys = await redis_client.keys(f"{REDIS_KEY_PREFIX}*") + cache_stats = { + "cached_names": len(keys), + "cache_type": "redis", + "ttl_seconds": REDIS_CACHE_TTL, + } + except Exception as e: + logger.warning(f"Failed to get Redis stats: {e}") + cache_stats = {"cached_names": 0, "cache_type": "redis", "error": str(e)} + + return { + "model": { + "version": self.model.get("version", "unknown"), + "total_names": metadata.get("total_names", 0), + "high_confidence_names": metadata.get("high_confidence_names", 0), + "confidence_threshold": self.confidence_threshold, + "build_date": metadata.get("build_date", "unknown"), + }, + "cache": cache_stats, + "api": {"enabled": bool(self.gender_api_key), "url": self.gender_api_url}, + } + + async def clear_cache(self): + """Clear the Redis cache for gender predictions.""" + try: + redis_client = await self._get_redis() + keys = await redis_client.keys(f"{REDIS_KEY_PREFIX}*") + if keys: + await redis_client.delete(*keys) + logger.info(f"Cleared {len(keys)} entries from Redis cache") + else: + logger.debug("No cache entries to clear") + except Exception as e: + logger.error(f"Failed to clear Redis cache: {e}") diff --git a/api/services/gender/model.txt b/api/services/gender/model.txt new file mode 100644 index 0000000..5dbb18a --- /dev/null +++ b/api/services/gender/model.txt @@ -0,0 +1 @@ +{"version":"1.0","metadata":{"confidence_threshold":0.85,"total_names":104819,"high_confidence_names":1711,"build_date":"2025-08-12T20:05:00.642579","source_files":145},"names":{"mary":[15172,4139160,0.9963],"anna":[2756,912251,0.997],"emma":[1718,763546,0.9978],"elizabeth":[5211,1681878,0.9969],"minnie":[787,159224,0.9951],"margaret":[3745,1262307,0.997],"ida":[766,187714,0.9959],"alice":[1959,584578,0.9967],"bertha":[937,207837,0.9955],"sarah":[3339,1095724,0.997],"annie":[1927,358540,0.9947],"clara":[1016,296898,0.9966],"ella":[901,345401,0.9974],"florence":[1454,338289,0.9957],"cora":[387,153577,0.9975],"martha":[1991,551325,0.9964],"laura":[2579,800987,0.9968],"nellie":[593,152122,0.9961],"grace":[1393,529733,0.9974],"carrie":[1190,266286,0.9956],"maude":[133,45708,0.9295],"mabel":[409,140754,0.9971],"bessie":[737,170123,0.9957],"jennie":[479,127102,0.9962],"gertrude":[568,177083,0.9968],"julia":[1744,474054,0.9963],"hattie":[494,104269,0.9953],"edith":[825,270279,0.997],"mattie":[780,132813,0.9942],"rose":[2118,498158,0.9958],"catherine":[1822,666802,0.9973],"lillian":[1429,471024,0.997],"ada":[278,105475,0.9974],"lillie":[873,158489,0.9945],"helen":[3105,1023527,0.997],"jessie":[111202,169704,0.6041],"louise":[2196,335882,0.9935],"ethel":[1490,278890,0.9947],"lula":[339,85146,0.9825],"myrtle":[498,136478,0.9964],"eva":[1007,282580,0.9964],"frances":[5017,594729,0.9916],"lena":[326,145356,0.9978],"lucy":[636,230743,0.9973],"edna":[1042,295022,0.9965],"maggie":[282,122023,0.9977],"pearl":[3922,158735,0.9759],"daisy":[632,155493,0.996],"fannie":[369,85511,0.9825],"josephine":[991,327305,0.997],"dora":[550,105849,0.9948],"rosa":[1173,176963,0.9934],"katherine":[1824,649238,0.9972],"agnes":[465,159270,0.9971],"marie":[2193,539595,0.996],"nora":[778,186719,0.9959],"may":[699,49216,0.9265],"mamie":[278,77887,0.9751],"blanche":[223,87408,0.986],"stella":[382,202743,0.9981],"ellen":[745,275048,0.9973],"nancy":[2945,1004171,0.9971],"effie":[241,44171,0.9245],"sallie":[135,49928,0.9374],"nettie":[88,49419,0.9373],"della":[139,70274,0.9676],"lizzie":[102,39435,0.917],"flora":[172,70483,0.9675],"susie":[278,85677,0.9837],"maud":[31,13159,0.8221],"mae":[606,114235,0.9947],"etta":[23,42985,0.9262],"harriet":[121,90076,0.9897],"sadie":[241,145487,0.9983],"caroline":[309,247746,0.9988],"katie":[499,240788,0.9979],"lydia":[277,184295,0.9985],"elsie":[886,187819,0.9953],"kate":[89,85411,0.9854],"susan":[2542,1123232,0.9977],"mollie":[46,47950,0.9353],"alma":[2212,163016,0.9866],"addie":[718,45183,0.9178],"georgia":[729,163651,0.9956],"eliza":[197,68173,0.9642],"lulu":[0,12656,0.8205],"nannie":[20,25560,0.8809],"lottie":[133,47780,0.9335],"amanda":[2136,790015,0.9973],"belle":[0,18976,0.8556],"charlotte":[762,439944,0.9983],"rebecca":[2115,755083,0.9972],"ruth":[2780,834300,0.9967],"viola":[434,132741,0.9967],"olive":[387,65312,0.9578],"amelia":[278,268334,0.999],"hannah":[721,461647,0.9984],"jane":[1133,378486,0.997],"virginia":[2009,652372,0.9969],"emily":[1799,890970,0.998],"matilda":[10,36428,0.9121],"irene":[1350,355004,0.9962],"kathryn":[1092,455036,0.9976],"esther":[967,268912,0.9964],"willie":[450033,146188,0.7548],"henrietta":[57,51264,0.941],"ollie":[17414,41560,0.6724],"amy":[1853,700417,0.9974],"rachel":[1791,572695,0.9969],"sara":[1248,434598,0.9971],"estella":[55,42336,0.9243],"theresa":[1218,404471,0.997],"augusta":[1693,16540,0.773],"ora":[5616,39236,0.8139],"pauline":[775,226348,0.9966],"josie":[533,72325,0.9654],"lola":[275,95745,0.9936],"sophia":[500,426419,0.9988],"leona":[294,112600,0.9974],"anne":[827,324648,0.9975],"mildred":[1583,451312,0.9965],"ann":[1364,470033,0.9971],"beulah":[213,73232,0.9704],"callie":[637,68429,0.9589],"lou":[4006,34043,0.8196],"delia":[62,37173,0.9127],"eleanor":[640,328990,0.9981],"barbara":[4135,1436402,0.9971],"iva":[564,38276,0.9045],"louisa":[5,21523,0.8664],"maria":[4272,563139,0.9925],"mayme":[0,10928,0.8077],"evelyn":[1898,630574,0.997],"estelle":[159,55887,0.947],"nina":[250,132820,0.9981],"betty":[3619,1001019,0.9964],"marion":[72440,189125,0.7231],"bettie":[83,38385,0.915],"dorothy":[3677,1111479,0.9967],"luella":[16,32252,0.9013],"inez":[955,68196,0.9546],"lela":[68,42926,0.9252],"rosie":[470,84454,0.9804],"allie":[3122,52709,0.8963],"millie":[212,42553,0.9216],"janie":[276,75428,0.9723],"cornelia":[26,22025,0.8677],"victoria":[1276,523840,0.9976],"ruby":[3099,372975,0.9918],"winifred":[1106,44809,0.9099],"alta":[117,28898,0.8889],"celia":[74,56289,0.949],"christine":[2031,586277,0.9965],"beatrice":[733,194331,0.9962],"birdie":[106,14280,0.8255],"harriett":[5,21604,0.8667],"mable":[215,53178,0.9417],"myra":[51,63483,0.9598],"sophie":[117,134574,0.9991],"tillie":[27,15558,0.8371],"isabel":[1827,130387,0.9862],"sylvia":[908,244041,0.9963],"carolyn":[1620,556593,0.9971],"isabelle":[20,105918,0.9998],"leila":[11,54226,0.9467],"sally":[647,205026,0.9969],"ina":[65,34008,0.9048],"essie":[1212,39635,0.8949],"bertie":[856,13725,0.7839],"nell":[98,27483,0.885],"alberta":[399,70355,0.9645],"katharine":[11,41204,0.9228],"lora":[249,52176,0.9394],"rena":[123,39048,0.9157],"mina":[657,18772,0.8287],"rhoda":[12,26009,0.8827],"mathilda":[0,7495,0.775],"abbie":[330,22101,0.8574],"eula":[332,47154,0.9288],"dollie":[61,19224,0.8543],"hettie":[0,7294,0.7726],"eunice":[1178,80259,0.968],"fanny":[0,9635,0.7968],"ola":[624,29637,0.8777],"lenora":[31,36494,0.9117],"adelaide":[0,33938,0.9061],"christina":[1989,479359,0.9959],"lelia":[0,15627,0.8388],"nelle":[0,5761,0.7521],"sue":[519,144523,0.9964],"johanna":[129,53933,0.9443],"lilly":[24,65475,0.9629],"lucinda":[11,38281,0.9164],"minerva":[0,15734,0.8394],"lettie":[0,10739,0.8062],"roxie":[203,18374,0.8445],"cynthia":[1960,711201,0.9973],"helena":[0,39561,0.9195],"hilda":[178,80965,0.9797],"hulda":[0,5407,0.7466],"bernice":[3403,182094,0.9817],"genevieve":[151,123119,0.9988],"jean":[24863,458350,0.9485],"cordelia":[0,12646,0.8204],"marian":[1351,141726,0.9906],"francis":[289720,29710,0.907],"jeanette":[537,163365,0.9967],"adeline":[26,76925,0.9769],"gussie":[1098,13084,0.7661],"leah":[467,252567,0.9982],"lois":[2644,332830,0.9921],"lura":[5,9550,0.7956],"mittie":[0,6297,0.7598],"hallie":[1335,38107,0.8881],"isabella":[452,406196,0.9989],"olga":[198,61817,0.9554],"phoebe":[5,41758,0.924],"teresa":[1165,415746,0.9972],"hester":[537,14222,0.8035],"lida":[0,5910,0.7543],"lina":[5,18952,0.8553],"winnie":[228,26460,0.8777],"claudia":[760,128093,0.9941],"marguerite":[101,93951,0.9936],"vera":[398,147970,0.9973],"cecelia":[11,59948,0.9554],"bess":[5,7166,0.7706],"emilie":[7,26482,0.8844],"john":[5174470,21740,0.9958],"rosetta":[44,28110,0.8885],"verna":[525,69061,0.9612],"myrtie":[0,4401,0.7287],"cecilia":[177,108992,0.9984],"elva":[817,31654,0.8796],"olivia":[781,553664,0.9986],"ophelia":[15,24575,0.8776],"georgie":[1629,12636,0.736],"elnora":[27,21345,0.8649],"violet":[284,177973,0.9984],"adele":[11,41996,0.9244],"lily":[145,182901,0.9992],"linnie":[712,7983,0.7233],"loretta":[502,177072,0.9972],"madge":[0,13430,0.8256],"polly":[24,29600,0.8936],"virgie":[668,21800,0.8444],"eugenia":[15,29867,0.8946],"lucile":[96,34860,0.9062],"lucille":[750,231246,0.9968],"mabelle":[0,2596,0.6829],"rosalie":[96,82239,0.982],"kittie":[0,2467,0.6784],"meta":[0,6211,0.7586],"angie":[131,65264,0.9612],"dessie":[317,11406,0.7918],"georgiana":[0,9835,0.7986],"lila":[57,74807,0.9741],"regina":[563,183476,0.9969],"selma":[321,26820,0.8762],"wilhelmina":[5,12952,0.8222],"bridget":[150,91985,0.9913],"lilla":[0,4414,0.729],"malinda":[0,21394,0.8661],"vina":[0,5260,0.7442],"freda":[26,42507,0.9252],"gertie":[0,8532,0.7862],"jeannette":[49,69226,0.9674],"louella":[0,13809,0.828],"mandy":[138,42435,0.9228],"roberta":[782,171485,0.9955],"cassie":[385,46462,0.9265],"corinne":[15,49619,0.9389],"ivy":[3453,77550,0.9399],"melissa":[2495,759386,0.9967],"lyda":[5,4968,0.7386],"naomi":[285,186852,0.9985],"norma":[1278,277973,0.9954],"bell":[130,2488,0.6496],"margie":[403,105986,0.9962],"nona":[0,16696,0.8445],"zella":[0,13250,0.8244],"dovie":[10,9046,0.7905],"elvira":[44,27111,0.8853],"erma":[238,54923,0.9442],"irma":[252,73717,0.9705],"leota":[0,10446,0.8038],"william":[4189004,16022,0.9962],"artie":[4407,6399,0.4777],"blanch":[30,6420,0.7584],"charity":[39,35419,0.9089],"lorena":[219,44781,0.9261],"lucretia":[0,10422,0.8036],"orpha":[0,5969,0.7552],"alvina":[5,10480,0.8037],"annette":[499,169146,0.9971],"catharine":[0,12994,0.8227],"elma":[483,21669,0.8501],"geneva":[309,88631,0.9864],"janet":[1515,556709,0.9973],"lee":[233256,62278,0.7893],"leora":[6,11955,0.8151],"lona":[17,10895,0.8063],"miriam":[280,116620,0.9976],"zora":[37,9935,0.7968],"linda":[3756,1454832,0.9974],"octavia":[139,22981,0.8676],"sudie":[0,4024,0.7209],"zula":[0,4445,0.7296],"adella":[0,5929,0.7546],"alpha":[2785,7182,0.5763],"frieda":[0,25468,0.8812],"george":[1484412,9957,0.9933],"joanna":[306,110756,0.9972],"leonora":[0,7390,0.7737],"priscilla":[244,122234,0.998],"tennie":[19,2777,0.6846],"angeline":[10,36739,0.9128],"docia":[0,1109,0.609],"ettie":[0,1853,0.6536],"flossie":[37,21808,0.8664],"hanna":[132,41418,0.9208],"letha":[25,19137,0.8554],"minta":[0,1283,0.6216],"retta":[0,3391,0.7061],"rosella":[5,15909,0.8401],"adah":[0,4010,0.7206],"berta":[0,7277,0.7724],"elisabeth":[27,47729,0.9353],"elise":[66,73809,0.9728],"goldie":[443,38082,0.9066],"leola":[52,28112,0.8883],"margret":[0,10047,0.8004],"adaline":[0,17309,0.8477],"floy":[323,6612,0.7324],"idella":[0,6547,0.7632],"juanita":[991,207621,0.9952],"lenna":[0,4257,0.7258],"lucie":[0,7538,0.7755],"missouri":[0,1595,0.6406],"nola":[9,25927,0.8825],"zoe":[584,157579,0.9963],"eda":[0,4185,0.7243],"isabell":[5,15184,0.836],"james":[5238570,23826,0.9955],"julie":[1524,510948,0.997],"letitia":[0,11408,0.8114],"madeline":[245,204275,0.9988],"malissa":[0,8858,0.7895],"mariah":[183,114380,0.9984],"pattie":[5,9504,0.7952],"vivian":[2578,224797,0.9887],"almeda":[0,4402,0.7287],"aurelia":[0,17373,0.848],"claire":[2204,208419,0.9895],"dolly":[44,20479,0.8606],"hazel":[2865,296198,0.9904],"jannie":[28,14819,0.8328],"kathleen":[1691,713438,0.9976],"kathrine":[0,15760,0.8395],"lavinia":[0,5580,0.7493],"marietta":[0,15013,0.8353],"melvina":[0,6645,0.7645],"ona":[92,7917,0.7717],"pinkie":[11,3881,0.716],"samantha":[1205,590854,0.998],"susanna":[0,19782,0.8593],"chloe":[345,248112,0.9986],"donnie":[60839,7132,0.8651],"elsa":[21,30490,0.8963],"gladys":[1023,266666,0.9962],"matie":[0,579,0.5525],"pearle":[0,2821,0.6901],"vesta":[27,8181,0.7803],"vinnie":[805,3113,0.571],"antoinette":[68,78664,0.9784],"clementine":[0,12993,0.8227],"edythe":[0,13872,0.8284],"harriette":[0,8728,0.7882],"libbie":[0,2506,0.6798],"lilian":[0,19925,0.8599],"lue":[695,6474,0.6963],"lutie":[0,735,0.5733],"magdalena":[10,19446,0.8574],"meda":[0,1882,0.6549],"rita":[778,284274,0.9973],"tena":[0,8180,0.7826],"zelma":[112,16807,0.8401],"adelia":[0,5628,0.7501],"annetta":[0,8804,0.7889],"antonia":[2618,34042,0.8476],"dona":[175,18852,0.848],"elizebeth":[0,4603,0.7326],"georgianna":[0,9279,0.7935],"gracie":[45,82748,0.9831],"iona":[10,12186,0.8166],"lessie":[945,14072,0.7828],"leta":[0,11934,0.8154],"liza":[14,17512,0.8481],"mertie":[0,1830,0.6525],"molly":[360,174517,0.9979],"neva":[6,21173,0.8649],"oma":[181,9598,0.7833],"alida":[0,4624,0.733],"alva":[11263,8867,0.4816],"cecile":[191,20398,0.8547],"cleo":[11508,33044,0.6896],"donna":[2233,831536,0.9973],"ellie":[1180,99466,0.9883],"ernestine":[159,44032,0.9257],"evie":[92,20688,0.8597],"frankie":[42007,36607,0.5232],"helene":[0,33291,0.9045],"minna":[0,3122,0.6989],"myrta":[0,960,0.5965],"prudence":[0,6165,0.758],"queen":[31,16007,0.8394],"rilla":[0,2652,0.6847],"savannah":[222,189330,0.9988],"tessie":[10,9973,0.7991],"tina":[904,292087,0.9969],"agatha":[0,9369,0.7943],"america":[16,13404,0.8246],"anita":[684,214999,0.9968],"arminta":[0,776,0.578],"dorothea":[6,34308,0.9069],"ira":[55104,6902,0.8518],"luvenia":[0,3932,0.7189],"marjorie":[594,273770,0.9978],"maybelle":[0,6306,0.76],"mellie":[0,2188,0.668],"nan":[0,10274,0.8023],"pearlie":[699,18129,0.8232],"sidney":[84056,24680,0.773],"velma":[450,86731,0.983],"clare":[3053,31172,0.826],"constance":[419,139832,0.997],"dixie":[752,44489,0.9156],"ila":[60,24667,0.8765],"iola":[0,9652,0.7969],"jimmie":[112234,22994,0.83],"louvenia":[0,3625,0.7119],"lucia":[91,56309,0.9487],"ludie":[270,2687,0.6308],"luna":[109,81568,0.9811],"metta":[0,1123,0.6101],"patsy":[7713,119425,0.9393],"phebe":[0,2936,0.6936],"sophronia":[0,1524,0.6366],"adda":[0,971,0.5974],"avis":[818,17218,0.8126],"betsy":[10,48881,0.9377],"bonnie":[4037,327883,0.9878],"cecil":[106867,7687,0.9329],"cordie":[167,2064,0.6196],"emmaline":[0,7238,0.7719],"ethelyn":[0,4450,0.7297],"hortense":[0,6313,0.76],"june":[3561,203564,0.9828],"louie":[30507,2311,0.8396],"lovie":[627,5868,0.6889],"marcella":[222,65337,0.9601],"melinda":[337,135724,0.9975],"mona":[31,45722,0.9315],"odessa":[154,18372,0.8465],"veronica":[834,223039,0.9963],"aimee":[78,54551,0.9461],"annabel":[0,14880,0.8345],"ava":[336,336272,0.999],"bella":[45,81537,0.9818],"carolina":[137,47196,0.9323],"cathrine":[0,7715,0.7775],"christena":[0,2844,0.6908],"clyde":[144635,3932,0.9735],"dena":[56,32444,0.9008],"dolores":[1336,211368,0.9937],"eleanore":[0,18567,0.8537],"elmira":[0,4349,0.7277],"fay":[4118,32019,0.8077],"frank":[915398,4611,0.995],"jenny":[605,91956,0.9868],"kizzie":[0,1752,0.6487],"lonnie":[94394,6972,0.9312],"loula":[0,641,0.5614],"magdalene":[0,9828,0.7985],"mettie":[0,1031,0.6027],"mintie":[0,446,0.5299],"peggy":[798,292751,0.9973],"reba":[60,35421,0.9085],"serena":[16,46500,0.9332],"vida":[38,12247,0.8153],"zada":[0,3079,0.6977],"abigail":[672,408235,0.9984],"celestine":[232,9760,0.7814],"celina":[6,15964,0.8403],"claudie":[2978,3739,0.4261],"clemmie":[972,2637,0.5199],"connie":[6957,266728,0.9746],"daisie":[0,1149,0.6121],"deborah":[1658,742504,0.9978],"dessa":[0,1801,0.6511],"easter":[66,5513,0.7404],"eddie":[211579,15753,0.9307],"emelia":[0,13537,0.8263],"emmie":[0,9978,0.7998],"imogene":[55,27831,0.8873],"india":[27,23868,0.8747],"jeanne":[360,163218,0.9978],"joan":[7469,481016,0.9847],"lenore":[6,22870,0.8716],"liddie":[0,1286,0.6218],"lotta":[0,499,0.5396],"mame":[0,649,0.5624],"nevada":[710,3148,0.5853],"rachael":[181,82440,0.9813],"robert":[4845891,20116,0.9959],"sina":[506,1710,0.5163],"willa":[24,32077,0.9006],"aline":[5,14624,0.8328],"beryl":[2338,10122,0.6654],"charles":[2428685,12466,0.9949],"daisey":[0,2500,0.6796],"dorcas":[0,7231,0.7718],"edmonia":[0,899,0.5908],"effa":[0,312,0.4988],"eldora":[0,4065,0.7218],"eloise":[111,68429,0.9656],"emmer":[11,2155,0.6637],"era":[54,5890,0.748],"gena":[0,12825,0.8216],"henry":[756825,4599,0.994],"iris":[757,97794,0.9911],"izora":[0,1194,0.6154],"lennie":[2882,4766,0.484],"lissie":[0,936,0.5943],"mallie":[407,3408,0.6399],"malvina":[0,1686,0.6454],"mathilde":[0,1772,0.6497],"mazie":[0,9528,0.7958],"queenie":[0,3903,0.7183],"rosina":[0,5551,0.7489],"salome":[682,4700,0.6516],"theodora":[49,12267,0.8148],"therese":[5,35507,0.9099],"vena":[0,2804,0.6896],"wanda":[972,281196,0.9966],"wilda":[15,12758,0.8203],"altha":[21,3365,0.7016],"anastasia":[23,55275,0.9481],"besse":[0,671,0.5653],"bird":[109,121,0.2485],"birtie":[0,946,0.5952],"clarissa":[21,40268,0.9206],"claude":[91300,952,0.9827],"delilah":[0,62507,0.9592],"diana":[1285,367190,0.9965],"emelie":[0,2587,0.6826],"erna":[11,9060,0.7906],"fern":[529,37477,0.9032],"florida":[5,3527,0.7086],"frona":[0,873,0.5882],"hilma":[0,2999,0.6954],"joseph":[2662040,10706,0.996],"juliet":[5,36821,0.9131],"leonie":[0,2150,0.6665],"lugenia":[0,777,0.5781],"mammie":[0,2523,0.6804],"manda":[0,3294,0.7035],"manerva":[0,60,0.0],"manie":[0,529,0.5447],"nella":[0,4314,0.727],"paulina":[5,19790,0.8591],"philomena":[0,9847,0.7987],"rae":[955,23287,0.8424],"selina":[0,19045,0.856],"sena":[194,3070,0.661],"theodosia":[0,1669,0.6445],"tommie":[34411,17691,0.6231],"una":[0,8059,0.7813],"vernie":[2760,3958,0.451],"adela":[0,13902,0.8286],"althea":[5,17807,0.8499],"amalia":[0,15944,0.8405],"amber":[979,374103,0.9974],"angelina":[111,125386,0.9991],"annabelle":[10,66632,0.9646],"anner":[48,1037,0.5802],"arie":[2516,4073,0.4721],"clarice":[96,25421,0.8781],"corda":[12,567,0.5411],"corrie":[1279,8534,0.6943],"dell":[4002,2544,0.4666],"dellar":[0,576,0.5521],"donie":[131,956,0.5341],"doris":[3241,462485,0.993],"elda":[42,8950,0.7871],"elinor":[0,21496,0.8665],"emeline":[0,3550,0.71],"emilia":[40,64367,0.9612],"esta":[27,4430,0.7254],"estell":[551,4232,0.6512],"etha":[0,1802,0.6512],"fred":[343576,2029,0.9941],"hope":[563,96315,0.9914],"indiana":[1386,2006,0.4176],"ione":[0,9989,0.7999],"jettie":[197,3656,0.6805],"johnnie":[102028,49154,0.6749],"josiephine":[0,1061,0.6051],"kitty":[0,11657,0.8133],"lavina":[0,6723,0.7655],"leda":[0,3436,0.7072],"letta":[0,775,0.5779],"mahala":[0,2873,0.6917],"marcia":[284,133274,0.9979],"margarette":[0,6152,0.7578],"maudie":[0,11841,0.8147],"maye":[0,1947,0.6579],"norah":[129,32661,0.8996],"oda":[301,1324,0.5232],"patty":[247,62448,0.9557],"paula":[913,280537,0.9968],"permelia":[0,551,0.5482],"rosalia":[0,10181,0.8016],"roxanna":[7,13398,0.825],"sula":[0,1397,0.629],"vada":[162,12623,0.8109],"winnifred":[0,5056,0.7408],"adline":[0,1177,0.6142],"almira":[0,1812,0.6516],"alvena":[0,1601,0.6409],"arizona":[153,3454,0.6813],"becky":[144,86865,0.9863],"bennie":[52692,9875,0.8079],"bernadette":[60,54728,0.9467],"camille":[1389,74410,0.958],"cordia":[0,1456,0.6326],"corine":[12,14547,0.8319],"dicie":[0,1167,0.6134],"dove":[32,1290,0.6091],"drusilla":[0,2930,0.6934],"elena":[98,103149,0.9991],"elenora":[0,3614,0.7116],"elmina":[0,819,0.5827],"ethyl":[0,2395,0.6759],"evalyn":[0,9415,0.7948],"evelina":[0,6013,0.7558],"faye":[518,71559,0.9646],"huldah":[0,856,0.5865],"idell":[38,3425,0.7001],"inga":[0,4117,0.7229],"irena":[0,2162,0.667],"jewell":[4679,29428,0.7822],"kattie":[0,5585,0.7494],"lavenia":[0,1691,0.6456],"leslie":[112958,270029,0.7051],"lovina":[0,2422,0.6768],"lulie":[0,187,0.4544],"magnolia":[0,21154,0.8651],"margeret":[0,972,0.5975],"margery":[0,15785,0.8396],"media":[0,473,0.535],"millicent":[0,11718,0.8138],"nena":[0,4895,0.738],"ocie":[2738,4112,0.4605],"orilla":[0,225,0.4704],"osie":[748,1354,0.4281],"pansy":[0,10953,0.8079],"ray":[204384,5586,0.9734],"rosia":[0,3506,0.709],"rowena":[0,10491,0.8042],"shirley":[9551,686246,0.9863],"tabitha":[146,59024,0.9521],"thomas":[2351624,8504,0.9964],"verdie":[206,2614,0.6396],"walter":[629783,3632,0.9943],"zetta":[0,2053,0.6625],"zoa":[0,597,0.5552],"zona":[0,4562,0.7318],"albertina":[0,1651,0.6435],"albina":[0,4998,0.7398],"alyce":[0,17500,0.8486],"amie":[40,21580,0.8654],"angela":[2135,672480,0.9968],"annis":[7,2914,0.6914],"carol":[8656,816838,0.9895],"carra":[0,1353,0.6263],"clarence":[303445,1859,0.9939],"clarinda":[0,1325,0.6244],"delphia":[0,4241,0.7255],"dillie":[0,537,0.546],"doshie":[0,799,0.5805],"drucilla":[0,3572,0.7106],"etna":[0,676,0.566],"eugenie":[0,3407,0.7065],"eulalia":[0,4797,0.7362],"eve":[0,28926,0.8923],"felicia":[279,91072,0.9891],"florance":[0,1672,0.6446],"fronie":[0,789,0.5794],"geraldine":[748,211273,0.9965],"gina":[404,152963,0.9974],"glenna":[5,25617,0.8816],"grayce":[0,4408,0.7288],"hedwig":[0,3077,0.6976],"jessica":[3578,1050306,0.9966],"jossie":[17,2028,0.6566],"katheryn":[0,15175,0.8362],"katy":[5,20886,0.8638],"lea":[620,33520,0.8902],"leanna":[5,25630,0.8816],"leitha":[0,731,0.5728],"leone":[430,6175,0.7142],"lidie":[0,91,0.0],"loma":[5,2289,0.6707],"lular":[0,572,0.5515],"magdalen":[0,3251,0.7024],"maymie":[0,1054,0.6046],"minervia":[0,95,0.0],"muriel":[762,54852,0.936],"neppie":[0,38,0.0],"olie":[577,420,0.3471],"onie":[277,1786,0.5739],"osa":[87,673,0.5102],"otelia":[0,1184,0.6147],"paralee":[0,1215,0.6169],"patience":[44,12249,0.815],"rella":[0,1313,0.6237],"rillie":[0,69,0.0],"rosanna":[6,14571,0.8324],"theo":[31858,3482,0.82],"tilda":[0,2023,0.6612],"tishie":[0,312,0.4988],"tressa":[0,7027,0.7694],"viva":[0,3583,0.7108],"yetta":[0,3793,0.7158],"zena":[0,5911,0.7543],"zola":[26,9117,0.79],"abby":[181,61472,0.9552],"aileen":[5,37293,0.9142],"alba":[108,7292,0.7626],"alda":[10,4966,0.7379],"alla":[10,1187,0.6105],"alverta":[0,2441,0.6775],"ara":[1291,3517,0.5387],"ardelia":[0,1370,0.6273],"ardella":[0,3470,0.7081],"arrie":[318,1787,0.5642],"arvilla":[0,2931,0.6934],"augustine":[15605,3804,0.6895],"aurora":[91,91980,0.9918],"bama":[0,498,0.5394],"bena":[0,635,0.5606],"byrd":[709,253,0.4397],"calla":[0,4251,0.7257],"camilla":[6,29420,0.8936],"carey":[16865,12742,0.5094],"carlotta":[0,6427,0.7616],"celestia":[0,1372,0.6275],"cherry":[136,11538,0.804],"cinda":[0,4590,0.7324],"classie":[0,1607,0.6412],"claudine":[15,11322,0.8098],"clemie":[5,211,0.4561],"clifford":[188109,2019,0.9894],"clyda":[0,758,0.5759],"creola":[0,1742,0.6482],"debbie":[435,187828,0.9977],"dee":[7269,15831,0.5981],"dinah":[0,10475,0.804],"doshia":[0,768,0.5771],"ednah":[0,75,0.0],"edyth":[0,2278,0.6715],"eleanora":[0,8008,0.7807],"electa":[0,1181,0.6144],"eola":[0,740,0.5738],"erie":[1960,1476,0.4034],"eudora":[0,2154,0.6666],"euphemia":[0,752,0.5752],"evalena":[0,1366,0.6271],"evaline":[0,1690,0.6456],"faith":[283,146585,0.9981],"fidelia":[0,722,0.5717],"freddie":[73194,10313,0.8628],"golda":[0,6365,0.7608],"harry":[423531,2018,0.9953],"helma":[0,595,0.5549],"hermine":[0,1534,0.6372],"hessie":[16,1118,0.6023],"ivah":[0,900,0.5908],"janette":[42,32147,0.9004],"jennette":[0,3522,0.7094],"joella":[0,4161,0.7238],"kathryne":[0,5959,0.755],"lacy":[6474,20142,0.6698],"lanie":[35,5519,0.7442],"lauretta":[0,9699,0.7973],"leana":[0,4894,0.7379],"leatha":[0,6023,0.756],"leo":[251760,2113,0.9917],"liller":[0,333,0.5045],"lillis":[0,637,0.5608],"louetta":[0,1541,0.6376],"madie":[0,3169,0.7002],"mai":[20,5622,0.7476],"martina":[40,18336,0.851],"maryann":[52,62831,0.9589],"melva":[30,14155,0.8286],"mena":[161,1498,0.5815],"mercedes":[369,46052,0.9259],"merle":[30630,14718,0.629],"mima":[0,737,0.5735],"minda":[0,1600,0.6408],"monica":[983,250900,0.9961],"nealie":[17,776,0.5674],"netta":[0,1107,0.6088],"nolia":[0,564,0.5503],"nonie":[0,1363,0.6269],"odelia":[0,2803,0.6895],"ottilie":[0,1035,0.603],"phyllis":[871,322490,0.9973],"robbie":[21315,22501,0.4767],"sabina":[0,8014,0.7808],"sada":[0,1295,0.6225],"sammie":[20818,7801,0.6484],"suzanne":[492,219234,0.9978],"sybilla":[0,174,0.4481],"thea":[5,19237,0.8566],"tressie":[6,5355,0.745],"vallie":[143,3356,0.6798],"venie":[0,345,0.5076],"viney":[0,377,0.5153],"wilhelmine":[0,525,0.544],"winona":[0,12481,0.8192],"zelda":[5,16406,0.8428],"zilpha":[0,570,0.5512],"adelle":[0,5465,0.7475],"adina":[0,7183,0.7713],"adrienne":[400,68234,0.9617],"albertine":[0,2196,0.6683],"alys":[0,1332,0.6249],"ana":[601,110060,0.9946],"araminta":[0,333,0.5045],"arthur":[544857,3200,0.9942],"birtha":[0,1973,0.659],"bulah":[0,3027,0.6962],"caddie":[0,96,0.0],"celie":[0,508,0.5412],"charlotta":[0,966,0.597],"clair":[12041,4281,0.6216],"concepcion":[968,5218,0.6396],"cordella":[0,377,0.5153],"corrine":[0,20790,0.8636],"delila":[0,3523,0.7094],"delphine":[33,10407,0.8012],"dosha":[0,384,0.5169],"edgar":[156585,705,0.9955],"elaine":[653,261872,0.9975],"elisa":[143,46979,0.9318],"ellar":[0,511,0.5417],"elmire":[0,213,0.4657],"elvina":[0,2598,0.6829],"ena":[0,3543,0.7099],"estie":[0,306,0.4971],"etter":[0,476,0.5355],"fronnie":[0,213,0.4657],"genie":[173,2731,0.6513],"georgina":[0,17178,0.847],"glenn":[248517,2136,0.9915],"gracia":[0,1944,0.6577],"guadalupe":[25055,66734,0.7216],"gwendolyn":[333,123533,0.9973],"hassie":[10,1548,0.6344],"honora":[0,1705,0.6463],"icy":[0,1095,0.6079],"isa":[2883,3314,0.4056],"isadora":[0,4490,0.7304],"jesse":[430392,12419,0.972],"jewel":[5233,41338,0.8287],"joe":[453008,11318,0.9756],"johannah":[0,3088,0.6979],"juana":[88,18605,0.8503],"judith":[1241,454361,0.9973],"judy":[1094,382871,0.9972],"junie":[160,1739,0.6005],"lavonia":[0,1901,0.6558],"lella":[0,864,0.5873],"lemma":[0,262,0.4837],"letty":[0,4454,0.7298],"linna":[0,876,0.5885],"littie":[0,623,0.5589],"lollie":[0,1025,0.6021],"lorene":[113,39361,0.9166],"louis":[405059,2841,0.993],"love":[967,4527,0.6163],"lovisa":[0,61,0.0],"lucina":[0,1568,0.6391],"lynn":[52375,182316,0.7768],"madora":[0,356,0.5103],"mahalia":[0,2316,0.6729],"manervia":[0,40,0.0],"manuela":[35,10961,0.8057],"margarett":[0,4926,0.7385],"margaretta":[0,2535,0.6808],"margarita":[199,40117,0.9165],"marilla":[0,789,0.5794],"mignon":[0,2239,0.67],"mozella":[0,1823,0.6522],"natalie":[769,376303,0.998],"nelia":[0,1566,0.639],"nolie":[7,292,0.4835],"omie":[10,1157,0.6082],"opal":[718,72794,0.9638],"ossie":[1677,2917,0.4651],"ottie":[609,1275,0.4433],"ottilia":[0,584,0.5533],"parthenia":[0,1447,0.6321],"penelope":[53,103215,0.9995],"pinkey":[6,579,0.5478],"pollie":[0,1265,0.6204],"rennie":[999,927,0.3407],"reta":[0,8616,0.7871],"roena":[0,984,0.5986],"rosalee":[0,12626,0.8203],"roseanna":[0,5844,0.7533],"ruthie":[32,22271,0.8684],"sabra":[0,4952,0.739],"sannie":[0,21,0.0],"selena":[57,58696,0.9529],"sibyl":[0,4441,0.7295],"tella":[0,54,0.0],"tempie":[0,1681,0.6451],"tennessee":[369,959,0.4511],"teressa":[0,6475,0.7622],"texas":[477,235,0.3822],"theda":[0,6556,0.7633],"thelma":[1142,225429,0.995],"thursa":[0,150,0.4352],"ula":[31,1613,0.6311],"vannie":[191,830,0.4892],"verona":[0,4289,0.7265],"vertie":[5,1542,0.6358],"wilma":[754,140056,0.9946],"edward":[1301987,5361,0.9959],"albert":[491391,2559,0.9948],"samuel":[811720,2880,0.9965],"david":[3669730,12953,0.9965],"charlie":[181806,38190,0.8264],"richard":[2576005,9530,0.9963],"andrew":[1324893,4953,0.9963],"daniel":[1974589,8268,0.9958],"ernest":[302282,1855,0.9939],"will":[45781,658,0.9202],"oscar":[211463,1070,0.995],"lewis":[155019,870,0.9944],"peter":[587633,1943,0.9967],"benjamin":[816962,2474,0.997],"frederick":[265324,1105,0.9959],"alfred":[243558,1292,0.9947],"sam":[126795,1552,0.9879],"roy":[408050,2693,0.9934],"herbert":[228211,1117,0.9951],"jacob":[981940,2305,0.9977],"tom":[139689,614,0.9956],"elmer":[129416,1753,0.9866],"carl":[504635,3190,0.9937],"howard":[346444,1676,0.9952],"martin":[314547,1476,0.9953],"michael":[4418526,21865,0.9951],"bert":[33577,657,0.8895],"herman":[135914,795,0.9942],"jim":[153083,816,0.9947],"harvey":[126529,848,0.9933],"earl":[289108,2247,0.9923],"eugene":[380453,2632,0.9931],"ralph":[413799,1840,0.9956],"ed":[26207,165,0.8787],"edwin":[246744,1191,0.9952],"ben":[85049,467,0.981],"charley":[23885,10987,0.6223],"paul":[1396943,5843,0.9958],"isaac":[325457,774,0.9976],"otto":[38669,100,0.9153],"luther":[66862,435,0.9594],"lawrence":[460585,2180,0.9953],"patrick":[685098,2834,0.9959],"guy":[90529,470,0.9867],"oliver":[254854,753,0.9971],"theodore":[303761,962,0.9968],"hugh":[83466,354,0.9805],"alexander":[728817,4531,0.9938],"august":[64194,5998,0.8864],"floyd":[154303,1377,0.9912],"homer":[60891,367,0.9517],"jack":[748131,2728,0.9964],"leonard":[293884,1412,0.9952],"horace":[54141,202,0.9435],"philip":[343458,1137,0.9967],"allen":[271282,1866,0.9932],"archie":[55109,1286,0.9286],"stephen":[863904,2930,0.9966],"chester":[121369,828,0.9932],"willis":[52283,822,0.9304],"raymond":[778955,3517,0.9955],"rufus":[36045,151,0.9079],"warren":[183044,962,0.9948],"milton":[117807,615,0.9948],"alex":[284633,9749,0.9669],"julius":[83851,410,0.9803],"bernard":[199948,983,0.9951],"dan":[106473,566,0.9947],"jerry":[614825,17314,0.9726],"calvin":[218340,1216,0.9945],"perry":[75908,3608,0.9356],"dave":[64328,114,0.9601],"anthony":[1481986,7104,0.9952],"amos":[36145,64,0.9102],"dennis":[620615,2691,0.9957],"leroy":[200702,1182,0.9941],"wesley":[242105,3155,0.9871],"alonzo":[45360,154,0.9285],"garfield":[5561,0,0.749],"franklin":[140810,778,0.9945],"emil":[32939,134,0.9002],"leon":[180022,1436,0.9921],"nathan":[582484,1769,0.997],"harold":[551398,2648,0.9952],"matthew":[1646990,5575,0.9966],"levi":[205247,1354,0.9934],"moses":[42685,45,0.9252],"everett":[131595,1122,0.9915],"lester":[130579,1359,0.9897],"winfield":[5206,0,0.7433],"adam":[576860,2065,0.9964],"lloyd":[160877,998,0.9938],"mack":[42049,180,0.9212],"fredrick":[64430,255,0.9584],"jay":[194725,2575,0.9869],"jess":[25045,477,0.8649],"melvin":[244676,2139,0.9913],"noah":[509025,4547,0.9911],"aaron":[610370,4377,0.9929],"alvin":[161108,1098,0.9932],"norman":[252984,1602,0.9937],"gilbert":[129999,673,0.9948],"elijah":[369304,1289,0.9965],"victor":[328729,1807,0.9945],"gus":[19972,5,0.8599],"nelson":[79398,431,0.9751],"jasper":[59598,1204,0.9378],"silas":[70772,177,0.9678],"jake":[128639,217,0.9983],"christopher":[2064796,9507,0.9954],"mike":[205707,662,0.9968],"percy":[32052,626,0.8856],"adolph":[18745,20,0.8538],"maurice":[136109,2611,0.9812],"cornelius":[36324,642,0.8977],"felix":[81428,662,0.9749],"reuben":[31851,45,0.8995],"wallace":[83024,582,0.9776],"claud":[10893,47,0.8043],"roscoe":[22096,11,0.8685],"sylvester":[43165,627,0.915],"earnest":[58366,726,0.9426],"hiram":[14352,0,0.8314],"otis":[60653,887,0.944],"simon":[68732,161,0.9654],"willard":[77607,884,0.9679],"irvin":[39840,75,0.9185],"mark":[1360769,4496,0.9967],"jose":[588779,4220,0.9929],"wilbur":[56880,290,0.9466],"abraham":[102276,208,0.998],"virgil":[71881,1444,0.9539],"clinton":[97473,438,0.9937],"elbert":[33501,97,0.9026],"marshall":[96459,1157,0.9861],"owen":[238411,643,0.9973],"wiley":[18234,371,0.8369],"anton":[23783,21,0.8746],"morris":[70909,483,0.9642],"manuel":[190712,1158,0.994],"phillip":[311120,1330,0.9957],"augustus":[20892,10,0.8636],"emmett":[75596,285,0.9724],"eli":[149990,982,0.9935],"nicholas":[922897,3139,0.9966],"wilson":[48403,210,0.9333],"harley":[40499,30410,0.5541],"newton":[8162,5,0.7819],"timothy":[1082404,4326,0.996],"marvin":[253786,1615,0.9937],"ross":[81752,422,0.9779],"curtis":[260314,2322,0.9912],"edmund":[51883,60,0.942],"jeff":[120212,263,0.9978],"elias":[120370,231,0.9981],"harrison":[96050,316,0.9935],"stanley":[301142,1437,0.9953],"columbus":[7517,0,0.7752],"lon":[9836,20,0.7971],"russell":[358820,1696,0.9953],"solomon":[37284,11,0.9141],"arch":[2526,0,0.6805],"asa":[20534,1825,0.7989],"clayton":[138209,610,0.9956],"enoch":[12759,0,0.8212],"irving":[44273,85,0.9276],"mathew":[77298,207,0.9753],"nathaniel":[284481,1162,0.9959],"scott":[774451,2608,0.9966],"hubert":[57538,189,0.9492],"lemuel":[9890,0,0.799],"andy":[93644,1276,0.9821],"ellis":[48988,6913,0.8321],"emanuel":[54222,99,0.9453],"joshua":[1244059,4953,0.996],"millard":[16733,33,0.8432],"vernon":[146276,1976,0.9867],"wade":[75552,168,0.9737],"cyrus":[27908,66,0.8873],"miles":[116752,344,0.9971],"rudolph":[53413,197,0.9424],"sherman":[39173,203,0.9143],"austin":[434891,5570,0.9874],"bill":[160457,716,0.9956],"chas":[3208,10,0.6993],"monroe":[16933,6603,0.629],"byron":[82006,303,0.9795],"edd":[5437,13,0.7455],"emery":[20100,40609,0.6399],"grant":[134896,207,0.9985],"jerome":[161074,1062,0.9934],"max":[165413,1078,0.9935],"mose":[7905,55,0.7748],"steve":[241122,907,0.9963],"gordon":[154697,670,0.9957],"abe":[9628,0,0.7967],"pete":[43474,170,0.9244],"chris":[147039,22956,0.865],"clark":[50015,336,0.9341],"gustave":[5420,0,0.7468],"orville":[35051,155,0.9053],"lorenzo":[82665,314,0.9801],"bruce":[386313,1395,0.9964],"marcus":[240300,1342,0.9944],"preston":[121812,788,0.9936],"bob":[92978,322,0.9905],"dock":[5383,0,0.7462],"donald":[1414419,5561,0.9961],"jackson":[290561,762,0.9974],"barney":[16085,91,0.837],"delbert":[46918,126,0.932],"edmond":[24820,7,0.8787],"anderson":[33090,1474,0.869],"christian":[450258,19847,0.9578],"jefferson":[24141,0,0.8766],"luke":[316031,556,0.9982],"neal":[54960,257,0.944],"burt":[6555,0,0.7633],"ike":[7285,0,0.7725],"myron":[45268,463,0.9226],"tony":[251269,2889,0.9886],"conrad":[38509,16,0.9168],"joel":[277996,2588,0.9908],"matt":[23861,5,0.8754],"riley":[103344,137477,0.5709],"vincent":[360001,1415,0.9961],"emory":[18700,9889,0.583],"isaiah":[248633,683,0.9973],"nick":[50328,132,0.9381],"ezra":[98544,4676,0.9547],"green":[2033,0,0.6616],"juan":[363250,2760,0.9925],"clifton":[70164,436,0.9638],"lucius":[9918,0,0.7993],"porter":[20274,924,0.8275],"arnold":[103720,550,0.9947],"bud":[9489,0,0.7954],"jeremiah":[221735,690,0.9969],"taylor":[113137,329356,0.7443],"forrest":[52778,1046,0.9278],"roland":[100364,362,0.9964],"spencer":[123013,5461,0.9575],"burton":[22464,48,0.8686],"don":[167538,1207,0.9928],"emmet":[6856,0,0.7672],"gustav":[4237,0,0.7254],"morgan":[45110,222645,0.8315],"ned":[17284,5,0.8473],"van":[29195,1754,0.8472],"ambrose":[10503,38,0.8017],"chauncey":[9661,508,0.7614],"elisha":[15340,14307,0.4628],"ferdinand":[8885,0,0.7897],"general":[4025,0,0.721],"julian":[257331,3283,0.9874],"kenneth":[1282809,5338,0.9959],"mitchell":[163813,1128,0.9932],"josh":[17193,0,0.8471],"judson":[13627,0,0.8269],"lyman":[8553,0,0.7864],"napoleon":[7782,5,0.7778],"pedro":[93393,499,0.9892],"berry":[5733,370,0.7112],"dewitt":[7210,0,0.7716],"ervin":[38880,138,0.915],"forest":[17433,580,0.8237],"pink":[1089,38,0.5898],"ruben":[115918,655,0.9944],"sanford":[15031,0,0.8354],"ward":[14983,84,0.8309],"douglas":[559708,2073,0.9963],"ole":[2101,0,0.6645],"omer":[8784,67,0.7834],"ulysses":[18484,25,0.8523],"walker":[43694,938,0.9104],"wilbert":[39995,178,0.9167],"adelbert":[2373,0,0.6751],"benjiman":[4295,0,0.7266],"ivan":[147869,649,0.9956],"jonas":[28064,28,0.8888],"major":[21255,76,0.8627],"abner":[9178,0,0.7925],"archibald":[3800,0,0.716],"caleb":[319054,653,0.998],"clint":[32673,54,0.9015],"dudley":[11863,120,0.8075],"granville":[5496,0,0.748],"king":[37040,40,0.9128],"merton":[4247,0,0.7256],"antonio":[260908,1975,0.9925],"carroll":[35431,5916,0.7912],"freeman":[10961,5,0.8076],"josiah":[143338,449,0.9969],"milo":[40845,445,0.9132],"royal":[19413,4190,0.7193],"dick":[29273,48,0.892],"earle":[11505,285,0.7946],"elza":[2111,823,0.499],"emerson":[32138,31797,0.4831],"fletcher":[16866,213,0.8359],"judge":[3777,0,0.7154],"laurence":[39627,490,0.9094],"roger":[441840,1688,0.9962],"seth":[165273,495,0.997],"glen":[125629,1348,0.9894],"hugo":[36638,36,0.912],"neil":[104581,385,0.9963],"washington":[2644,0,0.6845],"elwood":[20702,53,0.8612],"gust":[1871,0,0.6544],"harmon":[6592,30,0.7607],"jordan":[398415,135084,0.7468],"simeon":[9258,25,0.7914],"wayne":[354385,1604,0.9955],"wilber":[6864,11,0.7662],"clem":[4275,54,0.7182],"evan":[285259,4675,0.9839],"frederic":[14398,0,0.8317],"irwin":[15934,12,0.8399],"junius":[5362,0,0.7459],"lafayette":[4854,21,0.7344],"loren":[46439,12783,0.7485],"madison":[7852,414808,0.9814],"mason":[336209,3297,0.9903],"orval":[7915,12,0.7786],"abram":[19890,0,0.8597],"aubrey":[31019,131479,0.8091],"elliott":[60250,7675,0.8572],"hans":[15531,5,0.838],"karl":[100733,915,0.991],"minor":[1728,12,0.6436],"wash":[1196,0,0.6155],"wilfred":[29388,103,0.8908],"allan":[96230,253,0.9943],"alphonse":[10536,0,0.8045],"dallas":[69713,15466,0.807],"isiah":[24587,11,0.8778],"jason":[1049831,5029,0.9952],"johnny":[317213,3770,0.9883],"lawson":[17698,549,0.8266],"lew":[2188,15,0.6641],"micheal":[154587,1836,0.9883],"orin":[6198,16,0.7567],"addison":[13363,145882,0.9161],"cal":[7303,10,0.7718],"erastus":[407,0,0.5219],"francisco":[141117,954,0.9933],"hardy":[5758,17,0.7501],"lucien":[9725,5,0.7972],"randolph":[49402,112,0.9368],"stewart":[31176,85,0.8966],"vern":[11490,485,0.7826],"wilmer":[15883,743,0.8064],"zack":[8887,0,0.7898],"adrian":[267752,15675,0.9447],"alvah":[1808,72,0.6298],"bertram":[7946,0,0.78],"clay":[39736,273,0.9142],"ephraim":[7997,0,0.7806],"fritz":[6635,0,0.7644],"giles":[4719,0,0.7348],"grover":[27089,92,0.8839],"harris":[16322,183,0.8342],"isom":[1775,0,0.6498],"jesus":[242168,2679,0.9891],"johnie":[20920,5139,0.709],"jonathan":[866991,3570,0.9959],"lucian":[13795,32,0.8262],"malcolm":[68941,119,0.9662],"merritt":[6034,2829,0.5375],"otho":[3328,0,0.7044],"perley":[1020,32,0.586],"rolla":[1306,65,0.5977],"sandy":[10445,69017,0.8512],"tomas":[30308,27,0.8956],"wilford":[10433,5,0.8033],"adolphus":[4109,0,0.7227],"angus":[6692,0,0.7651],"arther":[4988,47,0.7335],"carlos":[304581,2040,0.9933],"cary":[24472,5323,0.735],"cassius":[9230,29,0.7908],"davis":[31663,1013,0.8749],"hamilton":[6479,0,0.7623],"harve":[554,0,0.5487],"israel":[70134,1593,0.9496],"leander":[6802,28,0.7637],"melville":[2269,14,0.6676],"murray":[21859,383,0.8545],"pleasant":[629,73,0.5101],"sterling":[36521,3504,0.8399],"steven":[1291851,4465,0.9966],"axel":[68288,201,0.9643],"boyd":[27605,65,0.8863],"bryant":[51550,237,0.9385],"clement":[14103,6,0.8295],"erwin":[21153,49,0.8633],"ezekiel":[78441,45,0.9784],"foster":[12858,272,0.8066],"geo":[1268,16,0.614],"houston":[17699,425,0.8317],"issac":[24287,17,0.8765],"jules":[9251,1996,0.6664],"larkin":[2486,1977,0.4066],"mat":[789,0,0.5794],"morton":[12336,5,0.8179],"orlando":[49177,242,0.9342],"pierce":[19646,369,0.8444],"prince":[22884,550,0.8535],"rollie":[3556,24,0.706],"rollin":[5756,0,0.752],"sim":[1933,0,0.6572],"stuart":[68828,314,0.9636],"wilburn":[10324,15,0.8017],"bennett":[66225,2050,0.9378],"casper":[5951,21,0.7526],"christ":[3940,52,0.7109],"egbert":[1231,0,0.6181],"elmo":[10091,247,0.7837],"gabriel":[389106,6839,0.9827],"hector":[107937,481,0.9956],"horatio":[1437,0,0.6315],"lige":[1280,0,0.6214],"saul":[42751,74,0.9247],"smith":[5354,181,0.7241],"squire":[511,0,0.5417],"tobe":[949,29,0.5803],"wyatt":[201916,1217,0.994],"alford":[4790,5,0.7354],"alton":[47349,376,0.9284],"andres":[94525,449,0.9908],"burl":[7180,19,0.7694],"cicero":[1448,0,0.6322],"dean":[190040,2908,0.9849],"dorsey":[5411,817,0.6593],"enos":[3937,0,0.719],"howell":[3911,0,0.7185],"loyd":[22431,86,0.8672],"mahlon":[5608,23,0.7471],"nat":[2162,0,0.667],"omar":[105100,456,0.9957],"oran":[4428,0,0.7292],"parker":[127437,30347,0.8077],"raleigh":[9213,2952,0.6188],"reginald":[111400,757,0.9933],"rubin":[7038,16,0.7679],"seymour":[13102,10,0.8229],"wm":[2650,86,0.6658],"young":[2234,530,0.5563],"benjamine":[1807,0,0.6514],"carlton":[48847,277,0.933],"eldridge":[5241,0,0.7439],"elzie":[3859,657,0.6246],"garrett":[135222,452,0.9967],"isham":[615,0,0.5578],"johnson":[6987,22,0.7667],"larry":[807374,3560,0.9956],"logan":[382352,31059,0.9249],"merrill":[12974,2069,0.7206],"mont":[884,0,0.5893],"oren":[9326,45,0.7905],"pierre":[18908,74,0.8523],"rex":[60160,141,0.9538],"rodney":[246952,1175,0.9953],"ted":[75122,264,0.972],"webster":[4446,0,0.7296],"west":[3530,20,0.706],"wheeler":[1883,5,0.6535],"willam":[3510,0,0.7091],"al":[17068,255,0.8352],"aloysius":[5704,0,0.7512],"alvie":[4089,623,0.6375],"art":[6108,5,0.7566],"bailey":[21603,109344,0.835],"benjaman":[2024,0,0.6612],"beverly":[4632,378313,0.9879],"bishop":[6805,103,0.7564],"cloyd":[3050,0,0.6969],"coleman":[17451,29,0.8471],"dana":[53261,193311,0.784],"duncan":[21032,11,0.8642],"dwight":[78541,320,0.9754],"emile":[8570,648,0.7372],"evert":[3304,0,0.7038],"henderson":[4242,0,0.7255],"hunter":[259395,14056,0.9486],"lem":[1297,0,0.6226],"luis":[290440,1534,0.9947],"mathias":[14452,0,0.832],"maynard":[14911,22,0.8336],"miguel":[188883,996,0.9948],"mortimer":[1943,0,0.6577],"nels":[3819,0,0.7164],"norris":[16441,523,0.8198],"pat":[26732,40122,0.5792],"phil":[20026,72,0.8575],"rush":[3311,12,0.7018],"santiago":[96232,131,0.9954],"sol":[8099,3708,0.5587],"sydney":[9383,177413,0.9498],"thaddeus":[25739,32,0.8811],"thornton":[3122,0,0.6989],"tim":[83327,188,0.9821],"travis":[307827,2116,0.9932],"truman":[15835,26,0.8387],"watson":[6474,17,0.7605],"webb":[1642,0,0.6431],"wellington":[2855,0,0.6911],"winfred":[10104,351,0.7769],"wylie":[5896,726,0.6804],"alec":[54916,337,0.9427],"basil":[13095,343,0.8046],"baxter":[3996,0,0.7203],"bertrand":[3991,0,0.7202],"buford":[10848,110,0.7998],"burr":[803,0,0.5809],"cleveland":[21934,87,0.8651],"colonel":[1250,0,0.6194],"dempsey":[4208,506,0.6558],"early":[3979,373,0.6654],"ellsworth":[7332,0,0.773],"fate":[1186,143,0.5575],"finley":[18360,22150,0.5039],"gabe":[4086,0,0.7223],"garland":[23844,855,0.8481],"gerald":[448793,2385,0.9947],"herschel":[10640,0,0.8054],"hezekiah":[10583,10,0.8042],"justus":[9059,811,0.7332],"lindsey":[7735,157390,0.9532],"marcellus":[9392,5,0.7942],"olaf":[2525,0,0.6805],"olin":[9842,5,0.7983],"pablo":[49617,69,0.9379],"rolland":[9852,5,0.7983],"turner":[9794,384,0.7713],"verne":[5841,878,0.6654],"volney":[629,0,0.5597],"williams":[6086,24,0.7542],"almon":[1610,18,0.6352],"alois":[2517,186,0.6391],"alonza":[3315,6,0.703],"anson":[7837,5,0.7784],"authur":[2192,0,0.6682],"benton":[10310,6,0.8022],"billie":[31624,103252,0.7655],"cornelious":[2475,113,0.6528],"darius":[53677,272,0.9416],"denis":[20636,867,0.8316],"dillard":[3730,0,0.7143],"doctor":[379,0,0.5157],"elvin":[20830,234,0.8551],"eric":[887636,4293,0.9952],"evans":[5299,103,0.7323],"gideon":[21256,32,0.8643],"haywood":[6530,0,0.763],"hilliard":[1859,0,0.6539],"hosea":[5414,20,0.7443],"lincoln":[100181,1974,0.9807],"lonzo":[3936,0,0.719],"lucious":[4805,5,0.7357],"lum":[493,0,0.5386],"malachi":[63010,281,0.956],"newt":[840,0,0.5849],"noel":[51456,15120,0.7456],"orie":[1715,428,0.5332],"palmer":[9035,8055,0.4475],"pinkney":[531,0,0.545],"sumner":[2427,212,0.6293],"terry":[424330,96944,0.814],"urban":[3246,0,0.7023],"uriah":[11645,885,0.7617],"valentine":[6622,2168,0.5942],"waldo":[5711,6,0.7506],"warner":[8416,72,0.7791],"wong":[187,0,0.4544],"zeb":[2738,0,0.6875],"abel":[64483,156,0.9598],"alden":[17739,933,0.8116],"archer":[27750,385,0.8777],"avery":[65711,164682,0.7148],"carson":[129861,7916,0.9425],"cullen":[16394,106,0.8381],"doc":[1364,0,0.627],"eben":[3580,6,0.7097],"elige":[528,0,0.5445],"elmore":[3957,10,0.7179],"ernst":[2383,0,0.6754],"finis":[2195,5,0.667],"godfrey":[3236,0,0.702],"guss":[1136,0,0.6111],"hamp":[1076,0,0.6064],"hermann":[731,0,0.5728],"isadore":[5699,195,0.7291],"isreal":[4635,58,0.7252],"jones":[5051,112,0.7265],"lafe":[690,0,0.5678],"leland":[57374,543,0.9436],"llewellyn":[3398,330,0.6511],"ludwig":[2684,0,0.6858],"manford":[1479,0,0.634],"maxwell":[106804,720,0.9933],"obie":[4155,271,0.6846],"octave":[449,0,0.5304],"orrin":[5922,0,0.7545],"oswald":[4339,0,0.7275],"park":[1628,0,0.6423],"parley":[673,6,0.5614],"ramon":[77133,534,0.9713],"rice":[287,0,0.4916],"stonewall":[696,0,0.5685],"tillman":[3705,7,0.7126],"aron":[20854,355,0.8508],"ashley":[15837,858007,0.9819],"bernhard":[1666,0,0.6443],"berton":[1874,0,0.6546],"buster":[8161,5,0.7819],"butler":[987,0,0.5989],"carleton":[4839,0,0.737],"clarance":[4078,0,0.7221],"crawford":[4640,48,0.7267],"danial":[9386,80,0.7885],"dayton":[15562,619,0.8096],"dolphus":[1245,0,0.619],"elder":[2221,52,0.656],"ephriam":[966,0,0.597],"fayette":[438,584,0.3439],"felipe":[31577,133,0.8965],"fernando":[102317,590,0.9943],"flem":[244,0,0.4775],"ford":[10364,17,0.8019],"harlan":[26026,463,0.8692],"hayes":[18673,873,0.8199],"henery":[2122,0,0.6653],"hoy":[825,0,0.5833],"huston":[2704,0,0.6864],"ivory":[8537,13732,0.5362],"jonah":[82424,752,0.9751],"justin":[788927,3804,0.9952],"lenard":[9992,7,0.7994],"leopold":[3965,0,0.7196],"lionel":[33366,44,0.9036],"manley":[2251,0,0.6705],"marquis":[24466,474,0.8627],"marshal":[5451,74,0.7384],"mart":[1039,0,0.6033],"odie":[2606,1589,0.4501],"olen":[7632,13,0.7754],"oral":[2802,506,0.5962],"orley":[459,0,0.5324],"otha":[6386,1403,0.6381],"press":[241,0,0.4764],"price":[3866,84,0.704],"quincy":[27349,5098,0.7605],"randall":[198467,1154,0.9942],"rich":[4381,0,0.7283],"richmond":[4287,0,0.7264],"romeo":[25728,0,0.8821],"russel":[16584,12,0.8434],"rutherford":[729,0,0.5725],"shade":[1144,863,0.3765],"shelby":[16404,148382,0.9005],"solon":[1345,0,0.6257],"thurman":[16391,5,0.8427],"tilden":[1304,90,0.5883],"troy":[215736,2674,0.9878],"woodson":[1303,0,0.623],"worth":[2191,0,0.6681],"aden":[21624,653,0.8441],"alcide":[1003,0,0.6003],"alf":[1130,0,0.6106],"algie":[1529,361,0.5301],"arlie":[6696,2522,0.576],"bart":[16357,5,0.8425],"bedford":[1240,0,0.6187],"benito":[14546,31,0.831],"billy":[384025,5417,0.9861],"birt":[268,5,0.4783],"bruno":[18521,0,0.8535],"burley":[2310,40,0.6627],"chancy":[649,209,0.4438],"claus":[366,0,0.5127],"cliff":[9265,0,0.7934],"clovis":[3070,627,0.5926],"creed":[5504,5,0.7475],"delos":[1323,0,0.6243],"duke":[11200,0,0.8098],"eber":[1313,0,0.6237],"eligah":[1740,0,0.6481],"elliot":[56169,6765,0.8566],"elton":[21292,200,0.8584],"emmitt":[13901,5,0.8283],"gene":[126812,6997,0.9477],"golden":[2886,2247,0.4172],"hal":[16746,12,0.8442],"hardin":[1261,0,0.6201],"harman":[1040,63,0.5738],"hervey":[1125,0,0.6102],"hollis":[15748,5289,0.6472],"ivey":[1803,4633,0.5483],"len":[4506,102,0.7165],"lindsay":[5136,130283,0.9621],"lonie":[1078,1677,0.4188],"lyle":[58977,1008,0.9396],"mac":[11005,53,0.8049],"mal":[335,0,0.505],"math":[100,0,0.4],"miller":[10306,2235,0.6736],"orson":[2586,0,0.6825],"osborne":[1731,0,0.6477],"percival":[1353,0,0.6263],"pleas":[831,0,0.5839],"ples":[388,0,0.5178],"rafael":[87725,569,0.9828],"raoul":[2914,0,0.6929],"roderick":[47088,263,0.9299],"shelton":[11950,172,0.8051],"sid":[3000,5,0.6944],"theron":[12905,40,0.8199],"tobias":[28093,0,0.8897],"toney":[6410,194,0.7415],"tyler":[602289,17422,0.9719],"vance":[26811,138,0.8816],"walton":[5833,10,0.752],"watt":[444,0,0.5295],"weaver":[525,0,0.544],"wilton":[8638,41,0.784],"adolf":[1394,0,0.6289],"albin":[4417,0,0.729],"albion":[715,0,0.5709],"allison":[3819,316525,0.9881],"alpheus":[770,0,0.5773],"anastacio":[2308,0,0.6726],"andre":[129780,2205,0.9833],"arlington":[1570,108,0.6034],"armand":[15315,6,0.8367],"asberry":[323,0,0.5018],"asbury":[579,0,0.5525],"asher":[103698,1396,0.9867],"augustin":[4069,0,0.7219],"auther":[2349,17,0.67],"author":[2173,0,0.6674],"ballard":[1153,0,0.6124],"blas":[2908,0,0.6927],"caesar":[5399,0,0.7465],"candido":[2081,0,0.6637],"cato":[630,0,0.5599],"clarke":[3872,1546,0.5337],"clemente":[3729,0,0.7143],"colin":[132757,445,0.9967],"commodore":[368,0,0.5132],"coy":[17222,866,0.8107],"cruz":[29755,4217,0.7937],"curt":[16679,0,0.8444],"damon":[68226,316,0.9627],"davie":[3250,1051,0.5491],"delmar":[14227,134,0.8237],"dexter":[36186,218,0.9068],"doss":[438,0,0.5283],"drew":[78045,9093,0.8849],"edson":[4597,0,0.7325],"elam":[2873,0,0.6917],"elihu":[1222,0,0.6174],"ernie":[16501,714,0.812],"ferd":[689,0,0.5676],"friend":[74,0,0.0],"garry":[47654,179,0.9324],"gary":[901938,3285,0.9964],"gustaf":[747,0,0.5747],"hampton":[4656,221,0.7042],"harrie":[417,52,0.475],"hence":[66,0,0.0],"hillard":[2356,0,0.6744],"hollie":[1453,18393,0.7966],"holmes":[610,0,0.5571],"hyman":[5858,0,0.7535],"ishmael":[6671,0,0.7648],"jarrett":[22835,78,0.869],"jessee":[1645,313,0.5531],"joeseph":[2849,0,0.6909],"junious":[1714,0,0.6468],"kirk":[68020,197,0.964],"levy":[3818,311,0.6687],"mervin":[12259,38,0.8154],"michel":[10516,3545,0.6204],"milford":[8198,13,0.7816],"mitchel":[13276,22,0.8234],"noble":[9627,480,0.7629],"obed":[4063,0,0.7218],"orren":[918,0,0.5926],"ottis":[4458,174,0.7056],"rafe":[2754,0,0.688],"redden":[32,0,0.0],"reese":[19129,43139,0.6643],"rube":[612,0,0.5574],"rupert":[5567,16,0.7472],"salomon":[3772,0,0.7153],"sanders":[2377,6,0.6737],"soloman":[1662,0,0.6441],"stacy":[22241,163889,0.8805],"stanford":[7714,0,0.7775],"stanton":[6708,0,0.7653],"thad":[8212,5,0.7825],"titus":[25883,12,0.8822],"tracy":[61471,251303,0.8035],"wendell":[53696,567,0.937],"wilhelm":[1801,0,0.6511],"willian":[4054,18,0.7188],"yee":[281,202,0.3123],"zeke":[8055,0,0.7812],"ab":[375,0,0.5148],"abbott":[1269,24,0.6108],"agustus":[398,0,0.52],"albertus":[421,0,0.5249],"almer":[559,322,0.3737],"alphonso":[15166,27,0.8348],"alvia":[441,393,0.3089],"arvid":[3158,0,0.6999],"ashby":[1642,743,0.4651],"aurthur":[413,0,0.5232],"babe":[345,383,0.3012],"baldwin":[634,0,0.5604],"barnett":[1279,6,0.6189],"bartholomew":[4232,0,0.7253],"barton":[9364,0,0.7943],"bernie":[9217,1535,0.6912],"blaine":[32843,1216,0.8741],"boston":[10448,989,0.7415],"brad":[83042,233,0.9813],"bradford":[32042,39,0.9002],"bradley":[312200,1913,0.9939],"brooks":[53047,1605,0.9197],"buck":[6534,0,0.763],"budd":[1090,0,0.6075],"ceylon":[86,0,0.0],"chalmers":[1082,0,0.6068],"chesley":[2283,625,0.5438],"chin":[135,0,0.4261],"crockett":[369,0,0.5134],"cyril":[11993,97,0.8099],"denver":[18593,3909,0.7192],"dow":[1091,0,0.6076],"duff":[441,0,0.5289],"edie":[80,5579,0.7399],"elick":[113,0,0.4106],"elie":[2983,379,0.6258],"eliga":[434,0,0.5275],"eliseo":[11446,0,0.8117],"elroy":[7454,6,0.7739],"ely":[4422,600,0.6517],"ennis":[3196,320,0.6447],"enrique":[60706,260,0.9529],"erasmus":[117,0,0.4136],"esau":[2939,0,0.6936],"everette":[10981,452,0.7795],"firman":[193,0,0.4571],"fleming":[1017,0,0.6015],"gardner":[2997,5,0.6943],"gee":[64,17,0.0],"gorge":[2609,0,0.6833],"gottlieb":[320,0,0.501],"gregorio":[10782,5,0.8062],"gregory":[711405,2861,0.996],"gustavus":[266,0,0.485],"halsey":[413,508,0.327],"handy":[538,5,0.5419],"hardie":[644,0,0.5618],"harl":[601,0,0.5558],"hayden":[111803,32710,0.7737],"hays":[723,5,0.5685],"hermon":[3966,79,0.7073],"hershel":[10279,5,0.802],"holly":[1541,204548,0.9925],"hosteen":[65,0,0.0],"hoyt":[8518,10,0.7852],"hudson":[105663,1799,0.9833],"huey":[7055,5,0.7692],"humphrey":[1085,0,0.6071],"hunt":[247,0,0.4785],"hyrum":[3373,0,0.7056],"irven":[1086,0,0.6072],"isam":[292,0,0.4931],"jabez":[1117,0,0.6096],"jodie":[3651,27395,0.7927],"judd":[5650,0,0.7504],"julious":[1751,0,0.6487],"justice":[19702,18597,0.4715],"kelly":[82317,473641,0.8519],"kit":[3748,2107,0.4823],"knute":[681,0,0.5666],"lavern":[10203,6845,0.5065],"lawyer":[1021,0,0.6018],"layton":[11775,1081,0.7527],"leonidas":[9686,0,0.7972],"lewie":[870,0,0.5879],"linwood":[12776,5,0.821],"loran":[3714,817,0.5994],"lorin":[4728,2667,0.4947],"mace":[1923,0,0.6568],"malcom":[5772,0,0.7523],"manly":[521,0,0.5434],"manson":[816,0,0.5823],"matthias":[12816,0,0.8216],"merida":[5,1501,0.6335],"miner":[274,0,0.4876],"montgomery":[5459,527,0.6889],"moroni":[415,0,0.5236],"murdock":[340,0,0.5063],"nate":[4395,301,0.6873],"nathanial":[10545,0,0.8046],"nimrod":[333,0,0.5045],"norval":[2377,0,0.6752],"nova":[3077,51063,0.8929],"orion":[22098,612,0.8478],"orla":[286,1129,0.5028],"orrie":[675,313,0.4092],"payton":[24626,59329,0.6959],"philo":[383,0,0.5166],"phineas":[2695,0,0.6861],"presley":[4857,30411,0.7842],"ransom":[4761,10,0.7342],"reece":[21290,4746,0.7221],"rene":[50740,21828,0.6797],"roswell":[1404,0,0.6295],"rowland":[4263,0,0.7259],"sampson":[3866,0,0.7175],"samual":[5584,0,0.7494],"santos":[18473,2759,0.7529],"schuyler":[4160,1305,0.569],"sheppard":[676,0,0.566],"spurgeon":[1445,0,0.632],"starling":[987,217,0.5051],"sylvanus":[465,0,0.5335],"theadore":[4000,0,0.7204],"theophile":[221,0,0.4689],"tilmon":[574,0,0.5518],"tommy":[178307,2907,0.984],"unknown":[9827,9775,0.4304],"vann":[2033,24,0.6549],"wes":[6408,0,0.7613],"winston":[31961,162,0.8968],"wood":[313,6,0.4913],"woodie":[1924,338,0.5706],"worthy":[393,47,0.4722],"wright":[1615,0,0.6416],"york":[955,11,0.5902],"zachariah":[30668,37,0.8964],"adell":[1049,6206,0.6605],"celeste":[57,63949,0.9604],"audrey":[2928,302938,0.9904],"zadie":[0,3530,0.7096],"aura":[5,4679,0.7333],"elta":[0,1415,0.6302],"eveline":[0,3305,0.7038],"lelah":[0,2177,0.6676],"nanie":[0,778,0.5782],"petra":[67,14398,0.8282],"elvie":[725,2666,0.5551],"glennie":[294,1931,0.581],"juliette":[5,38504,0.917],"mannie":[1054,505,0.4317],"mercy":[207,10313,0.7886],"miranda":[189,114541,0.9984],"nana":[850,2514,0.5271],"zilpah":[0,9,0.0],"almedia":[0,530,0.5449],"berdie":[0,1114,0.6094],"byrdie":[0,593,0.5546],"claribel":[0,2969,0.6945],"coral":[191,10870,0.7948],"edwina":[0,15457,0.8378],"exie":[6,2071,0.6616],"justine":[2412,38168,0.8669],"malissie":[0,449,0.5304],"myrtice":[0,4342,0.7275],"narcissus":[0,318,0.5005],"rosamond":[6,3283,0.7021],"theresia":[0,2016,0.6609],"valeria":[105,78213,0.9775],"vessie":[5,513,0.5376],"victorine":[0,708,0.57],"alfreda":[35,11383,0.809],"alicia":[707,230104,0.9969],"arabella":[0,26512,0.8847],"arminda":[0,1294,0.6224],"audie":[4400,2414,0.4951],"cammie":[28,3936,0.7145],"carmen":[16857,141984,0.8939],"dottie":[0,9836,0.7986],"flo":[0,2094,0.6642],"fredericka":[0,1957,0.6583],"gloria":[1737,414836,0.9958],"gusta":[0,578,0.5524],"icie":[0,1354,0.6263],"lillia":[0,2578,0.6823],"lota":[0,586,0.5536],"nathalie":[6,20521,0.8622],"nita":[0,14261,0.8308],"ota":[0,215,0.4665],"ramona":[249,70496,0.9665],"texie":[0,677,0.5661],"zillah":[0,537,0.546],"aida":[5,13624,0.8266],"allene":[5,8755,0.7881],"arra":[0,154,0.4375],"belva":[0,7955,0.7801],"biddie":[0,262,0.4837],"bula":[0,1034,0.6029],"carry":[300,1359,0.5275],"courtney":[22996,258319,0.9183],"crete":[0,14,0.0],"dicy":[0,328,0.5032],"dossie":[466,568,0.3312],"ester":[891,16127,0.8019],"evangeline":[0,34756,0.9082],"flavia":[0,1830,0.6525],"fleta":[0,1333,0.625],"fronia":[0,543,0.547],"gillie":[191,322,0.3402],"jinnie":[0,844,0.5853],"jonnie":[3183,5864,0.5129],"karen":[2784,987811,0.9972],"katharina":[0,2102,0.6645],"mell":[342,202,0.344],"mirtie":[0,236,0.4746],"mora":[0,931,0.5938],"ninnie":[0,136,0.4267],"rettie":[0,163,0.4424],"rozella":[0,2761,0.6882],"sofia":[178,178450,0.999],"sybil":[5,20207,0.8609],"sylvania":[0,546,0.5474],"tilla":[0,86,0.0],"ursula":[0,14782,0.8339],"veda":[5,13696,0.827],"zaida":[0,3871,0.7176],"zenobia":[0,4573,0.732],"aggie":[30,1484,0.6234],"aletha":[0,6948,0.7684],"andrea":[6013,444089,0.9866],"ason":[451,41,0.4935],"bina":[0,1265,0.6204],"celesta":[0,2136,0.6659],"chloie":[0,1618,0.6418],"christie":[884,45998,0.9166],"corean":[0,926,0.5933],"corinna":[0,7076,0.77],"donia":[0,1214,0.6168],"elodie":[0,5572,0.7492],"epsie":[0,251,0.4799],"eulah":[0,1871,0.6544],"exa":[0,466,0.5337],"gail":[8951,201730,0.9575],"georgine":[0,2807,0.6896],"gretta":[0,4116,0.7229],"henriette":[0,1372,0.6275],"jeffie":[677,1012,0.3868],"jemima":[0,1783,0.6502],"jo":[1846,179020,0.9898],"josefa":[0,4050,0.7215],"juliana":[49,66534,0.964],"katharyn":[0,1614,0.6416],"lannie":[1858,1566,0.3836],"lavada":[0,4489,0.7304],"leonore":[0,2306,0.6726],"levina":[0,612,0.5574],"libby":[5,17760,0.8497],"lilie":[0,1461,0.6329],"louanna":[0,1367,0.6272],"mabell":[0,606,0.5565],"madeleine":[15,45039,0.9304],"marinda":[0,1714,0.6468],"mila":[82,79664,0.9793],"neta":[0,3226,0.7017],"orlena":[0,648,0.5623],"ova":[528,1364,0.4725],"ozella":[0,2331,0.6735],"ressie":[18,1823,0.6466],"rosena":[0,1366,0.6271],"rosey":[0,1262,0.6202],"senora":[0,1060,0.6051],"siddie":[0,59,0.0],"susana":[52,20913,0.8622],"susanne":[0,26086,0.8833],"texanna":[0,249,0.4792],"tiney":[5,327,0.4966],"tinie":[0,83,0.0],"tiny":[161,2087,0.6223],"brown":[1467,5,0.6314],"newell":[3239,79,0.6874],"carter":[200762,9357,0.9555],"lucas":[320790,526,0.9984],"bee":[1023,669,0.3904],"meyer":[5304,200,0.721],"paris":[9200,33157,0.7244],"deforest":[667,0,0.5648],"dolph":[626,0,0.5593],"harper":[6692,132214,0.9518],"jule":[1408,1998,0.4144],"lambert":[3503,0,0.7089],"orange":[598,18,0.5416],"roe":[899,197,0.4987],"ambers":[113,0,0.4106],"collins":[3638,9490,0.5954],"elbridge":[659,0,0.5638],"eldon":[26041,55,0.8815],"elvis":[17824,152,0.8437],"gaston":[4019,0,0.7208],"hartwell":[645,0,0.5619],"knox":[22294,227,0.8617],"manning":[1822,38,0.6405],"reed":[35284,907,0.8889],"thos":[166,0,0.444],"wirt":[286,0,0.4913],"alvis":[5192,326,0.7041],"ammon":[4290,0,0.7265],"boss":[444,0,0.5295],"cas":[181,0,0.4515],"cass":[1841,133,0.6147],"chalmer":[1427,0,0.6309],"denton":[5111,0,0.7417],"elsworth":[829,0,0.5837],"erving":[940,0,0.5946],"fredric":[8379,0,0.7846],"furman":[2758,0,0.6881],"plummer":[453,0,0.5312],"rollo":[940,0,0.5946],"ruffus":[674,0,0.5657],"sheldon":[36626,496,0.9017],"tilman":[930,0,0.5937],"todd":[282235,1060,0.9963],"acie":[2071,72,0.6438],"alfonso":[41238,115,0.9207],"ashton":[86447,19574,0.8154],"burke":[4067,70,0.7111],"cap":[104,0,0.4034],"casimiro":[1078,0,0.6065],"collie":[1172,354,0.489],"curley":[2590,534,0.5795],"dale":[278018,21882,0.927],"dixon":[3040,5,0.6956],"dominick":[66721,267,0.9614],"garret":[13236,5,0.8241],"gerrit":[2861,0,0.6913],"griffin":[49411,737,0.9262],"hall":[870,0,0.5879],"heber":[3131,0,0.6991],"hurley":[2581,78,0.6649],"isidore":[3390,0,0.706],"lorenza":[3692,3168,0.4129],"murphy":[8144,3900,0.5519],"obe":[73,0,0.0],"orlo":[920,0,0.5928],"sebastian":[209385,398,0.9981],"tolbert":[792,0,0.5797],"whit":[1208,0,0.6164],"adrien":[9604,1398,0.7056],"alto":[561,31,0.5254],"angelo":[84975,850,0.977],"antone":[5956,10,0.7539],"arden":[8340,7253,0.4485],"atticus":[17107,112,0.8417],"belton":[1178,0,0.6142],"blair":[14939,21459,0.5378],"burrell":[1475,0,0.6338],"campbell":[5877,6826,0.441],"champ":[1264,0,0.6203],"coley":[2021,340,0.5775],"conway":[2769,11,0.6861],"craig":[299522,1012,0.9966],"dalton":[85003,426,0.9814],"darwin":[26100,89,0.8806],"dennie":[3729,808,0.6011],"ebb":[247,0,0.4785],"ebbie":[317,346,0.2945],"ellison":[2865,5465,0.5144],"elonzo":[227,0,0.4712],"emit":[390,0,0.5182],"emry":[914,2214,0.4948],"ephram":[453,0,0.5312],"esequiel":[2929,0,0.6933],"evertt":[958,0,0.5963],"garner":[2263,54,0.6573],"garnett":[3852,2784,0.4437],"graham":[58459,222,0.9501],"gregg":[36507,112,0.9099],"halbert":[1137,0,0.6112],"harvie":[1646,102,0.6107],"harvy":[973,0,0.5976],"hubbard":[763,0,0.5765],"jared":[205539,768,0.9963],"jere":[4278,1159,0.5878],"joesph":[15637,12,0.8383],"johnathan":[97656,349,0.9947],"juluis":[893,0,0.5902],"kirby":[14497,3898,0.6722],"kyle":[485170,8915,0.982],"lane":[46173,4503,0.8573],"lawerence":[4818,0,0.7366],"less":[281,0,0.4897],"lowell":[41293,352,0.9161],"loy":[4111,872,0.6101],"marcel":[19767,992,0.8222],"marius":[2602,0,0.6831],"marrion":[620,378,0.3726],"mercer":[1293,208,0.5472],"monte":[23037,828,0.8452],"nolan":[130624,536,0.9959],"okey":[1462,0,0.633],"page":[1538,3949,0.5382],"primus":[194,0,0.4576],"prosper":[645,68,0.5162],"pryor":[467,56,0.4855],"robin":[46562,291558,0.8623],"roll":[5,0,0.0],"seward":[568,0,0.5509],"shannon":[52336,295710,0.8496],"talmage":[2281,0,0.6716],"vaughn":[21180,1099,0.8267],"verner":[1963,171,0.6125],"waverly":[1982,4314,0.5206],"weldon":[14201,25,0.8292],"wells":[6040,161,0.7388],"wiliam":[1243,0,0.6189],"wing":[166,22,0.4016],"verda":[7,8062,0.7807],"attie":[0,380,0.516],"gretchen":[38,53768,0.9455],"hermina":[0,1587,0.6401],"nelly":[70,7619,0.7701],"eller":[0,481,0.5364],"hetty":[0,720,0.5715],"luetta":[0,2073,0.6633],"pennie":[0,5798,0.7527],"rosemary":[358,161922,0.9978],"beckie":[0,2851,0.691],"buna":[0,780,0.5784],"caldonia":[0,706,0.5698],"candace":[159,84888,0.9841],"edla":[0,300,0.4954],"eleonora":[0,1556,0.6384],"elfrieda":[0,1487,0.6345],"florrie":[0,1541,0.6376],"luisa":[33,14073,0.8279],"myrtis":[5,6121,0.7568],"trudie":[0,3148,0.6996],"agusta":[12,251,0.4619],"alphonsine":[0,86,0.0],"dellie":[11,634,0.5523],"delpha":[0,2025,0.6613],"joyce":[2893,509102,0.9943],"kathyrn":[0,3172,0.7003],"loretto":[10,923,0.5876],"lucindy":[0,230,0.4723],"maybell":[0,2207,0.6688],"odile":[0,788,0.5793],"orah":[0,281,0.4897],"prudie":[0,354,0.5098],"rhea":[408,19281,0.841],"rinda":[0,856,0.5865],"rosy":[0,2168,0.6672],"roxy":[103,3795,0.6992],"sarrah":[0,1630,0.6424],"susannah":[0,7715,0.7775],"tula":[0,1765,0.6493],"alwina":[0,18,0.0],"annabell":[0,6704,0.7653],"arah":[0,586,0.5536],"bernadine":[0,21927,0.8682],"buena":[0,987,0.5989],"capitola":[0,579,0.5525],"cathern":[0,1080,0.6067],"christiana":[0,10873,0.8073],"clora":[0,1800,0.6511],"columbia":[5,647,0.5585],"eileen":[406,189170,0.9979],"elizbeth":[0,1277,0.6212],"eura":[84,1453,0.6025],"hennie":[0,219,0.4681],"henretta":[0,1286,0.6218],"ivie":[82,2302,0.6522],"jeanie":[0,17126,0.8467],"justina":[6,12203,0.8169],"leaner":[0,373,0.5143],"leonia":[0,1567,0.639],"lorraine":[935,209668,0.9956],"lucetta":[0,558,0.5493],"macie":[31,22762,0.8704],"mahalie":[0,194,0.4576],"marry":[0,1867,0.6542],"novella":[0,6203,0.7585],"olevia":[0,1945,0.6578],"phillis":[6,3677,0.7121],"philomene":[0,544,0.5471],"salina":[0,7203,0.7715],"sinda":[0,308,0.4977],"tinnie":[0,954,0.5959],"vashti":[0,2343,0.674],"vella":[0,2255,0.6706],"veva":[0,1598,0.6407],"vicy":[0,101,0.4009],"zita":[0,2961,0.6943],"affie":[0,60,0.0],"albertha":[0,5145,0.7423],"alexina":[0,344,0.5073],"altie":[10,650,0.5554],"anabel":[35,9746,0.7952],"anie":[0,236,0.4746],"artelia":[0,593,0.5546],"atha":[99,1441,0.5965],"barbra":[0,7758,0.7779],"beaulah":[0,2273,0.6713],"bertina":[0,1234,0.6183],"birdella":[0,173,0.4476],"blossom":[0,3248,0.7023],"cara":[62,53135,0.9441],"carmela":[5,24318,0.877],"carolyne":[0,3578,0.7107],"cathryn":[0,16322,0.8426],"charlottie":[0,110,0.4083],"cilla":[0,37,0.0],"denise":[1368,373296,0.9963],"dezzie":[5,242,0.4689],"dorthea":[0,2430,0.6771],"eleonore":[0,1074,0.6062],"fairy":[0,2392,0.6758],"fannye":[0,486,0.5373],"franc":[16,10,0.0],"francina":[0,1626,0.6422],"francisca":[61,12525,0.816],"genevra":[0,307,0.4974],"helga":[0,2208,0.6688],"iza":[6,463,0.5274],"jeanetta":[0,5149,0.7423],"jeannie":[55,36097,0.9102],"jerusha":[0,1189,0.615],"laurie":[1954,166428,0.9884],"lisette":[0,9551,0.796],"loda":[0,166,0.444],"luda":[0,276,0.4882],"lynda":[119,77948,0.977],"marget":[0,541,0.5466],"mariam":[5,17959,0.8506],"modena":[0,683,0.5669],"nanna":[0,241,0.4764],"nelie":[0,37,0.0],"olena":[0,898,0.5907],"penny":[384,100247,0.9962],"pheobe":[0,1120,0.6098],"portia":[8,10613,0.8046],"roxana":[26,11916,0.8136],"sadye":[0,1526,0.6367],"savilla":[0,516,0.5425],"shellie":[892,9967,0.7409],"sibbie":[0,139,0.4286],"thekla":[0,296,0.4943],"vienna":[0,6851,0.7672],"vinia":[0,243,0.4771],"vira":[0,1248,0.6192],"willia":[550,3316,0.6154],"zaidee":[0,407,0.5219],"zana":[0,2261,0.6709],"zilla":[0,288,0.4919],"cleve":[4506,23,0.7275],"linus":[5261,0,0.7442],"reinhold":[1431,0,0.6311],"junior":[42630,195,0.9221],"ace":[24064,153,0.8713],"armstead":[416,0,0.5238],"benedict":[10168,0,0.8014],"brice":[15697,379,0.8214],"gibson":[5311,151,0.7268],"mills":[873,111,0.5311],"adolfo":[16112,10,0.841],"alanzo":[478,0,0.5359],"antoine":[27191,364,0.8763],"ethan":[479451,748,0.9984],"eustace":[706,0,0.5698],"ewing":[1202,0,0.616],"fernand":[1493,0,0.6348],"fisher":[6259,65,0.7524],"harland":[5740,24,0.749],"hilary":[2197,24144,0.8104],"hosie":[1231,11,0.6133],"lemon":[1071,329,0.4814],"marsh":[398,11,0.5083],"newman":[1896,0,0.6556],"nickolas":[39235,47,0.9177],"pearley":[178,673,0.4634],"roman":[98435,454,0.9944],"rome":[4865,437,0.6835],"shelly":[2190,84398,0.9625],"vicente":[21451,0,0.8663],"weston":[70403,112,0.9681],"alan":[361388,1076,0.997],"alberto":[62507,447,0.953],"alexis":[67485,343984,0.836],"auguste":[439,28,0.5019],"bascom":[731,0,0.5728],"cameron":[308280,31613,0.907],"clabe":[45,0,0.0],"cooper":[116203,2601,0.9781],"domingo":[14298,26,0.8297],"elwin":[5156,5,0.7418],"emilio":[51541,58,0.9415],"french":[1119,10,0.6051],"gerhard":[2431,0,0.6772],"hansford":[587,0,0.5537],"jarvis":[17676,123,0.8442],"jobe":[1310,0,0.6235],"josephus":[1211,0,0.6166],"landon":[183725,1154,0.9938],"lesley":[4798,34272,0.8056],"linn":[1450,839,0.4256],"littleton":[312,0,0.4988],"lone":[11,0,0.0],"margarito":[4868,0,0.7375],"melton":[4235,0,0.7254],"ott":[84,0,0.0],"randle":[2924,7,0.6917],"seaborn":[526,0,0.5442],"severt":[53,0,0.0],"steward":[1229,0,0.6179],"vester":[2566,662,0.5579],"wenzel":[147,0,0.4335],"alby":[79,15,0.0],"alcee":[182,0,0.452],"almond":[617,0,0.5581],"alvy":[301,0,0.4957],"amon":[2789,0,0.6891],"ansel":[4614,10,0.7314],"bayard":[922,0,0.5929],"benny":[48202,612,0.926],"bluford":[293,0,0.4934],"booker":[12050,5,0.8159],"burnett":[1561,282,0.5532],"burney":[883,5,0.5864],"caswell":[327,0,0.5029],"conley":[4008,554,0.643],"cortez":[10797,89,0.8008],"dionicio":[2081,0,0.6637],"eldred":[3746,294,0.6688],"ell":[144,10,0.4091],"ellery":[2252,4556,0.513],"ellwood":[1979,0,0.6593],"emmit":[4223,0,0.7251],"erle":[855,0,0.5864],"essex":[414,8,0.5151],"ewell":[2051,7,0.6604],"ewin":[115,0,0.4121],"fabian":[43590,327,0.9216],"florencio":[3070,0,0.6974],"fremont":[482,0,0.5366],"gaines":[1698,0,0.646],"garnet":[2004,6905,0.6123],"gaylord":[6086,5,0.7563],"german":[10176,5,0.8012],"greene":[121,0,0.4166],"harlow":[2500,13001,0.7029],"hilton":[6912,60,0.7621],"jhon":[2883,0,0.692],"kay":[3914,98583,0.9618],"kelley":[6277,46084,0.8307],"lamar":[33846,1265,0.8763],"lazarus":[3854,0,0.7172],"leigh":[5107,40212,0.8263],"lenzy":[467,54,0.487],"leonce":[431,0,0.5269],"leverett":[179,0,0.4506],"lorenz":[1746,0,0.6484],"lott":[106,0,0.4051],"loyal":[5705,478,0.6996],"luster":[1120,12,0.6043],"mance":[247,0,0.4785],"matthews":[1595,0,0.6406],"mikel":[11476,995,0.7538],"moody":[746,0,0.5745],"murry":[3085,94,0.6797],"nicolas":[99521,179,0.9979],"norton":[2310,0,0.6727],"oather":[443,0,0.5293],"orva":[105,508,0.462],"patricio":[4559,5,0.7311],"rance":[2992,0,0.6952],"raphael":[23439,323,0.8633],"rudolf":[2951,0,0.694],"rudy":[49862,1141,0.9205],"ruel":[1906,5,0.6545],"sameul":[871,0,0.588],"samul":[226,0,0.4708],"seldon":[988,0,0.599],"stafford":[2822,0,0.6901],"theophilus":[2392,0,0.6758],"thompson":[2666,18,0.6812],"toby":[34607,8284,0.7475],"true":[2266,2025,0.3837],"val":[5634,1749,0.5904],"vince":[12567,5,0.8196],"willaim":[1597,0,0.6407],"woody":[4224,10,0.7236],"worley":[730,0,0.5727],"zed":[446,0,0.5299],"laurel":[1860,46739,0.9015],"lelar":[0,629,0.5597],"matilde":[218,3193,0.6614],"simona":[0,3994,0.7203],"thora":[0,2404,0.6762],"angelita":[37,11685,0.8112],"berenice":[11,9485,0.7946],"cleora":[0,1712,0.6467],"dagmar":[0,1592,0.6404],"dina":[76,31853,0.8987],"ema":[0,4693,0.7343],"florine":[5,11254,0.8099],"loraine":[340,17259,0.8327],"maida":[0,2960,0.6943],"missie":[0,870,0.5879],"arline":[36,17590,0.8475],"beatrix":[0,3944,0.7192],"delta":[108,4289,0.7107],"dorathea":[0,645,0.5619],"elenor":[0,2228,0.6696],"gertha":[0,1792,0.6507],"lesta":[0,680,0.5665],"rebekah":[119,75482,0.9742],"rossie":[768,1811,0.4791],"almina":[0,240,0.476],"amalie":[0,1424,0.6307],"ammie":[32,2575,0.6748],"arlena":[0,2822,0.6901],"avie":[11,1709,0.643],"carlie":[1292,14953,0.7752],"cena":[6,428,0.5202],"deliah":[0,1242,0.6188],"dot":[22,1359,0.618],"earlie":[2263,1329,0.448],"elfie":[0,316,0.4999],"ermine":[67,522,0.491],"francisquita":[0,21,0.0],"georgeanna":[0,1820,0.652],"glendora":[0,2350,0.6742],"leontine":[0,1150,0.6121],"leva":[0,816,0.5823],"litha":[0,261,0.4833],"luberta":[0,1016,0.6014],"marianna":[0,18132,0.8517],"parlee":[0,414,0.5234],"pearla":[0,552,0.5484],"sister":[0,563,0.5501],"thresa":[0,2334,0.6736],"alene":[5,8743,0.7879],"alverda":[0,891,0.59],"antonette":[0,7803,0.7785],"argie":[146,979,0.531],"arkie":[37,183,0.3897],"arletta":[0,2386,0.6755],"bea":[0,2256,0.6707],"bettye":[47,22920,0.8704],"bobbie":[18416,88536,0.8278],"cappie":[0,41,0.0],"caro":[5,269,0.4787],"cloe":[5,3860,0.7165],"corene":[0,3919,0.7186],"deetta":[0,1177,0.6142],"elberta":[0,1750,0.6486],"elna":[0,4469,0.73],"ether":[71,1214,0.5874],"felicie":[0,183,0.4525],"frederica":[0,2353,0.6743],"hellen":[0,8240,0.7832],"icey":[0,139,0.4286],"ines":[399,6535,0.724],"junia":[0,1232,0.6181],"laney":[336,13599,0.8088],"lassie":[0,979,0.5982],"lockie":[0,464,0.5333],"lossie":[24,1189,0.6046],"lovey":[0,837,0.5845],"marianita":[0,126,0.4201],"mattye":[0,543,0.547],"melina":[0,19488,0.858],"merta":[0,15,0.0],"mida":[0,123,0.418],"necie":[0,219,0.4681],"nezzie":[0,482,0.5366],"norine":[0,5242,0.7439],"octavie":[0,176,0.4491],"otie":[42,147,0.3541],"parilee":[0,116,0.4129],"pernie":[0,378,0.5155],"pinky":[0,370,0.5136],"pricilla":[0,4453,0.7297],"refugia":[5,1289,0.62],"reva":[11,15950,0.84],"roma":[568,8143,0.7366],"sedonia":[0,571,0.5513],"senie":[0,69,0.0],"spicy":[0,10,0.0],"vergie":[47,4582,0.7257],"zelia":[0,1143,0.6116],"brady":[95689,2086,0.9768],"festus":[371,0,0.5139],"odell":[14860,4151,0.6689],"rosco":[1433,0,0.6312],"chauncy":[1257,33,0.6062],"delmer":[7649,16,0.7753],"jimmy":[288433,2218,0.9924],"lars":[6949,0,0.7684],"milas":[500,0,0.5398],"rogers":[7029,21,0.7673],"wess":[505,0,0.5407],"bryan":[388581,1717,0.9956],"douglass":[5769,26,0.7492],"irvine":[899,5,0.588],"isidor":[411,0,0.5228],"jeptha":[290,0,0.4925],"olof":[107,0,0.4059],"robt":[468,0,0.534],"ronald":[1081788,3845,0.9965],"simpson":[707,0,0.5699],"tandy":[714,1165,0.406],"thurlow":[422,0,0.5251],"toy":[1152,967,0.3617],"zeno":[1438,0,0.6316],"alphonsus":[447,0,0.5301],"alvan":[1101,0,0.6084],"amado":[4593,0,0.7324],"ananias":[902,0,0.591],"ancel":[751,0,0.5751],"atlas":[21457,1185,0.8254],"banks":[5356,418,0.6978],"barry":[181155,766,0.9958],"blake":[185455,19024,0.907],"blanchard":[413,0,0.5232],"bose":[20,0,0.0],"captain":[448,0,0.5303],"ceasar":[3509,0,0.709],"chance":[53890,1364,0.9251],"chancey":[1221,505,0.458],"charle":[929,132,0.5299],"clide":[718,37,0.5474],"dink":[107,0,0.4059],"emett":[346,0,0.5078],"erick":[78576,417,0.9743],"estill":[1246,7,0.6161],"fenton":[2034,0,0.6617],"gale":[12424,19906,0.5553],"gay":[1382,17985,0.7962],"grove":[124,0,0.4187],"hanson":[1798,0,0.651],"harlie":[778,4422,0.632],"haskell":[3700,10,0.712],"ingram":[419,13,0.5112],"jep":[202,0,0.4611],"joy":[2602,139933,0.9817],"linton":[2360,0,0.6746],"linzy":[565,966,0.4019],"little":[1573,218,0.5714],"loney":[505,280,0.3725],"loring":[1285,22,0.6128],"lute":[21,0,0.0],"meredith":[4257,77125,0.9307],"norwood":[2909,0,0.6927],"oley":[373,5,0.5087],"orel":[556,136,0.4564],"orra":[17,129,0.3825],"perl":[85,583,0.4931],"powell":[1476,6,0.6316],"sebron":[235,0,0.4742],"shed":[87,0,0.0],"sie":[133,0,0.4248],"tilford":[640,0,0.5612],"winthrop":[1178,0,0.6142],"crystal":[1185,331907,0.9964],"rubie":[46,5233,0.738],"milly":[0,3234,0.7019],"pluma":[0,506,0.5408],"ruie":[0,470,0.5344],"cleva":[0,561,0.5498],"gennie":[199,2541,0.6376],"maxie":[4640,4008,0.4225],"vennie":[71,1339,0.5981],"zettie":[10,1458,0.629],"clevie":[29,119,0.349],"delma":[1447,8454,0.6823],"ferne":[0,4676,0.734],"maebelle":[0,1203,0.6161],"maxine":[377,115010,0.9967],"pearly":[208,1689,0.5837],"savanah":[0,10083,0.8007],"valerie":[693,270997,0.9974],"violetta":[0,3112,0.6986],"adelina":[0,15751,0.8395],"alzina":[0,170,0.4461],"annice":[0,1809,0.6515],"arta":[31,596,0.5318],"beda":[0,328,0.5032],"clarabelle":[0,1911,0.6563],"delfina":[0,4012,0.7207],"fleda":[0,432,0.5271],"goldia":[0,1859,0.6539],"laila":[23,42713,0.9257],"leala":[0,870,0.5879],"lilah":[0,22916,0.872],"lyla":[5,46185,0.9328],"naoma":[0,2534,0.6808],"nealy":[83,296,0.4028],"olivine":[0,206,0.4628],"rutha":[0,2799,0.6894],"sussie":[0,425,0.5257],"theodocia":[0,54,0.0],"trinidad":[5357,4347,0.4402],"vassie":[0,781,0.5785],"zina":[10,5048,0.7393],"arley":[3556,864,0.5866],"aurore":[0,693,0.5681],"beth":[325,159385,0.998],"channie":[0,535,0.5457],"cyntha":[0,290,0.4925],"freida":[0,10775,0.8065],"georganna":[0,1474,0.6337],"izetta":[0,1658,0.6439],"kathern":[0,3323,0.7043],"lady":[0,2048,0.6623],"lala":[0,1765,0.6493],"lilia":[5,13995,0.8289],"lurana":[0,48,0.0],"mozelle":[11,5338,0.7441],"oney":[109,61,0.286],"patricia":[4963,1573445,0.9969],"persis":[0,567,0.5507],"retha":[0,10597,0.805],"silvia":[51,21084,0.8629],"tacy":[0,797,0.5803],"teckla":[0,220,0.4685],"telitha":[0,207,0.4632],"vicie":[0,755,0.5756],"allice":[0,194,0.4576],"almeta":[0,2241,0.6701],"arvie":[479,270,0.3677],"azelie":[0,309,0.498],"betsey":[0,2481,0.6789],"bitha":[0,132,0.4241],"byrde":[0,11,0.0],"camelia":[0,2902,0.6925],"daisye":[0,10,0.0],"damie":[6,39,0.0],"darcus":[11,358,0.4981],"darthula":[0,64,0.0],"delsie":[0,1438,0.6316],"eathel":[21,763,0.5634],"elia":[1033,8820,0.715],"else":[0,514,0.5422],"ethie":[0,86,0.0],"ethlyn":[0,667,0.5648],"fleeta":[0,728,0.5724],"henryetta":[0,447,0.5301],"herma":[0,861,0.587],"hila":[0,793,0.5799],"jamie":[88138,270619,0.7543],"janey":[0,4999,0.7398],"klara":[0,2973,0.6946],"mag":[0,11,0.0],"magdelena":[0,367,0.5129],"margarete":[0,2369,0.6749],"margaretha":[0,477,0.5357],"martie":[221,1216,0.5344],"minie":[0,126,0.4201],"monnie":[258,1861,0.5842],"mossie":[5,1051,0.6019],"myrle":[703,2405,0.5405],"narcissa":[0,190,0.4558],"nelda":[5,20129,0.8606],"olinda":[0,1066,0.6056],"oline":[0,377,0.5153],"oliva":[32,1959,0.6492],"omah":[0,150,0.4352],"ovie":[480,365,0.3325],"parthena":[0,103,0.4026],"petronella":[0,335,0.505],"philena":[0,143,0.4311],"renna":[0,1462,0.633],"rina":[0,4728,0.7349],"rissie":[0,161,0.4414],"robina":[0,649,0.5624],"sarepta":[0,15,0.0],"signe":[0,2995,0.6953],"temple":[828,1559,0.4412],"tishia":[0,297,0.4946],"vinie":[0,381,0.5162],"weltha":[0,416,0.5238],"willena":[0,1068,0.6057],"benjamen":[3680,0,0.7132],"jens":[2440,0,0.6775],"oakley":[10685,13419,0.4879],"whitney":[5979,97424,0.9422],"donaciano":[552,0,0.5484],"hayward":[5059,0,0.7408],"son":[1061,5,0.6027],"tollie":[566,40,0.5198],"vollie":[378,74,0.4441],"adelard":[488,0,0.5377],"ebenezer":[1164,33,0.5986],"ewald":[922,0,0.5929],"herb":[2008,0,0.6606],"silvester":[1306,0,0.6232],"sullivan":[14546,1368,0.7681],"thurston":[3497,0,0.7087],"wayman":[2850,0,0.691],"burrel":[339,0,0.506],"cleon":[2993,189,0.6589],"dozier":[361,0,0.5115],"elden":[5885,11,0.7527],"fulton":[2815,0,0.6899],"helmer":[835,0,0.5843],"hill":[571,0,0.5513],"hjalmer":[202,0,0.4611],"ignatz":[158,0,0.4397],"marlin":[21078,1647,0.8082],"namon":[1121,0,0.6099],"odin":[12669,0,0.8205],"odis":[8214,171,0.7687],"osborn":[597,0,0.5552],"prentice":[3923,63,0.7087],"purl":[81,0,0.0],"roby":[2474,118,0.6516],"shep":[210,0,0.4644],"simmie":[1177,160,0.5504],"stanislaus":[787,0,0.5792],"vander":[1688,0,0.6455],"zollie":[823,134,0.5127],"abb":[96,0,0.0],"ah":[74,21,0.0],"aleck":[1223,0,0.6175],"beecher":[1019,0,0.6016],"blain":[2278,17,0.6672],"bowman":[964,0,0.5968],"bunk":[10,0,0.0],"burgess":[1089,0,0.6074],"charly":[1299,2469,0.4687],"clell":[1221,0,0.6173],"cody":[290917,5146,0.9826],"durward":[2873,0,0.6917],"eddy":[13933,385,0.8088],"elgie":[814,529,0.3792],"euclid":[223,0,0.4697],"eugenio":[4948,0,0.7389],"farley":[1080,17,0.5986],"fielding":[602,0,0.5559],"gentry":[4199,2683,0.4683],"geroge":[920,0,0.5928],"gid":[117,0,0.4136],"gilford":[1225,0,0.6176],"gill":[1218,56,0.5937],"gunder":[15,0,0.0],"isac":[3180,0,0.7005],"iver":[1621,102,0.6089],"jabe":[242,0,0.4768],"jas":[111,13,0.3748],"lauren":[5818,474797,0.9879],"lot":[62,0,0.0],"luby":[291,52,0.4302],"lytle":[215,0,0.4665],"man":[207,150,0.296],"mansfield":[513,0,0.542],"maryland":[316,983,0.4712],"milburn":[2234,0,0.6698],"needham":[328,0,0.5032],"overton":[544,0,0.5471],"peyton":[51982,86635,0.625],"pliny":[15,0,0.0],"proctor":[249,0,0.4792],"quince":[576,0,0.5521],"reubin":[636,0,0.5607],"rob":[8768,0,0.7886],"teodoro":[3337,0,0.7047],"theodor":[2140,0,0.6661],"tucker":[53133,393,0.9388],"vere":[193,17,0.4268],"wayland":[4159,0,0.7238],"williard":[1081,5,0.6044],"willy":[3910,116,0.7002],"clotilde":[0,1013,0.6011],"myrna":[42,31700,0.8991],"medora":[0,752,0.5752],"eulalie":[0,763,0.5765],"hildur":[0,718,0.5712],"imo":[5,903,0.5884],"ragna":[0,201,0.4606],"emmy":[0,12264,0.8177],"hildegarde":[0,2326,0.6733],"octa":[0,160,0.4408],"ama":[0,1035,0.603],"aurilla":[0,153,0.4369],"beula":[0,1183,0.6146],"euna":[0,2136,0.6659],"laverne":[13245,42869,0.7256],"lera":[0,2599,0.683],"macy":[555,32355,0.8882],"margrett":[0,1371,0.6274],"montie":[1695,935,0.4408],"agness":[0,747,0.5747],"alvira":[0,927,0.5934],"clella":[0,887,0.5896],"cornie":[168,172,0.2561],"dorotha":[0,4788,0.736],"dorthy":[79,20329,0.8586],"dosia":[0,61,0.0],"dulcie":[0,1639,0.6429],"emaline":[0,1873,0.6545],"enid":[6,9204,0.7923],"enola":[0,3040,0.6966],"essa":[708,216,0.4545],"evelena":[0,1376,0.6277],"genoveva":[0,2570,0.682],"greta":[5,27496,0.8877],"ica":[0,223,0.4697],"ilma":[0,410,0.5226],"lalla":[0,324,0.5021],"lana":[15,56666,0.9504],"leonor":[10,6091,0.7558],"lolla":[0,41,0.0],"lorna":[22,28475,0.8903],"luta":[0,28,0.0],"malisa":[0,2340,0.6738],"mata":[0,137,0.4273],"mella":[0,333,0.5045],"nicy":[0,48,0.0],"ruey":[10,80,0.0],"scottie":[10895,4587,0.5897],"venia":[0,261,0.4833],"villa":[27,722,0.5542],"virgia":[0,1208,0.6164],"alcie":[10,353,0.4979],"anice":[0,1001,0.6001],"apolonia":[0,1069,0.6058],"appolonia":[0,94,0.0],"axie":[0,152,0.4364],"belvia":[0,649,0.5624],"china":[10,4600,0.7312],"chlora":[0,186,0.4539],"cleta":[0,4013,0.7207],"cliffie":[0,343,0.5071],"coila":[0,68,0.0],"dannie":[9110,2289,0.6484],"eltha":[0,136,0.4267],"ermina":[0,291,0.4928],"evalina":[0,2194,0.6682],"felicita":[0,1884,0.655],"filomena":[0,5518,0.7484],"floss":[0,28,0.0],"francies":[13,952,0.5889],"gertude":[0,278,0.4888],"judie":[0,5491,0.7479],"laurena":[0,1004,0.6003],"lelie":[0,5,0.0],"lindy":[1776,8764,0.669],"lumina":[0,219,0.4681],"lupe":[6018,18615,0.6637],"luvena":[0,119,0.4151],"madaline":[0,4970,0.7393],"maidie":[0,156,0.4386],"maie":[0,197,0.4589],"mandie":[0,2731,0.6873],"margretta":[0,837,0.5845],"mimie":[0,135,0.4261],"minnette":[0,593,0.5546],"murl":[1941,626,0.5156],"neoma":[0,3231,0.7019],"pairlee":[0,187,0.4544],"rittie":[0,25,0.0],"rosabel":[0,562,0.5499],"rosabelle":[0,1350,0.6261],"rosana":[0,2543,0.6811],"tera":[0,9918,0.7993],"thalia":[0,15808,0.8398],"timmie":[3250,350,0.6421],"vernia":[0,1288,0.622],"vivien":[26,7293,0.7701],"terence":[34243,170,0.9029],"earley":[581,0,0.5528],"elzy":[396,0,0.5195],"clemens":[1641,0,0.643],"epifanio":[1991,0,0.6598],"glover":[1114,5,0.607],"lark":[266,1830,0.58],"laurance":[1932,5,0.6557],"braxton":[63667,818,0.9497],"cleave":[403,0,0.5211],"colon":[1318,11,0.6195],"constantine":[6569,42,0.7592],"dominic":[190111,1247,0.9935],"emiliano":[39128,5,0.9184],"fleet":[166,0,0.444],"franklyn":[6073,88,0.7471],"hobart":[3806,0,0.7161],"lillard":[541,0,0.5466],"lim":[30,0,0.0],"merlin":[14987,904,0.7924],"milan":[17180,9193,0.576],"nim":[28,0,0.0],"norbert":[20377,6,0.8616],"north":[327,64,0.4336],"orland":[2081,5,0.6623],"orvis":[940,0,0.5946],"reason":[214,53,0.389],"virge":[52,0,0.0],"zenas":[442,5,0.5241],"alejandro":[144768,846,0.9942],"boyce":[5510,58,0.7413],"brent":[139687,567,0.996],"burdette":[1714,127,0.608],"cash":[26512,127,0.8809],"chase":[179216,3762,0.9794],"clive":[3279,0,0.7031],"cris":[3019,1094,0.5306],"dawson":[50294,1316,0.9185],"drury":[214,0,0.4661],"duane":[115384,1014,0.9913],"elon":[3028,512,0.6071],"estevan":[8891,10,0.789],"fitzhugh":[380,0,0.516],"fount":[118,0,0.4144],"gray":[5038,654,0.6648],"guilford":[589,0,0.554],"guillermo":[31807,74,0.8986],"hannibal":[778,0,0.5782],"hendrix":[12605,813,0.7755],"henri":[5234,659,0.6697],"hilario":[4651,0,0.7335],"ignatius":[3975,0,0.7199],"isidro":[8120,0,0.7819],"jeffrey":[979049,3498,0.9964],"kent":[69225,171,0.9659],"lenord":[1753,0,0.6488],"leonardo":[92243,141,0.9916],"lisle":[543,21,0.5298],"mathis":[1937,0,0.6574],"mauricio":[23812,6,0.8752],"nestor":[10317,0,0.8027],"ng":[5,0,0.0],"olden":[514,0,0.5422],"onnie":[657,1079,0.4027],"orlie":[345,12,0.4934],"perle":[86,243,0.3718],"radford":[1198,0,0.6157],"refugio":[3974,863,0.6054],"rolley":[34,0,0.0],"rosendo":[5397,0,0.7464],"sip":[5,0,0.0],"sloan":[2820,8061,0.5981],"terrell":[36384,1585,0.8777],"voyle":[54,0,0.0],"wallie":[362,57,0.4531],"manuelita":[0,989,0.599],"ima":[0,6799,0.7665],"clytie":[0,301,0.4957],"hertha":[0,1453,0.6325],"melanie":[614,260544,0.9976],"metha":[0,149,0.4346],"sigrid":[0,3076,0.6976],"amelie":[0,9323,0.7939],"berniece":[0,9909,0.7992],"betha":[0,293,0.4934],"florie":[0,834,0.5842],"hilah":[0,61,0.0],"isla":[12,52217,0.9434],"lethia":[0,987,0.5989],"lexie":[436,16623,0.8248],"louisiana":[0,316,0.4999],"rubye":[0,6967,0.7686],"zelpha":[0,956,0.5961],"alwilda":[0,312,0.4988],"angele":[0,1546,0.6378],"cattie":[0,89,0.0],"clemence":[418,539,0.3358],"crissie":[0,477,0.5357],"daphne":[7,42434,0.9254],"eloisa":[0,6901,0.7678],"emogene":[0,4871,0.7375],"georgetta":[0,3558,0.7102],"ingeborg":[0,793,0.5799],"lear":[36,491,0.5072],"levie":[918,201,0.5002],"lilliam":[0,825,0.5833],"lisa":[2784,966965,0.9971],"lorinda":[0,4676,0.734],"lu":[35,4040,0.7158],"lummie":[41,77,0.2704],"malena":[0,3977,0.7199],"maranda":[0,11431,0.8116],"marina":[51,39021,0.9172],"olla":[0,552,0.5484],"pelagia":[0,91,0.0],"sylva":[18,883,0.5791],"texana":[0,57,0.0],"tisha":[0,9533,0.7958],"tresa":[0,4849,0.7371],"wilhemina":[0,951,0.5956],"yvonne":[619,156028,0.996],"almyra":[0,209,0.464],"amey":[53,851,0.5566],"amma":[0,568,0.5509],"carmelite":[0,68,0.0],"chaney":[411,1356,0.4984],"chattie":[0,104,0.4034],"cindy":[771,257194,0.997],"corina":[0,15888,0.8402],"dola":[0,994,0.5995],"elida":[0,7742,0.7778],"enna":[0,611,0.5572],"eppie":[44,245,0.4172],"everlena":[0,1140,0.6114],"gaynell":[18,4251,0.723],"genia":[0,1673,0.6447],"gustie":[5,106,0.3906],"kathrina":[0,787,0.5792],"lalia":[0,339,0.506],"laure":[0,1717,0.647],"lousia":[0,17,0.0],"lulah":[0,53,0.0],"luz":[931,27545,0.8618],"mamye":[0,258,0.4823],"marianne":[49,65406,0.9625],"marybelle":[0,1821,0.6521],"massie":[99,251,0.3649],"medie":[0,49,0.0],"mrytle":[0,61,0.0],"murtie":[0,15,0.0],"nanny":[0,53,0.0],"nattie":[0,116,0.4129],"noma":[0,1895,0.6555],"olivette":[0,762,0.5764],"ottillie":[0,5,0.0],"peggie":[0,7355,0.7733],"quinnie":[5,84,0.0],"sinnie":[0,33,0.0],"theckla":[0,41,0.0],"theressa":[0,2145,0.6663],"thula":[0,164,0.443],"tonie":[348,2908,0.6275],"trannie":[0,210,0.4644],"trella":[0,477,0.5357],"treva":[11,9656,0.7962],"versa":[0,688,0.5675],"violette":[0,6102,0.7571],"zelphia":[0,414,0.5234],"terrence":[72305,527,0.9654],"bartley":[1933,0,0.6572],"shedrick":[2675,0,0.6855],"ignacio":[19647,22,0.8578],"merl":[2574,278,0.6237],"nehemiah":[21045,610,0.8427],"reno":[4135,22,0.7199],"rueben":[4843,0,0.737],"sylvan":[3584,117,0.6911],"virgle":[2196,33,0.6597],"charls":[722,0,0.5717],"cole":[152069,546,0.9964],"elby":[261,0,0.4833],"ferman":[1375,0,0.6277],"florian":[3638,55,0.7029],"fuller":[460,0,0.5326],"gorden":[2049,0,0.6623],"ham":[29,0,0.0],"joaquin":[34664,53,0.9067],"lacey":[1458,53399,0.9227],"lilburn":[713,0,0.5706],"lovell":[3398,632,0.608],"lovett":[319,6,0.4931],"malvin":[2673,12,0.6827],"pratt":[112,0,0.4098],"reid":[39638,958,0.8999],"ruffin":[555,0,0.5489],"tomie":[904,476,0.4114],"acey":[441,58,0.4769],"alger":[832,0,0.584],"algernon":[985,0,0.5987],"amasa":[37,0,0.0],"amil":[967,264,0.4855],"barrett":[31284,952,0.875],"britt":[4710,2915,0.4796],"burns":[584,0,0.5533],"calhoun":[289,0,0.4922],"christy":[1959,98541,0.9805],"cletus":[7426,272,0.7498],"colbert":[839,0,0.5848],"courtland":[3824,245,0.6784],"darrell":[159669,1186,0.9926],"elgin":[3952,43,0.7126],"eston":[1994,0,0.6599],"everet":[744,0,0.5743],"gerard":[58721,112,0.9521],"grafton":[1071,0,0.606],"harlin":[1855,113,0.621],"hosey":[394,0,0.5191],"laban":[596,0,0.555],"larence":[1096,0,0.608],"lofton":[674,10,0.5587],"london":[10178,43716,0.7676],"meddie":[11,37,0.0],"ode":[27,0,0.0],"ovid":[741,0,0.574],"ras":[396,0,0.5195],"shepherd":[6370,22,0.7585],"sigmund":[2848,0,0.6909],"snowden":[52,0,0.0],"talmadge":[5626,36,0.7458],"tobie":[929,1381,0.4022],"ura":[70,508,0.4855],"vergil":[1949,56,0.642],"xavier":[157050,859,0.9946],"yancy":[2427,518,0.5718],"verlie":[178,2282,0.6291],"gunda":[0,118,0.4144],"audra":[193,25493,0.8753],"orelia":[0,981,0.5983],"carlota":[0,2419,0.6767],"lurline":[0,1885,0.6551],"opha":[12,427,0.514],"alwine":[0,25,0.0],"carmelita":[0,6950,0.7684],"clemma":[0,161,0.4414],"hazle":[43,2441,0.6673],"marjory":[0,8158,0.7823],"nadine":[43,53255,0.9446],"nonnie":[0,743,0.5742],"ouida":[0,4886,0.7378],"wealthy":[0,174,0.4481],"antionette":[0,9141,0.7922],"carrye":[0,87,0.0],"delora":[0,2812,0.6898],"elfreda":[0,934,0.5941],"elvera":[0,5200,0.7432],"evah":[0,766,0.5768],"georgene":[0,4353,0.7278],"gerda":[0,1099,0.6082],"gregoria":[6,2250,0.6689],"jetta":[0,2240,0.67],"josefina":[35,13824,0.8263],"mada":[0,552,0.5484],"madgie":[0,579,0.5525],"mahaley":[0,377,0.5153],"rafaela":[0,3456,0.7077],"thirza":[0,207,0.4632],"tomasa":[0,3190,0.7008],"tura":[0,185,0.4534],"adalene":[0,697,0.5686],"alline":[0,1918,0.6566],"anaise":[0,472,0.5348],"anis":[348,70,0.4364],"annye":[0,103,0.4026],"armenia":[0,163,0.4424],"arvella":[0,1413,0.63],"auda":[0,239,0.4757],"brittie":[0,63,0.0],"clorinda":[0,1310,0.6235],"concetta":[5,14177,0.8301],"delina":[0,1882,0.6549],"docie":[0,68,0.0],"ela":[0,2711,0.6866],"elenore":[0,1790,0.6506],"elinore":[0,2355,0.6744],"elzora":[0,567,0.5507],"florentine":[12,666,0.5562],"floride":[0,85,0.0],"hala":[7,1756,0.6467],"hilaria":[0,976,0.5979],"lara":[34,29755,0.8938],"launa":[0,2638,0.6843],"leafy":[0,197,0.4589],"luvina":[0,449,0.5304],"malissia":[0,485,0.5371],"mariette":[0,1052,0.6044],"melda":[0,1487,0.6345],"mira":[5,14166,0.83],"myrl":[1261,1831,0.4134],"nancie":[0,3296,0.7036],"nollie":[86,360,0.4277],"oneida":[0,2268,0.6711],"otillie":[0,26,0.0],"ozzie":[3088,922,0.5549],"pallie":[0,176,0.4491],"romaine":[982,3136,0.5505],"saddie":[0,854,0.5863],"sidonia":[0,398,0.52],"stasia":[0,2252,0.6705],"tacie":[0,131,0.4235],"vara":[0,753,0.5754],"venus":[101,9858,0.7915],"vernice":[789,7290,0.7052],"verta":[0,1093,0.6077],"vivia":[0,566,0.5506],"myles":[60971,307,0.9527],"irl":[554,0,0.5487],"benson":[13094,19,0.8223],"armond":[4333,0,0.7274],"frazier":[2143,0,0.6662],"alfredo":[56765,285,0.9465],"grady":[51619,731,0.9306],"ethelbert":[178,5,0.4401],"gilman":[935,0,0.5942],"selmer":[759,10,0.5697],"arnie":[2074,235,0.6042],"arvin":[5316,0,0.7451],"bliss":[225,1705,0.5805],"dewey":[34345,547,0.8943],"diego":[123789,239,0.9981],"dorr":[124,0,0.4187],"edmon":[1200,0,0.6158],"estes":[545,49,0.509],"graves":[120,0,0.4158],"hillery":[501,495,0.3016],"leeroy":[4372,0,0.7281],"orr":[45,5,0.0],"pembroke":[5,0,0.0],"polk":[80,0,0.0],"prentiss":[2724,65,0.673],"ran":[94,10,0.3646],"rastus":[111,0,0.4091],"tip":[176,0,0.4491],"westley":[9664,56,0.7929],"wilfrid":[1419,0,0.6304],"ebba":[22,899,0.5787],"arlene":[361,142880,0.9975],"dellia":[0,339,0.506],"milda":[0,878,0.5887],"neola":[0,1014,0.6012],"zennie":[10,113,0.384],"allena":[0,2090,0.664],"azzie":[22,947,0.5837],"bannie":[0,92,0.0],"beadie":[0,435,0.5277],"cannie":[5,225,0.4621],"carie":[0,4399,0.7287],"chrissie":[0,1105,0.6087],"dassie":[0,12,0.0],"inda":[0,506,0.5408],"josefita":[0,244,0.4775],"lonia":[0,250,0.4796],"lurena":[0,429,0.5265],"lydie":[0,330,0.5037],"rosalind":[0,26995,0.8863],"sallye":[0,1067,0.6056],"valley":[50,668,0.5314],"vonnie":[424,3684,0.6481],"adra":[0,592,0.5545],"antha":[0,327,0.5029],"bah":[0,11,0.0],"bonita":[12,37830,0.9153],"catarina":[0,3862,0.7174],"chessie":[0,610,0.5571],"christene":[0,4916,0.7383],"clothilde":[0,241,0.4764],"dema":[0,844,0.5853],"dorris":[1675,7360,0.6445],"ellena":[0,2486,0.6791],"elvia":[31,7651,0.774],"girtie":[0,385,0.5171],"gustava":[0,385,0.5171],"hildegard":[0,1930,0.6571],"honor":[1385,3053,0.5018],"ilo":[56,712,0.535],"josepha":[0,407,0.5219],"lidia":[0,11193,0.8098],"lita":[0,4427,0.7292],"ludia":[0,97,0.0],"luvada":[0,84,0.0],"nicie":[0,226,0.4708],"olar":[0,254,0.481],"rosebud":[0,738,0.5736],"saphronia":[0,69,0.0],"thressa":[0,1004,0.6003],"vela":[0,1065,0.6055],"velva":[0,4274,0.7262],"vita":[0,4559,0.7318],"adel":[1487,1462,0.3499],"adriana":[404,95543,0.9922],"alease":[0,1838,0.6529],"alga":[5,132,0.4117],"annah":[0,1925,0.6569],"arena":[0,486,0.5373],"arilla":[0,175,0.4486],"arla":[17,2763,0.6846],"augustina":[0,2255,0.6706],"austa":[0,26,0.0],"bamma":[0,59,0.0],"bernardine":[0,3128,0.6991],"beuna":[0,440,0.5287],"birda":[0,496,0.5391],"birdia":[0,489,0.5379],"carmel":[1382,7190,0.6598],"cecille":[0,984,0.5986],"charlene":[382,133629,0.9971],"chloa":[0,43,0.0],"cleda":[0,1392,0.6287],"clementina":[0,1685,0.6453],"clotilda":[0,497,0.5393],"corrinne":[0,2107,0.6647],"dallie":[10,578,0.5445],"dawn":[1040,289552,0.9964],"dela":[5,541,0.5424],"domitila":[0,350,0.5088],"doretta":[0,2597,0.6829],"echo":[365,4750,0.6888],"elba":[313,3384,0.6532],"emer":[25,77,0.3033],"emmeline":[0,5864,0.7536],"erin":[9455,316248,0.971],"etelka":[0,5,0.0],"evelyne":[0,4134,0.7233],"ever":[4294,2777,0.4675],"evia":[0,1014,0.6012],"florene":[0,4616,0.7329],"georgette":[0,13424,0.8256],"hazelle":[0,912,0.592],"hedvig":[0,60,0.0],"hermena":[0,64,0.0],"inger":[0,1367,0.6272],"jeane":[16,4488,0.7281],"joanne":[504,211903,0.9976],"lanora":[0,2220,0.6693],"leathie":[0,93,0.0],"ledia":[0,76,0.0],"lova":[0,426,0.5259],"lovella":[0,1703,0.6462],"loyola":[0,617,0.5581],"luanna":[0,1927,0.657],"lulla":[0,452,0.531],"magda":[0,2860,0.6913],"margarite":[0,1920,0.6567],"margueritte":[0,1221,0.6173],"mariana":[85,44685,0.9284],"marta":[46,17440,0.8463],"maryetta":[0,1142,0.6115],"maybel":[0,349,0.5086],"melvia":[0,972,0.5975],"missouria":[0,15,0.0],"neely":[391,2202,0.5798],"oleta":[0,5472,0.7476],"otillia":[0,152,0.4364],"ozie":[933,1235,0.3801],"pantha":[0,5,0.0],"parrie":[0,102,0.4017],"patti":[46,44705,0.9292],"paulita":[0,991,0.5992],"petronila":[0,64,0.0],"rebeca":[5,14025,0.8291],"reine":[0,512,0.5419],"rilda":[0,337,0.5055],"rosita":[0,6683,0.765],"saloma":[0,686,0.5673],"thecla":[0,281,0.4897],"varina":[0,212,0.4653],"virda":[0,395,0.5193],"wren":[2063,12300,0.712],"zeta":[0,1338,0.6253],"zilphia":[0,199,0.4598],"zonie":[0,77,0.0],"carlisle":[1826,458,0.537],"hughie":[1669,0,0.6445],"orvel":[1157,0,0.6127],"angel":[261068,99715,0.7236],"horton":[616,0,0.5579],"waymon":[4740,0,0.7352],"arno":[1695,0,0.6458],"burnie":[876,62,0.5551],"felton":[6588,5,0.7632],"nils":[3061,0,0.6972],"sonny":[21184,974,0.8309],"benjman":[58,0,0.0],"bernardo":[11034,0,0.8085],"casey":[115589,77869,0.5975],"celestino":[2610,0,0.6833],"cephus":[1009,0,0.6008],"hart":[1153,79,0.5785],"hillary":[1262,28977,0.8587],"hilmer":[499,0,0.5396],"holland":[3036,7283,0.5666],"jacques":[9652,242,0.7795],"johny":[3565,26,0.7059],"jordon":[13735,1846,0.7392],"julien":[13403,231,0.8129],"julio":[63334,422,0.9545],"keith":[437592,2216,0.995],"le":[775,878,0.3419],"liston":[930,0,0.5937],"moe":[724,62,0.5334],"ricardo":[145612,713,0.9951],"ad":[73,0,0.0],"alson":[526,0,0.5442],"ancil":[1099,0,0.6082],"bengiman":[5,0,0.0],"birl":[188,0,0.4548],"buel":[1135,0,0.611],"charlton":[3515,5,0.7083],"colby":[53512,4123,0.884],"corneluis":[247,0,0.4785],"elex":[766,0,0.5768],"eliott":[2034,0,0.6617],"evander":[3808,0,0.7161],"fountain":[139,0,0.4286],"fox":[3760,97,0.6992],"goff":[11,0,0.0],"johney":[1519,6,0.6341],"laird":[1901,0,0.6558],"lamont":[23975,165,0.8706],"letcher":[345,0,0.5076],"marcelino":[7372,0,0.7735],"marcos":[52989,162,0.9422],"nevin":[6342,99,0.7501],"odes":[367,0,0.5129],"olney":[196,0,0.4585],"oron":[83,0,0.0],"pascual":[3021,0,0.696],"posey":[396,550,0.346],"raliegh":[264,0,0.4843],"rasmus":[134,0,0.4254],"red":[380,0,0.516],"reynolds":[1656,123,0.6051],"rolly":[431,0,0.5269],"salvador":[49259,183,0.9353],"salvatore":[57110,81,0.9501],"thorvald":[114,0,0.4114],"cressie":[0,368,0.5132],"erla":[0,934,0.5941],"marvel":[1352,5181,0.6051],"noemie":[0,618,0.5582],"zela":[0,597,0.5552],"adelene":[0,1243,0.6189],"ader":[0,233,0.4735],"armina":[0,320,0.501],"ary":[349,472,0.3351],"delcie":[0,1284,0.6217],"edrie":[0,769,0.5772],"elsia":[0,414,0.5234],"jessamine":[0,753,0.5754],"lattie":[136,393,0.4047],"laverna":[0,3733,0.7144],"nannette":[0,6273,0.7595],"othella":[0,708,0.57],"renee":[1612,185673,0.9914],"sweetie":[0,373,0.5143],"tekla":[0,461,0.5327],"vista":[0,388,0.5178],"albena":[0,397,0.5198],"allean":[0,1491,0.6347],"blandina":[0,72,0.0],"candis":[0,5164,0.7426],"cenie":[0,17,0.0],"cherrie":[0,4319,0.7271],"cleopatra":[0,2441,0.6775],"earnestine":[61,16072,0.8384],"editha":[0,321,0.5013],"estefana":[0,1006,0.6005],"fae":[0,2643,0.6844],"honorine":[0,35,0.0],"jessye":[0,449,0.5304],"marge":[0,3784,0.7156],"margrete":[0,217,0.4673],"raye":[306,2279,0.6017],"tess":[0,14653,0.8332],"veta":[0,2021,0.6611],"adelaida":[0,3111,0.6986],"aileene":[0,392,0.5187],"ala":[142,779,0.5014],"aleda":[0,1046,0.6039],"aquilla":[121,986,0.5423],"arda":[522,332,0.3584],"ardell":[2435,2635,0.3851],"armilda":[0,239,0.4757],"azilda":[0,29,0.0],"belinda":[150,72852,0.9707],"benita":[0,13658,0.8271],"brooksie":[0,614,0.5576],"buelah":[0,1363,0.6269],"coletta":[0,2378,0.6752],"delima":[0,31,0.0],"dortha":[0,6811,0.7666],"earline":[59,16524,0.8409],"elouise":[5,11052,0.8084],"elzina":[0,183,0.4525],"ermie":[5,136,0.4146],"eupha":[0,155,0.4381],"fan":[0,17,0.0],"felicitas":[0,1990,0.6598],"ferol":[10,618,0.5507],"flonnie":[0,1065,0.6055],"fredonia":[0,407,0.5219],"gratia":[0,120,0.4158],"hanora":[0,63,0.0],"hasel":[6,400,0.514],"hermie":[12,305,0.4813],"hildred":[421,2404,0.5873],"ibbie":[0,97,0.0],"idalia":[0,3251,0.7024],"isola":[0,293,0.4934],"katherina":[0,1663,0.6442],"leannah":[0,295,0.494],"lille":[0,130,0.4228],"litta":[0,5,0.0],"lizette":[5,12093,0.8162],"lorine":[12,8750,0.7874],"luverna":[0,127,0.4208],"maryjane":[0,13877,0.8285],"miley":[75,14797,0.8303],"minne":[0,10,0.0],"neda":[0,2174,0.6675],"neita":[0,635,0.5606],"nelva":[0,1139,0.6113],"notie":[0,49,0.0],"opie":[678,99,0.5044],"otta":[0,38,0.0],"palma":[0,3569,0.7105],"pearline":[0,6262,0.7593],"perlie":[73,565,0.4968],"phila":[0,63,0.0],"reita":[0,1364,0.627],"reka":[0,310,0.4983],"roxa":[0,5,0.0],"salena":[0,5154,0.7424],"signa":[0,411,0.5228],"terese":[0,6502,0.7626],"virdie":[0,555,0.5489],"wessie":[0,371,0.5139],"zepha":[0,50,0.0],"zulema":[0,3996,0.7203],"zuma":[16,140,0.3936],"doyle":[30390,252,0.8899],"alfonzo":[5755,0,0.752],"branch":[1030,0,0.6026],"bush":[80,0,0.0],"federico":[8897,5,0.7895],"franz":[2846,0,0.6908],"governor":[349,0,0.5086],"maury":[2503,258,0.6239],"werner":[3423,0,0.7069],"edw":[6,0,0.0],"ernesto":[44417,121,0.9272],"fed":[72,0,0.0],"foy":[2112,421,0.5676],"galen":[16476,560,0.8185],"hjalmar":[115,0,0.4121],"lawton":[2825,5,0.6891],"levin":[1651,5,0.6419],"lish":[24,7,0.0],"pascal":[2519,11,0.6777],"redmond":[793,0,0.5799],"winford":[4503,0,0.7307],"abie":[723,67,0.5304],"alver":[119,5,0.4018],"anatole":[199,0,0.4598],"boone":[6120,5,0.7568],"buell":[840,0,0.5849],"claiborne":[1210,27,0.605],"denny":[15391,402,0.8183],"elija":[1154,0,0.6124],"english":[186,265,0.3119],"lawrance":[2637,0,0.6842],"lemmie":[666,150,0.4753],"linden":[3972,1917,0.5086],"ney":[31,0,0.0],"oneal":[3043,130,0.6716],"profit":[5,0,0.0],"raymon":[7962,0,0.7802],"remus":[940,0,0.5946],"romie":[1730,621,0.4962],"swan":[124,78,0.283],"verena":[0,1949,0.658],"nobie":[0,496,0.5391],"arbie":[513,137,0.444],"esma":[0,891,0.59],"gwen":[294,32232,0.8943],"lallie":[0,285,0.491],"melia":[0,5251,0.744],"modeste":[0,8,0.0],"verla":[0,6190,0.7583],"elnore":[0,407,0.5219],"garnette":[0,945,0.5951],"irean":[0,485,0.5371],"joeanna":[0,485,0.5371],"natalia":[52,83089,0.9833],"rhodie":[5,134,0.4132],"versie":[103,2598,0.6601],"achsah":[0,108,0.4067],"amada":[0,2490,0.6792],"bera":[12,181,0.4287],"berthe":[0,185,0.4534],"bethel":[1010,5176,0.6345],"delores":[430,117800,0.9964],"ethyle":[0,437,0.5281],"faustina":[0,1785,0.6503],"gabriella":[68,135054,0.9995],"haley":[836,159187,0.9948],"iowa":[0,79,0.0],"lema":[0,373,0.5143],"lodema":[0,498,0.5394],"madelyn":[50,112627,0.9996],"maurine":[0,8949,0.7904],"naomia":[0,876,0.5885],"nila":[0,7019,0.7693],"oressa":[0,6,0.0],"orma":[0,699,0.5689],"regenia":[0,2626,0.6839],"suda":[0,125,0.4194],"synthia":[0,2421,0.6768],"twila":[0,11877,0.8149],"atta":[12,10,0.0],"breta":[0,124,0.4187],"bunie":[0,11,0.0],"carla":[425,150163,0.9972],"celena":[0,4752,0.7354],"ceola":[21,2164,0.6615],"cleone":[5,1320,0.6221],"consuelo":[90,16942,0.8418],"cottie":[0,33,0.0],"dahlia":[0,17931,0.8507],"dedie":[0,26,0.0],"deller":[0,23,0.0],"ellora":[0,922,0.5929],"evlyn":[0,952,0.5957],"exilda":[0,79,0.0],"floretta":[0,2071,0.6632],"florina":[0,437,0.5281],"gabrielle":[785,138314,0.9944],"gunhild":[0,169,0.4456],"gurtrude":[0,51,0.0],"katye":[5,478,0.5312],"keturah":[0,3510,0.7091],"laurette":[0,3106,0.6984],"lolita":[0,8655,0.7875],"luddie":[23,201,0.4218],"luellar":[0,42,0.0],"lurley":[0,16,0.0],"lurlie":[0,99,0.0],"mackie":[1023,592,0.4064],"madalene":[0,1418,0.6303],"maisie":[0,11618,0.813],"marilda":[0,40,0.0],"marquerite":[0,827,0.5835],"marye":[0,1557,0.6385],"masie":[0,472,0.5348],"maynie":[0,5,0.0],"mazzie":[0,447,0.5301],"modesta":[0,1615,0.6416],"monie":[0,413,0.5232],"olia":[0,226,0.4708],"otilla":[0,15,0.0],"pina":[0,354,0.5098],"tallie":[112,550,0.4687],"verle":[1758,521,0.518],"vianna":[0,1779,0.65],"willow":[442,60285,0.9497],"zenna":[0,517,0.5427],"zera":[10,678,0.5593],"eduardo":[109465,433,0.9961],"sing":[41,5,0.0],"mckinley":[9756,12700,0.4922],"bentley":[58336,3388,0.9055],"claudius":[922,0,0.5929],"conard":[763,0,0.5765],"cornell":[11333,348,0.7893],"owens":[733,0,0.573],"sigurd":[853,0,0.5862],"teddy":[33321,1719,0.8643],"add":[102,0,0.4017],"almus":[143,0,0.4311],"auburn":[723,1304,0.4255],"bartlett":[646,0,0.562],"benard":[1644,0,0.6432],"carrol":[6067,4252,0.472],"ceaser":[855,0,0.5864],"cedric":[41889,278,0.9189],"donato":[3112,0,0.6986],"graydon":[3492,0,0.7086],"gurney":[790,0,0.5795],"hartford":[442,53,0.4812],"jenkins":[238,0,0.4753],"justo":[1729,0,0.6476],"kid":[25,0,0.0],"livingston":[952,107,0.5439],"magnus":[5830,0,0.7531],"mcclellan":[89,0,0.0],"melbourne":[1012,0,0.601],"orvin":[1140,0,0.6114],"sank":[10,0,0.0],"speed":[19,0,0.0],"tex":[2087,11,0.6609],"vanderbilt":[80,0,0.0],"whitfield":[434,0,0.5275],"woodfin":[61,0,0.0],"gayle":[4951,61358,0.8923],"idabelle":[0,612,0.5574],"zenia":[0,1752,0.6487],"carmella":[0,20477,0.8623],"margarethe":[0,62,0.0],"vadie":[0,441,0.5289],"alverna":[0,991,0.5992],"cuba":[47,569,0.5153],"elzada":[0,229,0.472],"idabel":[0,48,0.0],"jacqueline":[1391,425538,0.9967],"katheryne":[0,2108,0.6648],"louvina":[0,280,0.4894],"maebell":[0,823,0.5831],"monta":[492,907,0.4079],"theora":[0,853,0.5862],"vlasta":[0,873,0.5882],"vona":[0,852,0.5861],"antonetta":[0,1435,0.6314],"fredricka":[0,1322,0.6242],"girlie":[0,462,0.5329],"gypsy":[0,1490,0.6346],"hazell":[6,361,0.5045],"ilah":[0,1734,0.6478],"joann":[564,156833,0.9964],"lizetta":[0,11,0.0],"marceline":[0,6003,0.7557],"mollye":[0,388,0.5178],"mozell":[484,3050,0.6125],"pearlee":[0,230,0.4723],"rosaline":[0,3898,0.7182],"roxey":[0,44,0.0],"tessa":[13,54936,0.9478],"aldine":[158,804,0.4986],"alena":[0,15613,0.8387],"alvera":[0,2516,0.6801],"babette":[5,3277,0.7022],"berneice":[0,3208,0.7012],"bernetta":[0,2797,0.6893],"dorilla":[0,5,0.0],"elsye":[0,215,0.4665],"ercell":[125,257,0.3474],"eular":[0,358,0.5108],"euphemie":[0,5,0.0],"florinda":[0,1859,0.6539],"freeda":[0,3067,0.6973],"gola":[5,306,0.4905],"ilene":[0,17822,0.8502],"imelda":[0,7442,0.7743],"inis":[0,691,0.5679],"izzie":[0,293,0.4934],"junnie":[26,168,0.3962],"laurine":[0,2526,0.6805],"leler":[0,81,0.0],"levada":[0,532,0.5452],"lovenia":[0,669,0.5651],"lucindia":[0,157,0.4392],"lugarda":[0,54,0.0],"maizie":[0,2754,0.688],"marguerita":[0,1308,0.6233],"maryellen":[0,13120,0.8236],"morna":[0,402,0.5208],"musa":[5454,31,0.7436],"nicolasa":[0,1127,0.6104],"norene":[0,4790,0.7361],"ophia":[0,174,0.4481],"romana":[0,1733,0.6478],"roslyn":[10,18492,0.853],"saint":[5994,165,0.7376],"sennie":[0,192,0.4567],"stena":[0,10,0.0],"stephanie":[2638,744596,0.9965],"teresita":[0,3366,0.7054],"tomasita":[0,935,0.5942],"urania":[0,213,0.4657],"vincenza":[0,3671,0.713],"vola":[17,677,0.5544],"wadie":[90,96,0.2343],"sheridan":[2760,5580,0.5247],"carmine":[13735,481,0.8025],"adlai":[602,81,0.4997],"buddie":[1496,5,0.6332],"burk":[244,0,0.4775],"edison":[12244,216,0.8049],"gifford":[1452,0,0.6324],"hurbert":[640,0,0.5612],"iverson":[2008,93,0.6351],"job":[3350,0,0.705],"leamon":[2672,0,0.6854],"rexford":[2625,0,0.6838],"vick":[601,5,0.5519],"waldemar":[1505,0,0.6355],"zebulon":[2129,0,0.6656],"alferd":[957,0,0.5962],"algot":[53,0,0.0],"alphons":[90,0,0.0],"audley":[694,5,0.5648],"barnard":[895,0,0.5904],"berkley":[2169,5208,0.5461],"corbin":[40520,656,0.9082],"esteban":[34913,31,0.9079],"jolly":[348,119,0.3978],"kelsey":[5308,150075,0.9658],"lake":[2913,895,0.5478],"moss":[501,0,0.54],"navajo":[5,0,0.0],"ollis":[414,0,0.5234],"oris":[1661,232,0.5751],"rocco":[30998,5,0.8981],"rodger":[21538,0,0.8666],"sherwood":[5670,11,0.7494],"singleton":[77,0,0.0],"astrid":[8,13320,0.8245],"jennett":[0,595,0.5549],"marcelina":[0,3360,0.7053],"dura":[0,245,0.4778],"margart":[0,598,0.5553],"seraphine":[10,694,0.5614],"siller":[0,50,0.0],"suzanna":[0,9585,0.7963],"talitha":[0,3477,0.7082],"deane":[2752,1304,0.4896],"dorinda":[0,4801,0.7363],"elfa":[0,76,0.0],"epifania":[0,485,0.5371],"evvie":[0,259,0.4827],"herlinda":[0,4396,0.7286],"hildreth":[97,789,0.5249],"jeannetta":[0,1510,0.6358],"jencie":[0,32,0.0],"jocie":[0,690,0.5678],"johnetta":[0,3201,0.7011],"lavena":[0,1218,0.6171],"mara":[16,23535,0.8738],"meryl":[431,5154,0.6916],"milla":[0,2096,0.6643],"nada":[0,5097,0.7415],"okie":[124,181,0.2949],"shelley":[1753,72573,0.9513],"veola":[0,1843,0.6531],"zeffie":[0,130,0.4228],"zelle":[6,21,0.0],"zylpha":[0,84,0.0],"aleta":[0,6441,0.7618],"alethea":[0,4913,0.7383],"aletta":[0,1089,0.6074],"alina":[0,43173,0.927],"alyse":[0,7617,0.7764],"angelica":[321,92808,0.9904],"angelle":[0,1917,0.6565],"appie":[0,23,0.0],"ardie":[517,568,0.3178],"ariel":[21430,77823,0.7836],"arlean":[0,1673,0.6447],"azile":[0,96,0.0],"blanchie":[0,1323,0.6243],"brownie":[504,727,0.365],"celestina":[0,2522,0.6803],"chanie":[0,945,0.5951],"clarita":[0,1236,0.6184],"clydie":[22,853,0.5736],"colette":[0,27021,0.8863],"coralie":[0,2835,0.6905],"dicey":[0,37,0.0],"doxie":[0,65,0.0],"ervie":[193,41,0.3908],"ethna":[0,38,0.0],"fabiola":[53,9321,0.7899],"frida":[0,8352,0.7844],"genevive":[0,1069,0.6058],"girtrude":[0,216,0.4669],"hatty":[0,53,0.0],"henritta":[0,339,0.506],"katherin":[0,3595,0.7111],"leoma":[0,1196,0.6155],"lillias":[0,194,0.4576],"limmie":[300,33,0.4545],"lizzy":[0,920,0.5928],"magie":[0,194,0.4576],"marea":[0,612,0.5574],"margherita":[0,1155,0.6125],"murriel":[120,513,0.4541],"nanette":[0,16888,0.8455],"noreen":[0,20074,0.8605],"ovella":[0,418,0.5242],"perlina":[0,38,0.0],"radie":[6,161,0.4286],"rea":[190,1849,0.6002],"recie":[5,147,0.422],"rufina":[0,1035,0.603],"sevilla":[0,260,0.483],"silva":[10,901,0.5854],"svea":[0,935,0.5942],"tassie":[0,380,0.516],"timotea":[0,60,0.0],"tobitha":[0,21,0.0],"valborg":[0,295,0.494],"vernal":[1788,370,0.5525],"wava":[0,1727,0.6475],"corbett":[2423,0,0.6769],"fidel":[11235,0,0.8101],"samson":[12235,0,0.8175],"nolen":[3389,10,0.7042],"royce":[32543,2488,0.8443],"burleigh":[467,0,0.5339],"con":[389,0,0.518],"dillon":[64964,1004,0.9492],"ebert":[299,0,0.4951],"encarnacion":[851,132,0.5181],"hartley":[1582,2070,0.4039],"jiles":[631,0,0.56],"stokes":[188,0,0.4548],"vane":[152,0,0.4364],"amiel":[1200,62,0.5897],"amzie":[55,163,0.3497],"arvil":[2589,0,0.6826],"barnie":[641,5,0.5577],"bun":[22,0,0.0],"cam":[2661,393,0.6073],"carlyle":[3836,215,0.6832],"gurley":[84,0,0.0],"hale":[1269,14,0.6149],"hammond":[474,0,0.5352],"helmuth":[500,0,0.5398],"hilding":[191,0,0.4562],"isador":[182,0,0.452],"jennings":[4792,298,0.6979],"jett":[24287,636,0.8569],"lehman":[974,0,0.5977],"lenwood":[2423,0,0.6769],"lex":[3934,15,0.7166],"luciano":[16504,0,0.8435],"marko":[4365,0,0.728],"merwin":[1625,5,0.6405],"murel":[485,225,0.3895],"ogden":[801,0,0.5807],"oneil":[1749,17,0.6431],"parks":[1389,12,0.6239],"pervis":[878,0,0.5887],"plez":[106,0,0.4051],"robie":[1176,642,0.4217],"romanus":[22,0,0.0],"sumpter":[49,0,0.0],"whitelaw":[5,0,0.0],"wint":[5,0,0.0],"winton":[1933,5,0.6558],"elmyra":[0,537,0.546],"omega":[791,2181,0.5097],"elin":[152,4999,0.7205],"lempi":[0,367,0.5129],"catalina":[7,30542,0.8968],"corena":[0,1516,0.6361],"loie":[0,232,0.4731],"vanda":[0,1683,0.6452],"agda":[0,52,0.0],"candelaria":[0,2530,0.6806],"dimple":[0,2442,0.6775],"hedwige":[0,7,0.0],"jenie":[0,251,0.4799],"juel":[1052,653,0.3988],"lalah":[0,452,0.531],"melba":[52,34866,0.9073],"orba":[44,41,0.0],"alleen":[0,957,0.5962],"allyne":[0,505,0.5407],"arabelle":[0,2178,0.6676],"arva":[0,552,0.5484],"burnice":[1333,1593,0.3774],"dasie":[0,420,0.5246],"eulala":[0,403,0.5211],"everlina":[0,224,0.47],"evva":[0,374,0.5146],"felipa":[0,2249,0.6704],"gaynelle":[0,1554,0.6383],"glada":[0,486,0.5373],"ivery":[797,489,0.3854],"larue":[1540,3972,0.5392],"leita":[0,720,0.5715],"luvinia":[0,237,0.4749],"lyde":[0,6,0.0],"maddie":[0,5966,0.7551],"margurite":[0,1745,0.6484],"maryanna":[0,2600,0.683],"mauda":[0,30,0.0],"rada":[0,464,0.5333],"saidee":[0,289,0.4922],"stacia":[0,9017,0.791],"stazie":[0,6,0.0],"trixie":[0,1362,0.6268],"trula":[0,2045,0.6621],"willetta":[0,1880,0.6548],"zura":[0,44,0.0],"agapita":[0,304,0.4966],"alfa":[22,234,0.4403],"angline":[0,86,0.0],"anise":[0,1233,0.6182],"antonina":[0,2778,0.6887],"audry":[496,4029,0.651],"barbarita":[0,162,0.4419],"beata":[0,956,0.5961],"brookie":[7,535,0.5397],"celine":[0,17052,0.8464],"charlott":[0,495,0.5389],"clela":[0,287,0.4916],"clema":[0,196,0.4585],"creasie":[0,130,0.4228],"dagny":[0,1680,0.6451],"dara":[807,13484,0.7841],"dera":[0,440,0.5287],"drue":[1269,1063,0.3665],"elcie":[0,340,0.5063],"elodia":[0,1804,0.6512],"elvena":[0,394,0.5191],"ersie":[5,415,0.5184],"ethleen":[0,69,0.0],"geneve":[0,494,0.5387],"glee":[20,781,0.5662],"gwendoline":[0,350,0.5088],"helon":[5,666,0.5611],"ignacia":[0,1067,0.6056],"ionia":[0,287,0.4916],"laveta":[0,1552,0.6382],"lealer":[0,262,0.4837],"lecy":[0,11,0.0],"leocadia":[0,685,0.5671],"lestie":[0,41,0.0],"lorretta":[0,2708,0.6865],"lovena":[0,420,0.5246],"luva":[0,64,0.0],"lyra":[0,7378,0.7736],"madelene":[0,2704,0.6864],"marzella":[0,528,0.5445],"matha":[0,319,0.5008],"mavis":[135,22473,0.8657],"maysie":[0,418,0.5242],"mearl":[1210,428,0.4749],"melvinia":[0,225,0.4704],"mimmie":[0,26,0.0],"minette":[0,731,0.5728],"nicey":[0,93,0.0],"noelie":[0,200,0.4602],"oneta":[0,1465,0.6332],"onida":[0,58,0.0],"otilia":[0,1677,0.6449],"reatha":[0,2624,0.6838],"rheta":[0,1200,0.6158],"sopha":[0,10,0.0],"teodora":[0,1302,0.6229],"trina":[30,32555,0.9018],"valeska":[0,774,0.5777],"valetta":[0,606,0.5565],"vila":[0,536,0.5458],"walburga":[0,80,0.0],"wavie":[46,261,0.4229],"estel":[2374,467,0.5772],"mayo":[1236,256,0.5258],"thorwald":[54,0,0.0],"arnett":[1298,75,0.5933],"aubra":[310,37,0.4539],"avon":[1623,700,0.4703],"bolden":[61,0,0.0],"ferris":[2798,307,0.6294],"link":[2580,0,0.6823],"moises":[30839,52,0.8965],"myer":[1047,38,0.5858],"reuel":[922,0,0.5929],"roney":[883,5,0.5864],"welby":[372,0,0.5141],"welton":[2593,0,0.6828],"armin":[3244,0,0.7022],"armor":[86,0,0.0],"beauregard":[595,0,0.5549],"brantley":[31017,792,0.8781],"buddy":[22516,45,0.8689],"buren":[734,0,0.5731],"cager":[26,0,0.0],"doll":[24,363,0.4854],"einar":[1516,0,0.6361],"elwyn":[3218,100,0.683],"gunnar":[17693,22,0.8486],"harden":[738,0,0.5736],"hobert":[5724,0,0.7515],"hughey":[405,0,0.5215],"jethro":[4077,0,0.7221],"leighton":[9201,11519,0.4799],"narciso":[2073,0,0.6633],"niels":[1446,0,0.632],"percie":[51,30,0.0],"pomp":[5,0,0.0],"reynold":[4663,0,0.7337],"sonnie":[866,723,0.3489],"square":[83,0,0.0],"walt":[2599,0,0.683],"beatriz":[53,18274,0.8502],"carola":[0,1161,0.613],"marrie":[0,621,0.5586],"leeta":[0,530,0.5449],"loa":[0,887,0.5896],"calista":[0,7372,0.7735],"cinderella":[0,908,0.5916],"ilda":[0,1522,0.6365],"justa":[0,204,0.4619],"laurene":[0,4158,0.7238],"lillar":[0,104,0.4034],"lorina":[0,1809,0.6515],"octava":[0,41,0.0],"odette":[0,3933,0.7189],"sanna":[0,723,0.5718],"adelheid":[0,214,0.4661],"alfrieda":[0,761,0.5763],"cleotilde":[0,334,0.5047],"cola":[81,259,0.3857],"cuma":[0,131,0.4235],"eithel":[0,182,0.452],"elizzie":[0,69,0.0],"gertrud":[0,34,0.0],"gettie":[0,21,0.0],"herminia":[0,3757,0.715],"juda":[367,162,0.3779],"lellie":[0,16,0.0],"melita":[0,1861,0.6539],"oca":[0,16,0.0],"otila":[0,510,0.5415],"salley":[0,416,0.5238],"snow":[67,1030,0.5709],"xenia":[0,2878,0.6918],"abelina":[0,572,0.5515],"adolphine":[0,18,0.0],"aldea":[0,259,0.4827],"alethia":[0,2512,0.68],"alexandra":[869,244128,0.9965],"alveda":[0,168,0.4451],"anastacia":[0,5056,0.7408],"arabell":[0,175,0.4486],"arnetta":[0,3248,0.7023],"berte":[0,10,0.0],"ceil":[0,783,0.5788],"charline":[0,6234,0.759],"chrystal":[5,15752,0.8392],"clemencia":[0,421,0.5249],"clennie":[27,22,0.0],"clio":[25,831,0.5694],"cloie":[0,1135,0.611],"dominga":[10,4002,0.7189],"eron":[1382,192,0.5614],"fedora":[0,250,0.4796],"france":[379,1159,0.4803],"hilja":[0,81,0.0],"hyacinth":[0,951,0.5956],"isobel":[0,3722,0.7142],"janice":[1157,406375,0.9972],"jannette":[0,5219,0.7435],"jaunita":[0,6892,0.7677],"linnea":[0,9793,0.7982],"luceal":[0,226,0.4708],"luevenia":[0,567,0.5507],"lulia":[0,186,0.4539],"marcelle":[502,5397,0.69],"maree":[0,1049,0.6042],"margot":[0,22984,0.8723],"martine":[313,2697,0.6234],"melissia":[0,1926,0.6569],"minetta":[0,118,0.4144],"nera":[0,151,0.4358],"ocia":[0,122,0.4173],"onezia":[0,5,0.0],"renie":[6,614,0.5531],"roselle":[0,2080,0.6636],"roselyn":[0,14294,0.831],"senia":[0,570,0.5512],"tela":[7,693,0.5633],"thilda":[0,15,0.0],"thresia":[0,231,0.4727],"arvel":[2202,0,0.6686],"erby":[480,0,0.5362],"alston":[2562,22,0.6766],"clemon":[1339,0,0.6254],"hebert":[1066,0,0.6056],"hezzie":[247,0,0.4785],"kurt":[85802,196,0.9846],"oddie":[343,257,0.3176],"ramsey":[6524,2183,0.5904],"vinton":[1068,0,0.6057],"audy":[290,12,0.4763],"donat":[351,0,0.5091],"emmons":[117,0,0.4136],"erich":[11660,32,0.8114],"esley":[268,52,0.4196],"greely":[66,0,0.0],"pasquale":[10122,0,0.8011],"carlo":[15641,80,0.835],"casimir":[5174,0,0.7428],"cline":[857,0,0.5866],"collis":[1309,10,0.6193],"crit":[111,0,0.4091],"ferdie":[233,0,0.4735],"frederich":[631,0,0.56],"garvin":[2425,0,0.6769],"herold":[618,0,0.5582],"isaih":[1503,0,0.6354],"ivo":[837,5,0.5816],"jeffery":[230434,1269,0.9945],"orris":[939,49,0.5692],"oswell":[84,0,0.0],"peder":[799,0,0.5805],"yancey":[1503,34,0.6232],"trilby":[0,567,0.5507],"almena":[0,232,0.4731],"florice":[0,540,0.5465],"lavera":[0,2618,0.6836],"averil":[43,403,0.4788],"dorathy":[0,1928,0.657],"everline":[0,358,0.5108],"fredda":[0,1477,0.6339],"achsa":[0,12,0.0],"borghild":[0,361,0.5115],"elpha":[0,39,0.0],"francesca":[33,34337,0.9064],"hattye":[0,121,0.4166],"isal":[0,7,0.0],"malisia":[0,24,0.0],"micaela":[6,14803,0.8338],"othelia":[0,326,0.5026],"roselee":[0,1386,0.6284],"sonia":[278,66577,0.961],"venice":[278,2922,0.6401],"afton":[845,5179,0.6499],"apollonia":[0,690,0.5678],"artha":[117,542,0.4637],"charlcie":[0,531,0.545],"coralee":[0,2607,0.6832],"cyrilla":[0,543,0.547],"eather":[6,543,0.5419],"edda":[0,723,0.5718],"elease":[0,3047,0.6968],"genevia":[0,1383,0.6282],"genora":[0,578,0.5524],"georgena":[0,849,0.5858],"germaine":[2357,7904,0.618],"gisella":[0,1513,0.636],"gudrun":[0,399,0.5202],"irine":[0,1527,0.6368],"leoda":[0,539,0.5463],"lillain":[0,28,0.0],"lilyan":[0,4304,0.7268],"lodie":[0,153,0.4369],"myrtte":[0,6,0.0],"oneita":[0,869,0.5878],"paulyne":[0,332,0.5042],"princess":[7,15762,0.8392],"tenie":[0,11,0.0],"theola":[0,2099,0.6644],"velda":[0,7559,0.7757],"verdia":[0,664,0.5644],"virgin":[30,221,0.4226],"waneta":[0,2466,0.6784],"adalia":[0,2378,0.6752],"adine":[0,275,0.4879],"adna":[12,574,0.5422],"albie":[268,119,0.3584],"alexandrine":[0,26,0.0],"angella":[0,3570,0.7105],"assunta":[0,1361,0.6268],"atlanta":[0,692,0.568],"austie":[0,10,0.0],"belma":[0,640,0.5612],"berna":[0,1466,0.6332],"blonnie":[0,384,0.5169],"bular":[0,94,0.0],"carlene":[0,15219,0.8365],"charmion":[0,225,0.4704],"cleona":[0,825,0.5833],"elois":[10,2642,0.6821],"erminia":[0,1497,0.635],"estellar":[0,175,0.4486],"ethelle":[0,65,0.0],"eunie":[0,108,0.4067],"evy":[0,1306,0.6232],"gladyce":[0,1006,0.6005],"gwladys":[0,5,0.0],"henretter":[0,79,0.0],"icia":[0,5,0.0],"idelle":[0,750,0.575],"ileen":[0,2152,0.6666],"isma":[0,107,0.4059],"janetta":[0,3321,0.7043],"jayne":[33,29046,0.8917],"johanne":[0,1453,0.6325],"katrina":[238,101407,0.9977],"lael":[1010,2261,0.4859],"leonarda":[0,1019,0.6016],"luttie":[0,46,0.0],"maudy":[0,98,0.0],"meadie":[0,20,0.0],"merna":[0,2461,0.6782],"natividad":[1722,1931,0.3766],"ocea":[0,22,0.0],"okla":[16,238,0.4507],"orena":[0,318,0.5005],"pablita":[0,59,0.0],"pamela":[1386,594992,0.9977],"pheba":[0,53,0.0],"pruda":[0,16,0.0],"rhetta":[0,613,0.5575],"silla":[0,5,0.0],"syble":[0,5541,0.7487],"virlie":[0,39,0.0],"vivienne":[0,22126,0.869],"roosevelt":[37637,350,0.9075],"casimer":[1895,0,0.6555],"gaither":[642,6,0.5571],"guthrie":[848,12,0.5787],"ovila":[240,0,0.476],"alwin":[896,0,0.5905],"lindley":[628,987,0.3921],"olan":[2718,0,0.6868],"reinhard":[435,0,0.5277],"verl":[2517,211,0.634],"alphonzo":[2031,0,0.6615],"baker":[6591,623,0.705],"collin":[80817,519,0.9758],"euel":[697,0,0.5686],"fillmore":[239,0,0.4757],"geoffrey":[54369,140,0.9449],"harless":[428,0,0.5263],"harm":[320,0,0.501],"loranzo":[138,0,0.428],"nile":[3609,362,0.6542],"obert":[619,0,0.5583],"odus":[596,0,0.555],"stclair":[246,0,0.4782],"stephan":[27585,229,0.8815],"terrance":[70058,751,0.9597],"lotus":[189,2653,0.6448],"swannie":[0,170,0.4461],"elina":[0,5836,0.7532],"annamae":[0,3689,0.7134],"casimira":[0,487,0.5375],"cathleen":[10,29912,0.8949],"avo":[10,174,0.4283],"burma":[0,931,0.5938],"girtha":[0,597,0.5552],"inza":[0,235,0.4742],"lavon":[5067,6242,0.4475],"loree":[5,3469,0.7071],"maureen":[328,144245,0.9977],"rickie":[16369,1840,0.766],"sayde":[0,718,0.5712],"veatrice":[0,450,0.5306],"alfretta":[0,289,0.4922],"asenath":[0,482,0.5366],"bevie":[0,28,0.0],"cellie":[0,93,0.0],"cleola":[0,1196,0.6155],"dollye":[0,257,0.482],"doretha":[0,8562,0.7865],"dott":[0,50,0.0],"elfrida":[0,59,0.0],"ernestina":[0,5301,0.7449],"floye":[0,689,0.5676],"freada":[0,130,0.4228],"hilder":[5,26,0.0],"maple":[5,3055,0.696],"mardell":[94,2170,0.6431],"nydia":[0,3704,0.7137],"offie":[151,72,0.318],"reina":[0,13562,0.8265],"santa":[40,4357,0.722],"sofie":[0,4862,0.7374],"wilhelmena":[0,769,0.5772],"aleen":[0,2676,0.6855],"antoinetta":[0,722,0.5717],"arthelia":[0,87,0.0],"balbina":[0,325,0.5024],"beatric":[0,114,0.4114],"bette":[22,34889,0.908],"candy":[100,28495,0.8881],"caryl":[344,6347,0.7258],"catheryn":[0,1733,0.6478],"clarabel":[0,303,0.4963],"crescentia":[0,62,0.0],"darlene":[604,204832,0.9971],"decie":[0,84,0.0],"dorotea":[0,130,0.4228],"dula":[0,154,0.4375],"elizabeath":[0,16,0.0],"ellanora":[0,578,0.5524],"floe":[0,50,0.0],"georgian":[0,424,0.5255],"golde":[0,15,0.0],"haidee":[0,603,0.5561],"hettye":[0,10,0.0],"hortensia":[0,1794,0.6508],"iler":[0,55,0.0],"itha":[0,139,0.4286],"ivadell":[0,365,0.5125],"izola":[0,1119,0.6098],"jesusa":[0,1897,0.6556],"joana":[0,7877,0.7793],"kara":[282,101514,0.9972],"ledora":[0,498,0.5394],"lethie":[0,18,0.0],"lilliemae":[0,292,0.4931],"lisetta":[0,15,0.0],"lolo":[5,11,0.0],"madolyn":[0,1743,0.6483],"maudine":[0,1153,0.6124],"moselle":[0,266,0.485],"orlean":[22,543,0.529],"phenie":[0,5,0.0],"phylis":[0,3342,0.7048],"pilar":[753,5457,0.6666],"rona":[0,5444,0.7472],"rosario":[5592,10884,0.5571],"rosemarie":[33,51308,0.9415],"rue":[309,1395,0.5291],"saima":[0,660,0.5639],"thyra":[0,1312,0.6236],"trudy":[5,25598,0.8815],"valera":[0,1056,0.6047],"vangie":[0,653,0.563],"veneta":[0,748,0.5748],"vietta":[0,386,0.5173],"williemae":[0,722,0.5717],"wilna":[0,559,0.5495],"zanie":[0,26,0.0],"zara":[0,19484,0.8579],"zeda":[0,255,0.4813],"zorah":[0,481,0.5364],"hazen":[2237,80,0.6497],"silver":[509,1703,0.515],"rayford":[5511,0,0.7482],"virgel":[1187,6,0.6122],"aloys":[414,0,0.5234],"wardell":[4290,36,0.7212],"acy":[274,5,0.4804],"arthor":[607,0,0.5566],"boysie":[63,0,0.0],"britton":[6291,1931,0.5991],"curry":[1562,85,0.6101],"curtiss":[5074,0,0.7411],"errol":[8613,0,0.787],"estle":[676,80,0.5148],"freddy":[26667,172,0.8801],"hughes":[894,0,0.5903],"irby":[1104,26,0.5966],"marty":[32135,4076,0.8091],"mathews":[452,0,0.531],"nugent":[12,0,0.0],"rayfield":[1873,0,0.6545],"ural":[407,0,0.5219],"catarino":[1684,0,0.6453],"heyward":[2018,0,0.661],"ivar":[1334,0,0.625],"ivor":[854,46,0.5606],"kennie":[1308,316,0.5172],"leopoldo":[5936,0,0.7547],"linford":[779,0,0.5783],"lyn":[1561,7211,0.6483],"mariano":[9881,0,0.799],"menno":[1415,0,0.6302],"orphus":[11,0,0.0],"sammy":[43289,1732,0.8949],"sewell":[442,0,0.5291],"sollie":[269,0,0.486],"garnetta":[0,895,0.5904],"erline":[0,1640,0.643],"olympia":[0,3560,0.7103],"pocahontas":[0,217,0.4673],"helyn":[0,1084,0.607],"albirta":[0,190,0.4558],"brenda":[2120,608331,0.9965],"charlsie":[0,2065,0.663],"felice":[700,4188,0.6322],"manila":[0,214,0.4661],"mildreth":[0,66,0.0],"vernetta":[0,3031,0.6963],"ardelle":[0,1500,0.6352],"azalee":[0,1512,0.6359],"blythe":[263,5076,0.7088],"dealie":[0,79,0.0],"fanchon":[0,519,0.543],"gracy":[0,1581,0.6398],"ingrid":[17,27533,0.8875],"leathia":[0,251,0.4799],"lepha":[0,11,0.0],"lima":[0,180,0.4511],"lynette":[53,43326,0.9263],"madonna":[0,9554,0.796],"maysel":[0,351,0.5091],"merlie":[0,261,0.4833],"mertice":[0,414,0.5234],"nomie":[0,69,0.0],"odessie":[0,597,0.5552],"precious":[147,19342,0.8515],"suzie":[0,3954,0.7194],"wave":[91,111,0.2534],"zenith":[387,436,0.3089],"berda":[0,142,0.4305],"carma":[0,4159,0.7238],"chloris":[0,230,0.4723],"clover":[83,5057,0.7302],"corabelle":[0,443,0.5293],"delight":[0,1051,0.6043],"florencia":[0,1568,0.6391],"floyce":[12,517,0.5323],"gilberta":[0,559,0.5495],"jennetta":[0,555,0.5489],"julianita":[0,11,0.0],"kathlyn":[0,5128,0.742],"leanora":[0,1449,0.6322],"leata":[0,61,0.0],"lether":[5,241,0.4685],"loise":[37,818,0.561],"lorette":[0,1096,0.608],"lovinia":[0,65,0.0],"luciana":[0,15487,0.838],"lunie":[0,10,0.0],"madelon":[0,1787,0.6504],"marcie":[13,15611,0.8381],"mari":[59,16447,0.8405],"meriam":[0,1391,0.6287],"nervie":[0,30,0.0],"nicolina":[0,1793,0.6507],"odella":[0,821,0.5829],"oletha":[0,1214,0.6168],"onelia":[0,139,0.4286],"orene":[0,1015,0.6013],"orphia":[0,101,0.4009],"pamelia":[0,2229,0.6696],"philippine":[0,21,0.0],"phronie":[0,5,0.0],"piccola":[0,314,0.4994],"rama":[265,1122,0.5084],"robena":[0,590,0.5542],"rushia":[0,27,0.0],"rushie":[0,256,0.4816],"senaida":[0,1208,0.6164],"valda":[0,1866,0.6542],"valentina":[7,59761,0.9552],"verba":[0,603,0.5561],"vernell":[3344,7124,0.5471],"vestie":[0,58,0.0],"vie":[0,24,0.0],"ysabel":[225,1476,0.5607],"zellie":[5,256,0.4741],"zilda":[0,66,0.0],"bryon":[14703,17,0.8326],"mario":[150569,1093,0.9928],"clearence":[1427,0,0.6309],"dabney":[232,391,0.3508],"diamond":[2527,33635,0.8479],"ezell":[3243,411,0.6324],"roberto":[112117,834,0.9926],"albino":[1682,0,0.6452],"carnell":[4608,546,0.6638],"denzil":[3775,68,0.7042],"erman":[652,0,0.5628],"farris":[2980,547,0.5994],"ferrell":[1911,162,0.6115],"gregor":[1204,0,0.6161],"herschell":[1059,0,0.605],"knowlton":[26,0,0.0],"legrand":[512,0,0.5419],"malachy":[681,0,0.5666],"niles":[4400,0,0.7287],"orvil":[1935,0,0.6573],"regis":[5185,343,0.7021],"winslow":[1744,736,0.4774],"manilla":[0,124,0.4187],"dewie":[239,16,0.4511],"creta":[0,350,0.5088],"floria":[0,1583,0.6399],"lennis":[1217,537,0.4502],"maine":[0,9,0.0],"blannie":[0,197,0.4589],"havana":[0,1555,0.6383],"hildagarde":[0,206,0.4628],"lubertha":[0,696,0.5685],"lurene":[0,890,0.5899],"stephania":[0,3314,0.7041],"ellamae":[0,2292,0.672],"ellinor":[0,661,0.564],"ezzie":[19,143,0.3901],"gladis":[5,3060,0.6961],"gladyse":[0,61,0.0],"gradie":[426,215,0.3731],"lakie":[0,126,0.4201],"madlyn":[0,2370,0.6749],"olene":[0,1347,0.6259],"ruthe":[0,1949,0.658],"victory":[677,1725,0.4856],"yvette":[186,63918,0.9586],"azalia":[0,2250,0.6704],"carline":[5,1656,0.6421],"clista":[0,267,0.4853],"domenica":[0,3483,0.7084],"dova":[0,56,0.0],"edithe":[0,270,0.4863],"ellyn":[0,3829,0.7166],"ennie":[0,16,0.0],"floda":[0,41,0.0],"gilda":[0,10077,0.8007],"greeta":[0,25,0.0],"helia":[0,194,0.4576],"hermione":[0,1744,0.6483],"latha":[0,215,0.4665],"leilah":[0,4115,0.7229],"lillye":[0,60,0.0],"loreen":[0,3588,0.711],"louretta":[0,256,0.4816],"maretta":[0,896,0.5905],"margareta":[0,494,0.5387],"marieta":[0,451,0.5308],"myrtha":[0,270,0.4863],"osee":[0,11,0.0],"phoebie":[0,71,0.0],"russie":[0,92,0.0],"severa":[0,477,0.5357],"tavie":[0,72,0.0],"tora":[26,981,0.5851],"verma":[0,929,0.5936],"walsie":[0,101,0.4009],"adlena":[0,47,0.0],"aleene":[0,795,0.5801],"aloysia":[0,17,0.0],"alzena":[0,75,0.0],"antonie":[779,21,0.5654],"arleen":[6,12592,0.8197],"armetta":[0,169,0.4456],"azilee":[0,408,0.5221],"blenda":[0,1022,0.6019],"blodwen":[0,36,0.0],"clarabell":[0,473,0.535],"collette":[0,7589,0.776],"delvina":[0,170,0.4461],"diane":[1384,518590,0.9973],"donalda":[0,623,0.5589],"dorice":[0,707,0.5699],"duella":[0,20,0.0],"eletha":[0,280,0.4894],"elora":[0,7945,0.78],"emiline":[0,402,0.5208],"enzie":[0,10,0.0],"evadna":[0,106,0.4051],"exer":[0,41,0.0],"glena":[0,1078,0.6065],"helmi":[0,365,0.5125],"honore":[27,225,0.4288],"idah":[0,40,0.0],"illa":[0,1790,0.6506],"kansas":[93,1216,0.5791],"lacie":[42,10712,0.8032],"laurina":[0,391,0.5184],"leacy":[0,27,0.0],"leela":[0,4369,0.7281],"librada":[0,657,0.5635],"lucilla":[0,946,0.5952],"ludy":[21,212,0.4308],"marylou":[0,13084,0.8233],"mayne":[10,5,0.0],"mayola":[0,1211,0.6166],"merry":[0,10360,0.8031],"myrtia":[0,5,0.0],"novie":[6,360,0.5043],"olah":[0,15,0.0],"oleva":[0,210,0.4644],"oreta":[0,225,0.4704],"oval":[500,101,0.4624],"patsie":[0,560,0.5496],"philippina":[0,5,0.0],"raffaela":[0,756,0.5757],"renia":[0,663,0.5643],"reyes":[5937,711,0.6828],"rosabell":[0,293,0.4934],"rosea":[0,133,0.4248],"rosetter":[0,57,0.0],"rotha":[6,153,0.4237],"samella":[0,716,0.571],"soledad":[5,4168,0.7232],"suzan":[0,9081,0.7916],"sydell":[0,598,0.5553],"vanilla":[0,199,0.4598],"vercie":[0,210,0.4644],"vergia":[0,402,0.5208],"virdia":[0,64,0.0],"willma":[0,673,0.5656],"zell":[213,370,0.351],"zudie":[0,5,0.0],"hobson":[436,0,0.5279],"admiral":[263,0,0.484],"shafter":[119,0,0.4151],"maceo":[3129,0,0.6991],"schley":[10,0,0.0],"ewart":[131,0,0.4235],"arba":[47,16,0.0],"adams":[1196,0,0.6155],"collier":[1829,279,0.5768],"gladstone":[200,0,0.4602],"mickey":[27553,6533,0.7328],"von":[5481,459,0.6964],"arturo":[56633,209,0.9474],"cephas":[911,0,0.5919],"dewy":[21,0,0.0],"embry":[379,686,0.39],"russ":[6111,0,0.7572],"agustin":[16082,21,0.8403],"barnet":[221,0,0.4689],"carmon":[1250,1586,0.3862],"clerance":[163,0,0.4424],"dane":[33289,386,0.8951],"edker":[114,0,0.4114],"elridge":[445,0,0.5297],"emmanuel":[89020,372,0.9861],"erskine":[1996,0,0.66],"eusebio":[3059,0,0.6971],"harrold":[1103,0,0.6085],"holger":[244,0,0.4775],"jon":[167895,1249,0.9926],"kemp":[1286,0,0.6218],"lin":[863,1027,0.3561],"lynwood":[4163,5,0.7231],"macon":[2094,209,0.6114],"murrel":[736,189,0.472],"murrell":[1098,190,0.5302],"orlan":[953,0,0.5958],"osker":[210,0,0.4644],"pearson":[1521,126,0.5941],"vinson":[3825,0,0.7165],"vito":[14935,0,0.8348],"wince":[16,0,0.0],"wyman":[3066,0,0.6973],"ardis":[1030,6386,0.6665],"irva":[0,229,0.472],"thera":[0,892,0.5901],"vernita":[0,4027,0.721],"erva":[0,636,0.5607],"jackie":[78836,91167,0.5363],"zeola":[0,561,0.5498],"gilma":[0,228,0.4716],"rosine":[0,365,0.5125],"deloris":[98,34683,0.9057],"lucienne":[0,1683,0.6452],"madalyn":[0,22943,0.8721],"oza":[26,154,0.3859],"richie":[7059,419,0.7313],"rosalyn":[0,23040,0.8725],"velta":[0,1113,0.6093],"albirda":[0,108,0.4067],"alphia":[0,242,0.4768],"clarisse":[0,1681,0.6451],"edmee":[0,53,0.0],"edris":[383,706,0.3938],"ermal":[261,342,0.3154],"irlene":[0,114,0.4114],"izma":[0,53,0.0],"louida":[0,52,0.0],"marybell":[0,549,0.5479],"monna":[0,1385,0.6283],"onita":[0,1162,0.613],"parlie":[0,22,0.0],"reather":[5,912,0.5892],"reeta":[0,158,0.4397],"tirzah":[0,2033,0.6616],"tola":[6,104,0.386],"tracie":[218,32587,0.8972],"wilsie":[27,267,0.4483],"wylma":[0,542,0.5468],"wynona":[0,3774,0.7154],"adelyn":[6,22752,0.8712],"aldora":[0,515,0.5424],"alean":[0,1098,0.6081],"alfhild":[0,89,0.0],"alvaretta":[0,70,0.0],"annia":[0,718,0.5712],"ardath":[22,1326,0.6157],"armella":[0,757,0.5758],"claris":[77,985,0.5613],"deanna":[266,134391,0.998],"enga":[0,29,0.0],"ethelwyn":[0,74,0.0],"eutha":[0,253,0.4806],"evadne":[0,95,0.0],"evea":[0,195,0.458],"halie":[0,7403,0.7739],"jenette":[0,1934,0.6573],"lauryl":[0,185,0.4534],"lenice":[0,517,0.5427],"levia":[0,268,0.4856],"lomie":[0,36,0.0],"lorean":[0,1368,0.6272],"madelin":[0,3157,0.6999],"madolin":[0,104,0.4034],"margreat":[0,394,0.5191],"marilyn":[1066,373424,0.9972],"maryalice":[0,2485,0.6791],"mozel":[5,223,0.4612],"nathalia":[0,7135,0.7707],"novia":[0,354,0.5098],"orpah":[0,107,0.4059],"pellie":[0,5,0.0],"placida":[0,158,0.4397],"ricka":[0,89,0.0],"ulla":[0,97,0.0],"valeda":[0,431,0.5269],"velora":[0,449,0.5304],"violett":[0,909,0.5917],"vonda":[11,10312,0.8019],"vora":[0,77,0.0],"wanita":[0,2533,0.6807],"willette":[0,2123,0.6654],"haven":[4732,21229,0.7219],"griffith":[1528,0,0.6368],"vic":[2155,0,0.6667],"bynum":[223,0,0.4697],"colvin":[1035,0,0.603],"elizah":[570,774,0.3603],"arlo":[21789,818,0.8393],"berlin":[1616,1757,0.3675],"einer":[199,0,0.4598],"erven":[450,0,0.5306],"everitt":[592,0,0.5545],"goebel":[70,0,0.0],"hershell":[1847,0,0.6533],"ingvald":[74,0,0.0],"kenney":[2500,5,0.6784],"lance":[105563,345,0.9967],"merville":[119,0,0.4151],"perrin":[1546,474,0.5059],"waddie":[21,5,0.0],"luciel":[11,581,0.5442],"clydia":[0,626,0.5593],"ardena":[0,550,0.5481],"ermon":[368,30,0.4808],"pecola":[0,788,0.5793],"valma":[0,388,0.5178],"bernita":[0,4629,0.7331],"desta":[0,379,0.5157],"fontella":[0,589,0.554],"francine":[11,36362,0.9119],"johnsie":[0,1254,0.6197],"mineola":[0,86,0.0],"ofelia":[5,8905,0.7895],"stellar":[64,192,0.3612],"velna":[0,558,0.5493],"virgina":[0,1601,0.6409],"bertrice":[0,64,0.0],"candida":[0,3580,0.7108],"catherina":[0,933,0.594],"cecila":[0,804,0.5811],"dovey":[0,125,0.4194],"hixie":[0,34,0.0],"lucyle":[0,240,0.476],"marine":[6,984,0.5955],"mennie":[0,673,0.5656],"santina":[0,3074,0.6975],"stacie":[198,39112,0.9143],"vinita":[0,1227,0.6178],"zillie":[0,39,0.0],"alejandra":[530,53524,0.9373],"alsie":[0,139,0.4286],"ambrosia":[0,1692,0.6457],"antonietta":[0,1259,0.62],"armanda":[0,1281,0.6215],"arrena":[0,11,0.0],"arzella":[0,381,0.5162],"australia":[11,339,0.4928],"avice":[0,184,0.453],"carita":[0,1087,0.6072],"climmie":[260,461,0.3655],"cyrena":[0,822,0.583],"doreen":[58,46405,0.9323],"elzadie":[0,19,0.0],"enriqueta":[0,1847,0.6533],"ethal":[0,70,0.0],"evalee":[0,1198,0.6157],"famie":[0,44,0.0],"fawn":[0,5615,0.7499],"genieve":[0,536,0.5458],"henrettia":[0,6,0.0],"jocelyn":[352,112257,0.9969],"juliann":[78,7453,0.7673],"julianna":[26,51498,0.9419],"leolar":[0,16,0.0],"leotha":[119,367,0.4058],"loreta":[0,1225,0.6176],"luellen":[5,690,0.5643],"maryon":[5,425,0.5206],"odeal":[0,315,0.4997],"olean":[17,853,0.5764],"oler":[0,43,0.0],"oneda":[0,574,0.5518],"phebie":[0,22,0.0],"raquel":[281,50483,0.9359],"rochelle":[401,46966,0.9272],"tellie":[5,52,0.0],"threasa":[0,659,0.5638],"trinnie":[0,35,0.0],"ursule":[0,6,0.0],"vanessa":[984,260793,0.9962],"vincie":[0,153,0.4369],"adabelle":[0,377,0.5153],"ailene":[0,2179,0.6677],"alleine":[0,5,0.0],"almeter":[0,176,0.4491],"alzada":[0,337,0.5055],"angelyn":[0,2723,0.687],"aretha":[0,5656,0.7505],"aretta":[0,1142,0.6115],"aria":[677,89496,0.9836],"arletha":[0,1640,0.643],"armelia":[0,423,0.5253],"asilee":[0,44,0.0],"bernyce":[0,460,0.5326],"bobby":[314848,9663,0.9702],"caledonia":[0,97,0.0],"canary":[0,422,0.5251],"carlyn":[67,4294,0.7167],"chairty":[0,107,0.4059],"christana":[0,219,0.4681],"christeen":[0,2667,0.6852],"clarine":[0,1659,0.644],"clotile":[0,105,0.4042],"clysta":[0,12,0.0],"clytee":[0,175,0.4486],"coreen":[0,2475,0.6787],"crystel":[0,743,0.5742],"curlie":[172,360,0.3689],"dorsie":[254,391,0.3406],"edia":[0,73,0.0],"elverda":[0,119,0.4151],"endie":[0,16,0.0],"erlinda":[0,4656,0.7336],"etheline":[0,473,0.535],"eufelia":[0,65,0.0],"ferrol":[15,22,0.0],"genever":[0,240,0.476],"glenda":[295,109205,0.9973],"hedda":[0,222,0.4693],"heloise":[0,687,0.5674],"hisayo":[0,69,0.0],"ioma":[0,222,0.4693],"ita":[0,634,0.5604],"jacoba":[0,296,0.4943],"jeannett":[0,677,0.5661],"jena":[7,13217,0.8238],"lavonne":[217,16442,0.8333],"leanner":[0,5,0.0],"leather":[0,195,0.458],"leeanna":[0,3977,0.7199],"leenora":[0,16,0.0],"lener":[0,87,0.0],"lizie":[0,15,0.0],"lorain":[213,1024,0.512],"macel":[5,821,0.5799],"macey":[51,11406,0.8082],"majorie":[0,1353,0.6263],"marcelline":[0,1073,0.6061],"mareta":[0,151,0.4358],"margert":[0,796,0.5802],"marylee":[0,3376,0.7057],"melvie":[0,347,0.5081],"mimi":[0,6933,0.7682],"modie":[7,42,0.0],"neila":[0,1370,0.6273],"noella":[0,3115,0.6987],"odetta":[0,628,0.5596],"peachie":[0,110,0.4083],"pet":[10,10,0.0],"petrina":[0,2107,0.6647],"princella":[0,624,0.559],"rafaelita":[0,72,0.0],"ragnhild":[0,60,0.0],"reah":[0,363,0.512],"renata":[6,13973,0.8287],"rosaria":[0,2535,0.6808],"sharon":[3106,722841,0.9957],"sular":[0,16,0.0],"vader":[21,44,0.0],"venna":[0,522,0.5435],"vetta":[0,155,0.4381],"violar":[0,34,0.0],"wauneta":[0,552,0.5484],"willella":[0,70,0.0],"yola":[0,587,0.5537],"zimmie":[0,10,0.0],"rosevelt":[3074,0,0.6975],"artis":[5357,958,0.6448],"donovan":[61070,220,0.954],"lonzie":[776,0,0.578],"sinclair":[1421,448,0.4975],"woodrow":[39005,139,0.9153],"arron":[8065,173,0.7667],"belford":[229,0,0.472],"danny":[286194,1676,0.9942],"darrel":[29749,122,0.8914],"eligha":[348,0,0.5083],"fredie":[1189,40,0.5978],"hilbert":[2020,0,0.6611],"hoke":[622,0,0.5588],"humbert":[431,0,0.5269],"ken":[32979,25,0.903],"librado":[1303,0,0.623],"lowry":[472,27,0.5104],"manny":[4047,0,0.7214],"phill":[623,0,0.5589],"robinson":[2889,0,0.6921],"antony":[10597,0,0.805],"azel":[443,88,0.4547],"bonifacio":[1568,0,0.6391],"comer":[787,0,0.5792],"corwin":[4329,0,0.7273],"emitt":[629,0,0.5597],"esker":[313,0,0.4991],"fong":[301,5,0.489],"iley":[108,181,0.3083],"josef":[9112,0,0.7919],"kermit":[16440,27,0.8419],"lemar":[1881,0,0.6549],"lonza":[360,0,0.5113],"lorn":[805,0,0.5812],"sims":[306,5,0.4905],"tully":[1031,178,0.5257],"waymond":[1479,0,0.634],"zachary":[550089,1529,0.9972],"abron":[259,0,0.4827],"alfons":[441,0,0.5289],"boy":[898,0,0.5907],"broadus":[905,0,0.5913],"bruster":[5,0,0.0],"brutus":[47,0,0.0],"bub":[54,0,0.0],"bubber":[138,0,0.428],"chandler":[36147,10088,0.7294],"edger":[420,0,0.5246],"elver":[299,49,0.4367],"elzear":[11,0,0.0],"fordyce":[95,0,0.0],"gillis":[712,0,0.5705],"girard":[1717,0,0.647],"gobel":[40,0,0.0],"goble":[109,0,0.4075],"herald":[990,0,0.5991],"kinnie":[159,5,0.4295],"leory":[287,0,0.4916],"les":[3437,32,0.7015],"lugene":[747,665,0.3333],"luigi":[4252,0,0.7257],"march":[155,103,0.2898],"monty":[15238,279,0.8231],"payne":[1291,11,0.6177],"purvis":[969,0,0.5973],"quentin":[43226,190,0.9235],"royden":[879,0,0.5888],"smiley":[357,0,0.5105],"sunny":[4302,12379,0.6267],"teddie":[1451,1042,0.3954],"vernard":[2066,0,0.663],"vincenzo":[10252,0,0.8022],"wert":[10,0,0.0],"white":[31,0,0.0],"venita":[0,5708,0.7513],"gatha":[0,584,0.5533],"hildagard":[0,120,0.4158],"loyce":[775,3503,0.5947],"lyndall":[296,609,0.3979],"madelaine":[0,3373,0.7056],"yolanda":[537,112863,0.9953],"rheba":[0,1207,0.6163],"serafina":[0,3463,0.7079],"vicenta":[0,1127,0.6104],"aina":[0,700,0.569],"goldye":[0,147,0.4335],"willye":[0,366,0.5127],"agustina":[0,1655,0.6438],"alfaretta":[0,40,0.0],"alletta":[0,68,0.0],"aneita":[0,221,0.4689],"armeda":[0,278,0.4888],"arrilla":[0,23,0.0],"beedie":[0,34,0.0],"cele":[0,129,0.4221],"christabel":[0,787,0.5792],"colleen":[330,162699,0.998],"dissie":[0,11,0.0],"ethelene":[0,1837,0.6528],"fredia":[0,2307,0.6726],"gizella":[0,569,0.551],"gordie":[203,79,0.3528],"kaye":[503,13185,0.7969],"marita":[0,5071,0.741],"odessia":[0,601,0.5558],"ressa":[0,41,0.0],"valrie":[5,909,0.5889],"viletta":[0,36,0.0],"aili":[0,1341,0.6255],"alyne":[0,859,0.5868],"aslee":[0,190,0.4558],"belvie":[0,116,0.4129],"carole":[264,110677,0.9976],"clarise":[0,1161,0.613],"clovie":[0,30,0.0],"dea":[17,1803,0.6459],"earlene":[5,14165,0.83],"edra":[0,1431,0.6311],"ezora":[0,22,0.0],"fayetta":[0,1061,0.6051],"feliz":[290,380,0.3206],"gladine":[0,279,0.4891],"glady":[5,538,0.5419],"harrietta":[0,497,0.5393],"icel":[0,130,0.4228],"idamae":[0,982,0.5984],"irmgard":[0,469,0.5342],"isis":[12,11750,0.8133],"katherene":[0,492,0.5384],"lucylle":[0,219,0.4681],"madline":[0,250,0.4796],"maire":[0,914,0.5922],"majel":[0,349,0.5086],"mardie":[5,62,0.0],"marien":[0,198,0.4593],"murial":[0,207,0.4632],"nieves":[595,986,0.399],"ople":[19,284,0.4652],"pebble":[0,306,0.4971],"romilda":[0,358,0.5108],"rosilda":[0,10,0.0],"stefania":[0,2628,0.6839],"tyyne":[0,118,0.4144],"vilma":[0,4975,0.7394],"willer":[5,87,0.0],"wreatha":[0,211,0.4649],"eino":[814,0,0.5821],"esco":[304,0,0.4966],"pate":[272,0,0.4869],"adron":[1100,0,0.6083],"arland":[1799,5,0.6494],"erland":[478,0,0.5359],"marc":[140440,533,0.9962],"nute":[33,0,0.0],"carman":[1084,2407,0.4886],"cipriano":[2213,0,0.669],"every":[10,10,0.0],"garold":[3051,0,0.6969],"lysle":[440,0,0.5287],"rainey":[450,2105,0.5615],"ramond":[1813,0,0.6517],"rosser":[148,0,0.4341],"mercie":[0,480,0.5362],"ophie":[0,84,0.0],"viona":[0,602,0.5559],"clarie":[0,778,0.5782],"glenora":[0,472,0.5348],"lunette":[0,323,0.5018],"ozell":[1720,1116,0.4188],"relda":[0,565,0.5504],"audrie":[5,4075,0.7212],"azalea":[0,10618,0.8052],"beauty":[0,736,0.5734],"burnetta":[0,754,0.5755],"galena":[0,217,0.4673],"glayds":[0,175,0.4486],"hortencia":[0,3963,0.7196],"larcenia":[0,64,0.0],"verbie":[5,183,0.4427],"alexandria":[230,103886,0.9978],"alliene":[0,283,0.4904],"aneta":[0,845,0.5854],"belzora":[0,23,0.0],"darline":[0,5050,0.7407],"euretta":[0,58,0.0],"gustavia":[0,272,0.4869],"lavona":[0,1791,0.6506],"leanore":[0,772,0.5775],"lucill":[0,235,0.4742],"naomie":[0,2056,0.6626],"oralee":[0,662,0.5642],"para":[0,353,0.5096],"quilla":[16,164,0.411],"tenna":[0,559,0.5495],"yula":[0,89,0.0],"adena":[0,1741,0.6482],"allegra":[0,4696,0.7343],"alleyne":[0,145,0.4323],"amye":[0,651,0.5627],"anetta":[0,569,0.551],"angelena":[0,3205,0.7012],"annalee":[0,7683,0.7771],"athena":[0,50614,0.9409],"azema":[0,5,0.0],"bernece":[0,405,0.5215],"carlee":[308,12876,0.8048],"cassandra":[376,170543,0.9978],"celester":[181,221,0.2863],"claretta":[0,924,0.5931],"cona":[0,46,0.0],"delena":[0,2167,0.6672],"delphina":[0,903,0.5911],"earlean":[0,2585,0.6825],"earsie":[5,163,0.4318],"elvire":[0,20,0.0],"euda":[0,38,0.0],"eufemia":[0,682,0.5668],"fredrica":[0,890,0.5899],"girlee":[0,30,0.0],"girtrue":[0,50,0.0],"jesusita":[0,1467,0.6333],"kathaleen":[0,4136,0.7233],"laddie":[1644,92,0.6136],"lelea":[0,5,0.0],"levonia":[0,491,0.5382],"lillion":[0,350,0.5088],"lorita":[0,1748,0.6485],"loucille":[0,276,0.4882],"lourene":[0,250,0.4796],"ludella":[0,118,0.4144],"lynnette":[0,15206,0.8364],"mafalda":[0,1279,0.6214],"malvena":[0,44,0.0],"melrose":[51,1140,0.5888],"murle":[286,189,0.3223],"nessie":[0,92,0.0],"odelle":[10,424,0.5153],"ronnie":[182718,8079,0.9577],"rosemond":[18,491,0.5222],"safronia":[0,10,0.0],"seferina":[0,251,0.4799],"thelda":[0,521,0.5434],"tommye":[52,1456,0.6138],"velmer":[190,220,0.2804],"vesper":[66,859,0.5509],"yolande":[0,1620,0.6419],"clarnce":[914,0,0.5922],"nathen":[6117,0,0.7573],"victoriano":[1409,0,0.6298],"beckham":[18137,260,0.8409],"cy":[3846,23,0.7133],"eduard":[1847,0,0.6533],"farrell":[4355,472,0.6647],"glenwood":[2247,0,0.6703],"glynn":[4944,417,0.6878],"moise":[920,0,0.5928],"thedore":[1136,0,0.6111],"amedee":[70,0,0.0],"arleigh":[517,691,0.3526],"armon":[3874,0,0.7176],"calvert":[1695,0,0.6458],"domenick":[5192,0,0.7431],"earnie":[1180,326,0.498],"etienne":[1593,91,0.6104],"fleetwood":[96,0,0.0],"gilmore":[753,0,0.5754],"gonzalo":[10879,0,0.8073],"harrell":[2635,0,0.6842],"holden":[31358,281,0.8921],"jan":[22355,54527,0.693],"mel":[3683,492,0.6388],"orbie":[609,51,0.5203],"paschal":[592,0,0.5545],"rodolfo":[33650,83,0.9034],"rubert":[491,0,0.5382],"samie":[631,177,0.4541],"spence":[1113,0,0.6093],"sun":[490,498,0.3019],"ulysees":[397,0,0.5198],"waino":[347,0,0.5081],"estela":[0,9018,0.791],"erlene":[0,2332,0.6735],"margrette":[0,850,0.5859],"nettye":[0,71,0.0],"aliene":[0,727,0.5723],"arcola":[0,324,0.5021],"lavelle":[2469,1589,0.4391],"anona":[0,502,0.5401],"clelia":[0,530,0.5449],"concha":[0,1696,0.6459],"elverta":[0,141,0.4298],"ozelma":[0,18,0.0],"pheobie":[0,7,0.0],"sedalia":[0,256,0.4816],"sylvesta":[26,45,0.0],"ulma":[0,17,0.0],"albertia":[0,204,0.4619],"aldonia":[0,189,0.4553],"arna":[0,609,0.5569],"bedie":[0,77,0.0],"charlena":[0,1809,0.6515],"clessie":[0,140,0.4292],"cordell":[10760,148,0.7966],"delema":[0,57,0.0],"esperanza":[35,20654,0.8617],"gwendolen":[0,877,0.5886],"locie":[0,16,0.0],"luceil":[0,142,0.4305],"neomia":[0,904,0.5912],"obera":[0,216,0.4669],"ozelle":[0,343,0.5071],"perna":[0,23,0.0],"rhodia":[0,70,0.0],"alder":[1232,59,0.5938],"asencion":[379,110,0.4169],"aurie":[6,468,0.5284],"beryle":[94,550,0.4798],"bessye":[0,105,0.4042],"bettina":[0,6471,0.7622],"cardelia":[0,140,0.4292],"celestie":[0,5,0.0],"clariece":[0,296,0.4943],"colletta":[0,489,0.5379],"eline":[0,376,0.515],"erdine":[0,248,0.4789],"farrie":[0,62,0.0],"francie":[6,1890,0.6535],"gabriela":[371,85206,0.9822],"hatsuyo":[0,48,0.0],"idonia":[0,118,0.4144],"ireta":[0,448,0.5303],"isidra":[0,613,0.5575],"izella":[0,417,0.524],"jeanett":[0,1079,0.6066],"jovita":[5,3284,0.7023],"ladonna":[0,21227,0.8654],"leavie":[0,10,0.0],"lorayne":[0,1157,0.6127],"loris":[579,1701,0.501],"lourena":[0,43,0.0],"maura":[5,19839,0.8593],"maurita":[0,925,0.5932],"michelina":[0,2174,0.6675],"narsis":[0,5,0.0],"nela":[0,585,0.5534],"nolah":[0,264,0.4843],"pricie":[0,29,0.0],"rebie":[0,216,0.4669],"reola":[0,810,0.5817],"revella":[0,74,0.0],"shizuyo":[0,16,0.0],"siiri":[0,38,0.0],"syd":[151,80,0.309],"tannie":[11,111,0.3796],"wenonah":[0,506,0.5408],"lenon":[518,0,0.5429],"porfirio":[3519,0,0.7093],"arne":[2847,0,0.6909],"deward":[1393,0,0.6288],"gerhardt":[858,0,0.5867],"gilberto":[28526,58,0.8894],"gorman":[817,0,0.5824],"jame":[3430,403,0.6414],"macario":[2794,0,0.6892],"clearance":[652,0,0.5628],"dailey":[102,269,0.3726],"dutch":[1395,0,0.6289],"euell":[511,0,0.5417],"fidelis":[49,114,0.3094],"ismael":[42900,73,0.9251],"jorden":[7001,2334,0.5955],"laurice":[280,1739,0.5694],"lorne":[4297,50,0.7193],"maximo":[8712,0,0.788],"orien":[536,5,0.5416],"ormond":[513,0,0.542],"quinton":[31385,42,0.8983],"telford":[348,0,0.5083],"wilburt":[1108,0,0.6089],"magdaline":[0,1374,0.6276],"ardith":[131,5581,0.7341],"bebe":[0,1573,0.6393],"evon":[755,3732,0.6075],"floris":[22,669,0.5498],"luretta":[0,341,0.5066],"sandra":[2692,875334,0.9969],"waunita":[0,865,0.5874],"anniemae":[0,307,0.4974],"arietta":[0,620,0.5585],"maryan":[33,1567,0.6276],"shizue":[0,608,0.5568],"berlie":[188,103,0.3184],"berthal":[17,6,0.0],"bertice":[44,175,0.374],"deanie":[20,729,0.5595],"desdemona":[0,43,0.0],"dorothe":[0,644,0.5618],"elverna":[0,288,0.4919],"evarista":[0,27,0.0],"florena":[0,187,0.4544],"ilean":[0,965,0.5969],"inell":[0,2147,0.6664],"leafie":[0,41,0.0],"maurene":[0,635,0.5606],"nema":[18,345,0.4866],"ortha":[0,254,0.481],"reda":[358,1843,0.5598],"romayne":[17,1118,0.6018],"thomasina":[0,3765,0.7152],"velia":[0,2819,0.69],"venetta":[0,995,0.5996],"zannie":[144,140,0.2488],"adie":[16,151,0.402],"aleatha":[0,790,0.5795],"ardys":[5,954,0.5933],"audree":[0,3691,0.7134],"avanelle":[0,559,0.5495],"berma":[0,266,0.485],"carmie":[60,368,0.4525],"caterina":[0,2987,0.695],"celestial":[0,592,0.5545],"cleophas":[960,23,0.5845],"consuela":[0,2010,0.6606],"delfinia":[0,46,0.0],"delle":[0,97,0.0],"elner":[5,393,0.5134],"elnor":[0,843,0.5852],"emerald":[505,9146,0.7552],"enda":[0,238,0.4753],"ercie":[0,108,0.4067],"ersa":[0,69,0.0],"etoile":[0,201,0.4606],"everleaner":[0,53,0.0],"fanie":[0,30,0.0],"feliciana":[0,578,0.5524],"florabelle":[0,296,0.4943],"florella":[0,212,0.4653],"flornce":[0,141,0.4298],"gabrella":[0,167,0.4445],"gaetana":[0,676,0.566],"gemma":[0,24227,0.8769],"genelle":[0,1756,0.6489],"giovanna":[0,13826,0.8281],"grethel":[0,625,0.5592],"gretna":[0,112,0.4098],"hermia":[0,33,0.0],"hyla":[0,553,0.5485],"idora":[0,99,0.0],"impi":[0,40,0.0],"kikuyo":[0,31,0.0],"lorenia":[0,262,0.4837],"ludmila":[0,282,0.49],"lutisha":[0,213,0.4657],"madell":[0,147,0.4335],"malzie":[0,16,0.0],"marlene":[359,130396,0.9973],"matty":[161,737,0.4848],"maudell":[0,482,0.5366],"netha":[0,224,0.47],"onalee":[0,999,0.5999],"palmyra":[0,77,0.0],"pernella":[0,99,0.0],"regena":[0,2730,0.6872],"renner":[566,31,0.5264],"steffie":[0,495,0.5389],"vernelle":[5,1245,0.6169],"veryl":[686,374,0.3916],"wretha":[0,206,0.4628],"wynne":[167,1678,0.5941],"adrain":[4247,568,0.6496],"desmond":[39186,233,0.9137],"domenic":[11006,0,0.8083],"duard":[632,0,0.5601],"raul":[87592,484,0.9835],"severo":[1394,0,0.6289],"council":[263,0,0.484],"gennaro":[2521,0,0.6803],"gerry":[14460,6657,0.5923],"guido":[3352,0,0.7051],"aubry":[1612,3008,0.4772],"cannon":[10602,229,0.7899],"carmelo":[12789,5,0.8211],"cletis":[1603,159,0.5906],"elery":[318,5,0.4941],"fairbanks":[11,0,0.0],"fread":[328,0,0.5032],"gaetano":[3834,0,0.7167],"gates":[434,44,0.4866],"hipolito":[1917,0,0.6565],"lyndon":[9640,399,0.7685],"melford":[1175,0,0.614],"selwyn":[1402,10,0.6255],"adan":[30848,140,0.8942],"americo":[2903,0,0.6926],"athol":[136,0,0.4267],"aurelio":[8233,6,0.7826],"basilio":[1799,0,0.651],"carle":[462,144,0.4243],"cleophus":[2023,19,0.6559],"curvin":[445,0,0.5297],"custer":[124,0,0.4187],"gabino":[2540,0,0.681],"glendon":[4683,64,0.7254],"hurshel":[841,0,0.585],"kennith":[10554,5,0.8043],"lino":[4130,6,0.7223],"linsey":[240,5118,0.7124],"manfred":[1455,0,0.6326],"mateo":[115568,73,0.9994],"matias":[23244,5,0.8731],"mort":[129,0,0.4221],"ogle":[113,10,0.384],"orbin":[456,0,0.5318],"phillips":[1331,0,0.6248],"prentis":[1260,0,0.6201],"reeder":[87,0,0.0],"roosvelt":[288,0,0.4919],"slim":[12,0,0.0],"thor":[4810,0,0.7364],"wendall":[2425,6,0.6755],"florentina":[0,1043,0.6037],"idamay":[0,84,0.0],"alison":[590,116237,0.9949],"glenola":[0,188,0.4548],"nida":[0,1434,0.6313],"pearlena":[0,335,0.505],"saimi":[0,18,0.0],"albirtha":[0,76,0.0],"armer":[6,16,0.0],"autie":[11,62,0.0],"corinthia":[0,1127,0.6104],"dorthey":[0,1559,0.6386],"georgeana":[0,82,0.0],"josephene":[0,278,0.4888],"larena":[0,820,0.5828],"louva":[0,32,0.0],"lurlene":[0,881,0.589],"misao":[0,337,0.5055],"orvilla":[0,238,0.4753],"robertha":[0,548,0.5478],"thena":[0,268,0.4856],"twyla":[0,7133,0.7707],"vanna":[59,1951,0.6412],"vee":[10,269,0.4716],"adlene":[0,177,0.4496],"aldona":[0,925,0.5932],"alee":[63,499,0.4883],"alka":[0,122,0.4173],"amilia":[0,2880,0.6919],"anniebell":[0,155,0.4381],"artee":[26,10,0.0],"betrice":[0,97,0.0],"bianca":[195,76962,0.975],"burlie":[139,40,0.3499],"catherene":[0,256,0.4816],"clova":[0,122,0.4173],"conception":[0,676,0.566],"cozie":[0,43,0.0],"deana":[14,23449,0.8736],"delcia":[0,247,0.4785],"doreatha":[0,1238,0.6185],"eartha":[32,2920,0.6865],"elah":[0,357,0.5105],"equilla":[0,580,0.5527],"estha":[0,76,0.0],"everlean":[0,513,0.542],"ezma":[0,123,0.418],"felma":[0,113,0.4106],"flara":[0,115,0.4121],"genola":[0,266,0.485],"gertrue":[0,222,0.4693],"gwendolyne":[0,342,0.5068],"gyneth":[0,96,0.0],"hagar":[0,152,0.4364],"jeneva":[0,1056,0.6047],"lavine":[0,115,0.4121],"lecie":[0,23,0.0],"lidwina":[0,66,0.0],"lucillie":[0,260,0.483],"madalin":[0,582,0.553],"margo":[34,26665,0.8842],"marsella":[0,166,0.444],"mela":[0,988,0.599],"minola":[0,129,0.4221],"mintha":[0,5,0.0],"odia":[7,37,0.0],"othello":[679,116,0.4954],"pascuala":[0,158,0.4397],"pencie":[0,21,0.0],"providence":[0,716,0.571],"renda":[0,1191,0.6152],"roseann":[0,15860,0.8401],"rozelia":[0,90,0.0],"sonya":[182,65679,0.9611],"sunshine":[45,5674,0.7456],"vastie":[0,69,0.0],"versia":[0,223,0.4697],"wilhelmenia":[0,1125,0.6102],"willene":[0,2928,0.6933],"zephyr":[2355,666,0.5426],"zoie":[0,11004,0.8083],"eliot":[7759,554,0.7317],"tyree":[14747,735,0.7982],"hansel":[3529,5,0.7086],"verlin":[3812,292,0.6712],"neville":[2330,75,0.6551],"ulyses":[1438,0,0.6316],"anthoney":[2798,0,0.6894],"bolton":[233,0,0.4735],"grayson":[123139,4139,0.9675],"merced":[764,181,0.4811],"orton":[210,0,0.4644],"therman":[1885,0,0.6551],"alven":[462,0,0.5329],"ambrosio":[945,0,0.5951],"beauford":[1016,10,0.5964],"bueford":[265,0,0.4846],"carlin":[2613,1922,0.4214],"elic":[70,0,0.0],"eluterio":[394,0,0.5191],"estus":[188,0,0.4548],"evertte":[82,0,0.0],"giuseppe":[6241,0,0.7591],"idus":[165,0,0.4435],"killis":[5,0,0.0],"mccoy":[4257,100,0.7111],"merrick":[5615,502,0.6952],"mervyn":[1581,5,0.638],"michele":[2763,223268,0.9878],"norvell":[1158,117,0.5641],"pioet":[5,0,0.0],"rulon":[1049,0,0.6042],"seferino":[1235,0,0.6183],"serapio":[291,0,0.4928],"silvio":[2955,0,0.6941],"teofilo":[1040,0,0.6034],"nedra":[0,7104,0.7703],"dorothee":[0,295,0.494],"cristina":[270,52299,0.9393],"ellan":[0,378,0.5155],"eusebia":[0,333,0.5045],"leolia":[0,93,0.0],"virtie":[0,139,0.4286],"arbutus":[0,1075,0.6063],"azlee":[0,156,0.4386],"benedetta":[0,414,0.5234],"claramae":[0,222,0.4693],"iantha":[0,511,0.5417],"kikue":[0,297,0.4946],"livia":[0,9903,0.7992],"pansie":[0,78,0.0],"yoshiko":[0,1331,0.6248],"annamarie":[0,11946,0.8154],"arma":[0,606,0.5565],"berneda":[0,569,0.551],"cipriana":[0,392,0.5187],"cloa":[0,70,0.0],"concettina":[0,259,0.4827],"edel":[489,53,0.4933],"ercel":[156,186,0.2756],"eria":[0,198,0.4593],"ladie":[0,11,0.0],"loella":[0,152,0.4364],"macil":[0,192,0.4567],"margurette":[0,263,0.484],"nellda":[0,6,0.0],"ocey":[0,6,0.0],"olgie":[0,30,0.0],"olita":[0,142,0.4305],"osceola":[61,148,0.3286],"roxanne":[55,59359,0.9539],"sonja":[44,39476,0.9183],"sydelle":[0,745,0.5744],"ailie":[0,376,0.515],"alie":[83,528,0.4815],"alvenia":[0,420,0.5246],"bernese":[0,138,0.428],"blondell":[15,1475,0.6282],"burnette":[234,764,0.4592],"clevia":[0,5,0.0],"deette":[0,713,0.5706],"eary":[0,5,0.0],"edolia":[0,20,0.0],"elgia":[11,23,0.0],"elinora":[0,323,0.5018],"ellamay":[0,196,0.4585],"elsbeth":[0,737,0.5735],"esteller":[0,40,0.0],"fidela":[0,410,0.5226],"gabina":[0,40,0.0],"gazelle":[0,73,0.0],"genoa":[0,213,0.4657],"griselda":[61,9075,0.7869],"isidora":[0,613,0.5575],"jannett":[0,1026,0.6022],"jasmine":[1263,257113,0.9951],"jill":[501,208052,0.9976],"laina":[0,3494,0.7087],"laurabelle":[0,300,0.4954],"lauraine":[0,756,0.5757],"lavaughn":[936,962,0.3323],"leonis":[41,5,0.0],"lettye":[0,27,0.0],"lillyan":[0,2412,0.6765],"lolar":[0,13,0.0],"loucile":[0,99,0.0],"lynnie":[16,317,0.4802],"maribel":[185,24742,0.8728],"maryelizabeth":[0,2081,0.6637],"minnetta":[0,69,0.0],"mitzi":[0,13176,0.824],"molla":[0,5,0.0],"nadyne":[0,628,0.5596],"orella":[0,108,0.4067],"oria":[29,259,0.4423],"pearlene":[0,1958,0.6584],"rozelle":[33,492,0.5098],"ruthann":[0,7071,0.7699],"savina":[0,1315,0.6238],"telesfora":[0,10,0.0],"theadora":[0,1421,0.6305],"tressia":[0,351,0.5091],"tyne":[18,435,0.5101],"valla":[0,222,0.4693],"venora":[0,266,0.485],"zetha":[0,64,0.0],"domenico":[3773,0,0.7153],"ryan":[960560,27225,0.9724],"armando":[75970,372,0.9718],"delmas":[2258,0,0.6707],"alfonse":[1392,0,0.6287],"enrico":[4741,0,0.7352],"othel":[732,154,0.487],"toivo":[535,0,0.5457],"aldo":[17484,15,0.8479],"attilio":[1065,0,0.6055],"caldwell":[621,0,0.5586],"denzel":[11562,41,0.81],"eligh":[1012,0,0.601],"fermon":[257,0,0.482],"francesco":[8299,0,0.7838],"hadley":[2084,44328,0.8914],"ladislaus":[212,0,0.4653],"leandro":[10290,0,0.8025],"maston":[235,0,0.4742],"reggie":[12191,539,0.7862],"vearl":[453,70,0.4709],"wilmot":[454,5,0.5266],"ysidro":[1412,0,0.63],"arlis":[1949,797,0.4881],"burnell":[2790,593,0.5821],"cayetano":[745,0,0.5744],"chick":[77,0,0.0],"creighton":[3735,16,0.7118],"creston":[835,0,0.5843],"field":[135,0,0.4261],"garth":[9659,0,0.797],"gerardo":[54612,239,0.9437],"geronimo":[3052,0,0.6969],"holt":[1842,0,0.6531],"kendall":[35186,65593,0.6509],"kennard":[2703,0,0.6864],"natale":[1152,371,0.4815],"nathon":[1439,0,0.6316],"norvel":[840,5,0.5819],"perfecto":[876,0,0.5885],"willman":[114,0,0.4114],"wray":[859,23,0.5737],"zeddie":[63,15,0.0],"theta":[0,402,0.5208],"joye":[8,3467,0.7066],"jacquelyn":[110,85116,0.9848],"mirla":[0,49,0.0],"naida":[0,1708,0.6465],"sheila":[648,238706,0.9973],"verneda":[0,631,0.56],"luverne":[1066,847,0.3657],"lynne":[458,61952,0.952],"marylouise":[0,1920,0.6567],"rema":[10,1199,0.6114],"toni":[1555,100115,0.9847],"billye":[112,3360,0.6853],"bruna":[0,1047,0.604],"emelda":[0,1396,0.629],"fritzi":[0,285,0.491],"loye":[448,173,0.403],"maydell":[0,367,0.5129],"montez":[3183,737,0.5835],"valena":[0,663,0.5643],"vernette":[0,1254,0.6197],"vickie":[388,110044,0.9965],"arlee":[435,1232,0.4762],"beddie":[0,17,0.0],"berdena":[0,390,0.5182],"bluma":[0,452,0.531],"fair":[5,41,0.0],"genevie":[0,1981,0.6594],"glessie":[0,105,0.4042],"gypsie":[0,48,0.0],"johnnye":[36,843,0.5647],"karin":[193,28532,0.8857],"laverda":[0,363,0.512],"lerah":[0,16,0.0],"liane":[0,3870,0.7175],"lizabeth":[0,5603,0.7497],"lyndell":[1960,828,0.4844],"magaret":[0,458,0.5322],"margorie":[0,1026,0.6022],"pierina":[0,262,0.4837],"thurza":[0,71,0.0],"vestal":[367,125,0.4016],"wenona":[0,1168,0.6135],"adelma":[0,113,0.4106],"allee":[0,1183,0.6146],"alza":[0,17,0.0],"arnette":[33,1055,0.5889],"avalon":[54,4065,0.7135],"bernadene":[0,482,0.5366],"brunetta":[0,376,0.515],"cathryne":[0,535,0.5457],"cecillia":[0,556,0.549],"cenia":[0,125,0.4194],"clarrissa":[0,384,0.5169],"dagney":[0,57,0.0],"delie":[0,10,0.0],"elener":[0,106,0.4051],"ellene":[0,875,0.5884],"ercelle":[0,84,0.0],"erminie":[0,63,0.0],"floree":[0,372,0.5141],"glenice":[0,943,0.5949],"hula":[0,82,0.0],"izena":[0,10,0.0],"lavone":[117,1173,0.5657],"leecy":[0,5,0.0],"loria":[0,1466,0.6332],"louvinia":[0,264,0.4843],"ludmilla":[0,242,0.4768],"meryle":[32,397,0.4872],"montine":[0,492,0.5384],"nelma":[0,1229,0.6179],"odra":[0,5,0.0],"oklahoma":[0,5,0.0],"olimpia":[0,407,0.5219],"ozelia":[0,41,0.0],"paulene":[0,1416,0.6302],"paulette":[65,46947,0.9331],"pearlean":[0,1066,0.6056],"percilla":[0,567,0.5507],"petronilla":[0,57,0.0],"rebbecca":[0,2315,0.6729],"relia":[0,27,0.0],"rodie":[10,15,0.0],"rosanne":[5,14740,0.8334],"suella":[0,405,0.5215],"syvilla":[0,112,0.4098],"tamer":[793,33,0.5601],"tecla":[0,135,0.4261],"teola":[0,198,0.4593],"valta":[0,130,0.4228],"verbena":[0,98,0.0],"verdell":[1340,2085,0.4304],"verlena":[0,349,0.5086],"vieno":[0,200,0.4602],"wanna":[0,550,0.5481],"willar":[0,17,0.0],"wynema":[0,736,0.5734],"ynez":[5,210,0.4556],"yoshino":[0,61,0.0],"zerline":[0,66,0.0],"zonnie":[11,165,0.421],"taft":[1534,0,0.6372],"delphin":[116,0,0.4129],"giovanni":[86387,967,0.9773],"delmus":[599,0,0.5555],"gilmer":[1187,0,0.6149],"lucio":[6140,0,0.7576],"oland":[274,0,0.4876],"aime":[474,1835,0.5346],"kingsley":[6506,2042,0.5985],"reinhart":[202,0,0.4611],"zebedee":[1256,0,0.6198],"armour":[189,0,0.4553],"bland":[408,0,0.5221],"ciro":[2542,0,0.681],"cleatus":[894,71,0.553],"estil":[908,0,0.5916],"florentino":[3094,0,0.6981],"gasper":[1469,0,0.6334],"gino":[12979,12,0.822],"landis":[2287,261,0.6115],"lanham":[6,0,0.0],"marcelo":[12432,0,0.8189],"salvadore":[1302,0,0.6229],"wille":[366,41,0.4693],"anselmo":[2742,0,0.6876],"arville":[758,11,0.5689],"bo":[14282,834,0.7898],"byrl":[533,53,0.5035],"candelario":[2308,0,0.6726],"dacie":[5,136,0.4146],"easton":[76216,979,0.9651],"elford":[104,0,0.4034],"esaw":[383,0,0.5166],"esmond":[500,0,0.5398],"georges":[890,0,0.5899],"gurvis":[53,0,0.0],"hargis":[190,0,0.4558],"harlen":[3345,104,0.6862],"haskel":[1160,0,0.6129],"hawley":[150,67,0.323],"helge":[49,0,0.0],"herchel":[454,0,0.5314],"hewitt":[955,0,0.596],"hoyle":[1003,0,0.6003],"ivon":[580,1157,0.4316],"jimie":[200,5,0.4511],"langley":[163,652,0.4658],"masao":[1018,0,0.6015],"maximilian":[18440,0,0.8532],"murvin":[194,0,0.4576],"pasco":[432,0,0.5271],"percell":[1064,0,0.6054],"pinckney":[42,0,0.0],"placido":[1111,0,0.6091],"primo":[864,0,0.5873],"revis":[382,0,0.5164],"ruperto":[1022,0,0.6019],"santo":[4844,0,0.737],"saturnino":[601,0,0.5558],"sylvio":[463,0,0.5331],"trueman":[274,0,0.4876],"trygve":[391,0,0.5184],"pasqualina":[0,641,0.5614],"alise":[0,3583,0.7108],"marcela":[0,8817,0.7891],"pecolia":[0,490,0.538],"fonnie":[39,147,0.3587],"mertis":[10,466,0.5243],"ree":[5,300,0.4887],"romona":[0,5170,0.7427],"viviana":[22,26334,0.8834],"donata":[0,551,0.5482],"ellenor":[0,672,0.5655],"evelynne":[0,1439,0.6316],"prudencia":[0,43,0.0],"shiela":[0,4408,0.7288],"therma":[0,114,0.4114],"adalyn":[0,29815,0.8949],"aldean":[186,400,0.3779],"arbella":[0,82,0.0],"berdina":[0,340,0.5063],"bernarda":[0,360,0.5113],"birdell":[20,348,0.4853],"carleen":[0,6744,0.7658],"elene":[0,1261,0.6201],"endia":[0,1300,0.6228],"enis":[274,293,0.2846],"evangelina":[0,10121,0.801],"everlyn":[0,1343,0.6256],"felecia":[0,10268,0.8023],"georga":[0,201,0.4606],"gladies":[0,408,0.5221],"joesphine":[0,628,0.5596],"leatrice":[0,5864,0.7536],"lilas":[0,361,0.5115],"lorane":[5,423,0.5201],"mabry":[213,1248,0.5407],"margaruite":[0,127,0.4208],"margit":[0,672,0.5655],"marsha":[251,104176,0.9976],"marvelle":[75,442,0.464],"merla":[0,424,0.5255],"roselia":[0,820,0.5828],"shizuko":[0,620,0.5585],"stanislawa":[0,159,0.4403],"thersa":[0,1071,0.606],"tossie":[0,32,0.0],"ventura":[1301,226,0.5425],"almerinda":[0,35,0.0],"anniebelle":[0,73,0.0],"arcelia":[0,1816,0.6518],"ardalia":[0,40,0.0],"artena":[0,5,0.0],"aune":[0,312,0.4988],"avonelle":[0,290,0.4925],"ayako":[0,543,0.547],"berchie":[0,16,0.0],"bernardina":[0,166,0.444],"berneta":[0,473,0.535],"blodwyn":[0,59,0.0],"cecele":[0,15,0.0],"ceclia":[0,230,0.4723],"celest":[0,1081,0.6068],"chella":[0,127,0.4208],"clorine":[0,254,0.481],"colene":[0,1624,0.6421],"cosby":[212,23,0.4278],"elese":[0,511,0.5417],"elisia":[0,1972,0.659],"ellenora":[0,228,0.4716],"elthea":[0,20,0.0],"erika":[548,125442,0.9957],"ersilia":[0,82,0.0],"esmer":[0,26,0.0],"essye":[0,5,0.0],"ethelmae":[0,314,0.4994],"ferna":[0,44,0.0],"flossy":[0,39,0.0],"fortunata":[0,253,0.4806],"gearldine":[5,4686,0.7335],"genella":[0,231,0.4727],"giuseppina":[0,789,0.5794],"guida":[0,128,0.4214],"haruko":[0,680,0.5665],"ivalee":[0,388,0.5178],"kelsie":[345,19507,0.8446],"lanelle":[0,1547,0.6379],"leoria":[0,35,0.0],"loleta":[0,1021,0.6018],"lorie":[104,21955,0.8646],"malvie":[0,5,0.0],"manola":[0,52,0.0],"marguerette":[0,132,0.4241],"melissie":[0,28,0.0],"mimia":[0,10,0.0],"monteen":[0,253,0.4806],"myrla":[0,98,0.0],"nadean":[0,1365,0.627],"nebraska":[43,42,0.0],"nel":[0,127,0.4208],"oshie":[0,5,0.0],"philamena":[0,89,0.0],"pia":[0,3835,0.7168],"rosell":[28,152,0.3809],"simone":[535,27271,0.8717],"statia":[0,167,0.4445],"teresina":[0,163,0.4424],"tryphena":[0,110,0.4083],"vashtie":[0,47,0.0],"velmar":[22,54,0.0],"vermell":[0,726,0.5722],"viena":[0,53,0.0],"vitalia":[0,185,0.4534],"whilma":[0,20,0.0],"robley":[362,0,0.5117],"amador":[3348,0,0.705],"cristobal":[7885,11,0.7784],"linzie":[338,570,0.3714],"ander":[4182,0,0.7243],"clenton":[742,0,0.5741],"dante":[50470,466,0.9328],"modesto":[2551,0,0.6813],"rayburn":[2612,0,0.6834],"aldon":[1604,0,0.641],"allyn":[3223,1908,0.4661],"demetrio":[3047,0,0.6968],"durwood":[2688,0,0.6859],"eloy":[8284,0,0.7836],"hercules":[1300,0,0.6228],"kenny":[51777,542,0.934],"merrel":[259,10,0.4679],"nicola":[2981,5066,0.4918],"octavio":[11294,5,0.8102],"orlin":[1660,0,0.644],"raffaele":[1058,0,0.6049],"reynaldo":[20449,23,0.8613],"ulysse":[250,0,0.4796],"yale":[1416,0,0.6302],"arles":[210,6,0.4539],"auston":[3568,0,0.7105],"belmont":[171,0,0.4466],"bernhardt":[423,0,0.5253],"berthold":[267,0,0.4853],"blanton":[483,0,0.5368],"bohumil":[56,0,0.0],"bronislaw":[247,0,0.4785],"bryce":[123169,3516,0.9722],"cleven":[583,0,0.5531],"currie":[195,54,0.3753],"delton":[4733,0,0.735],"dorman":[1898,0,0.6557],"erling":[1378,0,0.6278],"eward":[293,0,0.4934],"faustino":[3797,0,0.7159],"genaro":[7607,0,0.7762],"gordy":[336,0,0.5053],"hank":[16204,0,0.8419],"hinton":[566,0,0.5506],"lancelot":[625,0,0.5592],"laymon":[779,0,0.5783],"malon":[308,99,0.395],"merlyn":[3404,1626,0.501],"metro":[522,0,0.5435],"orman":[886,0,0.5895],"parke":[641,0,0.5614],"reino":[711,0,0.5704],"rollins":[451,126,0.4316],"severin":[899,0,0.5908],"thelbert":[931,0,0.5938],"uno":[103,0,0.4026],"waddell":[780,0,0.5784],"walden":[1490,0,0.6346],"wilmoth":[30,178,0.3967],"belen":[79,11940,0.8106],"cesaria":[0,56,0.0],"coretta":[0,2433,0.6772],"devota":[0,200,0.4602],"inola":[0,145,0.4323],"kimiko":[0,1826,0.6523],"luise":[5,581,0.5489],"addis":[435,152,0.4103],"annamay":[0,748,0.5748],"arleta":[0,1030,0.6026],"beola":[0,104,0.4034],"daphna":[0,648,0.5623],"doloris":[0,1885,0.6551],"doria":[0,1313,0.6237],"emmalee":[0,8958,0.7904],"gurtha":[0,188,0.4548],"hortence":[0,200,0.4602],"jeraldine":[0,4345,0.7276],"leonilda":[0,125,0.4194],"lurine":[0,252,0.4803],"ollive":[0,12,0.0],"oree":[235,152,0.3143],"algia":[58,46,0.225],"armida":[0,3033,0.6964],"bridie":[0,374,0.5146],"camella":[0,1199,0.6158],"congetta":[0,422,0.5251],"cordy":[32,41,0.0],"cozy":[21,122,0.3678],"dorine":[0,2867,0.6915],"eddith":[0,146,0.4329],"edner":[7,33,0.0],"evelene":[0,747,0.5747],"ezella":[0,180,0.4511],"faun":[0,222,0.4693],"foye":[120,254,0.3495],"hisako":[0,368,0.5132],"icle":[0,37,0.0],"idelia":[0,126,0.4201],"ineze":[0,169,0.4456],"janis":[174,48830,0.9347],"katheleen":[0,1230,0.618],"larene":[0,866,0.5875],"liona":[0,206,0.4628],"lucelia":[0,185,0.4534],"lucielle":[0,325,0.5024],"maeola":[0,445,0.5297],"maryella":[0,741,0.574],"masako":[0,821,0.5829],"mayetta":[0,238,0.4753],"mazelle":[0,218,0.4677],"merie":[0,177,0.4496],"nadene":[0,1895,0.6555],"obelia":[0,77,0.0],"opel":[0,277,0.4885],"phala":[0,162,0.4419],"rubbie":[0,682,0.5668],"sella":[0,26,0.0],"shella":[0,1129,0.6105],"tosca":[0,372,0.5141],"alleene":[0,93,0.0],"alonia":[0,149,0.4346],"argatha":[0,5,0.0],"athene":[0,135,0.4261],"audria":[0,1320,0.6241],"avanell":[0,654,0.5631],"belia":[0,2058,0.6627],"blasa":[0,187,0.4544],"castella":[0,188,0.4548],"cheryl":[978,439502,0.9978],"chiyoko":[0,544,0.5471],"clarene":[0,714,0.5707],"dominica":[0,2332,0.6735],"dorene":[0,7925,0.7798],"dotty":[0,1686,0.6454],"earie":[0,45,0.0],"eilene":[0,2077,0.6635],"eleonor":[0,725,0.5721],"elezabeth":[0,21,0.0],"elizabth":[0,123,0.418],"elzena":[0,149,0.4346],"enes":[265,394,0.3371],"erica":[1024,231461,0.9956],"etheleen":[0,584,0.5533],"eulamae":[0,121,0.4166],"everlene":[0,313,0.4991],"evora":[0,312,0.4988],"flordia":[0,353,0.5096],"gaile":[5,898,0.5879],"gaye":[0,5747,0.7519],"giovannina":[0,76,0.0],"glinnie":[0,20,0.0],"hatsue":[0,203,0.4615],"helaine":[0,1794,0.6508],"hylda":[0,49,0.0],"ilona":[0,3293,0.7035],"jacinta":[0,3514,0.7092],"jemmie":[110,97,0.2461],"jency":[10,234,0.4579],"jenney":[0,509,0.5413],"jestine":[0,1015,0.6013],"josphine":[0,244,0.4775],"laretta":[0,655,0.5632],"lavene":[0,135,0.4261],"leafa":[0,16,0.0],"lucil":[0,47,0.0],"ludell":[0,247,0.4785],"lueller":[0,10,0.0],"lulamae":[0,162,0.4419],"marya":[0,2195,0.6683],"marybeth":[0,10241,0.8021],"merrie":[0,2632,0.6841],"modell":[9,187,0.4374],"monique":[377,78735,0.975],"nara":[17,980,0.5895],"oretta":[0,221,0.4689],"phyliss":[0,2406,0.6763],"quillie":[47,36,0.0],"ramoncita":[0,11,0.0],"rebia":[0,43,0.0],"ronie":[253,220,0.2861],"rosielee":[0,115,0.4121],"selda":[0,86,0.0],"sherry":[976,229913,0.9958],"shigeko":[0,325,0.5024],"simonne":[0,876,0.5885],"solveig":[0,1040,0.6034],"stephana":[0,239,0.4757],"sylvie":[0,7342,0.7732],"thais":[0,2199,0.6684],"thomasine":[0,2234,0.6698],"trellis":[103,344,0.4079],"tsuruko":[0,185,0.4534],"uva":[0,176,0.4491],"velvie":[0,225,0.4704],"veronia":[0,285,0.491],"randal":[29174,132,0.8894],"vidal":[4198,10,0.7231],"colman":[1037,0,0.6032],"sal":[3650,0,0.7125],"nunzio":[1832,0,0.6526],"saverio":[1851,0,0.6535],"zigmund":[798,0,0.5804],"armistead":[62,0,0.0],"chet":[6116,0,0.7573],"dario":[11606,0,0.8129],"eligio":[1535,0,0.6372],"elmon":[591,0,0.5543],"eulis":[597,0,0.5552],"forney":[127,0,0.4208],"hersel":[197,0,0.4589],"jacinto":[2914,0,0.6929],"leno":[651,6,0.5584],"other":[190,0,0.4558],"aldrich":[608,0,0.5568],"alejo":[882,0,0.5891],"alvey":[214,0,0.4661],"amadeo":[1874,0,0.6546],"amedeo":[667,0,0.5648],"apolonio":[1470,0,0.6335],"arlen":[7237,786,0.7044],"arnulfo":[6287,0,0.7597],"arvo":[317,0,0.5002],"boleslaw":[277,0,0.4885],"brian":[1172762,4563,0.9961],"camilo":[8552,0,0.7864],"cecilio":[2402,0,0.6761],"claudio":[5444,27,0.7439],"clayborn":[736,0,0.5734],"cosme":[1361,0,0.6268],"del":[4289,672,0.639],"derrell":[5855,16,0.7517],"donal":[3707,5,0.713],"donley":[564,0,0.5503],"eulas":[517,0,0.5427],"evester":[15,0,0.0],"fidencio":[2226,0,0.6695],"fines":[81,0,0.0],"gable":[786,6,0.5754],"gerson":[4214,0,0.7249],"hisao":[147,0,0.4335],"huley":[27,0,0.0],"jerald":[26166,102,0.8805],"lamon":[1458,0,0.6328],"lavere":[340,94,0.4132],"lowery":[379,0,0.5157],"lucus":[1789,0,0.6505],"mancel":[247,0,0.4785],"mann":[132,0,0.4241],"morley":[518,48,0.5039],"pietro":[2380,0,0.6753],"reymundo":[4281,0,0.7263],"selby":[683,293,0.4184],"thurmond":[1002,0,0.6002],"tito":[3350,0,0.705],"whitman":[868,0,0.5877],"zygmund":[168,0,0.4451],"ellouise":[0,1010,0.6009],"doratha":[0,93,0.0],"halley":[126,4069,0.7028],"almetta":[0,372,0.5141],"geneveive":[0,250,0.4796],"lovetta":[0,1003,0.6003],"pankie":[0,45,0.0],"carlena":[0,1418,0.6303],"deena":[5,13639,0.8267],"gean":[559,670,0.3369],"jenetta":[0,652,0.5628],"lavilla":[0,120,0.4158],"leneve":[0,7,0.0],"loveta":[0,295,0.494],"maryanne":[0,13847,0.8283],"merline":[0,1079,0.6066],"oretha":[0,1158,0.6127],"ricarda":[0,738,0.5736],"ruberta":[0,82,0.0],"suddie":[0,49,0.0],"topsy":[0,17,0.0],"twylah":[0,134,0.4254],"alveretta":[0,30,0.0],"arnell":[1282,798,0.409],"blanca":[126,25415,0.8771],"blossie":[0,191,0.4562],"carlean":[0,608,0.5568],"carmelina":[0,1471,0.6335],"conchetta":[0,626,0.5593],"deloras":[0,908,0.5916],"delva":[0,265,0.4846],"electra":[0,1134,0.6109],"elvy":[57,110,0.2928],"estoria":[0,85,0.0],"ethelda":[0,396,0.5195],"fumiko":[0,721,0.5716],"geneieve":[0,292,0.4931],"geraldyne":[0,486,0.5373],"irja":[0,156,0.4386],"loretha":[0,1792,0.6507],"louellen":[0,488,0.5377],"luevina":[0,39,0.0],"malta":[0,55,0.0],"ninfa":[0,2459,0.6782],"racheal":[0,10514,0.8044],"renetta":[0,1573,0.6393],"ruperta":[0,50,0.0],"sarita":[0,5027,0.7403],"stephany":[5,15111,0.8356],"susann":[0,3091,0.698],"valarie":[0,18666,0.8542],"velvia":[0,165,0.4435],"voncile":[0,1445,0.632],"wanetta":[0,1114,0.6094],"wilberta":[0,451,0.5308],"zylphia":[0,29,0.0],"adria":[7,6451,0.7612],"adrianna":[23,47970,0.9358],"aino":[0,87,0.0],"aleane":[0,92,0.0],"allien":[0,73,0.0],"almeada":[0,11,0.0],"alyene":[0,185,0.4534],"amna":[0,1656,0.6438],"annella":[0,512,0.5419],"antoniette":[0,796,0.5802],"arbell":[0,61,0.0],"armenta":[0,197,0.4589],"asalee":[0,124,0.4187],"audrea":[0,2111,0.6649],"autumn":[330,143134,0.9977],"brunette":[0,138,0.428],"bunnie":[62,800,0.5449],"chelsea":[451,162562,0.9972],"cherie":[26,29957,0.8946],"christen":[2175,11511,0.6958],"christobel":[0,37,0.0],"clatie":[0,74,0.0],"claudina":[0,529,0.5447],"cleavie":[0,16,0.0],"cleota":[0,312,0.4988],"clister":[0,10,0.0],"desiree":[198,83409,0.9821],"donella":[0,1818,0.6519],"dorothie":[0,520,0.5432],"enora":[0,165,0.4435],"fairie":[0,55,0.0],"fayne":[54,104,0.2894],"fernande":[0,521,0.5434],"fonda":[0,4112,0.7228],"fritzie":[0,69,0.0],"hadassah":[0,8771,0.7886],"hellon":[0,417,0.524],"idabell":[0,148,0.4341],"idellar":[0,30,0.0],"jenett":[0,46,0.0],"jennell":[0,1301,0.6229],"jewelle":[0,300,0.4954],"kathy":[739,334084,0.9978],"lauda":[0,5,0.0],"liddy":[0,84,0.0],"lorrine":[0,938,0.5944],"lua":[0,998,0.5998],"madeliene":[0,596,0.555],"maragret":[0,218,0.4677],"marcile":[0,538,0.5462],"marlys":[5,8958,0.79],"marvella":[0,1526,0.6367],"marylyn":[0,3329,0.7045],"maryrose":[0,2300,0.6723],"maydelle":[0,49,0.0],"mitzie":[0,1671,0.6446],"monette":[0,1335,0.6251],"montana":[3923,8572,0.5621],"morene":[0,367,0.5129],"morine":[0,341,0.5066],"nadie":[0,63,0.0],"nathalee":[0,412,0.523],"necia":[0,675,0.5659],"orvetta":[0,159,0.4403],"ovell":[16,34,0.0],"panzie":[0,23,0.0],"peaches":[0,754,0.5755],"philippa":[0,1753,0.6488],"rhonda":[589,208050,0.9972],"riva":[0,1577,0.6396],"rosamonde":[0,5,0.0],"roselie":[0,838,0.5846],"rosezella":[0,362,0.5117],"roye":[162,43,0.3654],"rozetta":[0,574,0.5518],"rubby":[0,365,0.5125],"rubina":[0,632,0.5601],"rudell":[394,378,0.2947],"ruther":[6,601,0.5511],"santana":[7494,5849,0.4634],"sherley":[264,1238,0.5237],"tecora":[0,199,0.4598],"tempy":[0,30,0.0],"valene":[0,901,0.5909],"valeta":[0,661,0.564],"vandella":[0,103,0.4026],"vanetta":[0,1224,0.6176],"voila":[0,16,0.0],"willmetta":[0,16,0.0],"wyoma":[0,460,0.5326],"yolan":[0,10,0.0],"zonia":[0,499,0.5396],"arlin":[4026,806,0.6139],"cain":[7441,0,0.7743],"jorge":[138386,690,0.995],"merril":[858,134,0.5183],"salvator":[920,0,0.5928],"ygnacio":[650,0,0.5626],"bilbo":[132,0,0.4241],"jacobo":[3408,0,0.7065],"marino":[2213,0,0.669],"odies":[198,0,0.4593],"philander":[297,0,0.4946],"stefan":[20972,42,0.8628],"talbert":[826,0,0.5834],"vasco":[508,0,0.5412],"broward":[40,0,0.0],"celso":[2327,0,0.6734],"clements":[281,0,0.4897],"cosmo":[2869,6,0.6903],"fortunato":[905,0,0.5913],"goldman":[104,0,0.4034],"harlon":[1844,0,0.6532],"holsey":[34,0,0.0],"hudie":[46,0,0.0],"jody":[31520,55829,0.6316],"ollen":[302,0,0.496],"ovide":[140,0,0.4292],"printes":[29,0,0.0],"remigio":[800,0,0.5806],"rivers":[1843,734,0.4879],"rod":[8744,0,0.7883],"sabino":[1877,0,0.6547],"shigeru":[591,0,0.5543],"thelmon":[27,0,0.0],"tyrus":[4872,0,0.7375],"upton":[168,0,0.4451],"zenon":[1261,0,0.6201],"amerigo":[359,0,0.511],"aniello":[582,0,0.553],"bennet":[1994,73,0.6397],"biagio":[1054,0,0.6046],"bobie":[377,420,0.3058],"brack":[405,0,0.5215],"bronislaus":[343,0,0.5071],"capus":[5,0,0.0],"choice":[258,27,0.4445],"chon":[266,0,0.485],"clemons":[72,0,0.0],"curlee":[375,43,0.4703],"daily":[73,252,0.3895],"delwin":[1829,0,0.6524],"desiderio":[635,0,0.5606],"drexel":[1393,40,0.6136],"earvin":[1198,0,0.6157],"erasmo":[3918,0,0.7186],"fermin":[4804,0,0.7363],"filmore":[268,0,0.4856],"hideo":[805,0,0.5812],"hillman":[344,0,0.5073],"hulon":[1125,0,0.6102],"irvan":[264,0,0.4843],"johan":[14133,135,0.823],"kee":[1406,10,0.6258],"kiyoshi":[1217,15,0.6106],"laurin":[481,1597,0.5099],"leonel":[26116,5,0.8832],"manual":[1021,0,0.6018],"marco":[75703,339,0.9719],"marlow":[2133,1704,0.3985],"maron":[377,33,0.4805],"nash":[21076,135,0.8598],"paolo":[3663,0,0.7128],"ralston":[924,0,0.5931],"renard":[2690,0,0.686],"romey":[322,218,0.3259],"tee":[407,51,0.4729],"thelmer":[142,47,0.3421],"ulis":[256,0,0.4816],"urbano":[764,0,0.5766],"valentino":[11070,0,0.8088],"veron":[478,5,0.5312],"wally":[4938,147,0.7198],"welford":[487,0,0.5375],"yoshio":[1175,0,0.614],"thurley":[0,70,0.0],"italia":[0,2938,0.6936],"lourine":[0,320,0.501],"florette":[0,358,0.5108],"hatsuko":[0,204,0.4619],"nicoletta":[0,1996,0.66],"smithie":[0,54,0.0],"taimi":[0,172,0.4471],"eara":[0,83,0.0],"ersel":[264,88,0.382],"evalene":[0,414,0.5234],"janina":[0,2918,0.693],"lahoma":[0,1312,0.6236],"leara":[0,250,0.4796],"vincenzina":[0,107,0.4059],"yetive":[0,51,0.0],"adelyne":[0,1167,0.6134],"alvine":[5,117,0.4002],"anette":[0,2716,0.6868],"arlyne":[0,1469,0.6334],"bobbye":[97,3172,0.682],"brigida":[0,660,0.5639],"cloteal":[0,471,0.5346],"correne":[0,446,0.5299],"elen":[0,401,0.5206],"eulogia":[0,82,0.0],"faustine":[0,362,0.5117],"gerturde":[0,127,0.4208],"janett":[0,3535,0.7097],"lallah":[0,14,0.0],"lisbeth":[0,5910,0.7543],"lyna":[0,1031,0.6027],"maedell":[0,260,0.483],"michalina":[0,199,0.4598],"modest":[0,65,0.0],"myldred":[0,143,0.4311],"neomi":[0,1832,0.6526],"perina":[0,96,0.0],"raffaella":[0,464,0.5333],"rubena":[0,182,0.452],"san":[621,1868,0.5097],"veora":[0,131,0.4235],"vineta":[0,225,0.4704],"willo":[0,628,0.5596],"wyona":[0,782,0.5786],"agueda":[0,245,0.4778],"alzora":[0,78,0.0],"amparo":[17,3308,0.7008],"arnita":[0,2047,0.6622],"blondina":[0,70,0.0],"charleen":[0,7383,0.7736],"cozette":[0,1526,0.6367],"dianne":[186,95265,0.994],"drucie":[0,25,0.0],"elitha":[0,22,0.0],"eudell":[132,241,0.3323],"euline":[0,153,0.4369],"euva":[0,107,0.4059],"evalyne":[0,233,0.4735],"fola":[0,13,0.0],"fumi":[0,154,0.4375],"grazia":[0,194,0.4576],"lethea":[0,54,0.0],"margarie":[0,233,0.4735],"margarit":[0,86,0.0],"odesser":[0,169,0.4456],"oleda":[0,276,0.4882],"palmira":[0,852,0.5861],"patsey":[5,507,0.5366],"pola":[0,672,0.5655],"precilla":[0,671,0.5653],"rayma":[0,1046,0.6039],"rener":[0,17,0.0],"sebastiana":[0,332,0.5042],"sissie":[0,27,0.0],"stefanie":[43,37130,0.913],"thalma":[0,11,0.0],"verneal":[5,171,0.4363],"vivan":[434,367,0.3147],"walda":[0,330,0.5037],"zoila":[0,1883,0.655],"adia":[0,2945,0.6938],"alberdia":[0,12,0.0],"albirdia":[0,16,0.0],"aldina":[0,261,0.4833],"annielee":[0,71,0.0],"arlevia":[0,15,0.0],"arnettie":[0,10,0.0],"artemisa":[0,233,0.4735],"asako":[0,225,0.4704],"audre":[40,870,0.5658],"avalee":[0,1576,0.6395],"candie":[0,2985,0.695],"captola":[0,217,0.4673],"cecily":[0,8535,0.7862],"christell":[0,470,0.5344],"clarisa":[0,3171,0.7002],"clarsie":[0,31,0.0],"cloma":[0,194,0.4576],"clorie":[0,10,0.0],"conchita":[0,1471,0.6335],"corabel":[0,27,0.0],"dealva":[0,87,0.0],"deva":[22,964,0.5854],"earleen":[0,1481,0.6341],"eileene":[0,548,0.5478],"eleaner":[0,154,0.4375],"elisebeth":[0,47,0.0],"elnoria":[0,199,0.4598],"esmeralda":[180,50743,0.9381],"ethelyne":[0,292,0.4931],"eveleen":[0,371,0.5139],"evonne":[0,5047,0.7406],"flore":[0,58,0.0],"frenchie":[73,292,0.41],"gaynel":[0,214,0.4661],"genette":[0,606,0.5565],"gerdie":[0,16,0.0],"gervaise":[0,54,0.0],"glenys":[0,570,0.5512],"goldy":[0,1571,0.6392],"hannie":[0,87,0.0],"ivis":[114,312,0.3852],"lamoine":[323,83,0.4151],"lavaun":[0,383,0.5166],"lavella":[0,417,0.524],"leanor":[0,309,0.498],"lenner":[0,16,0.0],"libera":[0,48,0.0],"lilliebell":[0,15,0.0],"linea":[0,165,0.4435],"linnell":[59,86,0.2564],"lorana":[0,67,0.0],"lounette":[0,91,0.0],"luana":[0,4783,0.7359],"lurlean":[0,308,0.4977],"madalena":[0,810,0.5817],"madelyne":[0,3421,0.7068],"margareth":[0,291,0.4928],"margy":[0,1525,0.6367],"mariane":[0,738,0.5736],"mayre":[0,117,0.4136],"melster":[0,10,0.0],"michela":[0,2208,0.6688],"mirian":[0,3378,0.7057],"mitsuko":[0,565,0.5504],"nadia":[62,46016,0.9314],"nilda":[0,3244,0.7022],"norva":[0,365,0.5125],"orianna":[0,1323,0.6243],"orine":[0,167,0.4445],"orline":[0,58,0.0],"ozite":[0,10,0.0],"palmina":[0,273,0.4872],"patrica":[10,9146,0.7915],"rachelle":[37,33882,0.9051],"ramah":[18,260,0.4572],"ramie":[257,690,0.4337],"reecie":[5,60,0.0],"sanjuana":[0,2283,0.6717],"savana":[0,5414,0.7467],"shirlie":[0,1288,0.622],"shirly":[27,1042,0.5905],"tempa":[0,51,0.0],"theoda":[10,20,0.0],"tonita":[0,1102,0.6084],"toshiko":[0,799,0.5805],"vandora":[0,82,0.0],"verlee":[0,573,0.5516],"verniece":[0,294,0.4937],"vertis":[587,333,0.3782],"wladyslawa":[0,105,0.4042],"colie":[567,101,0.4795],"hymen":[285,0,0.491],"nello":[937,18,0.5848],"stanislaw":[480,0,0.5362],"atlee":[1365,681,0.4418],"casmer":[255,0,0.4813],"alfonza":[1714,0,0.6468],"blease":[201,0,0.4606],"garnie":[209,38,0.4049],"gustavo":[39904,104,0.918],"pius":[466,0,0.5337],"vardaman":[13,0,0.0],"wilborn":[396,0,0.5195],"burris":[162,0,0.4419],"edouard":[621,0,0.5586],"edwardo":[6756,0,0.7659],"elson":[1313,0,0.6237],"ettore":[414,0,0.5234],"ignazio":[594,0,0.5548],"ival":[297,127,0.3681],"morrison":[1817,128,0.6145],"normand":[5831,0,0.7531],"sulo":[220,0,0.4685],"alphonsa":[260,0,0.483],"atwood":[364,0,0.5122],"bernardino":[1649,0,0.6434],"birger":[34,0,0.0],"burtis":[480,0,0.5362],"cleatis":[207,21,0.4282],"cloyce":[877,121,0.5271],"guiseppe":[575,0,0.5519],"hamlet":[245,0,0.4778],"hiawatha":[925,303,0.4654],"kazuo":[757,0,0.5758],"marcial":[1993,0,0.6599],"nath":[36,0,0.0],"octavius":[3614,15,0.709],"raynor":[548,0,0.5478],"rito":[1463,0,0.633],"sven":[2484,0,0.679],"takeo":[763,0,0.5765],"theodis":[2244,0,0.6702],"tiburcio":[302,0,0.496],"vaughan":[1610,22,0.6339],"wallis":[625,565,0.3231],"welcome":[147,23,0.3857],"weyman":[562,0,0.5499],"wladyslaw":[119,0,0.4151],"achille":[393,0,0.5189],"adolphe":[295,0,0.494],"almo":[58,15,0.0],"astor":[415,10,0.5133],"berman":[249,0,0.4792],"bernerd":[527,0,0.5444],"boleslaus":[255,0,0.4813],"boris":[4584,0,0.7322],"carney":[491,6,0.5328],"chapman":[977,0,0.598],"clarion":[113,10,0.384],"clayborne":[275,0,0.4879],"constant":[360,26,0.4825],"cornelio":[1587,0,0.6401],"cosimo":[1000,0,0.6],"darl":[1819,63,0.633],"delmon":[437,0,0.5281],"eldo":[423,0,0.5253],"elis":[275,304,0.2901],"elston":[1114,5,0.607],"erik":[156900,666,0.9958],"evaristo":[1880,0,0.6548],"feliciano":[2285,0,0.6718],"fiore":[465,35,0.502],"gaspar":[2171,0,0.6673],"gaspare":[445,0,0.5297],"gomer":[399,0,0.5202],"goodwin":[256,0,0.4816],"hanford":[338,0,0.5058],"heman":[80,0,0.0],"herve":[560,0,0.5496],"hogan":[1518,0,0.6363],"holley":[204,4445,0.7013],"holman":[298,0,0.4948],"hulbert":[128,0,0.4214],"italo":[749,0,0.5749],"jerrold":[8467,0,0.7855],"karol":[1437,9648,0.7041],"keller":[3623,454,0.6417],"lando":[653,0,0.563],"langdon":[1156,10,0.6081],"lavette":[5,1185,0.6125],"lazaro":[7000,0,0.769],"lennart":[426,0,0.5259],"marinus":[266,0,0.485],"marshel":[521,12,0.5331],"matteo":[31010,16,0.8979],"medford":[665,0,0.5646],"merrell":[1164,155,0.5507],"michal":[3766,3996,0.4005],"nesbitt":[33,0,0.0],"norvin":[953,0,0.5958],"renato":[3249,6,0.7012],"rodgers":[541,0,0.5466],"rodolphe":[146,0,0.4329],"romain":[534,5,0.5412],"rosalio":[2047,5,0.6608],"sears":[68,0,0.0],"selden":[373,0,0.5143],"sig":[50,0,0.0],"silverio":[1794,0,0.6508],"stoddard":[24,0,0.0],"tobbie":[22,17,0.0],"ulmer":[88,0,0.0],"umberto":[989,0,0.599],"valmore":[197,0,0.4589],"veto":[205,0,0.4624],"waylon":[49608,273,0.9344],"wendel":[2142,0,0.6662],"wilho":[181,0,0.4515],"woodard":[283,0,0.4904],"woodford":[570,0,0.5512],"elynor":[0,491,0.5382],"glennis":[721,2056,0.5099],"mariann":[0,7183,0.7713],"demetra":[12,4197,0.7228],"derna":[0,31,0.0],"leida":[0,497,0.5393],"olamae":[0,182,0.452],"romelia":[0,1617,0.6417],"unice":[30,300,0.4579],"dorethea":[0,1035,0.603],"elfriede":[0,291,0.4928],"undine":[0,95,0.0],"aiko":[87,1720,0.62],"ardyce":[0,1263,0.6203],"bernadetta":[0,199,0.4598],"carmelia":[0,715,0.5709],"deola":[0,392,0.5187],"dorothey":[0,1147,0.6119],"ednamae":[0,336,0.5053],"guila":[0,113,0.4106],"honey":[0,4431,0.7293],"inice":[0,144,0.4317],"jadwiga":[0,85,0.0],"kiyoko":[0,916,0.5924],"laverta":[0,422,0.5251],"lavora":[0,283,0.4904],"lucendia":[0,113,0.4106],"mardelle":[0,953,0.5958],"mazel":[0,391,0.5184],"myrene":[0,188,0.4548],"omelia":[0,232,0.4731],"stelle":[0,49,0.0],"verline":[0,1088,0.6073],"alvilda":[0,123,0.418],"alzenia":[0,42,0.0],"baby":[6325,6078,0.4175],"basilia":[0,272,0.4869],"christa":[27,32824,0.9026],"consepcion":[6,268,0.4769],"cozetta":[0,557,0.5492],"delois":[122,8500,0.776],"dionicia":[0,320,0.501],"donnis":[466,1046,0.4399],"edell":[45,249,0.4181],"edwena":[0,301,0.4957],"eloyse":[0,92,0.0],"eulla":[0,113,0.4106],"guinevere":[0,4294,0.7266],"helvi":[0,172,0.4471],"joycie":[0,492,0.5384],"julianne":[0,30521,0.8969],"kimiyo":[0,96,0.0],"laurinda":[0,1343,0.6256],"liberty":[154,15050,0.8279],"madoline":[0,61,0.0],"magdeline":[0,624,0.559],"marvine":[8,542,0.5401],"mignonne":[0,110,0.4083],"nadeen":[0,1491,0.6347],"nelsie":[0,120,0.4158],"ofilia":[0,472,0.5348],"oralia":[5,5745,0.7513],"orlene":[0,402,0.5208],"ovida":[0,182,0.452],"salvatrice":[0,286,0.4913],"veleria":[0,221,0.4689],"zofia":[0,1927,0.657],"agnita":[0,30,0.0],"aldene":[5,347,0.5021],"angelia":[22,22438,0.8694],"ardeth":[0,1033,0.6028],"ardyth":[0,802,0.5808],"arretta":[0,240,0.476],"artice":[152,64,0.3286],"beaula":[0,16,0.0],"bennetta":[0,239,0.4757],"bertille":[0,31,0.0],"bertine":[0,110,0.4083],"beverley":[407,13050,0.8008],"cartha":[0,66,0.0],"charlean":[0,1289,0.6221],"coleen":[0,11998,0.8158],"costella":[0,428,0.5263],"davida":[5,4026,0.7202],"deolinda":[0,243,0.4771],"doras":[0,51,0.0],"dorothia":[0,132,0.4241],"earla":[0,742,0.5741],"eldra":[47,26,0.0],"ermelinda":[0,1374,0.6276],"etoy":[0,132,0.4241],"eulene":[0,593,0.5546],"fayrene":[0,584,0.5533],"fran":[368,4965,0.694],"fredna":[0,488,0.5377],"gustina":[0,6,0.0],"herta":[0,87,0.0],"iline":[0,190,0.4558],"iras":[0,6,0.0],"janna":[0,16012,0.8409],"josephina":[0,3372,0.7056],"junita":[0,1314,0.6237],"karolyn":[0,5939,0.7547],"lavergne":[17,526,0.5298],"leary":[194,16,0.4291],"leavy":[169,6,0.4332],"lili":[0,3800,0.716],"margaree":[0,616,0.5579],"margurete":[0,60,0.0],"maribelle":[0,1428,0.6309],"marilee":[0,7420,0.7741],"maris":[232,2623,0.635],"marla":[38,38690,0.9167],"michiko":[0,1002,0.6002],"mosella":[0,118,0.4144],"myna":[0,301,0.4957],"myriam":[0,3131,0.6991],"nicoline":[0,28,0.0],"pietrina":[0,81,0.0],"prudy":[0,215,0.4665],"rannie":[205,45,0.3933],"reeva":[0,783,0.5788],"roseanne":[0,7280,0.7724],"rovena":[0,268,0.4856],"rubylee":[0,123,0.418],"sari":[40,3360,0.698],"senona":[0,6,0.0],"severina":[0,104,0.4034],"soila":[0,826,0.5834],"sumiko":[0,618,0.5582],"suzette":[5,16934,0.8455],"teofila":[0,80,0.0],"toye":[21,388,0.4955],"valora":[0,427,0.5261],"verlyn":[1432,488,0.4898],"vermelle":[0,234,0.4738],"vinetta":[0,329,0.5034],"wavel":[0,41,0.0],"willamae":[0,406,0.5217],"wilva":[0,40,0.0],"alouise":[0,21,0.0],"alphild":[0,17,0.0],"althia":[0,215,0.4665],"alzie":[0,31,0.0],"amandy":[0,68,0.0],"angelus":[365,25,0.485],"annabella":[0,14837,0.8343],"annemarie":[0,12325,0.8182],"arelia":[0,301,0.4957],"averill":[228,110,0.3412],"azalene":[0,10,0.0],"azie":[6,87,0.0],"bernetha":[0,376,0.515],"bertile":[0,5,0.0],"bobbe":[0,567,0.5507],"bonnell":[0,240,0.476],"boots":[28,125,0.357],"brigetta":[0,162,0.4419],"bronnie":[8,65,0.0],"bunice":[0,48,0.0],"carolin":[0,1255,0.6197],"catheryne":[0,226,0.4708],"ceolia":[0,18,0.0],"christel":[0,3711,0.7139],"christinia":[0,1283,0.6216],"chrystine":[0,356,0.5103],"clota":[0,15,0.0],"corella":[0,59,0.0],"corona":[0,98,0.0],"cosette":[0,2964,0.6944],"cuca":[0,234,0.4738],"cyrene":[0,217,0.4673],"dayle":[1139,2181,0.4626],"delorus":[0,75,0.0],"derotha":[0,221,0.4689],"devona":[0,2705,0.6864],"dian":[198,5368,0.7225],"donelda":[0,549,0.5479],"dorothye":[0,317,0.5002],"dorthe":[0,36,0.0],"earma":[0,601,0.5558],"eddis":[16,117,0.3737],"eddythe":[0,5,0.0],"eduarda":[0,178,0.4501],"eila":[0,1791,0.6506],"elanore":[0,187,0.4544],"elayne":[0,4074,0.722],"ellaree":[0,200,0.4602],"elloise":[0,589,0.554],"eltis":[0,14,0.0],"elynore":[0,144,0.4317],"emely":[16,23272,0.8728],"erbie":[188,10,0.4361],"ernstine":[0,15,0.0],"esper":[40,16,0.0],"eulalee":[0,27,0.0],"evelia":[0,1556,0.6384],"ezola":[0,59,0.0],"floetta":[0,65,0.0],"florita":[0,492,0.5384],"francelia":[0,329,0.5034],"francena":[0,623,0.5589],"frankye":[6,266,0.4762],"fransisca":[0,406,0.5217],"froney":[0,5,0.0],"genell":[0,1437,0.6315],"gilberte":[0,196,0.4585],"hana":[11,12568,0.8192],"idalene":[0,42,0.0],"ilamae":[0,132,0.4241],"ilia":[200,787,0.4775],"iula":[0,58,0.0],"janelle":[86,56537,0.9492],"jeanet":[0,209,0.464],"julienne":[32,2678,0.6785],"juniata":[0,27,0.0],"kathreen":[0,372,0.5141],"lanore":[0,289,0.4922],"lapriel":[0,10,0.0],"laveda":[0,1091,0.6076],"lector":[0,10,0.0],"leetta":[0,519,0.543],"levenia":[0,189,0.4553],"libia":[0,73,0.0],"lilli":[0,3344,0.7049],"lotty":[0,5,0.0],"loys":[193,139,0.2931],"luba":[0,578,0.5524],"lucine":[0,353,0.5096],"luida":[0,5,0.0],"lulabelle":[0,152,0.4364],"lunda":[0,16,0.0],"lupita":[0,5720,0.7515],"luretha":[0,502,0.5401],"madalyne":[0,707,0.5699],"magalene":[0,511,0.5417],"malda":[0,10,0.0],"marabelle":[0,264,0.4843],"marcell":[4803,1126,0.6113],"marg":[0,107,0.4059],"margene":[5,1687,0.6438],"margueriete":[0,39,0.0],"marrietta":[0,241,0.4764],"marthena":[0,96,0.0],"marvell":[1147,323,0.4943],"melvine":[25,270,0.4521],"merita":[0,1121,0.6099],"merriam":[0,346,0.5078],"merriel":[13,91,0.353],"michalena":[0,21,0.0],"miyako":[0,178,0.4501],"modean":[0,311,0.4986],"murlene":[0,616,0.5579],"nancye":[0,1031,0.6027],"nodie":[0,17,0.0],"nota":[0,51,0.0],"novelle":[0,164,0.443],"novis":[15,139,0.3949],"oleita":[0,15,0.0],"oletta":[0,337,0.5055],"oreatha":[0,150,0.4352],"pandora":[0,3094,0.6981],"plina":[0,11,0.0],"rebel":[932,1438,0.4095],"reubena":[0,10,0.0],"rolena":[0,70,0.0],"roseline":[0,1378,0.6278],"rosezetta":[0,181,0.4515],"rozalia":[0,259,0.4827],"rozie":[0,78,0.0],"rumalda":[0,55,0.0],"ruthella":[0,262,0.4837],"solange":[0,1680,0.6451],"sondra":[0,27067,0.8865],"sophy":[0,501,0.54],"stephenie":[0,5771,0.7523],"tenner":[0,15,0.0],"tilly":[0,2395,0.6759],"toini":[0,84,0.0],"tomiko":[7,918,0.5887],"vaneta":[0,189,0.4553],"vaudie":[0,95,0.0],"verneta":[0,230,0.4723],"vicky":[440,53507,0.9387],"vincenta":[0,114,0.4114],"virgene":[0,496,0.5391],"volia":[0,5,0.0],"waldine":[0,208,0.4636],"weeda":[0,11,0.0],"welma":[0,189,0.4553],"willanna":[0,11,0.0],"wilmetta":[0,162,0.4419],"yaeko":[0,439,0.5285],"zipporah":[0,2549,0.6813],"woodroe":[784,0,0.5789],"bertil":[482,0,0.5366],"harvard":[604,0,0.5562],"walfred":[227,0,0.4712],"sherrill":[1915,6932,0.6185],"zygmunt":[386,0,0.5173],"daryl":[62940,4419,0.9023],"geno":[3678,0,0.7131],"thurmon":[1053,0,0.6045],"hersey":[331,0,0.504],"osmond":[457,0,0.532],"reinhardt":[287,0,0.4916],"ryland":[12781,790,0.7784],"bernis":[428,107,0.4365],"burnis":[842,90,0.5365],"devere":[705,0,0.5696],"gordan":[1026,0,0.6022],"laroy":[1317,0,0.6239],"masaru":[447,0,0.5301],"masato":[462,0,0.5329],"mitsuo":[521,0,0.5434],"quinto":[99,0,0.0],"quitman":[433,0,0.5273],"stanly":[966,0,0.597],"stillman":[276,0,0.4882],"theophil":[202,0,0.4611],"bernell":[1558,750,0.4541],"camillo":[913,0,0.5921],"deno":[704,0,0.5695],"emmette":[812,7,0.5777],"hiroshi":[1558,0,0.6385],"lelon":[437,0,0.5281],"libero":[97,0,0.0],"reeves":[920,72,0.5558],"rinaldo":[722,0,0.5717],"roald":[189,0,0.4553],"agapito":[1508,0,0.6357],"agostino":[618,0,0.5582],"brendan":[91612,325,0.9892],"cuthbert":[151,0,0.4358],"darnell":[28574,2387,0.8289],"debs":[15,0,0.0],"elven":[464,0,0.5333],"giacomo":[1847,0,0.6533],"huber":[353,0,0.5096],"kevin":[1182874,5333,0.9955],"ludger":[179,0,0.4506],"milfred":[496,0,0.5391],"othal":[174,5,0.438],"raynold":[597,0,0.5552],"reedy":[71,0,0.0],"rembert":[438,0,0.5283],"rolf":[3097,0,0.6982],"sebastiano":[989,0,0.599],"shepard":[3445,5,0.7065],"soren":[10271,641,0.7601],"tadashi":[665,0,0.5646],"thadeus":[1117,0,0.6096],"achilles":[3691,0,0.7134],"amelio":[558,0,0.5493],"americus":[142,480,0.4312],"arlan":[3377,0,0.7057],"aurther":[284,0,0.4907],"bufford":[507,0,0.541],"burlin":[400,0,0.5204],"delmont":[535,0,0.5457],"delno":[294,0,0.4937],"derwood":[1021,0,0.6018],"dewayne":[26435,107,0.8812],"duward":[305,0,0.4969],"eldor":[367,0,0.5129],"elio":[4349,0,0.7277],"gerold":[2965,0,0.6944],"glyn":[1383,92,0.5942],"joachim":[1175,0,0.614],"kenton":[11187,0,0.8097],"laurent":[1979,20,0.6536],"levern":[1901,382,0.5593],"lyall":[284,0,0.4907],"mervil":[126,0,0.4201],"merwyn":[786,10,0.5729],"milbert":[356,0,0.5103],"monico":[787,17,0.5688],"naaman":[854,0,0.5863],"noboru":[484,0,0.537],"parnell":[1422,57,0.6096],"philmore":[350,0,0.5088],"quintin":[15472,7,0.8376],"rawleigh":[215,0,0.4665],"raynard":[3060,0,0.6971],"rodman":[1331,0,0.6248],"saunders":[193,0,0.4571],"siegfried":[727,0,0.5723],"swen":[56,0,0.0],"toshio":[737,0,0.5735],"valentin":[11304,0,0.8106],"woodruff":[147,0,0.4335],"agnew":[35,0,0.0],"argus":[199,0,0.4598],"armster":[30,0,0.0],"artemus":[663,0,0.5643],"athel":[298,36,0.4503],"baron":[6924,0,0.7681],"benedetto":[867,0,0.5876],"bertus":[31,0,0.0],"branson":[8059,5,0.7808],"brenton":[15028,18,0.8345],"burdell":[321,56,0.4387],"cloyde":[148,0,0.4341],"delaney":[1201,44153,0.9067],"dino":[9173,0,0.7925],"donn":[6553,62,0.7569],"donnell":[14253,1026,0.7806],"dumas":[29,0,0.0],"dwayne":[76621,462,0.9715],"edlow":[7,0,0.0],"edwards":[418,0,0.5242],"eldrige":[132,0,0.4241],"elvan":[150,0,0.4352],"eual":[393,0,0.5189],"everard":[250,0,0.4796],"francois":[1799,5,0.6494],"garlin":[422,0,0.5251],"gildo":[177,0,0.4496],"johnney":[1122,0,0.61],"kalman":[1231,0,0.6181],"lawernce":[1050,0,0.6042],"leif":[9737,5,0.7973],"lenoard":[670,0,0.5652],"lorence":[679,6,0.5622],"lumir":[160,0,0.4408],"mcarthur":[2275,0,0.6714],"mendel":[2850,0,0.691],"minoru":[675,0,0.5659],"murlin":[321,0,0.5013],"noland":[1754,0,0.6488],"orazio":[310,0,0.4983],"oreste":[357,0,0.5105],"orvill":[224,0,0.47],"osby":[150,0,0.4352],"othmar":[188,0,0.4548],"pierson":[3399,95,0.6894],"raymundo":[9440,0,0.795],"rector":[101,0,0.4009],"reo":[823,27,0.5673],"ruble":[291,65,0.4171],"selig":[154,0,0.4375],"serafino":[272,0,0.4869],"shigeo":[427,0,0.5261],"sutton":[6330,10965,0.5374],"takeshi":[708,5,0.5666],"torrence":[3192,186,0.6669],"tullio":[150,0,0.4352],"velton":[603,0,0.5561],"vermon":[247,0,0.4785],"wilbern":[578,0,0.5524],"wilferd":[481,0,0.5364],"wilmont":[203,0,0.4615],"zigmond":[144,0,0.4317],"zoltan":[1018,0,0.6015],"andrews":[570,0,0.5512],"anselm":[295,0,0.494],"arsene":[62,0,0.0],"barclay":[954,24,0.5834],"berger":[54,0,0.0],"berwyn":[249,0,0.4792],"boniface":[167,0,0.4445],"bookert":[88,0,0.0],"brace":[121,0,0.4166],"burdett":[240,0,0.476],"burnard":[331,0,0.504],"burnham":[130,0,0.4228],"capers":[114,0,0.4114],"carles":[681,5,0.5631],"carsten":[2341,10,0.6714],"conrado":[2188,0,0.668],"constantino":[1468,0,0.6333],"damian":[106683,336,0.9969],"darold":[4195,0,0.7245],"deloss":[237,0,0.4749],"demetrius":[35899,1727,0.8731],"doran":[2646,55,0.6723],"earland":[86,0,0.0],"eldin":[698,0,0.5688],"elward":[306,0,0.4971],"elzia":[150,20,0.3936],"emerick":[707,0,0.5699],"ferdinando":[303,0,0.4963],"garnell":[406,99,0.4347],"garrison":[8415,5,0.7846],"gerhart":[201,0,0.4606],"granvil":[250,0,0.4796],"guinn":[168,0,0.4451],"haakon":[471,0,0.5346],"happy":[303,259,0.2965],"harrington":[330,0,0.5037],"harvel":[302,0,0.496],"hastings":[68,5,0.0],"herron":[112,0,0.4098],"hillis":[408,13,0.5086],"hilmar":[170,0,0.4461],"horice":[97,0,0.0],"huel":[331,0,0.504],"ian":[253707,807,0.9968],"isamu":[562,0,0.5499],"jerold":[7434,0,0.7742],"jeronimo":[2198,0,0.6684],"jeter":[1021,0,0.6018],"jospeh":[1518,0,0.6363],"kelvin":[51334,304,0.937],"kerman":[75,0,0.0],"langston":[7089,338,0.7389],"lansing":[512,0,0.5419],"lathan":[4237,0,0.7254],"lauri":[183,11056,0.797],"lealon":[201,0,0.4606],"leaman":[135,0,0.4261],"lelan":[914,0,0.5922],"lemoyne":[357,62,0.4468],"lewellyn":[306,33,0.4568],"liberato":[166,0,0.444],"lieutenant":[199,0,0.4598],"lucky":[3513,568,0.6216],"mc":[227,209,0.2748],"mordecai":[1580,0,0.6397],"morey":[483,0,0.5368],"mott":[29,0,0.0],"neill":[1834,0,0.6527],"neno":[73,0,0.0],"obediah":[220,0,0.4685],"orian":[710,86,0.5175],"pearce":[1225,43,0.5996],"phares":[219,0,0.4681],"ramirez":[65,0,0.0],"reinaldo":[3927,0,0.7188],"richards":[119,0,0.4151],"rolfe":[543,0,0.547],"rosaire":[327,10,0.4905],"sandford":[421,0,0.5249],"seymore":[259,0,0.4827],"silvestre":[2437,0,0.6774],"sotero":[786,0,0.5791],"stirling":[828,78,0.5405],"tadao":[295,0,0.494],"tate":[25530,1395,0.8401],"thayer":[1343,79,0.5955],"theodus":[178,0,0.4501],"thurl":[295,0,0.494],"timoteo":[1426,0,0.6308],"tsutomu":[352,0,0.5093],"udell":[489,134,0.4387],"ulys":[134,0,0.4254],"ulysess":[463,0,0.5331],"waclaw":[51,0,0.0],"waldon":[693,0,0.5681],"warder":[6,0,0.0],"wilmar":[590,16,0.5418],"yaro":[25,0,0.0],"zeak":[11,0,0.0],"able":[1096,0,0.608],"acel":[79,0,0.0],"alanson":[185,0,0.4534],"alban":[994,0,0.5995],"amor":[654,2131,0.5272],"anders":[7793,5,0.7779],"aniceto":[481,0,0.5364],"antonino":[2078,0,0.6635],"aram":[3219,55,0.6912],"ardean":[148,251,0.3272],"argo":[41,0,0.0],"argyle":[118,24,0.3577],"arlon":[1456,0,0.6326],"arlyn":[2165,2308,0.3767],"aster":[312,693,0.414],"aubert":[86,0,0.0],"bela":[485,788,0.3844],"benhard":[21,0,0.0],"benjeman":[5,0,0.0],"benno":[297,0,0.4946],"benoit":[372,0,0.5141],"berl":[1072,5,0.6036],"bertis":[455,19,0.5137],"birney":[72,0,0.0],"bonner":[290,0,0.4925],"bosie":[46,0,0.0],"brodie":[11174,492,0.7791],"brother":[16,0,0.0],"bruner":[10,0,0.0],"calloway":[596,115,0.4781],"carley":[410,16859,0.8273],"carlis":[1221,178,0.5491],"caroll":[776,1302,0.4157],"carrel":[395,11,0.5076],"carvel":[520,0,0.5432],"carver":[3042,86,0.6798],"channing":[7205,3891,0.5253],"claron":[168,0,0.4451],"claudy":[315,14,0.482],"cleaveland":[43,0,0.0],"cliffton":[1866,0,0.6542],"cohen":[21444,352,0.8537],"copeland":[1060,262,0.5005],"creel":[5,0,0.0],"crosby":[5714,577,0.6901],"dail":[459,145,0.4227],"daymon":[1704,0,0.6463],"delore":[31,10,0.0],"denson":[438,0,0.5283],"deverl":[15,0,0.0],"doil":[267,0,0.4853],"dominique":[23435,50730,0.6663],"doyal":[1149,0,0.6121],"dude":[45,0,0.0],"edman":[164,0,0.443],"egidio":[164,0,0.443],"elo":[109,0,0.4075],"emmert":[201,0,0.4606],"erskin":[464,0,0.5333],"ervil":[58,0,0.0],"estanislado":[275,0,0.4879],"eulie":[55,0,0.0],"eural":[273,0,0.4872],"evald":[49,0,0.0],"ewel":[68,0,0.0],"ezequiel":[19864,0,0.8596],"flavio":[3031,0,0.6963],"flavius":[76,0,0.0],"garl":[175,0,0.4486],"gaylon":[3478,218,0.6715],"gerome":[1307,0,0.6233],"geza":[260,0,0.483],"gillespie":[5,0,0.0],"gladwin":[40,0,0.0],"gleen":[667,0,0.5648],"glennon":[1244,0,0.619],"granger":[2043,6,0.6604],"greer":[704,2977,0.5768],"halvor":[108,0,0.4067],"haruo":[376,0,0.515],"havard":[149,0,0.4346],"haze":[1105,100,0.5651],"henley":[1478,6471,0.635],"heywood":[305,0,0.4969],"hillie":[16,0,0.0],"hoffman":[5,0,0.0],"howe":[28,0,0.0],"hub":[5,0,0.0],"hulan":[178,0,0.4501],"hume":[12,0,0.0],"hyland":[232,52,0.4008],"hymie":[113,0,0.4106],"ingolf":[17,0,0.0],"isiac":[195,0,0.458],"jacque":[2415,4888,0.5172],"jacy":[756,3402,0.5922],"janes":[358,0,0.5108],"jewett":[176,0,0.4491],"johann":[4784,650,0.6577],"jonathon":[65497,224,0.9603],"jonie":[44,1238,0.6002],"jonny":[3367,131,0.6822],"judah":[33489,812,0.8856],"jude":[51573,2930,0.8964],"junus":[41,0,0.0],"kasper":[1304,20,0.6149],"kemper":[1584,280,0.5558],"kendrick":[32988,380,0.8944],"kennedy":[7368,90712,0.9233],"kim":[34944,179781,0.8373],"ladislav":[82,0,0.0],"laurier":[353,0,0.5096],"lauris":[167,132,0.2765],"lauro":[2160,0,0.6669],"lebert":[82,0,0.0],"lenox":[1961,473,0.5457],"loyed":[204,0,0.4619],"ludvik":[11,0,0.0],"lundy":[325,30,0.4669],"luvern":[266,107,0.3668],"mancil":[115,0,0.4121],"marcello":[6342,10,0.7594],"marden":[53,0,0.0],"marlowe":[1626,4228,0.5442],"masaaki":[60,0,0.0],"masaichi":[159,0,0.4403],"masami":[288,10,0.4782],"mayer":[2462,59,0.6644],"melburn":[489,0,0.5379],"melvyn":[4360,10,0.7264],"meril":[130,20,0.3772],"merrit":[183,98,0.3189],"milledge":[264,0,0.4843],"napolean":[370,0,0.5136],"narcisse":[21,0,0.0],"nino":[2687,21,0.6812],"nolon":[159,0,0.4403],"obbie":[296,0,0.4943],"oden":[1499,0,0.6352],"ormand":[206,0,0.4628],"orvie":[136,0,0.4267],"othie":[29,0,0.0],"ozro":[66,0,0.0],"patterson":[534,20,0.5289],"pelham":[123,0,0.418],"pellegrino":[97,0,0.0],"pressley":[299,564,0.3838],"raeburn":[42,0,0.0],"randell":[10000,148,0.7896],"rankin":[340,0,0.5063],"robey":[139,0,0.4286],"rodell":[807,11,0.5747],"romulo":[834,0,0.5842],"romulus":[431,0,0.5269],"rozier":[16,0,0.0],"rudolphe":[23,0,0.0],"rumaldo":[782,0,0.5786],"sabas":[739,0,0.5737],"salem":[4284,5774,0.4595],"sander":[1547,79,0.611],"satoshi":[310,0,0.4983],"seab":[72,0,0.0],"sherwin":[3759,15,0.7125],"shoichi":[131,0,0.4235],"sigmond":[137,0,0.4273],"simuel":[360,0,0.5113],"sion":[756,85,0.5258],"snyder":[194,0,0.4576],"stevenson":[1554,0,0.6383],"tad":[6918,0,0.768],"tadeusz":[423,0,0.5253],"tevis":[494,64,0.4863],"thedford":[153,0,0.4369],"theopolis":[251,0,0.4799],"thermon":[723,0,0.5718],"tildon":[108,0,0.4067],"truett":[3902,40,0.7118],"truxton":[116,0,0.4129],"tyson":[47819,318,0.9303],"ulric":[506,0,0.5408],"valdemar":[959,0,0.5964],"vassar":[21,0,0.0],"virl":[196,27,0.4128],"wendelin":[190,369,0.3627],"windsor":[549,454,0.3286],"wolf":[1574,0,0.6394],"woods":[567,5,0.5467],"wynn":[2535,1366,0.4667],"yutaka":[273,0,0.4872],"wilba":[0,165,0.4435],"bonny":[261,6207,0.7314],"marthe":[0,298,0.4948],"eris":[512,2675,0.5881],"lorrayne":[0,827,0.5835],"rozena":[0,488,0.5377],"berdella":[0,185,0.4534],"elanor":[0,1802,0.6512],"ermel":[53,61,0.2201],"etoyle":[0,14,0.0],"francys":[0,129,0.4221],"geneviene":[0,71,0.0],"gweneth":[0,1303,0.623],"jacquelin":[0,9677,0.7971],"jerrie":[345,5251,0.7034],"melania":[0,3372,0.7056],"robbye":[0,445,0.5297],"ruthy":[0,916,0.5924],"socorro":[549,6903,0.7174],"vernona":[0,250,0.4796],"aloha":[0,862,0.5871],"alyda":[0,174,0.4481],"aniela":[0,1045,0.6038],"arlette":[0,7508,0.7751],"asuncion":[76,122,0.283],"bernette":[0,787,0.5792],"chiyeko":[0,138,0.428],"cova":[5,125,0.4065],"emanuella":[0,252,0.4803],"evamae":[0,213,0.4657],"evelin":[5,7339,0.7727],"hermoine":[0,50,0.0],"hesper":[0,108,0.4067],"hjordis":[0,53,0.0],"jenne":[0,569,0.551],"joaquina":[0,455,0.5316],"laraine":[0,3478,0.7083],"leonette":[0,387,0.5175],"marceil":[0,438,0.5283],"marcille":[0,646,0.562],"margia":[0,261,0.4833],"merdis":[0,220,0.4685],"mickie":[610,3568,0.6185],"myla":[0,20684,0.8631],"nance":[10,761,0.5699],"niva":[0,488,0.5377],"norberta":[0,256,0.4816],"orvella":[0,68,0.0],"osia":[0,30,0.0],"oveda":[0,205,0.4624],"reona":[0,163,0.4424],"rolande":[0,467,0.5339],"ronalda":[0,277,0.4885],"rosaura":[0,2542,0.681],"rozell":[586,350,0.372],"sadako":[0,349,0.5086],"teruko":[0,405,0.5215],"trini":[241,708,0.4442],"vanita":[0,2056,0.6626],"verlon":[1698,326,0.5547],"vincentia":[0,54,0.0],"vione":[0,28,0.0],"wynelle":[0,548,0.5478],"zenaida":[0,2929,0.6933],"alleta":[0,105,0.4042],"areatha":[0,382,0.5164],"arthella":[0,169,0.4456],"berdine":[0,433,0.5273],"berline":[0,318,0.5005],"bernadean":[0,521,0.5434],"buela":[0,16,0.0],"carnelia":[0,214,0.4661],"clois":[725,271,0.4365],"clotee":[0,203,0.4615],"dalia":[6,13949,0.8286],"datha":[0,153,0.4369],"donis":[156,565,0.4479],"donnabelle":[0,437,0.5281],"dorie":[36,1736,0.6365],"ellanor":[0,714,0.5707],"elvenia":[0,115,0.4121],"elvi":[16,127,0.3828],"elyse":[19,20959,0.8636],"emmalou":[0,269,0.486],"enice":[0,12,0.0],"ernestyne":[0,78,0.0],"estelene":[0,186,0.4539],"estine":[0,43,0.0],"eureka":[5,855,0.5835],"eustolia":[0,316,0.4999],"evergreen":[0,128,0.4214],"eythel":[0,28,0.0],"fermina":[0,212,0.4653],"floreen":[0,167,0.4445],"floreine":[0,287,0.4916],"gae":[0,652,0.5628],"geneive":[0,243,0.4771],"genowefa":[0,95,0.0],"georgana":[0,273,0.4872],"geraldene":[0,765,0.5767],"gladyes":[0,112,0.4098],"harryette":[0,221,0.4689],"izell":[687,17,0.5558],"janith":[0,631,0.56],"joetta":[0,3553,0.7101],"laree":[0,1434,0.6313],"lilith":[0,12404,0.8187],"lillan":[0,104,0.4034],"lottye":[0,23,0.0],"lousie":[0,142,0.4305],"lucella":[0,61,0.0],"maclovia":[0,107,0.4059],"madella":[0,36,0.0],"magaline":[0,439,0.5285],"marna":[0,2678,0.6856],"marveline":[0,134,0.4254],"mercides":[0,18,0.0],"michaeline":[0,936,0.5943],"netty":[0,149,0.4346],"nixola":[0,6,0.0],"oleane":[0,6,0.0],"peg":[0,841,0.585],"rosamae":[0,123,0.418],"sammye":[0,723,0.5718],"sueko":[0,271,0.4866],"twilla":[0,1205,0.6162],"vadna":[0,47,0.0],"vauda":[0,70,0.0],"verdis":[166,69,0.335],"vertice":[0,19,0.0],"walterine":[0,390,0.5182],"wincie":[0,42,0.0],"zoma":[0,17,0.0],"adlee":[0,1152,0.6123],"aldena":[0,288,0.4919],"aldia":[0,23,0.0],"allyce":[0,379,0.5157],"alvern":[55,21,0.0],"anamae":[0,78,0.0],"argentina":[0,442,0.5291],"arguster":[11,10,0.0],"arwilda":[0,113,0.4106],"athalee":[0,102,0.4017],"athlyn":[0,5,0.0],"audella":[0,5,0.0],"ave":[0,929,0.5936],"avy":[16,447,0.5147],"ayano":[0,126,0.4201],"ayleen":[0,6945,0.7683],"azena":[0,40,0.0],"benedicta":[0,116,0.4129],"berneita":[0,92,0.0],"bethene":[0,221,0.4689],"blondena":[0,57,0.0],"byrnece":[0,26,0.0],"catherin":[0,1121,0.6099],"cella":[0,157,0.4392],"charmaine":[20,15375,0.8364],"chieko":[0,293,0.4934],"christal":[0,9697,0.7973],"chrystelle":[0,39,0.0],"claryce":[0,215,0.4665],"claudene":[0,671,0.5653],"cledith":[207,240,0.2846],"cleoda":[0,16,0.0],"clesta":[0,26,0.0],"coleta":[0,203,0.4615],"commie":[39,17,0.0],"cula":[0,38,0.0],"deon":[15185,1670,0.7616],"dimples":[0,66,0.0],"doreather":[0,61,0.0],"dorena":[0,703,0.5694],"dorothymae":[0,77,0.0],"doyne":[449,63,0.4752],"elbertha":[0,17,0.0],"eldena":[0,145,0.4323],"elender":[0,46,0.0],"elizebath":[0,204,0.4619],"elona":[0,1125,0.6102],"eloyce":[0,218,0.4677],"emelyn":[0,2704,0.6864],"erlean":[0,68,0.0],"esme":[10,9875,0.7982],"estalene":[0,184,0.453],"estellene":[0,27,0.0],"flois":[0,72,0.0],"florabel":[0,68,0.0],"florabell":[0,55,0.0],"florean":[0,92,0.0],"fusako":[0,193,0.4571],"gartha":[0,16,0.0],"gelena":[0,121,0.4166],"generosa":[0,21,0.0],"genetta":[0,568,0.5509],"gennett":[0,83,0.0],"genova":[0,245,0.4778],"gerene":[0,159,0.4403],"ginevra":[0,307,0.4974],"ginger":[41,46170,0.9321],"gladie":[0,162,0.4419],"glendola":[0,245,0.4778],"glorene":[0,62,0.0],"goldine":[0,41,0.0],"harue":[0,248,0.4789],"henreitta":[0,63,0.0],"henrie":[35,51,0.0],"honoria":[0,37,0.0],"hopie":[0,104,0.4034],"huldia":[0,5,0.0],"idalee":[0,98,0.0],"ileene":[0,456,0.5318],"iolanda":[0,64,0.0],"jacklyn":[5,16927,0.8455],"jessiemae":[0,43,0.0],"julieta":[0,10602,0.8051],"karlene":[0,4167,0.724],"kathlene":[0,3500,0.7088],"kellie":[354,50734,0.9351],"la":[314,1442,0.5329],"ladean":[5,568,0.5468],"lanita":[0,3713,0.7139],"lauramae":[0,68,0.0],"lavell":[2946,327,0.6328],"lavetta":[0,1186,0.6148],"leandra":[38,6987,0.7652],"lenetta":[0,394,0.5191],"leonida":[0,26,0.0],"leontina":[0,79,0.0],"leotta":[0,152,0.4364],"leveta":[0,143,0.4311],"lorrain":[10,636,0.5533],"loudell":[0,33,0.0],"lovada":[0,61,0.0],"loveda":[0,174,0.4481],"lovia":[0,28,0.0],"ludwina":[0,20,0.0],"lurie":[16,107,0.3636],"lurleen":[0,126,0.4201],"magdalyn":[0,646,0.562],"magdelene":[0,153,0.4369],"manette":[0,304,0.4966],"mar":[244,813,0.4652],"maravene":[0,11,0.0],"margaretmary":[0,200,0.4602],"margree":[0,291,0.4928],"margrethe":[0,27,0.0],"marguriete":[0,121,0.4166],"marijane":[0,1674,0.6448],"martena":[0,78,0.0],"marva":[7,10362,0.8026],"marvene":[0,498,0.5394],"maryfrances":[0,929,0.5936],"mathel":[0,60,0.0],"merlene":[0,2379,0.6753],"mirl":[87,55,0.2637],"miyoko":[0,617,0.5581],"modelle":[0,79,0.0],"moira":[0,7847,0.7789],"motie":[0,5,0.0],"musette":[0,102,0.4017],"natsuko":[0,155,0.4381],"nelwyn":[0,657,0.5635],"nestora":[0,43,0.0],"nillie":[0,109,0.4075],"nondas":[0,29,0.0],"norena":[0,120,0.4158],"nunziata":[0,27,0.0],"occie":[0,38,0.0],"oceola":[0,21,0.0],"olivene":[0,124,0.4187],"olwen":[0,27,0.0],"onia":[0,92,0.0],"orda":[0,15,0.0],"petrona":[0,378,0.5155],"reginia":[0,1315,0.6238],"reyna":[32,18147,0.8504],"roselind":[0,402,0.5208],"roselma":[0,28,0.0],"rosette":[0,877,0.5886],"rosezell":[0,23,0.0],"sarina":[0,9506,0.7956],"signora":[0,90,0.0],"stell":[0,11,0.0],"stephie":[0,249,0.4792],"suzy":[0,4249,0.7257],"thordis":[0,10,0.0],"toyoko":[0,196,0.4585],"trena":[0,5160,0.7425],"tsuyako":[0,126,0.4201],"uarda":[0,21,0.0],"vadis":[5,87,0.0],"vava":[0,11,0.0],"veleta":[0,248,0.4789],"venera":[0,122,0.4173],"venola":[0,89,0.0],"verina":[0,202,0.4611],"vernis":[293,187,0.3273],"verva":[0,38,0.0],"violia":[0,69,0.0],"vivie":[0,107,0.4059],"voda":[0,22,0.0],"waunetta":[0,166,0.444],"wilcie":[0,5,0.0],"willabelle":[0,23,0.0],"wilmina":[0,153,0.4369],"wynell":[6,1027,0.5993],"yasuko":[0,294,0.4937],"yukie":[0,243,0.4771],"yukiko":[0,485,0.5371],"vilas":[493,14,0.5261],"autry":[1213,243,0.527],"carmello":[2110,21,0.6592],"kline":[238,6,0.4657],"iven":[1124,0,0.6102],"masaji":[62,0,0.0],"takashi":[862,0,0.5871],"vladimir":[6102,0,0.7571],"delfino":[2353,0,0.6743],"lindell":[2435,357,0.6011],"alwyn":[711,19,0.5578],"arnel":[809,22,0.5685],"clester":[158,31,0.3806],"corliss":[343,2849,0.6255],"dwain":[7581,0,0.7759],"ellard":[179,0,0.4506],"freeland":[300,0,0.4954],"heath":[29268,181,0.8883],"jarrell":[4211,22,0.7216],"landrum":[134,0,0.4254],"legrande":[147,0,0.4335],"lenton":[657,0,0.5635],"mansel":[280,0,0.4894],"mcdonald":[605,0,0.5564],"norville":[324,0,0.5021],"ramiro":[25728,28,0.8812],"remo":[1008,0,0.6007],"roberts":[422,0,0.5251],"stacey":[13974,147693,0.9136],"tauno":[160,0,0.4408],"ules":[69,0,0.0],"waller":[225,0,0.4704],"winfrey":[144,0,0.4317],"akira":[1968,7555,0.6313],"aristide":[86,0,0.0],"aurel":[195,33,0.4033],"bunyan":[132,0,0.4241],"buryl":[138,0,0.428],"carrington":[1811,2646,0.4333],"christo":[628,0,0.5596],"dorse":[254,0,0.481],"eulalio":[1552,0,0.6382],"gottfried":[115,0,0.4121],"johannes":[2258,0,0.6707],"katsumi":[265,5,0.4773],"leeman":[380,0,0.516],"loomis":[125,0,0.4194],"luman":[142,0,0.4305],"moran":[52,5,0.0],"morse":[374,0,0.5146],"onis":[263,5,0.4766],"rock":[2664,0,0.6851],"seibert":[66,0,0.0],"solly":[148,0,0.4341],"stevens":[1306,0,0.6232],"tyre":[2107,50,0.6513],"willmer":[309,6,0.4901],"ames":[1763,10,0.6461],"arby":[230,0,0.4723],"belvin":[415,7,0.5164],"berthel":[63,30,0.0],"birch":[335,0,0.505],"brewster":[355,0,0.51],"connor":[232322,1702,0.9927],"duilio":[85,0,0.0],"durand":[1060,0,0.6051],"eastman":[12,0,0.0],"eilert":[26,0,0.0],"eldredge":[196,0,0.4585],"elmus":[228,0,0.4716],"farrel":[831,38,0.5621],"finnis":[61,0,0.0],"firmin":[97,0,0.0],"gardiner":[195,0,0.458],"gleason":[383,0,0.5166],"grey":[5832,1021,0.6529],"hanley":[660,263,0.4241],"helmut":[451,0,0.5308],"marlyn":[2306,6784,0.5909],"meade":[515,6,0.5371],"meliton":[436,0,0.5279],"melven":[511,0,0.5417],"melvern":[199,0,0.4598],"mieczyslaw":[96,0,0.0],"minard":[79,0,0.0],"moore":[28,0,0.0],"myers":[667,86,0.5096],"newel":[130,0,0.4228],"niel":[1379,0,0.6279],"onni":[79,0,0.0],"orby":[151,0,0.4358],"paulo":[4921,0,0.7384],"prescott":[1676,120,0.6074],"quirino":[227,0,0.4712],"rand":[2945,135,0.6671],"santino":[12683,0,0.8206],"sawyer":[62873,17277,0.7694],"sverre":[12,0,0.0],"ulus":[155,0,0.4381],"veldon":[240,0,0.476],"viggo":[956,0,0.5961],"walther":[91,0,0.0],"willford":[146,0,0.4329],"andreas":[8472,49,0.7816],"armas":[72,0,0.0],"armondo":[1449,0,0.6322],"arsenio":[2191,0,0.6681],"arvis":[640,189,0.4506],"aubery":[503,103,0.4619],"aulton":[106,0,0.4051],"aurelius":[1532,0,0.6371],"bartolo":[901,0,0.5909],"benigno":[1608,0,0.6413],"berkeley":[890,2002,0.4792],"bossie":[50,0,0.0],"casmir":[336,14,0.4885],"clance":[336,0,0.5053],"colton":[148509,203,0.9986],"corbet":[333,0,0.5045],"cresencio":[879,0,0.5888],"curly":[230,6,0.4625],"darby":[2927,8269,0.5981],"darryl":[92211,1134,0.9819],"delman":[235,0,0.4742],"delmore":[244,0,0.4775],"delphis":[60,0,0.0],"donivan":[1175,0,0.614],"elmond":[182,0,0.452],"elmor":[64,0,0.0],"erhardt":[92,0,0.0],"erminio":[307,0,0.4974],"estol":[60,0,0.0],"eufracio":[11,0,0.0],"eulus":[22,0,0.0],"ezel":[268,0,0.4856],"ferrel":[377,22,0.4915],"flavel":[22,0,0.0],"flint":[2539,0,0.6809],"fonzie":[56,0,0.0],"gaillard":[6,0,0.0],"garald":[480,0,0.5362],"gareld":[243,0,0.4771],"garvice":[33,0,0.0],"garvis":[349,0,0.5086],"glade":[829,0,0.5837],"guerino":[149,0,0.4346],"haig":[691,0,0.5679],"harald":[793,0,0.5799],"harding":[1118,0,0.6097],"hatton":[29,13,0.0],"ignace":[96,0,0.0],"jc":[1792,37,0.6392],"julion":[394,0,0.5191],"kenith":[1630,0,0.6424],"kester":[335,0,0.505],"konrad":[4000,0,0.7204],"lasaro":[131,0,0.4235],"leanord":[596,0,0.555],"lenn":[515,6,0.5371],"levert":[588,5,0.5499],"lindon":[1206,0,0.6163],"lyell":[140,0,0.4292],"malvern":[385,0,0.5171],"manville":[76,0,0.0],"marin":[990,6003,0.6601],"marland":[1223,0,0.6175],"marshell":[925,636,0.3785],"maurie":[98,317,0.4],"mauro":[6525,0,0.7629],"milbern":[93,0,0.0],"millage":[39,0,0.0],"millerd":[17,0,0.0],"montford":[102,0,0.4017],"nelse":[28,0,0.0],"nobuo":[242,0,0.4768],"normal":[125,45,0.328],"oniel":[246,0,0.4782],"onofrio":[269,0,0.486],"parvin":[144,0,0.4317],"pasqual":[613,0,0.5575],"policarpio":[28,0,0.0],"rexie":[32,38,0.0],"rocky":[28164,403,0.8786],"rolen":[218,0,0.4677],"rollen":[333,0,0.5045],"roston":[92,0,0.0],"royle":[46,0,0.0],"rudie":[143,71,0.3114],"rumsey":[6,0,0.0],"rutledge":[315,0,0.4997],"sergio":[81157,355,0.978],"severino":[307,0,0.4974],"shoji":[134,0,0.4254],"sigfred":[21,0,0.0],"talbot":[450,11,0.52],"tanner":[96980,2498,0.9744],"tennis":[202,0,0.4611],"teofil":[68,0,0.0],"thelton":[102,0,0.4017],"tilton":[388,0,0.5178],"ugo":[312,0,0.4988],"uless":[56,0,0.0],"ulyess":[143,0,0.4311],"urho":[72,0,0.0],"vernel":[249,85,0.3763],"vernet":[11,10,0.0],"wadsworth":[76,0,0.0],"waring":[26,0,0.0],"wasil":[91,0,0.0],"weir":[46,0,0.0],"willett":[127,34,0.3482],"willmar":[65,0,0.0],"woodward":[205,0,0.4624],"worden":[40,0,0.0],"zaragoza":[60,0,0.0],"abney":[5,10,0.0],"accursio":[5,0,0.0],"agee":[38,0,0.0],"amando":[1246,134,0.567],"ambros":[36,0,0.0],"ansley":[290,11705,0.7961],"anthany":[537,0,0.546],"arlando":[563,0,0.5501],"arnet":[96,0,0.0],"arsen":[606,0,0.5565],"arvy":[16,0,0.0],"arza":[33,11,0.0],"baptiste":[87,0,0.0],"barber":[18,5,0.0],"barker":[28,0,0.0],"barnes":[187,0,0.4544],"barron":[5327,0,0.7453],"bartow":[114,0,0.4114],"bearl":[183,0,0.4525],"bertel":[115,0,0.4121],"blaise":[8553,845,0.7232],"boise":[38,0,0.0],"borden":[215,0,0.4665],"bowen":[11889,290,0.7977],"brainard":[129,0,0.4221],"brewer":[1080,5,0.6043],"bronson":[10478,0,0.8041],"bunyon":[16,0,0.0],"burch":[157,0,0.4392],"burwell":[167,0,0.4445],"carlus":[525,10,0.5355],"carmin":[129,858,0.5206],"carr":[200,0,0.4602],"chatman":[16,0,0.0],"claxton":[285,0,0.491],"clayburn":[240,0,0.476],"cleburne":[116,0,0.4129],"clerence":[77,0,0.0],"cloud":[711,25,0.5539],"coburn":[247,0,0.4785],"coke":[20,0,0.0],"colen":[528,0,0.5445],"colquitt":[5,0,0.0],"connell":[1728,5,0.6459],"constantin":[242,0,0.4768],"corrado":[315,0,0.4997],"cortland":[2117,49,0.652],"crawley":[16,0,0.0],"curl":[5,0,0.0],"darvin":[3680,0,0.7132],"delford":[548,0,0.5478],"demus":[5,0,0.0],"devoe":[59,0,0.0],"dewain":[800,0,0.5806],"dionisio":[1188,0,0.615],"dorance":[177,0,0.4496],"doroteo":[692,0,0.568],"dorwin":[432,0,0.5271],"doyl":[210,0,0.4644],"duffie":[34,6,0.0],"durell":[1742,0,0.6482],"earmon":[138,0,0.428],"efton":[74,0,0.0],"egon":[148,0,0.4341],"elburn":[40,0,0.0],"elmar":[294,20,0.4676],"elvert":[276,0,0.4882],"emanual":[545,0,0.5473],"engelbert":[150,0,0.4352],"ervan":[237,0,0.4749],"estal":[60,0,0.0],"ethridge":[256,0,0.4816],"euclide":[64,0,0.0],"eulogio":[744,0,0.5743],"evart":[120,0,0.4158],"evelio":[643,0,0.5616],"evo":[187,0,0.4544],"farmer":[139,0,0.4286],"fedele":[21,0,0.0],"felis":[62,42,0.2405],"fenwick":[51,0,0.0],"filomeno":[175,0,0.4486],"flynn":[6378,464,0.715],"folke":[5,0,0.0],"fon":[29,0,0.0],"forbes":[234,0,0.4738],"freemon":[285,0,0.491],"garcia":[423,36,0.4906],"garlon":[349,0,0.5086],"gavin":[188131,395,0.9979],"gentle":[201,0,0.4606],"germain":[985,42,0.5777],"glenford":[487,0,0.5375],"gunnard":[67,0,0.0],"guster":[22,0,0.0],"hajime":[134,0,0.4254],"hamer":[56,0,0.0],"haynes":[589,11,0.5454],"henning":[294,0,0.4937],"herbie":[1094,0,0.6078],"hershal":[647,0,0.5622],"hicks":[74,0,0.0],"holbert":[143,0,0.4311],"hoover":[1120,7,0.6066],"hoye":[54,0,0.0],"hue":[476,89,0.4637],"inman":[301,0,0.4957],"ire":[59,0,0.0],"isidoro":[1292,0,0.6223],"jakie":[759,17,0.5653],"jed":[8869,0,0.7896],"jiro":[409,0,0.5223],"jno":[11,0,0.0],"karlton":[1528,0,0.6368],"kenji":[5373,33,0.742],"kerwin":[2465,0,0.6784],"kimble":[601,232,0.4214],"ladell":[1023,433,0.4445],"lalo":[575,0,0.5519],"lander":[1121,0,0.6099],"leman":[625,0,0.5592],"lennard":[1150,0,0.6121],"lennon":[7694,11144,0.5058],"lenzie":[373,184,0.3678],"leverne":[985,487,0.424],"levon":[5636,429,0.7031],"limuel":[104,0,0.4034],"linard":[235,0,0.4742],"lonzy":[81,0,0.0],"lorrin":[215,244,0.283],"lovis":[68,26,0.0],"lowe":[52,37,0.0],"lowis":[56,0,0.0],"lunsford":[34,0,0.0],"lyndal":[399,313,0.3197],"lynford":[328,0,0.5032],"mandel":[583,0,0.5531],"masashi":[146,0,0.4329],"meldon":[240,0,0.476],"merel":[205,35,0.4066],"milam":[246,0,0.4782],"morry":[84,0,0.0],"nicanor":[787,0,0.5792],"nolton":[115,0,0.4121],"numa":[165,92,0.3094],"oiva":[104,0,0.4034],"olander":[173,0,0.4476],"olas":[5,0,0.0],"ordean":[161,0,0.4414],"othor":[21,0,0.0],"philbert":[797,0,0.5803],"philias":[20,0,0.0],"pincus":[52,0,0.0],"placide":[5,0,0.0],"president":[45,0,0.0],"purnell":[762,6,0.5726],"quincey":[1904,748,0.4916],"quinten":[8034,0,0.781],"raiford":[594,0,0.5548],"ramey":[567,425,0.3425],"rassie":[20,5,0.0],"raymer":[5,0,0.0],"reagan":[7744,64484,0.8676],"redford":[202,0,0.4611],"reeve":[911,233,0.4871],"remer":[113,0,0.4106],"riccardo":[1560,0,0.6386],"romolo":[250,0,0.4796],"rual":[178,0,0.4501],"sabatino":[202,0,0.4611],"sargent":[115,0,0.4121],"seichi":[171,0,0.4466],"sellie":[5,0,0.0],"simmons":[17,10,0.0],"spiro":[1011,0,0.601],"staley":[256,150,0.329],"stanwood":[51,0,0.0],"starlin":[226,41,0.4108],"stephens":[391,0,0.5184],"stiles":[879,0,0.5888],"suren":[173,0,0.4476],"tennyson":[1165,390,0.4782],"teruo":[274,0,0.4876],"theordore":[412,0,0.523],"thorval":[5,0,0.0],"tokio":[55,0,0.0],"tomy":[486,0,0.5373],"trenton":[58334,78,0.952],"truitt":[1443,5,0.63],"tunis":[153,0,0.4369],"ulas":[102,0,0.4017],"ulice":[134,0,0.4254],"uri":[1212,139,0.5617],"uriel":[20364,307,0.8503],"venton":[58,0,0.0],"verdi":[11,5,0.0],"vinal":[136,0,0.4267],"viron":[46,0,0.0],"waco":[171,0,0.4466],"waitman":[48,0,0.0],"weymon":[11,0,0.0],"wilkins":[286,0,0.4913],"wilmon":[351,0,0.5091],"yukio":[427,0,0.5261],"zach":[2752,0,0.6879],"zenus":[5,0,0.0],"floriene":[0,270,0.4863],"jeannine":[6,24057,0.8761],"marvis":[1102,1366,0.3755],"yoshie":[0,395,0.5193],"aloise":[28,100,0.3293],"cumi":[0,97,0.0],"demaris":[286,1018,0.4864],"evelynn":[0,15049,0.8355],"perline":[0,216,0.4669],"alita":[0,2527,0.6805],"beatryce":[0,123,0.418],"ilse":[0,2364,0.6747],"kiyo":[17,107,0.3613],"maryhelen":[0,1020,0.6017],"mitsue":[0,358,0.5108],"rhena":[0,149,0.4346],"tanya":[405,116812,0.9965],"thella":[0,43,0.0],"vicki":[294,153265,0.9981],"dartha":[0,382,0.5164],"decima":[0,22,0.0],"earnesteen":[0,396,0.5195],"eliene":[0,58,0.0],"fernanda":[26,19575,0.8573],"louvena":[0,42,0.0],"maudelle":[0,54,0.0],"norrine":[0,357,0.5105],"odean":[351,377,0.2964],"rosalina":[0,5352,0.7457],"verlia":[0,232,0.4731],"yonnie":[0,36,0.0],"bonna":[0,1080,0.6067],"bronislawa":[0,53,0.0],"carletta":[0,3060,0.6971],"carmina":[0,1312,0.6236],"chiyo":[0,135,0.4261],"clorene":[0,135,0.4261],"coline":[0,79,0.0],"demetria":[141,10936,0.7986],"dosie":[12,28,0.0],"eleen":[0,719,0.5713],"elga":[10,120,0.3903],"etola":[0,62,0.0],"ezelle":[39,74,0.2689],"heather":[1477,525733,0.9972],"iness":[0,107,0.4059],"iretta":[0,279,0.4891],"luverta":[0,64,0.0],"madine":[0,247,0.4785],"margerie":[0,118,0.4144],"marjie":[0,972,0.5975],"masae":[0,137,0.4273],"nicolena":[0,214,0.4661],"rica":[0,525,0.544],"rosalinda":[5,15538,0.838],"thetis":[0,147,0.4335],"valree":[0,131,0.4235],"vica":[0,8,0.0],"wyolene":[0,64,0.0],"alexandrina":[0,252,0.4803],"alter":[393,18,0.4999],"annelle":[0,1099,0.6082],"annunziata":[0,40,0.0],"armine":[0,150,0.4352],"arneta":[0,152,0.4364],"asta":[139,198,0.297],"athalie":[0,219,0.4681],"audine":[0,213,0.4657],"aurella":[0,36,0.0],"berdene":[0,93,0.0],"burniece":[0,53,0.0],"callista":[0,2443,0.6776],"chestine":[5,307,0.4908],"cloda":[0,22,0.0],"daphine":[0,1496,0.635],"dorthia":[0,152,0.4364],"dorys":[0,51,0.0],"earlee":[44,134,0.3388],"edrena":[0,51,0.0],"enolia":[0,62,0.0],"ertha":[0,241,0.4764],"eugena":[0,1151,0.6122],"isolene":[0,48,0.0],"janine":[11,33488,0.9047],"lavania":[0,54,0.0],"lygia":[0,76,0.0],"mabeth":[0,25,0.0],"marilouise":[0,268,0.4856],"marilynn":[0,13240,0.8244],"marycatherine":[0,945,0.5951],"melody":[170,111788,0.9985],"moneta":[0,47,0.0],"myrel":[58,130,0.3145],"onnolee":[0,57,0.0],"patrice":[773,34076,0.8883],"robertine":[0,268,0.4856],"ruthmary":[0,214,0.4661],"saxon":[1532,166,0.5828],"willodean":[0,1237,0.6185],"wylene":[0,980,0.5982],"yuriko":[0,760,0.5762],"adamae":[0,156,0.4386],"aleitha":[0,6,0.0],"almarie":[0,333,0.5045],"alvida":[0,29,0.0],"angelene":[0,1918,0.6566],"annas":[34,22,0.0],"annastasia":[0,2039,0.6619],"arax":[0,13,0.0],"areta":[0,290,0.4925],"argusta":[26,69,0.0],"arlethia":[0,243,0.4771],"arlone":[0,86,0.0],"audna":[0,11,0.0],"avia":[0,1848,0.6533],"avonell":[0,186,0.4539],"azalie":[0,159,0.4403],"bertilla":[0,38,0.0],"carlita":[0,1380,0.628],"charmian":[0,473,0.535],"charmie":[0,54,0.0],"cladie":[0,53,0.0],"clarina":[0,33,0.0],"clea":[10,795,0.5739],"clotine":[0,79,0.0],"cloye":[0,28,0.0],"countess":[0,117,0.4136],"danella":[0,861,0.587],"darleen":[0,8322,0.784],"dolorita":[0,11,0.0],"ednamay":[0,11,0.0],"edwyna":[0,152,0.4364],"elissa":[0,17924,0.8507],"ellon":[0,213,0.4657],"elnita":[0,154,0.4375],"elosia":[0,11,0.0],"estaline":[0,56,0.0],"eulee":[0,16,0.0],"evalin":[0,161,0.4414],"fujiko":[0,118,0.4144],"fusae":[0,194,0.4576],"garna":[0,30,0.0],"geraline":[0,675,0.5659],"gertrudes":[0,6,0.0],"glennys":[0,242,0.4768],"glida":[0,6,0.0],"goldena":[0,34,0.0],"gurtie":[0,42,0.0],"gwendola":[0,220,0.4685],"haddie":[0,1966,0.6587],"harumi":[21,294,0.4664],"helyne":[0,108,0.4067],"ilar":[0,30,0.0],"inas":[0,243,0.4771],"julietta":[0,2597,0.6829],"jullia":[0,108,0.4067],"kathrin":[0,1214,0.6168],"kazue":[0,216,0.4669],"lalie":[0,6,0.0],"lanell":[354,2124,0.5818],"lauree":[0,756,0.5757],"leetha":[0,39,0.0],"lennice":[0,37,0.0],"leoler":[0,6,0.0],"lorrene":[0,556,0.549],"louraine":[0,34,0.0],"lovice":[0,16,0.0],"lucele":[0,11,0.0],"lucila":[0,2458,0.6781],"lucye":[0,24,0.0],"luzetta":[0,37,0.0],"lylian":[0,373,0.5143],"mariel":[116,7182,0.7604],"mariella":[0,4934,0.7386],"marvie":[68,269,0.4035],"masaye":[0,63,0.0],"masayo":[0,67,0.0],"maxene":[0,498,0.5394],"maywood":[26,6,0.0],"mazella":[0,137,0.4273],"meadow":[12,11255,0.8095],"merial":[0,92,0.0],"michaelina":[0,163,0.4424],"modine":[0,152,0.4364],"nesbit":[62,18,0.0],"onella":[0,48,0.0],"pansey":[0,80,0.0],"pollyanna":[0,1110,0.6091],"posie":[60,467,0.4824],"quida":[0,118,0.4144],"rillia":[0,11,0.0],"rosalin":[0,892,0.5901],"rosann":[0,2903,0.6926],"ruthanna":[0,777,0.5781],"sarafina":[0,734,0.5731],"starr":[324,9776,0.7752],"talma":[12,204,0.441],"theona":[0,208,0.4636],"tobey":[1690,758,0.4679],"tomasina":[0,434,0.5275],"valia":[0,78,0.0],"veneda":[0,233,0.4735],"veona":[0,124,0.4187],"vilda":[0,88,0.0],"vitina":[0,58,0.0],"winafred":[0,18,0.0],"wynette":[0,956,0.5961],"yoshi":[212,91,0.3472],"zenda":[0,324,0.5021],"zerelda":[0,49,0.0],"adelee":[0,108,0.4067],"akiko":[0,778,0.5782],"alexine":[0,171,0.4466],"alfonsina":[0,55,0.0],"alfreida":[0,492,0.5384],"alvilde":[0,5,0.0],"annamary":[0,339,0.506],"arbelia":[0,5,0.0],"arbelle":[0,10,0.0],"aris":[2607,1774,0.4334],"arliene":[0,176,0.4491],"arloa":[0,300,0.4954],"armentha":[0,189,0.4553],"arnice":[0,109,0.4075],"arvetta":[0,182,0.452],"arzelia":[0,52,0.0],"asunta":[0,15,0.0],"audelia":[0,741,0.574],"aurelie":[0,569,0.551],"avelina":[0,1730,0.6476],"avenell":[0,137,0.4273],"avinell":[0,21,0.0],"aylene":[0,499,0.5396],"belmira":[0,75,0.0],"bernise":[0,99,0.0],"bessy":[0,329,0.5034],"blondie":[0,365,0.5125],"camela":[0,796,0.5802],"camila":[114,117228,0.999],"carina":[35,16360,0.8411],"casmira":[0,96,0.0],"charlee":[459,18508,0.8349],"charlesetta":[0,1303,0.623],"charlyne":[0,1132,0.6108],"charolette":[0,3494,0.7087],"chizuko":[0,169,0.4456],"clarkie":[0,46,0.0],"claudean":[0,459,0.5324],"clida":[0,49,0.0],"colista":[0,25,0.0],"conjetta":[0,11,0.0],"coree":[166,395,0.3871],"corenne":[0,24,0.0],"coretha":[0,505,0.5407],"coye":[425,42,0.4858],"coyla":[0,27,0.0],"daris":[1244,608,0.439],"debra":[1147,550662,0.9979],"delana":[0,4077,0.7221],"delberta":[0,369,0.5134],"despina":[0,1517,0.6362],"detta":[0,203,0.4615],"divina":[0,1398,0.6291],"dolorez":[0,94,0.0],"dolorous":[0,5,0.0],"domicella":[0,10,0.0],"doryce":[0,172,0.4471],"dotsie":[0,118,0.4144],"doyce":[946,172,0.5159],"druscilla":[0,427,0.5261],"dulce":[49,19953,0.8581],"earlyne":[0,300,0.4954],"edmay":[0,5,0.0],"eliner":[0,10,0.0],"elizadeth":[0,22,0.0],"ellnora":[0,41,0.0],"elspeth":[0,904,0.5912],"elvine":[0,20,0.0],"emilda":[0,22,0.0],"emmagene":[0,229,0.472],"enedina":[0,2830,0.6904],"enez":[0,98,0.0],"erah":[0,10,0.0],"erda":[0,15,0.0],"erene":[0,30,0.0],"esterlene":[0,73,0.0],"estrella":[0,16321,0.8425],"evelyna":[0,337,0.5055],"evylen":[0,10,0.0],"fallie":[0,5,0.0],"fara":[0,1087,0.6072],"felisa":[0,2021,0.6611],"filippa":[0,147,0.4335],"flarence":[0,36,0.0],"floella":[0,212,0.4653],"forestine":[0,310,0.4983],"fozie":[0,5,0.0],"francene":[0,1724,0.6473],"francess":[0,182,0.452],"gazella":[0,109,0.4075],"gem":[5,209,0.4552],"genive":[0,20,0.0],"haru":[283,177,0.3276],"hasty":[0,10,0.0],"helmie":[0,5,0.0],"hiroko":[0,328,0.5032],"ianthe":[0,47,0.0],"idena":[0,16,0.0],"iolene":[0,50,0.0],"isobelle":[0,99,0.0],"janell":[23,15713,0.8382],"jeanelle":[0,2272,0.6713],"jenevieve":[0,1768,0.6495],"jerene":[0,537,0.546],"jerlean":[0,683,0.5669],"jerline":[0,1138,0.6112],"johnette":[0,2004,0.6604],"josehine":[0,10,0.0],"julitta":[0,50,0.0],"karleen":[0,2766,0.6884],"kathalene":[0,230,0.4723],"kathelene":[0,163,0.4424],"kathlyne":[0,68,0.0],"kathyleen":[0,541,0.5466],"labelle":[0,60,0.0],"laurabel":[0,31,0.0],"laurentina":[0,10,0.0],"lazelle":[0,42,0.0],"leokadja":[0,5,0.0],"letizia":[0,495,0.5389],"liler":[0,30,0.0],"lolamae":[0,84,0.0],"loreane":[0,29,0.0],"lorell":[42,305,0.4466],"loucinda":[0,236,0.4746],"louine":[0,65,0.0],"luciell":[0,17,0.0],"lucrezia":[0,374,0.5146],"lunetta":[0,111,0.4091],"lynell":[823,1961,0.4853],"macaria":[0,377,0.5153],"madalen":[0,139,0.4286],"madgelene":[0,34,0.0],"madlen":[0,23,0.0],"magdalina":[0,127,0.4208],"marciel":[10,84,0.0],"mardella":[0,499,0.5396],"marga":[0,343,0.5071],"margaet":[0,16,0.0],"margaurite":[0,68,0.0],"marguarite":[0,224,0.47],"marielouise":[0,99,0.0],"marybel":[0,683,0.5669],"marynell":[0,252,0.4803],"marzee":[0,60,0.0],"matsue":[0,157,0.4392],"maxyne":[0,87,0.0],"mertha":[0,190,0.4558],"mescal":[0,179,0.4506],"mickelina":[0,5,0.0],"milbrey":[0,36,0.0],"monita":[0,505,0.5407],"murdis":[0,105,0.4042],"nadja":[0,1155,0.6125],"nancey":[0,627,0.5595],"natalina":[0,607,0.5566],"nerva":[0,48,0.0],"nicolette":[5,17010,0.8459],"noretta":[0,381,0.5162],"nyra":[0,2264,0.671],"odena":[0,97,0.0],"olyve":[0,50,0.0],"orell":[158,44,0.3606],"panzy":[0,92,0.0],"pearleen":[0,51,0.0],"pearlina":[0,168,0.4451],"peola":[0,64,0.0],"philomina":[0,67,0.0],"pirl":[0,15,0.0],"pretto":[0,5,0.0],"primrose":[0,963,0.5967],"remona":[0,1393,0.6288],"rever":[0,65,0.0],"rivera":[0,16,0.0],"rudene":[0,222,0.4693],"sakae":[58,57,0.2079],"sallee":[0,321,0.5013],"scholastica":[0,5,0.0],"serene":[0,3096,0.6982],"severine":[0,54,0.0],"sybel":[0,123,0.418],"sydonia":[0,5,0.0],"teretha":[0,665,0.5646],"truth":[1350,735,0.4298],"tsuneko":[0,43,0.0],"tulsa":[0,157,0.4392],"tyra":[143,14594,0.8256],"uba":[0,5,0.0],"ursuline":[0,25,0.0],"uzella":[0,5,0.0],"valaria":[0,272,0.4869],"velmon":[0,11,0.0],"verbal":[0,49,0.0],"verdella":[0,274,0.4876],"verley":[21,84,0.3234],"verneice":[0,170,0.4461],"viora":[0,10,0.0],"virene":[0,21,0.0],"virga":[0,64,0.0],"virgilene":[0,87,0.0],"volena":[0,29,0.0],"voneda":[0,5,0.0],"vyola":[0,37,0.0],"williamina":[0,5,0.0],"wintress":[0,26,0.0],"yoneko":[0,202,0.4611],"zdenka":[0,16,0.0],"zelmer":[52,16,0.0],"zelna":[0,45,0.0],"zenona":[0,10,0.0],"zorka":[0,45,0.0],"zudora":[0,51,0.0],"zuella":[0,26,0.0],"torao":[53,0,0.0],"dorrance":[284,0,0.4907],"doy":[731,34,0.5511],"alvar":[92,0,0.0],"burel":[183,0,0.4525],"durant":[351,0,0.5091],"gil":[4951,0,0.7389],"haden":[3856,167,0.691],"hooper":[116,0,0.4129],"brandon":[769149,4145,0.9946],"carmino":[185,0,0.4534],"chad":[240640,1039,0.9957],"gearld":[4281,5,0.7256],"harrel":[764,0,0.5766],"liborio":[527,0,0.5444],"windell":[2998,21,0.6911],"bartolomeo":[42,0,0.0],"beuford":[219,0,0.4681],"claudis":[353,11,0.4967],"devon":[72448,20258,0.7763],"flournoy":[26,0,0.0],"harwood":[340,0,0.5063],"isami":[136,0,0.4267],"keneth":[1454,0,0.6325],"kie":[135,5,0.4139],"lister":[128,0,0.4214],"plato":[216,0,0.4669],"renaldo":[2874,0,0.6917],"armen":[2101,5,0.6631],"calip":[14,0,0.0],"champion":[715,0,0.5709],"cliford":[286,0,0.4913],"dallis":[928,839,0.3411],"delvin":[5306,27,0.7416],"friedrich":[623,0,0.5589],"hulen":[469,0,0.5342],"hy":[117,0,0.4136],"jb":[633,0,0.5603],"johnston":[506,0,0.5408],"jozef":[1184,0,0.6147],"juventino":[1558,0,0.6385],"ledford":[248,0,0.4789],"masayoshi":[133,0,0.4248],"paige":[1335,145848,0.9909],"quay":[397,15,0.5039],"ranald":[111,0,0.4091],"secondo":[9,0,0.0],"shozo":[19,0,0.0],"stan":[8473,0,0.7856],"ubaldo":[2212,0,0.669],"venson":[671,0,0.5653],"vyron":[95,0,0.0],"wilder":[7447,595,0.7233],"aloysious":[98,0,0.0],"autrey":[213,21,0.4313],"basel":[541,0,0.5466],"blane":[4420,11,0.7275],"brock":[43231,75,0.9257],"chuck":[17864,0,0.8504],"dolan":[1701,0,0.6461],"dupree":[870,0,0.5879],"edmundo":[3289,0,0.7034],"estanislao":[199,0,0.4598],"fransisco":[3056,0,0.697],"hearl":[189,0,0.4553],"kearney":[275,52,0.4229],"kenyon":[7946,187,0.7641],"kirkland":[2159,18,0.6621],"lanier":[1058,142,0.543],"lenus":[73,0,0.0],"lorimer":[66,0,0.0],"moultrie":[24,0,0.0],"olon":[128,0,0.4214],"othar":[97,0,0.0],"paulino":[1776,0,0.6499],"philippe":[3029,0,0.6963],"ranson":[357,0,0.5105],"romuald":[149,0,0.4346],"rubel":[151,0,0.4358],"santi":[811,42,0.5573],"satoru":[235,0,0.4742],"savino":[613,0,0.5575],"sheffield":[77,0,0.0],"susumu":[351,0,0.5091],"sye":[113,0,0.4106],"toribio":[853,0,0.5862],"tsugio":[123,0,0.418],"varner":[43,0,0.0],"willson":[360,0,0.5113],"yates":[503,0,0.5403],"zolton":[152,0,0.4364],"adair":[1730,1397,0.3867],"adalbert":[94,0,0.0],"ahti":[13,0,0.0],"alderic":[17,0,0.0],"alfonce":[18,0,0.0],"alley":[42,1070,0.5862],"alph":[7,0,0.0],"alvaro":[17027,5,0.846],"ashford":[493,0,0.5386],"atwell":[128,0,0.4214],"bazil":[155,0,0.4381],"bernal":[190,0,0.4558],"bjarne":[55,0,0.0],"byrne":[98,0,0.0],"cardell":[2362,23,0.669],"castulo":[116,0,0.4129],"cataldo":[117,0,0.4136],"clebert":[85,0,0.0],"cleburn":[124,0,0.4187],"cleland":[246,0,0.4782],"clemson":[17,0,0.0],"cloy":[126,5,0.4073],"clyne":[18,0,0.0],"coyt":[139,0,0.4286],"darell":[5333,10,0.7442],"domnick":[428,0,0.5263],"domonic":[2970,67,0.6811],"durrell":[1905,0,0.656],"elgar":[63,0,0.0],"emidio":[394,0,0.5191],"ercil":[76,6,0.0],"ercole":[65,0,0.0],"erhard":[110,0,0.4083],"garlan":[416,0,0.5238],"generoso":[64,0,0.0],"gould":[28,0,0.0],"hartzell":[23,0,0.0],"harvest":[275,429,0.347],"hershey":[133,0,0.4248],"holton":[1020,0,0.6017],"huie":[155,0,0.4381],"hulet":[65,0,0.0],"huron":[48,0,0.0],"izear":[76,0,0.0],"kelton":[6604,26,0.7613],"levell":[765,0,0.5767],"levis":[273,15,0.4663],"loman":[283,0,0.4904],"lovelace":[142,0,0.4305],"marley":[5225,32082,0.7863],"morrill":[63,0,0.0],"nemiah":[230,80,0.3697],"noal":[424,0,0.5255],"norfleet":[77,0,0.0],"nyle":[2132,44,0.654],"ollice":[33,0,0.0],"orden":[7,0,0.0],"orvile":[118,0,0.4144],"ritchie":[4092,50,0.7147],"rodolph":[189,0,0.4553],"rudyard":[42,0,0.0],"searcy":[226,11,0.4529],"stefano":[3099,0,0.6982],"tillmon":[146,0,0.4329],"ulrich":[481,0,0.5364],"urbain":[57,0,0.0],"valerian":[474,6,0.5295],"valton":[299,0,0.4951],"veikko":[59,0,0.0],"verland":[253,0,0.4806],"wah":[67,0,0.0],"welch":[51,0,0.0],"yoshito":[202,0,0.4611],"zigmunt":[49,0,0.0],"abbot":[33,0,0.0],"abelardo":[4772,0,0.7357],"abundio":[203,0,0.4615],"adger":[92,0,0.0],"adin":[3221,86,0.6856],"aldie":[21,11,0.0],"aldor":[54,0,0.0],"aloysuis":[114,0,0.4114],"amilcare":[6,0,0.0],"arlow":[328,88,0.413],"arnoldo":[4686,0,0.7342],"arvell":[396,0,0.5195],"berle":[331,11,0.4905],"biaggio":[37,0,0.0],"blase":[779,0,0.5783],"bradie":[201,565,0.4255],"bryson":[80790,279,0.9784],"byford":[109,0,0.4075],"calogero":[577,0,0.5522],"carwin":[26,0,0.0],"chadwick":[13250,22,0.8232],"chriss":[520,150,0.4387],"churchill":[105,0,0.4042],"clancy":[1395,573,0.467],"clanton":[146,0,0.4329],"clevland":[98,0,0.0],"cromwell":[34,0,0.0],"davied":[406,0,0.5217],"delano":[5506,71,0.7397],"deo":[268,0,0.4856],"deroy":[218,0,0.4677],"derry":[1541,137,0.5923],"detroit":[148,0,0.4341],"dickson":[610,0,0.5571],"dunbar":[76,0,0.0],"edo":[41,0,0.0],"embert":[29,0,0.0],"emiel":[103,0,0.4026],"eugune":[347,0,0.5081],"eulon":[67,0,0.0],"faber":[60,0,0.0],"felder":[124,0,0.4187],"ferguson":[141,0,0.4298],"filadelfio":[36,0,0.0],"finas":[78,0,0.0],"fitz":[689,0,0.5676],"gabor":[147,0,0.4335],"gaza":[58,0,0.0],"gervis":[217,0,0.4673],"gilliam":[147,10,0.4112],"giulio":[661,0,0.564],"greeley":[38,39,0.0],"hassel":[512,0,0.5419],"haston":[150,0,0.4352],"hershall":[195,0,0.458],"higinio":[690,0,0.5678],"horacio":[4472,0,0.7301],"hurman":[203,0,0.4615],"hurston":[47,0,0.0],"ireland":[209,6263,0.7376],"ivin":[526,0,0.5442],"joffre":[193,0,0.4571],"junuis":[24,0,0.0],"kerney":[248,0,0.4789],"langford":[81,0,0.0],"lovel":[96,7,0.3752],"loyde":[575,0,0.5519],"macedonio":[164,0,0.443],"maxey":[286,5,0.4843],"mayfield":[129,0,0.4221],"mchenry":[51,0,0.0],"mendell":[82,0,0.0],"merchant":[6,0,0.0],"mickel":[1955,47,0.6448],"moir":[44,0,0.0],"morrell":[692,0,0.568],"nichols":[758,0,0.5759],"nickie":[1438,3158,0.5033],"niilo":[44,0,0.0],"noe":[23150,421,0.8589],"normon":[263,0,0.484],"odas":[148,0,0.4341],"odel":[181,5,0.4417],"olyn":[92,0,0.0],"orvall":[47,0,0.0],"orvo":[6,0,0.0],"randel":[3651,25,0.7082],"ransford":[28,0,0.0],"rapheal":[1543,0,0.6377],"read":[308,0,0.4977],"reinholdt":[11,0,0.0],"remy":[11694,7869,0.5131],"renold":[63,0,0.0],"rochester":[463,0,0.5331],"roderic":[2315,0,0.6729],"ronaldo":[5966,0,0.7551],"rowe":[477,140,0.4314],"rufas":[25,0,0.0],"rufino":[1650,0,0.6435],"saburo":[253,0,0.4806],"seiji":[509,0,0.5413],"serge":[1619,0,0.6418],"shaw":[1315,56,0.6018],"sherrell":[439,2782,0.606],"solmon":[114,0,0.4114],"summers":[11,65,0.0],"takao":[146,0,0.4329],"telesforo":[251,0,0.4799],"thure":[18,0,0.0],"toussaint":[505,0,0.5407],"townsend":[835,6,0.5808],"twyman":[30,0,0.0],"urias":[338,0,0.5058],"valery":[102,8457,0.7771],"vanburen":[18,0,0.0],"vardie":[6,0,0.0],"warden":[349,0,0.5086],"watts":[75,0,0.0],"weslie":[387,550,0.3489],"wilkie":[340,18,0.4851],"willey":[282,0,0.49],"zane":[55591,564,0.9403],"abbey":[35,17488,0.847],"algird":[52,0,0.0],"ali":[33255,10455,0.7061],"amato":[87,0,0.0],"amel":[621,460,0.3486],"amous":[91,0,0.0],"anello":[10,0,0.0],"anibal":[3890,22,0.7144],"arcadio":[1119,0,0.6098],"arcangelo":[31,0,0.0],"argle":[51,0,0.0],"arling":[78,0,0.0],"arpad":[44,0,0.0],"arvle":[137,0,0.4273],"ascension":[92,52,0.2758],"aulden":[117,0,0.4136],"aurele":[49,0,0.0],"azell":[200,48,0.3862],"balfour":[10,0,0.0],"banjamin":[303,0,0.4963],"beamon":[32,0,0.0],"benney":[108,0,0.4067],"brinton":[805,0,0.5812],"brooke":[2025,197517,0.9899],"brooker":[30,0,0.0],"byard":[109,0,0.4075],"calistro":[69,0,0.0],"canuto":[108,0,0.4067],"carnel":[208,0,0.4636],"carranza":[5,0,0.0],"carthel":[237,0,0.4749],"cesario":[1064,0,0.6054],"challis":[31,97,0.3194],"charl":[36,66,0.2599],"charleston":[2467,1257,0.4731],"clim":[25,0,0.0],"coe":[220,0,0.4685],"conn":[119,0,0.4151],"converse":[20,0,0.0],"corbitt":[105,0,0.4042],"crayton":[674,0,0.5657],"crist":[847,0,0.5856],"dalbert":[325,0,0.5024],"damacio":[318,0,0.5005],"de":[681,641,0.3216],"dellis":[75,0,0.0],"demosthenes":[63,0,0.0],"derald":[2190,0,0.6681],"dewell":[206,0,0.4628],"dover":[140,0,0.4292],"dugan":[513,0,0.542],"earling":[10,0,0.0],"edric":[1696,0,0.6459],"edsel":[3957,0,0.7195],"edwad":[11,0,0.0],"elester":[310,12,0.4829],"elix":[62,0,0.0],"elkin":[330,0,0.5037],"elphege":[37,0,0.0],"elpidio":[778,0,0.5782],"elra":[51,0,0.0],"emanuele":[335,0,0.505],"emert":[35,0,0.0],"emilien":[21,0,0.0],"emuel":[12,0,0.0],"erlon":[31,0,0.0],"erville":[11,0,0.0],"ervine":[167,0,0.4445],"evar":[5,0,0.0],"everest":[2739,835,0.5446],"faust":[71,0,0.0],"faustin":[70,0,0.0],"fenner":[41,0,0.0],"flavil":[36,0,0.0],"florindo":[48,0,0.0],"floyde":[310,0,0.4983],"frazer":[110,0,0.4083],"frederico":[1089,0,0.6074],"gage":[60555,246,0.9529],"gano":[18,0,0.0],"garmon":[86,0,0.0],"gearold":[186,0,0.4539],"gernie":[5,0,0.0],"gloyd":[77,0,0.0],"godwin":[563,0,0.5501],"goerge":[209,0,0.464],"graden":[710,0,0.5703],"guyton":[53,0,0.0],"hagan":[1427,163,0.5746],"hammie":[24,0,0.0],"harce":[139,0,0.4286],"hary":[31,0,0.0],"hasker":[27,0,0.0],"hawkins":[886,10,0.5839],"hebron":[70,5,0.0],"hermen":[62,0,0.0],"herminio":[1419,0,0.6304],"hickman":[22,0,0.0],"hillory":[5,27,0.0],"holloway":[20,6,0.0],"hood":[35,0,0.0],"idris":[4638,47,0.7268],"iwao":[178,0,0.4501],"jabo":[11,0,0.0],"jabus":[5,0,0.0],"jd":[1407,30,0.6183],"jehu":[1028,0,0.6024],"jerre":[795,617,0.3547],"jerrell":[7187,91,0.7627],"joeph":[144,0,0.4317],"jorgen":[489,0,0.5379],"jt":[560,0,0.5496],"junies":[18,0,0.0],"kam":[935,385,0.4421],"kaoru":[168,83,0.3212],"kato":[811,0,0.5818],"kazimierz":[77,0,0.0],"kermitt":[261,0,0.4833],"kern":[744,0,0.5743],"key":[166,10,0.4236],"kimball":[2001,140,0.6226],"kimber":[436,10934,0.78],"kirkwood":[35,0,0.0],"koichi":[145,0,0.4323],"lankford":[61,0,0.0],"larnce":[332,0,0.5042],"laster":[67,0,0.0],"leanard":[387,0,0.5175],"lebaron":[207,0,0.4632],"leburn":[44,0,0.0],"lecil":[302,0,0.496],"leldon":[310,0,0.4983],"lenny":[8170,675,0.7291],"linza":[5,0,0.0],"loral":[54,101,0.2854],"loveless":[50,0,0.0],"lubert":[10,0,0.0],"ludwik":[23,0,0.0],"lumas":[17,0,0.0],"lymon":[189,0,0.4553],"maitland":[226,126,0.327],"mallory":[1100,58213,0.9369],"malone":[370,322,0.3037],"manlio":[11,0,0.0],"manus":[125,0,0.4194],"marlon":[30759,336,0.8888],"marsden":[287,0,0.4916],"maximillian":[5880,0,0.7539],"mayes":[164,5,0.4324],"mayford":[230,0,0.4723],"mcneil":[53,0,0.0],"milliard":[43,0,0.0],"monford":[27,0,0.0],"montell":[881,0,0.589],"morio":[100,0,0.4],"morten":[43,0,0.0],"nero":[505,0,0.5407],"nevil":[26,0,0.0],"nevins":[5,0,0.0],"nicklas":[2423,0,0.6769],"nicolo":[1524,0,0.6366],"nobuyoshi":[11,0,0.0],"norwin":[73,0,0.0],"nunzie":[18,0,0.0],"obadiah":[2416,0,0.6766],"octaviano":[689,0,0.5676],"ohmer":[13,0,0.0],"olavi":[41,0,0.0],"olis":[114,35,0.3325],"onell":[10,62,0.0],"ovel":[28,5,0.0],"penrose":[21,12,0.0],"percey":[39,0,0.0],"persey":[10,0,0.0],"pope":[78,0,0.0],"powers":[17,0,0.0],"printess":[34,0,0.0],"printis":[42,0,0.0],"raeford":[613,0,0.5575],"raynald":[99,0,0.0],"reedie":[10,5,0.0],"rees":[1000,136,0.5379],"reford":[116,0,0.4129],"reginal":[2589,5,0.6815],"rino":[211,5,0.4561],"rochus":[5,0,0.0],"rockie":[943,116,0.5387],"rockwell":[1722,0,0.6472],"roddy":[2531,0,0.6807],"rodrick":[8938,5,0.7899],"rogelio":[25693,65,0.88],"rogerio":[534,0,0.5455],"rogie":[21,0,0.0],"rommie":[599,0,0.5555],"rudolfo":[2263,0,0.6709],"rufe":[29,0,0.0],"ruppert":[31,0,0.0],"rural":[18,0,0.0],"sadamu":[25,0,0.0],"sadao":[244,0,0.4775],"samiel":[113,0,0.4106],"sarkis":[949,0,0.5955],"seeley":[496,158,0.4271],"selman":[76,0,0.0],"selvin":[1504,0,0.6354],"socrates":[725,0,0.5721],"stance":[5,0,0.0],"strother":[71,0,0.0],"sylvestre":[96,0,0.0],"talley":[81,352,0.4287],"tench":[5,0,0.0],"thomos":[122,0,0.4173],"thurber":[5,0,0.0],"tivis":[84,0,0.0],"tranquilino":[173,0,0.4476],"travers":[395,0,0.5193],"tulio":[294,0,0.4937],"tyrone":[79303,709,0.9719],"ulyss":[54,0,0.0],"underwood":[15,0,0.0],"usher":[1225,0,0.6176],"valmond":[10,0,0.0],"verbon":[206,0,0.4628],"verdon":[226,0,0.4708],"vincil":[36,0,0.0],"vitold":[58,0,0.0],"wales":[38,0,0.0],"welborn":[119,0,0.4151],"welden":[98,0,0.0],"wencel":[16,0,0.0],"wentworth":[62,0,0.0],"whitley":[755,7727,0.7158],"wilbon":[93,0,0.0],"winson":[402,0,0.5208],"wister":[85,0,0.0],"wofford":[92,0,0.0],"yasuo":[207,0,0.4632],"wanza":[0,418,0.5242],"laberta":[0,249,0.4792],"czeslawa":[0,45,0.0],"hanako":[0,387,0.5175],"ernesta":[0,244,0.4775],"essiemae":[0,23,0.0],"lenor":[0,383,0.5166],"arcie":[17,53,0.0],"ardythe":[0,425,0.5257],"desma":[0,445,0.5297],"geraldean":[0,916,0.5924],"gwyneth":[0,6542,0.7631],"katrine":[0,903,0.5911],"kimiye":[0,103,0.4026],"marcy":[256,21740,0.8584],"nobuko":[0,371,0.5139],"onetta":[0,181,0.4515],"aphrodite":[0,711,0.5704],"diantha":[0,715,0.5709],"johana":[11,6885,0.7665],"lenoir":[0,69,0.0],"marilou":[0,3231,0.7019],"melvena":[0,383,0.5166],"modene":[0,217,0.4673],"norabelle":[0,92,0.0],"patrina":[0,2064,0.6629],"sunnie":[53,2471,0.6661],"adalee":[0,4472,0.7301],"anabelle":[0,8863,0.7895],"artemis":[758,3050,0.5736],"arthurine":[0,292,0.4931],"benigna":[0,95,0.0],"berdell":[92,149,0.2945],"edmae":[0,22,0.0],"getrude":[0,27,0.0],"halcyon":[11,85,0.0],"harlene":[0,1119,0.6098],"hideko":[0,338,0.5058],"ledra":[0,25,0.0],"lerlene":[0,93,0.0],"lorella":[0,347,0.5081],"marnie":[0,6054,0.7564],"maryruth":[0,255,0.4813],"matsuko":[0,111,0.4091],"orabelle":[0,103,0.4026],"ordell":[185,53,0.3695],"rogene":[5,806,0.5782],"valada":[0,59,0.0],"venona":[0,23,0.0],"vergene":[0,137,0.4273],"verginia":[0,171,0.4466],"vivianne":[0,2921,0.6931],"altia":[0,18,0.0],"athalia":[0,911,0.5919],"billee":[5,614,0.5538],"bona":[10,181,0.4323],"carine":[0,617,0.5581],"charlette":[0,4289,0.7265],"chiyono":[0,14,0.0],"cleofas":[161,50,0.3547],"dakota":[92020,40410,0.6949],"delene":[0,838,0.5846],"deltha":[0,141,0.4298],"desda":[0,8,0.0],"edwinna":[0,362,0.5117],"ethell":[0,115,0.4121],"evalynn":[0,3498,0.7088],"flaura":[0,15,0.0],"fleurette":[0,322,0.5016],"fumie":[0,195,0.458],"gregorita":[0,18,0.0],"guelda":[0,166,0.444],"imogen":[0,2966,0.6944],"janeth":[0,4760,0.7355],"jimmye":[22,496,0.5198],"kathren":[0,947,0.5953],"lilias":[0,100,0.4],"loneta":[0,118,0.4144],"lovelle":[76,150,0.3125],"lucene":[0,13,0.0],"luree":[0,187,0.4544],"luthera":[0,14,0.0],"michaline":[0,151,0.4358],"middie":[0,48,0.0],"myrth":[0,93,0.0],"nelliemae":[0,13,0.0],"ophilia":[0,15,0.0],"rachell":[0,3946,0.7192],"stephina":[0,45,0.0],"sumie":[0,223,0.4697],"toshi":[14,85,0.0],"verlene":[0,1874,0.6546],"vetra":[0,74,0.0],"vonie":[0,8,0.0],"vula":[0,18,0.0],"waive":[0,26,0.0],"willine":[0,449,0.5304],"wynola":[0,25,0.0],"altheda":[0,49,0.0],"alverne":[0,12,0.0],"anges":[0,34,0.0],"annell":[0,653,0.563],"arloine":[0,47,0.0],"arvada":[0,107,0.4059],"athalene":[0,108,0.4067],"berther":[0,7,0.0],"buleah":[0,22,0.0],"burnadine":[0,27,0.0],"cellia":[0,46,0.0],"christelle":[0,1084,0.607],"dorma":[0,690,0.5678],"draxie":[0,47,0.0],"eiko":[0,195,0.458],"elane":[0,806,0.5813],"elmeda":[0,59,0.0],"elveda":[0,51,0.0],"elveria":[0,74,0.0],"ermalinda":[0,331,0.504],"euleta":[0,97,0.0],"everetta":[0,28,0.0],"gioconda":[0,22,0.0],"gretel":[0,1465,0.6332],"halene":[0,38,0.0],"hartense":[0,27,0.0],"haruye":[0,80,0.0],"hedy":[0,2309,0.6727],"iretha":[0,359,0.511],"jeanice":[0,1255,0.6197],"jene":[646,1572,0.4743],"karla":[309,91241,0.989],"kiku":[0,7,0.0],"kimi":[290,1796,0.5716],"kimie":[0,401,0.5206],"liboria":[0,90,0.0],"loreda":[0,300,0.4954],"ludora":[0,31,0.0],"madelina":[0,389,0.518],"marvyl":[0,60,0.0],"marzelle":[0,109,0.4075],"mava":[0,300,0.4954],"medrith":[0,65,0.0],"merilyn":[0,2317,0.673],"midori":[0,1224,0.6176],"musetta":[0,40,0.0],"nevelyn":[0,161,0.4414],"nolda":[0,13,0.0],"oberia":[0,68,0.0],"othell":[165,75,0.3273],"ovada":[0,12,0.0],"palestine":[0,169,0.4456],"ralphine":[0,82,0.0],"raphaela":[0,491,0.5382],"rosaleen":[0,1199,0.6158],"rosellen":[0,795,0.5801],"rosenda":[0,675,0.5659],"shirlee":[5,5709,0.7507],"shizu":[0,28,0.0],"siria":[0,306,0.4971],"stephane":[702,1128,0.4022],"theone":[10,311,0.4857],"uldene":[0,37,0.0],"wahneta":[0,117,0.4136],"warrene":[0,63,0.0],"willola":[0,27,0.0],"zelta":[0,164,0.443],"zelva":[0,24,0.0],"alberteen":[0,56,0.0],"aleine":[0,32,0.0],"altagracia":[0,779,0.5783],"ange":[15,351,0.4917],"annmarie":[0,18939,0.8555],"arleatha":[0,158,0.4397],"arveda":[0,12,0.0],"aspasia":[0,267,0.4853],"bethany":[184,100534,0.9982],"birdena":[0,102,0.4017],"bissie":[0,21,0.0],"blandine":[0,17,0.0],"bobette":[0,1464,0.6331],"captolia":[0,37,0.0],"carmilla":[0,445,0.5297],"cather":[0,27,0.0],"chiye":[0,11,0.0],"claribelle":[0,47,0.0],"claudette":[11,18776,0.8543],"clo":[0,59,0.0],"cloey":[0,1913,0.6563],"coreta":[0,12,0.0],"creda":[0,37,0.0],"darthy":[0,302,0.496],"debora":[28,30055,0.8948],"delories":[0,1251,0.6195],"delphie":[0,37,0.0],"dencie":[0,6,0.0],"devora":[0,2800,0.6894],"doloras":[0,191,0.4562],"drucella":[0,171,0.4466],"druzella":[0,17,0.0],"earlena":[0,178,0.4501],"edwidge":[5,6,0.0],"ellenore":[0,273,0.4872],"elve":[16,28,0.0],"emley":[0,11,0.0],"eudelia":[0,382,0.5164],"eulalah":[0,74,0.0],"euniece":[0,6,0.0],"felicidad":[0,131,0.4235],"fortuna":[0,59,0.0],"geniva":[0,203,0.4615],"genrose":[0,30,0.0],"georgeann":[0,2318,0.673],"gerldine":[0,483,0.5368],"gladiola":[0,166,0.444],"glodine":[0,37,0.0],"glorine":[0,195,0.458],"gwenith":[0,337,0.5055],"hadie":[0,35,0.0],"hasseltine":[0,11,0.0],"hermelinda":[0,2028,0.6614],"imagene":[0,547,0.5476],"iverna":[0,70,0.0],"izona":[0,53,0.0],"jacquline":[0,8030,0.7809],"jammie":[2440,4046,0.4756],"janita":[0,1831,0.6525],"jemma":[0,7685,0.7771],"josiphine":[0,37,0.0],"juddie":[11,16,0.0],"junetta":[0,280,0.4894],"karma":[254,7470,0.752],"karoline":[0,3740,0.7146],"kathleene":[0,523,0.5437],"kazimiera":[0,11,0.0],"keitha":[0,1449,0.6322],"kinue":[0,21,0.0],"ladora":[0,549,0.5479],"lafern":[0,274,0.4876],"larine":[0,83,0.0],"larraine":[0,1258,0.6199],"lauria":[0,327,0.5029],"laverle":[13,191,0.4325],"lavida":[0,176,0.4491],"loeta":[0,277,0.4885],"lonita":[0,464,0.5333],"luceille":[0,36,0.0],"luvine":[0,11,0.0],"malva":[0,209,0.464],"marceille":[0,37,0.0],"marcellina":[0,292,0.4931],"marena":[0,1278,0.6213],"mariellen":[0,1166,0.6133],"martelle":[25,12,0.0],"maryjo":[0,7099,0.7702],"mauricia":[0,530,0.5449],"mayfred":[0,38,0.0],"mayzell":[0,40,0.0],"meredyth":[0,605,0.5564],"merlee":[0,49,0.0],"michiye":[0,23,0.0],"miona":[0,65,0.0],"miyo":[0,62,0.0],"myrabelle":[0,6,0.0],"myrtus":[0,6,0.0],"nelta":[0,477,0.5357],"nerissa":[0,1968,0.6588],"nobia":[0,21,0.0],"odilia":[0,1252,0.6195],"oka":[0,16,0.0],"okal":[0,6,0.0],"oleeta":[0,57,0.0],"omia":[0,42,0.0],"onda":[0,117,0.4136],"orphie":[0,24,0.0],"otella":[0,50,0.0],"oveta":[0,216,0.4669],"pasqualine":[0,16,0.0],"patria":[0,483,0.5368],"paz":[201,631,0.4429],"pernell":[3031,275,0.6453],"rafela":[0,11,0.0],"relma":[0,32,0.0],"rheda":[0,236,0.4746],"rhona":[0,1687,0.6454],"roser":[0,16,0.0],"rubelle":[0,11,0.0],"rusha":[0,17,0.0],"sadell":[0,11,0.0],"sarabelle":[0,100,0.4],"satsuki":[0,111,0.4091],"seretha":[0,518,0.5429],"sinforosa":[0,6,0.0],"sumako":[0,34,0.0],"sydna":[0,168,0.4451],"teresia":[0,1133,0.6108],"thurma":[0,67,0.0],"tincy":[0,29,0.0],"treasie":[0,11,0.0],"trieste":[0,45,0.0],"ulah":[0,83,0.0],"ursel":[5,16,0.0],"varie":[0,78,0.0],"vema":[0,27,0.0],"veo":[15,6,0.0],"verene":[0,55,0.0],"veryle":[6,28,0.0],"voncille":[0,554,0.5487],"willavene":[0,17,0.0],"yoshimi":[65,30,0.0],"yoshiye":[0,155,0.4381],"yuki":[554,1042,0.4182],"aagot":[0,5,0.0],"addah":[0,5,0.0],"addiemae":[0,16,0.0],"adelean":[0,5,0.0],"adelena":[0,369,0.5134],"adrene":[0,46,0.0],"agnus":[0,10,0.0],"alaska":[8,1232,0.6147],"alexsandra":[0,2416,0.6766],"alferetta":[0,5,0.0],"alfie":[976,128,0.538],"alia":[0,13526,0.8262],"alicemae":[0,58,0.0],"alinda":[0,628,0.5596],"almar":[5,5,0.0],"alnora":[0,23,0.0],"andree":[1066,1944,0.4493],"ane":[0,290,0.4925],"anella":[0,425,0.5257],"angelique":[6,29967,0.8952],"annadell":[0,12,0.0],"annebelle":[0,173,0.4476],"annett":[0,1119,0.6098],"annieruth":[0,10,0.0],"arabel":[0,167,0.4445],"areather":[0,21,0.0],"arleane":[0,40,0.0],"arlein":[0,15,0.0],"arloene":[0,17,0.0],"arpie":[0,5,0.0],"arsenia":[0,121,0.4166],"arsie":[0,25,0.0],"arthemise":[0,17,0.0],"arzetta":[0,35,0.0],"ascencion":[546,98,0.4763],"audery":[0,491,0.5382],"avor":[0,5,0.0],"awanda":[0,90,0.0],"azella":[0,89,0.0],"beatha":[0,5,0.0],"beatris":[0,1188,0.615],"beatta":[0,18,0.0],"bennette":[30,74,0.287],"bennye":[0,161,0.4414],"berlina":[0,5,0.0],"beverlee":[0,2289,0.6719],"billi":[5,1740,0.6465],"binnie":[100,368,0.4199],"birchie":[0,26,0.0],"birdine":[0,30,0.0],"brucie":[0,27,0.0],"burdelle":[0,5,0.0],"burdetta":[0,17,0.0],"burdine":[0,5,0.0],"burnelle":[0,17,0.0],"burnita":[0,30,0.0],"cardie":[0,18,0.0],"carene":[0,50,0.0],"carriebell":[0,5,0.0],"casilda":[0,172,0.4471],"casimera":[0,57,0.0],"cerena":[0,561,0.5498],"charlcy":[0,5,0.0],"charlet":[0,657,0.5635],"charlyn":[0,1824,0.6522],"chassie":[0,200,0.4602],"chellie":[0,171,0.4466],"chlorene":[0,27,0.0],"chona":[0,37,0.0],"cira":[0,585,0.5534],"cloria":[0,181,0.4515],"conrada":[0,25,0.0],"consetta":[0,71,0.0],"cordula":[0,21,0.0],"cosie":[0,5,0.0],"covie":[0,5,0.0],"damiana":[0,698,0.5688],"daria":[5,8955,0.79],"darlyne":[0,1414,0.6301],"dessel":[0,15,0.0],"dester":[12,16,0.0],"devera":[0,449,0.5304],"dicksie":[0,57,0.0],"dilys":[0,20,0.0],"donita":[0,5189,0.743],"doree":[0,528,0.5445],"dorina":[0,961,0.5965],"dorlene":[0,546,0.5474],"dorthie":[0,239,0.4757],"dreama":[0,3114,0.6987],"earmer":[0,20,0.0],"edria":[0,15,0.0],"edwardine":[0,88,0.0],"eilleen":[0,503,0.5403],"elanora":[0,173,0.4476],"elidia":[0,976,0.5979],"elizibeth":[0,226,0.4708],"ellanore":[0,335,0.505],"ellean":[0,94,0.0],"elleanor":[0,671,0.5653],"elleen":[0,306,0.4971],"elmeta":[0,16,0.0],"elphie":[0,5,0.0],"emojean":[0,90,0.0],"erleen":[0,290,0.4925],"erminda":[0,28,0.0],"etherine":[0,60,0.0],"evelen":[0,60,0.0],"evella":[0,164,0.443],"evilo":[0,5,0.0],"falba":[0,15,0.0],"faynell":[0,40,0.0],"fedelina":[0,46,0.0],"flodie":[0,5,0.0],"flona":[0,10,0.0],"florece":[0,30,0.0],"ganell":[0,25,0.0],"garda":[0,51,0.0],"geral":[224,148,0.3096],"gerline":[0,462,0.5329],"geroldine":[0,79,0.0],"geronima":[0,5,0.0],"giacomina":[0,5,0.0],"gisela":[0,4209,0.7248],"glendene":[0,94,0.0],"glenis":[27,405,0.4942],"glorie":[0,320,0.501],"glory":[98,4785,0.7229],"golie":[0,21,0.0],"gorizia":[0,5,0.0],"gula":[0,15,0.0],"halina":[0,1023,0.602],"harmony":[39,35083,0.9081],"hazele":[0,5,0.0],"hazeltine":[0,10,0.0],"hermenia":[0,159,0.4403],"hiro":[868,5,0.5848],"ilena":[0,686,0.5673],"illene":[0,368,0.5132],"ilva":[0,57,0.0],"ily":[0,947,0.5953],"inetta":[0,370,0.5136],"irmina":[0,5,0.0],"jaquelin":[0,3839,0.7168],"jenna":[256,148163,0.9983],"jensie":[0,15,0.0],"jerlene":[0,924,0.5931],"jesslyn":[0,2595,0.6828],"jocile":[0,10,0.0],"joda":[17,95,0.3476],"joie":[242,2907,0.6459],"josey":[992,3168,0.5512],"katharyne":[0,38,0.0],"kathline":[0,221,0.4689],"kazuko":[0,398,0.52],"kikuko":[0,26,0.0],"kiyono":[0,35,0.0],"kristina":[353,136639,0.9974],"laoma":[0,5,0.0],"larayne":[0,398,0.52],"latane":[0,11,0.0],"latrelle":[251,570,0.4047],"lauretha":[0,30,0.0],"laurita":[0,629,0.5597],"lazetta":[0,28,0.0],"lealia":[0,11,0.0],"learline":[0,56,0.0],"leella":[0,27,0.0],"lenar":[0,5,0.0],"lennora":[0,11,0.0],"leokadia":[0,55,0.0],"leokadya":[0,10,0.0],"lesa":[12,11409,0.8107],"leverta":[0,33,0.0],"linie":[0,5,0.0],"loena":[0,23,0.0],"loetta":[0,429,0.5265],"lometa":[0,88,0.0],"lore":[0,1118,0.6097],"loreita":[0,15,0.0],"lorelle":[0,963,0.5967],"lorma":[0,70,0.0],"loudella":[0,5,0.0],"louiese":[0,16,0.0],"louiza":[0,100,0.4],"lovine":[0,5,0.0],"luada":[0,16,0.0],"lurla":[0,10,0.0],"lydian":[0,240,0.476],"madaleine":[0,206,0.4628],"maedelle":[0,26,0.0],"maleta":[0,62,0.0],"marcelena":[0,10,0.0],"marcelyn":[0,709,0.5701],"marcena":[0,227,0.4712],"marcene":[0,1282,0.6216],"margel":[0,69,0.0],"marguerete":[0,26,0.0],"margueritt":[0,11,0.0],"margueritta":[0,5,0.0],"marguriette":[0,35,0.0],"marjean":[0,1558,0.6385],"marlea":[0,777,0.5781],"marleah":[0,431,0.5269],"marlee":[256,17082,0.8353],"marline":[0,1524,0.6366],"martell":[2618,36,0.6755],"marygrace":[0,1971,0.6589],"marymargaret":[0,978,0.5981],"marzie":[0,45,0.0],"masuko":[0,16,0.0],"matella":[0,5,0.0],"matiana":[0,55,0.0],"matsuye":[0,18,0.0],"matsuyo":[0,19,0.0],"maurietta":[0,5,0.0],"maxcine":[0,1083,0.6069],"maybeth":[0,49,0.0],"mayzelle":[0,5,0.0],"mazell":[0,285,0.491],"mazy":[0,242,0.4768],"mearle":[82,26,0.3088],"memphis":[9740,2404,0.6552],"merceda":[0,35,0.0],"methyl":[0,29,0.0],"michelle":[3250,815849,0.996],"midred":[0,18,0.0],"mourine":[0,11,0.0],"mozetta":[0,69,0.0],"muril":[28,15,0.0],"murline":[0,374,0.5146],"myril":[12,5,0.0],"nadya":[0,2625,0.6838],"naola":[0,44,0.0],"narcisa":[0,218,0.4677],"nigel":[12211,85,0.8123],"noemi":[69,22666,0.8687],"nondus":[0,5,0.0],"northa":[0,16,0.0],"novice":[0,107,0.4059],"nyda":[0,47,0.0],"nyla":[0,26387,0.8843],"oceana":[0,1104,0.6086],"olida":[0,5,0.0],"ollye":[0,5,0.0],"omera":[0,59,0.0],"oriel":[294,135,0.3608],"orlanda":[538,254,0.3938],"orlinda":[0,321,0.5013],"ovedia":[0,11,0.0],"ovetta":[0,118,0.4144],"ozena":[0,5,0.0],"pam":[23,33125,0.9035],"parma":[0,33,0.0],"perlean":[0,25,0.0],"pernia":[0,10,0.0],"peryl":[0,10,0.0],"piedad":[0,252,0.4803],"providenza":[0,11,0.0],"quinta":[41,201,0.396],"rafelita":[0,44,0.0],"regine":[0,1388,0.6285],"rhelda":[0,37,0.0],"rodessa":[0,57,0.0],"romelle":[159,338,0.3667],"rosalea":[0,666,0.5647],"rosemae":[0,114,0.4114],"rosene":[0,288,0.4919],"runelle":[0,38,0.0],"ruthel":[0,153,0.4369],"ruthia":[0,122,0.4173],"setsuko":[0,347,0.5081],"shelia":[111,47780,0.9339],"sherlie":[0,219,0.4681],"shigeno":[0,13,0.0],"shizuye":[0,84,0.0],"tabea":[0,10,0.0],"tamar":[885,6083,0.671],"tatiana":[35,35017,0.908],"telma":[0,269,0.486],"tempest":[0,1306,0.6232],"thedora":[0,103,0.4026],"theophane":[0,5,0.0],"thomasena":[0,768,0.5771],"tomacita":[0,17,0.0],"tomiye":[0,26,0.0],"tonnie":[473,684,0.3622],"toots":[0,5,0.0],"toula":[0,227,0.4712],"truda":[0,114,0.4114],"truly":[5,1031,0.6002],"tsurue":[0,25,0.0],"vadys":[0,5,0.0],"vanella":[0,10,0.0],"varnell":[180,98,0.3165],"varnie":[0,5,0.0],"verble":[57,80,0.2495],"vernella":[0,62,0.0],"victora":[0,197,0.4589],"victoriana":[0,365,0.5125],"virgilia":[0,99,0.0],"virginnia":[0,16,0.0],"vonna":[0,1095,0.6079],"waldean":[10,33,0.0],"wana":[0,195,0.458],"wanona":[0,102,0.4017],"wathena":[0,51,0.0],"welda":[0,118,0.4144],"wilmuth":[0,51,0.0],"winnell":[0,72,0.0],"winniefred":[0,54,0.0],"yone":[0,5,0.0],"yukiye":[0,40,0.0],"zenola":[0,101,0.4009],"zida":[0,5,0.0],"secundino":[338,0,0.5058],"trevor":[160758,611,0.9962],"ichiro":[286,0,0.4913],"augusto":[1692,0,0.6457],"hassell":[321,0,0.5013],"montague":[382,0,0.5164],"faris":[3074,20,0.6936],"shermon":[370,0,0.5136],"waldron":[198,0,0.4593],"antoni":[2291,5,0.6707],"herndon":[194,0,0.4576],"isao":[246,0,0.4782],"julis":[221,5,0.4604],"kenichi":[281,0,0.4897],"nester":[101,0,0.4009],"sigismund":[138,0,0.428],"tod":[7702,0,0.7773],"augustino":[476,0,0.5355],"darcy":[2760,23100,0.7883],"eulice":[234,5,0.4657],"rico":[9835,45,0.7953],"shirl":[448,1323,0.4853],"tamotsu":[199,0,0.4598],"broughton":[65,0,0.0],"ezio":[1386,0,0.6284],"fowler":[268,0,0.4856],"glenard":[202,0,0.4611],"hilman":[146,0,0.4329],"kazumi":[111,32,0.3346],"lynden":[1469,745,0.4439],"nasario":[501,0,0.54],"orlen":[259,0,0.4827],"pershing":[599,0,0.5555],"sebert":[149,0,0.4346],"shields":[88,0,0.0],"shizuo":[135,0,0.4261],"vencil":[155,0,0.4381],"winferd":[390,0,0.5182],"zigmont":[39,0,0.0],"zygmond":[10,0,0.0],"allwin":[22,0,0.0],"aston":[2955,209,0.6538],"bion":[120,0,0.4158],"burle":[62,0,0.0],"carrell":[427,64,0.4681],"conner":[56111,857,0.9368],"corbit":[54,0,0.0],"demar":[1313,0,0.6237],"derrill":[787,0,0.5792],"desire":[119,5253,0.7295],"emmerson":[589,2413,0.559],"eulan":[92,0,0.0],"ezekial":[1482,0,0.6342],"grenville":[30,0,0.0],"loreto":[494,21,0.5202],"marlen":[920,5470,0.6515],"marven":[714,0,0.5707],"melchior":[48,0,0.0],"patton":[1627,93,0.6121],"primitivo":[740,0,0.5738],"talton":[197,0,0.4589],"thaine":[182,0,0.452],"toxie":[33,0,0.0],"wilman":[230,0,0.4723],"zander":[27932,36,0.8882],"abdon":[359,0,0.511],"allard":[245,0,0.4778],"atilano":[167,0,0.4445],"cabell":[87,0,0.0],"camillus":[47,0,0.0],"casmere":[62,0,0.0],"clary":[177,302,0.338],"clate":[40,0,0.0],"dal":[622,0,0.5588],"darel":[2116,5,0.6637],"densel":[102,0,0.4017],"densil":[152,0,0.4364],"donell":[4814,591,0.6649],"dorian":[23627,4534,0.7466],"dorrell":[370,0,0.5136],"earsel":[145,13,0.4036],"el":[246,38,0.425],"elman":[176,0,0.4491],"ermil":[48,0,0.0],"excell":[412,5,0.5177],"filbert":[452,0,0.531],"gervase":[197,5,0.4497],"glenden":[104,0,0.4034],"gurnie":[108,0,0.4067],"hitoshi":[142,0,0.4305],"hodge":[68,0,0.0],"jos":[96,0,0.0],"kaiser":[3620,34,0.7059],"lenward":[352,0,0.5093],"leotis":[887,5,0.5868],"leston":[182,0,0.452],"lionell":[1606,0,0.6411],"livio":[182,0,0.452],"lyal":[145,0,0.4323],"merland":[107,0,0.4059],"mingo":[265,0,0.4846],"morrie":[330,0,0.5037],"orvan":[143,0,0.4311],"oswaldo":[5861,0,0.7536],"purcell":[454,0,0.5314],"quinn":[36324,49850,0.571],"remi":[3861,20840,0.7412],"ridley":[1457,1269,0.3672],"shigeto":[53,0,0.0],"tilghman":[58,0,0.0],"ulysee":[503,0,0.5403],"vernor":[118,0,0.4144],"voris":[110,0,0.4083],"voyd":[117,0,0.4136],"wesly":[1426,0,0.6308],"willet":[94,6,0.376],"williom":[174,0,0.4481],"aage":[7,0,0.0],"abelino":[873,0,0.5882],"aldus":[50,0,0.0],"altus":[82,0,0.0],"ancle":[38,0,0.0],"ansil":[25,0,0.0],"apolinar":[1292,5,0.6202],"arend":[138,0,0.428],"arlos":[37,0,0.0],"avard":[20,0,0.0],"battista":[42,0,0.0],"bazel":[17,0,0.0],"bertrum":[246,0,0.4782],"bristol":[565,10659,0.7693],"bronis":[17,0,0.0],"carnie":[90,22,0.3293],"chilton":[206,0,0.4628],"cirilo":[1122,0,0.61],"claton":[17,0,0.0],"cleston":[208,0,0.4636],"coyle":[116,0,0.4129],"cranford":[158,0,0.4397],"crispin":[1800,5,0.6495],"donavon":[5332,0,0.7454],"downing":[13,0,0.0],"duval":[532,0,0.5452],"earlin":[83,0,0.0],"emelio":[476,0,0.5355],"erroll":[822,0,0.583],"etheridge":[105,0,0.4042],"eugen":[226,0,0.4708],"freman":[81,0,0.0],"frutoso":[112,0,0.4098],"gavino":[1762,0,0.6492],"gershon":[937,0,0.5943],"greg":[77692,143,0.9764],"haney":[30,0,0.0],"herny":[177,0,0.4496],"hoyte":[262,0,0.4837],"jarold":[651,0,0.5627],"jr":[1705,0,0.6463],"kenna":[240,13173,0.8107],"laurens":[150,0,0.4352],"leeland":[3190,21,0.6967],"lenvil":[63,0,0.0],"leodis":[458,0,0.5322],"levester":[838,6,0.5811],"lilbern":[45,0,0.0],"markus":[14800,0,0.8341],"marlan":[1217,14,0.611],"marlo":[3583,7155,0.5372],"marx":[324,6,0.4945],"merion":[157,119,0.2777],"miron":[464,0,0.5333],"moris":[262,0,0.4837],"okley":[129,0,0.4221],"olindo":[26,0,0.0],"ores":[12,0,0.0],"orlyn":[287,0,0.4916],"orvell":[135,0,0.4261],"orwin":[49,0,0.0],"osmo":[13,0,0.0],"penn":[1160,22,0.6031],"ponciano":[264,0,0.4843],"prospero":[71,0,0.0],"prudencio":[401,0,0.5206],"rayman":[165,0,0.4435],"renald":[518,0,0.5429],"renzo":[2541,0,0.681],"rhodes":[2230,172,0.6277],"robbert":[580,0,0.5527],"roque":[2568,0,0.6819],"terrel":[2961,81,0.6781],"tetsuo":[268,0,0.4856],"thayne":[1442,0,0.6318],"uel":[75,0,0.0],"veston":[31,0,0.0],"wataru":[142,0,0.4305],"weikko":[33,0,0.0],"willys":[103,0,0.4026],"younger":[7,0,0.0],"alfio":[203,0,0.4615],"alick":[65,0,0.0],"amory":[668,622,0.3222],"andie":[206,5087,0.7158],"arvine":[99,0,0.0],"augie":[730,10,0.5661],"avelino":[1049,0,0.6042],"bacil":[11,0,0.0],"baird":[471,0,0.5346],"baltazar":[2697,0,0.6862],"barto":[33,0,0.0],"beacher":[76,0,0.0],"benford":[366,0,0.5127],"benn":[382,0,0.5164],"bently":[2424,81,0.6578],"berley":[131,0,0.4235],"berney":[52,0,0.0],"bertran":[132,0,0.4241],"burman":[120,0,0.4158],"calton":[299,0,0.4951],"carel":[166,60,0.3458],"caspar":[381,0,0.5162],"clabon":[27,0,0.0],"clearnce":[482,0,0.5366],"clee":[103,0,0.4026],"clent":[199,0,0.4598],"cletes":[16,0,0.0],"cleto":[180,0,0.4511],"corney":[65,0,0.0],"courtenay":[246,1189,0.5231],"crowell":[12,0,0.0],"culver":[164,0,0.443],"daley":[151,461,0.4198],"day":[136,161,0.2681],"delio":[98,0,0.0],"dellas":[95,0,0.0],"derward":[110,0,0.4083],"dominico":[435,0,0.5277],"domonick":[1137,0,0.6112],"dwane":[3171,0,0.7002],"earney":[49,0,0.0],"edgel":[121,0,0.4166],"efren":[8132,0,0.782],"egan":[1192,49,0.5943],"eitel":[19,0,0.0],"elof":[6,0,0.0],"emmitte":[67,0,0.0],"enio":[94,0,0.0],"enzo":[30378,37,0.8955],"ermin":[157,0,0.4392],"eslie":[60,60,0.2079],"esten":[233,0,0.4735],"everardo":[4854,0,0.7372],"everrett":[291,0,0.4928],"exum":[11,0,0.0],"fausto":[2885,0,0.692],"forrester":[110,0,0.4083],"fortune":[199,316,0.3328],"fredrich":[424,0,0.5255],"fremon":[78,0,0.0],"gailen":[250,6,0.4704],"garlen":[133,0,0.4248],"gather":[16,0,0.0],"gaylen":[2025,348,0.5761],"gurdon":[54,0,0.0],"gwyn":[299,2105,0.5921],"halfred":[6,0,0.0],"harace":[151,0,0.4358],"harbin":[22,0,0.0],"harlis":[212,0,0.4653],"harrey":[24,0,0.0],"haydn":[1830,397,0.5502],"heinz":[649,0,0.5624],"horrace":[73,0,0.0],"howland":[22,0,0.0],"humberto":[16899,10,0.8451],"hurchel":[55,0,0.0],"hurshell":[131,0,0.4235],"hurst":[16,0,0.0],"hyram":[66,0,0.0],"irey":[6,0,0.0],"isaias":[17887,0,0.8505],"jerl":[178,0,0.4501],"jerrel":[2448,26,0.6715],"jessy":[4652,2070,0.5298],"joey":[53474,7497,0.8393],"kasmer":[24,0,0.0],"kelso":[373,0,0.5143],"kieth":[2837,0,0.6906],"ladd":[1303,0,0.623],"lagrand":[17,0,0.0],"lamonte":[3402,0,0.7063],"larney":[34,0,0.0],"laron":[5178,119,0.7281],"lawerance":[995,0,0.5996],"lock":[16,0,0.0],"lopez":[90,0,0.0],"lorentz":[23,0,0.0],"luca":[68707,1624,0.947],"luie":[145,0,0.4323],"lunnie":[16,11,0.0],"luthur":[37,0,0.0],"marce":[111,169,0.2954],"marten":[506,0,0.5408],"master":[467,0,0.5339],"maylon":[322,7,0.4927],"medardo":[377,0,0.5153],"merald":[39,0,0.0],"merten":[6,0,0.0],"method":[24,0,0.0],"money":[41,68,0.2542],"naman":[513,0,0.542],"nathanael":[21774,17,0.867],"neuman":[51,0,0.0],"newland":[22,0,0.0],"nial":[144,0,0.4317],"norland":[16,0,0.0],"odom":[37,0,0.0],"orace":[14,0,0.0],"orean":[16,102,0.3582],"ottavio":[90,0,0.0],"ove":[40,0,0.0],"parish":[901,302,0.4614],"plumer":[72,24,0.0],"port":[18,0,0.0],"rabun":[23,0,0.0],"randy":[329266,5005,0.985],"reidar":[16,0,0.0],"ridgway":[6,0,0.0],"rocci":[21,0,0.0],"rolan":[1067,0,0.6056],"ronda":[359,34316,0.8986],"ruford":[71,0,0.0],"serafin":[1757,0,0.649],"shady":[328,202,0.3372],"shigenobu":[6,0,0.0],"shinichi":[89,0,0.0],"standley":[382,0,0.5164],"stanely":[228,0,0.4716],"sylvian":[12,0,0.0],"tatsuo":[222,0,0.4693],"tracey":[8682,86505,0.9049],"trento":[6,0,0.0],"vaden":[561,6,0.5449],"vastine":[33,0,0.0],"vel":[11,13,0.0],"veril":[22,5,0.0],"wayde":[2255,0,0.6706],"weber":[102,0,0.4017],"welburn":[12,0,0.0],"wenceslaus":[61,0,0.0],"wester":[31,0,0.0],"abert":[15,0,0.0],"abran":[2101,0,0.6645],"adelore":[5,0,0.0],"alben":[204,0,0.4619],"alcus":[74,0,0.0],"alexandre":[5177,145,0.7249],"alonso":[11905,0,0.8151],"alvester":[490,0,0.538],"anastasio":[174,0,0.4481],"angelos":[270,0,0.4863],"arbor":[222,380,0.3509],"argel":[127,0,0.4208],"armel":[267,0,0.4853],"arnaldo":[2075,0,0.6634],"arney":[67,0,0.0],"arzie":[53,0,0.0],"audis":[16,0,0.0],"auguster":[29,0,0.0],"ausby":[10,0,0.0],"auzie":[10,0,0.0],"battle":[10,0,0.0],"beach":[5,0,0.0],"beldon":[93,0,0.0],"berge":[22,0,0.0],"bern":[86,0,0.0],"berne":[48,0,0.0],"bolish":[10,0,0.0],"bomer":[5,0,0.0],"boswell":[5,0,0.0],"brandt":[6089,38,0.7528],"bransford":[5,0,0.0],"braulio":[5067,0,0.741],"brigido":[322,0,0.5016],"brook":[3376,10597,0.6288],"bunny":[149,1819,0.6089],"calixto":[554,0,0.5487],"camden":[57434,3771,0.8984],"carless":[151,0,0.4358],"carold":[139,0,0.4286],"casimier":[35,0,0.0],"casto":[21,0,0.0],"cebert":[83,0,0.0],"cesar":[77992,315,0.9748],"cesare":[675,0,0.5659],"charels":[134,0,0.4254],"chess":[29,0,0.0],"christos":[2857,0,0.6912],"clairmont":[21,0,0.0],"clarkson":[150,0,0.4352],"clellie":[5,7,0.0],"climon":[16,0,0.0],"cloid":[37,0,0.0],"cloys":[96,0,0.0],"colan":[237,0,0.4749],"compton":[81,0,0.0],"cort":[1904,0,0.6559],"crandall":[292,0,0.4931],"cristino":[332,0,0.5042],"curties":[62,0,0.0],"cyprian":[361,0,0.5115],"cyrill":[36,0,0.0],"damase":[5,0,0.0],"deloyd":[130,0,0.4228],"denman":[161,0,0.4414],"dennison":[760,0,0.5762],"deryl":[1826,190,0.5986],"dewit":[5,0,0.0],"doak":[189,0,0.4553],"domer":[36,0,0.0],"donaldson":[122,0,0.4173],"dorsel":[71,0,0.0],"dowell":[211,0,0.4649],"drayton":[2012,0,0.6607],"duffy":[627,16,0.5477],"duglas":[207,0,0.4632],"dumont":[21,0,0.0],"durham":[303,0,0.4963],"earnst":[25,0,0.0],"edley":[38,0,0.0],"edvin":[1031,0,0.6027],"eldwin":[74,0,0.0],"ellwyn":[82,0,0.0],"elzo":[36,0,0.0],"emeterio":[377,0,0.5153],"ernel":[10,0,0.0],"ero":[57,0,0.0],"errett":[23,0,0.0],"escar":[30,0,0.0],"eskil":[14,0,0.0],"espie":[17,7,0.0],"eugine":[297,0,0.4946],"eustacio":[292,0,0.4931],"ewalt":[5,0,0.0],"fabio":[2848,0,0.6909],"ferdynand":[5,0,0.0],"filiberto":[2474,0,0.6787],"filippo":[697,0,0.5686],"flavian":[25,0,0.0],"flay":[80,5,0.0],"flemming":[35,0,0.0],"frans":[150,0,0.4352],"fraser":[535,0,0.5457],"fulvio":[25,0,0.0],"fumio":[129,0,0.4221],"gains":[23,0,0.0],"galileo":[505,0,0.5407],"garr":[32,0,0.0],"gent":[40,0,0.0],"georg":[486,10,0.5282],"geter":[5,0,0.0],"glendale":[544,81,0.4867],"glendell":[491,92,0.4658],"hager":[84,39,0.2855],"haines":[59,0,0.0],"halstead":[5,0,0.0],"halton":[152,0,0.4364],"hamlin":[63,0,0.0],"hancel":[78,0,0.0],"hannon":[62,10,0.0],"hargus":[10,0,0.0],"harlee":[479,7779,0.7379],"hartsel":[58,0,0.0],"hartsell":[38,0,0.0],"hayne":[36,0,0.0],"helmar":[10,0,0.0],"herley":[149,0,0.4346],"heston":[1553,0,0.6382],"hollice":[55,22,0.0],"hurschel":[67,0,0.0],"idas":[5,0,0.0],"irie":[606,2659,0.5723],"ivison":[5,0,0.0],"ivyl":[5,0,0.0],"jac":[600,0,0.5556],"jetson":[727,0,0.5723],"jomes":[89,0,0.0],"jud":[622,0,0.5588],"kalmer":[5,0,0.0],"kell":[234,0,0.4738],"kempton":[282,0,0.49],"kendal":[4664,9073,0.5466],"kennett":[207,0,0.4632],"killian":[15446,600,0.8096],"lace":[16,417,0.5078],"laton":[32,0,0.0],"lavar":[2067,11,0.66],"lawless":[24,0,0.0],"layman":[244,0,0.4775],"lemual":[60,0,0.0],"lenville":[164,0,0.443],"lesslie":[142,499,0.437],"lewell":[39,0,0.0],"lewin":[258,0,0.4823],"lilbert":[10,0,0.0],"lilton":[210,0,0.4644],"limon":[10,0,0.0],"lindo":[57,0,0.0],"lorance":[174,0,0.4481],"loras":[227,0,0.4712],"lorren":[368,409,0.3043],"lorry":[221,1024,0.5091],"lory":[267,2258,0.6085],"loyall":[10,0,0.0],"ludwell":[5,0,0.0],"luiz":[3321,0,0.7043],"macdonald":[154,0,0.4375],"makoto":[541,0,0.5466],"mamoru":[182,0,0.452],"mansell":[15,0,0.0],"marcellous":[1049,0,0.6042],"masayuki":[194,0,0.4576],"mead":[118,0,0.4144],"menzo":[27,0,0.0],"merdith":[63,62,0.2114],"mert":[529,0,0.5447],"michiel":[1040,5,0.6009],"michio":[90,0,0.0],"mick":[2423,0,0.6769],"middleton":[34,0,0.0],"minot":[10,0,0.0],"minter":[56,0,0.0],"minus":[48,0,0.0],"miro":[257,0,0.482],"mitsugi":[88,0,0.0],"mozart":[15,0,0.0],"mulford":[23,0,0.0],"murlyn":[20,11,0.0],"myrlin":[15,15,0.0],"nathinel":[45,0,0.0],"nevel":[16,11,0.0],"noral":[5,0,0.0],"oba":[67,0,0.0],"oder":[5,0,0.0],"olice":[52,7,0.0],"olva":[5,0,0.0],"oram":[10,0,0.0],"oras":[42,0,0.0],"ordie":[26,5,0.0],"orey":[79,0,0.0],"orus":[16,0,0.0],"osbon":[30,0,0.0],"osgood":[18,0,0.0],"pancho":[202,0,0.4611],"pendleton":[49,13,0.0],"philibert":[5,0,0.0],"procopio":[39,0,0.0],"rabon":[286,0,0.4913],"ragnar":[733,0,0.573],"ransome":[152,0,0.4364],"redell":[248,73,0.3873],"relis":[5,0,0.0],"ren":[2604,728,0.5506],"revel":[340,137,0.3818],"rexall":[24,0,0.0],"rey":[9431,502,0.759],"reynard":[715,0,0.5709],"rusell":[62,0,0.0],"saichi":[5,0,0.0],"samp":[5,0,0.0],"scotty":[18899,331,0.842],"seamon":[23,0,0.0],"sellers":[32,6,0.0],"sever":[5,0,0.0],"severn":[126,0,0.4201],"sewall":[11,0,0.0],"shiro":[208,0,0.4636],"shuford":[39,0,0.0],"shurman":[22,0,0.0],"silvo":[5,0,0.0],"sixto":[1748,0,0.6485],"slater":[2223,56,0.655],"soichi":[10,0,0.0],"spero":[316,0,0.4999],"stancel":[10,0,0.0],"stelmo":[35,0,0.0],"stoy":[89,0,0.0],"thorald":[5,0,0.0],"till":[50,0,0.0],"tome":[68,0,0.0],"tomio":[102,0,0.4017],"toshiyuki":[94,0,0.0],"tullie":[17,5,0.0],"ty":[47294,732,0.922],"vaclav":[10,0,0.0],"vail":[107,415,0.4321],"vandy":[299,193,0.3272],"venard":[47,0,0.0],"vence":[78,0,0.0],"verlis":[15,0,0.0],"vernes":[10,0,0.0],"verney":[17,0,0.0],"vincel":[20,0,0.0],"virginio":[95,0,0.0],"wadell":[316,0,0.4999],"wagner":[337,0,0.5055],"wardie":[49,13,0.0],"warne":[32,0,0.0],"wavy":[17,0,0.0],"welles":[428,10,0.5162],"wencil":[10,0,0.0],"whitmore":[5,0,0.0],"willim":[257,0,0.482],"willoughby":[223,86,0.3594],"woodro":[16,0,0.0],"wyllys":[10,0,0.0],"yewell":[11,0,0.0],"zygmont":[50,0,0.0],"tatsuko":[0,39,0.0],"marjoria":[0,155,0.4381],"dolora":[0,87,0.0],"doralee":[0,511,0.5417],"ettamae":[0,101,0.4009],"marcelene":[0,930,0.5937],"ovelia":[0,65,0.0],"wilburta":[0,88,0.0],"winnefred":[0,49,0.0],"adelfa":[0,345,0.5076],"bettyjane":[0,788,0.5793],"coramae":[0,59,0.0],"diamantina":[0,654,0.5631],"edytha":[0,25,0.0],"guyla":[0,455,0.5316],"jeanine":[11,23806,0.875],"opaline":[0,202,0.4611],"pauleen":[0,142,0.4305],"anselma":[0,189,0.4553],"athelene":[0,110,0.4083],"lorenda":[0,829,0.5837],"meriel":[0,376,0.515],"michi":[8,143,0.4127],"mitsuye":[0,104,0.4034],"mitsuyo":[0,39,0.0],"oramae":[0,20,0.0],"venetia":[0,1276,0.6212],"vonceil":[0,282,0.49],"winola":[0,108,0.4067],"aldeen":[0,61,0.0],"anetha":[0,99,0.0],"arnola":[0,70,0.0],"cecylia":[0,145,0.4323],"dalma":[0,106,0.4051],"delzora":[0,53,0.0],"eliese":[0,79,0.0],"euretha":[0,101,0.4009],"georgiann":[0,1963,0.6586],"idel":[6,18,0.0],"ireene":[0,97,0.0],"jennieve":[0,18,0.0],"lenamae":[0,51,0.0],"londa":[0,1669,0.6445],"lorice":[0,344,0.5073],"madgeline":[0,74,0.0],"maren":[5,12401,0.8184],"marthella":[0,116,0.4129],"marysue":[0,440,0.5287],"maudella":[0,60,0.0],"sachiko":[0,662,0.5642],"sheba":[0,1173,0.6139],"sumiye":[0,88,0.0],"adora":[0,2295,0.6722],"alameda":[0,31,0.0],"aldyth":[0,19,0.0],"alexia":[44,45945,0.9316],"alna":[0,46,0.0],"altamae":[0,36,0.0],"anola":[0,244,0.4775],"calogera":[0,26,0.0],"cleopha":[0,84,0.0],"coralyn":[0,1105,0.6087],"dellamae":[0,79,0.0],"delna":[0,44,0.0],"denelda":[0,111,0.4091],"eleene":[0,49,0.0],"erdene":[0,23,0.0],"fama":[0,92,0.0],"fujie":[0,91,0.0],"glatha":[0,38,0.0],"idia":[0,34,0.0],"inabelle":[0,48,0.0],"itsuko":[0,50,0.0],"ivia":[0,17,0.0],"josette":[0,6549,0.7632],"joycelyn":[0,6605,0.764],"kazuye":[0,18,0.0],"laetitia":[0,375,0.5148],"leomia":[0,115,0.4121],"lile":[31,84,0.301],"lorea":[0,190,0.4558],"lucymae":[0,43,0.0],"luecile":[0,35,0.0],"madia":[0,199,0.4598],"marbeth":[0,96,0.0],"marcine":[0,995,0.5996],"mariko":[6,1309,0.6209],"merian":[0,204,0.4619],"mildrid":[0,36,0.0],"noami":[0,899,0.5908],"norean":[0,38,0.0],"oradell":[0,56,0.0],"perfecta":[0,25,0.0],"perlene":[0,56,0.0],"roselene":[0,222,0.4693],"rowene":[0,142,0.4305],"savanna":[15,32745,0.9027],"tatsue":[0,14,0.0],"valorie":[0,7517,0.7752],"alfrida":[0,46,0.0],"alicemarie":[0,29,0.0],"alvene":[0,6,0.0],"annita":[0,1376,0.6277],"arleene":[0,388,0.5178],"arnella":[0,166,0.444],"arzola":[0,11,0.0],"athleen":[0,141,0.4298],"auline":[0,38,0.0],"avanel":[0,11,0.0],"beauton":[0,38,0.0],"betti":[0,849,0.5858],"bettylou":[0,1390,0.6286],"bleeker":[0,6,0.0],"boneta":[0,159,0.4403],"brooxie":[0,35,0.0],"burna":[0,122,0.4173],"caretha":[0,293,0.4934],"cloteen":[0,6,0.0],"cosma":[0,28,0.0],"damaris":[552,12581,0.7891],"danie":[544,267,0.3903],"deelda":[0,6,0.0],"delitha":[0,60,0.0],"deloise":[0,1887,0.6552],"delrose":[0,138,0.428],"dianna":[64,56222,0.949],"dionisia":[0,234,0.4738],"doramae":[0,34,0.0],"dorrine":[0,308,0.4977],"dymple":[0,40,0.0],"edelle":[0,35,0.0],"ellice":[0,402,0.5208],"elrena":[0,18,0.0],"emi":[0,4055,0.7216],"emiko":[5,1789,0.649],"emilee":[8,23908,0.8754],"evadene":[0,72,0.0],"fennie":[0,25,0.0],"fifi":[0,141,0.4298],"flores":[19,11,0.0],"francile":[0,100,0.4],"ganelle":[0,21,0.0],"geneiveve":[0,33,0.0],"gerlene":[0,268,0.4856],"gerta":[0,17,0.0],"graciela":[39,16205,0.8401],"guynell":[0,103,0.4026],"harriot":[0,16,0.0],"hellena":[0,184,0.453],"henerietta":[0,16,0.0],"herberta":[0,106,0.4051],"ileta":[0,261,0.4833],"iota":[0,6,0.0],"janeva":[0,389,0.518],"jeune":[0,26,0.0],"jolan":[278,134,0.3529],"kikuye":[0,95,0.0],"kristine":[185,84275,0.9832],"lajune":[0,428,0.5263],"leonita":[0,29,0.0],"lil":[0,126,0.4201],"liliane":[0,828,0.5836],"lilliane":[0,244,0.4775],"lorayn":[0,12,0.0],"luria":[0,69,0.0],"lylah":[0,8037,0.781],"maggielean":[0,6,0.0],"malvine":[0,22,0.0],"margerite":[0,78,0.0],"margrie":[0,33,0.0],"marguritte":[0,48,0.0],"martella":[0,21,0.0],"marylois":[0,11,0.0],"masel":[0,52,0.0],"matrona":[0,6,0.0],"maudeen":[0,42,0.0],"mealie":[0,6,0.0],"melicent":[0,55,0.0],"merilda":[0,21,0.0],"midge":[0,805,0.5812],"milada":[0,42,0.0],"milady":[0,147,0.4335],"milred":[0,11,0.0],"mishie":[0,6,0.0],"myrlene":[0,332,0.5042],"naydene":[0,66,0.0],"neddie":[32,65,0.0],"nicholina":[0,35,0.0],"nilah":[0,1380,0.628],"ortrude":[0,6,0.0],"piney":[0,36,0.0],"raechel":[0,2276,0.6714],"raffie":[5,23,0.0],"randa":[0,3682,0.7132],"reathel":[6,127,0.4056],"reeda":[0,415,0.5236],"rovilla":[0,11,0.0],"ruthell":[0,234,0.4738],"saleta":[0,31,0.0],"sarena":[0,2471,0.6786],"seraphina":[0,3602,0.7113],"sirkka":[0,6,0.0],"stanislava":[0,16,0.0],"syliva":[0,485,0.5371],"tita":[0,236,0.4746],"trine":[40,308,0.4499],"truma":[0,6,0.0],"tsuyuko":[0,51,0.0],"umeko":[0,52,0.0],"valasta":[0,6,0.0],"valesta":[0,6,0.0],"valrea":[0,6,0.0],"velera":[0,80,0.0],"verdelle":[0,242,0.4768],"veria":[0,358,0.5108],"viana":[0,793,0.5799],"vidella":[0,16,0.0],"virtue":[0,45,0.0],"vondell":[204,279,0.3101],"walcie":[0,20,0.0],"wannie":[11,39,0.0],"wilmah":[0,13,0.0],"yolando":[5,468,0.5293],"ysobel":[0,6,0.0],"zenora":[0,91,0.0],"adelaine":[0,625,0.5592],"adis":[254,12,0.4631],"adolpha":[0,5,0.0],"agnese":[0,16,0.0],"ailine":[0,92,0.0],"alaine":[0,1443,0.6319],"alexa":[284,131304,0.9978],"alfredia":[0,1131,0.6107],"alieda":[0,5,0.0],"allah":[175,16,0.418],"alli":[5,3787,0.7148],"amelda":[0,198,0.4593],"amilee":[0,171,0.4466],"andreita":[0,10,0.0],"ardina":[0,17,0.0],"arelene":[0,165,0.4435],"arine":[0,85,0.0],"arleaner":[0,5,0.0],"ather":[22,17,0.0],"avalene":[0,258,0.4823],"awilda":[0,1725,0.6474],"bambina":[0,16,0.0],"benetta":[0,438,0.5283],"berlene":[0,178,0.4501],"berthena":[0,54,0.0],"bethena":[0,48,0.0],"beva":[0,156,0.4386],"birder":[0,18,0.0],"biruta":[0,5,0.0],"bobetta":[0,101,0.4009],"borgny":[0,5,0.0],"brita":[0,1097,0.608],"britta":[0,3668,0.7129],"burdella":[0,51,0.0],"carrine":[0,156,0.4386],"cathren":[0,69,0.0],"cathrin":[0,33,0.0],"cealie":[0,5,0.0],"cedell":[60,5,0.0],"chrysteen":[0,5,0.0],"clairene":[0,47,0.0],"cleara":[0,5,0.0],"cletys":[0,5,0.0],"clydene":[0,432,0.5271],"coda":[917,165,0.5143],"colena":[0,61,0.0],"corabell":[0,26,0.0],"coren":[148,109,0.2776],"corma":[0,10,0.0],"cornella":[0,72,0.0],"corra":[0,417,0.524],"corrina":[0,5855,0.7535],"cristine":[0,4091,0.7224],"cylvia":[0,5,0.0],"danica":[0,16391,0.8429],"danna":[134,24315,0.8728],"daphene":[0,578,0.5524],"dare":[63,65,0.214],"davina":[0,11012,0.8084],"delanie":[0,5053,0.7407],"delilia":[0,22,0.0],"desales":[0,5,0.0],"dilia":[0,250,0.4796],"dolley":[0,5,0.0],"dorethy":[0,98,0.0],"dorothyann":[0,152,0.4364],"dorthula":[0,63,0.0],"doye":[106,20,0.3534],"eduvigen":[0,5,0.0],"edyce":[0,5,0.0],"eldrid":[23,5,0.0],"eleana":[0,1649,0.6434],"eleda":[0,31,0.0],"elize":[16,425,0.5097],"ellabelle":[0,53,0.0],"elmarie":[0,272,0.4869],"eltra":[0,10,0.0],"elvada":[0,15,0.0],"emly":[0,20,0.0],"emy":[0,1434,0.6313],"eoline":[0,11,0.0],"ermalee":[0,106,0.4051],"ermaline":[0,36,0.0],"ernesteen":[0,249,0.4792],"estalee":[0,86,0.0],"esteen":[0,88,0.0],"estele":[0,16,0.0],"estelline":[0,22,0.0],"etheldreda":[0,5,0.0],"etrulia":[0,104,0.4034],"eua":[0,23,0.0],"eudice":[0,5,0.0],"evabelle":[0,25,0.0],"evaleen":[0,226,0.4708],"evanell":[0,132,0.4241],"everal":[5,5,0.0],"evola":[0,85,0.0],"fanna":[0,5,0.0],"felicite":[0,106,0.4051],"flarrie":[0,5,0.0],"floice":[0,10,0.0],"floral":[0,10,0.0],"floreda":[0,15,0.0],"florestine":[0,170,0.4461],"forrestine":[0,128,0.4214],"francese":[0,22,0.0],"fredrika":[0,290,0.4925],"freta":[0,30,0.0],"gara":[0,339,0.506],"gelia":[0,5,0.0],"geneta":[0,38,0.0],"geneveve":[0,53,0.0],"georganne":[0,1257,0.6199],"georgenia":[0,118,0.4144],"gerarda":[0,158,0.4397],"giselda":[0,26,0.0],"gretha":[0,41,0.0],"gustine":[0,46,0.0],"haroldine":[0,235,0.4742],"hatsuye":[0,33,0.0],"hilde":[0,379,0.5157],"hinda":[0,1567,0.639],"idele":[0,20,0.0],"idola":[0,44,0.0],"idonna":[0,111,0.4091],"imogine":[0,61,0.0],"ineta":[0,130,0.4228],"innie":[0,5,0.0],"iria":[10,90,0.36],"isaura":[0,1506,0.6356],"isbell":[0,15,0.0],"ismay":[0,52,0.0],"jacquetta":[0,1705,0.6463],"janne":[0,511,0.5417],"jenell":[0,3062,0.6972],"jeroline":[0,159,0.4403],"johnella":[0,150,0.4352],"johnye":[0,132,0.4241],"juletta":[0,63,0.0],"jullie":[0,456,0.5318],"junerose":[0,22,0.0],"junette":[0,268,0.4856],"karene":[0,501,0.54],"kathalyn":[0,29,0.0],"katherne":[0,21,0.0],"kathrene":[0,179,0.4506],"kazmiera":[0,5,0.0],"kazu":[10,5,0.0],"ladema":[0,11,0.0],"ladine":[0,82,0.0],"ladye":[0,99,0.0],"lamora":[0,15,0.0],"laurencia":[0,89,0.0],"lavana":[0,119,0.4151],"lavara":[0,5,0.0],"lean":[205,671,0.4508],"leatta":[0,66,0.0],"lefa":[0,17,0.0],"leller":[0,10,0.0],"lenabelle":[0,21,0.0],"lenola":[0,93,0.0],"lerline":[0,68,0.0],"leticia":[215,42860,0.9222],"levera":[0,59,0.0],"levonne":[26,342,0.4769],"lilianne":[0,867,0.5876],"lilyann":[0,3285,0.7033],"loice":[6,52,0.0],"lolabelle":[0,5,0.0],"lolly":[0,342,0.5068],"lonna":[0,3351,0.705],"lorece":[0,100,0.4],"lorelei":[0,17482,0.8485],"louette":[0,20,0.0],"lourdes":[69,14744,0.8302],"lubie":[17,5,0.0],"luciele":[0,5,0.0],"lucrecia":[0,1068,0.6057],"luegene":[5,10,0.0],"luevinia":[0,13,0.0],"lulabell":[0,36,0.0],"lusia":[0,243,0.4771],"maddalena":[0,850,0.5859],"madel":[0,11,0.0],"madelle":[0,24,0.0],"madlin":[0,32,0.0],"manuella":[0,625,0.5592],"marceda":[0,17,0.0],"marcedes":[5,306,0.4905],"marene":[0,162,0.4419],"margarat":[0,10,0.0],"maribell":[0,569,0.551],"maribeth":[0,6080,0.7568],"maryagnes":[0,78,0.0],"maryalyce":[0,66,0.0],"marylena":[0,5,0.0],"marzetta":[0,212,0.4653],"maudene":[0,73,0.0],"maydel":[0,5,0.0],"maynette":[0,15,0.0],"mayvis":[0,218,0.4677],"meleta":[0,17,0.0],"meribeth":[0,476,0.5355],"merideth":[6,1755,0.6469],"mieko":[5,310,0.4917],"minyon":[0,58,0.0],"mirth":[0,5,0.0],"monetta":[0,228,0.4716],"moyra":[0,43,0.0],"myrt":[0,5,0.0],"myrtlee":[0,11,0.0],"narvell":[22,26,0.0],"nata":[0,14,0.0],"nataline":[0,114,0.4114],"nellye":[0,59,0.0],"nette":[0,11,0.0],"nioma":[0,95,0.0],"nokomis":[0,60,0.0],"nolene":[0,58,0.0],"norvelle":[16,24,0.0],"novel":[53,34,0.0],"olea":[0,48,0.0],"olle":[12,5,0.0],"ollene":[0,5,0.0],"onah":[0,11,0.0],"oppie":[0,5,0.0],"ormi":[0,5,0.0],"ovis":[5,5,0.0],"oweda":[0,44,0.0],"pensacola":[0,5,0.0],"pollye":[0,22,0.0],"readie":[0,22,0.0],"rebbeca":[0,928,0.5935],"rebbie":[0,90,0.0],"reetha":[0,5,0.0],"ritha":[0,140,0.4292],"robertta":[0,77,0.0],"robinette":[0,776,0.578],"rodella":[0,49,0.0],"roise":[0,72,0.0],"rollande":[0,68,0.0],"romola":[0,56,0.0],"rosalene":[0,498,0.5394],"rosalla":[0,5,0.0],"rosamay":[0,5,0.0],"rosebell":[0,30,0.0],"rosebelle":[0,31,0.0],"roseland":[0,122,0.4173],"rositta":[0,15,0.0],"rovenia":[0,60,0.0],"roza":[0,397,0.5198],"rozia":[0,5,0.0],"rua":[0,57,0.0],"rula":[0,154,0.4375],"sabine":[0,3299,0.7037],"sabrina":[347,141633,0.9976],"sady":[0,232,0.4731],"samuella":[0,260,0.483],"shadie":[16,101,0.3571],"sulema":[0,2002,0.6603],"sumi":[0,206,0.4628],"suoma":[0,5,0.0],"suzann":[0,4034,0.7211],"sybol":[0,101,0.4009],"takako":[0,148,0.4341],"tamaye":[0,10,0.0],"temperance":[0,3610,0.7115],"thada":[0,11,0.0],"thedra":[0,15,0.0],"themis":[5,10,0.0],"thusnelda":[0,10,0.0],"tomi":[131,2793,0.6621],"treasa":[0,1671,0.6446],"trudis":[0,5,0.0],"tsuruyo":[0,5,0.0],"ulva":[0,5,0.0],"uta":[0,26,0.0],"utahna":[0,25,0.0],"vadah":[0,10,0.0],"vadia":[0,5,0.0],"vaudine":[0,77,0.0],"vaudis":[0,16,0.0],"veleda":[0,122,0.4173],"veramae":[0,39,0.0],"vernada":[0,10,0.0],"vernadine":[0,231,0.4727],"vero":[20,5,0.0],"vi":[125,955,0.5365],"vickey":[140,5807,0.7371],"viginia":[0,15,0.0],"vilena":[0,26,0.0],"vincentina":[0,80,0.0],"vinna":[0,15,0.0],"violanda":[0,105,0.4042],"viriginia":[0,167,0.4445],"virlee":[0,87,0.0],"wetona":[0,63,0.0],"willamina":[0,474,0.5352],"winefred":[0,105,0.4042],"winnona":[0,157,0.4392],"wonda":[0,1776,0.6499],"yachiyo":[0,22,0.0],"zolar":[0,5,0.0],"verdun":[81,8,0.0],"warnie":[141,0,0.4298],"cono":[146,0,0.4329],"duel":[280,0,0.4894],"tatsumi":[39,0,0.0],"alek":[4513,86,0.7188],"banner":[731,35,0.5505],"coston":[92,0,0.0],"delmo":[105,0,0.4042],"derwin":[3817,0,0.7163],"hartman":[100,0,0.4],"hezikiah":[99,0,0.0],"leandrew":[1010,0,0.6009],"lomax":[133,0,0.4248],"osburn":[51,0,0.0],"alvino":[1448,0,0.6322],"argil":[62,0,0.0],"bernabe":[1807,0,0.6514],"bernon":[68,0,0.0],"briscoe":[84,0,0.0],"hafford":[9,0,0.0],"ishmeal":[301,0,0.4957],"mirko":[174,0,0.4481],"philemon":[915,0,0.5923],"vincente":[2867,0,0.6915],"alphus":[121,0,0.4166],"baldomero":[1074,0,0.6062],"benie":[35,0,0.0],"cordis":[58,0,0.0],"damiano":[525,0,0.544],"glenmore":[65,0,0.0],"godfred":[18,0,0.0],"goro":[77,0,0.0],"hallet":[38,0,0.0],"havis":[47,0,0.0],"horris":[84,0,0.0],"karel":[601,1208,0.435],"lavoy":[205,0,0.4624],"linville":[407,0,0.5219],"llewelyn":[160,10,0.4198],"marston":[396,0,0.5195],"nazzareno":[24,0,0.0],"orest":[294,0,0.4937],"prather":[65,0,0.0],"rody":[379,0,0.5157],"vaino":[8,0,0.0],"virgal":[220,5,0.46],"virgilio":[1476,0,0.6338],"willem":[2788,0,0.6891],"ameal":[17,0,0.0],"amedio":[63,0,0.0],"arl":[54,0,0.0],"arnim":[7,0,0.0],"artell":[7,5,0.0],"artist":[769,76,0.5327],"baldo":[77,0,0.0],"baltasar":[56,0,0.0],"clardie":[7,0,0.0],"curran":[1151,30,0.5988],"deforrest":[90,0,0.0],"deloy":[398,0,0.52],"elbie":[81,10,0.0],"eldie":[31,17,0.0],"elgan":[12,0,0.0],"elster":[139,0,0.4286],"fergus":[547,0,0.5476],"flemon":[102,0,0.4017],"gaddis":[39,0,0.0],"garvey":[319,0,0.5008],"garwood":[74,0,0.0],"gwin":[133,52,0.326],"gwynn":[133,1033,0.5434],"haldon":[92,0,0.0],"harlo":[277,404,0.3362],"harwell":[46,0,0.0],"hasten":[122,0,0.4173],"heriberto":[10227,16,0.8008],"heron":[670,16,0.554],"hilery":[73,36,0.2729],"hollan":[37,120,0.3357],"jaime":[71068,50031,0.5869],"leck":[12,0,0.0],"lehmon":[37,0,0.0],"leith":[649,110,0.4926],"lycurgus":[7,0,0.0],"marks":[93,0,0.0],"morell":[68,0,0.0],"nyal":[119,0,0.4151],"oddis":[87,0,0.0],"odon":[17,0,0.0],"oscor":[12,0,0.0],"raford":[169,0,0.4456],"raymund":[574,0,0.5518],"robertson":[516,0,0.5425],"sherrod":[1970,5,0.6574],"shorty":[30,0,0.0],"sterlin":[731,0,0.5728],"sunday":[102,2920,0.6726],"thane":[2570,0,0.682],"tokuo":[25,0,0.0],"tsuneo":[113,0,0.4106],"valdo":[33,0,0.0],"vittorio":[1256,0,0.6198],"windle":[413,0,0.5232],"wise":[131,0,0.4235],"witold":[45,0,0.0],"wolford":[12,0,0.0],"adren":[373,0,0.5143],"alfard":[91,0,0.0],"algerd":[20,0,0.0],"alvoid":[29,0,0.0],"ambus":[29,0,0.0],"arval":[85,0,0.0],"arwin":[250,0,0.4796],"asbery":[21,0,0.0],"barth":[470,0,0.5344],"berlyn":[87,918,0.5485],"braden":[46050,277,0.9276],"bror":[17,0,0.0],"burlyn":[11,0,0.0],"burness":[40,0,0.0],"callis":[34,0,0.0],"cleotis":[319,0,0.5008],"corydon":[190,0,0.4558],"costa":[325,0,0.5024],"dencil":[274,0,0.4876],"dilbert":[18,0,0.0],"donel":[691,30,0.5478],"elihue":[208,0,0.4636],"emary":[13,185,0.4292],"erhart":[19,0,0.0],"erlin":[343,11,0.494],"fields":[168,0,0.4451],"fiori":[6,11,0.0],"floid":[42,0,0.0],"funston":[6,0,0.0],"garrell":[163,0,0.4424],"genovevo":[50,0,0.0],"gilson":[46,0,0.0],"harbert":[111,0,0.4091],"hascal":[21,0,0.0],"hawthorne":[402,6,0.5145],"hensley":[174,1947,0.6107],"herchell":[34,0,0.0],"hilmon":[27,0,0.0],"hiromu":[42,0,0.0],"hisashi":[129,0,0.4221],"hubbert":[118,0,0.4144],"hulett":[48,0,0.0],"hulin":[13,0,0.0],"ignatuis":[22,0,0.0],"jermiah":[3219,125,0.6785],"jobie":[448,60,0.4773],"kash":[16169,259,0.8298],"lanis":[182,58,0.361],"larance":[171,0,0.4466],"laudie":[46,0,0.0],"leemon":[79,0,0.0],"loel":[284,5,0.4837],"lovick":[17,0,0.0],"manard":[41,0,0.0],"manton":[39,0,0.0],"marchel":[56,73,0.2389],"marl":[116,0,0.4129],"matsuo":[24,0,0.0],"medard":[69,0,0.0],"mendal":[6,0,0.0],"mickeal":[1046,0,0.6039],"milferd":[104,0,0.4034],"minos":[45,0,0.0],"moffett":[6,0,0.0],"montrose":[6,6,0.0],"moreland":[29,0,0.0],"newsom":[6,0,0.0],"nuel":[88,0,0.0],"oldrich":[22,0,0.0],"orbra":[42,0,0.0],"orvalle":[16,0,0.0],"orven":[42,0,0.0],"otmer":[16,0,0.0],"pender":[6,0,0.0],"rawley":[499,0,0.5396],"rayborn":[48,0,0.0],"robet":[945,0,0.5951],"royston":[244,0,0.4775],"scipio":[57,0,0.0],"sesario":[16,0,0.0],"swanson":[121,0,0.4166],"tadeus":[34,0,0.0],"tecumseh":[64,0,0.0],"tharon":[483,167,0.418],"theador":[86,0,0.0],"thoburn":[18,0,0.0],"thurlo":[39,0,0.0],"trent":[51465,102,0.9406],"verlan":[319,5,0.4944],"wassil":[17,0,0.0],"wasyl":[64,0,0.0],"wetzel":[181,0,0.4515],"wiljo":[6,0,0.0],"wilkes":[298,0,0.4948],"wilmur":[6,0,0.0],"yvon":[229,47,0.405],"zan":[651,114,0.4908],"aimo":[10,0,0.0],"allin":[125,0,0.4194],"alphee":[11,0,0.0],"alphonza":[508,0,0.5412],"andrus":[133,0,0.4248],"aner":[19,7,0.0],"anselmi":[5,0,0.0],"anthon":[406,0,0.5217],"arel":[290,6,0.4842],"arris":[167,15,0.4148],"arter":[5,0,0.0],"arvi":[15,10,0.0],"atanacio":[359,0,0.511],"basile":[39,0,0.0],"bay":[203,516,0.41],"benhart":[13,0,0.0],"bertin":[340,0,0.5063],"brayton":[2479,22,0.6736],"brennan":[33032,2218,0.8522],"brigham":[3288,0,0.7034],"bronko":[16,0,0.0],"brownlow":[16,0,0.0],"buckley":[1019,0,0.6016],"burnes":[57,5,0.0],"cad":[10,0,0.0],"candler":[67,5,0.0],"carmi":[46,68,0.2454],"carsie":[15,0,0.0],"carvin":[730,0,0.5727],"casmier":[58,0,0.0],"castle":[367,0,0.5129],"cecial":[10,0,0.0],"chalmus":[53,0,0.0],"chancellor":[2618,5,0.6825],"chesterfield":[39,0,0.0],"churchel":[5,0,0.0],"cilton":[5,0,0.0],"clegg":[5,0,0.0],"clen":[5,0,0.0],"clesson":[55,0,0.0],"cloise":[45,0,0.0],"clotis":[5,0,0.0],"cloude":[42,0,0.0],"codie":[2590,1853,0.4253],"columbo":[5,0,0.0],"coma":[5,17,0.0],"concetto":[47,0,0.0],"cornealius":[5,0,0.0],"corry":[2166,314,0.5929],"costas":[285,0,0.491],"craven":[366,0,0.5127],"daulton":[1554,0,0.6383],"decatur":[54,0,0.0],"delroy":[1417,0,0.6303],"dempsy":[119,0,0.4151],"denison":[64,0,0.0],"derrel":[1181,0,0.6144],"dickie":[4459,260,0.6943],"dominik":[10004,95,0.7933],"dorcie":[10,42,0.0],"dougal":[5,0,0.0],"doyt":[66,0,0.0],"dustin":[207972,1380,0.9934],"duwayne":[3601,0,0.7113],"dwaine":[4361,0,0.7279],"einard":[5,0,0.0],"eldean":[143,223,0.3124],"emeal":[26,0,0.0],"emeral":[10,53,0.0],"emsley":[10,755,0.5692],"ensley":[16,3470,0.7052],"erris":[5,0,0.0],"eschol":[81,0,0.0],"eubert":[12,0,0.0],"evel":[15,0,0.0],"flake":[45,0,0.0],"florent":[50,0,0.0],"fort":[5,0,0.0],"fredick":[303,0,0.4963],"freelin":[5,0,0.0],"frost":[26,0,0.0],"gareth":[4342,5,0.7268],"gartrell":[15,0,0.0],"geary":[2457,0,0.6781],"geoge":[101,0,0.4009],"gerben":[10,0,0.0],"gerritt":[231,0,0.4727],"glenroy":[161,0,0.4414],"govan":[27,0,0.0],"granderson":[22,0,0.0],"grier":[326,404,0.3169],"grundy":[5,0,0.0],"haldor":[18,0,0.0],"hally":[5,702,0.5659],"hance":[80,0,0.0],"harlowe":[51,879,0.5611],"helton":[72,0,0.0],"henryk":[426,0,0.5259],"henson":[528,0,0.5445],"hernando":[762,0,0.5764],"hewlett":[36,0,0.0],"houghton":[21,0,0.0],"hursel":[40,0,0.0],"ishmel":[297,0,0.4946],"issiah":[1390,0,0.6286],"izzy":[349,1080,0.4769],"jadie":[61,792,0.5443],"jaroslav":[12,0,0.0],"javan":[3564,43,0.7029],"jester":[66,0,0.0],"jethero":[5,0,0.0],"jhonnie":[163,16,0.4103],"jock":[1090,0,0.6075],"jorma":[68,0,0.0],"josph":[343,0,0.5071],"kervin":[1499,0,0.6352],"knut":[60,0,0.0],"konstanty":[30,0,0.0],"kostanty":[5,0,0.0],"kramer":[500,6,0.5344],"labon":[43,0,0.0],"lad":[21,0,0.0],"ladimer":[5,0,0.0],"lancer":[201,0,0.4606],"lasco":[5,0,0.0],"lauritz":[48,0,0.0],"leaster":[17,40,0.0],"leaton":[10,0,0.0],"leeo":[15,0,0.0],"lendon":[584,0,0.5533],"lent":[5,0,0.0],"leonord":[19,0,0.0],"levan":[597,0,0.5552],"lloyde":[149,0,0.4346],"locke":[998,0,0.5998],"lotis":[5,18,0.0],"louia":[11,0,0.0],"lucuis":[15,0,0.0],"lynton":[69,0,0.0],"magdaleno":[1002,0,0.6002],"mamon":[25,0,0.0],"mancy":[5,15,0.0],"marton":[120,0,0.4158],"masanori":[60,0,0.0],"mather":[21,0,0.0],"mauritz":[12,0,0.0],"maxon":[1422,0,0.6306],"maxson":[1027,0,0.6023],"mcclinton":[34,0,0.0],"mcneal":[43,0,0.0],"melbern":[33,0,0.0],"melroy":[171,0,0.4466],"melvon":[60,0,0.0],"merlen":[65,0,0.0],"merley":[5,10,0.0],"meron":[50,394,0.4699],"mickael":[1481,11,0.6301],"milner":[28,0,0.0],"miroslaw":[5,0,0.0],"mitch":[5564,0,0.7491],"mitsuru":[171,5,0.4363],"narvel":[132,0,0.4241],"naylor":[5,0,0.0],"nazario":[970,0,0.5974],"neale":[915,5,0.5895],"neils":[78,0,0.0],"nicholos":[768,0,0.5771],"nicklos":[277,0,0.4885],"oatis":[46,0,0.0],"ober":[15,0,0.0],"obry":[5,0,0.0],"olus":[11,0,0.0],"olvin":[453,0,0.5312],"orestus":[5,0,0.0],"orpheus":[76,0,0.0],"orrel":[10,0,0.0],"orrell":[10,0,0.0],"oskar":[3148,0,0.6996],"oswin":[365,103,0.4165],"phenious":[5,0,0.0],"pio":[333,0,0.5045],"pioquinto":[5,0,0.0],"pollard":[22,0,0.0],"ponce":[140,0,0.4292],"preciliano":[65,0,0.0],"que":[119,0,0.4151],"quido":[18,0,0.0],"rawson":[116,0,0.4129],"recil":[10,0,0.0],"reppard":[5,0,0.0],"reyburn":[5,0,0.0],"rickard":[625,0,0.5592],"rinehart":[11,0,0.0],"rolando":[24302,78,0.8746],"rollan":[233,0,0.4735],"rowan":[45386,20976,0.6596],"rucker":[193,0,0.4571],"ruskin":[10,0,0.0],"searle":[29,0,0.0],"selso":[125,0,0.4194],"seraphin":[21,5,0.0],"seymoure":[5,0,0.0],"shadrach":[775,0,0.5779],"sigle":[10,0,0.0],"silven":[5,0,0.0],"sumter":[29,0,0.0],"susano":[62,0,0.0],"swain":[71,0,0.0],"taisto":[26,0,0.0],"tank":[163,0,0.4424],"tatsuro":[5,0,0.0],"telio":[5,0,0.0],"thaddius":[593,0,0.5546],"theobald":[10,0,0.0],"tilio":[5,0,0.0],"umbert":[15,0,0.0],"union":[16,0,0.0],"urbane":[5,0,0.0],"uyless":[39,0,0.0],"valente":[1901,0,0.6558],"vancil":[41,0,0.0],"vanner":[5,0,0.0],"verden":[29,0,0.0],"verge":[12,0,0.0],"vilho":[5,0,0.0],"vincen":[123,0,0.418],"virden":[48,0,0.0],"virginius":[5,0,0.0],"voight":[5,0,0.0],"waddy":[5,0,0.0],"waid":[45,0,0.0],"walace":[11,0,0.0],"wellman":[45,0,0.0],"wensel":[5,0,0.0],"willburn":[11,0,0.0],"wingate":[5,0,0.0],"yves":[1184,50,0.5932],"zackie":[50,0,0.0],"zebbie":[99,6,0.3811],"ziba":[5,0,0.0],"nerine":[0,79,0.0],"alvada":[0,37,0.0],"chestina":[0,115,0.4121],"delsa":[0,243,0.4771],"miyeko":[0,132,0.4241],"nerene":[0,18,0.0],"tonia":[53,22186,0.8674],"toshie":[0,168,0.4451],"verlean":[0,453,0.5312],"alona":[0,3154,0.6998],"clauda":[0,30,0.0],"consuella":[0,908,0.5916],"emagene":[0,206,0.4628],"florenz":[23,9,0.0],"juna":[5,986,0.5962],"katherleen":[0,200,0.4602],"laurell":[10,381,0.5052],"lutrelle":[0,9,0.0],"maralyn":[0,1319,0.624],"michelena":[0,79,0.0],"mirriam":[0,196,0.4585],"neysa":[0,1288,0.622],"taeko":[0,74,0.0],"alese":[0,546,0.5474],"carolynn":[0,6404,0.7613],"cathaleen":[0,323,0.5018],"chiquita":[6,6218,0.7581],"cleotha":[750,292,0.4344],"coriene":[0,55,0.0],"eddye":[6,294,0.4855],"edessa":[0,67,0.0],"emilienne":[0,13,0.0],"emmalene":[0,452,0.531],"fumiyo":[0,33,0.0],"genara":[0,29,0.0],"idona":[0,99,0.0],"immaculate":[0,68,0.0],"junice":[0,229,0.472],"leberta":[0,24,0.0],"lecta":[0,15,0.0],"leeola":[0,39,0.0],"levona":[0,49,0.0],"lorrie":[88,17334,0.8439],"mana":[128,678,0.489],"maralee":[0,889,0.5898],"methel":[0,20,0.0],"moline":[0,53,0.0],"ritta":[0,159,0.4403],"ruthetta":[0,83,0.0],"trilla":[0,59,0.0],"vieva":[0,68,0.0],"waneda":[0,132,0.4241],"willadean":[0,894,0.5903],"addine":[0,22,0.0],"adene":[0,44,0.0],"alsace":[0,86,0.0],"ardice":[0,68,0.0],"armeta":[0,51,0.0],"asayo":[0,33,0.0],"blondine":[0,201,0.4606],"byrle":[32,28,0.0],"calliope":[0,5413,0.7467],"charlsey":[0,264,0.4843],"chonita":[0,213,0.4657],"diva":[0,626,0.5593],"eliz":[0,314,0.4994],"eloine":[0,18,0.0],"elveta":[0,107,0.4059],"emalene":[0,92,0.0],"estanislada":[0,28,0.0],"estilla":[0,7,0.0],"euella":[0,23,0.0],"euzelia":[0,12,0.0],"francelle":[0,28,0.0],"freddye":[0,99,0.0],"genieva":[0,48,0.0],"genivieve":[0,40,0.0],"haruyo":[0,36,0.0],"hisae":[0,69,0.0],"inella":[0,63,0.0],"lanette":[0,5005,0.7399],"laureen":[0,7117,0.7705],"leoner":[0,13,0.0],"levinia":[0,41,0.0],"liberta":[0,83,0.0],"loura":[0,552,0.5484],"madlene":[0,36,0.0],"madlyne":[0,27,0.0],"marda":[0,391,0.5184],"marinelle":[0,58,0.0],"marylene":[0,301,0.4957],"monzelle":[0,7,0.0],"nira":[6,777,0.5743],"olivet":[5,99,0.384],"philis":[0,217,0.4673],"rether":[0,133,0.4248],"stefana":[0,67,0.0],"stephenia":[0,248,0.4789],"tessibel":[0,7,0.0],"tomoe":[0,57,0.0],"verneil":[0,34,0.0],"verone":[0,30,0.0],"wilhelminia":[0,22,0.0],"winonah":[0,7,0.0],"ysidra":[0,97,0.0],"alecia":[0,12032,0.8161],"almeater":[0,16,0.0],"alvana":[0,6,0.0],"andra":[2592,5560,0.5335],"angiolina":[0,6,0.0],"april":[667,242361,0.9973],"ardel":[31,97,0.3194],"ardenia":[0,124,0.4187],"arlynn":[61,586,0.5092],"arlys":[0,1103,0.6085],"armatha":[0,44,0.0],"armie":[5,72,0.0],"athanasia":[0,556,0.549],"berla":[0,46,0.0],"bernardita":[0,13,0.0],"bernida":[0,23,0.0],"brigid":[0,6443,0.7618],"brunelle":[0,16,0.0],"burnadette":[0,135,0.4261],"carolee":[0,4458,0.7298],"carolene":[0,739,0.5737],"charla":[0,8026,0.7809],"chesterine":[0,22,0.0],"christella":[0,739,0.5737],"cloudie":[10,6,0.0],"daurice":[5,85,0.0],"delinda":[0,2210,0.6689],"dorohty":[0,6,0.0],"eleta":[0,34,0.0],"etolia":[0,43,0.0],"eugie":[0,6,0.0],"everlee":[0,6782,0.7663],"gathel":[0,51,0.0],"georgianne":[0,1339,0.6254],"gloris":[0,314,0.4994],"gwelda":[0,11,0.0],"henriella":[0,6,0.0],"huberta":[0,218,0.4677],"imojean":[0,435,0.5277],"inamae":[0,35,0.0],"inocencia":[0,174,0.4481],"iole":[0,18,0.0],"jenelle":[0,7185,0.7713],"jetty":[24,256,0.4475],"joeann":[0,1283,0.6216],"juanda":[0,482,0.5366],"koula":[0,55,0.0],"ladelle":[0,140,0.4292],"lamerle":[0,92,0.0],"lapreal":[0,27,0.0],"lasca":[0,23,0.0],"lauralee":[0,2249,0.6704],"laurece":[0,6,0.0],"lawanda":[6,12093,0.8161],"lealo":[0,19,0.0],"leathy":[0,6,0.0],"lenell":[540,343,0.3603],"lodell":[0,22,0.0],"louelle":[0,49,0.0],"louese":[0,18,0.0],"magline":[0,43,0.0],"mahdeen":[0,6,0.0],"manya":[0,1013,0.6011],"margeart":[0,116,0.4129],"marguret":[0,32,0.0],"marther":[0,6,0.0],"marydell":[0,29,0.0],"maycel":[0,64,0.0],"melzie":[0,14,0.0],"meriem":[0,126,0.4201],"michiyo":[0,11,0.0],"misako":[0,85,0.0],"murna":[0,72,0.0],"narma":[0,12,0.0],"olivea":[0,637,0.5608],"ovena":[0,6,0.0],"ozeal":[0,6,0.0],"penola":[0,6,0.0],"philomine":[0,11,0.0],"porfiria":[0,235,0.4742],"reida":[0,311,0.4986],"renalda":[0,69,0.0],"romania":[0,46,0.0],"rosary":[0,574,0.5518],"roseana":[0,88,0.0],"rubymae":[0,42,0.0],"sibyle":[0,49,0.0],"silveria":[0,91,0.0],"tallulah":[0,3819,0.7164],"tamara":[417,131170,0.9968],"tamiko":[42,3001,0.687],"teruyo":[0,11,0.0],"thressie":[0,6,0.0],"toshiye":[0,65,0.0],"udora":[0,6,0.0],"velah":[0,6,0.0],"venitta":[0,36,0.0],"vincentine":[0,18,0.0],"vincenzia":[0,11,0.0],"virginie":[0,68,0.0],"wealtha":[0,21,0.0],"zellia":[0,6,0.0],"zinnia":[0,2508,0.6799],"abell":[31,5,0.0],"adalaide":[0,417,0.524],"agneta":[0,5,0.0],"agripina":[0,184,0.453],"akie":[5,11,0.0],"alama":[0,5,0.0],"aleeta":[0,89,0.0],"alliemae":[0,50,0.0],"altamease":[0,59,0.0],"alveria":[0,106,0.4051],"andora":[0,141,0.4298],"andrine":[0,5,0.0],"angelyne":[0,239,0.4757],"anzie":[0,12,0.0],"arlice":[26,15,0.0],"armilla":[0,31,0.0],"arnelda":[0,10,0.0],"arnetha":[0,463,0.5331],"artimese":[0,10,0.0],"asae":[0,10,0.0],"aver":[0,15,0.0],"azucena":[0,3741,0.7146],"berdean":[0,57,0.0],"bergetta":[0,5,0.0],"bernedette":[0,173,0.4476],"bertella":[0,5,0.0],"bettyann":[0,1403,0.6294],"bonifacia":[0,28,0.0],"bunia":[0,30,0.0],"burmah":[0,5,0.0],"casmera":[0,5,0.0],"catheline":[0,92,0.0],"cecyle":[0,12,0.0],"celene":[0,1738,0.648],"celsa":[0,80,0.0],"cheerful":[0,5,0.0],"cicely":[0,2378,0.6752],"ciria":[0,150,0.4352],"cleao":[5,10,0.0],"clematine":[0,10,0.0],"clero":[0,5,0.0],"cloris":[0,154,0.4375],"clyta":[0,34,0.0],"comelia":[0,11,0.0],"consiglia":[0,15,0.0],"constantina":[0,642,0.5615],"cordelle":[94,5,0.0],"cornia":[0,10,0.0],"creolia":[0,5,0.0],"cresie":[0,5,0.0],"cristela":[0,617,0.5581],"dalphine":[0,256,0.4816],"darris":[1986,98,0.6326],"dathel":[0,35,0.0],"delane":[923,955,0.3329],"deotha":[0,10,0.0],"dolena":[0,10,0.0],"donabelle":[0,61,0.0],"dorcus":[5,282,0.483],"dorpha":[0,5,0.0],"dorrie":[0,889,0.5898],"dotha":[0,14,0.0],"ebe":[0,5,0.0],"edelmira":[0,655,0.5632],"edwarda":[0,40,0.0],"eldine":[0,157,0.4392],"elethia":[0,15,0.0],"elizabetha":[0,5,0.0],"elmi":[10,5,0.0],"emiley":[0,1779,0.65],"emmajean":[0,705,0.5696],"erdell":[0,5,0.0],"estaleen":[0,5,0.0],"estee":[43,813,0.557],"estefanita":[0,24,0.0],"ethelind":[0,15,0.0],"ethellee":[0,5,0.0],"eudean":[0,10,0.0],"euple":[0,20,0.0],"evada":[0,5,0.0],"evadell":[0,20,0.0],"evona":[0,104,0.4034],"fayma":[0,47,0.0],"fernetta":[0,20,0.0],"fina":[0,283,0.4904],"francise":[0,17,0.0],"francoise":[0,620,0.5585],"frozine":[0,5,0.0],"fumiye":[0,72,0.0],"fusaye":[0,71,0.0],"gardenia":[0,1347,0.6259],"gayl":[15,607,0.5453],"gayola":[0,5,0.0],"genelda":[0,91,0.0],"genievieve":[0,5,0.0],"gennevieve":[0,10,0.0],"georgann":[0,1723,0.6473],"georgietta":[0,10,0.0],"girolama":[0,10,0.0],"guerina":[0,5,0.0],"hanayo":[0,11,0.0],"haruno":[0,11,0.0],"hatsumi":[0,63,0.0],"hebe":[0,123,0.418],"helvie":[0,10,0.0],"hermania":[0,5,0.0],"ilet":[0,5,0.0],"ioan":[126,5,0.4073],"ivanell":[0,103,0.4026],"ivetta":[0,5,0.0],"janella":[0,1957,0.6583],"jilda":[0,293,0.4934],"jozefa":[0,11,0.0],"juliaette":[0,26,0.0],"juline":[0,255,0.4813],"kameko":[5,208,0.4547],"karine":[0,1206,0.6163],"karolina":[0,4497,0.7306],"katheren":[0,124,0.4187],"katherlene":[0,15,0.0],"kiyomi":[6,1882,0.6531],"ladene":[0,220,0.4685],"ladonne":[0,126,0.4201],"lani":[183,7241,0.755],"larenza":[0,5,0.0],"larna":[0,234,0.4738],"laruth":[0,141,0.4298],"lavancha":[0,5,0.0],"leeona":[0,97,0.0],"leilani":[25,52640,0.9439],"lenda":[0,872,0.5881],"leneta":[0,15,0.0],"leura":[0,10,0.0],"leuvenia":[0,5,0.0],"lizzette":[0,1722,0.6472],"loriane":[0,32,0.0],"lorien":[24,915,0.5793],"louberta":[0,50,0.0],"lovera":[0,22,0.0],"lovilla":[0,12,0.0],"loyette":[0,11,0.0],"lucena":[0,13,0.0],"luease":[0,5,0.0],"luecinda":[0,10,0.0],"maline":[0,34,0.0],"manon":[5,823,0.5801],"maragaret":[0,10,0.0],"margary":[0,37,0.0],"margerete":[0,5,0.0],"marialice":[0,180,0.4511],"marvil":[0,5,0.0],"maryana":[0,587,0.5537],"maryette":[0,38,0.0],"maryl":[0,318,0.5005],"marylue":[0,10,0.0],"matildia":[0,5,0.0],"maudean":[0,144,0.4317],"maxiene":[0,22,0.0],"melida":[0,678,0.5662],"mellicent":[0,5,0.0],"meri":[0,2493,0.6793],"michie":[6,97,0.3791],"mignonette":[0,23,0.0],"mineko":[0,5,0.0],"momoyo":[0,11,0.0],"muguette":[0,11,0.0],"murtha":[5,5,0.0],"myrne":[0,5,0.0],"nann":[0,20,0.0],"natsue":[0,29,0.0],"nobu":[0,5,0.0],"noriene":[0,5,0.0],"norina":[0,279,0.4891],"olee":[28,37,0.0],"oleen":[0,44,0.0],"olwyn":[0,22,0.0],"olyne":[0,5,0.0],"ometa":[0,10,0.0],"ommie":[0,69,0.0],"onedia":[0,163,0.4424],"onnalee":[0,31,0.0],"orissa":[0,61,0.0],"ottelia":[0,5,0.0],"ouita":[0,88,0.0],"owena":[0,11,0.0],"palmera":[0,5,0.0],"pansye":[0,5,0.0],"patrocinia":[0,10,0.0],"pauletta":[0,2522,0.6803],"phillipa":[0,108,0.4067],"phillippa":[0,66,0.0],"philomen":[0,5,0.0],"phronia":[0,32,0.0],"phylliss":[0,597,0.5552],"picola":[0,10,0.0],"quessie":[0,15,0.0],"reberta":[0,28,0.0],"reble":[0,18,0.0],"reca":[0,23,0.0],"regene":[0,94,0.0],"remell":[0,62,0.0],"renate":[0,1265,0.6204],"rethel":[0,88,0.0],"roanna":[0,440,0.5287],"rogenia":[0,96,0.0],"rolene":[0,354,0.5098],"rosalynd":[0,125,0.4194],"rosemay":[0,16,0.0],"rosemma":[0,10,0.0],"rossetta":[0,62,0.0],"roxine":[0,238,0.4753],"saralee":[0,749,0.5749],"satoko":[0,27,0.0],"seena":[99,639,0.4967],"sharlene":[0,12166,0.817],"snoda":[0,5,0.0],"suzuko":[0,25,0.0],"tayeko":[0,20,0.0],"tomoye":[0,5,0.0],"totsie":[0,32,0.0],"trecie":[0,22,0.0],"vale":[183,327,0.3472],"valina":[0,120,0.4158],"valjean":[39,425,0.4885],"valois":[0,60,0.0],"vana":[0,545,0.5473],"vauna":[0,32,0.0],"vernabelle":[0,43,0.0],"vernalee":[0,40,0.0],"vinola":[0,5,0.0],"voilet":[0,33,0.0],"waveline":[0,21,0.0],"wildred":[5,31,0.0],"willabell":[0,5,0.0],"wilmeth":[5,5,0.0],"yayeko":[0,11,0.0],"zabelle":[0,26,0.0],"delwyn":[913,0,0.5921],"galvin":[906,0,0.5914],"mcadoo":[68,0,0.0],"osman":[3711,0,0.7139],"bracy":[81,5,0.0],"claborn":[85,0,0.0],"dolton":[451,0,0.5308],"toru":[60,0,0.0],"aldred":[64,0,0.0],"benjamon":[14,0,0.0],"elray":[327,0,0.5029],"feliberto":[174,0,0.4481],"jafus":[14,0,0.0],"kennon":[1781,30,0.6408],"malen":[15,5,0.0],"arliss":[705,801,0.338],"barlow":[111,0,0.4091],"cale":[8160,84,0.7752],"carlysle":[14,0,0.0],"dewitte":[63,0,0.0],"doral":[216,86,0.3548],"efford":[25,0,0.0],"kiser":[80,0,0.0],"loranza":[29,0,0.0],"lucion":[120,0,0.4158],"perkins":[79,0,0.0],"purdy":[14,0,0.0],"quintus":[548,0,0.5478],"regino":[858,0,0.5867],"sabin":[713,6,0.5666],"seaton":[126,0,0.4201],"sylvin":[51,0,0.0],"tipton":[256,5,0.4741],"vestel":[38,0,0.0],"warfield":[30,0,0.0],"ac":[119,0,0.4151],"albon":[29,0,0.0],"algert":[23,0,0.0],"arman":[4466,0,0.73],"arol":[30,0,0.0],"arzell":[81,8,0.0],"calbert":[261,0,0.4833],"canio":[81,0,0.0],"clermont":[7,0,0.0],"coney":[42,0,0.0],"cranston":[364,0,0.5122],"dimitri":[9398,99,0.7872],"dyer":[96,0,0.0],"eden":[10408,49029,0.7876],"edwyn":[708,0,0.57],"elvyn":[83,11,0.0],"enno":[28,0,0.0],"espiridion":[169,0,0.4456],"floran":[12,0,0.0],"gaylor":[23,0,0.0],"gibbs":[81,0,0.0],"giro":[56,0,0.0],"guerrino":[18,0,0.0],"hachiro":[19,0,0.0],"ignac":[22,0,0.0],"jalmer":[28,0,0.0],"kasimir":[74,0,0.0],"kennis":[560,76,0.4937],"kingdon":[32,0,0.0],"larrie":[929,339,0.4547],"lenis":[170,55,0.3554],"linley":[84,1612,0.6139],"loddie":[7,6,0.0],"malcomb":[105,0,0.4042],"mount":[13,0,0.0],"onslow":[7,0,0.0],"ormal":[24,0,0.0],"rondal":[1864,0,0.6541],"rosswell":[7,0,0.0],"runar":[7,0,0.0],"sammuel":[2679,0,0.6856],"sante":[118,0,0.4144],"sibley":[18,117,0.3693],"sy":[962,0,0.5966],"thom":[845,0,0.5854],"void":[24,9,0.0],"alcuin":[48,0,0.0],"amandus":[26,0,0.0],"anker":[41,0,0.0],"aristides":[702,0,0.5693],"arless":[65,5,0.0],"armstrong":[74,0,0.0],"arnt":[11,0,0.0],"beno":[16,0,0.0],"bisente":[11,0,0.0],"boyde":[81,0,0.0],"bright":[386,36,0.4803],"camile":[33,984,0.5819],"cleamon":[37,0,0.0],"cliffard":[142,0,0.4305],"cloral":[6,0,0.0],"cortlandt":[80,0,0.0],"coyte":[6,0,0.0],"cullin":[403,0,0.5211],"dearl":[792,0,0.5797],"drewey":[81,0,0.0],"duell":[110,0,0.4083],"eladio":[1793,0,0.6507],"eleuterio":[756,0,0.5757],"elijio":[527,0,0.5444],"erdman":[26,0,0.0],"eskel":[34,0,0.0],"ethen":[3841,0,0.7169],"eules":[38,0,0.0],"even":[548,0,0.5478],"everton":[570,0,0.5512],"gayland":[1025,0,0.6021],"genero":[22,0,0.0],"glenville":[59,0,0.0],"guerdon":[23,0,0.0],"guiseppi":[16,0,0.0],"hansen":[852,0,0.5861],"haward":[179,0,0.4506],"hayse":[23,0,0.0],"hedrick":[40,0,0.0],"hendrik":[1337,0,0.6252],"hutson":[676,0,0.566],"ildefonso":[392,0,0.5187],"jerimiah":[5049,0,0.7406],"jitsuo":[30,0,0.0],"julies":[113,0,0.4106],"kale":[7368,226,0.753],"kary":[1416,1962,0.4099],"kennth":[2004,0,0.6604],"kinley":[354,19544,0.8445],"kinsey":[295,7764,0.7527],"kunio":[91,0,0.0],"larnie":[77,0,0.0],"lasalle":[400,16,0.5037],"lawrnce":[70,0,0.0],"leonhard":[64,0,0.0],"levoy":[79,0,0.0],"lilborn":[6,0,0.0],"lonas":[41,0,0.0],"lorris":[85,0,0.0],"lyndle":[131,0,0.4235],"mairon":[42,0,0.0],"malcum":[47,0,0.0],"martyn":[566,0,0.5506],"masuo":[35,0,0.0],"maxell":[38,0,0.0],"mckay":[2265,360,0.59],"milus":[72,0,0.0],"nathanel":[879,0,0.5888],"nixon":[7177,331,0.7409],"olif":[6,0,0.0],"oril":[18,0,0.0],"orison":[41,0,0.0],"polo":[589,0,0.554],"rochell":[92,1619,0.6119],"rockford":[699,0,0.5689],"ruebin":[6,0,0.0],"seiki":[6,0,0.0],"selmon":[6,0,0.0],"sexton":[17,0,0.0],"stearns":[6,0,0.0],"taze":[22,0,0.0],"theado":[45,0,0.0],"thomes":[411,0,0.5228],"toshiaki":[43,0,0.0],"truel":[6,0,0.0],"tsuyoshi":[34,0,0.0],"tulon":[6,0,0.0],"turney":[22,0,0.0],"vernest":[28,0,0.0],"warwick":[55,0,0.0],"wasco":[12,0,0.0],"westmoreland":[6,0,0.0],"wyley":[152,0,0.4364],"zion":[44345,6928,0.8147],"adelaido":[226,0,0.4708],"aldin":[712,0,0.5705],"aldis":[24,0,0.0],"alexsander":[1257,0,0.6199],"alman":[53,0,0.0],"almos":[19,0,0.0],"alvon":[160,0,0.4408],"amuel":[28,0,0.0],"ardine":[5,125,0.4065],"arlander":[125,0,0.4194],"arlton":[10,0,0.0],"artemas":[66,0,0.0],"arthar":[21,0,0.0],"athan":[2125,0,0.6655],"atsushi":[86,0,0.0],"austen":[8069,1247,0.6876],"beattie":[5,0,0.0],"benjimen":[286,0,0.4913],"berthol":[10,0,0.0],"bervin":[32,0,0.0],"bev":[5,998,0.5973],"bige":[57,0,0.0],"bohdan":[894,0,0.5903],"bond":[264,6,0.4755],"brunson":[32,0,0.0],"bunion":[16,0,0.0],"burford":[51,0,0.0],"calletano":[37,0,0.0],"camiel":[35,15,0.0],"carzell":[61,0,0.0],"catello":[11,0,0.0],"clarnece":[43,0,0.0],"cleal":[5,0,0.0],"cleary":[10,8,0.0],"clemont":[20,0,0.0],"cloice":[10,0,0.0],"cluster":[55,0,0.0],"corley":[255,360,0.3265],"crespin":[253,0,0.4806],"curby":[86,0,0.0],"danuel":[286,5,0.4843],"darol":[485,0,0.5371],"darrold":[497,0,0.5393],"daryle":[2633,198,0.6421],"davy":[2661,306,0.6228],"daymond":[904,0,0.5912],"deland":[279,0,0.4891],"deleon":[959,14,0.589],"dene":[223,572,0.4174],"denvil":[131,0,0.4235],"dermont":[26,0,0.0],"dermot":[482,0,0.5366],"derrick":[145055,997,0.9932],"dietrich":[2034,149,0.6222],"dimas":[1814,0,0.6517],"dix":[40,0,0.0],"donold":[828,0,0.5836],"doro":[5,0,0.0],"dub":[128,0,0.4214],"eaton":[113,0,0.4106],"edsil":[25,0,0.0],"edword":[82,0,0.0],"eleno":[461,0,0.5327],"elree":[34,14,0.0],"emo":[15,12,0.0],"enock":[95,0,0.0],"ephrim":[10,0,0.0],"ernal":[5,0,0.0],"erney":[10,0,0.0],"esko":[51,0,0.0],"eugean":[178,0,0.4501],"eustice":[19,0,0.0],"eustis":[5,0,0.0],"eutimio":[225,0,0.4704],"ewen":[185,0,0.4534],"filemon":[514,0,0.5422],"finnie":[25,5,0.0],"flory":[31,46,0.0],"forman":[26,0,0.0],"franciszek":[133,0,0.4248],"freemont":[27,0,0.0],"geddes":[5,0,0.0],"gesualdo":[5,0,0.0],"gettys":[5,0,0.0],"granvill":[28,0,0.0],"hallard":[27,0,0.0],"harles":[221,0,0.4689],"hasting":[17,0,0.0],"haynie":[10,0,0.0],"herrick":[71,0,0.0],"hodges":[237,0,0.4749],"homero":[3747,0,0.7147],"hovey":[5,0,0.0],"immanuel":[5973,0,0.7552],"javier":[106700,493,0.9954],"joaquim":[938,0,0.5944],"kazimer":[23,0,0.0],"kermith":[42,0,0.0],"kiah":[264,3269,0.6566],"kiyoto":[70,0,0.0],"lamoyne":[139,75,0.3027],"landry":[5647,5562,0.408],"landy":[606,255,0.4132],"lanson":[163,0,0.4424],"larson":[1627,84,0.6149],"latham":[581,0,0.5528],"lc":[351,0,0.5091],"lemoine":[109,0,0.4075],"lendell":[690,0,0.5678],"levander":[189,0,0.4553],"leven":[229,10,0.4558],"levine":[25,0,0.0],"linward":[59,0,0.0],"lloyed":[5,0,0.0],"lord":[668,0,0.565],"lothrop":[5,0,0.0],"lovely":[12,2301,0.6693],"lowman":[21,0,0.0],"lowrey":[10,0,0.0],"ludvig":[16,0,0.0],"malcome":[96,0,0.0],"marcellino":[299,0,0.4951],"marciano":[1245,0,0.619],"maro":[75,0,0.0],"marris":[62,6,0.0],"masaharu":[48,0,0.0],"masanobu":[35,0,0.0],"massey":[69,43,0.2525],"maxel":[22,0,0.0],"maximiliano":[22760,0,0.8714],"mayland":[32,0,0.0],"mcclure":[10,0,0.0],"mckenzie":[2255,64250,0.9319],"mckinney":[35,38,0.0],"medley":[5,50,0.0],"melbert":[71,0,0.0],"melchor":[894,0,0.5903],"meridith":[32,2652,0.6776],"merlon":[176,5,0.4391],"milburne":[5,0,0.0],"milt":[70,0,0.0],"murvel":[25,0,0.0],"mynard":[10,0,0.0],"nabor":[384,0,0.5169],"nathinal":[5,0,0.0],"neldon":[158,0,0.4397],"nicky":[7466,1969,0.629],"nilo":[375,0,0.5148],"nobert":[37,0,0.0],"nordahl":[5,0,0.0],"oby":[11,0,0.0],"octavious":[1651,5,0.6419],"od":[5,0,0.0],"onas":[29,0,0.0],"onesimo":[594,0,0.5548],"orben":[36,0,0.0],"orlander":[160,0,0.4408],"osvaldo":[14394,12,0.831],"otey":[17,0,0.0],"pace":[878,58,0.5574],"pal":[187,15,0.4268],"parris":[1898,1661,0.3788],"patric":[3040,73,0.6823],"payson":[1406,1122,0.3785],"quenton":[3194,0,0.7009],"raimon":[27,0,0.0],"rallie":[5,0,0.0],"raney":[71,342,0.4332],"readus":[5,0,0.0],"renwick":[544,0,0.5471],"rhett":[34721,232,0.9027],"rial":[32,0,0.0],"rienhold":[5,0,0.0],"robb":[3190,0,0.7008],"rober":[414,0,0.5234],"roudolph":[10,0,0.0],"royd":[55,0,0.0],"sabastian":[3635,0,0.7121],"salvotore":[27,0,0.0],"saylor":[823,13059,0.7794],"severio":[5,0,0.0],"shigetoshi":[5,0,0.0],"sigvard":[5,0,0.0],"solan":[205,0,0.4624],"stiney":[5,0,0.0],"stockton":[1331,0,0.6248],"telesphore":[5,0,0.0],"tereso":[140,0,0.4292],"terrill":[4365,714,0.637],"thales":[93,0,0.0],"theoplis":[204,0,0.4619],"tillis":[5,0,0.0],"tj":[2109,10,0.6621],"tolliver":[43,0,0.0],"trenidad":[29,26,0.0],"trumon":[41,0,0.0],"unto":[5,0,0.0],"urlin":[5,0,0.0],"vahan":[211,0,0.4649],"vasile":[36,0,0.0],"vaun":[92,0,0.0],"venoy":[5,0,0.0],"vertle":[5,0,0.0],"wc":[5,0,0.0],"wharton":[38,0,0.0],"windfield":[5,0,0.0],"worthington":[61,0,0.0],"yoneo":[34,0,0.0],"yoshiharu":[73,0,0.0],"marne":[38,849,0.5643],"claretha":[0,1109,0.609],"ardene":[0,386,0.5173],"bethyl":[0,55,0.0],"carmeline":[0,182,0.452],"lendora":[0,125,0.4194],"orletta":[0,37,0.0],"peace":[319,723,0.4188],"theophila":[0,10,0.0],"eldene":[0,129,0.4221],"emanuela":[0,612,0.5574],"evadean":[0,93,0.0],"gwenn":[0,1502,0.6353],"loreine":[0,21,0.0],"lovene":[0,62,0.0],"paulena":[0,126,0.4201],"pota":[0,33,0.0],"shizuka":[0,35,0.0],"annalou":[0,53,0.0],"carnation":[0,37,0.0],"comilla":[0,35,0.0],"earther":[0,39,0.0],"ellin":[0,579,0.5525],"ethelean":[0,64,0.0],"evana":[0,1102,0.6084],"gearldean":[0,469,0.5342],"janiece":[0,3182,0.7005],"jeri":[377,22632,0.8581],"jonell":[224,2452,0.6281],"laurella":[0,77,0.0],"levora":[0,128,0.4214],"lillien":[0,319,0.5008],"marylin":[0,4368,0.7281],"mayona":[0,21,0.0],"redith":[0,78,0.0],"ruthanne":[0,2667,0.6852],"toba":[0,436,0.5279],"truby":[33,34,0.0],"vilate":[0,18,0.0],"wilena":[0,68,0.0],"yva":[0,36,0.0],"alora":[0,10267,0.8023],"ardele":[0,44,0.0],"armita":[0,57,0.0],"arneda":[0,108,0.4067],"audray":[0,79,0.0],"bonnye":[0,364,0.5122],"cletta":[0,54,0.0],"deta":[0,22,0.0],"dorrit":[0,13,0.0],"elgene":[48,70,0.2458],"elice":[7,242,0.4658],"elizebth":[0,12,0.0],"eurith":[0,14,0.0],"filamena":[0,12,0.0],"francelina":[0,17,0.0],"garnita":[0,30,0.0],"genevee":[0,20,0.0],"getha":[0,7,0.0],"howardine":[0,7,0.0],"jolene":[12,35797,0.9105],"josefine":[0,692,0.568],"junne":[0,25,0.0],"kathie":[0,15086,0.8357],"leonne":[0,12,0.0],"louana":[0,92,0.0],"ludean":[0,154,0.4375],"lupie":[0,74,0.0],"lylith":[0,126,0.4201],"marella":[0,465,0.5335],"maryln":[0,524,0.5439],"melvenia":[0,205,0.4624],"molley":[0,231,0.4727],"momie":[0,7,0.0],"nellis":[18,18,0.0],"nihla":[0,30,0.0],"perla":[30,20669,0.8619],"rayola":[0,180,0.4511],"refa":[0,7,0.0],"rheva":[0,35,0.0],"rozanne":[0,1385,0.6283],"ruthellen":[0,171,0.4466],"ruthelma":[0,36,0.0],"saveria":[0,42,0.0],"serina":[0,5814,0.7529],"sible":[0,110,0.4083],"thana":[0,68,0.0],"thela":[0,51,0.0],"vay":[0,13,0.0],"vinette":[0,71,0.0],"vivion":[10,82,0.0],"walline":[0,7,0.0],"zalia":[0,451,0.5308],"adelphia":[0,11,0.0],"andella":[0,6,0.0],"ardes":[0,49,0.0],"arlet":[5,2892,0.6912],"arrietta":[0,16,0.0],"aulene":[0,11,0.0],"aurea":[0,1232,0.6181],"babara":[0,431,0.5269],"bedelia":[0,81,0.0],"berth":[0,6,0.0],"berthine":[0,22,0.0],"bille":[23,28,0.0],"bronislava":[0,6,0.0],"california":[0,264,0.4843],"carlyne":[0,207,0.4632],"carylon":[0,792,0.5797],"charleene":[0,205,0.4624],"colean":[0,43,0.0],"darthea":[0,17,0.0],"delone":[46,41,0.0],"deveda":[0,32,0.0],"doroty":[0,6,0.0],"durah":[0,6,0.0],"emalyn":[0,1842,0.6531],"emerine":[0,11,0.0],"ernice":[0,12,0.0],"evajane":[0,6,0.0],"fernie":[344,11,0.4942],"francella":[0,357,0.5105],"francille":[0,148,0.4341],"genett":[0,13,0.0],"georginia":[0,45,0.0],"gerrie":[11,1367,0.6228],"girdie":[0,23,0.0],"glenadine":[0,27,0.0],"glendine":[0,133,0.4248],"gleneva":[0,38,0.0],"gracey":[0,2585,0.6825],"guillermina":[0,1924,0.6568],"gwendolene":[0,6,0.0],"haline":[0,6,0.0],"jamima":[0,6,0.0],"jarmila":[0,18,0.0],"jula":[0,16,0.0],"lafaye":[0,308,0.4977],"larie":[5,351,0.5031],"lawana":[0,3028,0.6962],"lenia":[0,147,0.4335],"levater":[0,6,0.0],"leveda":[0,144,0.4317],"lilamae":[0,68,0.0],"lowene":[0,6,0.0],"lulubelle":[0,80,0.0],"macle":[0,21,0.0],"mady":[0,148,0.4341],"manetta":[0,57,0.0],"mauline":[0,12,0.0],"maytha":[0,6,0.0],"melle":[0,6,0.0],"mercia":[0,114,0.4114],"meribah":[0,6,0.0],"merva":[0,42,0.0],"miye":[0,19,0.0],"modestine":[0,230,0.4723],"narcille":[0,6,0.0],"nastasia":[0,512,0.5419],"odene":[5,36,0.0],"ollia":[0,18,0.0],"olliemae":[0,12,0.0],"onolee":[0,28,0.0],"orangie":[0,43,0.0],"orneta":[0,6,0.0],"oteria":[0,21,0.0],"ovaline":[0,46,0.0],"oveline":[0,12,0.0],"pasqualena":[0,6,0.0],"pearlia":[0,46,0.0],"ravenell":[0,16,0.0],"reaver":[0,38,0.0],"refujia":[0,29,0.0],"roverta":[0,6,0.0],"rozina":[0,219,0.4681],"salma":[5,10032,0.7999],"sharleen":[0,2623,0.6838],"sybella":[0,231,0.4727],"villie":[0,12,0.0],"vittoria":[0,1562,0.6387],"vonciel":[0,50,0.0],"wahneeta":[0,12,0.0],"wannetta":[0,356,0.5103],"willadene":[0,220,0.4685],"willodene":[0,241,0.4764],"zaddie":[0,11,0.0],"zay":[270,6,0.4776],"zoraida":[0,2086,0.6639],"addle":[0,5,0.0],"adlyn":[0,200,0.4602],"agneda":[0,5,0.0],"ailleen":[0,21,0.0],"ailsa":[0,538,0.5462],"albertie":[0,10,0.0],"aleida":[0,2052,0.6624],"alvania":[0,20,0.0],"alvernia":[0,5,0.0],"alvesta":[0,36,0.0],"alydia":[0,622,0.5588],"amalee":[0,179,0.4506],"aminta":[0,280,0.4894],"amo":[5,10,0.0],"ample":[0,5,0.0],"anthonette":[0,304,0.4966],"antionetta":[0,88,0.0],"arella":[0,473,0.535],"arita":[0,220,0.4685],"arlaine":[0,42,0.0],"arlien":[0,10,0.0],"armintha":[0,5,0.0],"armistice":[11,10,0.0],"athlene":[0,25,0.0],"athylene":[0,5,0.0],"audean":[0,26,0.0],"austine":[153,168,0.2624],"ayame":[0,319,0.5008],"azaline":[0,26,0.0],"azelia":[0,490,0.538],"beneva":[0,38,0.0],"benina":[0,39,0.0],"bernett":[26,51,0.0],"berthenia":[0,52,0.0],"berthia":[0,10,0.0],"bonne":[0,368,0.5132],"bonney":[5,447,0.5252],"catherline":[0,20,0.0],"cathy":[343,170291,0.998],"charlaine":[0,395,0.5193],"clarece":[0,125,0.4194],"claudell":[576,302,0.3862],"cleah":[0,5,0.0],"clemintine":[0,5,0.0],"clodean":[0,5,0.0],"clodie":[0,16,0.0],"collen":[661,512,0.3459],"conola":[0,5,0.0],"corie":[1021,3703,0.576],"dellora":[0,54,0.0],"delorse":[0,1142,0.6115],"devonia":[0,220,0.4685],"donnabel":[0,15,0.0],"dorella":[0,80,0.0],"dorethia":[0,114,0.4114],"druecilla":[0,15,0.0],"drusella":[0,10,0.0],"edena":[0,44,0.0],"edice":[0,5,0.0],"edwa":[0,5,0.0],"elain":[0,260,0.483],"elfreida":[0,63,0.0],"eliska":[0,221,0.4689],"ellinore":[0,145,0.4323],"ellise":[0,766,0.5768],"elvida":[0,45,0.0],"emalee":[0,3800,0.716],"emerline":[0,12,0.0],"emmadell":[0,5,0.0],"emme":[0,3533,0.7096],"ernestene":[0,197,0.4589],"ervina":[0,27,0.0],"esperance":[0,25,0.0],"ethylene":[0,62,0.0],"faithe":[0,710,0.5703],"fanniemae":[0,10,0.0],"floraine":[0,95,0.0],"francenia":[0,212,0.4653],"franciszka":[0,5,0.0],"freedom":[668,1224,0.424],"gallie":[0,5,0.0],"geneivieve":[0,5,0.0],"georgean":[0,329,0.5034],"geri":[5,8021,0.7804],"ginny":[0,7597,0.7761],"gleda":[0,47,0.0],"golena":[0,11,0.0],"guyneth":[0,30,0.0],"halcy":[0,5,0.0],"hanae":[0,130,0.4228],"helenmarie":[0,50,0.0],"hisa":[0,5,0.0],"hisaye":[0,25,0.0],"hozel":[0,5,0.0],"hulene":[0,32,0.0],"idalou":[0,5,0.0],"ileana":[0,5565,0.7491],"illinois":[5,11,0.0],"imogean":[0,313,0.4991],"inah":[0,11,0.0],"iney":[0,5,0.0],"inona":[0,10,0.0],"irna":[0,25,0.0],"italy":[10,2113,0.6623],"itaska":[0,10,0.0],"jama":[101,1552,0.6043],"janyce":[0,1861,0.6539],"jerrine":[0,271,0.4866],"jessa":[5,6376,0.7604],"jessalyn":[0,3673,0.713],"jesselyn":[0,534,0.5455],"joelle":[520,15863,0.8161],"jolanda":[0,1015,0.6013],"joline":[0,2136,0.6659],"jordis":[6,272,0.4783],"junis":[32,19,0.0],"jurell":[139,5,0.4167],"kumiko":[0,78,0.0],"lafrance":[29,60,0.0],"lapearl":[0,5,0.0],"laurabell":[0,18,0.0],"laurajean":[0,106,0.4051],"laural":[0,1058,0.6049],"lavaune":[0,16,0.0],"lavonna":[0,1980,0.6593],"leonella":[0,90,0.0],"letah":[0,5,0.0],"levetta":[0,99,0.0],"ligia":[0,702,0.5693],"lillith":[0,1994,0.6599],"loletta":[0,256,0.4816],"lotha":[0,5,0.0],"loubelle":[0,5,0.0],"loueva":[0,20,0.0],"lougenia":[0,62,0.0],"lourie":[0,575,0.5519],"lovern":[11,10,0.0],"lucelle":[0,34,0.0],"lueella":[0,17,0.0],"lueseal":[0,5,0.0],"luly":[0,5,0.0],"luma":[0,216,0.4669],"lus":[0,475,0.5353],"lusetta":[0,5,0.0],"lutishia":[0,5,0.0],"lynna":[0,1711,0.6467],"madalaine":[0,71,0.0],"madelen":[0,55,0.0],"madiline":[0,92,0.0],"magel":[0,10,0.0],"marcele":[0,104,0.4034],"mardel":[0,264,0.4843],"margory":[0,63,0.0],"margreet":[0,10,0.0],"margueriette":[0,5,0.0],"marigene":[0,137,0.4273],"marigold":[0,2474,0.6787],"marise":[0,285,0.491],"marjarie":[0,101,0.4009],"marrian":[0,153,0.4369],"marvelyn":[0,138,0.428],"marzell":[260,204,0.2988],"masue":[0,18,0.0],"mattielee":[0,10,0.0],"maudena":[0,25,0.0],"maydean":[0,32,0.0],"maylene":[0,1176,0.6141],"miladie":[0,5,0.0],"mildra":[0,5,0.0],"milena":[0,7475,0.7747],"mirtle":[0,10,0.0],"misue":[0,5,0.0],"molene":[0,49,0.0],"moree":[0,15,0.0],"mosie":[117,48,0.3145],"myree":[0,26,0.0],"nadeene":[0,5,0.0],"narciss":[0,5,0.0],"nazarene":[0,80,0.0],"neata":[0,5,0.0],"noralee":[0,529,0.5447],"norita":[0,799,0.5805],"ogreta":[0,5,0.0],"oleatha":[0,55,0.0],"olline":[0,15,0.0],"olma":[0,13,0.0],"onetia":[0,5,0.0],"onyx":[5954,1627,0.6094],"orabell":[0,11,0.0],"ore":[12,12,0.0],"orea":[10,32,0.0],"ozetta":[0,87,0.0],"panagiota":[0,560,0.5496],"pasqua":[0,16,0.0],"paulean":[0,49,0.0],"pheby":[0,5,0.0],"plumie":[0,10,0.0],"quella":[0,5,0.0],"reber":[0,31,0.0],"reesie":[0,5,0.0],"rhae":[0,59,0.0],"robertia":[0,21,0.0],"roselin":[0,706,0.5698],"rosilee":[0,71,0.0],"rudine":[0,307,0.4974],"sarajane":[0,713,0.5706],"satsuko":[0,5,0.0],"seba":[0,112,0.4098],"selia":[0,739,0.5737],"sharron":[370,16856,0.829],"slyvia":[0,341,0.5066],"stefhanie":[0,133,0.4248],"stefie":[0,15,0.0],"swanie":[0,5,0.0],"sylvina":[0,52,0.0],"tamae":[0,15,0.0],"tania":[61,28796,0.8902],"tenia":[0,981,0.5983],"tensie":[0,15,0.0],"terrie":[338,19728,0.846],"theatus":[0,11,0.0],"thedis":[0,16,0.0],"thema":[0,40,0.0],"theopa":[0,5,0.0],"theopal":[0,11,0.0],"thyrza":[0,16,0.0],"tiofila":[0,5,0.0],"trinie":[0,42,0.0],"valaska":[0,5,0.0],"vaneda":[0,5,0.0],"vega":[178,715,0.4725],"veralee":[0,76,0.0],"victoire":[0,98,0.0],"vinnia":[0,34,0.0],"violeta":[5,8276,0.7831],"vurla":[0,10,0.0],"wahnita":[0,5,0.0],"wendy":[951,262161,0.9964],"willeen":[0,127,0.4208],"winiferd":[0,16,0.0],"zubie":[0,5,0.0],"foch":[67,0,0.0],"clenard":[38,0,0.0],"joao":[2230,0,0.6697],"leron":[1744,0,0.6483],"masatoshi":[16,0,0.0],"spiros":[639,0,0.5611],"yoshiaki":[89,0,0.0],"adalberto":[4620,0,0.7329],"hobby":[9,0,0.0],"julus":[85,0,0.0],"ld":[45,0,0.0],"nolin":[497,0,0.5393],"quention":[71,0,0.0],"real":[395,26,0.4924],"ronal":[1525,0,0.6367],"summer":[254,89323,0.9876],"wildon":[170,0,0.4461],"atley":[605,825,0.3641],"bennard":[29,0,0.0],"burlon":[98,0,0.0],"corneilus":[340,0,0.5063],"cyrille":[25,6,0.0],"duey":[75,0,0.0],"evin":[3164,511,0.6139],"glyndon":[145,10,0.4098],"hilaire":[29,19,0.0],"kasmir":[51,0,0.0],"kieran":[16788,1594,0.7789],"lary":[1577,0,0.6396],"lorenso":[407,0,0.5219],"melvan":[27,0,0.0],"millis":[14,0,0.0],"neel":[3284,0,0.7033],"orestes":[343,0,0.5071],"philipp":[981,0,0.5983],"reinold":[55,0,0.0],"remmel":[18,0,0.0],"rowell":[51,0,0.0],"severiano":[793,0,0.5799],"wilby":[8,0,0.0],"azad":[358,0,0.5108],"beaufort":[36,0,0.0],"cantrell":[422,65,0.4658],"chales":[187,0,0.4544],"chanel":[85,18926,0.852],"coker":[12,0,0.0],"criss":[592,114,0.4778],"dent":[71,0,0.0],"florin":[52,0,0.0],"hansell":[59,0,0.0],"harvis":[72,0,0.0],"hendrick":[1581,0,0.6398],"hendricks":[325,0,0.5024],"lang":[549,6,0.5429],"latimer":[30,0,0.0],"layne":[13935,5522,0.6144],"leodore":[7,0,0.0],"nahum":[2139,0,0.666],"osmer":[12,0,0.0],"parmer":[7,0,0.0],"petter":[60,0,0.0],"pringle":[7,0,0.0],"quenten":[735,0,0.5733],"rc":[96,0,0.0],"samel":[69,0,0.0],"sisto":[406,0,0.5217],"talmon":[17,0,0.0],"tasker":[20,0,0.0],"thaddus":[86,0,0.0],"utah":[382,0,0.5164],"victorio":[508,0,0.5412],"whitt":[391,0,0.5184],"yoshiyuki":[36,0,0.0],"acencion":[27,0,0.0],"adrion":[769,0,0.5772],"aleksander":[4040,0,0.7213],"allenby":[6,0,0.0],"alve":[24,0,0.0],"alward":[6,0,0.0],"bain":[325,0,0.5024],"birchard":[11,0,0.0],"celestin":[6,0,0.0],"clellan":[58,0,0.0],"corneil":[21,0,0.0],"cottrell":[141,0,0.4298],"cubie":[11,43,0.0],"darrol":[654,0,0.5631],"derrol":[27,0,0.0],"dirk":[10935,0,0.8078],"duaine":[1052,0,0.6044],"eberhard":[6,0,0.0],"edwill":[6,0,0.0],"eiichi":[11,0,0.0],"eldee":[6,5,0.0],"eldren":[6,0,0.0],"emra":[6,74,0.0],"felisiano":[6,0,0.0],"fentress":[21,0,0.0],"fieldon":[6,0,0.0],"finlay":[1051,196,0.5219],"floyed":[117,0,0.4136],"foley":[32,0,0.0],"grayden":[2125,0,0.6655],"greenwood":[6,0,0.0],"guilbert":[16,0,0.0],"hines":[79,0,0.0],"hirsch":[21,0,0.0],"hommer":[78,0,0.0],"iredell":[6,0,0.0],"jun":[1413,149,0.5778],"kazmer":[22,0,0.0],"kazuma":[208,0,0.4636],"larnell":[882,5,0.5863],"lay":[28,12,0.0],"looney":[6,0,0.0],"loron":[74,0,0.0],"lowen":[623,393,0.3688],"marwood":[26,0,0.0],"mayhew":[13,0,0.0],"mcclain":[474,84,0.4666],"milon":[149,0,0.4346],"moral":[6,0,0.0],"morrow":[22,0,0.0],"nason":[572,0,0.5515],"nobel":[262,0,0.4837],"panfilo":[218,0,0.4677],"perrie":[44,360,0.4645],"petro":[160,0,0.4408],"phelps":[59,0,0.0],"pickens":[11,0,0.0],"quillian":[39,0,0.0],"rhuben":[13,0,0.0],"ripley":[878,2309,0.5076],"rodrigo":[27139,5,0.8866],"ruthford":[35,0,0.0],"samule":[314,0,0.4994],"seabron":[82,0,0.0],"sipriano":[117,0,0.4136],"smokey":[131,0,0.4235],"stedman":[368,0,0.5132],"sumio":[17,0,0.0],"thaddues":[55,0,0.0],"thadus":[11,0,0.0],"ulan":[6,0,0.0],"vandiver":[6,0,0.0],"watkins":[21,0,0.0],"wendal":[194,0,0.4576],"westly":[926,0,0.5933],"wilgus":[82,0,0.0],"windom":[21,0,0.0],"woodley":[275,0,0.4879],"ysmael":[196,0,0.4585],"adley":[612,5816,0.6891],"ado":[26,0,0.0],"adonis":[20117,101,0.8568],"aelred":[28,0,0.0],"agustine":[532,0,0.5452],"aldridge":[83,0,0.0],"alen":[2335,0,0.6737],"archa":[5,0,0.0],"arco":[5,0,0.0],"arion":[2139,620,0.5335],"arthus":[5,0,0.0],"arvey":[41,0,0.0],"arvill":[22,0,0.0],"barksdale":[5,0,0.0],"barnell":[97,6,0.3791],"baylor":[8183,3314,0.578],"bayne":[599,0,0.5555],"booth":[49,0,0.0],"boyed":[5,0,0.0],"brant":[9535,10,0.7951],"brister":[5,0,0.0],"bundy":[5,0,0.0],"buron":[47,0,0.0],"buss":[5,0,0.0],"carlas":[174,59,0.3536],"carlile":[15,0,0.0],"casimere":[5,0,0.0],"chancie":[27,191,0.4098],"chano":[33,0,0.0],"chasteen":[5,0,0.0],"cleother":[10,0,0.0],"coit":[37,0,0.0],"conwell":[49,0,0.0],"cooley":[10,0,0.0],"corlis":[32,483,0.5087],"cotton":[497,0,0.5393],"coyal":[11,0,0.0],"cramer":[55,0,0.0],"cread":[11,0,0.0],"cromer":[5,0,0.0],"czeslaw":[18,0,0.0],"danford":[374,0,0.5146],"dearmond":[5,0,0.0],"delavan":[5,0,0.0],"delmos":[66,0,0.0],"demetrios":[2755,0,0.688],"doug":[22472,5,0.8702],"drake":[36489,83,0.9106],"dunk":[5,0,0.0],"eason":[2737,0,0.6875],"ebbe":[5,0,0.0],"eleck":[5,0,0.0],"elmen":[5,0,0.0],"elmont":[10,0,0.0],"elric":[557,0,0.5492],"elry":[22,0,0.0],"emedio":[11,0,0.0],"emillio":[501,0,0.54],"errold":[5,0,0.0],"eurie":[10,5,0.0],"evins":[16,0,0.0],"finn":[33229,415,0.8942],"finus":[21,0,0.0],"floryan":[20,0,0.0],"fonzo":[35,0,0.0],"forester":[40,0,0.0],"frampton":[5,0,0.0],"friel":[5,0,0.0],"garney":[50,0,0.0],"garrie":[342,74,0.4306],"garvie":[32,0,0.0],"geore":[5,0,0.0],"glyde":[5,0,0.0],"gottfred":[5,0,0.0],"gresham":[159,0,0.4403],"harol":[83,0,0.0],"harrol":[72,0,0.0],"hasson":[348,0,0.5083],"hensel":[40,0,0.0],"heraclio":[272,0,0.4869],"herby":[649,0,0.5624],"hilarion":[15,0,0.0],"hildon":[26,0,0.0],"hillel":[1428,0,0.6309],"holmer":[5,0,0.0],"homar":[565,0,0.5504],"hoyal":[16,0,0.0],"hubart":[5,0,0.0],"hurtis":[57,0,0.0],"issie":[5,6,0.0],"ivel":[15,16,0.0],"jae":[1657,1262,0.3934],"jahn":[385,0,0.5171],"jap":[25,0,0.0],"jerrald":[835,0,0.5843],"jethroe":[11,0,0.0],"johon":[16,0,0.0],"juell":[86,17,0.3361],"juston":[2524,0,0.6804],"kasimer":[5,0,0.0],"kaz":[695,0,0.5684],"kazmir":[173,0,0.4476],"keene":[460,0,0.5326],"kellis":[111,104,0.2408],"kenzie":[483,21011,0.847],"kiichi":[17,0,0.0],"lamarr":[2887,30,0.6859],"lavan":[285,5,0.484],"lawell":[5,0,0.0],"lealand":[312,0,0.4988],"lebern":[5,0,0.0],"lemont":[682,0,0.5668],"lennox":[13160,5012,0.6169],"levere":[59,0,0.0],"loal":[27,0,0.0],"lockwood":[39,0,0.0],"lonell":[763,23,0.5621],"longin":[14,0,0.0],"maloy":[21,0,0.0],"marwin":[370,0,0.5136],"maynord":[10,0,0.0],"merit":[206,265,0.3008],"milard":[11,0,0.0],"milvin":[15,0,0.0],"minnis":[11,0,0.0],"mitsuyoshi":[10,0,0.0],"morland":[5,0,0.0],"morriss":[5,0,0.0],"moyer":[19,0,0.0],"munson":[20,0,0.0],"nephi":[723,0,0.5718],"newbern":[5,0,0.0],"obra":[59,0,0.0],"oluf":[5,0,0.0],"olvis":[5,0,0.0],"oneill":[87,0,0.0],"onofre":[246,0,0.4782],"orban":[44,0,0.0],"orum":[5,0,0.0],"orvid":[27,0,0.0],"osbie":[12,0,0.0],"othan":[5,0,0.0],"ottomar":[5,0,0.0],"parry":[508,0,0.5412],"pervie":[10,0,0.0],"prophet":[310,0,0.4983],"quin":[1678,572,0.5],"rascoe":[5,0,0.0],"rauni":[5,0,0.0],"raymand":[58,0,0.0],"rayner":[342,0,0.5068],"redman":[5,0,0.0],"redus":[10,0,0.0],"reginaldo":[407,0,0.5219],"reinard":[5,0,0.0],"revere":[121,0,0.4166],"rheo":[11,0,0.0],"salmon":[15,0,0.0],"sambo":[39,0,0.0],"sebastain":[500,0,0.5398],"seikichi":[28,0,0.0],"selton":[10,0,0.0],"servando":[2186,0,0.6679],"setsuo":[5,0,0.0],"sholom":[1449,0,0.6322],"sievert":[5,0,0.0],"sigmunt":[5,0,0.0],"silverius":[10,0,0.0],"sueo":[80,0,0.0],"sunao":[39,0,0.0],"takeichi":[5,0,0.0],"thaddeaus":[138,0,0.428],"theotis":[939,0,0.5945],"thoralf":[5,0,0.0],"tilmer":[16,0,0.0],"tino":[2020,0,0.6611],"trammell":[116,0,0.4129],"trino":[304,0,0.4966],"ubald":[5,0,0.0],"urbin":[5,0,0.0],"vasil":[79,0,0.0],"veachel":[18,0,0.0],"villard":[21,0,0.0],"visente":[155,0,0.4381],"voy":[5,0,0.0],"vytautas":[52,0,0.0],"wakefield":[22,0,0.0],"wamon":[5,0,0.0],"warnell":[161,16,0.409],"webber":[97,0,0.0],"wick":[36,0,0.0],"willbert":[31,0,0.0],"willfred":[20,0,0.0],"willus":[20,0,0.0],"wilmore":[80,0,0.0],"winn":[327,39,0.4581],"wyndham":[118,0,0.4144],"yoshikatsu":[5,0,0.0],"zaven":[523,0,0.5437],"tokie":[0,56,0.0],"lucenda":[0,41,0.0],"micheline":[0,1266,0.6205],"faythe":[0,991,0.5992],"julina":[0,469,0.5342],"marquita":[30,11010,0.8064],"nonia":[0,28,0.0],"clarcie":[0,36,0.0],"delorise":[0,1311,0.6235],"delsia":[0,41,0.0],"emelina":[0,745,0.5744],"johnniemae":[0,9,0.0],"juanice":[0,488,0.5377],"larae":[0,3415,0.7067],"arlillian":[0,14,0.0],"audell":[0,28,0.0],"betta":[0,78,0.0],"carmetta":[0,23,0.0],"donetta":[0,1994,0.6599],"exia":[0,8,0.0],"leaetta":[0,31,0.0],"lenita":[0,1178,0.6142],"lysbeth":[0,110,0.4083],"maudeline":[0,8,0.0],"mazola":[0,58,0.0],"novell":[10,41,0.0],"pegge":[0,246,0.4782],"ruba":[0,502,0.5401],"sayoko":[0,32,0.0],"virdell":[17,97,0.35],"virla":[0,50,0.0],"vyvyan":[0,37,0.0],"winogene":[0,28,0.0],"aberdeen":[0,259,0.4827],"annabeth":[0,2702,0.6863],"arcenia":[0,116,0.4129],"armetha":[0,34,0.0],"arthenia":[0,35,0.0],"atheline":[0,7,0.0],"azelle":[0,71,0.0],"clemontine":[0,13,0.0],"clydell":[137,83,0.2917],"crispina":[0,23,0.0],"darcas":[0,7,0.0],"donice":[0,567,0.5507],"dorthella":[0,31,0.0],"earlen":[0,36,0.0],"eldona":[0,46,0.0],"elita":[0,551,0.5482],"elrose":[0,37,0.0],"ennice":[0,7,0.0],"ermer":[0,30,0.0],"ethelynn":[0,18,0.0],"ethyleen":[0,12,0.0],"evagene":[0,38,0.0],"fyrn":[0,7,0.0],"hazeline":[0,253,0.4806],"lavert":[168,7,0.4307],"loriene":[0,124,0.4187],"milderd":[0,112,0.4098],"minnielee":[0,7,0.0],"miyuki":[0,348,0.5083],"nadeane":[0,42,0.0],"natalee":[0,10244,0.8021],"neomie":[0,35,0.0],"ocelia":[0,32,0.0],"ovalee":[0,7,0.0],"petrita":[0,69,0.0],"petronia":[0,43,0.0],"poppy":[5,8477,0.7852],"rauha":[0,7,0.0],"romelda":[0,54,0.0],"rubell":[0,37,0.0],"therisa":[0,352,0.5093],"trulie":[0,68,0.0],"waver":[11,69,0.0],"alfair":[0,16,0.0],"alleane":[0,30,0.0],"alsa":[0,6,0.0],"alveta":[0,153,0.4369],"annajane":[0,47,0.0],"arcadia":[0,640,0.5612],"arether":[0,6,0.0],"arlina":[0,170,0.4461],"avadna":[0,6,0.0],"berthamae":[0,26,0.0],"bessiemae":[0,6,0.0],"bettijane":[0,22,0.0],"bettylee":[0,136,0.4267],"ceretha":[0,46,0.0],"chizue":[0,11,0.0],"christean":[0,167,0.4445],"cledia":[0,17,0.0],"clercie":[0,6,0.0],"columba":[0,43,0.0],"cordilia":[0,22,0.0],"coula":[0,6,0.0],"criselda":[0,1651,0.6435],"dawna":[0,6017,0.7559],"deanne":[5,14851,0.8341],"delaine":[242,2372,0.6202],"dorabelle":[0,6,0.0],"elaise":[0,6,0.0],"emerita":[0,142,0.4305],"eunetta":[0,6,0.0],"fatima":[46,38006,0.915],"gala":[0,2112,0.6649],"geannie":[0,55,0.0],"geargia":[0,6,0.0],"genivive":[0,6,0.0],"guilda":[0,33,0.0],"heddie":[0,38,0.0],"hurtha":[0,6,0.0],"ignatia":[0,6,0.0],"isabele":[0,181,0.4515],"jacquelyne":[0,3184,0.7006],"jennifer":[4837,1471191,0.9967],"johnna":[0,10014,0.8001],"juno":[381,1591,0.5317],"juyne":[0,6,0.0],"kathlean":[0,253,0.4806],"katsuko":[0,49,0.0],"larita":[0,1649,0.6434],"leathe":[0,6,0.0],"lennea":[0,54,0.0],"leonides":[682,18,0.5544],"licia":[0,735,0.5733],"liola":[0,6,0.0],"lozelle":[0,11,0.0],"ludelle":[0,6,0.0],"lunell":[0,87,0.0],"lylia":[0,419,0.5244],"madelynne":[0,1782,0.6502],"maerene":[0,22,0.0],"maetta":[0,26,0.0],"margerette":[0,6,0.0],"marice":[717,467,0.3722],"masa":[12,497,0.5286],"mercile":[0,17,0.0],"mernie":[0,17,0.0],"misae":[0,18,0.0],"moudie":[0,6,0.0],"murielle":[0,327,0.5029],"nedda":[0,108,0.4067],"ninette":[0,820,0.5828],"nixie":[0,431,0.5269],"ogie":[15,6,0.0],"olema":[0,12,0.0],"oradee":[0,11,0.0],"patrecia":[0,614,0.5576],"perrine":[0,24,0.0],"prescilla":[0,1037,0.6032],"rebacca":[0,101,0.4009],"reitha":[0,60,0.0],"renelda":[0,188,0.4548],"runell":[0,174,0.4481],"shirle":[0,104,0.4034],"sueno":[0,17,0.0],"sullie":[0,6,0.0],"sunbeam":[0,6,0.0],"tenny":[31,39,0.0],"tokiko":[0,88,0.0],"vacie":[0,6,0.0],"valiree":[0,6,0.0],"vear":[0,165,0.4435],"velsie":[0,6,0.0],"verdene":[0,88,0.0],"vernida":[0,72,0.0],"viviane":[0,988,0.599],"viviette":[0,11,0.0],"vyolette":[0,39,0.0],"wandalee":[0,231,0.4727],"ysidora":[0,6,0.0],"adlean":[0,138,0.428],"adrianne":[31,13313,0.8231],"agnella":[0,13,0.0],"alamae":[0,15,0.0],"aleph":[146,5,0.4214],"algertha":[0,5,0.0],"almarene":[0,5,0.0],"almetia":[0,23,0.0],"althera":[0,5,0.0],"amelita":[0,66,0.0],"analee":[0,2155,0.6667],"angeleen":[0,257,0.482],"annora":[0,751,0.5751],"annunciata":[0,5,0.0],"arlyle":[0,44,0.0],"arquilla":[0,17,0.0],"arrah":[0,21,0.0],"arvillia":[0,5,0.0],"athaleen":[0,21,0.0],"atherine":[0,42,0.0],"audrae":[0,39,0.0],"avonel":[0,5,0.0],"avril":[5,3371,0.7046],"bearnice":[0,10,0.0],"bernadina":[0,54,0.0],"birdye":[0,5,0.0],"birty":[0,5,0.0],"blaza":[0,5,0.0],"bonzie":[0,5,0.0],"burneta":[0,5,0.0],"caliope":[0,130,0.4228],"castoria":[0,5,0.0],"cennie":[0,26,0.0],"chlorine":[0,10,0.0],"claree":[0,57,0.0],"claribell":[0,18,0.0],"coraine":[0,5,0.0],"crucita":[0,84,0.0],"darothy":[0,66,0.0],"dauphine":[0,34,0.0],"donzell":[1044,23,0.5926],"dorise":[0,461,0.5327],"dorita":[0,689,0.5676],"eldoris":[0,119,0.4151],"elizabethe":[0,15,0.0],"ellawese":[0,10,0.0],"ellese":[0,79,0.0],"elneta":[0,21,0.0],"elzabeth":[0,73,0.0],"emila":[0,157,0.4392],"emmajane":[0,232,0.4731],"ercilia":[0,172,0.4471],"ethele":[0,10,0.0],"ethelee":[0,34,0.0],"ethelreda":[0,69,0.0],"eugina":[0,360,0.5113],"everlener":[0,5,0.0],"evette":[0,6157,0.7579],"florince":[0,10,0.0],"folia":[0,5,0.0],"fraces":[0,5,0.0],"freyda":[0,30,0.0],"fujiye":[0,12,0.0],"future":[312,38,0.4536],"geanie":[0,174,0.4481],"genera":[0,60,0.0],"gennieve":[0,31,0.0],"georgeanne":[0,1119,0.6098],"gerladine":[0,10,0.0],"gertis":[5,23,0.0],"gladus":[0,5,0.0],"gladyne":[0,11,0.0],"glossie":[0,43,0.0],"gold":[16,23,0.0],"gwyndolin":[0,45,0.0],"hallene":[0,12,0.0],"hanner":[0,11,0.0],"hartie":[0,5,0.0],"heneretta":[0,10,0.0],"henryka":[0,5,0.0],"herline":[0,16,0.0],"hilia":[0,5,0.0],"icelene":[0,5,0.0],"ideal":[0,5,0.0],"idellia":[0,5,0.0],"ilmi":[0,5,0.0],"inus":[0,26,0.0],"iolia":[0,5,0.0],"iren":[78,5,0.0],"itasca":[0,5,0.0],"ive":[9,33,0.0],"ivry":[5,153,0.4258],"jearldine":[0,382,0.5164],"jenive":[0,5,0.0],"josepine":[0,5,0.0],"josetta":[0,519,0.543],"kassie":[0,6978,0.7687],"katheriene":[0,5,0.0],"katsue":[0,5,0.0],"kyra":[23,37947,0.9153],"laferne":[0,46,0.0],"lanna":[0,2096,0.6643],"lareine":[0,46,0.0],"lareta":[0,102,0.4017],"laverl":[49,15,0.0],"leonara":[0,16,0.0],"leonilla":[0,10,0.0],"leonise":[0,5,0.0],"leuna":[0,16,0.0],"levena":[0,18,0.0],"levolia":[0,16,0.0],"liela":[0,308,0.4977],"lilley":[0,430,0.5267],"loberta":[0,11,0.0],"loene":[0,11,0.0],"loeva":[0,30,0.0],"longina":[0,25,0.0],"loriena":[0,5,0.0],"lorriane":[0,607,0.5566],"lotella":[0,5,0.0],"lowella":[0,65,0.0],"lucenia":[0,5,0.0],"lucreta":[0,10,0.0],"luethel":[0,11,0.0],"lurah":[0,5,0.0],"lutha":[0,38,0.0],"luvella":[0,5,0.0],"lynetta":[0,1466,0.6332],"maile":[0,3647,0.7124],"malene":[0,164,0.443],"malia":[0,30729,0.8975],"marilene":[0,143,0.4311],"marilu":[0,2263,0.6709],"marlis":[0,846,0.5855],"marnell":[32,245,0.4321],"marolyn":[0,1381,0.628],"marvelene":[0,151,0.4358],"marvina":[0,603,0.5561],"marylea":[0,46,0.0],"mathie":[0,5,0.0],"matylda":[0,156,0.4386],"maudestine":[0,5,0.0],"maxima":[0,173,0.4476],"maximina":[0,145,0.4323],"maydene":[0,36,0.0],"mecie":[0,5,0.0],"meller":[0,5,0.0],"melna":[0,5,0.0],"mercedese":[0,37,0.0],"merinda":[0,562,0.5499],"monice":[0,213,0.4657],"myrdis":[0,10,0.0],"nanetta":[0,187,0.4544],"nasaria":[0,36,0.0],"nathalene":[0,16,0.0],"nellean":[0,5,0.0],"nellora":[0,5,0.0],"neona":[0,53,0.0],"netter":[0,10,0.0],"ninetta":[0,65,0.0],"normalee":[0,257,0.482],"oreane":[0,5,0.0],"orise":[5,5,0.0],"orlee":[5,41,0.0],"orleen":[0,5,0.0],"ortencia":[0,316,0.4999],"patra":[0,517,0.5427],"pauleta":[0,5,0.0],"pressie":[0,12,0.0],"quennie":[0,5,0.0],"qunnie":[0,11,0.0],"rachele":[0,3316,0.7041],"ravenel":[0,5,0.0],"revia":[0,63,0.0],"rosela":[0,56,0.0],"ruhama":[0,144,0.4317],"runette":[0,117,0.4136],"ruthmae":[0,21,0.0],"sadame":[0,5,0.0],"sakaye":[0,35,0.0],"salomea":[0,10,0.0],"salvatora":[0,5,0.0],"seiko":[24,11,0.0],"selene":[5,9240,0.7928],"shinobu":[5,5,0.0],"sinia":[0,100,0.4],"spicie":[0,5,0.0],"stamatia":[0,98,0.0],"stina":[0,117,0.4136],"susia":[0,10,0.0],"tama":[13,1433,0.6264],"tazuko":[0,19,0.0],"theria":[0,22,0.0],"tinny":[0,13,0.0],"twilah":[0,20,0.0],"uda":[0,11,0.0],"umeno":[0,10,0.0],"uretta":[0,10,0.0],"valencia":[11,12077,0.8157],"valoris":[0,5,0.0],"veral":[49,13,0.0],"veretta":[0,170,0.4461],"verlina":[0,48,0.0],"vertia":[0,47,0.0],"vetha":[0,5,0.0],"vine":[0,5,0.0],"virgiline":[0,35,0.0],"virginialee":[0,21,0.0],"voneta":[0,11,0.0],"walta":[0,115,0.4121],"westonia":[0,5,0.0],"willean":[0,259,0.4827],"willielee":[0,5,0.0],"wynetta":[0,350,0.5088],"wynnell":[0,5,0.0],"yuri":[2367,3629,0.4573],"juaquin":[1489,0,0.6346],"taro":[368,0,0.5132],"adrin":[401,12,0.508],"mackey":[607,6,0.552],"petronilo":[57,0,0.0],"quentine":[45,0,0.0],"alexandro":[6948,0,0.7684],"alfonzia":[186,0,0.4539],"byrum":[9,0,0.0],"domingos":[71,0,0.0],"donavan":[8243,5,0.7828],"dorvin":[43,0,0.0],"harvell":[47,0,0.0],"rodert":[161,0,0.4414],"gaynor":[95,105,0.2416],"hervie":[39,0,0.0],"katsuji":[23,0,0.0],"kilmer":[14,0,0.0],"pierino":[18,0,0.0],"richardson":[659,0,0.5638],"seiichi":[40,0,0.0],"shigeki":[22,0,0.0],"vard":[25,0,0.0],"brodus":[25,0,0.0],"carris":[17,21,0.0],"charlies":[181,0,0.4515],"davies":[40,0,0.0],"dempsie":[7,0,0.0],"dubois":[29,0,0.0],"dud":[17,0,0.0],"ector":[783,0,0.5788],"fredy":[4741,0,0.7352],"gailard":[24,0,0.0],"gettis":[12,0,0.0],"granvel":[100,0,0.4],"harlyn":[398,1756,0.5435],"jearl":[542,54,0.5048],"jw":[364,0,0.5122],"kazuto":[78,0,0.0],"ledell":[541,21,0.5294],"melio":[25,0,0.0],"olav":[38,0,0.0],"salbador":[457,0,0.532],"spartaco":[7,0,0.0],"stone":[6416,138,0.7472],"ade":[363,34,0.4752],"akio":[549,0,0.5479],"alphie":[17,0,0.0],"aubie":[24,5,0.0],"bascum":[19,0,0.0],"bates":[151,0,0.4358],"benancio":[284,0,0.4907],"boykin":[117,0,0.4136],"burnace":[17,0,0.0],"burnley":[11,0,0.0],"cay":[11,241,0.4593],"chan":[1028,212,0.5129],"cleaven":[143,0,0.4311],"cleman":[12,0,0.0],"cliston":[11,0,0.0],"cossie":[11,0,0.0],"dalmer":[21,0,0.0],"doward":[40,0,0.0],"dugald":[16,0,0.0],"elvio":[6,0,0.0],"elvon":[23,0,0.0],"eno":[76,5,0.0],"garman":[12,0,0.0],"garn":[50,0,0.0],"gearl":[236,64,0.3897],"grabiel":[645,0,0.5619],"halford":[134,0,0.4254],"hallis":[67,0,0.0],"ikey":[127,0,0.4208],"innis":[38,5,0.0],"jarrel":[1019,0,0.6016],"jeffry":[15383,10,0.8369],"jenaro":[675,0,0.5659],"jimmey":[904,0,0.5912],"kirt":[3615,0,0.7116],"leal":[24,23,0.0],"lendall":[25,0,0.0],"linell":[159,293,0.3442],"mager":[11,0,0.0],"milnor":[6,0,0.0],"mitt":[47,0,0.0],"mobley":[6,0,0.0],"murland":[6,0,0.0],"mylo":[3205,142,0.675],"nicandro":[175,0,0.4486],"notley":[6,0,0.0],"rayvon":[2042,61,0.6453],"rick":[81792,135,0.9811],"roddie":[303,5,0.4896],"ron":[36341,70,0.9105],"rondo":[81,0,0.0],"santford":[47,0,0.0],"tinsley":[88,4441,0.717],"urey":[6,0,0.0],"venis":[11,47,0.0],"waverley":[11,226,0.4529],"willi":[144,0,0.4317],"winsor":[53,0,0.0],"wishard":[6,0,0.0],"aarne":[10,0,0.0],"alfonsa":[144,11,0.407],"aloisius":[5,0,0.0],"alphe":[11,0,0.0],"anacleto":[206,0,0.4628],"andrell":[321,134,0.375],"arvon":[74,0,0.0],"aswell":[5,0,0.0],"aud":[14,0,0.0],"azriah":[21,17,0.0],"be":[5,0,0.0],"belden":[35,0,0.0],"bentura":[43,5,0.0],"blaney":[5,7,0.0],"boby":[374,0,0.5146],"brinson":[366,6,0.5058],"burrill":[10,0,0.0],"burvin":[10,0,0.0],"butch":[3423,0,0.7069],"caston":[540,0,0.5465],"cesidio":[5,0,0.0],"chew":[5,0,0.0],"chief":[332,0,0.5042],"clabern":[5,0,0.0],"claren":[17,25,0.0],"clemet":[5,0,0.0],"clemmon":[60,0,0.0],"cleophis":[40,0,0.0],"colburn":[174,0,0.4481],"corey":[184687,9033,0.9534],"cornel":[1174,0,0.6139],"costantino":[60,0,0.0],"darnley":[5,0,0.0],"deciderio":[10,0,0.0],"delfin":[280,0,0.4894],"delwood":[25,0,0.0],"denzle":[20,0,0.0],"dorus":[24,0,0.0],"dory":[124,961,0.5377],"dyle":[27,0,0.0],"eamon":[4641,0,0.7333],"eb":[5,0,0.0],"edbert":[31,0,0.0],"edwood":[5,0,0.0],"eleazar":[5960,7,0.7543],"eleazer":[59,0,0.0],"elkins":[5,0,0.0],"elno":[5,0,0.0],"embree":[10,436,0.518],"eph":[5,0,0.0],"epimenio":[184,0,0.453],"erbin":[15,0,0.0],"erford":[12,0,0.0],"estis":[5,0,0.0],"exell":[15,0,0.0],"ferron":[101,12,0.367],"ferry":[65,10,0.0],"fess":[5,0,0.0],"fitzgerald":[1885,0,0.6551],"furney":[15,0,0.0],"gael":[45199,667,0.9187],"glennwood":[20,0,0.0],"goodman":[22,0,0.0],"greenberry":[11,0,0.0],"harford":[5,0,0.0],"harld":[15,0,0.0],"harleth":[14,0,0.0],"harmond":[10,0,0.0],"hermit":[5,0,0.0],"hilliary":[5,303,0.4896],"hilyard":[5,0,0.0],"hollace":[37,328,0.4605],"hooker":[5,0,0.0],"hose":[12,0,0.0],"hoston":[5,0,0.0],"hoyet":[38,0,0.0],"hueston":[55,0,0.0],"hughe":[5,0,0.0],"hurl":[30,0,0.0],"hyle":[5,0,0.0],"iry":[15,12,0.0],"iseral":[5,0,0.0],"ives":[89,0,0.0],"jab":[5,0,0.0],"jarl":[137,0,0.4273],"jesie":[26,38,0.0],"jissie":[45,10,0.0],"jl":[32,0,0.0],"johnathon":[25531,52,0.8798],"kaarlo":[5,0,0.0],"kenard":[776,0,0.578],"kendell":[4774,1945,0.5439],"kenward":[35,0,0.0],"kingston":[44628,193,0.9263],"kinneth":[175,0,0.4486],"kotaro":[194,0,0.4576],"ladislao":[76,0,0.0],"lanny":[9577,67,0.7913],"laris":[10,0,0.0],"laymond":[134,0,0.4254],"lesly":[504,15131,0.8118],"lido":[70,0,0.0],"lindel":[340,16,0.4874],"lindsy":[5,2153,0.6653],"lional":[100,0,0.4],"loid":[39,0,0.0],"maclovio":[86,0,0.0],"martial":[47,0,0.0],"masaki":[257,0,0.482],"matsuichi":[5,0,0.0],"mckinly":[5,30,0.0],"melecio":[446,0,0.5299],"minyard":[5,0,0.0],"morice":[30,0,0.0],"murphey":[10,27,0.0],"nelton":[79,0,0.0],"nelvin":[387,10,0.5067],"newlin":[15,0,0.0],"norvil":[71,0,0.0],"oakland":[1247,244,0.5308],"obrey":[5,0,0.0],"ollin":[301,0,0.4957],"olliver":[455,0,0.5316],"oresto":[17,0,0.0],"ortis":[16,0,0.0],"ory":[147,0,0.4335],"ottaway":[5,0,0.0],"perman":[24,0,0.0],"pledger":[24,0,0.0],"printice":[64,0,0.0],"pruitt":[130,52,0.3229],"quillar":[5,0,0.0],"raybon":[198,0,0.4593],"renza":[5,0,0.0],"rolin":[261,0,0.4833],"samuell":[201,0,0.4606],"saragosa":[15,0,0.0],"sedric":[1500,0,0.6352],"sequoyah":[201,470,0.396],"sigfrid":[5,0,0.0],"sneed":[5,0,0.0],"sostenes":[122,0,0.4173],"st":[24,0,0.0],"standish":[5,0,0.0],"star":[148,8181,0.7702],"stevie":[12385,16237,0.5056],"summie":[21,0,0.0],"swift":[21,0,0.0],"tellis":[295,0,0.494],"teodulo":[48,0,0.0],"tharel":[5,0,0.0],"thornwell":[5,0,0.0],"tsukasa":[25,0,0.0],"uvaldo":[633,0,0.5603],"varden":[5,0,0.0],"varney":[29,0,0.0],"vayne":[5,0,0.0],"venancio":[520,0,0.5432],"verdo":[5,0,0.0],"vermont":[21,7,0.0],"wallice":[80,0,0.0],"waren":[20,0,0.0],"weymouth":[10,0,0.0],"wilbor":[22,0,0.0],"willies":[85,0,0.0],"wintford":[18,0,0.0],"woodland":[34,0,0.0],"wymon":[89,0,0.0],"zeferino":[329,0,0.5034],"ziggie":[5,0,0.0],"dardanella":[0,50,0.0],"doraine":[0,237,0.4749],"bettyjo":[0,771,0.5774],"bettymae":[0,130,0.4228],"dalores":[0,68,0.0],"glema":[0,169,0.4456],"hesta":[0,26,0.0],"madalynne":[0,694,0.5683],"monda":[0,252,0.4803],"odester":[0,127,0.4208],"ordella":[0,36,0.0],"dardenella":[0,9,0.0],"generose":[0,32,0.0],"nellene":[0,180,0.4511],"altamese":[0,287,0.4916],"anniece":[0,69,0.0],"arsula":[0,25,0.0],"bibiana":[0,1449,0.6322],"charlot":[0,145,0.4323],"elline":[0,29,0.0],"elmerine":[0,8,0.0],"esperansa":[0,503,0.5403],"glenrose":[0,51,0.0],"ivadelle":[0,24,0.0],"ivanelle":[0,44,0.0],"kinuko":[0,8,0.0],"klea":[0,279,0.4891],"lotte":[0,85,0.0],"madelynn":[0,18358,0.8528],"margeurite":[0,25,0.0],"maryjean":[0,1117,0.6096],"norvella":[0,163,0.4424],"pabla":[0,51,0.0],"vernamae":[0,26,0.0],"agata":[0,458,0.5322],"alpine":[0,7,0.0],"anelia":[0,255,0.4813],"annise":[0,230,0.4723],"avenelle":[0,17,0.0],"bartola":[0,18,0.0],"bobbette":[0,667,0.5648],"carmaleta":[0,90,0.0],"catha":[0,149,0.4346],"cleata":[0,14,0.0],"clotiel":[0,71,0.0],"concepsion":[0,36,0.0],"darling":[15,998,0.5922],"glendoris":[0,85,0.0],"junella":[0,186,0.4539],"kiki":[25,1099,0.5966],"lamae":[0,82,0.0],"lilymae":[0,222,0.4693],"lucette":[0,369,0.5134],"merri":[0,3170,0.7002],"minneola":[0,7,0.0],"obdulia":[0,163,0.4424],"overa":[0,28,0.0],"teri":[214,43950,0.9245],"weta":[0,17,0.0],"wyvetta":[0,22,0.0],"aila":[0,3938,0.7191],"albia":[0,6,0.0],"annarose":[0,749,0.5749],"asie":[40,36,0.0],"aza":[96,490,0.4629],"berdia":[0,155,0.4381],"brunell":[5,27,0.0],"cathelene":[0,47,0.0],"cevera":[0,6,0.0],"clinnie":[5,6,0.0],"clydine":[0,99,0.0],"consuello":[0,83,0.0],"dala":[0,274,0.4876],"darnella":[0,731,0.5728],"doritha":[0,47,0.0],"edis":[157,41,0.3642],"elnorah":[0,6,0.0],"eulane":[0,6,0.0],"eulean":[0,18,0.0],"evangelyn":[0,411,0.5228],"evonia":[0,12,0.0],"febbie":[0,26,0.0],"florien":[0,6,0.0],"fontelle":[0,6,0.0],"geraldyn":[0,71,0.0],"gila":[0,631,0.56],"glendolyn":[0,55,0.0],"goldean":[0,6,0.0],"grabiela":[0,434,0.5275],"idessa":[0,30,0.0],"iduma":[0,6,0.0],"ileane":[0,230,0.4723],"irona":[0,21,0.0],"ivalou":[0,47,0.0],"jannetta":[0,324,0.5021],"jennet":[0,166,0.444],"jeraline":[0,254,0.481],"julette":[0,11,0.0],"katholeen":[0,6,0.0],"lorese":[0,23,0.0],"luola":[0,6,0.0],"magdlene":[0,46,0.0],"malina":[0,4364,0.728],"maratha":[0,22,0.0],"marcelia":[0,136,0.4267],"marcellene":[0,112,0.4098],"margee":[0,86,0.0],"maudry":[0,206,0.4628],"mayda":[0,566,0.5506],"melonee":[0,349,0.5086],"merica":[0,229,0.472],"merrial":[0,6,0.0],"misayo":[0,11,0.0],"murtis":[0,55,0.0],"natha":[27,250,0.4409],"oleavia":[0,11,0.0],"raymonde":[0,97,0.0],"reynalda":[0,338,0.5058],"rivian":[11,11,0.0],"romell":[1461,98,0.5984],"ruthey":[0,11,0.0],"santiaga":[0,71,0.0],"saturnina":[0,33,0.0],"sotera":[0,17,0.0],"thelia":[0,85,0.0],"toinette":[0,503,0.5403],"vanice":[0,161,0.4414],"velvet":[5,3083,0.6968],"vendetta":[0,195,0.458],"wilta":[0,11,0.0],"wylodean":[0,77,0.0],"wynogene":[0,6,0.0],"zenoba":[0,12,0.0],"addell":[0,16,0.0],"adrine":[5,64,0.0],"aire":[54,19,0.0],"alaire":[0,46,0.0],"aleece":[0,657,0.5635],"alejandrina":[0,1321,0.6242],"almeria":[0,5,0.0],"alzira":[0,36,0.0],"aneva":[0,16,0.0],"annagene":[0,5,0.0],"anny":[0,1453,0.6325],"argentine":[0,5,0.0],"artella":[0,5,0.0],"arvena":[0,20,0.0],"atsuko":[0,16,0.0],"auretta":[0,5,0.0],"avaline":[0,351,0.5091],"balvina":[0,20,0.0],"barba":[0,208,0.4636],"bedell":[0,5,0.0],"benna":[0,186,0.4539],"bernelda":[0,22,0.0],"bettejane":[0,71,0.0],"bevelyn":[0,269,0.486],"blancha":[0,5,0.0],"bloomie":[0,5,0.0],"bonnelle":[0,10,0.0],"brenice":[0,11,0.0],"cande":[0,93,0.0],"cecel":[0,5,0.0],"cherokee":[337,2566,0.6122],"chisato":[0,34,0.0],"clydean":[0,74,0.0],"cresencia":[0,122,0.4173],"darlena":[0,1536,0.6373],"dealia":[0,11,0.0],"dehlia":[0,197,0.4589],"delavina":[0,5,0.0],"delphene":[0,42,0.0],"dodie":[0,1258,0.6199],"domie":[0,10,0.0],"donnetta":[0,1521,0.6364],"doraline":[0,5,0.0],"doreathea":[0,21,0.0],"dores":[5,18,0.0],"dorles":[0,15,0.0],"dorraine":[0,354,0.5098],"earldine":[0,58,0.0],"edmere":[0,5,0.0],"elestine":[0,10,0.0],"ellease":[0,5,0.0],"elloree":[0,128,0.4214],"elneda":[0,5,0.0],"eluteria":[0,45,0.0],"elwanda":[0,1272,0.6209],"emelene":[0,31,0.0],"emmabelle":[0,94,0.0],"esthel":[0,12,0.0],"ethelmay":[0,5,0.0],"euba":[0,5,0.0],"eudene":[0,19,0.0],"eufrasia":[0,5,0.0],"eulia":[0,65,0.0],"eulojia":[0,15,0.0],"evalynne":[0,240,0.476],"evanna":[0,1077,0.6064],"fela":[5,45,0.0],"gaby":[26,1401,0.6194],"gelsomina":[0,15,0.0],"gencie":[0,5,0.0],"genetha":[0,53,0.0],"genevea":[0,22,0.0],"geniel":[0,59,0.0],"georgeina":[0,10,0.0],"gleeta":[0,5,0.0],"graple":[0,5,0.0],"haydee":[0,3395,0.7062],"hubertine":[0,5,0.0],"ineva":[0,11,0.0],"ireatha":[0,15,0.0],"isable":[0,5,0.0],"jacie":[5,4177,0.7234],"jackye":[0,197,0.4589],"jada":[256,67206,0.9621],"janeice":[0,585,0.5534],"jeannedarc":[0,28,0.0],"jearlean":[0,271,0.4866],"jereldine":[0,16,0.0],"jeroldine":[0,51,0.0],"jettye":[0,11,0.0],"juaquina":[0,57,0.0],"karren":[0,2177,0.6676],"katina":[34,11306,0.8085],"kerma":[0,39,0.0],"kerry":[49911,48652,0.5058],"ladislava":[0,23,0.0],"ladona":[0,721,0.5716],"lafon":[9,10,0.0],"lagatha":[0,10,0.0],"laneta":[0,183,0.4525],"lauraetta":[0,25,0.0],"lavee":[0,22,0.0],"laveeda":[0,36,0.0],"leslye":[0,2446,0.6777],"lilien":[0,35,0.0],"lo":[33,53,0.0],"lodean":[0,15,0.0],"lorah":[0,97,0.0],"lorrane":[0,124,0.4187],"lorreta":[0,5,0.0],"louvine":[0,5,0.0],"lowanda":[0,457,0.532],"lucell":[0,5,0.0],"ludene":[0,79,0.0],"lueberta":[0,5,0.0],"luell":[0,16,0.0],"lugardita":[0,5,0.0],"lyola":[0,29,0.0],"lyvonne":[0,193,0.4571],"macola":[0,5,0.0],"madgline":[0,10,0.0],"madrid":[5,37,0.0],"magdline":[0,23,0.0],"maguerite":[0,5,0.0],"many":[0,26,0.0],"margherite":[0,12,0.0],"marielle":[0,4407,0.7288],"marillyn":[0,437,0.5281],"marium":[0,380,0.516],"marth":[0,31,0.0],"martiel":[0,5,0.0],"marylynn":[0,2160,0.6669],"mavie":[0,322,0.5016],"mavin":[123,22,0.3667],"mayrene":[0,108,0.4067],"mentie":[0,5,0.0],"merlisa":[0,5,0.0],"mirah":[0,548,0.5478],"misaye":[0,5,0.0],"monia":[0,366,0.5127],"murlean":[0,73,0.0],"myrie":[0,17,0.0],"myrtes":[0,5,0.0],"myrtise":[0,10,0.0],"myrtlene":[0,32,0.0],"namie":[0,11,0.0],"namiko":[8,260,0.4711],"narvie":[5,16,0.0],"navada":[6,121,0.4009],"nelvina":[0,10,0.0],"nervia":[0,5,0.0],"nevina":[0,55,0.0],"noela":[0,244,0.4775],"oakie":[10,10,0.0],"odesa":[0,10,0.0],"omalee":[0,15,0.0],"orina":[0,5,0.0],"orsola":[0,5,0.0],"oweta":[0,10,0.0],"paolina":[0,175,0.4486],"parthina":[0,11,0.0],"pelma":[0,20,0.0],"phillys":[0,16,0.0],"plummie":[0,15,0.0],"pollyann":[0,166,0.444],"princie":[0,36,0.0],"ramelle":[11,47,0.0],"ranie":[0,120,0.4158],"rayetta":[0,666,0.5647],"resa":[0,1046,0.6039],"rhodella":[0,10,0.0],"roeberta":[0,5,0.0],"rozenia":[0,42,0.0],"sachiye":[0,5,0.0],"salvadora":[0,5,0.0],"sherle":[0,69,0.0],"sima":[0,2060,0.6628],"tansy":[0,375,0.5148],"tomeko":[0,161,0.4414],"tootsie":[0,58,0.0],"uldine":[0,228,0.4716],"umeyo":[0,5,0.0],"ursaline":[0,5,0.0],"valaree":[0,242,0.4768],"valine":[0,105,0.4042],"valli":[0,736,0.5734],"vasilike":[0,18,0.0],"vasiliki":[0,1216,0.617],"venda":[0,152,0.4364],"veolia":[0,5,0.0],"verdine":[0,168,0.4451],"vernessa":[0,881,0.589],"veronika":[0,3436,0.7072],"vertell":[0,52,0.0],"victorina":[0,125,0.4194],"virna":[0,194,0.4576],"volina":[0,10,0.0],"weona":[0,5,0.0],"willemina":[0,59,0.0],"willeta":[0,20,0.0],"willodeen":[0,29,0.0],"wiona":[0,15,0.0],"yaeno":[0,5,0.0],"ysaura":[0,5,0.0],"yuba":[0,5,0.0],"zanna":[0,629,0.5597],"zellamae":[0,5,0.0],"zepher":[0,5,0.0],"zoella":[0,296,0.4943],"steele":[2877,123,0.6669],"carlson":[742,0,0.5741],"hozie":[37,0,0.0],"frederik":[603,0,0.5561],"mosby":[14,0,0.0],"nobuichi":[20,0,0.0],"adelino":[58,0,0.0],"baldemar":[2245,0,0.6702],"blouncie":[8,0,0.0],"coolidge":[372,0,0.5141],"danel":[341,147,0.3757],"eichi":[8,0,0.0],"gaius":[498,0,0.5394],"hoyett":[15,0,0.0],"huebert":[8,0,0.0],"jessey":[922,287,0.4701],"leray":[174,0,0.4481],"peat":[8,0,0.0],"ralf":[304,0,0.4966],"virtus":[31,0,0.0],"acil":[12,0,0.0],"clenon":[19,0,0.0],"dreddy":[7,0,0.0],"emmery":[44,1051,0.5835],"fujio":[14,0,0.0],"gilfred":[7,0,0.0],"hughlon":[18,0,0.0],"jhue":[7,0,0.0],"kenzo":[4242,5,0.7248],"maso":[7,0,0.0],"oak":[588,27,0.5333],"ordis":[7,0,0.0],"reavis":[29,0,0.0],"shuichi":[24,0,0.0],"stratton":[1489,28,0.6245],"tadayoshi":[12,0,0.0],"thorne":[457,0,0.532],"vencent":[228,0,0.4716],"viviano":[185,0,0.4534],"ware":[7,0,0.0],"watie":[13,0,0.0],"albertis":[6,0,0.0],"allon":[217,0,0.4673],"alroy":[109,0,0.4075],"ardon":[85,0,0.0],"arvol":[12,0,0.0],"atherton":[6,0,0.0],"aureliano":[670,0,0.5652],"barkley":[312,5,0.4923],"blakely":[1226,19150,0.81],"bodie":[7338,90,0.7648],"boice":[16,0,0.0],"boyden":[23,0,0.0],"burchard":[29,0,0.0],"celedonio":[112,0,0.4098],"charlis":[102,22,0.3444],"chee":[325,209,0.332],"cleavland":[11,0,0.0],"cord":[1821,0,0.6521],"dilmon":[6,0,0.0],"efraim":[1800,0,0.6511],"elger":[28,0,0.0],"elso":[6,0,0.0],"emzy":[6,0,0.0],"enrigue":[760,0,0.5762],"esiquio":[106,0,0.4051],"espy":[19,0,0.0],"euin":[6,0,0.0],"eustaquio":[52,0,0.0],"fain":[71,6,0.0],"girolamo":[74,0,0.0],"halden":[233,0,0.4735],"hardwick":[21,0,0.0],"hessel":[11,0,0.0],"kaname":[16,5,0.0],"kei":[637,186,0.4513],"lauriano":[50,0,0.0],"leaon":[13,0,0.0],"leobardo":[2804,0,0.6896],"lessley":[43,54,0.0],"manabu":[19,0,0.0],"manferd":[6,0,0.0],"maynerd":[6,0,0.0],"mckenley":[41,300,0.4456],"minton":[28,0,0.0],"mode":[6,0,0.0],"moulton":[12,0,0.0],"nacho":[56,0,0.0],"nazareth":[1151,1132,0.3386],"noval":[11,0,0.0],"nuncio":[20,0,0.0],"obey":[16,0,0.0],"odos":[6,0,0.0],"orice":[12,0,0.0],"ozias":[1682,0,0.6452],"paulie":[60,11,0.0],"radcliffe":[22,0,0.0],"rease":[80,67,0.2359],"romus":[6,0,0.0],"royall":[59,10,0.0],"selestino":[68,0,0.0],"stinson":[57,0,0.0],"takumi":[495,0,0.5389],"toshiro":[98,0,0.0],"trice":[157,0,0.4392],"uuno":[6,0,0.0],"waite":[21,0,0.0],"warn":[41,0,0.0],"wlliam":[96,0,0.0],"yoichi":[18,0,0.0],"adolpho":[227,0,0.4712],"aiken":[347,0,0.5081],"alves":[5,0,0.0],"alvord":[17,0,0.0],"amarante":[23,0,0.0],"anatol":[5,0,0.0],"argonne":[5,0,0.0],"argyl":[10,0,0.0],"arold":[5,0,0.0],"artemio":[2407,0,0.6763],"arwood":[15,0,0.0],"audon":[68,0,0.0],"bard":[218,0,0.4677],"barnabas":[575,0,0.5519],"bayless":[10,0,0.0],"berlon":[37,0,0.0],"bernhart":[19,0,0.0],"berwin":[21,0,0.0],"billey":[523,0,0.5437],"bolivar":[248,0,0.4789],"bower":[5,0,0.0],"bowie":[2070,1168,0.4488],"brazil":[63,624,0.5154],"burell":[11,0,0.0],"carlous":[510,0,0.5415],"cashmere":[613,691,0.3302],"cellus":[5,0,0.0],"chalmas":[17,0,0.0],"church":[25,0,0.0],"claiborn":[21,0,0.0],"conda":[15,205,0.4365],"crescencio":[264,0,0.4843],"crescenzo":[10,0,0.0],"cullie":[20,0,0.0],"cullus":[5,0,0.0],"cyriel":[5,0,0.0],"dedrick":[4442,16,0.7272],"delor":[10,0,0.0],"demeter":[5,5,0.0],"deran":[163,0,0.4424],"dewaine":[576,0,0.5521],"dois":[96,59,0.2713],"doren":[337,36,0.4647],"dupre":[16,0,0.0],"ealon":[5,0,0.0],"easley":[18,0,0.0],"edney":[5,0,0.0],"efrain":[18439,29,0.8519],"elbern":[15,0,0.0],"elco":[17,0,0.0],"elemer":[42,0,0.0],"elfred":[5,0,0.0],"etsel":[23,0,0.0],"evard":[16,0,0.0],"everson":[754,28,0.5579],"fermen":[5,0,0.0],"forbus":[5,0,0.0],"forster":[38,0,0.0],"fortino":[792,0,0.5797],"gar":[219,0,0.4681],"garrard":[5,0,0.0],"garson":[57,0,0.0],"glasco":[16,0,0.0],"graddy":[5,0,0.0],"gregario":[10,0,0.0],"gusty":[10,0,0.0],"gwynne":[30,1397,0.6176],"harver":[5,0,0.0],"haydon":[1181,71,0.5844],"heflin":[11,0,0.0],"henton":[10,0,0.0],"herschal":[26,0,0.0],"hess":[10,0,0.0],"hilburn":[58,0,0.0],"hiromi":[16,315,0.4796],"hovie":[10,0,0.0],"hyatt":[397,39,0.4807],"isah":[36,5,0.0],"jaye":[1106,2455,0.4897],"jearld":[547,0,0.5476],"jerard":[1039,0,0.6033],"justino":[1141,0,0.6115],"kanichi":[5,0,0.0],"kengo":[71,0,0.0],"kenwood":[187,0,0.4544],"kermet":[11,0,0.0],"kile":[1065,0,0.6055],"laborn":[5,0,0.0],"ladislado":[18,0,0.0],"lannes":[5,0,0.0],"larce":[5,0,0.0],"larren":[79,22,0.3135],"lavernon":[5,0,0.0],"leocadio":[122,0,0.4173],"lodis":[10,0,0.0],"lonny":[6352,56,0.7547],"low":[5,0,0.0],"lowel":[40,0,0.0],"ludlow":[21,0,0.0],"mabrey":[5,223,0.4612],"mallard":[5,0,0.0],"mancie":[5,0,0.0],"marcellas":[79,0,0.0],"martel":[1689,10,0.6422],"masakatsu":[5,0,0.0],"maurilio":[737,0,0.5735],"maxime":[1077,55,0.5811],"maximino":[1974,0,0.6591],"mecislaus":[5,0,0.0],"meinrad":[5,0,0.0],"meritt":[55,78,0.2491],"merriman":[10,0,0.0],"miecislaus":[5,0,0.0],"migel":[1713,0,0.6468],"milos":[417,0,0.524],"milven":[15,0,0.0],"ming":[349,142,0.3826],"mondell":[43,0,0.0],"nathiel":[16,0,0.0],"oc":[24,0,0.0],"orral":[5,0,0.0],"osamu":[94,0,0.0],"ovidio":[1058,0,0.6049],"paskel":[16,0,0.0],"paublo":[78,0,0.0],"platt":[5,0,0.0],"raby":[16,0,0.0],"rader":[37,0,0.0],"randol":[572,0,0.5515],"rb":[10,0,0.0],"reamer":[10,0,0.0],"regan":[3730,16226,0.6993],"regie":[82,0,0.0],"rio":[4962,2177,0.5357],"robah":[13,0,0.0],"rondle":[159,0,0.4403],"rubben":[16,0,0.0],"seals":[5,0,0.0],"searl":[5,0,0.0],"selbert":[10,0,0.0],"settimio":[5,0,0.0],"shigeyuki":[5,0,0.0],"shurley":[16,0,0.0],"simplicio":[10,0,0.0],"sparks":[5,0,0.0],"spaulding":[5,0,0.0],"stancil":[90,0,0.0],"telesfor":[28,0,0.0],"thadis":[31,0,0.0],"thaxton":[186,0,0.4539],"thorton":[48,0,0.0],"tokuichi":[5,0,0.0],"tomes":[5,0,0.0],"valerio":[484,0,0.537],"walfrid":[5,0,0.0],"walters":[5,0,0.0],"way":[11,0,0.0],"williford":[16,0,0.0],"windel":[234,0,0.4738],"worner":[5,0,0.0],"ynes":[23,16,0.0],"zearl":[11,0,0.0],"marilynne":[0,968,0.5972],"gwenda":[0,2264,0.671],"adean":[23,93,0.331],"garnelle":[0,11,0.0],"lodena":[0,34,0.0],"alpharetta":[0,16,0.0],"bernace":[0,15,0.0],"philomenia":[0,15,0.0],"bettyjean":[0,421,0.5249],"delcenia":[0,74,0.0],"dorether":[0,19,0.0],"elly":[10,4456,0.7283],"hellene":[0,9,0.0],"lavola":[0,31,0.0],"malita":[0,123,0.418],"sachie":[0,14,0.0],"vonetta":[0,870,0.5879],"wiletta":[0,76,0.0],"aritha":[0,100,0.4],"bernelle":[0,43,0.0],"brona":[0,39,0.0],"claudeen":[0,125,0.4194],"corita":[0,163,0.4424],"hazelene":[0,138,0.428],"herlene":[0,34,0.0],"jearline":[0,347,0.5081],"lavonda":[0,3586,0.7109],"lawanna":[0,2381,0.6754],"waldene":[0,37,0.0],"zala":[0,244,0.4775],"almaree":[0,12,0.0],"aneda":[0,13,0.0],"bonniejean":[0,89,0.0],"delona":[5,267,0.478],"donzella":[0,375,0.5148],"doreene":[0,399,0.5202],"eadie":[0,75,0.0],"eillen":[0,28,0.0],"elean":[51,55,0.2102],"elrita":[0,28,0.0],"emmogene":[0,107,0.4059],"evajean":[0,45,0.0],"gayla":[6,10838,0.8066],"genet":[0,44,0.0],"immaculata":[0,24,0.0],"ivadel":[0,7,0.0],"jannet":[0,2318,0.673],"jereline":[0,185,0.4534],"justyne":[0,568,0.5509],"laurelle":[0,426,0.5259],"lodia":[0,7,0.0],"madalon":[0,12,0.0],"madalynn":[0,9174,0.7925],"malvene":[0,7,0.0],"monell":[5,18,0.0],"phyllys":[0,22,0.0],"roda":[0,113,0.4106],"roene":[0,35,0.0],"ruella":[0,7,0.0],"sherrie":[11,35144,0.9089],"sheryl":[200,78812,0.9771],"vincetta":[0,61,0.0],"wonnie":[11,43,0.0],"yevonne":[0,303,0.4963],"addia":[0,6,0.0],"adoline":[0,11,0.0],"alletha":[0,6,0.0],"arneita":[0,6,0.0],"arthea":[0,81,0.0],"arthena":[0,29,0.0],"atlean":[0,55,0.0],"beanna":[0,29,0.0],"camellia":[0,3224,0.7017],"carnella":[0,70,0.0],"cebell":[0,6,0.0],"charletta":[0,1106,0.6088],"cordellia":[0,61,0.0],"dacia":[0,2712,0.6867],"daise":[0,21,0.0],"darlean":[0,884,0.5893],"deirdre":[0,16831,0.8452],"delfa":[0,38,0.0],"denice":[0,10649,0.8055],"dolphine":[0,26,0.0],"ellia":[0,1699,0.646],"eloiza":[0,53,0.0],"ermadine":[0,6,0.0],"escolastica":[0,12,0.0],"essfa":[0,6,0.0],"eudine":[0,16,0.0],"geneal":[0,101,0.4009],"genita":[0,432,0.5271],"gerre":[0,80,0.0],"helan":[0,16,0.0],"ivalene":[0,119,0.4151],"jacquelene":[0,1302,0.6229],"jenice":[0,1927,0.657],"jerelene":[0,349,0.5086],"jeweline":[0,269,0.486],"joane":[0,1195,0.6155],"kaliope":[0,226,0.4708],"lenelle":[0,45,0.0],"luecille":[0,11,0.0],"lyndel":[425,182,0.3897],"maeoma":[0,6,0.0],"marciana":[0,284,0.4907],"margarine":[0,82,0.0],"margaritte":[0,11,0.0],"marifrances":[0,16,0.0],"marijean":[0,373,0.5143],"marinell":[0,265,0.4846],"melma":[0,29,0.0],"melvene":[0,31,0.0],"millison":[0,6,0.0],"narvis":[0,19,0.0],"nevart":[0,6,0.0],"nima":[1034,361,0.4662],"norvis":[0,13,0.0],"oberta":[0,6,0.0],"paloma":[0,10416,0.8035],"pattye":[0,297,0.4946],"prebble":[0,13,0.0],"queena":[0,707,0.5699],"rexine":[0,122,0.4173],"robby":[10542,215,0.7902],"robyn":[1231,63212,0.9435],"roselea":[0,45,0.0],"rubenia":[0,16,0.0],"ruthene":[0,60,0.0],"silvie":[0,162,0.4419],"sindy":[0,2763,0.6883],"sunda":[0,40,0.0],"tefta":[0,6,0.0],"telia":[0,701,0.5691],"theada":[0,36,0.0],"thoris":[0,6,0.0],"trilba":[0,27,0.0],"trinity":[2834,84594,0.9563],"tsugie":[0,17,0.0],"urith":[0,6,0.0],"vandelia":[0,11,0.0],"venida":[0,154,0.4375],"vernese":[0,39,0.0],"vincy":[0,97,0.0],"wavelene":[0,16,0.0],"wilhemenia":[0,264,0.4843],"willora":[0,6,0.0],"winifrede":[0,6,0.0],"addeline":[0,540,0.5465],"adelaid":[0,5,0.0],"alfia":[0,21,0.0],"almera":[0,5,0.0],"alvertia":[0,10,0.0],"alvetta":[0,86,0.0],"alwillie":[0,5,0.0],"amilda":[0,11,0.0],"anah":[0,435,0.5277],"annielou":[0,5,0.0],"ardra":[0,106,0.4051],"arimentha":[0,5,0.0],"arleine":[0,5,0.0],"armittie":[0,5,0.0],"arveta":[0,20,0.0],"arwilla":[0,13,0.0],"athala":[0,5,0.0],"beautrice":[0,5,0.0],"benilde":[0,22,0.0],"berthalee":[0,5,0.0],"bettylu":[0,22,0.0],"birthel":[0,5,0.0],"burdena":[0,5,0.0],"burneice":[0,12,0.0],"calanthe":[0,5,0.0],"catheren":[0,10,0.0],"catherne":[0,10,0.0],"cecilie":[0,371,0.5139],"charlye":[0,365,0.5125],"chrysanthe":[0,30,0.0],"chrystene":[0,12,0.0],"clarena":[0,10,0.0],"clarys":[0,5,0.0],"conelia":[0,5,0.0],"correan":[0,5,0.0],"crusita":[0,37,0.0],"dalene":[0,1575,0.6395],"dama":[0,176,0.4491],"darathy":[0,11,0.0],"darlien":[0,5,0.0],"darlis":[0,312,0.4988],"delean":[0,15,0.0],"deloma":[0,66,0.0],"deloria":[0,425,0.5257],"denna":[0,2377,0.6752],"desaree":[0,678,0.5662],"dilla":[0,15,0.0],"donnamae":[0,351,0.5091],"dorean":[90,251,0.3729],"dorlas":[0,15,0.0],"drema":[0,2464,0.6783],"dulcinea":[0,325,0.5024],"earna":[0,21,0.0],"ebna":[0,5,0.0],"edithmae":[0,10,0.0],"elbira":[0,18,0.0],"eleise":[0,10,0.0],"elizeabeth":[0,22,0.0],"ellajean":[0,31,0.0],"ellamarie":[0,391,0.5184],"elrene":[0,26,0.0],"elviria":[0,5,0.0],"elvita":[0,31,0.0],"erlyne":[0,26,0.0],"ernistine":[0,10,0.0],"etsuko":[0,69,0.0],"eudena":[0,5,0.0],"eurania":[0,5,0.0],"euree":[0,5,0.0],"evanelle":[0,15,0.0],"faylene":[0,297,0.4946],"fidella":[0,5,0.0],"flava":[0,5,0.0],"floramae":[0,41,0.0],"floribel":[0,5,0.0],"francell":[5,10,0.0],"fredina":[0,10,0.0],"fredith":[0,5,0.0],"genice":[0,806,0.5813],"georgi":[74,419,0.4577],"georgiamae":[0,30,0.0],"gerthie":[0,11,0.0],"gevena":[0,50,0.0],"glades":[0,11,0.0],"glendean":[0,35,0.0],"glenva":[0,16,0.0],"glorianna":[0,513,0.542],"guynelle":[0,10,0.0],"gwendlyn":[0,498,0.5394],"gwendolynn":[0,1420,0.6305],"gwenevere":[0,1157,0.6127],"gwenyth":[0,3212,0.7014],"gynith":[0,5,0.0],"hermila":[0,232,0.4731],"iceola":[0,10,0.0],"ihla":[0,35,0.0],"ikuko":[0,10,0.0],"iletta":[0,5,0.0],"inetha":[0,100,0.4],"ivena":[0,10,0.0],"ivonne":[14,6099,0.7555],"jacquelynn":[0,5080,0.7412],"jana":[39,46004,0.9318],"januita":[0,32,0.0],"jenola":[0,5,0.0],"jestina":[0,361,0.5115],"joenell":[0,10,0.0],"johnsy":[0,5,0.0],"joice":[0,557,0.5492],"jorene":[0,515,0.5424],"joshie":[0,5,0.0],"junietta":[0,5,0.0],"jurline":[0,116,0.4129],"justilia":[0,5,0.0],"kareen":[742,1306,0.4223],"katha":[0,409,0.5223],"kayoko":[0,5,0.0],"lavanda":[0,441,0.5289],"lelamae":[0,10,0.0],"lenette":[0,1013,0.6011],"levaun":[0,5,0.0],"lolene":[0,26,0.0],"loray":[0,86,0.0],"louann":[0,5187,0.743],"louanne":[0,1781,0.6501],"loycie":[0,5,0.0],"luann":[6,15498,0.8378],"lucita":[0,188,0.4548],"luedora":[0,5,0.0],"luerene":[0,11,0.0],"lutrell":[15,5,0.0],"luzenia":[0,5,0.0],"lylas":[0,17,0.0],"mabeline":[0,135,0.4261],"madgel":[0,5,0.0],"marcilla":[0,49,0.0],"mardine":[0,26,0.0],"mariadejesus":[0,626,0.5593],"marigrace":[0,166,0.444],"marja":[0,437,0.5281],"marthia":[0,10,0.0],"marthie":[0,10,0.0],"marylu":[0,932,0.5939],"mavel":[0,27,0.0],"maxola":[0,5,0.0],"mayble":[0,57,0.0],"mayree":[0,5,0.0],"michaela":[69,53303,0.9442],"nelrose":[0,30,0.0],"nobue":[0,12,0.0],"normagene":[0,97,0.0],"oella":[0,5,0.0],"olvie":[0,11,0.0],"oreen":[0,5,0.0],"orinda":[0,17,0.0],"otome":[0,5,0.0],"ozellar":[0,10,0.0],"plassie":[0,5,0.0],"reiko":[19,671,0.5521],"renota":[0,49,0.0],"ronella":[0,63,0.0],"rosamary":[0,195,0.458],"roslie":[0,11,0.0],"rosmary":[0,146,0.4329],"rosyln":[0,60,0.0],"rovina":[0,5,0.0],"rowana":[0,15,0.0],"sarabel":[0,5,0.0],"sigrun":[0,16,0.0],"sybal":[0,10,0.0],"tenora":[0,5,0.0],"teny":[0,10,0.0],"terressa":[0,401,0.5206],"theolia":[0,10,0.0],"thlema":[0,5,0.0],"thomasa":[0,304,0.4966],"trenna":[0,736,0.5734],"utha":[0,23,0.0],"vala":[0,206,0.4628],"velmo":[0,5,0.0],"vernadeen":[0,5,0.0],"vieda":[0,5,0.0],"viella":[0,5,0.0],"virginiamae":[0,5,0.0],"waldena":[0,5,0.0],"waunell":[0,23,0.0],"wayna":[0,59,0.0],"wenola":[0,5,0.0],"willadeen":[0,75,0.0],"willimena":[0,5,0.0],"zular":[0,5,0.0],"zulmira":[0,5,0.0],"norberto":[4906,0,0.7381],"calven":[155,0,0.4381],"burnest":[34,0,0.0],"danforth":[24,0,0.0],"dewane":[508,0,0.5412],"worren":[14,0,0.0],"bernest":[25,0,0.0],"carlon":[863,187,0.4966],"denby":[20,0,0.0],"henny":[58,990,0.5706],"herrell":[13,0,0.0],"junichi":[44,0,0.0],"norio":[19,0,0.0],"noris":[78,48,0.26],"northern":[45,0,0.0],"sterl":[13,0,0.0],"adriano":[2483,0,0.679],"benedicto":[190,0,0.4558],"cassell":[94,0,0.0],"dalvin":[1632,0,0.6425],"eriberto":[2399,0,0.676],"gladwyn":[16,0,0.0],"horald":[71,0,0.0],"landers":[82,0,0.0],"melfred":[17,0,0.0],"myrton":[17,0,0.0],"nay":[78,11,0.0],"nemecio":[39,0,0.0],"onan":[43,0,0.0],"paxton":[27199,2075,0.83],"rojelio":[2952,0,0.694],"wendle":[129,0,0.4221],"wymer":[7,0,0.0],"yoshikazu":[12,0,0.0],"ambrocio":[53,0,0.0],"aven":[2691,1606,0.4551],"avner":[364,0,0.5122],"berryman":[11,0,0.0],"blayne":[4007,537,0.645],"brit":[628,147,0.4683],"burchell":[22,0,0.0],"byran":[1400,0,0.6292],"christain":[2106,305,0.5909],"crecencio":[151,0,0.4358],"derold":[63,0,0.0],"detroy":[44,0,0.0],"dewel":[65,0,0.0],"dorn":[225,12,0.4509],"dushan":[23,0,0.0],"earlis":[55,0,0.0],"elfego":[93,0,0.0],"elves":[14,0,0.0],"elze":[6,0,0.0],"emel":[6,21,0.0],"esque":[11,0,0.0],"flavious":[11,0,0.0],"floren":[28,0,0.0],"gamaliel":[1914,0,0.6564],"gaylard":[27,0,0.0],"guilherme":[514,0,0.5422],"hallett":[21,0,0.0],"hareld":[11,0,0.0],"hughy":[13,0,0.0],"irland":[6,0,0.0],"iziah":[1315,0,0.6238],"jerauld":[140,0,0.4292],"jervis":[282,0,0.49],"juvencio":[207,0,0.4632],"kleber":[119,0,0.4151],"laurencio":[42,0,0.0],"laval":[204,0,0.4619],"lawrene":[21,15,0.0],"lj":[230,0,0.4723],"longino":[74,0,0.0],"loyle":[55,0,0.0],"mandell":[288,0,0.4919],"mas":[11,0,0.0],"mikeal":[2381,19,0.6707],"mims":[35,0,0.0],"neff":[6,0,0.0],"nobuyuki":[19,0,0.0],"nord":[12,0,0.0],"olegario":[408,0,0.5221],"omen":[36,0,0.0],"ranel":[6,0,0.0],"rawland":[51,0,0.0],"roydon":[11,0,0.0],"sebastino":[11,0,0.0],"shigemi":[6,0,0.0],"therion":[16,0,0.0],"thirston":[6,0,0.0],"troyce":[412,62,0.4652],"tudor":[74,0,0.0],"uhl":[6,0,0.0],"victorino":[381,0,0.5162],"willmon":[23,0,0.0],"yoshiro":[27,0,0.0],"adlia":[11,0,0.0],"almore":[5,0,0.0],"alphon":[5,0,0.0],"alquin":[5,0,0.0],"alten":[10,0,0.0],"alwood":[11,0,0.0],"ance":[54,0,0.0],"arlester":[188,0,0.4548],"arvard":[5,0,0.0],"atilio":[5,0,0.0],"blan":[22,0,0.0],"blaze":[8175,575,0.7366],"boisey":[5,0,0.0],"burrus":[5,0,0.0],"carneal":[10,0,0.0],"carston":[642,0,0.5615],"chesleigh":[10,38,0.0],"clarendon":[5,0,0.0],"claro":[32,0,0.0],"cleat":[5,0,0.0],"cleavon":[241,0,0.4764],"cledis":[66,0,0.0],"clomer":[10,0,0.0],"congress":[5,0,0.0],"connard":[21,0,0.0],"crate":[5,0,0.0],"cristoval":[437,0,0.5281],"damus":[5,0,0.0],"draper":[432,5,0.5221],"dusan":[149,0,0.4346],"ebbin":[5,0,0.0],"edgbert":[5,0,0.0],"edmont":[5,0,0.0],"edro":[11,0,0.0],"edwell":[5,0,0.0],"eley":[12,0,0.0],"ellington":[674,945,0.3746],"elworth":[26,0,0.0],"enrrique":[613,0,0.5575],"ervy":[5,0,0.0],"eury":[16,0,0.0],"finest":[16,0,0.0],"foyster":[5,0,0.0],"freddrick":[1177,0,0.6142],"freelon":[5,0,0.0],"garrit":[184,0,0.453],"gillette":[10,0,0.0],"glean":[32,0,0.0],"gwinn":[18,5,0.0],"hargie":[5,0,0.0],"harriel":[10,0,0.0],"hernan":[5155,0,0.7424],"herod":[37,0,0.0],"hertis":[5,0,0.0],"hidemi":[12,0,0.0],"iran":[1348,416,0.4962],"isaah":[409,0,0.5223],"jeffrie":[934,86,0.551],"jennis":[29,20,0.0],"kazimir":[315,0,0.4997],"kazuyoshi":[16,0,0.0],"kedric":[960,0,0.5965],"kenso":[15,0,0.0],"lauriston":[5,0,0.0],"lb":[21,0,0.0],"leaford":[10,0,0.0],"lecester":[10,0,0.0],"lejeune":[5,6,0.0],"leycester":[5,0,0.0],"linvel":[33,0,0.0],"lionardo":[163,0,0.4424],"lonis":[16,0,0.0],"lorenze":[10,0,0.0],"loverne":[10,5,0.0],"lovette":[10,467,0.5245],"luckey":[15,0,0.0],"lynch":[25,0,0.0],"lyndol":[99,12,0.3648],"malden":[5,0,0.0],"manul":[5,0,0.0],"marvyn":[288,0,0.4919],"masakazu":[12,0,0.0],"melvis":[44,54,0.0],"molton":[5,0,0.0],"nathion":[11,0,0.0],"nickey":[1663,332,0.5502],"nickolaus":[1795,0,0.6508],"noyes":[19,0,0.0],"obrien":[209,0,0.464],"oscer":[26,0,0.0],"pericles":[80,0,0.0],"phinizy":[5,0,0.0],"raphel":[168,0,0.4451],"raven":[3290,44135,0.8703],"rawlin":[228,0,0.4716],"renaud":[61,0,0.0],"renford":[41,0,0.0],"richmon":[5,0,0.0],"rl":[15,0,0.0],"roley":[20,0,0.0],"romer":[50,0,0.0],"romney":[262,48,0.4211],"rosier":[5,0,0.0],"rudd":[10,0,0.0],"sabe":[5,0,0.0],"sage":[15068,28585,0.6077],"senon":[75,0,0.0],"sherburne":[5,0,0.0],"sherrel":[112,768,0.5139],"shige":[5,0,0.0],"sigel":[11,0,0.0],"silvano":[1009,0,0.6008],"silvestro":[10,0,0.0],"slavko":[5,0,0.0],"somers":[5,0,0.0],"soon":[5,43,0.0],"svend":[32,0,0.0],"trinida":[5,0,0.0],"vertner":[5,0,0.0],"walbert":[17,0,0.0],"wilce":[5,0,0.0],"williem":[5,0,0.0],"wills":[57,0,0.0],"worn":[10,0,0.0],"yoshinobu":[33,0,0.0],"ysidoro":[35,0,0.0],"zackary":[31469,7,0.8994],"zebdee":[5,0,0.0],"evelean":[0,155,0.4381],"dorismae":[0,58,0.0],"donaldine":[0,12,0.0],"arlita":[0,216,0.4669],"gavina":[0,80,0.0],"memory":[6,1333,0.6226],"bettey":[0,119,0.4151],"claria":[0,56,0.0],"winna":[0,108,0.4067],"bernadeen":[0,29,0.0],"burla":[0,13,0.0],"elfida":[0,155,0.4381],"glora":[0,314,0.4994],"joellen":[0,5394,0.7464],"koneta":[0,29,0.0],"leslee":[96,4905,0.7256],"lettice":[0,18,0.0],"marlynn":[0,952,0.5957],"pura":[0,173,0.4476],"verga":[0,28,0.0],"verlaine":[0,115,0.4121],"wortha":[0,8,0.0],"alfreeda":[0,50,0.0],"assie":[0,12,0.0],"chrystell":[0,7,0.0],"cleoria":[0,17,0.0],"cletha":[0,19,0.0],"coreatha":[0,7,0.0],"donelle":[323,1127,0.4914],"earnestene":[0,127,0.4208],"easther":[0,42,0.0],"evone":[5,410,0.5173],"fontaine":[200,137,0.3],"gelene":[0,136,0.4267],"kalliope":[0,1210,0.6166],"larose":[0,305,0.4969],"learlean":[0,26,0.0],"louvella":[0,31,0.0],"margine":[0,55,0.0],"marilyne":[0,329,0.5034],"megan":[1104,439765,0.9975],"moonyeen":[0,30,0.0],"norrene":[0,23,0.0],"perma":[0,12,0.0],"verdean":[0,74,0.0],"waunda":[0,37,0.0],"wilhemena":[0,42,0.0],"yvetta":[0,480,0.5362],"adrie":[0,263,0.484],"aleita":[0,23,0.0],"algene":[28,59,0.0],"almenia":[0,11,0.0],"arlyss":[0,158,0.4397],"basilisa":[0,32,0.0],"birdene":[0,6,0.0],"charlestine":[0,128,0.4214],"cleaster":[27,110,0.3431],"collene":[0,1009,0.6008],"crestina":[0,61,0.0],"dormilee":[0,6,0.0],"dreda":[0,16,0.0],"erselle":[0,6,0.0],"ethelen":[0,6,0.0],"floydene":[0,33,0.0],"glenyce":[0,105,0.4042],"glorianne":[0,319,0.5008],"glorya":[0,146,0.4329],"guillerma":[0,33,0.0],"heddy":[0,135,0.4261],"ilora":[0,6,0.0],"ireen":[0,17,0.0],"ivagene":[0,18,0.0],"ivola":[0,6,0.0],"izabel":[0,3766,0.7152],"jacqualine":[0,2382,0.6754],"jannice":[0,656,0.5634],"juanell":[0,260,0.483],"judia":[0,77,0.0],"juliene":[0,455,0.5316],"leester":[0,6,0.0],"lewanna":[0,87,0.0],"lidy":[0,6,0.0],"lillah":[0,194,0.4576],"lionor":[0,22,0.0],"loette":[0,23,0.0],"loriece":[0,11,0.0],"luce":[0,32,0.0],"mageline":[0,23,0.0],"maidee":[0,6,0.0],"marjolaine":[0,11,0.0],"marthajane":[0,16,0.0],"masil":[0,6,0.0],"merilynn":[0,80,0.0],"miami":[6,331,0.4965],"micky":[2573,562,0.5739],"neida":[0,1834,0.6527],"newana":[0,13,0.0],"noreene":[0,149,0.4346],"norinne":[0,103,0.4026],"ofa":[5,55,0.0],"oreva":[0,6,0.0],"perlena":[0,12,0.0],"rebecker":[0,6,0.0],"ritamae":[0,47,0.0],"rosealie":[0,156,0.4386],"sadelle":[0,11,0.0],"sista":[0,31,0.0],"sophrona":[0,11,0.0],"syril":[0,18,0.0],"twylla":[0,292,0.4931],"unita":[0,84,0.0],"vedia":[0,38,0.0],"vencie":[0,11,0.0],"verleen":[0,192,0.4567],"vernece":[0,16,0.0],"vidalia":[0,335,0.505],"viviene":[0,66,0.0],"adalina":[0,2170,0.6673],"adriene":[61,2377,0.6605],"alcine":[0,5,0.0],"aldah":[0,5,0.0],"alica":[0,1271,0.6208],"anabell":[0,1429,0.631],"angia":[0,22,0.0],"annalene":[0,23,0.0],"anneta":[0,60,0.0],"arloween":[0,10,0.0],"armena":[0,10,0.0],"armenda":[0,37,0.0],"bacilia":[0,16,0.0],"barnetta":[0,52,0.0],"benvinda":[0,5,0.0],"berlena":[0,10,0.0],"bettee":[0,5,0.0],"carlynn":[0,820,0.5828],"carmeleta":[0,25,0.0],"clementene":[0,27,0.0],"clera":[0,40,0.0],"clidy":[0,5,0.0],"coletha":[0,38,0.0],"colina":[0,22,0.0],"corenia":[0,18,0.0],"corinth":[0,15,0.0],"corris":[22,13,0.0],"crisanta":[0,49,0.0],"dariel":[7918,488,0.7394],"darlys":[0,328,0.5032],"deliliah":[0,231,0.4727],"demple":[0,35,0.0],"dolline":[0,54,0.0],"doney":[5,5,0.0],"drusie":[0,5,0.0],"earleene":[0,5,0.0],"eldamae":[0,5,0.0],"elderine":[0,5,0.0],"eldonna":[0,268,0.4856],"ellarine":[0,5,0.0],"elloween":[0,5,0.0],"elowese":[0,5,0.0],"elua":[0,5,0.0],"ermajean":[0,10,0.0],"esteline":[0,5,0.0],"esterine":[0,13,0.0],"eta":[0,5,0.0],"eunia":[0,10,0.0],"eutimia":[0,10,0.0],"evadine":[0,20,0.0],"evetta":[0,334,0.5047],"felecie":[0,5,0.0],"flemmie":[0,5,0.0],"fortunate":[0,5,0.0],"fostina":[0,5,0.0],"gaila":[0,564,0.5503],"geogia":[0,5,0.0],"geralene":[0,227,0.4712],"gereldine":[0,23,0.0],"gillian":[68,16011,0.8377],"glyda":[0,5,0.0],"goldene":[0,21,0.0],"gwendolynne":[0,56,0.0],"gwenneth":[0,204,0.4619],"higinia":[0,5,0.0],"idalina":[0,28,0.0],"imajean":[0,160,0.4408],"ivadean":[0,26,0.0],"jackqueline":[0,1375,0.6277],"jaine":[0,265,0.4846],"jeana":[0,7685,0.7771],"jen":[86,318,0.4103],"jerolene":[0,99,0.0],"jeweldean":[0,74,0.0],"jewelene":[0,398,0.52],"juanelle":[0,66,0.0],"juanito":[1169,5,0.6113],"juanitta":[0,62,0.0],"juretta":[0,10,0.0],"kathaline":[0,36,0.0],"keiko":[7,1153,0.6092],"ladena":[0,430,0.5267],"ladoris":[0,224,0.47],"laurentine":[0,5,0.0],"leeila":[0,11,0.0],"leeoma":[0,5,0.0],"lennell":[128,15,0.3859],"leonila":[0,337,0.5055],"leveria":[0,10,0.0],"lewella":[0,5,0.0],"lise":[0,2790,0.6891],"lonetta":[0,304,0.4966],"loralee":[0,1799,0.651],"lorrainne":[0,16,0.0],"louell":[0,10,0.0],"lounell":[0,115,0.4121],"lubina":[0,5,0.0],"lujean":[0,292,0.4931],"madlynne":[0,5,0.0],"marcetta":[0,20,0.0],"margarida":[0,27,0.0],"margeree":[0,5,0.0],"marjorine":[0,10,0.0],"marnette":[0,176,0.4491],"marthy":[0,10,0.0],"marvalene":[0,131,0.4235],"maryclaire":[0,604,0.5562],"maryjayne":[0,145,0.4323],"matea":[0,841,0.585],"maycle":[0,13,0.0],"mayoma":[0,10,0.0],"mertle":[0,5,0.0],"mitsu":[0,5,0.0],"montra":[11,11,0.0],"montry":[0,5,0.0],"mural":[0,5,0.0],"nadell":[0,5,0.0],"nani":[0,667,0.5648],"narcie":[0,16,0.0],"natlie":[0,362,0.5117],"naydean":[0,42,0.0],"nelline":[0,75,0.0],"nevis":[0,10,0.0],"noveline":[0,34,0.0],"oceal":[0,16,0.0],"opalee":[0,10,0.0],"oreda":[0,51,0.0],"orietta":[0,5,0.0],"otsie":[0,5,0.0],"oudia":[0,35,0.0],"palmena":[0,5,0.0],"phoeba":[0,20,0.0],"pirley":[0,5,0.0],"pita":[11,43,0.0],"priscella":[0,1031,0.6027],"queenester":[0,33,0.0],"quintella":[0,526,0.5442],"racine":[5,597,0.5513],"raymelle":[0,5,0.0],"raymunda":[0,5,0.0],"regna":[0,5,0.0],"revie":[0,45,0.0],"richardine":[0,146,0.4329],"rosellar":[0,5,0.0],"rosietta":[0,5,0.0],"roszella":[0,15,0.0],"ruthlee":[0,5,0.0],"sachi":[0,983,0.5985],"saline":[0,21,0.0],"seleta":[0,131,0.4235],"senetta":[0,11,0.0],"severia":[0,5,0.0],"shyrlee":[0,15,0.0],"stashia":[0,81,0.0],"suetta":[0,142,0.4305],"sybile":[0,51,0.0],"teenie":[0,5,0.0],"terri":[914,146095,0.9938],"toki":[10,12,0.0],"triny":[0,11,0.0],"velina":[0,370,0.5136],"venessa":[0,5767,0.7522],"verneeda":[0,10,0.0],"verrona":[0,5,0.0],"versal":[0,5,0.0],"vinona":[0,5,0.0],"virgnia":[0,5,0.0],"virley":[0,10,0.0],"wanzie":[0,5,0.0],"wylda":[0,23,0.0],"zeena":[0,597,0.5552],"zellar":[0,5,0.0],"zerita":[0,51,0.0],"daren":[10820,194,0.7942],"derral":[418,0,0.5242],"stoney":[3056,155,0.6675],"crafton":[9,0,0.0],"elliotte":[63,952,0.564],"evern":[36,17,0.0],"vahe":[275,0,0.4879],"bernarr":[80,0,0.0],"hagop":[342,0,0.5068],"jerone":[1328,0,0.6246],"morise":[14,0,0.0],"seledonio":[21,0,0.0],"volley":[19,0,0.0],"bacilio":[183,0,0.4525],"bengamin":[46,0,0.0],"benino":[85,0,0.0],"donnelly":[38,0,0.0],"doyel":[93,0,0.0],"fukuichi":[7,0,0.0],"grandville":[56,0,0.0],"hailey":[271,178851,0.9985],"haruyoshi":[7,0,0.0],"hedley":[13,0,0.0],"itsuo":[30,0,0.0],"laureat":[7,0,0.0],"mikey":[1522,10,0.6329],"olton":[32,0,0.0],"oties":[17,0,0.0],"romualdo":[390,0,0.5182],"semon":[12,5,0.0],"silvin":[12,0,0.0],"thelman":[7,0,0.0],"verald":[7,0,0.0],"willliam":[266,0,0.485],"amalio":[153,0,0.4369],"ambrous":[6,0,0.0],"arthel":[21,0,0.0],"binford":[6,0,0.0],"conroy":[307,0,0.4974],"dickey":[918,0,0.5926],"donnal":[54,0,0.0],"drewry":[11,0,0.0],"elvern":[22,0,0.0],"euless":[12,0,0.0],"hewell":[11,0,0.0],"hijinio":[16,0,0.0],"ishamel":[22,0,0.0],"jameson":[59243,1187,0.9375],"jams":[158,0,0.4397],"joji":[58,0,0.0],"krikor":[54,0,0.0],"laury":[51,874,0.5605],"lion":[410,0,0.5226],"locadio":[11,0,0.0],"lovic":[11,0,0.0],"mahue":[6,0,0.0],"marchell":[6,578,0.5476],"marselino":[87,0,0.0],"myrick":[275,0,0.4879],"nemo":[68,0,0.0],"ohn":[162,0,0.4419],"pantaleon":[60,0,0.0],"ramsay":[381,70,0.4484],"rd":[17,0,0.0],"semmie":[14,0,0.0],"silviano":[269,0,0.486],"steave":[24,0,0.0],"toshiharu":[12,0,0.0],"wane":[160,0,0.4408],"wardel":[11,0,0.0],"wilkin":[122,0,0.4173],"alastair":[1297,0,0.6226],"alburn":[10,0,0.0],"alessio":[2096,0,0.6643],"anastasios":[1020,0,0.6017],"archiebald":[10,0,0.0],"ario":[261,0,0.4833],"atward":[5,0,0.0],"beebe":[5,31,0.0],"beny":[38,0,0.0],"bernet":[5,0,0.0],"breland":[437,83,0.4565],"buckner":[10,0,0.0],"carven":[5,0,0.0],"challie":[5,5,0.0],"chapin":[233,45,0.4097],"chappell":[42,10,0.0],"chico":[951,0,0.5956],"christobal":[784,0,0.5789],"cledus":[15,0,0.0],"clellon":[10,0,0.0],"cleofus":[5,0,0.0],"corby":[1350,303,0.5257],"crisanto":[231,0,0.4727],"dahl":[147,0,0.4335],"dayne":[3863,206,0.6854],"delyle":[71,0,0.0],"denney":[218,0,0.4677],"donnel":[776,47,0.5498],"donzel":[246,0,0.4782],"druey":[5,0,0.0],"duwane":[106,0,0.4051],"edelmiro":[465,0,0.5335],"edford":[17,0,0.0],"elario":[26,0,0.0],"eles":[5,0,0.0],"emet":[351,0,0.5091],"encil":[15,0,0.0],"eurel":[5,0,0.0],"eusevio":[78,0,0.0],"evangelos":[1151,0,0.6122],"excel":[24,25,0.0],"forris":[10,0,0.0],"galveston":[5,0,0.0],"gillard":[5,0,0.0],"gillermo":[633,0,0.5603],"gladden":[10,0,0.0],"gladston":[17,0,0.0],"glendal":[184,5,0.4432],"graziano":[5,0,0.0],"gumecindo":[80,0,0.0],"gyle":[5,0,0.0],"henly":[10,42,0.0],"hermenegildo":[91,0,0.0],"hersie":[10,0,0.0],"hezkiah":[10,0,0.0],"hibbard":[5,0,0.0],"hu":[5,0,0.0],"hurel":[5,0,0.0],"imon":[62,16,0.0],"isauro":[345,0,0.5076],"ison":[108,0,0.4067],"janus":[41,127,0.3364],"jaro":[5,0,0.0],"jayson":[35543,37,0.9093],"jesses":[51,0,0.0],"jona":[513,1745,0.5184],"jone":[24,687,0.5511],"joney":[11,0,0.0],"josemaria":[758,0,0.5759],"josheph":[24,0,0.0],"juvenal":[1258,0,0.6199],"kater":[5,0,0.0],"kelmer":[5,0,0.0],"kinney":[354,0,0.5098],"koji":[611,0,0.5572],"kyler":[38173,2362,0.8679],"lawarence":[100,0,0.4],"learoy":[20,0,0.0],"leroi":[150,0,0.4352],"lewey":[23,0,0.0],"lg":[5,0,0.0],"liandro":[181,0,0.4515],"lindle":[53,0,0.0],"lural":[5,0,0.0],"lusiano":[46,0,0.0],"macklin":[2301,42,0.6619],"mardis":[16,0,0.0],"mays":[132,48,0.3308],"maze":[297,167,0.3414],"mcdaniel":[86,0,0.0],"mervel":[27,0,0.0],"metz":[5,0,0.0],"michale":[3274,344,0.644],"mikio":[22,0,0.0],"mohammed":[15727,0,0.8393],"morrise":[10,0,0.0],"mourice":[28,0,0.0],"mutt":[11,0,0.0],"neilan":[159,0,0.4403],"oakey":[5,0,0.0],"onecimo":[26,0,0.0],"onzie":[15,0,0.0],"oramel":[5,0,0.0],"orvind":[5,0,0.0],"presciliano":[5,0,0.0],"rafel":[125,0,0.4194],"redding":[313,11,0.4851],"refujio":[332,5,0.498],"relford":[5,0,0.0],"render":[65,0,0.0],"riddick":[645,0,0.5619],"ridgeway":[11,0,0.0],"romano":[322,0,0.5016],"ronel":[545,6,0.5423],"sabato":[11,0,0.0],"santy":[130,0,0.4228],"sebero":[11,0,0.0],"sebie":[5,0,0.0],"sedgie":[5,0,0.0],"smithy":[11,0,0.0],"sprague":[5,0,0.0],"tai":[3069,1804,0.4645],"talford":[12,0,0.0],"taras":[666,0,0.5647],"thadius":[511,0,0.5417],"traverse":[5,0,0.0],"tullis":[10,0,0.0],"ulesses":[5,0,0.0],"urie":[220,0,0.4685],"vachel":[20,0,0.0],"versel":[10,0,0.0],"waine":[36,0,0.0],"warrick":[770,0,0.5773],"welmer":[10,0,0.0],"wheaton":[5,0,0.0],"winsel":[5,0,0.0],"yoshitaka":[15,0,0.0],"nalda":[0,89,0.0],"marcheta":[0,595,0.5549],"merrilyn":[0,751,0.5751],"avonne":[0,182,0.452],"bernadyne":[0,16,0.0],"annalea":[0,737,0.5735],"earnstine":[0,153,0.4369],"lestine":[0,208,0.4636],"luigina":[0,27,0.0],"miguela":[0,19,0.0],"morjorie":[0,46,0.0],"arene":[0,15,0.0],"armandina":[0,769,0.5772],"bettyanne":[0,116,0.4129],"giovina":[0,8,0.0],"jacqulyn":[0,3958,0.7195],"varena":[0,8,0.0],"wyvonne":[0,178,0.4501],"adgie":[5,7,0.0],"annalouise":[0,22,0.0],"arleda":[0,22,0.0],"avah":[0,6894,0.7677],"aves":[0,7,0.0],"bethea":[0,7,0.0],"christabell":[0,60,0.0],"donalee":[0,406,0.5217],"donnajean":[0,307,0.4974],"feddie":[0,7,0.0],"jaclyn":[103,49569,0.9373],"jaqueline":[23,15442,0.8366],"junell":[0,343,0.5071],"lavila":[0,30,0.0],"madis":[0,7,0.0],"marzette":[0,17,0.0],"merrilee":[0,1866,0.6542],"priscille":[0,212,0.4653],"shirlene":[0,4856,0.7373],"shirleyann":[0,576,0.5521],"tonya":[435,120412,0.9964],"alcaria":[0,6,0.0],"anitra":[0,4379,0.7283],"annajean":[0,27,0.0],"arcangela":[0,11,0.0],"ardeen":[0,51,0.0],"ardus":[0,6,0.0],"audene":[0,45,0.0],"aveline":[0,1198,0.6157],"avona":[0,49,0.0],"azelene":[0,6,0.0],"berneil":[0,11,0.0],"caudie":[0,6,0.0],"chitose":[0,6,0.0],"christola":[0,6,0.0],"clothilda":[0,16,0.0],"dorah":[0,23,0.0],"dorette":[0,273,0.4872],"dorla":[0,1089,0.6074],"edma":[0,6,0.0],"ellaine":[0,59,0.0],"elwillie":[0,27,0.0],"emajean":[0,21,0.0],"enith":[0,39,0.0],"erelene":[0,11,0.0],"fayola":[0,75,0.0],"girthie":[0,6,0.0],"gisele":[0,5338,0.7455],"helenann":[0,57,0.0],"hestel":[0,6,0.0],"isobell":[0,13,0.0],"jermaine":[41907,967,0.9055],"julanne":[0,225,0.4704],"lafaun":[0,6,0.0],"lajuana":[0,1874,0.6546],"lavita":[0,714,0.5707],"lazara":[0,175,0.4486],"margerett":[0,6,0.0],"margey":[0,16,0.0],"maridell":[0,35,0.0],"marilea":[0,250,0.4796],"martharee":[0,6,0.0],"moya":[0,627,0.5595],"mutsuko":[0,18,0.0],"nava":[0,1428,0.6309],"nicki":[297,6083,0.7255],"noriko":[0,160,0.4408],"normajean":[0,467,0.5339],"noveta":[0,11,0.0],"nylene":[0,77,0.0],"pear":[0,6,0.0],"rava":[0,11,0.0],"rhudine":[0,17,0.0],"shyrle":[0,12,0.0],"socorra":[0,26,0.0],"toledo":[0,17,0.0],"utako":[0,12,0.0],"vaunda":[0,130,0.4228],"velena":[0,62,0.0],"vonita":[0,394,0.5191],"winsome":[0,44,0.0],"wyoming":[0,23,0.0],"yolonda":[0,3874,0.7176],"adala":[0,5,0.0],"adonna":[0,623,0.5589],"ailean":[0,22,0.0],"aleathea":[0,83,0.0],"angelee":[0,1353,0.6263],"anora":[0,1059,0.605],"anthonia":[0,191,0.4562],"antonett":[0,16,0.0],"arcella":[0,11,0.0],"armelda":[0,18,0.0],"arzilla":[0,5,0.0],"avola":[0,5,0.0],"berdeen":[0,5,0.0],"beverlie":[0,320,0.501],"bonetta":[0,92,0.0],"burdene":[0,5,0.0],"burleen":[0,5,0.0],"burtha":[0,10,0.0],"cathlyn":[0,361,0.5115],"chizu":[0,5,0.0],"christianna":[0,3127,0.699],"clidie":[0,5,0.0],"corneal":[22,5,0.0],"crettie":[0,5,0.0],"darliene":[0,36,0.0],"debby":[0,9697,0.7973],"delaphine":[0,22,0.0],"delcina":[0,56,0.0],"derith":[0,15,0.0],"dessia":[0,11,0.0],"dimitra":[0,890,0.5899],"doloros":[0,82,0.0],"dorithy":[0,5,0.0],"dorlis":[0,108,0.4067],"dorrace":[0,40,0.0],"earsell":[0,5,0.0],"eilean":[0,24,0.0],"ellece":[0,5,0.0],"emogean":[0,49,0.0],"eraine":[0,5,0.0],"ertis":[5,10,0.0],"evanthia":[0,63,0.0],"everee":[0,5,0.0],"fidencia":[0,60,0.0],"floraida":[0,5,0.0],"fosteen":[0,16,0.0],"gearldene":[0,144,0.4317],"genese":[0,381,0.5162],"gensie":[0,5,0.0],"gladene":[0,41,0.0],"gonzala":[0,21,0.0],"hildah":[0,5,0.0],"idolina":[0,306,0.4971],"imal":[0,5,0.0],"ineda":[0,5,0.0],"jananne":[0,15,0.0],"jesucita":[0,5,0.0],"joephine":[0,11,0.0],"jonelle":[21,3230,0.6979],"josephyne":[0,80,0.0],"jossiephine":[0,12,0.0],"kae":[0,753,0.5754],"kallie":[0,12401,0.8187],"karyl":[0,2106,0.6647],"leonetta":[0,63,0.0],"lissa":[0,3966,0.7197],"loarine":[0,5,0.0],"loisann":[0,184,0.453],"louvada":[0,5,0.0],"luegenia":[0,12,0.0],"luevertha":[0,5,0.0],"lurlyne":[0,5,0.0],"luticia":[0,92,0.0],"lylis":[0,10,0.0],"lyllian":[0,630,0.5599],"madena":[0,10,0.0],"majesta":[0,179,0.4506],"malvery":[0,11,0.0],"marcilene":[0,16,0.0],"marggie":[0,21,0.0],"mariea":[0,743,0.5742],"marijo":[0,1280,0.6214],"marjoree":[0,10,0.0],"marlean":[0,142,0.4305],"marny":[0,254,0.481],"marteen":[0,40,0.0],"marymae":[0,21,0.0],"masumi":[0,19,0.0],"melcina":[0,5,0.0],"michalene":[0,483,0.5368],"mildren":[0,17,0.0],"mirle":[0,5,0.0],"modenia":[0,20,0.0],"moina":[0,10,0.0],"momoe":[0,5,0.0],"morella":[0,15,0.0],"musie":[0,5,0.0],"nathel":[5,5,0.0],"ninon":[0,21,0.0],"olethia":[0,47,0.0],"oneeda":[0,17,0.0],"pannie":[0,5,0.0],"parniece":[0,5,0.0],"petty":[0,20,0.0],"phyillis":[0,70,0.0],"princetta":[0,148,0.4341],"priscillia":[0,438,0.5283],"raymah":[0,5,0.0],"remedios":[0,104,0.4034],"remilda":[0,10,0.0],"rola":[0,164,0.443],"rosarie":[0,21,0.0],"rosealee":[0,248,0.4789],"ruthmarie":[0,36,0.0],"sable":[10,1637,0.6394],"sana":[5,4722,0.7341],"sedelia":[0,10,0.0],"senovia":[0,123,0.418],"sherma":[0,319,0.5008],"shireen":[0,1345,0.6257],"shirleymae":[0,71,0.0],"silvina":[0,159,0.4403],"sona":[0,1403,0.6294],"splendora":[0,5,0.0],"sterline":[0,5,0.0],"tereatha":[0,28,0.0],"thala":[0,10,0.0],"thelmar":[0,5,0.0],"thorine":[0,5,0.0],"tincie":[0,16,0.0],"tomoko":[0,128,0.4214],"tsutako":[0,5,0.0],"udella":[0,5,0.0],"valaire":[0,11,0.0],"valere":[0,33,0.0],"vaughna":[0,10,0.0],"vendla":[0,5,0.0],"verdena":[0,23,0.0],"verletta":[0,54,0.0],"vermel":[0,44,0.0],"vivin":[87,5,0.0],"voleta":[0,5,0.0],"vontella":[0,36,0.0],"weda":[0,68,0.0],"wylla":[0,46,0.0],"yoko":[0,476,0.5355],"yuvonne":[0,240,0.476],"yvonna":[0,1179,0.6143],"clinard":[14,0,0.0],"dorland":[43,0,0.0],"arzo":[39,5,0.0],"danniel":[2409,186,0.6339],"dareld":[101,0,0.4009],"franco":[8758,0,0.7885],"keiji":[167,0,0.4445],"maxim":[6878,6,0.7669],"norvan":[26,0,0.0],"rutilio":[83,0,0.0],"sho":[452,0,0.531],"wandell":[82,5,0.0],"arbon":[7,0,0.0],"birchel":[7,0,0.0],"calmer":[15,0,0.0],"conan":[2342,0,0.6739],"danil":[273,0,0.4872],"elwell":[22,0,0.0],"griff":[286,0,0.4913],"hewey":[23,0,0.0],"inocencio":[465,0,0.5335],"isacc":[1951,0,0.6581],"jeremy":[445276,2312,0.9948],"leroyal":[23,0,0.0],"mars":[1213,175,0.5492],"rudolpho":[385,0,0.5171],"tedd":[1261,0,0.6201],"wolcott":[7,0,0.0],"alejos":[92,0,0.0],"beal":[16,0,0.0],"boynton":[6,0,0.0],"claybourne":[22,0,0.0],"clevester":[74,0,0.0],"colemon":[13,0,0.0],"elizardo":[83,0,0.0],"glendle":[37,0,0.0],"graciano":[204,0,0.4619],"handley":[6,0,0.0],"herbet":[21,0,0.0],"hong":[198,450,0.3905],"knight":[878,0,0.5887],"laren":[370,551,0.3547],"leorn":[24,0,0.0],"muldrow":[6,0,0.0],"murell":[16,0,0.0],"peary":[6,0,0.0],"per":[369,0,0.5134],"pleze":[6,0,0.0],"ragan":[394,1860,0.5534],"shig":[6,0,0.0],"silvino":[341,0,0.5066],"southern":[56,107,0.2904],"tomey":[18,0,0.0],"vasilios":[1482,0,0.6342],"verlen":[17,6,0.0],"virgus":[6,0,0.0],"waylan":[1237,11,0.6138],"wellesley":[19,36,0.0],"wilbourn":[13,0,0.0],"alphy":[5,0,0.0],"aniseto":[27,0,0.0],"annibale":[5,0,0.0],"ausbon":[10,0,0.0],"av":[5,0,0.0],"avan":[966,57,0.5684],"bascomb":[5,0,0.0],"belarmino":[12,0,0.0],"bevan":[567,66,0.5019],"blackie":[5,0,0.0],"caruso":[16,0,0.0],"cassel":[40,0,0.0],"chestley":[25,0,0.0],"ciriaco":[57,0,0.0],"clouis":[5,0,0.0],"covert":[11,0,0.0],"cress":[10,0,0.0],"darrow":[819,0,0.5827],"darwyn":[736,0,0.5734],"deal":[5,0,0.0],"denham":[88,0,0.0],"devern":[44,0,0.0],"diran":[5,0,0.0],"doane":[51,0,0.0],"dyke":[250,0,0.4796],"eliger":[5,0,0.0],"eliodoro":[243,0,0.4771],"emlyn":[10,457,0.5224],"emroy":[5,0,0.0],"eraclio":[59,0,0.0],"erenest":[15,0,0.0],"ershel":[10,0,0.0],"etalo":[5,0,0.0],"eufemio":[63,0,0.0],"eulos":[10,0,0.0],"facundo":[190,0,0.4558],"felimon":[60,0,0.0],"filimon":[244,0,0.4775],"garden":[5,0,0.0],"gehard":[5,0,0.0],"getty":[10,0,0.0],"gilles":[359,0,0.511],"glenward":[11,0,0.0],"glin":[17,0,0.0],"gumesindo":[33,0,0.0],"haggard":[10,0,0.0],"hassan":[11849,7,0.8143],"hazzie":[5,0,0.0],"hylan":[69,0,0.0],"jeno":[284,0,0.4907],"johnas":[32,0,0.0],"kazuyuki":[10,0,0.0],"kimon":[153,0,0.4369],"kimsey":[61,0,0.0],"koon":[10,0,0.0],"ladson":[15,0,0.0],"leavitt":[16,0,0.0],"ledger":[4424,31,0.7247],"lenford":[65,0,0.0],"levaughn":[119,0,0.4151],"lisbon":[5,11,0.0],"londell":[649,0,0.5624],"mayron":[32,0,0.0],"mclean":[348,21,0.4842],"milen":[117,25,0.3547],"monrad":[5,0,0.0],"murdoch":[52,0,0.0],"oce":[5,0,0.0],"odbert":[5,0,0.0],"otway":[5,0,0.0],"pittman":[16,0,0.0],"plas":[5,0,0.0],"rayo":[21,0,0.0],"reaford":[40,0,0.0],"rejino":[27,0,0.0],"richardo":[2065,0,0.663],"richey":[474,0,0.5352],"sankey":[5,0,0.0],"senovio":[28,0,0.0],"seraphim":[105,215,0.3366],"spencel":[5,0,0.0],"standard":[10,0,0.0],"steadman":[72,0,0.0],"stearl":[5,0,0.0],"stowe":[15,0,0.0],"stuard":[18,0,0.0],"thessalonia":[5,0,0.0],"thiel":[5,0,0.0],"tommey":[112,0,0.4098],"vardell":[30,0,0.0],"vernus":[20,0,0.0],"verton":[5,0,0.0],"wattie":[5,0,0.0],"whitford":[5,0,0.0],"wilie":[10,0,0.0],"williman":[10,0,0.0],"windford":[11,0,0.0],"yoshihiro":[25,0,0.0],"charis":[60,4294,0.7177],"jacquie":[0,1525,0.6367],"klyda":[0,10,0.0],"bettelou":[0,29,0.0],"jerldine":[0,53,0.0],"bernestine":[0,367,0.5129],"carolle":[0,188,0.4548],"elpidia":[0,74,0.0],"feliza":[0,128,0.4214],"feloniz":[0,8,0.0],"jamesetta":[0,623,0.5589],"laline":[0,8,0.0],"sonora":[0,1387,0.6284],"takeko":[0,43,0.0],"wilodean":[0,55,0.0],"arlyce":[0,359,0.511],"clotene":[0,24,0.0],"darla":[27,43389,0.927],"darleene":[0,193,0.4571],"derelys":[0,7,0.0],"diolinda":[0,17,0.0],"ermagene":[0,73,0.0],"gearline":[0,260,0.483],"girlean":[0,12,0.0],"inge":[0,717,0.5711],"iree":[0,70,0.0],"irish":[155,1447,0.5789],"janaan":[0,38,0.0],"jerri":[279,15500,0.8248],"ma":[0,630,0.5599],"madilyn":[0,22958,0.8722],"marchetta":[0,83,0.0],"marionette":[0,103,0.4026],"olivett":[0,7,0.0],"ovia":[0,7,0.0],"rojean":[0,216,0.4669],"stachia":[0,134,0.4254],"tana":[6,9269,0.7929],"trecia":[0,691,0.5679],"ursa":[0,62,0.0],"yona":[467,323,0.3426],"abba":[80,11,0.0],"adelita":[0,1871,0.6544],"alien":[0,11,0.0],"anahid":[0,82,0.0],"armande":[0,22,0.0],"bethal":[0,6,0.0],"bettilou":[0,11,0.0],"candita":[0,131,0.4235],"carmelle":[0,324,0.5021],"caroleen":[0,272,0.4869],"cozella":[0,6,0.0],"daina":[5,2512,0.6788],"deone":[110,182,0.3073],"donnabell":[0,24,0.0],"dories":[0,46,0.0],"dorislee":[0,6,0.0],"dotsy":[0,51,0.0],"dulcy":[0,100,0.4],"esthermae":[0,6,0.0],"evellyn":[0,180,0.4511],"gen":[67,12,0.0],"gudelia":[0,61,0.0],"helane":[0,174,0.4481],"hellan":[0,6,0.0],"hipolita":[0,17,0.0],"jeanann":[0,644,0.5618],"jeanmarie":[0,2313,0.6728],"jeraldean":[0,88,0.0],"jimella":[0,6,0.0],"jonita":[0,799,0.5805],"juliett":[0,919,0.5927],"leronia":[0,6,0.0],"leverna":[0,16,0.0],"livie":[0,684,0.567],"lizbeth":[31,25745,0.8812],"loisjean":[0,13,0.0],"lori":[853,341795,0.9975],"loubertha":[0,27,0.0],"luanne":[0,8616,0.7871],"luena":[0,6,0.0],"maidell":[0,6,0.0],"malvenia":[0,22,0.0],"marcellia":[0,37,0.0],"marles":[0,58,0.0],"merelyn":[0,324,0.5021],"mozter":[0,6,0.0],"muggie":[0,6,0.0],"myraline":[0,6,0.0],"noda":[0,6,0.0],"reby":[0,6,0.0],"renell":[154,553,0.4458],"richardean":[0,45,0.0],"rometta":[0,34,0.0],"roslin":[0,234,0.4738],"rudean":[0,107,0.4059],"sakiko":[0,6,0.0],"sherri":[176,83653,0.9826],"solidad":[0,12,0.0],"tiburcia":[0,16,0.0],"valgene":[177,11,0.4282],"vasta":[0,6,0.0],"wahnetta":[0,6,0.0],"wilodene":[0,11,0.0],"winnette":[0,23,0.0],"adalyne":[0,912,0.592],"aetna":[0,5,0.0],"allis":[0,231,0.4727],"almae":[0,10,0.0],"altee":[0,11,0.0],"anglina":[0,47,0.0],"arillia":[0,5,0.0],"arlayne":[0,74,0.0],"arona":[6,15,0.0],"athelia":[0,34,0.0],"atline":[0,5,0.0],"baudelia":[0,88,0.0],"beathrice":[0,5,0.0],"belua":[0,5,0.0],"bethine":[0,30,0.0],"bonnetta":[0,170,0.4461],"bonnielee":[0,50,0.0],"calvina":[0,127,0.4208],"caridad":[0,1754,0.6488],"cedella":[0,71,0.0],"chadyeane":[0,5,0.0],"claytie":[0,11,0.0],"cleatrice":[0,15,0.0],"cloree":[0,5,0.0],"clura":[0,5,0.0],"colleene":[0,120,0.4158],"columbine":[0,30,0.0],"corintha":[0,15,0.0],"cotha":[0,5,0.0],"dainty":[0,23,0.0],"daphane":[0,487,0.5375],"darlynne":[0,5,0.0],"denia":[0,1247,0.6192],"denotra":[0,17,0.0],"deretha":[0,86,0.0],"diann":[0,12252,0.8176],"donaciana":[0,10,0.0],"dorace":[0,33,0.0],"dormalee":[0,5,0.0],"dorna":[0,119,0.4151],"dorthay":[0,20,0.0],"efigenia":[0,10,0.0],"eliane":[0,591,0.5543],"elladean":[0,5,0.0],"elnara":[0,5,0.0],"eloda":[0,56,0.0],"elsiemae":[0,32,0.0],"emilene":[0,139,0.4286],"emmylou":[0,1192,0.6153],"eudella":[0,5,0.0],"eufaula":[0,5,0.0],"eyleen":[0,336,0.5053],"fadra":[0,26,0.0],"felisita":[0,42,0.0],"felisitas":[0,57,0.0],"flosie":[0,5,0.0],"fordie":[0,5,0.0],"georgio":[732,5,0.5696],"gerd":[16,17,0.0],"getrudes":[0,5,0.0],"gloriette":[0,17,0.0],"gracelyn":[0,15240,0.8366],"gwyndolyn":[0,513,0.542],"idoma":[0,5,0.0],"inelle":[0,5,0.0],"jacklin":[0,890,0.5899],"jacquelina":[0,368,0.5132],"jaunice":[0,84,0.0],"jenettie":[0,5,0.0],"jerelyn":[0,957,0.5962],"johnita":[0,576,0.5521],"joscelyn":[0,2114,0.665],"junelle":[0,222,0.4693],"juneve":[0,5,0.0],"karlyn":[7,2368,0.6731],"katheline":[0,84,0.0],"kathlynn":[0,554,0.5487],"laeuna":[0,5,0.0],"laray":[414,377,0.3034],"launia":[0,5,0.0],"lauvenia":[0,5,0.0],"leada":[0,11,0.0],"leady":[0,5,0.0],"ledonia":[0,15,0.0],"lorensa":[0,5,0.0],"louies":[0,11,0.0],"louree":[0,10,0.0],"ludine":[0,10,0.0],"luvera":[0,10,0.0],"luzell":[5,5,0.0],"maedean":[0,46,0.0],"magdelina":[0,15,0.0],"mallissa":[0,128,0.4214],"margare":[0,11,0.0],"margean":[0,69,0.0],"marialyce":[0,54,0.0],"marieange":[0,5,0.0],"marienne":[0,25,0.0],"marinel":[0,27,0.0],"marleta":[0,76,0.0],"marsena":[0,67,0.0],"marveen":[0,62,0.0],"melchora":[0,5,0.0],"melzina":[0,10,0.0],"milbra":[0,11,0.0],"mosetta":[0,62,0.0],"moy":[0,5,0.0],"mylie":[0,1923,0.6568],"myrdell":[0,5,0.0],"myreta":[0,5,0.0],"natella":[0,5,0.0],"nazaria":[0,495,0.5389],"nedia":[0,55,0.0],"nelvie":[0,5,0.0],"nilla":[0,26,0.0],"normalea":[0,5,0.0],"olgia":[0,11,0.0],"opalene":[0,46,0.0],"orita":[0,15,0.0],"orna":[0,42,0.0],"osha":[85,279,0.3926],"parie":[0,5,0.0],"pawnee":[0,15,0.0],"pernetta":[0,10,0.0],"remel":[0,21,0.0],"roenia":[0,5,0.0],"romalda":[0,10,0.0],"rosala":[0,5,0.0],"rozellia":[0,5,0.0],"rubia":[0,46,0.0],"sachiyo":[0,5,0.0],"saralyn":[0,1290,0.6221],"saramae":[0,19,0.0],"serafine":[0,5,0.0],"sewilla":[0,5,0.0],"sheilah":[0,2285,0.6718],"socoro":[0,5,0.0],"sola":[5,250,0.4719],"susa":[0,211,0.4649],"sylvene":[0,15,0.0],"tona":[0,1421,0.6305],"twanda":[0,1362,0.6268],"uldean":[0,10,0.0],"veldia":[0,5,0.0],"vennetta":[0,21,0.0],"verabelle":[0,5,0.0],"vernett":[0,54,0.0],"vetrice":[0,5,0.0],"viviann":[0,633,0.5603],"vivyan":[0,116,0.4129],"wiladean":[0,5,0.0],"williadean":[0,5,0.0],"wyla":[0,26,0.0],"melquiades":[181,0,0.4515],"barrie":[1337,1708,0.3908],"aristeo":[882,0,0.5891],"dawes":[31,0,0.0],"stevan":[4117,0,0.7229],"williamson":[87,0,0.0],"senaido":[8,0,0.0],"bing":[356,0,0.5103],"chalres":[38,0,0.0],"clavin":[116,0,0.4129],"cory":[127023,6585,0.9507],"court":[333,0,0.5045],"darden":[68,0,0.0],"dargan":[7,0,0.0],"darroll":[396,0,0.5195],"edsell":[23,0,0.0],"haron":[190,0,0.4558],"hurlie":[7,0,0.0],"sandor":[928,0,0.5935],"vernen":[7,0,0.0],"alcario":[103,0,0.4026],"andrez":[1145,0,0.6118],"arlus":[11,0,0.0],"asao":[6,0,0.0],"authar":[17,0,0.0],"condon":[6,0,0.0],"cooledge":[12,0,0.0],"covington":[27,11,0.0],"cuyler":[738,10,0.5671],"darald":[214,0,0.4661],"derek":[237860,909,0.9962],"devan":[13586,5161,0.6193],"dodson":[16,0,0.0],"domineck":[6,0,0.0],"ej":[313,0,0.4991],"farnum":[6,0,0.0],"fielden":[34,0,0.0],"gaeton":[28,0,0.0],"guilio":[26,0,0.0],"haddon":[776,53,0.5464],"harcourt":[11,0,0.0],"hermes":[660,5,0.5603],"hoarce":[29,0,0.0],"jeral":[421,10,0.5147],"jeston":[477,0,0.5357],"josue":[56652,185,0.9478],"kanji":[6,0,0.0],"lethaniel":[40,0,0.0],"mizell":[66,0,0.0],"natalio":[203,0,0.4615],"nicodemus":[1075,0,0.6063],"nishan":[365,0,0.5125],"pasqualino":[29,0,0.0],"priestly":[6,0,0.0],"reaves":[24,0,0.0],"ricco":[1469,0,0.6334],"terral":[586,20,0.5381],"tetsuro":[6,0,0.0],"thaddaeus":[1035,0,0.603],"theran":[261,0,0.4833],"tice":[49,0,0.0],"ulyesses":[36,0,0.0],"yoshinori":[25,0,0.0],"alister":[1561,5,0.6369],"alyre":[5,0,0.0],"antimo":[16,0,0.0],"arkley":[5,0,0.0],"arnol":[134,0,0.4254],"arshag":[5,0,0.0],"aruther":[33,0,0.0],"ausie":[5,0,0.0],"baldassare":[5,0,0.0],"baudelio":[356,0,0.5103],"benjimin":[283,0,0.4904],"bicente":[10,0,0.0],"bivian":[5,7,0.0],"bonard":[11,0,0.0],"brownell":[11,0,0.0],"burgin":[11,0,0.0],"burlen":[26,0,0.0],"carnes":[5,0,0.0],"carthell":[16,0,0.0],"ceferino":[126,0,0.4201],"cesareo":[81,0,0.0],"cisco":[827,0,0.5835],"clarince":[12,0,0.0],"clorence":[5,0,0.0],"coleridge":[17,0,0.0],"colson":[8624,0,0.7871],"davidson":[1117,0,0.6096],"dero":[5,0,0.0],"donner":[5,0,0.0],"dwan":[1221,910,0.3814],"emeric":[583,0,0.5531],"emitte":[5,0,0.0],"emzie":[21,0,0.0],"ennio":[143,0,0.4311],"falco":[25,0,0.0],"foister":[5,0,0.0],"fredrik":[508,0,0.5412],"gaylan":[481,46,0.4968],"gunther":[1086,0,0.6072],"harney":[15,0,0.0],"harvin":[246,12,0.4599],"hiroyuki":[67,0,0.0],"hopson":[5,0,0.0],"hoskie":[47,0,0.0],"indalecio":[137,0,0.4273],"jeryl":[802,1029,0.3667],"jiggs":[5,0,0.0],"johm":[82,0,0.0],"jual":[5,0,0.0],"kenley":[1143,7163,0.676],"kernell":[5,0,0.0],"lamb":[5,0,0.0],"lavoid":[5,0,0.0],"laydell":[5,0,0.0],"lelton":[46,0,0.0],"levio":[5,0,0.0],"loften":[5,0,0.0],"lonzell":[466,0,0.5337],"luvender":[5,0,0.0],"manvil":[5,0,0.0],"martiniano":[27,0,0.0],"mellon":[5,0,0.0],"mertin":[5,0,0.0],"mon":[10,0,0.0],"morty":[87,0,0.0],"nathanal":[209,0,0.464],"nepoleon":[10,0,0.0],"olivier":[1936,21,0.6513],"ord":[20,0,0.0],"ornie":[10,0,0.0],"orran":[15,0,0.0],"osler":[5,0,0.0],"othniel":[668,0,0.565],"otley":[5,0,0.0],"ovey":[11,0,0.0],"ozel":[11,5,0.0],"phelix":[211,0,0.4649],"playford":[5,0,0.0],"redmon":[5,0,0.0],"renzie":[5,6,0.0],"rickey":[61666,674,0.9486],"rigoberto":[11338,7,0.8105],"rix":[10,0,0.0],"rockey":[941,0,0.5947],"rodric":[505,0,0.5407],"rozel":[5,0,0.0],"sigifredo":[527,0,0.5444],"staton":[106,0,0.4051],"stratford":[5,0,0.0],"swinton":[5,0,0.0],"tam":[984,897,0.3426],"tedford":[67,0,0.0],"thell":[11,0,0.0],"theon":[402,9,0.5113],"thirl":[5,0,0.0],"tiodoro":[29,0,0.0],"toliver":[46,0,0.0],"ulyssess":[5,0,0.0],"upshur":[5,0,0.0],"vernan":[18,0,0.0],"vyrl":[10,0,0.0],"willas":[5,0,0.0],"wymond":[5,0,0.0],"irmalee":[0,62,0.0],"johna":[6,2456,0.6766],"dulcia":[0,14,0.0],"jeweldine":[0,59,0.0],"calletana":[0,13,0.0],"eyvonne":[0,771,0.5774],"geretha":[0,37,0.0],"ivaline":[0,8,0.0],"nikki":[896,40064,0.9023],"valoyce":[0,8,0.0],"vernadean":[0,26,0.0],"annil":[0,7,0.0],"aravella":[0,12,0.0],"cheri":[12,36062,0.9111],"cornellia":[0,37,0.0],"ferma":[0,7,0.0],"garneta":[0,7,0.0],"genny":[0,1300,0.6228],"gioia":[0,714,0.5707],"glorian":[0,120,0.4158],"glynda":[0,2425,0.6769],"hazeleen":[0,19,0.0],"julaine":[0,697,0.5686],"leddie":[0,46,0.0],"melverine":[0,7,0.0],"nancee":[0,1358,0.6266],"norlene":[0,192,0.4567],"oneva":[0,12,0.0],"raynell":[438,716,0.38],"renita":[0,7398,0.7738],"willowdean":[0,70,0.0],"arnelia":[0,11,0.0],"aspacia":[0,6,0.0],"betsie":[0,211,0.4649],"bloneva":[0,11,0.0],"bonnita":[0,683,0.5669],"candice":[155,67959,0.9644],"donaldeen":[0,41,0.0],"ednar":[0,12,0.0],"eldeen":[0,39,0.0],"georgea":[0,24,0.0],"geralda":[0,66,0.0],"hildia":[0,6,0.0],"jearldean":[0,63,0.0],"jennye":[0,68,0.0],"kazuyo":[0,11,0.0],"lajean":[0,400,0.5204],"lavanna":[0,69,0.0],"lavoyce":[0,11,0.0],"lilar":[0,6,0.0],"linette":[0,4278,0.7262],"mannette":[0,6,0.0],"marba":[0,6,0.0],"margetta":[0,11,0.0],"maybelline":[0,616,0.5579],"maythel":[0,6,0.0],"merlean":[0,72,0.0],"octaviana":[0,11,0.0],"ovalene":[0,6,0.0],"raymonda":[0,172,0.4471],"reada":[0,19,0.0],"rosalba":[0,2823,0.6901],"roxane":[0,5173,0.7427],"senorina":[0,6,0.0],"sharline":[0,415,0.5236],"tasia":[0,4175,0.7241],"toribia":[0,6,0.0],"vancy":[0,6,0.0],"velcie":[0,6,0.0],"vernesteen":[0,6,0.0],"wauline":[0,6,0.0],"wilene":[0,161,0.4414],"willidean":[0,29,0.0],"wilmajean":[0,6,0.0],"wilodyne":[0,6,0.0],"wylodene":[0,23,0.0],"yayoi":[0,11,0.0],"zelmarie":[0,6,0.0],"aloma":[0,847,0.5856],"aloyse":[0,5,0.0],"alwayne":[0,5,0.0],"alzata":[0,5,0.0],"angelin":[0,624,0.559],"annies":[0,5,0.0],"arbutis":[0,17,0.0],"ardy":[0,5,0.0],"arleon":[0,5,0.0],"avila":[0,732,0.5729],"barbera":[0,164,0.443],"bernella":[0,10,0.0],"bertelle":[0,5,0.0],"bertia":[0,22,0.0],"bettejo":[0,15,0.0],"bety":[0,44,0.0],"biddy":[0,10,0.0],"blon":[0,5,0.0],"caren":[0,9560,0.7961],"carena":[0,329,0.5034],"carmalita":[0,415,0.5236],"carmencita":[0,414,0.5234],"carolynne":[0,987,0.5989],"carryl":[0,28,0.0],"cathaline":[0,10,0.0],"cathreen":[0,15,0.0],"cheryle":[0,5475,0.7477],"clady":[0,16,0.0],"clorice":[0,25,0.0],"clote":[0,16,0.0],"conferina":[0,5,0.0],"constancia":[0,109,0.4075],"correen":[0,175,0.4486],"cubia":[0,5,0.0],"dionysia":[0,43,0.0],"dorlean":[0,5,0.0],"dorth":[0,5,0.0],"eardie":[0,5,0.0],"earldean":[0,36,0.0],"earldene":[0,5,0.0],"eliose":[0,5,0.0],"elowise":[0,18,0.0],"emolene":[0,5,0.0],"engracia":[0,53,0.0],"eolia":[0,5,0.0],"epimenia":[0,23,0.0],"ermalea":[0,5,0.0],"ermalene":[0,39,0.0],"eufracia":[0,23,0.0],"evelee":[0,16,0.0],"evleyn":[0,5,0.0],"evylin":[0,10,0.0],"fada":[0,5,0.0],"fannette":[0,5,0.0],"fauniel":[0,5,0.0],"fibbie":[0,5,0.0],"floya":[0,5,0.0],"gerri":[17,5446,0.7452],"glafira":[0,5,0.0],"glorious":[0,320,0.501],"goldina":[0,5,0.0],"gunvor":[0,5,0.0],"guydra":[0,5,0.0],"helenmae":[0,10,0.0],"heriberta":[0,5,0.0],"hermance":[0,5,0.0],"icelean":[0,10,0.0],"ignacita":[0,5,0.0],"irline":[0,5,0.0],"jacky":[6583,1193,0.6588],"jacquelynne":[0,868,0.5877],"jesteen":[0,5,0.0],"jincy":[0,32,0.0],"jodean":[0,448,0.5303],"johnell":[1234,355,0.4972],"johnice":[0,226,0.4708],"joicy":[0,10,0.0],"joleen":[0,6649,0.7646],"julane":[0,283,0.4904],"julene":[0,1715,0.6469],"julita":[0,180,0.4511],"kaola":[0,5,0.0],"katherline":[0,21,0.0],"kathrean":[0,5,0.0],"katty":[0,999,0.5999],"lafrances":[0,34,0.0],"lanetta":[0,1064,0.6054],"laveryl":[0,5,0.0],"lavesta":[0,10,0.0],"leann":[7,24322,0.877],"lennette":[0,356,0.5103],"lenona":[0,10,0.0],"lerlean":[0,10,0.0],"lieselotte":[0,25,0.0],"loismae":[0,11,0.0],"loistine":[0,85,0.0],"loralie":[0,934,0.5941],"loreatha":[0,60,0.0],"lorinne":[0,10,0.0],"luberdie":[0,5,0.0],"ludvina":[0,5,0.0],"luler":[0,5,0.0],"lurlee":[0,5,0.0],"luvonia":[0,5,0.0],"makiko":[0,23,0.0],"margrate":[0,10,0.0],"marguery":[0,5,0.0],"marida":[0,51,0.0],"mariejeanne":[0,5,0.0],"marlena":[0,11264,0.8103],"marthann":[0,71,0.0],"maryclare":[0,347,0.5081],"mee":[0,365,0.5125],"melaine":[0,2398,0.676],"merdell":[0,5,0.0],"mery":[0,499,0.5396],"miram":[0,10,0.0],"monzell":[0,5,0.0],"murdie":[0,5,0.0],"myrlee":[0,5,0.0],"nelita":[0,10,0.0],"nerma":[0,5,0.0],"nobuye":[0,5,0.0],"noema":[0,10,0.0],"normie":[0,21,0.0],"novalene":[0,26,0.0],"novela":[0,5,0.0],"obeda":[0,5,0.0],"olly":[117,21,0.3628],"onetha":[0,79,0.0],"onzell":[0,12,0.0],"orothy":[0,5,0.0],"penney":[0,1951,0.6581],"providencia":[0,115,0.4121],"queenell":[0,5,0.0],"rachal":[0,1323,0.6243],"ratchel":[0,5,0.0],"rejeanne":[0,35,0.0],"remigia":[0,5,0.0],"renae":[33,14092,0.8281],"reneta":[0,172,0.4471],"rudelle":[0,10,0.0],"saraphine":[0,15,0.0],"saundra":[11,17851,0.8499],"secundina":[0,5,0.0],"selester":[5,5,0.0],"selestine":[0,41,0.0],"seletha":[0,65,0.0],"shirleen":[0,1790,0.6506],"silvestra":[0,31,0.0],"sixta":[0,17,0.0],"sydel":[0,43,0.0],"sylbia":[0,5,0.0],"tiodora":[0,5,0.0],"trudell":[5,54,0.0],"varian":[403,5,0.5157],"verlla":[0,5,0.0],"versey":[0,10,0.0],"virgine":[0,5,0.0],"willadine":[0,16,0.0],"winell":[0,18,0.0],"zulene":[0,10,0.0],"zulla":[0,5,0.0],"wayburn":[63,0,0.0],"julias":[108,0,0.4067],"clennon":[82,0,0.0],"evell":[8,0,0.0],"masahiro":[63,0,0.0],"shelvy":[64,333,0.436],"walford":[8,0,0.0],"aristotle":[999,0,0.5999],"habert":[7,0,0.0],"jackjohn":[20,0,0.0],"lindbergh":[473,0,0.535],"sean":[423036,2962,0.993],"sydnor":[7,0,0.0],"tamio":[13,0,0.0],"wilard":[13,0,0.0],"allister":[1207,6,0.6137],"arcenio":[176,0,0.4491],"bufard":[6,0,0.0],"cicel":[51,0,0.0],"daneil":[1216,32,0.6034],"deverne":[29,0,0.0],"dicky":[975,0,0.5978],"duran":[1526,0,0.6367],"eluster":[6,0,0.0],"emiterio":[21,0,0.0],"famous":[193,0,0.4571],"gross":[6,0,0.0],"haruto":[265,0,0.4846],"herlin":[54,0,0.0],"huntley":[994,696,0.3797],"jhonny":[1830,0,0.6525],"joddie":[12,34,0.0],"kilbourne":[6,0,0.0],"kizer":[230,0,0.4723],"lebron":[1519,0,0.6363],"lyles":[28,0,0.0],"lyonel":[252,0,0.4803],"malven":[11,0,0.0],"marrell":[120,0,0.4158],"munroe":[13,5,0.0],"noberto":[47,0,0.0],"oman":[45,0,0.0],"prue":[6,78,0.0],"reynald":[151,0,0.4358],"ricky":[222882,1929,0.9914],"sergei":[371,0,0.5139],"sherril":[153,1622,0.5938],"stokley":[13,0,0.0],"taurino":[26,0,0.0],"wilburne":[6,0,0.0],"winburn":[11,0,0.0],"winiford":[11,0,0.0],"wyllis":[11,0,0.0],"zacarias":[1089,0,0.6074],"zenos":[6,0,0.0],"annias":[12,0,0.0],"annunzio":[5,0,0.0],"ardwin":[5,0,0.0],"aren":[2176,348,0.5866],"arly":[67,805,0.5429],"arve":[10,0,0.0],"arven":[15,0,0.0],"avron":[33,0,0.0],"bass":[16,0,0.0],"beaman":[5,0,0.0],"beatty":[10,0,0.0],"bjorn":[4951,0,0.7389],"brien":[3581,5,0.7099],"condie":[5,0,0.0],"cordes":[5,0,0.0],"correll":[132,0,0.4241],"crus":[15,0,0.0],"davey":[3312,191,0.6702],"davide":[894,0,0.5903],"derril":[198,0,0.4593],"dougald":[15,0,0.0],"durl":[35,0,0.0],"earn":[5,0,0.0],"echol":[5,0,0.0],"edgard":[1381,0,0.628],"eliazar":[2075,0,0.6634],"emileo":[174,0,0.4481],"epolito":[5,0,0.0],"euguene":[5,0,0.0],"eulojio":[32,0,0.0],"exel":[5,0,0.0],"filex":[10,0,0.0],"flavis":[10,0,0.0],"flozell":[21,0,0.0],"fonza":[5,0,0.0],"franky":[3038,70,0.6828],"freland":[5,0,0.0],"games":[10,0,0.0],"gandolfo":[5,0,0.0],"gayton":[5,0,0.0],"gearald":[66,0,0.0],"given":[91,23,0.3284],"goree":[26,0,0.0],"groves":[5,0,0.0],"hairl":[41,0,0.0],"harice":[10,0,0.0],"harle":[10,0,0.0],"hilry":[5,0,0.0],"hing":[5,0,0.0],"ithel":[5,0,0.0],"jarel":[1150,6,0.6094],"jenning":[10,0,0.0],"jimey":[5,0,0.0],"johne":[63,5,0.0],"keaton":[21749,1331,0.8223],"layron":[5,0,0.0],"leeward":[5,0,0.0],"lenin":[1679,5,0.6434],"macky":[137,0,0.4273],"mattew":[1227,0,0.6178],"merce":[5,5,0.0],"michial":[1123,0,0.6101],"millan":[231,11,0.4551],"moritz":[135,0,0.4261],"morrel":[5,0,0.0],"muneo":[5,0,0.0],"murrey":[15,0,0.0],"nolberto":[615,0,0.5578],"odilon":[132,0,0.4241],"otilio":[375,0,0.5148],"percel":[20,0,0.0],"ralls":[5,0,0.0],"rebert":[5,0,0.0],"rollyn":[71,0,0.0],"ryman":[184,21,0.415],"shingo":[31,0,0.0],"shun":[909,30,0.5755],"sivert":[11,0,0.0],"stanleigh":[5,0,0.0],"theodia":[10,0,0.0],"tonny":[896,0,0.5905],"tuck":[284,0,0.4907],"ulyssee":[39,0,0.0],"vaso":[5,0,0.0],"waford":[5,0,0.0],"walley":[55,0,0.0],"wavely":[31,0,0.0],"welty":[5,0,0.0],"winchell":[5,0,0.0],"narice":[0,13,0.0],"orchid":[0,295,0.494],"inita":[0,199,0.4598],"anneliese":[0,5755,0.752],"jeanell":[0,874,0.5883],"vyonne":[0,56,0.0],"audrene":[0,41,0.0],"donnalee":[0,966,0.597],"elizbeath":[0,8,0.0],"haroldene":[0,26,0.0],"moreen":[0,263,0.484],"peggye":[0,298,0.4948],"salle":[0,111,0.4091],"shirely":[0,231,0.4727],"veeda":[0,60,0.0],"amaryllis":[0,1779,0.65],"berdyne":[0,7,0.0],"burnese":[0,7,0.0],"corlene":[0,91,0.0],"darlyn":[33,2032,0.6524],"fleur":[0,259,0.4827],"flor":[92,7524,0.767],"isela":[0,5824,0.753],"jacqulene":[0,134,0.4254],"juli":[0,6336,0.7604],"marletta":[0,293,0.4934],"monez":[0,7,0.0],"murlee":[0,23,0.0],"rocelia":[0,28,0.0],"sherlee":[0,24,0.0],"treba":[0,32,0.0],"zenovia":[0,490,0.538],"aslean":[0,22,0.0],"audrienne":[0,26,0.0],"belmeda":[0,6,0.0],"charsie":[0,22,0.0],"darthie":[0,12,0.0],"dathol":[0,6,0.0],"delorese":[0,135,0.4261],"donnia":[0,394,0.5191],"earnice":[0,17,0.0],"ermadean":[0,17,0.0],"everleen":[0,11,0.0],"evline":[0,6,0.0],"floreta":[0,6,0.0],"gennetta":[0,43,0.0],"girlene":[0,29,0.0],"gloretta":[0,34,0.0],"grovene":[0,6,0.0],"henrine":[0,84,0.0],"imojene":[0,6,0.0],"jaunell":[0,6,0.0],"jinx":[11,196,0.4386],"junko":[0,116,0.4129],"kikumi":[0,6,0.0],"levita":[0,205,0.4624],"marabeth":[0,134,0.4254],"marchie":[0,11,0.0],"marleen":[0,4113,0.7228],"marlyce":[0,508,0.5412],"marlyne":[0,478,0.5359],"neloise":[0,11,0.0],"nelvia":[0,23,0.0],"ninabelle":[0,6,0.0],"raylene":[0,4049,0.7215],"ritsuko":[0,6,0.0],"rosalva":[0,2128,0.6656],"vidala":[0,6,0.0],"wandalene":[0,64,0.0],"wanell":[0,118,0.4144],"wilfreda":[0,11,0.0],"yoland":[0,260,0.483],"adoree":[35,94,0.3076],"alcy":[0,5,0.0],"ardonia":[0,5,0.0],"aree":[5,55,0.0],"argent":[0,5,0.0],"arzona":[0,5,0.0],"atrice":[0,5,0.0],"barbetta":[0,27,0.0],"bozena":[0,45,0.0],"bryna":[0,1441,0.6317],"carmell":[12,152,0.4106],"cathie":[0,5586,0.7494],"celedonia":[0,10,0.0],"cesira":[0,5,0.0],"cosetta":[0,41,0.0],"dawne":[0,2603,0.6831],"denora":[0,111,0.4091],"despena":[0,5,0.0],"dolorosa":[0,5,0.0],"donne":[80,117,0.2725],"doralyn":[0,92,0.0],"dorleen":[0,151,0.4358],"earmie":[0,10,0.0],"eleanar":[0,5,0.0],"elinar":[0,5,0.0],"ereline":[0,5,0.0],"ermenia":[0,5,0.0],"ersell":[0,11,0.0],"eusevia":[0,11,0.0],"fausta":[0,10,0.0],"febe":[0,282,0.49],"floyda":[0,20,0.0],"freedia":[0,20,0.0],"genovia":[0,40,0.0],"georgialee":[0,15,0.0],"georgiena":[0,5,0.0],"geraldeen":[0,33,0.0],"gerelene":[0,22,0.0],"girty":[0,10,0.0],"gurtrue":[0,5,0.0],"gustena":[0,5,0.0],"gwindolyn":[0,5,0.0],"imagean":[0,31,0.0],"immogene":[0,5,0.0],"isbella":[0,165,0.4435],"iwana":[0,40,0.0],"jauneta":[0,5,0.0],"jeanna":[0,8862,0.7895],"jewellene":[0,5,0.0],"jonnye":[0,5,0.0],"juventina":[0,26,0.0],"kathelean":[0,10,0.0],"kathrynn":[0,501,0.54],"lajoy":[0,264,0.4843],"larean":[0,5,0.0],"learlene":[0,5,0.0],"leath":[0,21,0.0],"leother":[0,5,0.0],"lethe":[0,5,0.0],"loramae":[0,5,0.0],"lovonia":[0,10,0.0],"luan":[941,515,0.4089],"lubell":[0,5,0.0],"margaretann":[0,304,0.4966],"marvilla":[0,5,0.0],"maryrita":[0,36,0.0],"maydee":[0,5,0.0],"mazle":[0,5,0.0],"mellissa":[0,5625,0.75],"merrium":[0,5,0.0],"mliss":[0,108,0.4067],"murnie":[0,5,0.0],"naioma":[0,10,0.0],"natsuyo":[0,5,0.0],"nether":[0,11,0.0],"norna":[0,16,0.0],"ocella":[0,5,0.0],"pamala":[0,7357,0.7733],"patsye":[0,152,0.4364],"reve":[27,73,0.292],"ronna":[0,4623,0.733],"roselean":[0,18,0.0],"selestina":[0,16,0.0],"sharlet":[0,625,0.5592],"shasta":[20,4315,0.724],"theretha":[0,21,0.0],"uleta":[0,10,0.0],"vaida":[0,881,0.589],"vanteen":[0,5,0.0],"verly":[0,5,0.0],"vernez":[0,5,0.0],"videll":[13,10,0.0],"vinell":[0,10,0.0],"vyolet":[0,145,0.4323],"wylodine":[0,32,0.0],"wynonia":[0,126,0.4201],"ygnacia":[0,10,0.0],"zenorah":[0,5,0.0],"bibb":[35,0,0.0],"herculano":[16,0,0.0],"flord":[18,0,0.0],"jasinto":[24,0,0.0],"tiofilo":[51,0,0.0],"tunney":[40,0,0.0],"adison":[652,3235,0.5975],"bahe":[32,0,0.0],"clevon":[302,0,0.496],"heberto":[141,0,0.4298],"lorman":[7,0,0.0],"wenceslao":[332,0,0.5042],"abrom":[6,0,0.0],"archille":[6,0,0.0],"burbon":[6,0,0.0],"caeser":[6,0,0.0],"cloyed":[6,0,0.0],"darreld":[89,0,0.0],"delver":[6,0,0.0],"devaughn":[2552,0,0.6814],"dorcy":[6,0,0.0],"dowd":[6,0,0.0],"downey":[6,0,0.0],"dual":[18,0,0.0],"gerrald":[166,0,0.444],"guenther":[71,0,0.0],"hendry":[143,0,0.4311],"jaseph":[6,0,0.0],"jerrol":[307,0,0.4974],"kai":[66409,8243,0.867],"lindberg":[231,0,0.4727],"miquel":[2031,92,0.6366],"raynaldo":[1539,0,0.6374],"roel":[4658,0,0.7336],"rondall":[751,0,0.5751],"tally":[137,549,0.454],"tanis":[535,994,0.414],"timmy":[25738,168,0.877],"adran":[36,0,0.0],"albany":[5,714,0.5674],"alco":[5,0,0.0],"alon":[1169,24,0.6029],"alphones":[5,0,0.0],"amile":[5,0,0.0],"arvester":[22,0,0.0],"athos":[38,0,0.0],"berwick":[5,0,0.0],"bon":[269,0,0.486],"bret":[29798,232,0.8886],"brett":[158979,3393,0.9791],"burie":[5,0,0.0],"chong":[336,226,0.3288],"claymon":[5,0,0.0],"corvin":[784,0,0.5789],"darral":[385,0,0.5171],"darrall":[196,0,0.4585],"daryel":[543,0,0.547],"deral":[203,0,0.4615],"deroe":[5,0,0.0],"drexell":[16,0,0.0],"duain":[50,0,0.0],"duie":[5,0,0.0],"efrem":[1578,0,0.6396],"elish":[10,0,0.0],"elnathan":[385,0,0.5171],"etsuo":[5,0,0.0],"fairley":[122,0,0.4173],"florio":[5,0,0.0],"garnel":[5,0,0.0],"gervais":[11,0,0.0],"hagood":[5,0,0.0],"hermas":[5,0,0.0],"herrel":[5,0,0.0],"horold":[5,0,0.0],"jamas":[170,0,0.4461],"kayo":[268,5,0.4783],"lank":[10,0,0.0],"lavor":[48,0,0.0],"lawayne":[560,10,0.5415],"lenes":[5,0,0.0],"leonell":[145,0,0.4323],"lones":[11,0,0.0],"lorinza":[10,0,0.0],"loval":[5,0,0.0],"lynnwood":[264,0,0.4843],"markie":[336,1586,0.5419],"marrin":[16,40,0.0],"maynor":[1034,0,0.6029],"melbourn":[5,0,0.0],"melesio":[74,0,0.0],"michell":[588,6988,0.7157],"mihran":[152,0,0.4364],"murlen":[5,0,0.0],"nickles":[21,0,0.0],"norlan":[129,0,0.4221],"oplis":[5,0,0.0],"ottice":[15,0,0.0],"oyd":[5,0,0.0],"peppino":[5,0,0.0],"ralphe":[5,0,0.0],"remigius":[5,0,0.0],"rhonald":[31,0,0.0],"roan":[2585,254,0.6288],"robart":[23,0,0.0],"romaldo":[129,0,0.4221],"rondell":[2786,67,0.6748],"ruff":[5,0,0.0],"siebert":[5,0,0.0],"silvan":[91,0,0.0],"smead":[5,0,0.0],"talmer":[5,0,0.0],"theodric":[27,0,0.0],"truette":[5,0,0.0],"vol":[16,0,0.0],"wessley":[264,0,0.4843],"western":[27,0,0.0],"wilfredo":[9548,0,0.796],"wilroy":[5,0,0.0],"wordie":[5,0,0.0],"wortham":[5,0,0.0],"ylario":[5,0,0.0],"yoshihiko":[5,0,0.0],"sunya":[0,111,0.4091],"jerelean":[0,31,0.0],"patt":[10,400,0.5098],"shari":[46,40921,0.9215],"clata":[0,21,0.0],"genena":[0,8,0.0],"milarain":[0,8,0.0],"seroba":[0,8,0.0],"emmo":[0,12,0.0],"geneiva":[0,20,0.0],"iyone":[0,7,0.0],"jacqulin":[0,651,0.5627],"jobita":[0,7,0.0],"mabelene":[0,61,0.0],"nancylee":[0,387,0.5175],"nellia":[0,32,0.0],"oveida":[0,7,0.0],"pierrette":[0,240,0.476],"rethia":[0,37,0.0],"roen":[938,106,0.5424],"savada":[0,7,0.0],"theoria":[0,7,0.0],"wandalea":[0,12,0.0],"andriana":[0,1765,0.6493],"anease":[0,6,0.0],"aniceta":[0,6,0.0],"arlener":[0,6,0.0],"babs":[0,285,0.491],"bernessia":[0,6,0.0],"burline":[0,6,0.0],"charma":[0,279,0.4891],"claira":[0,2616,0.6835],"crescencia":[0,6,0.0],"denyse":[0,1329,0.6247],"espanola":[0,6,0.0],"gladolia":[0,6,0.0],"jacquiline":[0,710,0.5703],"jerleen":[0,34,0.0],"joylene":[0,369,0.5134],"joyzelle":[0,16,0.0],"lillianne":[0,1309,0.6234],"marcelaine":[0,12,0.0],"marieanne":[0,126,0.4201],"mateel":[0,6,0.0],"mauna":[0,57,0.0],"melbalene":[0,11,0.0],"mercille":[0,6,0.0],"mirtis":[0,6,0.0],"murlie":[0,12,0.0],"neeta":[0,124,0.4187],"pacita":[0,46,0.0],"robenia":[0,12,0.0],"rumell":[0,6,0.0],"sharley":[0,156,0.4386],"thereasa":[0,345,0.5076],"thomasene":[0,199,0.4598],"voncil":[0,6,0.0],"vonice":[0,38,0.0],"adaleen":[0,109,0.4075],"aloa":[0,5,0.0],"antonita":[0,22,0.0],"athlee":[0,5,0.0],"bubbles":[0,5,0.0],"carmaline":[0,5,0.0],"carmena":[0,11,0.0],"cathline":[0,88,0.0],"charolett":[0,235,0.4742],"chere":[0,1347,0.6259],"christeena":[0,275,0.4879],"coeta":[0,40,0.0],"corleen":[0,96,0.0],"cruzita":[0,257,0.482],"dalpha":[0,11,0.0],"deaun":[0,76,0.0],"delors":[0,12,0.0],"devola":[0,11,0.0],"donajean":[0,5,0.0],"donaleen":[0,10,0.0],"donnah":[0,73,0.0],"enrriqueta":[0,5,0.0],"estelee":[0,10,0.0],"etelvina":[0,20,0.0],"eulina":[0,5,0.0],"euradell":[0,5,0.0],"eurma":[0,17,0.0],"evely":[0,269,0.486],"filomina":[0,10,0.0],"floie":[0,5,0.0],"floralee":[0,21,0.0],"florann":[0,15,0.0],"gaudalupe":[0,23,0.0],"gaythel":[0,10,0.0],"genva":[0,5,0.0],"ginnie":[0,787,0.5792],"glorice":[0,12,0.0],"glynna":[0,212,0.4653],"gracemary":[0,22,0.0],"greathel":[0,10,0.0],"grete":[0,61,0.0],"ianthia":[0,11,0.0],"illeana":[0,384,0.5169],"iralene":[0,5,0.0],"isebell":[0,5,0.0],"ivell":[0,5,0.0],"jackolyn":[0,154,0.4375],"jahala":[0,5,0.0],"jeanita":[0,281,0.4897],"jerine":[0,65,0.0],"jerolyn":[0,544,0.5471],"jobyna":[0,39,0.0],"joelene":[0,1174,0.6139],"junilla":[0,5,0.0],"justyn":[4372,152,0.7065],"kather":[0,17,0.0],"kathlee":[0,120,0.4158],"lavetra":[0,16,0.0],"lenoria":[0,146,0.4329],"letrice":[0,429,0.5265],"lorise":[0,10,0.0],"louina":[0,5,0.0],"luceile":[0,5,0.0],"luedella":[0,5,0.0],"luraine":[0,5,0.0],"lyndia":[0,1103,0.6085],"lynelle":[0,2310,0.6727],"maerose":[0,5,0.0],"maezell":[0,15,0.0],"maltie":[0,5,0.0],"maomi":[0,15,0.0],"marcina":[0,286,0.4913],"mardene":[0,103,0.4026],"margelene":[0,5,0.0],"margerine":[0,18,0.0],"marguree":[0,5,0.0],"martile":[0,5,0.0],"mcneva":[0,5,0.0],"meada":[0,5,0.0],"mearline":[0,5,0.0],"mera":[0,574,0.5518],"merlyne":[0,5,0.0],"milta":[0,156,0.4386],"noelle":[115,42931,0.9243],"novelia":[0,5,0.0],"onna":[0,643,0.5616],"pagie":[0,19,0.0],"pasty":[0,136,0.4267],"prestine":[0,15,0.0],"ramola":[0,10,0.0],"recia":[0,64,0.0],"reinette":[0,84,0.0],"rejina":[0,77,0.0],"rima":[0,1618,0.6418],"roba":[0,11,0.0],"rubey":[0,11,0.0],"ruthelle":[0,17,0.0],"saeko":[0,11,0.0],"shara":[5,4939,0.7381],"tammie":[134,35375,0.9066],"velois":[0,5,0.0],"vernelda":[0,10,0.0],"virble":[0,5,0.0],"virignia":[0,17,0.0],"virjean":[0,86,0.0],"willease":[0,5,0.0],"bidwell":[19,0,0.0],"briggs":[8452,90,0.778],"hearld":[30,0,0.0],"larwence":[394,0,0.5191],"lindburgh":[48,0,0.0],"brendon":[20033,22,0.8595],"dalhart":[8,0,0.0],"gildardo":[1106,0,0.6088],"glendel":[155,5,0.427],"junor":[8,0,0.0],"lindburg":[32,0,0.0],"maclyn":[14,89,0.3478],"mutsuo":[8,0,0.0],"rusty":[17744,565,0.8262],"aruthur":[17,0,0.0],"bevely":[13,131,0.3927],"dalphus":[7,0,0.0],"donny":[12857,40,0.8195],"elvester":[12,0,0.0],"erineo":[33,0,0.0],"eustolio":[17,0,0.0],"hardee":[7,0,0.0],"lothar":[68,0,0.0],"ostell":[7,0,0.0],"rudalph":[12,0,0.0],"tunny":[7,0,0.0],"vonley":[7,0,0.0],"bertell":[16,0,0.0],"cleaston":[6,0,0.0],"dorlan":[46,0,0.0],"duayne":[279,0,0.4891],"elsmer":[6,0,0.0],"enedino":[39,0,0.0],"epigmenio":[33,0,0.0],"forace":[6,0,0.0],"fredreck":[6,0,0.0],"hearold":[39,0,0.0],"irineo":[339,0,0.506],"ivol":[6,0,0.0],"jamis":[278,0,0.4888],"jocephus":[6,0,0.0],"johnn":[389,0,0.518],"joris":[59,0,0.0],"kedrick":[2179,0,0.6677],"kenneith":[219,0,0.4681],"maximiano":[146,0,0.4329],"neilson":[218,0,0.4677],"olson":[313,0,0.4991],"patrocinio":[6,0,0.0],"rheuben":[16,0,0.0],"richerd":[241,0,0.4764],"ritchard":[82,0,0.0],"roch":[251,0,0.4799],"ruddy":[527,5,0.5401],"vicent":[660,0,0.5639],"wardner":[6,0,0.0],"wyndell":[342,0,0.5068],"algy":[10,0,0.0],"amer":[1415,12,0.6256],"anteo":[5,0,0.0],"aurthor":[17,0,0.0],"bernt":[20,0,0.0],"browder":[5,0,0.0],"care":[5,0,0.0],"corando":[12,0,0.0],"curtice":[32,0,0.0],"dann":[1089,1145,0.3433],"daved":[200,0,0.4602],"delmor":[5,0,0.0],"demos":[5,0,0.0],"dusty":[10628,4460,0.5887],"duwaine":[25,0,0.0],"earthy":[5,0,0.0],"eiji":[60,0,0.0],"eliceo":[364,0,0.5122],"feltus":[25,0,0.0],"francico":[25,0,0.0],"garrick":[5427,0,0.7469],"geatano":[10,0,0.0],"greenville":[5,0,0.0],"guistino":[5,0,0.0],"harlod":[5,0,0.0],"haskie":[5,0,0.0],"herry":[26,0,0.0],"hosia":[25,0,0.0],"huell":[10,0,0.0],"hurmon":[16,0,0.0],"jemes":[5,0,0.0],"jensen":[16132,2839,0.7276],"jessel":[10,174,0.4283],"jhonie":[11,0,0.0],"kellogg":[5,0,0.0],"kinji":[5,0,0.0],"laurien":[5,16,0.0],"leonide":[5,0,0.0],"leward":[21,0,0.0],"linson":[10,0,0.0],"linzey":[16,325,0.4828],"lonnell":[1115,0,0.6095],"luel":[10,0,0.0],"lusio":[5,0,0.0],"luvert":[5,0,0.0],"mailon":[5,0,0.0],"marsell":[15,0,0.0],"maruin":[35,0,0.0],"maxfield":[874,0,0.5883],"maxton":[4509,0,0.7308],"mile":[15,0,0.0],"nemesio":[88,0,0.0],"nickoles":[199,0,0.4598],"nowell":[167,0,0.4445],"othon":[70,0,0.0],"pantalion":[5,0,0.0],"plutarco":[24,0,0.0],"raburn":[49,0,0.0],"rass":[5,0,0.0],"reinald":[21,0,0.0],"remijio":[80,0,0.0],"romas":[55,0,0.0],"ronny":[14533,478,0.8087],"ronold":[865,0,0.5874],"rudolphus":[20,0,0.0],"seaman":[5,0,0.0],"si":[166,19,0.4069],"silbestre":[10,0,0.0],"slyvester":[151,0,0.4358],"south":[5,0,0.0],"standford":[25,0,0.0],"tarlton":[10,0,0.0],"thearon":[31,0,0.0],"valder":[5,0,0.0],"vartan":[180,0,0.4511],"watler":[5,0,0.0],"wilfried":[20,0,0.0],"wyatte":[363,0,0.512],"xenophon":[15,0,0.0],"yasunobu":[5,0,0.0],"zeldon":[5,0,0.0],"zenis":[5,0,0.0],"joreen":[0,106,0.4051],"gerane":[0,28,0.0],"charmayne":[0,1416,0.6302],"sallyann":[0,1023,0.602],"raymona":[0,438,0.5283],"caryll":[0,47,0.0],"doneta":[0,144,0.4317],"lamona":[0,385,0.5171],"marlyss":[0,95,0.0],"remonia":[0,426,0.5259],"boneva":[0,7,0.0],"esterline":[0,17,0.0],"geane":[0,7,0.0],"jeann":[0,53,0.0],"loeda":[0,7,0.0],"louvene":[0,7,0.0],"omeda":[0,19,0.0],"ortensia":[0,43,0.0],"ramonia":[0,386,0.5173],"rogelia":[0,30,0.0],"sheri":[114,60457,0.9547],"amadita":[0,22,0.0],"beverle":[0,57,0.0],"brunhilda":[0,22,0.0],"burtie":[0,6,0.0],"cayetana":[0,144,0.4317],"charna":[0,554,0.5487],"cleada":[0,6,0.0],"delorice":[0,97,0.0],"donalene":[0,29,0.0],"donnella":[0,344,0.5073],"edilia":[0,124,0.4187],"eunita":[0,24,0.0],"gaylia":[0,218,0.4677],"geraine":[0,6,0.0],"gloriann":[0,345,0.5076],"ialene":[0,6,0.0],"jacquoline":[0,6,0.0],"jeananne":[0,376,0.515],"jeanene":[0,2425,0.6769],"jurlean":[0,31,0.0],"luiza":[0,1052,0.6044],"marcellyn":[0,6,0.0],"margil":[0,6,0.0],"montene":[0,11,0.0],"nanci":[0,6474,0.7622],"ormah":[0,11,0.0],"rida":[61,969,0.5669],"scharlene":[0,166,0.444],"shirlye":[0,11,0.0],"sidonie":[0,157,0.4392],"thursie":[0,6,0.0],"verjean":[0,44,0.0],"vernease":[0,6,0.0],"vitula":[0,6,0.0],"wanetah":[0,6,0.0],"yuvawn":[0,6,0.0],"alvita":[0,275,0.4879],"amarylis":[0,148,0.4341],"arethia":[0,28,0.0],"aulda":[0,5,0.0],"barbar":[0,316,0.4999],"benancia":[0,5,0.0],"bett":[0,5,0.0],"bettymarie":[0,5,0.0],"carleta":[0,176,0.4491],"carletha":[0,488,0.5377],"charmain":[0,995,0.5996],"clarese":[0,43,0.0],"claressa":[0,418,0.5242],"cleetus":[0,5,0.0],"coleene":[0,42,0.0],"constande":[0,5,0.0],"coralene":[0,22,0.0],"delorce":[0,10,0.0],"deloros":[0,79,0.0],"delouise":[0,15,0.0],"denese":[0,1588,0.6402],"dollene":[0,99,0.0],"doralene":[0,103,0.4026],"dorisann":[0,60,0.0],"dorothene":[0,5,0.0],"eduvijes":[0,5,0.0],"elzira":[0,5,0.0],"emogine":[0,5,0.0],"eretta":[0,10,0.0],"eshter":[0,5,0.0],"eulema":[0,5,0.0],"evangline":[0,37,0.0],"fostine":[0,21,0.0],"geanne":[0,21,0.0],"gerldean":[0,5,0.0],"gertrudis":[0,28,0.0],"glennice":[0,76,0.0],"ivone":[0,421,0.5249],"jearlene":[0,185,0.4534],"jenora":[0,28,0.0],"jeroma":[0,5,0.0],"joannie":[0,1586,0.6401],"jonna":[0,5551,0.7489],"lafonda":[0,693,0.5681],"lajuan":[1096,739,0.3899],"lavonn":[28,65,0.0],"leeann":[0,14300,0.8311],"lorelie":[0,416,0.5238],"lougene":[11,30,0.0],"lowana":[0,120,0.4158],"loweta":[0,5,0.0],"lowrine":[0,5,0.0],"luane":[0,241,0.4764],"lucey":[0,46,0.0],"luckie":[32,15,0.0],"lutitia":[0,28,0.0],"lydell":[1904,10,0.653],"malindia":[0,10,0.0],"maretha":[0,31,0.0],"marliss":[0,228,0.4716],"murrie":[0,15,0.0],"nesta":[108,99,0.2417],"oriole":[0,5,0.0],"paddy":[93,248,0.3684],"pamella":[0,3166,0.7001],"peggyann":[0,300,0.4954],"purlie":[0,5,0.0],"raeola":[0,5,0.0],"rafaila":[0,5,0.0],"raydell":[151,10,0.414],"rayona":[0,370,0.5136],"rethal":[0,5,0.0],"rosanell":[0,5,0.0],"sanjuanita":[0,3476,0.7082],"seta":[0,20,0.0],"sharlee":[0,635,0.5606],"sonna":[0,398,0.52],"sytha":[0,5,0.0],"teena":[0,5746,0.7519],"theresea":[0,273,0.4872],"verdel":[5,5,0.0],"wardine":[0,36,0.0],"wendolyn":[10,1158,0.6082],"wynonah":[0,5,0.0],"zenita":[0,56,0.0],"alfread":[26,0,0.0],"brevard":[14,0,0.0],"ausencio":[83,0,0.0],"dolen":[20,0,0.0],"hervy":[13,0,0.0],"lind":[29,90,0.3139],"nace":[37,0,0.0],"sammey":[28,0,0.0],"valeriano":[121,0,0.4166],"avrom":[64,0,0.0],"balentin":[24,0,0.0],"bartolome":[43,0,0.0],"catalino":[228,0,0.4716],"corky":[610,51,0.5205],"costanzo":[12,0,0.0],"dormon":[7,0,0.0],"earlon":[18,0,0.0],"fernandez":[395,0,0.5193],"gorgonio":[13,0,0.0],"hearman":[7,0,0.0],"hover":[7,0,0.0],"osco":[12,0,0.0],"shoso":[7,0,0.0],"agripino":[6,0,0.0],"albaro":[672,0,0.5655],"alexius":[135,1515,0.5908],"arthell":[23,0,0.0],"barrington":[1269,0,0.6207],"caley":[151,2473,0.6444],"claybon":[46,0,0.0],"clemen":[12,0,0.0],"clendon":[60,0,0.0],"delvan":[17,0,0.0],"dennard":[154,0,0.4375],"donard":[11,0,0.0],"dorrence":[6,0,0.0],"dotson":[32,0,0.0],"elight":[17,0,0.0],"emigdio":[333,0,0.5045],"enloe":[6,0,0.0],"glendall":[17,0,0.0],"harroll":[42,0,0.0],"heliodoro":[163,0,0.4424],"hilrey":[6,0,0.0],"kernie":[28,0,0.0],"lefty":[35,0,0.0],"mits":[6,0,0.0],"mosley":[19,75,0.0],"raimundo":[288,0,0.4919],"romon":[356,0,0.5103],"royster":[6,0,0.0],"torivio":[32,0,0.0],"virlyn":[39,0,0.0],"aberham":[25,0,0.0],"alyn":[315,470,0.3466],"amis":[10,0,0.0],"arvile":[10,0,0.0],"bergen":[395,522,0.3373],"boaz":[3204,0,0.7011],"boisy":[11,0,0.0],"branton":[921,0,0.5929],"brisco":[36,0,0.0],"burchel":[5,0,0.0],"calman":[5,0,0.0],"carvis":[28,0,0.0],"cleaburn":[5,0,0.0],"constancio":[32,0,0.0],"dever":[15,0,0.0],"dial":[10,0,0.0],"dolphis":[5,0,0.0],"dom":[392,0,0.5187],"eberardo":[436,0,0.5279],"eliberto":[360,0,0.5113],"ermond":[5,0,0.0],"fulgencio":[27,0,0.0],"gloster":[11,0,0.0],"gwendell":[5,50,0.0],"haskle":[5,0,0.0],"hermilo":[445,0,0.5297],"hermond":[5,0,0.0],"hollister":[107,25,0.3438],"ion":[300,0,0.4954],"jeffro":[5,0,0.0],"lamond":[735,0,0.5733],"lazzaro":[11,0,0.0],"lerald":[5,0,0.0],"lubby":[5,0,0.0],"lyric":[4544,20418,0.7194],"mederic":[5,0,0.0],"morrey":[5,0,0.0],"mun":[5,0,0.0],"nicasio":[289,0,0.4922],"numan":[74,0,0.0],"olester":[5,0,0.0],"osbaldo":[3078,0,0.6977],"philips":[21,0,0.0],"ranold":[5,0,0.0],"raywood":[68,0,0.0],"richad":[380,0,0.516],"rufes":[5,0,0.0],"sebastion":[917,0,0.5925],"shack":[5,0,0.0],"tircio":[5,0,0.0],"jeannene":[0,683,0.5669],"alayne":[0,1090,0.6075],"jacqualyn":[0,1053,0.6045],"jeanenne":[0,373,0.5143],"caralee":[0,860,0.5869],"aljean":[0,77,0.0],"barbee":[0,113,0.4106],"miladeen":[0,9,0.0],"gloriana":[0,788,0.5793],"heidi":[361,148426,0.9976],"jayce":[43197,1707,0.8951],"loyse":[0,8,0.0],"calleen":[0,267,0.4853],"gailya":[0,196,0.4585],"genene":[0,512,0.5419],"irmagene":[0,12,0.0],"jeneane":[0,568,0.5509],"leanne":[0,29556,0.8941],"marquetta":[0,2130,0.6657],"matina":[0,361,0.5115],"sherlene":[0,1071,0.606],"thenia":[0,12,0.0],"wardean":[0,12,0.0],"burlene":[0,69,0.0],"carmita":[0,187,0.4544],"cathlene":[0,829,0.5837],"christenia":[0,11,0.0],"dolorse":[0,6,0.0],"dorinne":[0,116,0.4129],"durene":[0,92,0.0],"edora":[0,6,0.0],"ellawee":[0,6,0.0],"faydell":[0,6,0.0],"hannelore":[0,260,0.483],"janann":[0,135,0.4261],"janene":[0,3545,0.7099],"jeaninne":[0,210,0.4644],"katrena":[0,1422,0.6306],"lajoyce":[0,321,0.5013],"liana":[0,19856,0.8596],"marrianne":[0,293,0.4934],"marylen":[0,89,0.0],"merilee":[0,1150,0.6121],"pomposa":[0,6,0.0],"roslynn":[0,1304,0.6231],"ruthalee":[0,6,0.0],"valoy":[0,11,0.0],"virsie":[0,6,0.0],"adrena":[0,507,0.541],"almetter":[0,5,0.0],"barbro":[0,18,0.0],"beverlye":[0,43,0.0],"burdie":[0,5,0.0],"caryle":[0,230,0.4723],"charliene":[0,99,0.0],"cherril":[0,61,0.0],"clarann":[0,62,0.0],"cleoma":[0,5,0.0],"clydel":[0,5,0.0],"coella":[0,5,0.0],"delouris":[0,5,0.0],"deloyce":[0,104,0.4034],"devonna":[0,1742,0.6482],"dione":[567,2373,0.5599],"dore":[20,198,0.4248],"dorline":[0,19,0.0],"dorreen":[0,164,0.443],"edmona":[0,5,0.0],"eduviges":[0,11,0.0],"eladia":[0,106,0.4051],"eljean":[0,10,0.0],"ellawease":[0,5,0.0],"enriquetta":[0,5,0.0],"eralia":[0,5,0.0],"ermma":[0,5,0.0],"evalou":[0,16,0.0],"eveyln":[0,18,0.0],"evylene":[0,5,0.0],"farol":[0,15,0.0],"fredine":[0,18,0.0],"gennette":[0,187,0.4544],"geralyn":[0,4875,0.7376],"gwytha":[0,5,0.0],"itsue":[0,5,0.0],"iyla":[0,3473,0.7081],"jacqueleen":[0,67,0.0],"jacquilyn":[0,342,0.5068],"jeaneane":[0,72,0.0],"jeaneen":[0,886,0.5895],"jeanettie":[0,5,0.0],"josina":[0,38,0.0],"karline":[0,47,0.0],"margretha":[0,5,0.0],"marialuisa":[0,637,0.5608],"maryel":[0,41,0.0],"mentha":[0,20,0.0],"mickelena":[0,5,0.0],"natica":[0,39,0.0],"nicanora":[0,5,0.0],"pearletta":[0,5,0.0],"raelene":[0,2445,0.6777],"ranee":[0,1393,0.6288],"romonia":[0,154,0.4375],"rosenia":[0,5,0.0],"shirleyan":[0,32,0.0],"suyeko":[0,5,0.0],"syma":[0,10,0.0],"tereza":[0,790,0.5795],"toma":[632,216,0.4365],"uneeda":[0,31,0.0],"waneita":[0,5,0.0],"wuanita":[0,15,0.0],"zelline":[0,5,0.0],"donnald":[386,0,0.5173],"edsol":[8,0,0.0],"rhys":[13547,849,0.7826],"wolfgang":[3104,0,0.6984],"adelmo":[13,0,0.0],"daune":[64,218,0.3788],"jarvie":[7,0,0.0],"ahmed":[16897,0,0.8456],"argene":[16,0,0.0],"dion":[18758,1244,0.8067],"epitacio":[11,0,0.0],"eulys":[6,0,0.0],"gunter":[390,0,0.5182],"harly":[28,175,0.3978],"heraldo":[44,0,0.0],"ilario":[184,0,0.453],"jinks":[11,0,0.0],"nesby":[16,0,0.0],"otello":[6,0,0.0],"pastor":[146,0,0.4329],"ranulfo":[116,0,0.4129],"vitus":[19,0,0.0],"waide":[11,0,0.0],"walmer":[6,0,0.0],"aladino":[31,0,0.0],"amancio":[77,0,0.0],"autis":[5,0,0.0],"bibiano":[15,0,0.0],"cecelio":[10,0,0.0],"chirles":[5,0,0.0],"christophe":[4476,0,0.7302],"conde":[5,0,0.0],"damasio":[11,0,0.0],"dawayne":[1690,0,0.6456],"demecio":[26,0,0.0],"depriest":[21,0,0.0],"derl":[306,0,0.4971],"derrald":[11,0,0.0],"dunn":[5,0,0.0],"enemencio":[10,0,0.0],"ernist":[10,0,0.0],"frankey":[139,5,0.4167],"fredrico":[196,0,0.4585],"gonsalo":[231,0,0.4727],"grandison":[5,0,0.0],"haymond":[21,0,0.0],"heard":[5,0,0.0],"inacio":[22,0,0.0],"jimy":[161,0,0.4414],"londo":[5,0,0.0],"louard":[5,0,0.0],"muhammad":[20478,0,0.8623],"noman":[103,0,0.4026],"nyles":[910,0,0.5918],"paulus":[21,0,0.0],"raymondo":[369,0,0.5134],"rikio":[5,0,0.0],"robbin":[1794,8590,0.6645],"robrt":[22,0,0.0],"rondel":[454,0,0.5314],"sang":[671,47,0.5338],"sharman":[28,1014,0.5874],"theodoro":[266,0,0.485],"veon":[5,0,0.0],"laquita":[0,6399,0.7612],"joretta":[0,1033,0.6028],"elanda":[0,276,0.4882],"jeralyn":[0,1328,0.6246],"alana":[31,66156,0.9637],"janece":[0,643,0.5616],"allana":[0,3078,0.6977],"alanna":[7,25906,0.8825],"beverely":[0,335,0.505],"sanda":[0,604,0.5562],"duna":[0,8,0.0],"joyann":[0,539,0.5463],"linnette":[0,1144,0.6117],"shirla":[0,159,0.4403],"alisia":[0,3973,0.7198],"caroljean":[0,177,0.4496],"delphinia":[0,23,0.0],"joni":[670,28702,0.8732],"rosilyn":[0,642,0.5615],"artherine":[0,16,0.0],"billa":[0,11,0.0],"carlyon":[0,513,0.542],"cicilia":[0,123,0.418],"clareen":[0,55,0.0],"darma":[0,11,0.0],"deseree":[0,1251,0.6195],"dixiana":[0,12,0.0],"dolories":[0,51,0.0],"earnease":[0,6,0.0],"gaytha":[0,160,0.4408],"jeannean":[0,58,0.0],"joeanne":[0,137,0.4273],"juanetta":[0,247,0.4785],"judi":[0,10341,0.8029],"liz":[0,10045,0.8004],"loudean":[0,11,0.0],"lunelle":[0,6,0.0],"magnola":[0,6,0.0],"marily":[0,866,0.5875],"nonna":[0,98,0.0],"patte":[0,94,0.0],"rhodora":[0,36,0.0],"rhoena":[0,6,0.0],"rosalinde":[0,51,0.0],"rosely":[0,359,0.511],"rosmarie":[0,73,0.0],"royetta":[0,153,0.4369],"roylene":[0,365,0.5125],"sema":[0,213,0.4657],"wyonia":[0,67,0.0],"aleathia":[0,68,0.0],"anamaria":[0,3198,0.701],"annaliese":[0,4848,0.7371],"annelise":[0,6293,0.7598],"arthurene":[0,18,0.0],"berthina":[0,5,0.0],"bonell":[0,5,0.0],"carleene":[0,32,0.0],"chinester":[0,5,0.0],"claranell":[0,5,0.0],"cristel":[0,1000,0.6],"danette":[0,10387,0.8033],"daphney":[0,1506,0.6356],"dewanna":[0,727,0.5723],"doloria":[0,5,0.0],"dolres":[0,5,0.0],"donelia":[0,5,0.0],"dretha":[0,5,0.0],"duveen":[0,5,0.0],"edieth":[0,11,0.0],"erlys":[0,5,0.0],"evajo":[0,5,0.0],"farice":[0,5,0.0],"fernell":[6,5,0.0],"florrine":[0,5,0.0],"geanette":[0,116,0.4129],"gerardine":[0,154,0.4375],"girther":[0,5,0.0],"hercilia":[0,5,0.0],"janeen":[0,6544,0.7632],"jaris":[275,21,0.4592],"jelene":[0,62,0.0],"jerrylene":[0,5,0.0],"jodell":[0,813,0.582],"jonette":[0,1221,0.6173],"joslyn":[28,11161,0.8077],"karna":[6,523,0.5385],"lalar":[0,5,0.0],"lanae":[0,2918,0.693],"lanta":[0,10,0.0],"larane":[0,10,0.0],"lavernia":[0,10,0.0],"leoba":[0,5,0.0],"logene":[0,5,0.0],"lourdine":[0,5,0.0],"lureatha":[0,12,0.0],"lutricia":[0,733,0.573],"marelyn":[0,815,0.5822],"margett":[0,10,0.0],"marlette":[0,272,0.4869],"marlou":[0,49,0.0],"marlus":[0,10,0.0],"marshie":[0,5,0.0],"maudra":[0,5,0.0],"mercedez":[0,3046,0.6967],"merrillyn":[0,77,0.0],"myria":[0,535,0.5457],"nancyann":[0,416,0.5238],"natoma":[0,10,0.0],"reena":[0,2298,0.6723],"rejane":[0,5,0.0],"rhetha":[0,5,0.0],"rhunette":[0,41,0.0],"rinette":[0,10,0.0],"roann":[0,238,0.4753],"roline":[0,11,0.0],"rozine":[0,5,0.0],"sharlotte":[0,1060,0.6051],"shifra":[0,1646,0.6433],"sueann":[0,2152,0.6666],"tila":[0,463,0.5331],"tove":[0,262,0.4837],"urbana":[0,5,0.0],"vandalia":[0,5,0.0],"vaunita":[0,5,0.0],"verian":[0,5,0.0],"verita":[0,165,0.4435],"vernestine":[0,137,0.4273],"zelmadene":[0,5,0.0],"zelmodene":[0,10,0.0],"shogo":[100,0,0.4],"derle":[18,0,0.0],"abdul":[6444,0,0.7618],"alvernon":[13,0,0.0],"carlen":[101,466,0.4526],"laureano":[143,0,0.4311],"simmon":[31,0,0.0],"afred":[6,0,0.0],"choyce":[183,241,0.2987],"fredderick":[134,0,0.4254],"gaetan":[113,0,0.4106],"gib":[51,0,0.0],"grantland":[119,0,0.4151],"jackey":[683,43,0.5383],"kelcy":[77,962,0.5586],"lamuel":[6,0,0.0],"leion":[18,0,0.0],"malford":[6,0,0.0],"nathaneil":[429,0,0.5265],"ozia":[6,0,0.0],"rollon":[6,0,0.0],"royse":[26,10,0.0],"tye":[5186,358,0.7004],"alfanso":[5,0,0.0],"alix":[978,3560,0.5738],"alvert":[5,0,0.0],"antwine":[494,0,0.5387],"barnwell":[5,0,0.0],"burnet":[23,0,0.0],"christoval":[47,0,0.0],"clawson":[5,0,0.0],"cobbie":[5,0,0.0],"darry":[1536,0,0.6373],"daun":[27,778,0.5617],"derrall":[114,0,0.4114],"dewight":[528,0,0.5445],"dominador":[11,0,0.0],"duanne":[109,54,0.2959],"duvall":[77,0,0.0],"elles":[5,0,0.0],"erno":[5,0,0.0],"harel":[189,0,0.4553],"hartzel":[5,0,0.0],"hilberto":[132,0,0.4241],"hylton":[5,0,0.0],"ignasio":[43,0,0.0],"jeffer":[30,0,0.0],"jollie":[10,0,0.0],"keither":[5,0,0.0],"keven":[8737,130,0.778],"ladon":[1254,323,0.5086],"lamberto":[343,0,0.5071],"lancaster":[5,0,0.0],"lenear":[5,0,0.0],"lindwood":[69,0,0.0],"lourence":[5,0,0.0],"markes":[153,0,0.4369],"melborn":[5,0,0.0],"milroy":[5,0,0.0],"nilton":[95,0,0.0],"norward":[16,0,0.0],"oracio":[423,0,0.5253],"phillippe":[218,0,0.4677],"rabert":[5,0,0.0],"rafeal":[925,0,0.5932],"reginold":[522,0,0.5435],"ricard":[419,0,0.5244],"roylee":[83,0,0.0],"savas":[59,0,0.0],"shearl":[10,10,0.0],"sherlock":[78,0,0.0],"skip":[2103,0,0.6646],"sorrell":[36,0,0.0],"stetson":[12932,84,0.8176],"zacharias":[2044,0,0.6621],"joanie":[0,5486,0.7479],"cherrill":[0,173,0.4476],"jorita":[0,107,0.4059],"enrica":[0,126,0.4201],"joyceann":[0,277,0.4885],"dauna":[0,201,0.4606],"dixianna":[0,7,0.0],"doylene":[0,258,0.4823],"glinda":[0,2547,0.6812],"jacolyn":[0,380,0.516],"jacquita":[0,414,0.5234],"vergean":[0,7,0.0],"babbette":[0,126,0.4201],"bertena":[0,6,0.0],"beverlyann":[0,140,0.4292],"braulia":[0,6,0.0],"cela":[0,90,0.0],"charlett":[0,278,0.4888],"deann":[0,10188,0.8016],"eleuteria":[0,6,0.0],"enedelia":[0,688,0.5675],"gaylene":[0,2570,0.682],"gwynneth":[0,255,0.4813],"jalaine":[0,164,0.443],"jennielee":[0,6,0.0],"jerie":[0,300,0.4954],"jerilyn":[0,5244,0.7439],"joanmarie":[0,236,0.4746],"joean":[0,58,0.0],"lajeanne":[0,12,0.0],"lequita":[0,552,0.5484],"luray":[0,27,0.0],"madene":[0,11,0.0],"maralene":[0,42,0.0],"micki":[33,2654,0.6774],"myrleen":[0,11,0.0],"neeka":[0,246,0.4782],"olivama":[0,6,0.0],"shanna":[88,28277,0.8878],"virgean":[0,6,0.0],"airlene":[0,5,0.0],"aldoris":[0,5,0.0],"altermease":[0,5,0.0],"ardilia":[0,5,0.0],"bettsy":[0,24,0.0],"bonda":[0,53,0.0],"calonia":[0,5,0.0],"carolie":[0,93,0.0],"christin":[1018,11199,0.7493],"cleonia":[0,5,0.0],"clotell":[0,5,0.0],"costello":[61,5,0.0],"dava":[0,1482,0.6342],"dionne":[440,9845,0.7681],"donnette":[0,1210,0.6166],"earthalee":[0,11,0.0],"fabia":[0,21,0.0],"fedelia":[0,5,0.0],"felipita":[0,5,0.0],"freya":[0,18062,0.8514],"geneil":[0,5,0.0],"gere":[11,22,0.0],"gracye":[0,32,0.0],"inna":[0,550,0.5481],"jackquline":[0,571,0.5513],"jeanean":[0,196,0.4585],"jelaine":[0,48,0.0],"jennylee":[0,101,0.4009],"jerralee":[0,5,0.0],"jerris":[145,105,0.2782],"joelyn":[0,735,0.5733],"joen":[71,34,0.2733],"joette":[0,2000,0.6602],"jola":[0,94,0.0],"jonetta":[0,901,0.5909],"joyice":[0,188,0.4548],"justeen":[0,258,0.4823],"kuniko":[0,5,0.0],"larrine":[0,5,0.0],"liria":[0,27,0.0],"lueva":[0,5,0.0],"marcalene":[0,10,0.0],"marceleen":[0,10,0.0],"marclene":[0,5,0.0],"mareda":[0,10,0.0],"maridel":[0,69,0.0],"memorie":[0,438,0.5283],"merium":[0,5,0.0],"merlinda":[0,530,0.5449],"merrian":[0,11,0.0],"mirta":[0,860,0.5869],"omagene":[0,13,0.0],"ranae":[0,2439,0.6774],"randi":[1136,29627,0.8645],"renella":[0,149,0.4346],"ruenell":[0,5,0.0],"seline":[0,529,0.5447],"sharlot":[0,66,0.0],"soveida":[0,10,0.0],"theressia":[0,5,0.0],"unia":[0,5,0.0],"valette":[0,16,0.0],"vicey":[0,5,0.0],"wera":[0,10,0.0],"willodine":[0,10,0.0],"wydell":[50,5,0.0],"wyma":[0,5,0.0],"zandra":[0,3547,0.71],"zenolia":[0,5,0.0],"rockne":[398,0,0.52],"darle":[57,10,0.0],"shirrell":[31,68,0.0],"darriel":[600,154,0.4579],"leroyce":[7,0,0.0],"rudi":[753,475,0.3789],"bucky":[1027,0,0.6023],"crisoforo":[40,0,0.0],"delynn":[99,719,0.512],"garey":[1457,0,0.6327],"herdis":[13,0,0.0],"honorato":[11,0,0.0],"jarman":[76,0,0.0],"jerral":[276,0,0.4882],"pryce":[1234,50,0.5975],"sebern":[13,0,0.0],"shawn":[306134,33040,0.9026],"sherill":[61,1019,0.5724],"vergal":[6,0,0.0],"alegandro":[444,0,0.5295],"alonzia":[5,17,0.0],"arnald":[15,0,0.0],"bural":[5,0,0.0],"clynton":[15,0,0.0],"conny":[159,413,0.3982],"darlo":[10,0,0.0],"delray":[478,0,0.5359],"dowe":[5,0,0.0],"ebward":[5,0,0.0],"eliud":[1575,0,0.6395],"esmael":[84,0,0.0],"ethredge":[5,0,0.0],"fernley":[5,0,0.0],"frumencio":[5,0,0.0],"gaylin":[110,81,0.2627],"gaynard":[5,0,0.0],"hayword":[5,0,0.0],"huburt":[5,0,0.0],"ireneo":[21,0,0.0],"jamil":[7432,254,0.7515],"jamison":[20467,1931,0.795],"jerol":[130,10,0.3986],"lancy":[31,0,0.0],"lazar":[787,0,0.5792],"lemond":[112,0,0.4098],"lendal":[27,0,0.0],"lendel":[38,0,0.0],"lendol":[5,0,0.0],"lethel":[5,0,0.0],"lurton":[5,0,0.0],"lysander":[703,0,0.5694],"markley":[24,0,0.0],"marvon":[112,0,0.4098],"murrill":[10,0,0.0],"navor":[15,0,0.0],"prajedes":[5,0,0.0],"regenald":[50,0,0.0],"rives":[10,0,0.0],"ronney":[1501,0,0.6353],"sacramento":[81,0,0.0],"thames":[5,0,0.0],"vanus":[5,0,0.0],"worthie":[5,0,0.0],"carolann":[0,5646,0.7503],"jenine":[0,2257,0.6707],"gwili":[0,19,0.0],"sharyn":[0,7239,0.7719],"dolorese":[0,9,0.0],"marlane":[0,697,0.5686],"darylene":[0,49,0.0],"estherlene":[0,13,0.0],"carmaletta":[0,17,0.0],"donzetta":[0,40,0.0],"gerlean":[0,64,0.0],"glorietta":[0,57,0.0],"grethe":[0,7,0.0],"haroldean":[12,7,0.0],"karole":[0,947,0.5953],"kristin":[1638,179286,0.9909],"loann":[0,338,0.5058],"niki":[229,7035,0.7479],"ravenna":[0,531,0.545],"revonda":[0,767,0.577],"ruthine":[0,24,0.0],"sharla":[0,6436,0.7617],"suanne":[0,1401,0.6293],"toya":[23,3969,0.7161],"angeles":[77,3379,0.6919],"bobbi":[64,24108,0.8743],"camillia":[0,1469,0.6334],"charlane":[0,237,0.4749],"connee":[0,216,0.4669],"danita":[0,7516,0.7752],"donalyn":[0,296,0.4943],"dorrene":[0,90,0.0],"edelia":[0,50,0.0],"evanjelina":[0,56,0.0],"floydia":[0,6,0.0],"geraleen":[0,6,0.0],"harlean":[0,184,0.453],"janeane":[0,451,0.5308],"jann":[143,2138,0.6295],"jerrye":[0,148,0.4341],"jouette":[0,6,0.0],"joyleen":[0,33,0.0],"karyn":[5,14135,0.8298],"laqueta":[0,426,0.5259],"lovesta":[0,11,0.0],"lubov":[0,17,0.0],"marisue":[0,157,0.4392],"marthel":[0,17,0.0],"merdie":[0,6,0.0],"roxann":[0,8879,0.7897],"tretha":[0,16,0.0],"vondalee":[0,24,0.0],"wyvonna":[0,26,0.0],"albesa":[0,15,0.0],"almarine":[0,10,0.0],"alura":[0,658,0.5636],"anni":[0,607,0.5566],"anthea":[0,830,0.5838],"argelia":[0,835,0.5843],"arizonia":[0,5,0.0],"athie":[0,5,0.0],"avalyn":[0,3560,0.7103],"clotie":[0,5,0.0],"conna":[0,95,0.0],"danne":[175,479,0.4124],"daralene":[0,20,0.0],"davetta":[0,543,0.547],"deniece":[0,1162,0.613],"earsley":[0,5,0.0],"ertie":[0,5,0.0],"ilomae":[0,5,0.0],"ilomay":[0,17,0.0],"janetlee":[0,10,0.0],"jannell":[0,895,0.5904],"jerane":[0,5,0.0],"joycelene":[0,25,0.0],"jurlene":[0,44,0.0],"laquitta":[0,707,0.5699],"leilia":[0,27,0.0],"levella":[0,5,0.0],"leverda":[0,5,0.0],"maralou":[0,5,0.0],"marial":[0,42,0.0],"marthaann":[0,5,0.0],"marthalene":[0,5,0.0],"marthell":[0,10,0.0],"merelene":[0,22,0.0],"monalee":[0,34,0.0],"nancilee":[0,11,0.0],"narvelle":[0,5,0.0],"nea":[0,401,0.5206],"patrcia":[0,99,0.0],"ramonita":[0,522,0.5435],"rayna":[0,13038,0.823],"renea":[0,4327,0.7272],"richetta":[0,212,0.4653],"roetta":[0,27,0.0],"sharee":[0,3871,0.7176],"sheilia":[0,384,0.5169],"shirline":[0,180,0.4511],"valle":[0,34,0.0],"vereda":[0,5,0.0],"wannell":[0,10,0.0],"yvonnie":[0,488,0.5377],"zelder":[0,5,0.0],"alvyn":[33,0,0.0],"avelardo":[335,0,0.505],"mannon":[7,5,0.0],"wenford":[12,0,0.0],"cebron":[6,0,0.0],"delon":[1361,38,0.6121],"ermilo":[11,0,0.0],"frink":[11,0,0.0],"ikie":[35,0,0.0],"laramie":[1175,1590,0.3958],"lonel":[6,0,0.0],"mylan":[1355,424,0.4951],"myrlen":[6,0,0.0],"pharis":[23,0,0.0],"terril":[513,83,0.4778],"alvarez":[48,0,0.0],"arvene":[5,0,0.0],"avel":[435,0,0.5277],"beau":[60409,951,0.9427],"clardy":[5,0,0.0],"colmon":[5,0,0.0],"darhl":[5,0,0.0],"deryle":[47,0,0.0],"dirck":[102,0,0.4017],"earven":[5,0,0.0],"eudon":[10,0,0.0],"ferrill":[10,0,0.0],"gailon":[15,0,0.0],"hurdis":[5,0,0.0],"jurgen":[443,0,0.5293],"kenner":[531,0,0.545],"larmon":[10,0,0.0],"laten":[5,0,0.0],"linder":[12,302,0.4803],"lolan":[20,0,0.0],"lozell":[5,0,0.0],"murton":[20,0,0.0],"narsiso":[5,0,0.0],"norlyn":[20,0,0.0],"presiliano":[15,0,0.0],"richar":[310,0,0.4983],"rolph":[10,0,0.0],"romy":[224,2890,0.6484],"rosevell":[5,0,0.0],"rosvelt":[16,0,0.0],"shay":[4947,8042,0.5094],"therdore":[10,0,0.0],"youel":[5,0,0.0],"gayleen":[0,565,0.5504],"sharlie":[0,342,0.5068],"koleta":[0,19,0.0],"ellender":[0,30,0.0],"garnieta":[0,8,0.0],"jette":[6,148,0.4205],"deonne":[47,437,0.4848],"dorylee":[0,7,0.0],"earleane":[0,20,0.0],"harolyn":[0,577,0.5522],"kimberly":[4273,845374,0.995],"lia":[15,26966,0.8857],"patsyann":[0,7,0.0],"perilla":[0,7,0.0],"ardoth":[0,6,0.0],"betteann":[0,37,0.0],"birta":[0,19,0.0],"carollyn":[0,207,0.4632],"carrolyn":[0,288,0.4919],"cloudia":[0,12,0.0],"earnistine":[0,6,0.0],"earstine":[0,11,0.0],"jenean":[0,798,0.5804],"jenifer":[22,25536,0.8807],"jennalee":[0,721,0.5716],"joleta":[0,53,0.0],"jonel":[362,328,0.2979],"judyth":[0,902,0.591],"kayla":[574,345723,0.9983],"loana":[0,86,0.0],"loida":[0,695,0.5684],"marchita":[0,39,0.0],"mardean":[0,45,0.0],"mia":[380,299044,0.9987],"michaelene":[0,1429,0.631],"milagros":[5,10333,0.8025],"rollene":[0,32,0.0],"sharalyn":[0,386,0.5173],"sherilyn":[0,3930,0.7189],"sherron":[526,2947,0.6009],"tema":[0,181,0.4515],"waynette":[0,589,0.554],"yvone":[0,150,0.4352],"alnita":[0,140,0.4292],"alphine":[0,5,0.0],"althena":[0,17,0.0],"andria":[60,8922,0.7854],"angilee":[0,44,0.0],"anmarie":[0,390,0.5182],"ardala":[0,12,0.0],"beverlyn":[0,554,0.5487],"blondean":[0,11,0.0],"burnestine":[0,21,0.0],"claudelle":[0,30,0.0],"claudetta":[0,286,0.4913],"clytia":[0,5,0.0],"corazon":[0,301,0.4957],"dede":[0,1613,0.6415],"deidre":[11,14666,0.8327],"devonne":[698,958,0.3724],"dewanda":[0,694,0.5683],"elmae":[0,5,0.0],"eloris":[0,12,0.0],"ethil":[0,5,0.0],"eustacia":[0,156,0.4386],"gearlene":[0,78,0.0],"gereline":[0,5,0.0],"graceann":[0,1024,0.6021],"jacqualin":[0,82,0.0],"janel":[32,12015,0.814],"janise":[0,2076,0.6634],"jannis":[0,410,0.5226],"jewelean":[0,26,0.0],"jolaine":[0,259,0.4827],"joselyn":[5,18067,0.8512],"judythe":[0,160,0.4408],"karon":[3177,6208,0.5255],"laquetta":[0,1031,0.6027],"lartha":[0,5,0.0],"latricia":[0,5621,0.75],"louan":[0,76,0.0],"marliene":[0,23,0.0],"marthanne":[0,20,0.0],"marvalee":[0,29,0.0],"melinee":[0,5,0.0],"melodee":[0,2709,0.6866],"melodie":[0,10409,0.8035],"merdice":[0,5,0.0],"michaele":[21,1816,0.6454],"minnia":[0,5,0.0],"murleen":[0,16,0.0],"myretta":[0,16,0.0],"nelida":[0,1520,0.6364],"orcella":[0,5,0.0],"paticia":[0,215,0.4665],"paublita":[0,5,0.0],"raymell":[10,11,0.0],"reata":[0,155,0.4381],"rilma":[0,5,0.0],"sedell":[0,5,0.0],"suzi":[0,1398,0.6291],"sydnie":[0,5178,0.7428],"toleda":[0,5,0.0],"valaida":[0,17,0.0],"verbia":[0,5,0.0],"vernetha":[0,35,0.0],"vondella":[0,13,0.0],"willietta":[0,5,0.0],"skippy":[219,0,0.4681],"franklen":[58,0,0.0],"cloyse":[20,0,0.0],"cobert":[13,0,0.0],"dirl":[12,0,0.0],"earskin":[12,0,0.0],"vondal":[7,0,0.0],"ansell":[6,0,0.0],"delayne":[56,629,0.5208],"elisandro":[390,0,0.5182],"guerry":[145,0,0.4323],"gyles":[6,0,0.0],"kyran":[3081,133,0.6724],"larenzo":[1131,0,0.6107],"lorenzia":[11,0,0.0],"paull":[17,0,0.0],"shane":[192143,3583,0.9817],"valdean":[6,5,0.0],"ainsworth":[5,0,0.0],"alessandro":[11394,0,0.8113],"algin":[33,0,0.0],"auggie":[218,5,0.4591],"avrum":[673,0,0.5656],"bubby":[15,0,0.0],"cherles":[5,0,0.0],"delain":[5,30,0.0],"denford":[20,0,0.0],"doneld":[5,0,0.0],"dorel":[5,0,0.0],"durland":[5,0,0.0],"ebby":[5,28,0.0],"euris":[10,0,0.0],"eutiquio":[10,0,0.0],"everrette":[5,0,0.0],"frankline":[5,0,0.0],"fransico":[826,0,0.5834],"garrel":[56,0,0.0],"graeme":[2849,0,0.6909],"hoyd":[5,0,0.0],"izel":[390,1463,0.516],"jairus":[2691,0,0.686],"kalvin":[6616,0,0.7641],"luchious":[5,0,0.0],"orlis":[5,0,0.0],"raymound":[156,0,0.4386],"rory":[34067,12243,0.6864],"rudloph":[10,0,0.0],"sedrick":[3511,0,0.7091],"shadrick":[540,0,0.5465],"sheril":[5,704,0.5661],"sherl":[5,349,0.5026],"willum":[5,0,0.0],"carollee":[0,263,0.484],"janean":[0,1567,0.639],"joellyn":[0,861,0.587],"sheron":[389,3379,0.6414],"barbarann":[0,294,0.4937],"mikell":[1524,534,0.4907],"rieta":[0,20,0.0],"darlee":[0,18,0.0],"jodelle":[0,324,0.5021],"nancylou":[0,19,0.0],"sharilyn":[0,1790,0.6506],"tawana":[0,6545,0.7632],"barara":[0,23,0.0],"barbaraann":[0,670,0.5652],"deronda":[0,387,0.5175],"dyann":[0,994,0.5995],"glennda":[0,561,0.5498],"ivera":[0,14,0.0],"jenene":[0,543,0.547],"marylan":[0,76,0.0],"sharen":[0,3782,0.7155],"angelean":[0,35,0.0],"barabara":[0,181,0.4515],"berlinda":[0,960,0.5965],"corretta":[0,131,0.4235],"delaris":[0,6,0.0],"derene":[0,6,0.0],"elana":[0,8809,0.789],"ervene":[0,6,0.0],"genna":[0,3031,0.6963],"gwenlyn":[0,139,0.4286],"gwynette":[0,29,0.0],"huguette":[0,22,0.0],"jackaline":[0,39,0.0],"janalee":[0,1033,0.6028],"kari":[908,59607,0.942],"karilyn":[0,897,0.5906],"kayleen":[0,7925,0.7798],"kittye":[0,12,0.0],"loisteen":[0,34,0.0],"louvonia":[0,11,0.0],"luebertha":[0,16,0.0],"maralynn":[0,37,0.0],"maritta":[0,121,0.4166],"myrline":[0,6,0.0],"nadina":[0,448,0.5303],"nadra":[0,317,0.5002],"narva":[0,17,0.0],"natasha":[285,97446,0.9951],"noelia":[0,7497,0.775],"raeleen":[0,551,0.5482],"rheata":[0,6,0.0],"ria":[0,4036,0.7212],"rozzie":[0,12,0.0],"sandi":[21,10096,0.7993],"sandie":[5,2714,0.6856],"saralou":[0,17,0.0],"sharie":[0,1976,0.6592],"tobi":[600,2923,0.5886],"vonnell":[0,18,0.0],"ammer":[5,5,0.0],"arlane":[0,5,0.0],"autra":[0,5,0.0],"avelia":[0,22,0.0],"barbarajean":[0,231,0.4727],"birgit":[0,280,0.4894],"boncile":[0,5,0.0],"carmeletta":[0,10,0.0],"carolanne":[0,1171,0.6137],"caroleann":[0,84,0.0],"cheryll":[0,2628,0.6839],"christyne":[0,245,0.4778],"daloris":[0,5,0.0],"danetta":[0,891,0.59],"debrah":[0,4404,0.7288],"delmarie":[0,54,0.0],"deyonne":[0,5,0.0],"donya":[265,2328,0.613],"doristine":[0,140,0.4292],"dorlee":[0,5,0.0],"elzenia":[0,5,0.0],"eulanda":[0,136,0.4267],"gayna":[0,106,0.4051],"genee":[0,281,0.4897],"geniece":[0,76,0.0],"glennora":[0,5,0.0],"glyna":[0,5,0.0],"glynice":[0,5,0.0],"gwendolin":[0,79,0.0],"hubbie":[0,5,0.0],"jaci":[0,5096,0.7414],"jaynell":[0,130,0.4228],"jeneal":[0,71,0.0],"jeralene":[0,49,0.0],"jeretta":[0,46,0.0],"jeweldene":[0,5,0.0],"joanann":[0,79,0.0],"joene":[0,94,0.0],"jolyne":[0,351,0.5091],"jonquil":[55,214,0.3866],"juleen":[0,429,0.5265],"laine":[2029,3904,0.4966],"lenorah":[0,88,0.0],"levata":[0,5,0.0],"lewana":[0,26,0.0],"lianne":[0,2998,0.6954],"loanne":[0,130,0.4228],"lorainne":[0,40,0.0],"lulubell":[0,10,0.0],"madrene":[0,5,0.0],"mariene":[0,84,0.0],"marisa":[66,48683,0.9363],"marthenia":[0,16,0.0],"marvia":[0,183,0.4525],"miquela":[0,365,0.5125],"moonyean":[0,5,0.0],"morlene":[0,15,0.0],"nomia":[0,15,0.0],"pati":[0,403,0.5211],"rayann":[5,1629,0.6407],"rosalena":[0,261,0.4833],"saranne":[0,80,0.0],"sarha":[0,438,0.5283],"selva":[0,54,0.0],"sharol":[0,1015,0.6013],"sharolyn":[0,1367,0.6272],"tammy":[1392,331974,0.9958],"tency":[0,5,0.0],"trillis":[0,5,0.0],"trisha":[53,40259,0.9199],"vae":[0,5,0.0],"vallee":[6,47,0.0],"vasilia":[0,107,0.4059],"verdeen":[0,5,0.0],"veree":[0,5,0.0],"verree":[0,11,0.0],"vonne":[0,89,0.0],"warrine":[0,5,0.0],"wilella":[0,5,0.0],"ysela":[0,186,0.4539],"franchot":[223,0,0.4697],"joenathan":[312,0,0.4988],"derryl":[901,15,0.5827],"ranny":[275,5,0.4807],"buzzy":[48,0,0.0],"cardis":[6,0,0.0],"carloss":[6,0,0.0],"cleophes":[6,0,0.0],"daryll":[1697,17,0.6404],"delphus":[17,0,0.0],"dockie":[6,0,0.0],"eliasar":[280,0,0.4894],"horst":[83,0,0.0],"lavalle":[121,5,0.4034],"myran":[87,5,0.0],"pettus":[6,0,0.0],"ronell":[1615,326,0.5472],"shelvie":[6,294,0.4855],"smitty":[90,0,0.0],"valdon":[16,0,0.0],"wendyl":[11,0,0.0],"alvertis":[17,0,0.0],"brannon":[4694,116,0.7187],"buzz":[273,0,0.4872],"carveth":[5,0,0.0],"central":[5,0,0.0],"codell":[10,0,0.0],"cubert":[5,0,0.0],"dairl":[50,0,0.0],"delloyd":[16,0,0.0],"denon":[51,0,0.0],"dougles":[300,0,0.4954],"durwin":[632,0,0.5601],"edgardo":[5987,0,0.7554],"galdino":[125,0,0.4194],"garwin":[22,0,0.0],"gilverto":[75,0,0.0],"goldmon":[5,0,0.0],"jacke":[5,0,0.0],"jaycee":[1558,10893,0.7166],"jearold":[37,0,0.0],"karry":[648,1200,0.4242],"kirke":[71,0,0.0],"kurtis":[18089,25,0.8504],"leeon":[124,0,0.4187],"leve":[5,0,0.0],"lynal":[5,0,0.0],"mcray":[5,0,0.0],"narvin":[5,0,0.0],"navarro":[245,0,0.4778],"normen":[10,0,0.0],"richand":[5,0,0.0],"rihcard":[10,0,0.0],"sherald":[40,110,0.3192],"shirrel":[17,10,0.0],"vergel":[5,0,0.0],"wayford":[5,0,0.0],"windol":[11,0,0.0],"treasure":[198,8410,0.7689],"daneen":[0,1389,0.6285],"meris":[0,75,0.0],"danice":[0,695,0.5684],"nerita":[0,14,0.0],"carilyn":[0,425,0.5257],"monya":[0,663,0.5643],"shelda":[0,569,0.551],"caral":[0,70,0.0],"rheeta":[0,9,0.0],"rozann":[0,285,0.491],"dewilla":[0,14,0.0],"ieda":[0,8,0.0],"serita":[0,1196,0.6155],"terryl":[740,717,0.3213],"bernardette":[0,232,0.4731],"correna":[0,327,0.5029],"delmira":[0,59,0.0],"deluvina":[0,17,0.0],"gaylee":[0,56,0.0],"janyth":[0,122,0.4173],"jeraldene":[0,45,0.0],"noreta":[0,91,0.0],"normandie":[0,50,0.0],"wenda":[0,1001,0.6001],"willistine":[0,88,0.0],"almatine":[0,6,0.0],"alzonia":[0,6,0.0],"anieta":[0,6,0.0],"barta":[0,6,0.0],"chandra":[66,17282,0.8446],"dixielee":[0,36,0.0],"ellarene":[0,6,0.0],"felicity":[6,17899,0.8503],"francia":[0,873,0.5882],"freddia":[0,6,0.0],"gayanne":[0,78,0.0],"gwenna":[0,319,0.5008],"jacki":[5,3518,0.7084],"janese":[0,1111,0.6091],"jaquetta":[0,776,0.578],"jerldean":[0,11,0.0],"joena":[0,6,0.0],"jolane":[0,197,0.4589],"jolynn":[0,4603,0.7326],"karmen":[15,7167,0.7696],"loistene":[0,19,0.0],"lureta":[0,6,0.0],"marelene":[0,16,0.0],"marjo":[0,201,0.4606],"merilou":[0,12,0.0],"rosalynn":[0,3402,0.7063],"rovella":[0,21,0.0],"shelba":[5,2136,0.6646],"sherie":[0,5010,0.74],"su":[33,691,0.5459],"valeen":[0,140,0.4292],"adoria":[0,116,0.4129],"aillene":[0,5,0.0],"allaire":[0,47,0.0],"alrita":[0,5,0.0],"alycia":[0,10143,0.8012],"annitta":[0,81,0.0],"arlynne":[0,52,0.0],"aviva":[0,3552,0.7101],"berteal":[0,5,0.0],"caril":[0,27,0.0],"carolena":[0,469,0.5342],"carrole":[0,51,0.0],"chrisanthe":[0,5,0.0],"clareatha":[0,10,0.0],"dalice":[0,33,0.0],"deedee":[0,3478,0.7083],"dennise":[83,3481,0.6938],"donette":[0,1091,0.6076],"donnarae":[0,78,0.0],"durlene":[0,5,0.0],"earlina":[0,11,0.0],"ethelrine":[0,10,0.0],"floretha":[0,20,0.0],"geroline":[0,5,0.0],"gurlie":[0,5,0.0],"ivra":[0,5,0.0],"jonne":[0,82,0.0],"josiephene":[0,5,0.0],"jovanna":[0,3182,0.7005],"juanette":[0,135,0.4261],"karis":[104,6648,0.7541],"kerin":[272,1318,0.5307],"lajuanda":[0,92,0.0],"levone":[117,34,0.3377],"lodine":[0,5,0.0],"luwana":[0,320,0.501],"lynnell":[0,584,0.5533],"mairlyn":[0,74,0.0],"majorlynn":[0,5,0.0],"marca":[0,285,0.491],"mariaelena":[0,2009,0.6606],"marqueen":[0,5,0.0],"marsie":[0,32,0.0],"marvena":[0,109,0.4075],"marylon":[0,128,0.4214],"merrlyn":[0,5,0.0],"michaelyn":[0,705,0.5696],"nanalee":[0,5,0.0],"nessa":[0,1304,0.6231],"norda":[0,5,0.0],"paquita":[0,188,0.4548],"quita":[0,140,0.4292],"reaner":[0,5,0.0],"renette":[0,567,0.5507],"romanita":[0,72,0.0],"ronetta":[0,703,0.5694],"rosalean":[0,5,0.0],"rosel":[0,11,0.0],"sandee":[0,1727,0.6475],"saralie":[0,5,0.0],"sarann":[0,86,0.0],"sharlyn":[0,1482,0.6342],"sharma":[0,434,0.5275],"shela":[0,1398,0.6291],"shelah":[0,510,0.5415],"sheree":[0,13554,0.8264],"shirli":[0,22,0.0],"stana":[0,147,0.4335],"thresea":[0,182,0.452],"vonell":[0,5,0.0],"walterene":[0,5,0.0],"wynoma":[0,5,0.0],"wyvonia":[0,56,0.0],"yvonda":[0,343,0.5071],"haile":[222,847,0.48],"ronnald":[723,0,0.5718],"deuel":[13,0,0.0],"dizzy":[19,0,0.0],"kip":[8465,154,0.773],"shaun":[70398,3129,0.9319],"dinnis":[86,0,0.0],"welbert":[7,0,0.0],"benjie":[917,31,0.5759],"blynn":[11,0,0.0],"burnam":[6,0,0.0],"corrin":[152,1975,0.618],"gailord":[6,0,0.0],"harrill":[12,0,0.0],"josep":[155,0,0.4381],"lindol":[6,0,0.0],"marle":[6,46,0.0],"medric":[6,0,0.0],"narmon":[6,0,0.0],"ravon":[906,264,0.4752],"thamas":[89,0,0.0],"alfornia":[20,0,0.0],"arto":[15,0,0.0],"bobo":[5,0,0.0],"cairl":[5,0,0.0],"calvester":[5,0,0.0],"caron":[1028,3179,0.5477],"cayce":[593,1141,0.4263],"conred":[5,0,0.0],"corman":[5,0,0.0],"darvel":[30,0,0.0],"dohn":[98,0,0.0],"fester":[5,0,0.0],"harril":[5,0,0.0],"henrik":[4018,0,0.7208],"jakey":[5,0,0.0],"javis":[863,5,0.5843],"jerroll":[36,0,0.0],"kin":[271,6,0.4779],"levarn":[15,6,0.0],"lynward":[27,0,0.0],"malin":[230,824,0.4726],"manfried":[11,0,0.0],"nelo":[19,0,0.0],"norlin":[15,0,0.0],"norm":[563,0,0.5501],"pacifico":[5,0,0.0],"pieter":[1006,0,0.6005],"silberio":[22,0,0.0],"stjulian":[5,0,0.0],"theodies":[21,0,0.0],"therrell":[5,0,0.0],"waitus":[5,0,0.0],"yazzie":[5,0,0.0],"shelva":[14,1117,0.6031],"shelvia":[0,400,0.5204],"dwanna":[0,444,0.5295],"shelbie":[0,5566,0.7491],"dellene":[0,92,0.0],"durelle":[96,23,0.3349],"karan":[1500,3450,0.515],"shelbia":[0,147,0.4335],"janace":[0,184,0.453],"mardee":[0,255,0.4813],"sherline":[0,356,0.5103],"kendra":[350,98110,0.9951],"marti":[233,4310,0.694],"meridel":[0,38,0.0],"merleen":[0,113,0.4106],"wyonna":[0,49,0.0],"annamaria":[0,3755,0.7149],"arolyn":[0,7,0.0],"dyanne":[0,991,0.5992],"gennell":[0,179,0.4506],"georgieanna":[0,17,0.0],"glo":[0,17,0.0],"rochella":[0,253,0.4806],"sheryll":[0,1558,0.6385],"shriley":[0,104,0.4034],"verilea":[0,7,0.0],"wyomia":[0,30,0.0],"wyonne":[0,12,0.0],"arbadella":[0,66,0.0],"caroly":[0,112,0.4098],"charlen":[0,80,0.0],"clarabeth":[0,6,0.0],"dewana":[0,551,0.5482],"doranne":[0,110,0.4083],"jacquolyn":[0,12,0.0],"jalna":[0,15,0.0],"jenita":[0,473,0.535],"joanette":[0,367,0.5129],"joeline":[0,78,0.0],"jolinda":[0,1003,0.6003],"joycelin":[0,152,0.4364],"joylyn":[0,400,0.5204],"judee":[0,507,0.541],"ladawn":[0,1568,0.6391],"lafay":[0,11,0.0],"lurae":[0,95,0.0],"marlaine":[0,361,0.5115],"patriciann":[0,69,0.0],"roselynn":[0,2837,0.6906],"sharan":[53,1190,0.5925],"sherleen":[0,174,0.4481],"sirley":[0,35,0.0],"suann":[0,751,0.5751],"suzane":[0,314,0.4994],"thayle":[0,6,0.0],"adriane":[274,6146,0.729],"annease":[0,5,0.0],"arbedella":[0,20,0.0],"arbra":[0,18,0.0],"arlowene":[0,5,0.0],"barbie":[0,4168,0.724],"bartie":[0,5,0.0],"careen":[0,213,0.4657],"chelsie":[0,13837,0.8282],"clairice":[0,25,0.0],"cleopatria":[0,5,0.0],"dannette":[0,2155,0.6667],"darlen":[0,184,0.453],"darlie":[0,5,0.0],"daveen":[0,36,0.0],"delcy":[0,16,0.0],"devoria":[0,50,0.0],"donah":[0,29,0.0],"dorelle":[0,15,0.0],"earnestean":[0,5,0.0],"eduvina":[0,19,0.0],"elreta":[0,5,0.0],"ermila":[0,41,0.0],"fayerene":[0,5,0.0],"garlene":[0,71,0.0],"janas":[5,41,0.0],"janelda":[0,59,0.0],"jeni":[0,2856,0.6912],"jerrene":[0,20,0.0],"jerrilyn":[0,1277,0.6212],"joal":[97,25,0.3318],"jolyn":[0,1977,0.6592],"joyanne":[0,276,0.4882],"joyceline":[0,92,0.0],"judeen":[0,96,0.0],"karrie":[0,9863,0.7988],"konnie":[0,1089,0.6074],"lagretta":[0,96,0.0],"laurann":[0,218,0.4677],"leahrae":[0,5,0.0],"lucyann":[0,184,0.453],"madra":[0,26,0.0],"marissa":[270,120711,0.9978],"marlita":[0,212,0.4653],"marnella":[0,5,0.0],"maudrey":[0,17,0.0],"melvalene":[0,11,0.0],"merrily":[0,1032,0.6027],"nary":[0,153,0.4369],"nereida":[6,3697,0.7126],"oatha":[0,5,0.0],"ok":[0,35,0.0],"omma":[0,5,0.0],"oralene":[0,5,0.0],"patritia":[0,5,0.0],"peri":[10,2442,0.6751],"raeann":[0,3893,0.7181],"renay":[24,1936,0.6504],"roanne":[0,396,0.5195],"ronni":[60,3562,0.7],"rosaland":[0,344,0.5073],"rowenna":[0,23,0.0],"sallyanne":[0,119,0.4151],"selvia":[0,16,0.0],"shelvey":[0,46,0.0],"sherin":[0,404,0.5213],"sherlyn":[8,8880,0.789],"sherryl":[5,4104,0.7219],"soyla":[0,204,0.4619],"suellen":[0,3342,0.7048],"sydne":[0,876,0.5885],"thaylia":[0,5,0.0],"tomma":[0,106,0.4051],"veneita":[0,11,0.0],"vianne":[0,398,0.52],"watha":[0,5,0.0],"yong":[301,124,0.3723],"renny":[654,117,0.4898],"rolyn":[23,0,0.0],"arty":[158,0,0.4397],"darren":[103751,569,0.9945],"alexzander":[7387,0,0.7737],"benjy":[354,0,0.5098],"damien":[63807,261,0.9574],"darley":[6,12,0.0],"darryll":[1366,0,0.6271],"levorn":[122,19,0.3719],"reg":[209,0,0.464],"aidan":[117370,2719,0.9774],"alexie":[272,1627,0.5618],"almous":[5,0,0.0],"baynard":[10,0,0.0],"branford":[59,0,0.0],"daril":[119,0,0.4151],"darryle":[1431,0,0.6311],"durie":[5,0,0.0],"edrick":[1967,0,0.6588],"fedrick":[72,0,0.0],"garlond":[5,0,0.0],"guin":[5,0,0.0],"jace":[88418,859,0.9806],"jerod":[6009,0,0.7558],"jery":[116,0,0.4129],"kinnith":[22,0,0.0],"larell":[378,5,0.5099],"lenuel":[10,0,0.0],"manifred":[5,0,0.0],"pharoah":[668,0,0.565],"renn":[344,237,0.3273],"theodie":[5,0,0.0],"deeann":[0,2940,0.6937],"noreda":[0,17,0.0],"norrita":[0,16,0.0],"loueen":[0,22,0.0],"kenlyn":[36,255,0.4318],"starlene":[0,1283,0.6216],"kirsten":[212,53119,0.9416],"shirlean":[0,336,0.5053],"wyonda":[0,10,0.0],"caryol":[0,26,0.0],"charon":[216,1001,0.5075],"danielle":[1895,371239,0.9949],"kaylene":[0,5033,0.7404],"nicole":[1965,593691,0.9967],"sonda":[0,717,0.5711],"carreen":[0,72,0.0],"jacklynn":[0,2337,0.6737],"noreeta":[0,8,0.0],"noreita":[0,8,0.0],"noritta":[0,8,0.0],"sandralee":[0,267,0.4853],"sharry":[0,953,0.5958],"sharyl":[0,2631,0.684],"shelma":[0,77,0.0],"dayna":[87,14441,0.8275],"donnalou":[0,7,0.0],"donnita":[0,855,0.5864],"jeneanne":[0,24,0.0],"jodine":[0,515,0.5424],"ladeane":[0,13,0.0],"lei":[31,647,0.5404],"mearlene":[0,7,0.0],"nancyjo":[0,112,0.4098],"roseleen":[0,78,0.0],"scarlett":[46,105996,0.9996],"sherra":[0,897,0.5906],"sueanne":[0,467,0.5339],"wadena":[0,7,0.0],"barabra":[0,54,0.0],"bari":[158,1806,0.6056],"charm":[57,1061,0.5786],"darien":[10851,1849,0.7013],"elenita":[0,34,0.0],"ernell":[0,38,0.0],"glenese":[0,11,0.0],"glenetta":[0,62,0.0],"harleen":[0,1452,0.6324],"jacalyn":[0,5185,0.7429],"jennine":[0,1240,0.6187],"krista":[148,73675,0.9717],"laretha":[0,227,0.4712],"lerae":[0,74,0.0],"lindalee":[0,340,0.5063],"mablean":[0,21,0.0],"maelene":[0,58,0.0],"marshia":[0,295,0.494],"norietta":[0,6,0.0],"norreta":[0,6,0.0],"pattsy":[0,43,0.0],"peggi":[0,723,0.5718],"raedean":[0,58,0.0],"raynelle":[0,226,0.4708],"sandria":[0,655,0.5632],"sharion":[0,796,0.5802],"sheran":[0,567,0.5507],"shirleye":[0,6,0.0],"sonnia":[0,110,0.4083],"tamra":[5,13710,0.8271],"waneeta":[0,6,0.0],"zondra":[0,472,0.5348],"anglee":[0,5,0.0],"beckey":[0,552,0.5484],"bernitta":[0,20,0.0],"bettejean":[0,18,0.0],"calene":[0,65,0.0],"caralyn":[0,1142,0.6115],"caroldean":[0,5,0.0],"charlia":[0,28,0.0],"claudett":[0,100,0.4],"clemetine":[0,51,0.0],"cloetta":[0,5,0.0],"dallene":[0,5,0.0],"danese":[0,87,0.0],"darlyene":[0,5,0.0],"darlynn":[0,582,0.553],"davine":[96,365,0.4218],"denece":[0,180,0.4511],"dyanna":[0,1715,0.6469],"emalie":[0,1167,0.6134],"frannie":[0,230,0.4723],"gaynol":[0,5,0.0],"glenell":[0,15,0.0],"guylene":[0,54,0.0],"hildra":[0,5,0.0],"illah":[0,16,0.0],"jackline":[0,342,0.5068],"jacquin":[31,15,0.0],"joanetta":[0,50,0.0],"jodene":[0,957,0.5962],"joycelynn":[0,583,0.5531],"joyclyn":[0,86,0.0],"judithann":[0,221,0.4689],"judithe":[0,104,0.4034],"julann":[0,149,0.4346],"julieann":[0,3206,0.7012],"jung":[154,151,0.2509],"kateri":[0,2498,0.6795],"kenlynn":[0,173,0.4476],"lacretia":[0,932,0.5939],"lavay":[0,10,0.0],"leane":[0,520,0.5432],"leeanne":[0,3138,0.6993],"lorrita":[0,16,0.0],"loyda":[0,152,0.4364],"luci":[0,2805,0.6896],"marierose":[0,16,0.0],"marlie":[0,4389,0.7285],"marquette":[1277,652,0.435],"marthalee":[0,16,0.0],"matline":[0,5,0.0],"narda":[0,656,0.5634],"nellwyn":[0,20,0.0],"nevia":[0,109,0.4075],"norretta":[0,5,0.0],"olna":[0,5,0.0],"raejean":[0,371,0.5139],"raetta":[0,98,0.0],"rebe":[0,5,0.0],"rebertha":[0,5,0.0],"ritamarie":[0,122,0.4173],"rosaly":[0,495,0.5389],"shana":[113,29608,0.8912],"sharonlee":[0,110,0.4083],"sharren":[0,202,0.4611],"sharri":[0,1299,0.6227],"sharrie":[0,751,0.5751],"sheral":[0,423,0.5253],"shereen":[0,1587,0.6401],"sherla":[0,19,0.0],"sherral":[0,183,0.4525],"sherran":[0,282,0.49],"sonie":[0,56,0.0],"swanee":[0,5,0.0],"thurla":[0,5,0.0],"veanna":[0,89,0.0],"wanema":[0,10,0.0],"warnetta":[0,42,0.0],"williette":[0,127,0.4208],"wyota":[0,5,0.0],"zerlene":[0,15,0.0],"clauzell":[12,0,0.0],"darnel":[1006,46,0.578],"rogue":[421,635,0.3636],"joedy":[180,15,0.4228],"jonn":[537,0,0.546],"martis":[32,0,0.0],"nikolas":[23658,15,0.8743],"rhoderick":[57,0,0.0],"seavy":[6,0,0.0],"segundo":[153,0,0.4369],"skipper":[824,6,0.5796],"tsosie":[11,0,0.0],"berchman":[5,0,0.0],"danney":[512,5,0.5374],"darmon":[26,0,0.0],"dearld":[10,0,0.0],"dodge":[672,0,0.5655],"earvie":[5,0,0.0],"essix":[5,0,0.0],"fredirick":[35,0,0.0],"jerel":[3603,5,0.7105],"julice":[5,0,0.0],"karey":[584,2187,0.5434],"kris":[14362,13563,0.4573],"lensy":[5,0,0.0],"manzie":[10,0,0.0],"nathanil":[5,0,0.0],"pepper":[245,3202,0.6572],"ravin":[247,988,0.4947],"romero":[1802,0,0.6512],"seburn":[5,0,0.0],"starley":[10,50,0.0],"tal":[1254,543,0.4542],"vanis":[10,0,0.0],"wesely":[27,0,0.0],"willes":[10,0,0.0],"wilmor":[5,0,0.0],"sonjia":[0,1113,0.6093],"drena":[0,618,0.5582],"clione":[0,16,0.0],"gleora":[0,14,0.0],"trudi":[0,3215,0.7014],"gari":[158,485,0.4236],"janeene":[0,208,0.4636],"movita":[0,48,0.0],"maridee":[0,154,0.4375],"patriciaann":[0,369,0.5134],"salli":[0,679,0.5664],"cherryl":[0,1757,0.649],"darilyn":[0,632,0.5601],"judine":[0,93,0.0],"laurelee":[0,58,0.0],"lorelee":[0,160,0.4408],"lorilee":[0,858,0.5867],"marua":[0,75,0.0],"rawnie":[0,14,0.0],"sherby":[0,93,0.0],"sundra":[0,649,0.5624],"danelle":[46,7109,0.766],"deeanna":[0,1948,0.6579],"drina":[0,263,0.484],"jaylene":[75,9968,0.7944],"jerriann":[0,129,0.4221],"kristen":[2175,218672,0.9902],"marieann":[0,193,0.4571],"marquitta":[0,1183,0.6146],"michaeleen":[0,352,0.5093],"nannetta":[0,30,0.0],"norleen":[0,77,0.0],"penni":[0,2605,0.6832],"shera":[0,1507,0.6356],"sheryle":[0,1214,0.6168],"barb":[0,3853,0.7172],"benay":[0,209,0.464],"coetta":[0,56,0.0],"darolyn":[0,283,0.4904],"deannie":[0,90,0.0],"dreena":[0,56,0.0],"farida":[0,822,0.583],"judye":[0,169,0.4456],"karron":[175,376,0.3741],"lavae":[0,73,0.0],"leni":[27,1738,0.6394],"loreli":[0,647,0.5622],"lynita":[0,378,0.5155],"lynore":[0,101,0.4009],"margi":[0,290,0.4925],"marleene":[0,22,0.0],"marylynne":[0,163,0.4424],"mavourneen":[0,52,0.0],"phebia":[0,6,0.0],"rosale":[0,6,0.0],"rosalyne":[0,48,0.0],"sarahjane":[0,432,0.5271],"shaaron":[0,237,0.4749],"sharel":[0,337,0.5055],"sharin":[0,398,0.52],"sharrol":[0,6,0.0],"shelbyjean":[0,6,0.0],"sherolyn":[0,192,0.4567],"suzon":[0,48,0.0],"twana":[0,2224,0.6694],"algerine":[0,5,0.0],"aliceteen":[0,5,0.0],"arthalia":[0,5,0.0],"arthuree":[0,21,0.0],"bethann":[0,2834,0.6905],"bethenia":[0,10,0.0],"bevereley":[0,5,0.0],"carron":[98,459,0.4525],"celinda":[0,1080,0.6067],"claranne":[0,15,0.0],"claritha":[0,5,0.0],"dannielle":[0,4050,0.7215],"darlaine":[0,5,0.0],"davene":[5,234,0.4657],"deeanne":[0,409,0.5223],"donnamarie":[0,1124,0.6102],"donnice":[0,158,0.4397],"elcy":[0,5,0.0],"elisea":[0,226,0.4708],"eloida":[0,5,0.0],"ervena":[0,5,0.0],"farron":[607,114,0.4812],"glender":[0,64,0.0],"jackeline":[0,6503,0.7626],"janan":[10,645,0.5546],"janeal":[0,315,0.4997],"janeann":[0,134,0.4254],"janeil":[23,216,0.4299],"jayme":[3883,14056,0.6666],"jeris":[173,116,0.2946],"jillene":[0,632,0.5601],"joretha":[0,36,0.0],"julee":[0,2788,0.6891],"kaaren":[0,884,0.5893],"karlin":[419,460,0.3081],"katerine":[0,922,0.5929],"kathey":[0,1600,0.6408],"kathi":[0,10109,0.8009],"kira":[27,40018,0.9199],"lafreda":[0,111,0.4091],"landa":[0,639,0.5611],"laurali":[0,117,0.4136],"lisabeth":[0,1264,0.6203],"lornalee":[0,5,0.0],"lynnda":[0,676,0.566],"lynnea":[0,1752,0.6487],"mablene":[0,25,0.0],"marci":[11,13998,0.8286],"marica":[0,924,0.5931],"marieda":[0,15,0.0],"marthana":[0,11,0.0],"maryjoan":[0,44,0.0],"neala":[0,587,0.5537],"neldean":[0,5,0.0],"norvie":[0,5,0.0],"retia":[0,70,0.0],"rexene":[0,37,0.0],"ricki":[2303,4414,0.503],"rosettia":[0,5,0.0],"royann":[0,120,0.4158],"rozanna":[0,378,0.5155],"saraann":[0,324,0.5021],"selba":[0,10,0.0],"senobia":[0,11,0.0],"shauna":[50,28060,0.8882],"sherlon":[0,99,0.0],"shirin":[0,786,0.5791],"tish":[0,797,0.5803],"valdine":[0,5,0.0],"velmarie":[0,11,0.0],"wavalene":[0,5,0.0],"wendie":[0,2200,0.6685],"wylean":[0,10,0.0],"daivd":[1026,0,0.6022],"greig":[384,0,0.5169],"dallan":[745,0,0.5744],"dannis":[181,0,0.4515],"kennet":[214,0,0.4661],"dall":[6,0,0.0],"jary":[72,0,0.0],"karle":[56,94,0.2727],"romane":[32,0,0.0],"rommy":[36,9,0.0],"tyron":[7635,16,0.7751],"alphonce":[10,0,0.0],"carrold":[5,0,0.0],"dairel":[5,0,0.0],"darrill":[66,0,0.0],"darwood":[5,0,0.0],"dodd":[306,0,0.4971],"drennon":[10,0,0.0],"dwyane":[1161,0,0.613],"ferdy":[17,0,0.0],"frantz":[1093,0,0.6077],"garren":[1857,17,0.6486],"gorham":[5,0,0.0],"graviel":[95,0,0.0],"jaren":[5067,253,0.7097],"kenn":[756,0,0.5757],"lannis":[127,28,0.3589],"larris":[27,0,0.0],"lawrin":[5,0,0.0],"layle":[5,17,0.0],"legrant":[10,0,0.0],"lorel":[5,288,0.485],"nazareno":[5,0,0.0],"odaniel":[5,0,0.0],"raydean":[5,5,0.0],"revell":[27,0,0.0],"rip":[626,0,0.5593],"royzell":[37,0,0.0],"stony":[275,0,0.4879],"terance":[2840,0,0.6907],"theldon":[5,0,0.0],"therald":[5,0,0.0],"torrey":[5053,1266,0.6078],"whaley":[11,0,0.0],"zelbert":[5,0,0.0],"thanna":[0,22,0.0],"sherian":[0,849,0.5858],"midgie":[0,30,0.0],"tricia":[88,40122,0.9189],"henrene":[0,26,0.0],"karolee":[0,180,0.4511],"melsa":[0,9,0.0],"cobina":[0,15,0.0],"harla":[0,137,0.4273],"suzzanne":[0,724,0.5719],"torchy":[0,8,0.0],"aliceann":[0,29,0.0],"bobra":[0,7,0.0],"danya":[29,3616,0.7067],"jaquita":[0,785,0.579],"judieth":[0,277,0.4885],"luwanna":[0,173,0.4476],"roni":[811,4689,0.6378],"tara":[543,175490,0.9969],"tonette":[0,1505,0.6355],"viki":[0,1817,0.6519],"vikki":[0,6487,0.7624],"anitta":[0,100,0.4],"arlinda":[0,1493,0.6348],"caryn":[0,12182,0.8171],"cathey":[0,2216,0.6691],"deleta":[0,45,0.0],"delrae":[0,136,0.4267],"frayda":[0,74,0.0],"hermene":[0,6,0.0],"jalene":[67,1160,0.584],"janae":[6,17928,0.8505],"jojean":[0,19,0.0],"jolean":[0,257,0.482],"jolita":[0,121,0.4166],"karrol":[7,52,0.0],"madgalene":[0,6,0.0],"marji":[0,145,0.4323],"marvetta":[0,298,0.4948],"michelene":[0,750,0.575],"nodra":[0,6,0.0],"ronalee":[0,215,0.4665],"roszetta":[0,6,0.0],"scarlet":[0,17121,0.8467],"scherry":[0,522,0.5435],"sharell":[16,1366,0.6208],"sharone":[150,583,0.4558],"sherre":[0,856,0.5865],"sheryn":[0,341,0.5066],"shyrl":[0,181,0.4515],"tedra":[0,822,0.583],"wyleen":[0,6,0.0],"zee":[84,37,0.2892],"zorina":[0,196,0.4585],"adelmira":[0,26,0.0],"algean":[0,5,0.0],"araceli":[138,19900,0.8544],"bardara":[0,11,0.0],"bonieta":[0,10,0.0],"brinda":[0,2149,0.6664],"brunilda":[0,1057,0.6048],"carin":[80,4516,0.7197],"carollou":[0,5,0.0],"carren":[0,385,0.5171],"carrolle":[0,10,0.0],"ceceilia":[0,327,0.5029],"charlanne":[0,57,0.0],"charlayne":[0,198,0.4593],"daylene":[0,532,0.5452],"denyce":[0,335,0.505],"dyan":[116,1804,0.617],"eleane":[0,5,0.0],"ethelrene":[0,10,0.0],"evonna":[0,367,0.5129],"fredi":[899,86,0.5464],"fredlyn":[0,5,0.0],"gailyn":[0,135,0.4261],"garie":[10,34,0.0],"genean":[0,102,0.4017],"glendia":[0,248,0.4789],"glenita":[0,42,0.0],"glynis":[10,2014,0.658],"gwena":[0,47,0.0],"janit":[0,104,0.4034],"jeaniene":[0,16,0.0],"jerita":[0,100,0.4],"jerlyn":[0,254,0.481],"joell":[1185,1029,0.3581],"jolee":[0,3830,0.7166],"judtih":[0,11,0.0],"judyann":[0,336,0.5053],"kayrene":[0,26,0.0],"keren":[0,4946,0.7389],"laquata":[0,37,0.0],"leathea":[0,10,0.0],"letricia":[0,505,0.5407],"lonzetta":[0,52,0.0],"louwana":[0,21,0.0],"lovelia":[0,5,0.0],"maridean":[0,5,0.0],"marylean":[0,5,0.0],"melisse":[0,273,0.4872],"mellow":[21,33,0.0],"merlynn":[0,56,0.0],"merrilie":[0,22,0.0],"mikie":[240,42,0.4171],"milicent":[0,106,0.4051],"neena":[0,1764,0.6493],"normia":[0,5,0.0],"oteka":[0,5,0.0],"peggyanne":[0,16,0.0],"pegi":[0,156,0.4386],"penne":[0,485,0.5371],"pualani":[0,122,0.4173],"rosan":[0,97,0.0],"samma":[0,5,0.0],"sandrea":[0,674,0.5657],"sharlane":[0,16,0.0],"sharran":[0,86,0.0],"sherrilyn":[0,691,0.5679],"stefani":[0,7017,0.7692],"suedell":[0,5,0.0],"teryl":[263,779,0.4512],"vanette":[0,292,0.4931],"veniece":[0,27,0.0],"vernola":[0,10,0.0],"williene":[0,23,0.0],"wyonnia":[0,5,0.0],"zoann":[0,56,0.0],"randolf":[973,0,0.5976],"bernel":[28,0,0.0],"darian":[16782,6238,0.636],"kraig":[5951,0,0.7549],"deotis":[22,0,0.0],"friddie":[49,0,0.0],"gayron":[11,0,0.0],"gery":[758,0,0.5759],"rendell":[604,0,0.5562],"brinkley":[38,1283,0.6062],"carliss":[85,304,0.4048],"chares":[69,0,0.0],"darryel":[248,0,0.4789],"donlad":[5,0,0.0],"ferril":[5,0,0.0],"froilan":[525,0,0.544],"gerrell":[446,0,0.5299],"ishman":[11,0,0.0],"jesue":[13,0,0.0],"joby":[1174,68,0.5849],"jong":[74,0,0.0],"kennieth":[424,0,0.5255],"lawney":[5,0,0.0],"leavon":[5,0,0.0],"lewayne":[63,0,0.0],"neddy":[16,0,0.0],"ravis":[59,0,0.0],"rom":[57,0,0.0],"tay":[195,55,0.3741],"wilfrido":[376,0,0.515],"sierra":[269,100111,0.9973],"carloyn":[0,248,0.4789],"kathe":[0,1077,0.6064],"lindola":[0,13,0.0],"tamera":[0,14263,0.8308],"maeva":[0,1260,0.6201],"bonni":[0,1412,0.63],"marcha":[0,233,0.4735],"rosslyn":[0,783,0.5788],"scherrie":[0,326,0.5026],"carolan":[0,148,0.4341],"jinny":[0,821,0.5829],"julieanne":[0,1728,0.6475],"katrinka":[0,503,0.5403],"kristi":[138,76472,0.9751],"louene":[0,8,0.0],"maeve":[0,26442,0.8845],"marykay":[0,937,0.5943],"scarlette":[0,5606,0.7497],"babetta":[0,98,0.0],"darles":[0,7,0.0],"janiel":[862,207,0.4885],"jodi":[955,79661,0.9697],"jolayne":[0,170,0.4461],"judeth":[0,159,0.4403],"karolynn":[0,271,0.4866],"karroll":[10,12,0.0],"lindalou":[0,85,0.0],"mareen":[0,60,0.0],"rolinda":[0,462,0.5329],"russella":[0,46,0.0],"sallyjo":[0,36,0.0],"scharlotte":[0,48,0.0],"sheralyn":[0,580,0.5527],"susy":[0,1211,0.6166],"suzannah":[0,1778,0.65],"bronna":[0,38,0.0],"christi":[22,20910,0.8633],"clementeen":[0,17,0.0],"conita":[0,63,0.0],"conni":[0,917,0.5925],"cynda":[0,642,0.5615],"dorann":[0,170,0.4461],"faydene":[0,6,0.0],"gayel":[0,6,0.0],"janalene":[0,6,0.0],"janete":[0,81,0.0],"kristie":[44,38353,0.9158],"kum":[0,28,0.0],"kyoko":[0,234,0.4738],"labarbara":[0,40,0.0],"latrell":[3807,541,0.6371],"lindia":[0,438,0.5283],"llona":[0,27,0.0],"lorae":[0,80,0.0],"marlana":[0,2832,0.6904],"menda":[0,28,0.0],"miggie":[0,6,0.0],"roselinda":[0,202,0.4611],"rosenell":[0,6,0.0],"roxene":[0,100,0.4],"sereta":[0,43,0.0],"sharryn":[0,47,0.0],"sidnee":[0,636,0.5607],"trude":[0,272,0.4869],"alane":[0,1664,0.6442],"alvonia":[0,5,0.0],"arjean":[0,5,0.0],"autherine":[0,51,0.0],"barbaralee":[0,15,0.0],"bayla":[0,1014,0.6012],"berthella":[0,11,0.0],"bonnette":[0,27,0.0],"carollynn":[0,232,0.4731],"casandra":[7,15775,0.8393],"charlynn":[0,784,0.5789],"charlynne":[0,28,0.0],"charolotte":[0,38,0.0],"cheree":[0,2048,0.6623],"cherri":[0,4146,0.7235],"cookie":[0,573,0.5516],"darene":[0,137,0.4273],"earlyn":[0,85,0.0],"enza":[0,490,0.538],"ermia":[0,5,0.0],"ethelann":[0,10,0.0],"evila":[0,5,0.0],"georjean":[0,127,0.4208],"gigi":[0,4412,0.7289],"ginette":[0,881,0.589],"gwendalyn":[0,1190,0.6151],"illona":[0,251,0.4799],"janilee":[0,23,0.0],"jerianne":[0,116,0.4129],"jestene":[0,5,0.0],"jodee":[38,3107,0.6911],"joeleen":[0,211,0.4649],"johnelle":[13,425,0.5126],"jowanna":[0,227,0.4712],"juanna":[0,138,0.428],"judiann":[0,87,0.0],"juneann":[0,26,0.0],"karlen":[16,147,0.399],"kyla":[29,43154,0.9264],"landra":[0,420,0.5246],"laurna":[0,65,0.0],"loralei":[0,1745,0.6484],"louiseann":[0,5,0.0],"lowayne":[0,5,0.0],"marikay":[0,212,0.4653],"marlies":[0,175,0.4486],"maya":[163,119839,0.9986],"merridy":[0,35,0.0],"mindy":[67,42540,0.9244],"neatha":[0,5,0.0],"noralie":[0,10,0.0],"noralyn":[0,135,0.4261],"oneatha":[0,5,0.0],"phronsie":[0,24,0.0],"ronaele":[0,15,0.0],"ronita":[0,713,0.5706],"sande":[16,258,0.4591],"sharlyne":[0,80,0.0],"sherrin":[0,310,0.4983],"sherryn":[0,68,0.0],"stephani":[0,5305,0.7449],"teddi":[0,1940,0.6576],"terra":[5,15353,0.837],"timothea":[0,157,0.4392],"tonja":[5,6989,0.7684],"towana":[0,801,0.5807],"vallory":[0,73,0.0],"vereen":[0,10,0.0],"viann":[0,132,0.4241],"wallene":[0,20,0.0],"willkie":[13,0,0.0],"lonney":[286,0,0.4913],"tarry":[430,189,0.3879],"dalles":[33,0,0.0],"lanning":[18,0,0.0],"scot":[13715,11,0.8268],"wiltz":[7,0,0.0],"darril":[75,0,0.0],"delmond":[11,0,0.0],"dorce":[6,0,0.0],"greggory":[5107,0,0.7416],"honorio":[225,0,0.4704],"jeron":[2310,0,0.6727],"merlan":[6,0,0.0],"reynaud":[6,0,0.0],"royer":[310,0,0.4983],"trevis":[1778,10,0.6468],"barre":[75,0,0.0],"barty":[5,0,0.0],"carville":[10,0,0.0],"chang":[307,5,0.4908],"dennes":[38,0,0.0],"dill":[5,0,0.0],"garreth":[430,0,0.5267],"garron":[835,0,0.5843],"geoff":[1549,0,0.638],"gerrard":[628,0,0.5596],"gerrold":[25,0,0.0],"gilroy":[32,0,0.0],"jarry":[144,0,0.4317],"leamond":[15,0,0.0],"levane":[5,0,0.0],"lonn":[392,0,0.5187],"luren":[5,5,0.0],"malton":[5,0,0.0],"mylon":[417,0,0.524],"petie":[40,0,0.0],"redgie":[36,0,0.0],"ronnell":[2355,183,0.6318],"ronnye":[10,31,0.0],"ruberto":[5,0,0.0],"saintclair":[97,0,0.0],"sammual":[58,0,0.0],"shad":[4822,0,0.7366],"sherell":[5,1475,0.6319],"torrance":[3572,556,0.6257],"tyrrell":[668,0,0.565],"waynard":[10,0,0.0],"jerilynn":[0,1286,0.6218],"elaina":[0,31035,0.8984],"gloriajean":[0,123,0.418],"ronica":[0,1280,0.6214],"mardi":[6,868,0.5843],"meridee":[0,165,0.4435],"sherrian":[0,251,0.4799],"gwendlyon":[0,78,0.0],"jerrilynn":[0,373,0.5143],"marielena":[0,1352,0.6262],"shareen":[0,986,0.5988],"suellyn":[0,291,0.4928],"kayann":[0,228,0.4716],"loydene":[0,29,0.0],"moana":[0,1109,0.609],"bronwen":[0,862,0.5871],"cellestine":[0,30,0.0],"jerra":[0,522,0.5435],"marcianna":[0,93,0.0],"paulann":[0,25,0.0],"sarabeth":[0,1295,0.6225],"shirey":[0,7,0.0],"sueellen":[0,462,0.5329],"tamyra":[0,2267,0.6711],"thomasenia":[0,63,0.0],"veralyn":[0,141,0.4298],"arleeta":[0,11,0.0],"bonnee":[0,76,0.0],"charie":[0,331,0.504],"charita":[0,1406,0.6296],"charleane":[0,6,0.0],"charleszetta":[0,23,0.0],"charnell":[0,655,0.5632],"cherilyn":[0,2358,0.6745],"connye":[0,43,0.0],"devorah":[0,4624,0.733],"estrellita":[0,1150,0.6121],"franceen":[0,179,0.4506],"francetta":[0,161,0.4414],"jeralee":[0,36,0.0],"karalee":[0,1219,0.6172],"kenda":[0,2475,0.6787],"kristy":[179,70496,0.9674],"lowanna":[0,41,0.0],"lynnetta":[0,529,0.5447],"marijon":[0,6,0.0],"merikay":[0,84,0.0],"monterey":[0,22,0.0],"myrah":[0,754,0.5755],"raynette":[0,686,0.5673],"rennette":[0,35,0.0],"ronelle":[69,588,0.5043],"ronette":[0,951,0.5956],"shellia":[0,397,0.5198],"shira":[0,5735,0.7517],"thedosia":[0,6,0.0],"twylia":[0,94,0.0],"cari":[107,12747,0.815],"caroldine":[0,5,0.0],"chari":[0,1202,0.616],"charrie":[0,65,0.0],"danell":[434,1266,0.4811],"deidra":[0,10287,0.8025],"diania":[0,624,0.559],"dierdre":[0,1115,0.6095],"dorien":[1200,69,0.5869],"dureen":[0,20,0.0],"earletta":[0,16,0.0],"edana":[0,224,0.47],"elizabath":[0,21,0.0],"elizabethann":[0,509,0.5413],"evalean":[0,5,0.0],"floydell":[0,5,0.0],"gailann":[0,19,0.0],"jaclynn":[0,2795,0.6893],"jaice":[781,125,0.5098],"jancie":[0,189,0.4553],"janeece":[0,215,0.4665],"janellen":[0,40,0.0],"jeani":[0,422,0.5251],"jeriann":[0,249,0.4792],"jerrianne":[0,92,0.0],"joannah":[0,430,0.5267],"judene":[0,143,0.4311],"judianne":[0,144,0.4317],"juliane":[0,2156,0.6667],"karalyn":[0,1589,0.6402],"karran":[0,26,0.0],"katleen":[0,203,0.4615],"kayren":[29,85,0.3067],"kimberley":[235,38021,0.9109],"kolene":[0,46,0.0],"koreen":[0,654,0.5631],"lacrecia":[0,392,0.5187],"lajuanna":[0,74,0.0],"lalonnie":[0,90,0.0],"latrecia":[0,450,0.5306],"lauralie":[0,114,0.4114],"lauralyn":[0,415,0.5236],"llana":[0,72,0.0],"lutrecia":[0,5,0.0],"mardith":[0,5,0.0],"marjane":[0,10,0.0],"marytheresa":[0,42,0.0],"meg":[0,5321,0.7452],"michaella":[0,2275,0.6714],"michon":[29,555,0.5258],"mitty":[0,5,0.0],"nawatha":[0,5,0.0],"netia":[0,10,0.0],"nonda":[0,21,0.0],"nyoka":[0,946,0.5952],"pamila":[0,755,0.5756],"pamla":[0,795,0.5801],"petrea":[0,63,0.0],"petria":[0,5,0.0],"radene":[0,32,0.0],"raeanna":[0,1710,0.6466],"ranelle":[0,419,0.5244],"rayanna":[0,2206,0.6687],"raydene":[0,29,0.0],"sarahann":[0,772,0.5775],"sharian":[0,73,0.0],"shawna":[105,45522,0.9297],"shearon":[0,216,0.4669],"sheilla":[0,450,0.5306],"sherree":[0,1555,0.6383],"sherryll":[0,109,0.4075],"shila":[0,1080,0.6067],"sidna":[0,10,0.0],"sonjie":[0,5,0.0],"starlet":[0,1050,0.6042],"tannis":[5,317,0.4938],"tempe":[0,44,0.0],"torchie":[0,5,0.0],"wendelyn":[0,397,0.5198],"wini":[0,10,0.0],"zeldia":[0,5,0.0],"saford":[11,0,0.0],"garon":[982,0,0.5984],"gerlad":[86,0,0.0],"coby":[9397,381,0.767],"lindal":[30,5,0.0],"mcelroy":[7,0,0.0],"rell":[12,23,0.0],"ronn":[655,0,0.5632],"timm":[651,0,0.5627],"berten":[11,0,0.0],"garen":[1190,12,0.6098],"garet":[1486,0,0.6344],"jerell":[1671,5,0.6429],"martinez":[1126,29,0.5971],"milous":[6,0,0.0],"pompey":[6,0,0.0],"ronnel":[269,0,0.486],"timmothy":[4101,0,0.7226],"clausell":[5,0,0.0],"connis":[5,0,0.0],"craige":[371,0,0.5139],"dalen":[1956,16,0.6536],"earman":[5,0,0.0],"findley":[336,125,0.3883],"franis":[5,0,0.0],"frontis":[5,0,0.0],"gailand":[11,0,0.0],"galan":[81,0,0.0],"glenny":[16,25,0.0],"lanney":[33,0,0.0],"lany":[5,106,0.3906],"macarthur":[1285,0,0.6218],"malloy":[46,0,0.0],"mitchael":[248,0,0.4789],"odice":[5,0,0.0],"reldon":[5,0,0.0],"spessard":[5,0,0.0],"stonie":[25,28,0.0],"tobin":[5533,167,0.7292],"dwala":[0,26,0.0],"gerilyn":[0,689,0.5676],"rise":[59,1099,0.5815],"risa":[0,4155,0.7237],"sharrel":[0,48,0.0],"nichole":[184,63722,0.9583],"jackalyn":[0,586,0.5536],"bronwyn":[0,3692,0.7135],"cindi":[0,7696,0.7773],"fiona":[5,33296,0.9044],"georgieann":[0,21,0.0],"loxie":[0,46,0.0],"miki":[73,1803,0.6292],"sherrye":[0,674,0.5657],"aundrea":[181,4756,0.7116],"bonnielou":[0,32,0.0],"janifer":[0,326,0.5026],"jobeth":[0,486,0.5373],"jonella":[0,95,0.0],"kathye":[0,338,0.5058],"rayleen":[0,1229,0.6179],"ronne":[67,68,0.2146],"rosiland":[0,681,0.5666],"royanne":[0,108,0.4067],"starla":[0,8206,0.7828],"andrena":[0,700,0.569],"arcilia":[0,27,0.0],"bobi":[0,593,0.5546],"carlette":[0,1019,0.6016],"cathi":[0,2536,0.6808],"elicia":[0,4264,0.726],"elinda":[0,278,0.4888],"gini":[0,505,0.5407],"jerilee":[0,148,0.4341],"jerilynne":[0,13,0.0],"joi":[0,6044,0.7563],"marka":[5,249,0.4715],"marnita":[0,813,0.582],"mellanie":[0,1112,0.6092],"michol":[0,65,0.0],"sharryl":[0,52,0.0],"shyla":[0,7946,0.78],"tami":[90,37914,0.9138],"tiffany":[1191,338560,0.9965],"valinda":[0,1363,0.6269],"veletta":[0,57,0.0],"adriann":[140,960,0.5309],"arvina":[0,6,0.0],"aundria":[0,783,0.5788],"barby":[0,155,0.4381],"brandy":[2297,106502,0.9789],"carolen":[0,12,0.0],"charlann":[0,71,0.0],"daleen":[0,248,0.4789],"darcie":[0,5710,0.7513],"darrelyn":[0,122,0.4173],"floranne":[0,6,0.0],"jacklyne":[0,108,0.4067],"janath":[0,11,0.0],"jarilyn":[0,59,0.0],"jaynie":[0,1148,0.612],"jeneen":[0,1116,0.6095],"jenet":[0,103,0.4026],"jerrilee":[0,45,0.0],"jodeen":[0,344,0.5073],"joya":[0,1771,0.6496],"joyace":[0,18,0.0],"kaaran":[0,6,0.0],"karenlee":[0,32,0.0],"kirstin":[0,8778,0.7887],"lorri":[0,8022,0.7809],"loxi":[0,20,0.0],"marieelena":[0,74,0.0],"melany":[5,16595,0.8438],"michelyn":[0,80,0.0],"mikki":[11,2085,0.6608],"paulett":[0,428,0.5263],"perri":[114,2422,0.6502],"ramonda":[0,324,0.5021],"rana":[164,4503,0.708],"roine":[0,6,0.0],"saundria":[0,53,0.0],"shelagh":[0,510,0.5415],"sherrol":[0,61,0.0],"shonna":[0,3089,0.698],"siri":[0,2324,0.6732],"terre":[99,838,0.5316],"vici":[0,224,0.47],"alenda":[0,55,0.0],"aloah":[0,5,0.0],"amenda":[0,322,0.5016],"annjane":[0,5,0.0],"annlouise":[0,62,0.0],"apryl":[0,3139,0.6994],"aundra":[838,427,0.411],"barbette":[0,335,0.505],"bartha":[0,5,0.0],"benne":[0,5,0.0],"bridgett":[0,13105,0.8235],"bronda":[0,174,0.4481],"carlina":[0,1178,0.6142],"carolea":[0,21,0.0],"cathe":[0,255,0.4813],"chun":[98,22,0.3396],"cydney":[25,5135,0.7389],"cyndy":[0,1395,0.6289],"dani":[1060,9970,0.7308],"darrah":[0,820,0.5828],"debbi":[0,2973,0.6946],"dennice":[0,299,0.4951],"desira":[0,227,0.4712],"diannia":[0,426,0.5259],"diona":[0,1509,0.6357],"donivee":[0,5,0.0],"drenda":[0,565,0.5504],"dwanda":[0,249,0.4792],"dyane":[0,387,0.5175],"florisa":[0,5,0.0],"franes":[0,5,0.0],"garlyn":[11,5,0.0],"gearlean":[0,23,0.0],"genine":[0,552,0.5484],"georgan":[0,26,0.0],"geralynn":[0,455,0.5316],"gerianne":[0,511,0.5417],"gerogia":[0,5,0.0],"gita":[0,501,0.54],"glennette":[0,104,0.4034],"harline":[0,5,0.0],"hughlene":[0,5,0.0],"idanell":[0,5,0.0],"jacklene":[0,33,0.0],"jari":[278,374,0.3229],"jenneth":[0,41,0.0],"joanell":[0,73,0.0],"jorja":[0,2893,0.6923],"judithanne":[0,5,0.0],"karyle":[0,36,0.0],"kayron":[290,66,0.4157],"kitten":[0,54,0.0],"kora":[0,8932,0.7902],"lari":[38,841,0.5633],"larrene":[0,5,0.0],"lauranne":[0,87,0.0],"lueretha":[0,5,0.0],"lynnita":[0,66,0.0],"maita":[0,5,0.0],"marcea":[0,222,0.4693],"margearet":[0,5,0.0],"markeeta":[0,400,0.5204],"marlinda":[0,539,0.5463],"marqueta":[0,253,0.4806],"marsa":[0,66,0.0],"meredythe":[0,5,0.0],"merriann":[0,36,0.0],"merrianne":[0,129,0.4221],"michaelle":[0,1388,0.6285],"monika":[0,9790,0.7982],"monzella":[0,5,0.0],"nancyjane":[0,5,0.0],"naureen":[0,193,0.4571],"nichola":[127,864,0.5224],"ondra":[92,28,0.3188],"oona":[0,1712,0.6467],"paulla":[0,262,0.4837],"pennelope":[0,386,0.5173],"radine":[0,21,0.0],"raenell":[0,257,0.482],"randee":[179,2833,0.6544],"richelle":[0,8447,0.7853],"rietta":[0,28,0.0],"ronee":[0,410,0.5226],"royalene":[0,5,0.0],"rozalind":[0,30,0.0],"rozita":[0,23,0.0],"rozlyn":[0,1450,0.6323],"sanora":[0,362,0.5117],"saretta":[0,79,0.0],"seretta":[0,38,0.0],"sharilee":[0,43,0.0],"sharlett":[0,115,0.4121],"sharonne":[0,211,0.4649],"sharrell":[0,422,0.5251],"sondria":[0,20,0.0],"starlett":[0,741,0.574],"steffi":[0,532,0.5452],"tani":[10,997,0.5946],"tedi":[0,432,0.5271],"terrye":[0,484,0.537],"tonda":[0,2426,0.677],"tova":[0,2683,0.6857],"tresia":[0,492,0.5384],"urline":[0,5,0.0],"vallerie":[0,1122,0.61],"velinda":[0,896,0.5905],"venise":[0,465,0.5335],"wadine":[0,10,0.0],"wandra":[0,313,0.4991],"mcarther":[47,0,0.0],"mcauther":[20,0,0.0],"kerby":[879,122,0.5269],"macarther":[10,0,0.0],"moshe":[17266,21,0.8465],"bary":[299,0,0.4951],"mcauthor":[13,0,0.0],"chaim":[11647,6,0.8129],"creig":[381,0,0.5162],"keenan":[18025,339,0.8371],"lawarnce":[23,0,0.0],"mcauthur":[17,0,0.0],"wavell":[7,0,0.0],"beale":[6,0,0.0],"chip":[3469,0,0.708],"den":[17,0,0.0],"donicio":[17,0,0.0],"kem":[680,353,0.3968],"ric":[1270,0,0.6208],"swayne":[11,0,0.0],"wainwright":[6,0,0.0],"accie":[5,0,0.0],"alain":[3936,6,0.718],"bartel":[5,0,0.0],"chung":[198,11,0.4396],"darlow":[5,0,0.0],"delmis":[10,7,0.0],"geoffery":[1514,0,0.636],"glasper":[5,0,0.0],"jeppie":[10,0,0.0],"jerril":[22,0,0.0],"karlos":[1997,0,0.6601],"kristian":[20627,6812,0.6673],"lawence":[46,0,0.0],"lorinzo":[35,0,0.0],"marv":[140,0,0.4292],"nathern":[10,0,0.0],"olivio":[5,0,0.0],"renick":[21,0,0.0],"rhody":[40,0,0.0],"rox":[5,330,0.4975],"sheddrick":[181,0,0.4515],"spike":[128,0,0.4214],"thoams":[185,0,0.4534],"tommas":[57,0,0.0],"tyce":[2551,0,0.6813],"wallen":[116,0,0.4129],"williaw":[5,0,0.0],"sharelle":[0,775,0.5779],"charyl":[0,782,0.5786],"rosalita":[0,317,0.5002],"tanna":[0,3235,0.702],"loni":[108,3754,0.6973],"tari":[46,2269,0.6595],"jonni":[5,1293,0.6203],"scheryl":[0,335,0.505],"shirlyn":[0,389,0.518],"soundra":[0,153,0.4369],"cherlyn":[0,1870,0.6544],"cheron":[99,635,0.4958],"feona":[0,39,0.0],"ralene":[0,252,0.4803],"becki":[0,2510,0.6799],"dianah":[0,449,0.5304],"sheena":[67,22365,0.8676],"stanlee":[131,20,0.3781],"susette":[0,1042,0.6036],"anda":[0,194,0.4576],"bambi":[0,5244,0.7439],"boni":[0,368,0.5132],"francyne":[0,122,0.4173],"merryl":[0,250,0.4796],"sharonann":[0,73,0.0],"tunisia":[0,596,0.555],"verlinda":[0,610,0.5571],"belita":[0,384,0.5169],"candyce":[0,3014,0.6958],"charlita":[0,433,0.5273],"dru":[2729,1823,0.4386],"jackelyn":[0,3890,0.718],"jerdine":[0,7,0.0],"kala":[92,7670,0.7688],"lazette":[0,146,0.4329],"marney":[0,460,0.5326],"royanna":[0,12,0.0],"sharlynn":[0,162,0.4419],"sheela":[0,679,0.5664],"sheelah":[0,89,0.0],"tamsen":[0,419,0.5244],"valory":[0,329,0.5034],"vicci":[0,294,0.4937],"wendi":[0,14522,0.8324],"adrea":[0,735,0.5733],"brynn":[388,29046,0.882],"carolinda":[0,37,0.0],"clarette":[0,12,0.0],"coni":[0,436,0.5279],"corolyn":[0,34,0.0],"dania":[5,8587,0.7864],"dondra":[20,489,0.5201],"dwana":[0,988,0.599],"eyvone":[0,18,0.0],"gaylyn":[0,303,0.4963],"gwynda":[0,41,0.0],"ilsa":[0,895,0.5904],"jani":[84,1645,0.6161],"jeany":[0,136,0.4267],"joleene":[0,104,0.4034],"loanna":[0,28,0.0],"marketta":[0,865,0.5874],"marylane":[0,6,0.0],"melynda":[0,2723,0.687],"nickola":[5,131,0.411],"noelene":[0,6,0.0],"rozan":[0,47,0.0],"sharyon":[0,99,0.0],"shayne":[10708,2947,0.6486],"sheliah":[0,435,0.5277],"sherelle":[0,1020,0.6017],"sheren":[0,21,0.0],"taffy":[0,875,0.5884],"tamarra":[0,1220,0.6173],"waynetta":[0,183,0.4525],"wende":[0,1377,0.6278],"wynnette":[0,46,0.0],"alessandra":[0,24136,0.8765],"alnetia":[0,5,0.0],"amina":[0,18292,0.8525],"angharad":[0,5,0.0],"anya":[0,19738,0.8591],"benette":[0,17,0.0],"bitsy":[0,16,0.0],"bobbee":[0,10,0.0],"bridgette":[16,23815,0.8748],"brynda":[0,171,0.4466],"byra":[0,10,0.0],"carmene":[0,5,0.0],"caroyl":[0,22,0.0],"cassondra":[0,4310,0.7269],"cherly":[0,989,0.599],"chyrl":[0,312,0.4988],"clydette":[0,71,0.0],"conzuelo":[0,5,0.0],"corinda":[0,297,0.4946],"daine":[303,298,0.2802],"darnelle":[362,249,0.3301],"donza":[0,21,0.0],"dotti":[0,208,0.4636],"elka":[0,715,0.5709],"faline":[0,105,0.4042],"faydean":[0,5,0.0],"georgett":[0,26,0.0],"irita":[0,25,0.0],"ivana":[0,7824,0.7787],"jacqulyne":[0,175,0.4486],"jeaniece":[0,10,0.0],"jenella":[0,55,0.0],"jimmi":[49,281,0.4289],"jonnette":[0,160,0.4408],"jura":[0,10,0.0],"kasandra":[0,9444,0.795],"kaylee":[176,139199,0.9987],"lacinda":[0,922,0.5929],"loya":[0,10,0.0],"marcyanna":[0,5,0.0],"marvaline":[0,5,0.0],"melodye":[0,816,0.5823],"merridee":[0,25,0.0],"merrilynn":[0,29,0.0],"missy":[0,5755,0.752],"nidia":[0,2747,0.6878],"norrie":[0,50,0.0],"pattricia":[0,87,0.0],"phyllisann":[0,17,0.0],"ralpha":[0,11,0.0],"randie":[517,1541,0.4962],"rayda":[0,10,0.0],"rikki":[624,7033,0.7135],"rodena":[0,17,0.0],"rolaine":[0,10,0.0],"sametta":[0,10,0.0],"sandara":[0,70,0.0],"sarajean":[0,76,0.0],"shairon":[0,10,0.0],"sharann":[0,11,0.0],"shawnee":[120,3908,0.6995],"sherion":[0,159,0.4403],"sherlean":[0,26,0.0],"sherridan":[0,17,0.0],"shielda":[0,14,0.0],"shona":[0,2414,0.6765],"starlette":[0,714,0.5707],"suzetta":[0,204,0.4619],"tanja":[0,2580,0.6823],"toniann":[0,1293,0.6223],"trenia":[0,364,0.5122],"wileen":[0,90,0.0],"howie":[766,0,0.5768],"thoms":[210,0,0.4644],"jefferey":[3973,0,0.7198],"parrish":[2697,478,0.5949],"rockney":[109,0,0.4075],"terrace":[714,107,0.5069],"kert":[229,0,0.472],"mikal":[3303,591,0.6091],"mohamed":[18781,0,0.8547],"thomson":[240,0,0.476],"bingham":[119,0,0.4151],"cortney":[3166,16923,0.725],"dain":[1983,0,0.6595],"daylon":[3226,10,0.6998],"deming":[5,0,0.0],"dilworth":[5,0,0.0],"eugne":[5,0,0.0],"garrey":[22,0,0.0],"gaudencio":[82,0,0.0],"jeffory":[1166,0,0.6133],"jerriel":[39,0,0.0],"jerryl":[142,6,0.4165],"jorje":[1162,0,0.613],"keener":[5,0,0.0],"larey":[21,0,0.0],"luvell":[10,0,0.0],"oliverio":[216,0,0.4669],"recardo":[670,0,0.5652],"rhodell":[5,0,0.0],"rommel":[1499,0,0.6352],"rondy":[407,0,0.5219],"rony":[1959,0,0.6584],"rooney":[643,774,0.3443],"rothwell":[5,0,0.0],"sammul":[5,0,0.0],"trafton":[73,0,0.0],"vinston":[10,0,0.0],"deatra":[0,583,0.5531],"dietra":[0,675,0.5659],"deitra":[0,1032,0.6027],"sherianne":[0,39,0.0],"sherrianne":[0,39,0.0],"drinda":[0,187,0.4544],"detra":[0,2048,0.6623],"diedra":[0,1918,0.6566],"dedra":[0,4418,0.729],"deadra":[0,1106,0.6088],"debera":[0,1252,0.6195],"kandy":[5,5300,0.7442],"karenann":[0,145,0.4323],"astra":[0,705,0.5696],"carolsue":[0,11,0.0],"deedra":[0,2165,0.6671],"deirdra":[0,1172,0.6138],"diedre":[0,1795,0.6508],"dorenda":[0,483,0.5368],"tonna":[0,799,0.5805],"deardra":[0,109,0.4075],"linde":[0,442,0.5291],"maricela":[56,13012,0.8197],"bethanne":[0,1263,0.6203],"darenda":[0,183,0.4525],"misty":[237,84619,0.983],"beneta":[0,36,0.0],"brendia":[0,155,0.4381],"charmane":[0,754,0.5755],"cherylann":[0,1013,0.6011],"devra":[0,781,0.5785],"eraina":[0,298,0.4948],"joneen":[0,35,0.0],"melonie":[0,5453,0.7473],"paullette":[0,182,0.452],"sheriann":[0,156,0.4386],"arey":[0,7,0.0],"barri":[47,504,0.5015],"candi":[0,7356,0.7733],"carnetta":[0,150,0.4352],"chana":[0,13503,0.8261],"cherylene":[0,330,0.5037],"cheryln":[0,226,0.4708],"dalila":[0,5903,0.7542],"derenda":[0,354,0.5098],"derinda":[0,435,0.5277],"dirinda":[0,7,0.0],"durinda":[0,244,0.4775],"dyana":[0,1907,0.6561],"genneth":[0,7,0.0],"haila":[0,114,0.4114],"jolynne":[0,474,0.5352],"kerrie":[104,8584,0.7784],"lezlie":[0,2399,0.676],"lonnette":[0,204,0.4619],"lonni":[19,412,0.5037],"marvalyn":[0,7,0.0],"pamilla":[0,44,0.0],"ritaann":[0,36,0.0],"salinda":[0,207,0.4632],"sharalee":[0,101,0.4009],"stormy":[889,7609,0.7037],"trenda":[0,673,0.5656],"acquanetta":[0,254,0.481],"akemi":[5,904,0.5885],"andera":[18,735,0.5616],"betsi":[0,162,0.4419],"carolgene":[0,6,0.0],"cheril":[0,231,0.4727],"cherl":[0,383,0.5166],"cherolyn":[0,60,0.0],"cristy":[75,8185,0.7763],"deatrice":[0,621,0.5586],"evanne":[0,173,0.4476],"freddi":[70,63,0.2236],"gaylynn":[0,415,0.5236],"jade":[5795,100634,0.9456],"jannifer":[0,855,0.5864],"jimi":[1240,667,0.4266],"judean":[0,25,0.0],"lanaya":[0,1427,0.6309],"marcey":[0,1102,0.6084],"marilin":[0,780,0.5784],"marycarol":[0,34,0.0],"marynel":[0,6,0.0],"patrisha":[0,1084,0.607],"roi":[345,51,0.4526],"shan":[2224,864,0.5027],"sharene":[0,551,0.5482],"sherriann":[0,130,0.4228],"sherrylee":[0,19,0.0],"sissy":[0,710,0.5703],"suezanne":[0,14,0.0],"susane":[0,151,0.4358],"tanny":[10,177,0.4301],"teriann":[0,176,0.4491],"terresa":[0,1571,0.6392],"toi":[53,1493,0.616],"vallery":[0,723,0.5718],"warna":[0,11,0.0],"alyson":[10,29572,0.8939],"andi":[869,6805,0.689],"bene":[0,10,0.0],"brigitta":[0,544,0.5471],"candus":[0,241,0.4764],"carlye":[0,1066,0.6056],"charron":[50,361,0.4592],"cherill":[0,5,0.0],"cherre":[0,75,0.0],"cherye":[0,76,0.0],"cherylee":[0,129,0.4221],"cheyrl":[0,159,0.4403],"danis":[155,31,0.3783],"danise":[0,866,0.5875],"daralee":[0,16,0.0],"debbra":[0,3652,0.7125],"deetra":[0,183,0.4525],"dieatra":[0,5,0.0],"dierdra":[0,214,0.4661],"dorianne":[0,491,0.5382],"elosie":[0,5,0.0],"eugonda":[0,5,0.0],"everly":[38,40659,0.9211],"georgella":[0,5,0.0],"glennell":[0,17,0.0],"gwendelyn":[0,394,0.5191],"harolene":[0,11,0.0],"irina":[0,2297,0.6722],"jamey":[6731,3046,0.5494],"janielle":[0,623,0.5589],"jaquelyn":[0,2736,0.6874],"jenness":[0,80,0.0],"jerralyn":[0,14,0.0],"jillian":[227,83018,0.9814],"jomarie":[5,464,0.5285],"jonatha":[311,29,0.4631],"judyne":[0,5,0.0],"jurene":[0,5,0.0],"katheen":[0,134,0.4254],"katreen":[0,5,0.0],"kristeen":[0,1321,0.6242],"laurelyn":[0,116,0.4129],"lecia":[0,1169,0.6136],"leonda":[0,213,0.4657],"lorey":[0,265,0.4846],"lucianne":[0,258,0.4823],"lynann":[0,287,0.4916],"maira":[17,6279,0.7578],"margreta":[0,10,0.0],"marilon":[0,5,0.0],"marlise":[0,364,0.5122],"marlynne":[0,5,0.0],"marnee":[0,409,0.5223],"marylinda":[0,29,0.0],"nichol":[22,2900,0.6879],"ondrea":[0,795,0.5801],"orlidia":[0,5,0.0],"pamalla":[0,23,0.0],"patricie":[0,75,0.0],"renelle":[0,430,0.5267],"renne":[61,578,0.5075],"rethea":[0,11,0.0],"rolanda":[31,3386,0.7003],"rosaleta":[0,5,0.0],"rosamaria":[0,2000,0.6602],"ruthan":[0,21,0.0],"ruthi":[0,34,0.0],"sandye":[0,21,0.0],"senna":[93,981,0.5537],"shanon":[1732,4817,0.5614],"sharlon":[0,87,0.0],"shary":[0,362,0.5117],"sherren":[0,32,0.0],"shonnie":[0,244,0.4775],"shulamith":[0,20,0.0],"steffani":[0,997,0.5997],"tavia":[0,2477,0.6788],"tawanda":[0,4058,0.7217],"thersia":[0,73,0.0],"thoma":[78,20,0.0],"tia":[64,33731,0.9041],"trudee":[0,97,0.0],"vinda":[0,26,0.0],"wavelyn":[0,5,0.0],"winetta":[0,10,0.0],"kipp":[2418,5,0.6755],"turhan":[277,0,0.4885],"biff":[254,0,0.481],"cabot":[287,0,0.4916],"carnelius":[95,0,0.0],"colden":[990,0,0.5991],"phillipp":[41,0,0.0],"stephenson":[217,0,0.4673],"arthuro":[338,0,0.5058],"condy":[5,0,0.0],"danton":[570,0,0.5512],"darvis":[389,0,0.518],"denys":[206,426,0.3776],"domitilo":[10,0,0.0],"ferrin":[28,95,0.3228],"gehrig":[698,0,0.5688],"graig":[1336,0,0.6252],"hennry":[5,0,0.0],"jeb":[2586,0,0.6825],"kean":[987,0,0.5989],"larrell":[103,0,0.4026],"lavorn":[10,5,0.0],"lemmon":[5,0,0.0],"lonzel":[10,0,0.0],"markham":[469,0,0.5342],"michail":[589,0,0.554],"mikael":[5761,300,0.7191],"persell":[5,0,0.0],"poul":[39,0,0.0],"rande":[428,188,0.3876],"ricci":[879,854,0.3286],"rondald":[21,0,0.0],"rondie":[31,5,0.0],"rowen":[7544,2487,0.6019],"wyn":[148,28,0.3777],"sherida":[0,997,0.5997],"allida":[0,34,0.0],"allyson":[21,53553,0.9454],"kristan":[645,5545,0.6793],"ronnee":[0,46,0.0],"jaynee":[0,846,0.5855],"kandace":[0,6315,0.7601],"cheryn":[0,193,0.4571],"marisela":[29,10282,0.8004],"lauran":[0,1468,0.6333],"diedri":[0,10,0.0],"besty":[0,53,0.0],"candance":[0,2294,0.6721],"chyleen":[0,9,0.0],"jil":[0,559,0.5495],"kandi":[0,5547,0.7488],"mischelle":[0,967,0.5971],"sharyne":[0,49,0.0],"sherol":[0,72,0.0],"chery":[0,567,0.5507],"jacqui":[13,876,0.5812],"jocarol":[0,15,0.0],"pamalee":[0,63,0.0],"rondi":[7,595,0.5495],"bernadett":[0,181,0.4515],"chyrel":[0,265,0.4846],"dannye":[50,14,0.0],"ericka":[46,23353,0.8721],"gloristine":[0,63,0.0],"jillaine":[0,229,0.472],"johnine":[0,55,0.0],"kandee":[0,505,0.5407],"kandice":[0,6822,0.7668],"kerri":[348,37011,0.906],"loisanne":[0,7,0.0],"rogena":[0,231,0.4727],"sydnee":[0,8240,0.7832],"traci":[233,52172,0.9397],"trudith":[0,28,0.0],"adelfina":[0,6,0.0],"alisa":[22,34578,0.9072],"asia":[196,32404,0.8972],"canda":[0,187,0.4544],"carlann":[0,16,0.0],"carmellia":[0,94,0.0],"catheleen":[0,61,0.0],"charmagne":[0,334,0.5047],"cheryal":[0,153,0.4369],"cindra":[0,604,0.5562],"cristie":[0,2098,0.6644],"darinda":[0,232,0.4731],"davia":[0,1198,0.6157],"debbe":[0,243,0.4771],"diannah":[0,86,0.0],"doristeen":[0,11,0.0],"elyn":[11,568,0.542],"francee":[0,87,0.0],"georgenne":[0,6,0.0],"gerrye":[0,6,0.0],"hanya":[0,106,0.4051],"jacqlyn":[0,759,0.576],"jenni":[0,5535,0.7486],"joani":[0,609,0.5569],"jocelyne":[0,4217,0.725],"jonda":[0,508,0.5412],"kandie":[0,1080,0.6067],"kassandra":[16,33312,0.9041],"lynae":[0,1282,0.6216],"lynnae":[0,1208,0.6164],"marselina":[0,12,0.0],"melony":[0,4441,0.7295],"merrylee":[0,6,0.0],"michaleen":[0,13,0.0],"micheale":[0,99,0.0],"pama":[0,182,0.452],"patirica":[0,87,0.0],"reesa":[0,742,0.5741],"riki":[433,1184,0.4699],"rosezina":[0,18,0.0],"shaleen":[0,547,0.5476],"shandra":[0,3018,0.6959],"shannah":[0,1378,0.6278],"sharlette":[0,347,0.5081],"shayron":[5,11,0.0],"shelli":[0,6983,0.7688],"shery":[0,391,0.5184],"susen":[0,195,0.458],"susi":[0,392,0.5187],"tauna":[0,647,0.5622],"terriann":[0,505,0.5407],"tommi":[22,1778,0.6431],"zoanne":[0,66,0.0],"alayna":[5,34649,0.9078],"allita":[0,5,0.0],"andreia":[0,650,0.5626],"angle":[130,1149,0.5582],"arabela":[0,161,0.4414],"barsha":[0,17,0.0],"branda":[0,1097,0.608],"bretha":[0,5,0.0],"candee":[0,886,0.5895],"char":[0,488,0.5377],"charlice":[0,25,0.0],"charloette":[0,5,0.0],"charolyn":[0,5,0.0],"charyn":[0,54,0.0],"cherryle":[0,22,0.0],"cheryel":[0,94,0.0],"cherylin":[0,66,0.0],"cherylyn":[0,378,0.5155],"condra":[0,20,0.0],"danene":[0,321,0.5013],"dari":[45,679,0.5364],"deberah":[0,394,0.5191],"derita":[0,71,0.0],"dlorah":[0,34,0.0],"dreana":[0,132,0.4241],"durenda":[0,107,0.4059],"dyna":[0,246,0.4782],"elyce":[0,823,0.5831],"francey":[0,17,0.0],"galene":[0,53,0.0],"ginni":[0,199,0.4598],"glori":[0,504,0.5405],"gloryann":[0,16,0.0],"grenda":[0,77,0.0],"guinda":[0,5,0.0],"gyla":[0,24,0.0],"ivette":[10,11085,0.8083],"jamesina":[0,89,0.0],"jonalee":[0,10,0.0],"kelli":[301,74875,0.9713],"kitt":[261,284,0.2852],"lanelda":[0,17,0.0],"leondra":[5,758,0.5727],"leonna":[0,1347,0.6259],"linnae":[0,295,0.494],"lonnia":[0,5,0.0],"loralyn":[0,368,0.5132],"marcenia":[0,26,0.0],"marchia":[0,115,0.4121],"maritza":[79,23093,0.87],"milinda":[0,1033,0.6028],"nioka":[0,113,0.4106],"noell":[88,634,0.502],"pamula":[0,696,0.5685],"queene":[0,5,0.0],"rayanne":[0,1263,0.6203],"rhenda":[0,167,0.4445],"robinetta":[0,10,0.0],"ruthlene":[0,5,0.0],"sami":[5111,1397,0.599],"sharyan":[0,5,0.0],"sharyle":[0,38,0.0],"sherene":[0,746,0.5745],"sherlynn":[0,274,0.4876],"sherria":[0,419,0.5244],"sherrille":[0,5,0.0],"sherryann":[0,153,0.4369],"terrianne":[0,227,0.4712],"tori":[1207,36963,0.8874],"tuesday":[0,2554,0.6814],"tynie":[0,5,0.0],"vicke":[0,164,0.443],"willien":[0,5,0.0],"yvonia":[0,11,0.0],"lerry":[74,0,0.0],"brion":[2798,89,0.6708],"chipper":[446,0,0.5299],"daniels":[39,0,0.0],"derick":[19651,39,0.8571],"garris":[92,0,0.0],"shlomo":[5455,0,0.7474],"benuel":[915,0,0.5923],"bubba":[498,0,0.5394],"carlan":[40,25,0.0],"clif":[199,0,0.4598],"darron":[6177,0,0.7582],"delanor":[11,0,0.0],"kenrick":[1259,0,0.62],"kermon":[6,0,0.0],"rockland":[262,0,0.4837],"roddey":[12,0,0.0],"ronnal":[33,0,0.0],"timmons":[13,0,0.0],"baruch":[1889,0,0.6552],"breck":[2607,444,0.5955],"colyn":[700,10,0.5622],"daron":[7619,160,0.7622],"delacy":[5,20,0.0],"deldon":[5,0,0.0],"derell":[731,0,0.5728],"dinnie":[27,5,0.0],"esiquiel":[10,0,0.0],"gualberto":[315,0,0.4997],"jeffre":[257,0,0.482],"jerrod":[9351,10,0.7934],"jilberto":[194,0,0.4576],"kevan":[3479,52,0.6991],"kristofer":[9761,0,0.7979],"randon":[1756,10,0.6457],"reynoldo":[71,0,0.0],"ricke":[192,0,0.4567],"sten":[170,0,0.4461],"terran":[1521,566,0.4839],"terris":[837,143,0.511],"ugene":[5,0,0.0],"vennis":[10,0,0.0],"suzzette":[0,631,0.56],"krystal":[190,75096,0.9729],"darlia":[0,13,0.0],"kandis":[0,2727,0.6871],"lesli":[0,5786,0.7525],"trish":[0,3076,0.6976],"jami":[937,21468,0.8337],"jerrolyn":[0,24,0.0],"marni":[5,3386,0.705],"tereasa":[0,1415,0.6302],"alonna":[0,2609,0.6833],"frani":[0,36,0.0],"shanda":[0,7997,0.7806],"sherilynn":[0,319,0.5008],"chryl":[0,261,0.4833],"melodi":[0,2018,0.661],"patsi":[0,56,0.0],"pennye":[0,223,0.4697],"tondra":[0,632,0.5601],"barnette":[0,25,0.0],"candence":[0,161,0.4414],"cyndi":[0,3568,0.7105],"darcia":[0,543,0.547],"dori":[0,4935,0.7387],"ember":[389,20670,0.8487],"francy":[0,164,0.443],"franki":[84,1115,0.5726],"gracemarie":[0,206,0.4628],"kristene":[0,1008,0.6007],"maryam":[0,12974,0.8226],"samra":[0,453,0.5312],"selinda":[0,452,0.531],"suzen":[0,44,0.0],"suzzane":[0,146,0.4329],"terrilee":[0,154,0.4375],"terrilynn":[0,424,0.5255],"winda":[0,172,0.4471],"youlanda":[0,857,0.5866],"allura":[0,880,0.5889],"arlana":[0,537,0.546],"beleta":[0,7,0.0],"brenna":[0,29263,0.8933],"cheralyn":[0,144,0.4317],"chrisanne":[0,287,0.4916],"darlane":[0,30,0.0],"debarah":[0,260,0.483],"delicia":[0,2553,0.6814],"diannie":[0,91,0.0],"gearleen":[0,7,0.0],"ilana":[0,5604,0.7497],"jackquelyn":[0,259,0.4827],"jaimie":[904,9544,0.7343],"jamee":[218,2734,0.6428],"janee":[6,3250,0.7012],"jannine":[0,677,0.5661],"johnnetta":[0,399,0.5202],"kathee":[0,170,0.4461],"keri":[325,32047,0.893],"lyne":[5,202,0.452],"marika":[0,2292,0.672],"nalani":[0,7194,0.7714],"patricha":[0,39,0.0],"rani":[215,1879,0.596],"roz":[0,57,0.0],"sherryle":[0,29,0.0],"suezette":[0,76,0.0],"tammara":[0,2507,0.6798],"taunya":[0,1484,0.6343],"teala":[0,523,0.5437],"terisa":[0,1030,0.6026],"tresha":[0,649,0.5624],"waltina":[0,30,0.0],"alaina":[6,49201,0.9383],"alanda":[0,731,0.5728],"an":[1101,1357,0.3744],"angenette":[0,388,0.5178],"anntoinette":[0,376,0.515],"ayn":[0,146,0.4329],"barbaranne":[0,16,0.0],"barbarba":[0,11,0.0],"betina":[0,1006,0.6005],"bunita":[0,26,0.0],"candise":[0,1153,0.6124],"candiss":[0,286,0.4913],"candra":[0,1815,0.6518],"chalice":[0,260,0.483],"cherlynn":[0,255,0.4813],"chrysta":[0,574,0.5518],"cyndie":[0,556,0.549],"danalee":[0,90,0.0],"darlinda":[0,224,0.47],"debi":[0,3822,0.7165],"deni":[170,665,0.4654],"deona":[0,1166,0.6133],"deonna":[5,3747,0.7139],"di":[13,57,0.0],"donda":[0,164,0.443],"donnalynn":[0,75,0.0],"drene":[0,6,0.0],"duana":[0,564,0.5503],"eleni":[0,6579,0.7636],"ellana":[0,589,0.554],"ellyne":[0,18,0.0],"emmalyn":[0,8641,0.7873],"feryl":[0,6,0.0],"genise":[0,922,0.5929],"janny":[0,549,0.5479],"jaymee":[23,2196,0.6623],"jayna":[0,5323,0.7452],"jeannemarie":[0,271,0.4866],"jennice":[0,305,0.4969],"joylynn":[0,554,0.5487],"juliaann":[0,37,0.0],"karena":[0,3493,0.7086],"kolleen":[0,1016,0.6014],"lannette":[0,560,0.5496],"larissa":[0,23370,0.8737],"lauana":[0,11,0.0],"laurean":[0,16,0.0],"laurian":[0,80,0.0],"leesa":[0,4124,0.7231],"lill":[0,11,0.0],"lindi":[0,1134,0.6109],"linelle":[0,51,0.0],"lorre":[0,421,0.5249],"machelle":[0,3178,0.7004],"maryline":[0,27,0.0],"melode":[0,37,0.0],"noni":[0,675,0.5659],"paulet":[0,47,0.0],"regeana":[0,44,0.0],"rejetta":[0,11,0.0],"rhana":[0,17,0.0],"rhonna":[0,159,0.4403],"rosemaria":[0,162,0.4419],"roslind":[0,148,0.4341],"rudeen":[0,11,0.0],"sandral":[0,22,0.0],"senga":[0,6,0.0],"shaula":[0,56,0.0],"sherrey":[0,67,0.0],"soni":[5,321,0.4949],"storm":[3534,2634,0.4343],"suzana":[0,1213,0.6168],"synovia":[0,32,0.0],"tanda":[0,462,0.5329],"terrilyn":[0,930,0.5937],"terryann":[0,118,0.4144],"vivi":[0,679,0.5664],"allona":[0,174,0.4481],"alynda":[0,36,0.0],"andriette":[0,20,0.0],"brigitte":[0,9102,0.7918],"cathee":[0,27,0.0],"charen":[0,5,0.0],"charisse":[0,5296,0.7448],"charolene":[0,5,0.0],"charolet":[0,22,0.0],"cherel":[0,21,0.0],"cherelyn":[0,19,0.0],"cherith":[0,543,0.547],"cherle":[0,15,0.0],"cherryll":[0,10,0.0],"cheyenne":[2696,70439,0.937],"chrisann":[0,447,0.5301],"christiane":[6,2257,0.6692],"chrys":[26,194,0.4131],"chyral":[0,20,0.0],"cinthia":[6,6124,0.7568],"cissy":[0,430,0.5267],"clydetta":[0,10,0.0],"dalena":[0,1100,0.6083],"davena":[0,412,0.523],"davette":[0,557,0.5492],"dawnelle":[0,526,0.5442],"deletha":[0,104,0.4034],"demetrice":[1657,1754,0.3633],"diretha":[0,14,0.0],"dollena":[0,10,0.0],"donese":[0,11,0.0],"doni":[144,679,0.4811],"doriene":[0,5,0.0],"duanna":[0,68,0.0],"edy":[675,185,0.4606],"elfredia":[0,29,0.0],"estralita":[0,16,0.0],"georgenna":[0,5,0.0],"gidget":[0,1586,0.6401],"gwenette":[0,274,0.4876],"holli":[5,8731,0.7878],"holliday":[0,110,0.4083],"jackqulyn":[0,81,0.0],"jaimee":[48,4558,0.725],"janalyn":[0,537,0.546],"janys":[0,5,0.0],"jeanee":[0,173,0.4476],"jenee":[0,2012,0.6607],"joletta":[0,227,0.4712],"juelene":[0,10,0.0],"jyl":[0,389,0.518],"jyme":[0,20,0.0],"kandyce":[0,1428,0.6309],"katharin":[0,82,0.0],"kathlen":[0,85,0.0],"lacreta":[0,17,0.0],"leslyn":[0,171,0.4466],"loreeta":[0,5,0.0],"ludivina":[0,445,0.5297],"lynora":[0,196,0.4585],"maddy":[0,844,0.5853],"malka":[5,6250,0.7586],"marianela":[0,640,0.5612],"marlyin":[0,17,0.0],"maureena":[0,85,0.0],"maureene":[0,15,0.0],"maurya":[26,130,0.3655],"mellody":[0,489,0.5379],"merianne":[0,53,0.0],"merrikay":[0,5,0.0],"mical":[330,193,0.3431],"mura":[0,5,0.0],"nicholetta":[0,5,0.0],"nilsa":[0,1804,0.6512],"pearlann":[0,5,0.0],"peni":[5,144,0.4201],"pixie":[0,611,0.5572],"ponda":[0,46,0.0],"raina":[0,12162,0.817],"raynetta":[0,238,0.4753],"rhondda":[0,11,0.0],"ronnette":[0,749,0.5749],"rosemari":[0,53,0.0],"roxan":[0,430,0.5267],"rozalyn":[0,855,0.5864],"ruthye":[0,5,0.0],"salene":[0,170,0.4461],"sammi":[56,1657,0.6256],"sharleene":[0,5,0.0],"sharlen":[0,5,0.0],"sharynne":[0,5,0.0],"sheria":[0,654,0.5631],"sherrion":[0,33,0.0],"sherye":[0,42,0.0],"shirlon":[0,20,0.0],"shyrel":[0,21,0.0],"starlyn":[16,734,0.5627],"tere":[6,385,0.5105],"terilyn":[0,622,0.5588],"tonjia":[0,305,0.4969],"tonni":[0,261,0.4833],"treena":[0,852,0.5861],"veida":[0,133,0.4248],"vilia":[0,15,0.0],"vonzella":[0,111,0.4091],"walene":[0,5,0.0],"williametta":[0,5,0.0],"wilnette":[0,10,0.0],"yonna":[0,130,0.4228],"sung":[444,69,0.4691],"tyronne":[1158,0,0.6127],"alfreddie":[61,0,0.0],"aric":[7600,5,0.7757],"harmie":[12,0,0.0],"kenric":[939,0,0.5945],"alfonzie":[11,0,0.0],"clift":[12,0,0.0],"dalis":[16,347,0.4894],"deems":[18,0,0.0],"galyn":[37,52,0.0],"jamal":[33063,266,0.8973],"ridgely":[106,28,0.3365],"slade":[5884,7,0.7531],"sparky":[11,0,0.0],"wain":[21,0,0.0],"barr":[16,0,0.0],"bobb":[10,0,0.0],"bradly":[9332,11,0.7932],"bromley":[15,0,0.0],"claudel":[38,0,0.0],"cornelis":[25,0,0.0],"corwyn":[472,0,0.5348],"cotis":[5,0,0.0],"daiel":[397,0,0.5198],"dandridge":[16,0,0.0],"danilo":[4525,0,0.7311],"dany":[1394,111,0.5886],"deen":[915,5,0.5895],"dowl":[5,0,0.0],"esteven":[735,0,0.5733],"filberto":[34,0,0.0],"fredreick":[22,0,0.0],"gregary":[504,0,0.5405],"jarret":[3431,0,0.7071],"jerrill":[23,0,0.0],"kamal":[3031,25,0.6913],"ki":[426,109,0.4345],"krist":[170,37,0.3804],"lohn":[5,0,0.0],"micah":[115705,13738,0.8939],"mickle":[234,0,0.4738],"montey":[80,0,0.0],"rahn":[348,0,0.5083],"redge":[24,0,0.0],"rouldph":[5,0,0.0],"royace":[5,0,0.0],"speedy":[5,0,0.0],"tary":[57,30,0.0],"terron":[2487,32,0.6716],"tong":[309,0,0.498],"torry":[1460,236,0.556],"tristan":[123112,6529,0.9496],"vandell":[86,0,0.0],"georgeen":[0,48,0.0],"junellen":[0,12,0.0],"meridy":[0,28,0.0],"cyndia":[0,315,0.4997],"sherrlyn":[0,51,0.0],"chanda":[16,6078,0.755],"johnda":[0,222,0.4693],"melana":[0,836,0.5844],"tamela":[0,7187,0.7713],"tamia":[0,12724,0.8209],"cassaundra":[0,2393,0.6758],"cathye":[0,125,0.4194],"chantal":[7,8446,0.7848],"chaya":[10,15170,0.8357],"debara":[0,334,0.5047],"donnamaria":[0,76,0.0],"marchelle":[0,1643,0.6431],"rochel":[0,3875,0.7177],"tawny":[0,4228,0.7252],"adrina":[0,1601,0.6409],"alesia":[0,7512,0.7752],"blinda":[0,226,0.4708],"cyd":[0,556,0.549],"daniela":[168,67499,0.9637],"elesa":[0,216,0.4669],"josiane":[0,143,0.4311],"kaylynn":[5,12112,0.8163],"kimberlee":[0,17661,0.8494],"lennetta":[0,27,0.0],"lynde":[0,432,0.5271],"maryla":[0,16,0.0],"phyllistine":[0,80,0.0],"tamie":[0,3237,0.702],"tasha":[106,35515,0.9076],"altonette":[0,12,0.0],"andee":[5,1164,0.6109],"barbaa":[0,14,0.0],"berenda":[0,41,0.0],"brendolyn":[0,107,0.4059],"brina":[5,1361,0.6248],"cathay":[0,30,0.0],"cindie":[0,1022,0.6019],"claristine":[0,7,0.0],"corless":[0,7,0.0],"crista":[0,4241,0.7255],"cyndee":[0,735,0.5733],"dannelle":[0,378,0.5155],"darelene":[0,36,0.0],"doristene":[0,7,0.0],"gai":[0,33,0.0],"gloristeen":[0,7,0.0],"helana":[0,560,0.5496],"jenniffer":[0,2878,0.6918],"johnnette":[0,148,0.4341],"jolie":[0,13855,0.8283],"lalita":[0,781,0.5785],"latanya":[23,9850,0.797],"lindaann":[0,79,0.0],"marciann":[0,19,0.0],"mechelle":[0,4386,0.7284],"melaney":[0,1259,0.62],"miralee":[0,7,0.0],"robyne":[0,666,0.5647],"sharynn":[0,12,0.0],"sherelyn":[0,56,0.0],"velita":[0,96,0.0],"vickye":[0,187,0.4544],"zulma":[0,1649,0.6434],"barbarajo":[0,52,0.0],"bettianne":[0,6,0.0],"boneita":[0,6,0.0],"brianne":[31,20451,0.861],"cabrini":[0,82,0.0],"camie":[0,1618,0.6418],"cassy":[0,1996,0.66],"charol":[0,18,0.0],"cherylle":[0,43,0.0],"chrisandra":[0,283,0.4904],"chrissy":[0,4445,0.7296],"cindee":[0,880,0.5889],"daralyn":[0,346,0.5078],"darice":[13,1333,0.6198],"daureen":[0,28,0.0],"dedria":[0,441,0.5289],"deneen":[7,3603,0.7101],"dinia":[0,79,0.0],"doletha":[0,6,0.0],"donnelle":[236,318,0.315],"ersula":[0,30,0.0],"franca":[0,384,0.5169],"franci":[0,230,0.4723],"helayne":[0,168,0.4451],"jaymie":[463,3641,0.6411],"kanda":[0,177,0.4496],"karn":[5,164,0.4324],"kelcie":[37,3281,0.6963],"kena":[63,1835,0.6339],"lahna":[0,480,0.5362],"lanee":[0,875,0.5884],"larri":[62,203,0.3713],"laurey":[0,236,0.4746],"laveria":[0,6,0.0],"lucresia":[0,56,0.0],"lujuana":[0,75,0.0],"lynett":[0,473,0.535],"lyssa":[0,1492,0.6348],"marit":[0,786,0.5791],"marlayne":[0,35,0.0],"marshelle":[0,554,0.5487],"maryjeanne":[0,17,0.0],"mechele":[0,722,0.5717],"mei":[0,1741,0.6482],"merribeth":[0,53,0.0],"milana":[0,6690,0.7651],"milene":[0,72,0.0],"molinda":[0,31,0.0],"mylinda":[0,808,0.5815],"myong":[0,50,0.0],"nieta":[0,6,0.0],"rejeana":[0,278,0.4888],"rennae":[0,133,0.4248],"robbyn":[0,1066,0.6056],"ronelda":[0,11,0.0],"roxi":[0,467,0.5339],"samye":[0,6,0.0],"senorita":[0,6,0.0],"shala":[0,2061,0.6628],"sherilee":[0,134,0.4254],"shermaine":[173,508,0.4227],"sheryal":[0,32,0.0],"stephannie":[0,1461,0.6329],"suszanne":[0,42,0.0],"tandra":[0,1389,0.6285],"terie":[0,355,0.51],"tresea":[0,396,0.5195],"veverly":[0,138,0.428],"yulanda":[0,1088,0.6073],"adrean":[799,410,0.4074],"aldonna":[0,5,0.0],"allayne":[0,10,0.0],"alynn":[0,439,0.5285],"ami":[409,7649,0.7416],"amoret":[0,41,0.0],"andrianna":[0,958,0.5963],"aprile":[0,481,0.5364],"arenda":[0,31,0.0],"arthetta":[0,5,0.0],"asenith":[0,5,0.0],"avemaria":[0,10,0.0],"barbaraanne":[0,5,0.0],"bernistine":[0,10,0.0],"beverli":[0,38,0.0],"bonalyn":[0,5,0.0],"brenetta":[0,275,0.4879],"candius":[0,5,0.0],"cathyrn":[0,60,0.0],"cece":[0,518,0.5429],"cenaida":[0,18,0.0],"charlan":[0,15,0.0],"charmaigne":[0,40,0.0],"cheral":[0,72,0.0],"cherilynn":[0,216,0.4669],"cherise":[0,4484,0.7303],"clydeen":[0,10,0.0],"cori":[1226,12098,0.749],"crissy":[0,2592,0.6827],"cristal":[55,15842,0.8374],"cynde":[0,264,0.4843],"dalana":[0,635,0.5606],"dalinda":[0,388,0.5178],"danae":[6,7365,0.7729],"darce":[0,27,0.0],"darcey":[94,2059,0.6375],"darelyn":[0,47,0.0],"darlette":[0,136,0.4267],"darlina":[0,149,0.4346],"davonna":[0,974,0.5977],"dayl":[5,15,0.0],"debbera":[0,78,0.0],"debbora":[0,231,0.4727],"deborra":[0,235,0.4742],"delcine":[0,34,0.0],"deleen":[0,17,0.0],"delita":[0,127,0.4208],"dody":[0,338,0.5058],"doneva":[0,35,0.0],"dorry":[0,16,0.0],"dottye":[0,33,0.0],"drenna":[0,26,0.0],"earnell":[17,5,0.0],"elynn":[0,365,0.5125],"faune":[0,5,0.0],"franciene":[0,15,0.0],"frederika":[0,73,0.0],"gailene":[0,62,0.0],"gal":[143,245,0.3269],"gayann":[0,35,0.0],"geana":[0,328,0.5032],"geline":[0,5,0.0],"geni":[0,340,0.5063],"ginna":[0,845,0.5854],"glennia":[0,5,0.0],"glyndia":[0,10,0.0],"gwenell":[0,10,0.0],"gwyne":[0,5,0.0],"jadene":[0,70,0.0],"jamye":[12,835,0.5773],"janda":[0,254,0.481],"janilyn":[0,31,0.0],"janney":[0,1006,0.6005],"jayn":[0,39,0.0],"jaynne":[0,15,0.0],"jeniffer":[0,3655,0.7126],"jini":[0,61,0.0],"johni":[0,244,0.4775],"kandra":[0,1340,0.6254],"kathay":[0,5,0.0],"keron":[970,76,0.56],"kristyne":[0,396,0.5195],"kyong":[0,57,0.0],"kyung":[27,86,0.3125],"lasandra":[0,1520,0.6364],"latonia":[16,5104,0.7395],"layna":[0,3116,0.6987],"lesle":[0,187,0.4544],"libbi":[0,237,0.4749],"lindasue":[0,18,0.0],"lindora":[0,85,0.0],"linnet":[0,135,0.4261],"lloydine":[0,5,0.0],"lorelyn":[0,11,0.0],"lorra":[0,436,0.5279],"luetricia":[0,5,0.0],"lynnanne":[0,40,0.0],"lynnmarie":[0,233,0.4735],"lysandra":[0,674,0.5657],"marigail":[0,5,0.0],"marileen":[0,5,0.0],"marlina":[0,1165,0.6133],"melani":[0,5676,0.7508],"melisande":[0,26,0.0],"michiele":[0,5,0.0],"mirna":[5,4123,0.7223],"mischele":[0,121,0.4166],"mitsy":[0,204,0.4619],"mitzy":[0,1237,0.6185],"mry":[0,81,0.0],"mynette":[0,15,0.0],"nanciann":[0,5,0.0],"nancyanne":[0,5,0.0],"nanita":[0,57,0.0],"nansi":[0,167,0.4445],"nellann":[0,5,0.0],"pearlette":[0,22,0.0],"pegeen":[0,202,0.4611],"pennee":[0,29,0.0],"polley":[0,5,0.0],"raelynn":[51,32322,0.9006],"rayne":[1270,7734,0.6793],"rebecka":[0,3313,0.704],"reenie":[0,40,0.0],"rexanna":[0,107,0.4059],"rexanne":[0,220,0.4685],"rissa":[0,313,0.4991],"ronalie":[0,5,0.0],"rori":[64,3126,0.6867],"roshell":[12,593,0.5453],"rubystine":[0,10,0.0],"sabena":[0,88,0.0],"sandre":[0,16,0.0],"sharmane":[0,335,0.505],"sharmon":[7,458,0.5255],"sherrine":[0,74,0.0],"sheryel":[0,16,0.0],"shiryl":[0,72,0.0],"starleen":[0,85,0.0],"stepheny":[0,400,0.5204],"suan":[61,106,0.2822],"suesan":[0,61,0.0],"susyn":[0,5,0.0],"suz":[0,18,0.0],"sydni":[0,5353,0.7457],"tampa":[0,15,0.0],"tava":[0,460,0.5326],"tawanna":[0,3874,0.7176],"terissa":[0,239,0.4757],"terree":[0,100,0.4],"terrylee":[10,30,0.0],"treesa":[0,68,0.0],"trinda":[0,309,0.498],"trucilla":[0,5,0.0],"verlynn":[5,5,0.0],"vonceal":[0,5,0.0],"wanette":[0,85,0.0],"weida":[0,10,0.0],"yvonnia":[0,65,0.0],"zonna":[0,23,0.0],"eliezer":[7895,0,0.7795],"theartis":[22,0,0.0],"cirildo":[20,0,0.0],"bryn":[1317,7438,0.6698],"tory":[6966,3904,0.5173],"dennies":[65,0,0.0],"keno":[605,0,0.5564],"rohn":[419,0,0.5244],"terald":[62,0,0.0],"tyrell":[15987,145,0.834],"abdullah":[9045,0,0.7913],"bradlee":[3446,391,0.6438],"briant":[967,0,0.5971],"buckie":[11,0,0.0],"devin":[155685,17471,0.8991],"gumaro":[396,0,0.5195],"jaun":[546,0,0.5474],"kort":[528,0,0.5445],"kristopher":[63075,297,0.9559],"lethell":[6,0,0.0],"lynard":[107,0,0.4059],"mauri":[159,833,0.5032],"miachel":[205,0,0.4624],"shalom":[2362,1178,0.4736],"thermond":[16,0,0.0],"timon":[482,0,0.5366],"torris":[364,5,0.5064],"valiant":[207,0,0.4632],"asension":[5,0,0.0],"bradd":[653,0,0.563],"broc":[2522,0,0.6803],"cleodis":[10,0,0.0],"commer":[5,0,0.0],"conant":[5,0,0.0],"courtlandt":[16,0,0.0],"daney":[11,77,0.0],"darrin":[29581,132,0.8906],"demetrious":[1757,58,0.6309],"derrold":[10,0,0.0],"dorin":[144,21,0.3871],"dornell":[298,0,0.4948],"durbin":[5,0,0.0],"earmel":[5,0,0.0],"eddison":[509,36,0.5111],"franke":[67,0,0.0],"frizell":[5,0,0.0],"gard":[15,0,0.0],"harvester":[5,0,0.0],"jereld":[72,0,0.0],"jory":[3201,712,0.5878],"kal":[1195,0,0.6155],"kenan":[4460,30,0.7256],"lenorris":[65,0,0.0],"liam":[337540,519,0.9985],"lyon":[908,0,0.5916],"mare":[331,8,0.4941],"mikkel":[865,24,0.5739],"nathainel":[48,0,0.0],"rickye":[47,0,0.0],"shimon":[5241,0,0.7439],"sperry":[5,0,0.0],"tazewell":[5,0,0.0],"thierry":[835,32,0.5659],"tolly":[11,6,0.0],"vin":[249,5,0.4715],"waylen":[2260,63,0.655],"wilsey":[5,0,0.0],"vickii":[0,139,0.4286],"deborrah":[0,942,0.5948],"rolayne":[0,45,0.0],"tisa":[0,1447,0.6321],"brendalyn":[0,296,0.4943],"migdalia":[5,4289,0.7257],"jamelle":[809,382,0.4179],"tawn":[32,270,0.4434],"vikkie":[0,62,0.0],"lanice":[0,358,0.5108],"teresea":[0,460,0.5326],"valeri":[0,1930,0.6571],"darnetta":[0,433,0.5273],"debborah":[0,617,0.5581],"debroah":[0,1432,0.6312],"heide":[0,2103,0.6646],"kriss":[555,377,0.3537],"latisha":[38,18406,0.8514],"nikkie":[0,730,0.5727],"alissa":[31,38490,0.9164],"cinde":[0,201,0.4606],"cristi":[0,3198,0.701],"gwyned":[0,9,0.0],"ragena":[0,66,0.0],"rugenia":[0,21,0.0],"windy":[12,4965,0.7376],"catana":[0,26,0.0],"cherita":[0,1051,0.6043],"jeania":[0,374,0.5146],"lillette":[0,31,0.0],"sheilda":[0,48,0.0],"terrylea":[0,8,0.0],"wendee":[0,790,0.5795],"altheria":[0,61,0.0],"arnelle":[0,161,0.4414],"caleen":[0,106,0.4051],"cherylynn":[0,209,0.464],"darina":[0,716,0.571],"doneen":[0,66,0.0],"glories":[0,12,0.0],"hilarie":[0,771,0.5774],"jadine":[0,291,0.4928],"jina":[0,2012,0.6607],"leaann":[0,458,0.5322],"lesbia":[0,55,0.0],"lindajo":[0,20,0.0],"lynanne":[0,192,0.4567],"mayra":[345,33130,0.8956],"nicholette":[0,1290,0.6221],"nickolette":[0,131,0.4235],"reanna":[0,5569,0.7492],"shoshana":[0,5557,0.749],"sidne":[0,42,0.0],"teela":[0,841,0.585],"towanda":[0,2140,0.6661],"trudence":[0,7,0.0],"vickilee":[0,12,0.0],"viveca":[0,445,0.5297],"alannah":[0,7267,0.7723],"alisha":[131,56811,0.9489],"angelynn":[0,673,0.5656],"arlether":[0,6,0.0],"aseneth":[0,112,0.4098],"becca":[0,3311,0.704],"belenda":[0,120,0.4158],"cally":[0,1773,0.6497],"caran":[0,116,0.4129],"cherrye":[0,18,0.0],"christianne":[0,1433,0.6312],"clestine":[0,27,0.0],"cydne":[0,210,0.4644],"cynthea":[0,287,0.4916],"delbra":[0,337,0.5055],"denita":[0,2750,0.6879],"didi":[0,192,0.4567],"donise":[0,338,0.5058],"doranna":[0,28,0.0],"florastine":[0,22,0.0],"inia":[0,13,0.0],"iraida":[0,525,0.544],"jacci":[0,242,0.4768],"janci":[0,17,0.0],"karlynn":[0,408,0.5221],"katricia":[0,319,0.5008],"larosa":[0,112,0.4098],"laticia":[0,2344,0.674],"launi":[0,77,0.0],"lavenda":[0,36,0.0],"lawren":[59,1093,0.5809],"leisa":[0,4969,0.7393],"lelani":[0,973,0.5976],"lenise":[0,843,0.5852],"lesia":[0,3180,0.7005],"lindamarie":[0,63,0.0],"loletha":[0,240,0.476],"lynea":[0,388,0.5178],"lynnelle":[0,291,0.4928],"marcee":[0,703,0.5694],"mardy":[219,66,0.3773],"marguita":[0,506,0.5408],"mayna":[0,6,0.0],"nuala":[0,356,0.5103],"paget":[0,44,0.0],"radonna":[0,335,0.505],"raenette":[0,76,0.0],"robynn":[0,1304,0.6231],"roylynn":[0,6,0.0],"shawne":[429,810,0.4044],"shenna":[0,1328,0.6246],"sultana":[0,275,0.4879],"syria":[0,567,0.5507],"tawney":[0,575,0.5519],"trevia":[0,258,0.4823],"valita":[0,98,0.0],"virgena":[0,18,0.0],"adonica":[0,381,0.5162],"anamarie":[0,1366,0.6271],"antinette":[0,75,0.0],"antonieta":[0,178,0.4501],"aronda":[0,108,0.4067],"bethe":[0,34,0.0],"caffie":[0,88,0.0],"carlinda":[0,89,0.0],"caroletta":[0,20,0.0],"catharina":[0,321,0.5013],"chareen":[0,28,0.0],"charene":[0,69,0.0],"charilyn":[0,10,0.0],"charry":[0,5,0.0],"cher":[110,1721,0.6133],"cherin":[0,16,0.0],"cherree":[0,53,0.0],"cheryllee":[0,11,0.0],"christiann":[0,308,0.4977],"chrystie":[0,346,0.5078],"chyrle":[0,27,0.0],"cicily":[0,683,0.5669],"clairann":[0,5,0.0],"clarenda":[0,15,0.0],"corlyn":[0,27,0.0],"cressa":[0,41,0.0],"cristin":[120,4269,0.7086],"curtistine":[0,70,0.0],"danni":[93,2620,0.6632],"darrellyn":[0,10,0.0],"deby":[0,263,0.484],"delphenia":[0,11,0.0],"denette":[0,692,0.568],"devetta":[0,74,0.0],"dia":[117,2216,0.6398],"diahann":[0,354,0.5098],"doriann":[0,339,0.506],"earlynn":[0,10,0.0],"emilyn":[0,1500,0.6352],"etheldra":[0,5,0.0],"evalie":[0,162,0.4419],"florestela":[0,21,0.0],"genoria":[0,5,0.0],"glanda":[0,67,0.0],"glenette":[0,66,0.0],"gwinda":[0,46,0.0],"halle":[6,16153,0.8414],"hye":[0,72,0.0],"janlyn":[0,26,0.0],"jannelle":[0,1171,0.6137],"javene":[0,5,0.0],"jeanella":[0,30,0.0],"jeanni":[0,139,0.4286],"jerilene":[0,5,0.0],"jilleen":[0,138,0.428],"jimetta":[0,5,0.0],"karlotta":[0,52,0.0],"keeta":[0,56,0.0],"kevyn":[2135,240,0.6069],"kitsy":[0,10,0.0],"konda":[0,41,0.0],"konstance":[0,357,0.5105],"kristena":[0,752,0.5752],"kylene":[0,1693,0.6457],"lendia":[0,40,0.0],"lexi":[5,27641,0.8882],"lezlee":[0,483,0.5368],"lianna":[0,6217,0.7587],"linnetta":[0,15,0.0],"lloydene":[0,11,0.0],"loranne":[0,16,0.0],"lorilyn":[0,296,0.4943],"louisette":[0,5,0.0],"marcianne":[0,71,0.0],"marilena":[0,667,0.5648],"mariruth":[0,5,0.0],"maydeen":[0,5,0.0],"medina":[0,1952,0.6581],"meldora":[0,5,0.0],"melisa":[10,19054,0.8556],"michella":[0,1098,0.6081],"mirtha":[0,539,0.5463],"nikola":[3341,651,0.6028],"padgett":[0,10,0.0],"pamlea":[0,102,0.4017],"paterica":[0,28,0.0],"pricella":[0,86,0.0],"pricillia":[0,45,0.0],"rejeania":[0,10,0.0],"revon":[27,5,0.0],"robbi":[313,1586,0.5476],"sandal":[0,5,0.0],"sandar":[0,167,0.4445],"saralynn":[0,429,0.5265],"scheherazade":[0,48,0.0],"sharey":[0,10,0.0],"sharold":[0,11,0.0],"shaunna":[0,2935,0.6935],"shere":[0,253,0.4806],"sherial":[0,93,0.0],"sherine":[0,432,0.5271],"shurlene":[0,5,0.0],"sparkle":[0,1636,0.6428],"stephanye":[0,184,0.453],"sundae":[0,393,0.5189],"tamea":[0,298,0.4948],"taresa":[0,432,0.5271],"tawna":[0,889,0.5898],"tonyia":[0,572,0.5515],"twanna":[0,1333,0.625],"tywanna":[0,625,0.5592],"udelia":[0,5,0.0],"vickee":[0,79,0.0],"vonette":[0,67,0.0],"wendellyn":[0,17,0.0],"wrayanne":[0,5,0.0],"xandra":[0,514,0.5422],"ridge":[7324,13,0.7717],"menachem":[6855,0,0.7672],"vinny":[1296,0,0.6225],"rodd":[771,0,0.5774],"galin":[18,0,0.0],"geoffry":[677,0,0.5661],"jeoffrey":[244,0,0.4775],"micael":[723,0,0.5718],"rian":[5464,3464,0.4836],"richrd":[403,0,0.5211],"beasley":[11,13,0.0],"clete":[281,0,0.4897],"darrick":[8115,11,0.7809],"jersey":[593,3874,0.6331],"lan":[310,769,0.4323],"lief":[279,0,0.4891],"mitcheal":[267,0,0.4853],"randalph":[30,0,0.0],"steffen":[1493,0,0.6348],"thimothy":[756,0,0.5757],"tirso":[259,0,0.4827],"trey":[40196,97,0.9188],"whalen":[195,0,0.458],"yaakov":[5770,0,0.7522],"zackery":[17715,5,0.8495],"alvery":[5,0,0.0],"andrei":[3042,0,0.6966],"bram":[1481,0,0.6341],"brand":[289,18,0.4683],"bronce":[5,0,0.0],"charies":[5,0,0.0],"christino":[62,0,0.0],"chucky":[609,0,0.5569],"darin":[32517,364,0.8934],"denley":[52,0,0.0],"desi":[2324,1014,0.4906],"donney":[106,0,0.4051],"edawrd":[5,0,0.0],"frager":[5,0,0.0],"gawain":[85,0,0.0],"geraldo":[2390,0,0.6757],"guadlupe":[22,27,0.0],"haymon":[5,0,0.0],"jamieson":[1612,78,0.6158],"jessup":[472,0,0.5348],"jimme":[17,0,0.0],"kayle":[626,4015,0.6344],"keath":[228,0,0.4716],"kelby":[4001,1549,0.5399],"kirtland":[12,0,0.0],"kreg":[914,0,0.5922],"kregg":[393,0,0.5189],"lanty":[10,0,0.0],"lantz":[547,0,0.5476],"lash":[78,0,0.0],"luddy":[5,0,0.0],"markel":[4670,121,0.7175],"printiss":[5,0,0.0],"rad":[205,0,0.4624],"reddick":[51,0,0.0],"rhonnie":[15,6,0.0],"richy":[698,0,0.5688],"rickman":[5,0,0.0],"rinnie":[5,0,0.0],"roark":[525,0,0.544],"ruston":[910,0,0.5918],"sanjuan":[139,0,0.4286],"stepehn":[63,0,0.0],"stevon":[745,0,0.5744],"zachery":[29796,38,0.8938],"rainelle":[0,148,0.4341],"rainell":[0,38,0.0],"randye":[0,134,0.4254],"clovia":[0,100,0.4],"belynda":[0,766,0.5768],"darrylin":[0,25,0.0],"lexa":[0,1550,0.6381],"brendalee":[0,425,0.5257],"balinda":[0,648,0.5623],"charise":[0,2154,0.6666],"cindia":[0,416,0.5238],"deboraha":[0,362,0.5117],"jannene":[0,19,0.0],"jerrilyne":[0,9,0.0],"ltanya":[0,515,0.5424],"lynnett":[0,271,0.4866],"rorie":[13,1022,0.5954],"sherita":[0,4022,0.7209],"cydnee":[0,953,0.5958],"denine":[0,963,0.5967],"dereth":[0,8,0.0],"jackee":[0,322,0.5016],"jacqulynn":[0,329,0.5034],"khristine":[0,618,0.5582],"krystine":[0,928,0.5935],"larinda":[0,525,0.544],"ranell":[62,290,0.4196],"rexann":[0,124,0.4187],"caprice":[180,3369,0.674],"caresse":[0,338,0.5058],"cathyann":[0,135,0.4261],"darletta":[0,103,0.4026],"deborha":[0,1078,0.6065],"debria":[0,297,0.4946],"jacelyn":[0,2962,0.6943],"judaline":[0,7,0.0],"kathylene":[0,18,0.0],"leia":[0,17736,0.8498],"lyndee":[0,1228,0.6178],"marihelen":[0,12,0.0],"melanee":[0,1222,0.6174],"nohemi":[0,2136,0.6659],"rayette":[0,137,0.4273],"regenna":[0,33,0.0],"renaye":[0,144,0.4317],"sharmaine":[5,1668,0.6428],"shelle":[0,577,0.5522],"susian":[0,7,0.0],"wendalyn":[0,50,0.0],"yulonda":[0,962,0.5966],"alonda":[0,877,0.5886],"carlethia":[0,70,0.0],"catina":[8,4178,0.723],"charissa":[0,5131,0.742],"christia":[82,737,0.5243],"davelyn":[0,87,0.0],"deede":[0,53,0.0],"deneice":[0,290,0.4925],"donnalyn":[0,82,0.0],"edina":[0,507,0.541],"gudalupe":[5,27,0.0],"jolena":[0,1155,0.6125],"julayne":[0,33,0.0],"kayda":[0,480,0.5362],"kimm":[96,392,0.4319],"labrenda":[0,94,0.0],"launie":[0,33,0.0],"lexine":[0,306,0.4971],"lindajean":[0,18,0.0],"linetta":[0,114,0.4114],"marjan":[0,256,0.4816],"marly":[5,1635,0.641],"marvette":[0,326,0.5026],"melenie":[0,648,0.5623],"myrian":[0,173,0.4476],"patrici":[0,222,0.4693],"prima":[0,107,0.4059],"raeanne":[0,1772,0.6497],"richel":[0,110,0.4083],"sanfra":[0,6,0.0],"seri":[0,188,0.4548],"shellee":[0,859,0.5868],"stefany":[0,4276,0.7262],"vallorie":[0,99,0.0],"veloria":[0,12,0.0],"yevette":[0,839,0.5848],"abbe":[0,1325,0.6244],"anelle":[0,174,0.4481],"anida":[0,92,0.0],"aracelia":[0,462,0.5329],"berinda":[0,5,0.0],"bernia":[0,5,0.0],"blendia":[0,5,0.0],"brandi":[389,101878,0.9962],"brooksey":[0,5,0.0],"brunella":[0,75,0.0],"carissa":[12,28400,0.8903],"chaille":[0,41,0.0],"charletha":[0,65,0.0],"cherene":[0,184,0.453],"cherine":[0,127,0.4208],"cheryla":[0,5,0.0],"cherylan":[0,12,0.0],"chyrell":[0,28,0.0],"cidney":[17,875,0.5788],"cirila":[0,16,0.0],"conne":[0,15,0.0],"corraine":[0,10,0.0],"curlene":[0,15,0.0],"darra":[0,510,0.5415],"donagene":[0,5,0.0],"doniece":[0,44,0.0],"duann":[0,10,0.0],"earthel":[0,5,0.0],"eulinda":[0,5,0.0],"evangelia":[0,1147,0.6119],"fabienne":[0,488,0.5377],"giselle":[44,49377,0.9379],"guinette":[0,5,0.0],"harrilyn":[0,5,0.0],"harvetta":[0,42,0.0],"hermalinda":[0,25,0.0],"hildy":[0,201,0.4606],"honi":[0,51,0.0],"jalane":[0,20,0.0],"jannan":[0,10,0.0],"jayma":[0,386,0.5173],"jennene":[0,110,0.4083],"jerdean":[0,10,0.0],"jilene":[0,69,0.0],"jorie":[14,1317,0.6183],"juantia":[0,21,0.0],"kaffie":[0,16,0.0],"kaleen":[0,748,0.5748],"karyne":[0,21,0.0],"karynn":[0,150,0.4352],"katey":[0,2359,0.6745],"kaylen":[1317,7087,0.6619],"kaylyn":[38,11982,0.8134],"koleen":[0,233,0.4735],"kristyn":[0,8813,0.789],"krystina":[0,4817,0.7366],"laida":[0,5,0.0],"larnette":[0,5,0.0],"leaha":[0,559,0.5495],"lene":[0,277,0.4885],"liisa":[0,427,0.5261],"lovita":[0,12,0.0],"lynet":[0,18,0.0],"lynnel":[0,106,0.4051],"lynnet":[0,87,0.0],"margena":[0,17,0.0],"maricella":[0,1704,0.6463],"marshalene":[0,5,0.0],"maurica":[0,393,0.5189],"mireille":[0,838,0.5846],"monti":[395,187,0.3753],"myung":[0,11,0.0],"neenah":[0,245,0.4778],"nikita":[2865,10745,0.6527],"orfa":[0,15,0.0],"patrician":[0,10,0.0],"pauli":[0,31,0.0],"peggylee":[0,5,0.0],"quincella":[0,10,0.0],"raellen":[0,5,0.0],"raelyn":[90,15166,0.8318],"raenelle":[0,37,0.0],"renah":[0,5,0.0],"rendy":[17,141,0.3924],"rennetta":[0,17,0.0],"rivka":[0,9554,0.796],"robynne":[0,358,0.5108],"samara":[5,21802,0.8675],"saretha":[0,33,0.0],"scotti":[119,646,0.487],"sharilynn":[0,106,0.4051],"sharlan":[0,5,0.0],"sharolynn":[0,5,0.0],"shawnie":[0,559,0.5495],"shellene":[0,290,0.4925],"sherel":[0,139,0.4286],"sherralyn":[0,5,0.0],"sidni":[0,236,0.4746],"sidra":[0,1721,0.6472],"steffany":[0,1824,0.6522],"stephaine":[0,4165,0.7239],"sundy":[0,100,0.4],"sunni":[62,2466,0.6639],"suzonne":[0,40,0.0],"teddye":[0,5,0.0],"terrayne":[0,5,0.0],"thaddea":[0,5,0.0],"theresita":[0,26,0.0],"valari":[0,93,0.0],"valary":[0,88,0.0],"valerye":[0,122,0.4173],"valoria":[0,68,0.0],"yadira":[23,12777,0.82],"yasmin":[80,21471,0.8635],"yolinda":[0,181,0.4515],"zaneta":[0,956,0.5961],"zoeann":[0,122,0.4173],"ezzard":[498,0,0.5394],"keary":[580,104,0.4808],"dov":[3494,0,0.7087],"ruddie":[14,0,0.0],"tighe":[518,0,0.5429],"kimo":[859,0,0.5868],"michae":[493,52,0.4951],"timothey":[591,0,0.5543],"alaric":[3754,0,0.7149],"arn":[60,0,0.0],"brijido":[18,0,0.0],"dandy":[100,5,0.385],"deveron":[170,0,0.4461],"elijha":[753,0,0.5754],"joes":[12,0,0.0],"joh":[407,0,0.5219],"johnel":[247,5,0.4708],"ridgley":[22,10,0.0],"chic":[11,0,0.0],"chuckie":[616,0,0.5579],"demetris":[2606,892,0.528],"devron":[900,0,0.5908],"doulgas":[47,0,0.0],"franciso":[460,0,0.5326],"graylin":[529,96,0.4733],"kirtley":[12,0,0.0],"lonald":[75,0,0.0],"mickiel":[11,0,0.0],"phelan":[576,68,0.5025],"rocke":[46,0,0.0],"ruven":[112,0,0.4098],"stepehen":[26,0,0.0],"steveson":[23,0,0.0],"tyrome":[909,0,0.5917],"zalman":[665,0,0.5646],"arlanda":[25,67,0.0],"avi":[5788,816,0.6696],"bradbury":[5,0,0.0],"bradfield":[5,0,0.0],"buckey":[5,0,0.0],"cuauhtemoc":[1227,0,0.6178],"danley":[26,0,0.0],"davin":[10588,344,0.7823],"deke":[224,0,0.47],"dereck":[7900,0,0.7795],"dimitrios":[2647,0,0.6846],"errick":[1326,0,0.6245],"geffrey":[221,0,0.4689],"gerone":[49,0,0.0],"gregery":[493,0,0.5386],"hubie":[5,0,0.0],"jabier":[336,0,0.5053],"jered":[3788,0,0.7157],"jubentino":[5,0,0.0],"kipley":[27,0,0.0],"kippy":[166,102,0.3008],"kurth":[5,0,0.0],"larwrence":[33,0,0.0],"luc":[3581,0,0.7108],"malik":[48867,259,0.9333],"phyllip":[99,0,0.0],"randale":[412,0,0.523],"randloph":[53,0,0.0],"randoll":[35,0,0.0],"renfred":[10,0,0.0],"ronson":[349,0,0.5086],"rossi":[294,378,0.3181],"rustin":[2840,0,0.6907],"steaven":[249,0,0.4792],"varnum":[5,0,0.0],"wassillie":[13,0,0.0],"waynne":[5,0,0.0],"whitaker":[781,11,0.5717],"yusuf":[10755,0,0.8063],"monalisa":[0,1116,0.6095],"chaneta":[0,29,0.0],"darcel":[131,1240,0.5675],"mardeen":[0,19,0.0],"deyanne":[0,20,0.0],"chanetta":[0,80,0.0],"gladystine":[0,9,0.0],"gwendloyn":[0,88,0.0],"gwenetta":[0,223,0.4697],"lender":[0,27,0.0],"oksana":[0,1040,0.6034],"briana":[206,96680,0.9951],"candia":[0,210,0.4644],"cassandria":[0,72,0.0],"cyndra":[0,72,0.0],"darci":[0,6538,0.7631],"jinger":[0,507,0.541],"karie":[0,5349,0.7457],"tiana":[9,29351,0.8933],"bethanie":[0,3725,0.7142],"darlin":[82,810,0.5358],"devonda":[0,231,0.4727],"dineen":[0,430,0.5267],"estelita":[0,69,0.0],"evonnie":[0,12,0.0],"frann":[0,45,0.0],"gwendel":[0,7,0.0],"jacquenette":[0,47,0.0],"jenel":[0,510,0.5415],"jenise":[0,2785,0.689],"jennefer":[0,1498,0.6351],"jodeane":[0,14,0.0],"karlyne":[0,13,0.0],"kela":[0,901,0.5909],"kerrin":[10,1004,0.5953],"koren":[254,1519,0.5567],"layla":[109,123729,0.9991],"leellen":[0,34,0.0],"lindie":[0,416,0.5238],"nechama":[0,3908,0.7184],"richarda":[0,31,0.0],"shann":[281,214,0.3059],"shea":[8427,12363,0.5135],"tammi":[0,13884,0.8285],"vallarie":[0,138,0.428],"aisha":[27,26021,0.8822],"alysia":[0,9470,0.7953],"army":[0,6,0.0],"ayesha":[0,6538,0.7631],"blima":[0,1512,0.6359],"brena":[0,794,0.58],"bretta":[0,419,0.5244],"cathalene":[0,21,0.0],"catrina":[0,10138,0.8012],"corinn":[0,643,0.5616],"dayla":[0,2008,0.6606],"delanna":[0,217,0.4673],"deneise":[0,278,0.4888],"ebony":[455,38975,0.9086],"elysa":[0,1509,0.6357],"gerrianne":[0,111,0.4091],"guadelupe":[0,34,0.0],"joli":[0,1155,0.6125],"kaleta":[0,12,0.0],"kathyanne":[0,6,0.0],"kelle":[43,2302,0.6617],"kerstin":[0,2535,0.6808],"kirstie":[0,4151,0.7236],"kriste":[0,620,0.5585],"larina":[0,450,0.5306],"latina":[0,2049,0.6623],"leretha":[0,6,0.0],"lesleigh":[0,487,0.5375],"liliana":[157,71836,0.9693],"lyanne":[0,420,0.5246],"lynnann":[0,296,0.4943],"magali":[6,3531,0.7085],"maia":[0,17481,0.8485],"martene":[0,33,0.0],"mevelyn":[0,18,0.0],"molli":[0,1980,0.6593],"nori":[213,2833,0.648],"orysia":[0,11,0.0],"randine":[0,22,0.0],"reyne":[0,234,0.4738],"rhesa":[0,134,0.4254],"rochele":[0,512,0.5419],"rosezena":[0,6,0.0],"roxianne":[0,27,0.0],"shellye":[0,174,0.4481],"staci":[60,25481,0.8794],"steffanie":[0,2539,0.6809],"tylene":[0,365,0.5125],"ulanda":[0,364,0.5122],"vickki":[0,97,0.0],"vivica":[0,951,0.5956],"wyvonnia":[0,11,0.0],"abagail":[0,5882,0.7539],"alyssa":[432,313912,0.9986],"anell":[0,47,0.0],"ardia":[0,5,0.0],"beather":[0,5,0.0],"bobbetta":[0,10,0.0],"brenita":[0,55,0.0],"cala":[0,493,0.5386],"cammy":[0,1556,0.6384],"cathlean":[0,5,0.0],"caye":[0,47,0.0],"charmel":[0,214,0.4661],"cherisse":[0,1064,0.6054],"chinita":[0,264,0.4843],"cloretta":[0,23,0.0],"cricket":[0,630,0.5599],"daiva":[0,53,0.0],"damita":[0,1507,0.6356],"darcella":[0,143,0.4311],"dareen":[10,450,0.521],"darliss":[0,10,0.0],"davee":[11,10,0.0],"debbrah":[0,114,0.4114],"debe":[0,122,0.4173],"delice":[0,15,0.0],"deri":[0,50,0.0],"digna":[0,496,0.5391],"donalynn":[0,5,0.0],"donneta":[0,5,0.0],"donnise":[0,44,0.0],"driscilla":[0,5,0.0],"elonda":[0,575,0.5519],"evorn":[0,5,0.0],"fabiene":[0,5,0.0],"franne":[0,5,0.0],"geradine":[0,10,0.0],"geraldina":[0,85,0.0],"geryl":[10,95,0.3657],"gillermina":[0,30,0.0],"gonzella":[0,5,0.0],"graciella":[0,1073,0.6061],"guyann":[0,5,0.0],"hali":[10,4614,0.7314],"janora":[0,106,0.4051],"jennelle":[0,1103,0.6085],"jerona":[0,15,0.0],"jerrlyn":[0,5,0.0],"jillyn":[0,171,0.4466],"johnanna":[0,59,0.0],"jori":[196,2204,0.6208],"karrin":[0,367,0.5129],"kasey":[12442,33220,0.678],"katheran":[0,15,0.0],"kelleen":[0,653,0.563],"kita":[0,176,0.4491],"korene":[0,205,0.4624],"kym":[173,1297,0.5589],"layvonne":[0,5,0.0],"learta":[0,5,0.0],"lewanda":[0,169,0.4456],"lynder":[0,5,0.0],"lyndy":[0,459,0.5324],"margette":[0,5,0.0],"marlyse":[0,40,0.0],"marval":[0,5,0.0],"melene":[0,28,0.0],"meredeth":[0,103,0.4026],"milissa":[0,3003,0.6955],"mindi":[0,4405,0.7288],"mylene":[0,852,0.5861],"nadara":[0,5,0.0],"nanda":[5,65,0.0],"nanine":[0,46,0.0],"nivia":[0,560,0.5496],"nonah":[0,5,0.0],"paola":[148,24314,0.8724],"particia":[0,111,0.4091],"pearletha":[0,5,0.0],"raguel":[0,318,0.5005],"randalyn":[0,74,0.0],"randeen":[0,5,0.0],"randene":[0,5,0.0],"redia":[0,43,0.0],"renaee":[0,15,0.0],"rhina":[0,106,0.4051],"riesa":[0,10,0.0],"rosi":[0,425,0.5257],"ruta":[0,322,0.5016],"saratha":[0,5,0.0],"satira":[0,35,0.0],"sela":[0,1299,0.6227],"shannan":[317,5162,0.7045],"sharia":[0,653,0.563],"sharl":[0,52,0.0],"shaune":[444,335,0.3296],"shayla":[17,30817,0.8973],"sherrilee":[0,44,0.0],"silvana":[0,2372,0.675],"steva":[0,34,0.0],"suzzanna":[0,20,0.0],"synetta":[0,48,0.0],"tacey":[0,305,0.4969],"tamala":[0,2873,0.6917],"tarri":[0,280,0.4894],"tawni":[0,1876,0.6546],"tawnya":[0,4943,0.7388],"terrea":[0,92,0.0],"tiajuana":[0,374,0.5146],"tonye":[0,68,0.0],"torrie":[586,2873,0.5879],"trinna":[0,134,0.4254],"truddie":[0,5,0.0],"tyna":[0,628,0.5596],"unk":[37,17,0.0],"valdene":[0,5,0.0],"valri":[0,36,0.0],"vania":[0,2932,0.6934],"verneita":[0,5,0.0],"veronda":[0,360,0.5113],"vevelyn":[0,29,0.0],"viktoria":[0,2599,0.683],"vilinda":[0,16,0.0],"virlinda":[0,5,0.0],"volanda":[0,97,0.0],"wyline":[0,5,0.0],"zorita":[0,10,0.0],"broderick":[8900,0,0.7899],"grayling":[529,0,0.5447],"ihor":[164,0,0.443],"cristopher":[11770,0,0.8142],"moishe":[1171,0,0.6137],"alric":[249,0,0.4792],"nicholaus":[3255,0,0.7025],"shon":[5163,358,0.6999],"christoper":[3156,0,0.6998],"leartis":[19,0,0.0],"mordechai":[6578,0,0.7636],"rickford":[18,0,0.0],"dannial":[39,0,0.0],"derk":[506,0,0.5408],"derrek":[3042,0,0.6966],"michaell":[414,5,0.5182],"skeet":[29,0,0.0],"skeeter":[126,13,0.3885],"steffan":[1397,0,0.629],"andris":[217,0,0.4673],"avram":[913,0,0.5921],"bevin":[136,1037,0.5427],"chevis":[264,11,0.4684],"cresenciano":[6,0,0.0],"dagoberto":[1724,0,0.6473],"felizardo":[6,0,0.0],"frosty":[6,0,0.0],"jarome":[221,0,0.4689],"jonothan":[882,0,0.5891],"karsten":[3225,167,0.6713],"larwance":[11,0,0.0],"ledon":[75,0,0.0],"nicholes":[879,0,0.5888],"oleh":[54,0,0.0],"princeton":[9828,0,0.7985],"rocklin":[136,5,0.4146],"terrial":[28,0,0.0],"thurnell":[6,0,0.0],"tor":[869,0,0.5878],"vonn":[310,5,0.4917],"yehuda":[7525,0,0.7753],"ahmad":[19936,18,0.8592],"ainsley":[418,19845,0.8436],"algis":[104,0,0.4034],"alray":[5,0,0.0],"andrey":[2675,100,0.6638],"ashok":[258,0,0.4823],"bartholome":[23,0,0.0],"bolling":[5,0,0.0],"brain":[4596,10,0.7311],"claven":[5,0,0.0],"darus":[84,0,0.0],"durel":[31,0,0.0],"eliverto":[5,0,0.0],"forde":[5,0,0.0],"froylan":[656,0,0.5634],"gattis":[5,0,0.0],"gomez":[5,0,0.0],"grayland":[202,0,0.4611],"graylon":[354,0,0.5098],"havery":[5,0,0.0],"henrey":[5,0,0.0],"inocente":[65,0,0.0],"jairo":[11229,0,0.8101],"jamel":[11178,367,0.7867],"jamse":[57,0,0.0],"jaymes":[2414,137,0.6448],"jefrey":[767,0,0.577],"juris":[46,0,0.0],"karlis":[72,0,0.0],"kavin":[2907,0,0.6927],"keane":[1474,0,0.6337],"kennyth":[21,0,0.0],"kevon":[5405,56,0.7398],"ky":[1474,154,0.5816],"lamount":[200,0,0.4602],"leverette":[5,0,0.0],"lonne":[40,0,0.0],"mikle":[111,0,0.4091],"montel":[1549,0,0.638],"peterson":[810,0,0.5817],"radames":[819,0,0.5827],"raj":[2155,0,0.6667],"reche":[5,0,0.0],"reggy":[52,0,0.0],"rendall":[47,0,0.0],"rennis":[5,0,0.0],"rik":[288,0,0.4919],"stann":[5,0,0.0],"stark":[244,0,0.4775],"steen":[151,0,0.4358],"stevphen":[26,0,0.0],"terrall":[130,0,0.4228],"tery":[131,34,0.3521],"thornell":[17,0,0.0],"vonzell":[167,0,0.4445],"yisroel":[6506,0,0.7627],"debralee":[0,198,0.4593],"deniese":[0,353,0.5096],"joshlyn":[5,1289,0.62],"ilze":[0,68,0.0],"darcell":[170,506,0.4237],"mala":[0,688,0.5675],"shaye":[664,2179,0.5294],"piper":[216,60757,0.9536],"shae":[1617,5972,0.6107],"zelinda":[0,47,0.0],"christe":[0,331,0.504],"darah":[0,1053,0.6045],"patriciajo":[0,30,0.0],"vandetta":[0,38,0.0],"bathsheba":[0,365,0.5125],"glenalee":[0,9,0.0],"kyna":[0,1062,0.6052],"lynnis":[0,9,0.0],"milagro":[32,1828,0.6427],"sylvana":[0,804,0.5811],"acquanette":[0,13,0.0],"annina":[0,151,0.4358],"cathlin":[0,116,0.4129],"corla":[0,56,0.0],"dawnell":[0,369,0.5134],"ellyce":[0,132,0.4241],"evonda":[0,193,0.4571],"gitty":[0,3519,0.7093],"glennetta":[0,32,0.0],"joslin":[10,1401,0.6254],"leslea":[0,349,0.5086],"magaly":[0,5235,0.7438],"scherri":[0,55,0.0],"sherrilynn":[0,210,0.4644],"yasmine":[5,13600,0.8264],"aleasa":[0,23,0.0],"dawnette":[0,656,0.5634],"deborahann":[0,134,0.4254],"deboria":[0,52,0.0],"desnee":[0,7,0.0],"djuana":[0,669,0.5651],"eneida":[0,876,0.5885],"glynnis":[0,559,0.5495],"indra":[117,803,0.5174],"jancy":[5,323,0.4955],"january":[0,2160,0.6669],"josalyn":[0,2113,0.665],"katrin":[0,1091,0.6076],"kimberlie":[0,3672,0.713],"kristal":[0,12065,0.8163],"maripat":[0,101,0.4009],"meria":[0,137,0.4273],"racquel":[5,4756,0.7348],"randolyn":[0,18,0.0],"sali":[0,7,0.0],"sonseeahray":[0,12,0.0],"spring":[0,3511,0.7091],"vicktoria":[0,387,0.5175],"wendeline":[0,12,0.0],"zanetta":[0,383,0.5166],"zinda":[0,31,0.0],"aide":[0,1996,0.66],"alesa":[0,926,0.5933],"altheia":[0,72,0.0],"belem":[0,296,0.4943],"carly":[160,66214,0.9621],"chava":[0,3432,0.7071],"chelle":[0,343,0.5071],"cythia":[0,401,0.5206],"dawnita":[0,348,0.5083],"debie":[0,443,0.5293],"deborh":[0,143,0.4311],"delise":[0,318,0.5005],"denease":[0,42,0.0],"dorri":[0,155,0.4381],"duska":[0,36,0.0],"evita":[0,1239,0.6186],"franchester":[0,32,0.0],"gaal":[0,17,0.0],"geriann":[0,206,0.4628],"ghislaine":[0,190,0.4558],"iristine":[0,11,0.0],"jaculin":[0,94,0.0],"jenith":[0,6,0.0],"jilla":[0,6,0.0],"jineen":[0,31,0.0],"jolleen":[0,137,0.4273],"jurate":[0,6,0.0],"kathileen":[0,29,0.0],"kathleenmary":[0,6,0.0],"kimberli":[0,3932,0.7189],"korla":[0,12,0.0],"larysa":[0,155,0.4381],"lawrie":[0,131,0.4235],"leanda":[0,215,0.4665],"levette":[0,241,0.4764],"liann":[0,503,0.5403],"manina":[0,38,0.0],"masha":[0,554,0.5487],"mirella":[0,3232,0.7019],"mireya":[0,9737,0.7977],"nia":[10,25013,0.8793],"norreen":[0,6,0.0],"ojetta":[0,6,0.0],"pamelyn":[0,118,0.4144],"patrece":[0,325,0.5024],"quanda":[0,506,0.5408],"rebeccah":[0,1571,0.6392],"robbe":[23,6,0.0],"samia":[0,3508,0.709],"saran":[25,643,0.5438],"shelene":[0,321,0.5013],"sonji":[0,904,0.5912],"stephaney":[0,422,0.5251],"tanice":[0,66,0.0],"tira":[0,979,0.5982],"towanna":[0,708,0.57],"valen":[1265,482,0.4695],"vannessa":[0,3232,0.7019],"wonder":[15,252,0.458],"alphea":[0,5,0.0],"aprill":[0,406,0.5217],"avra":[0,60,0.0],"ballarie":[0,5,0.0],"bilinda":[0,47,0.0],"buffy":[6,3306,0.7027],"candas":[0,168,0.4451],"candiace":[0,94,0.0],"caterine":[0,68,0.0],"cathyleen":[0,15,0.0],"cecilee":[0,218,0.4677],"cerise":[0,768,0.5771],"charlona":[0,5,0.0],"chequita":[0,325,0.5024],"cherrilynn":[0,5,0.0],"chiara":[0,5699,0.7512],"chrislyn":[0,665,0.5646],"christinea":[0,92,0.0],"chryel":[0,22,0.0],"cinder":[0,64,0.0],"condol":[0,5,0.0],"cristeen":[0,5,0.0],"daena":[0,638,0.561],"daniella":[6,33228,0.9042],"danuta":[0,142,0.4305],"dawana":[0,533,0.5453],"deboran":[0,33,0.0],"dejuana":[0,286,0.4913],"delisa":[0,3251,0.7024],"denelle":[6,637,0.5564],"dianalynn":[0,10,0.0],"dicki":[0,5,0.0],"dionna":[5,3767,0.7144],"elisse":[0,504,0.5405],"fayleen":[0,5,0.0],"feige":[0,186,0.4539],"fracine":[0,5,0.0],"franda":[0,5,0.0],"franny":[0,122,0.4173],"franzetta":[0,15,0.0],"georgiane":[0,5,0.0],"geradette":[0,16,0.0],"gianna":[73,104625,0.9993],"jackilyn":[0,313,0.4991],"jacquette":[0,158,0.4397],"jamae":[5,74,0.0],"janica":[0,593,0.5546],"jasmin":[589,44904,0.9195],"jillane":[0,119,0.4151],"jonalyn":[0,223,0.4697],"karne":[0,135,0.4261],"kathyann":[0,171,0.4466],"kathyrne":[0,10,0.0],"kellee":[16,3714,0.7113],"kimberle":[0,1219,0.6172],"kimbra":[0,1226,0.6177],"ladeana":[0,280,0.4894],"laima":[0,43,0.0],"lalani":[0,356,0.5103],"larhonda":[0,2509,0.6799],"larisa":[0,3444,0.7074],"lashell":[0,999,0.5999],"latonya":[67,21757,0.8651],"laurrine":[0,5,0.0],"leasa":[0,922,0.5929],"lenae":[0,791,0.5796],"levearn":[0,5,0.0],"lorann":[0,104,0.4034],"loryn":[0,1684,0.6453],"loujean":[0,11,0.0],"lysa":[0,761,0.5763],"machell":[0,520,0.5432],"maret":[0,45,0.0],"margaretjo":[0,5,0.0],"maricia":[0,353,0.5096],"marietha":[0,14,0.0],"marisella":[0,481,0.5364],"marjeanne":[0,5,0.0],"maryelaine":[0,5,0.0],"medra":[0,16,0.0],"meryll":[0,5,0.0],"michealene":[0,5,0.0],"mikelyn":[0,39,0.0],"miroslava":[0,797,0.5803],"muzette":[0,10,0.0],"nitza":[0,547,0.5476],"patericia":[0,22,0.0],"patia":[0,50,0.0],"patryce":[0,114,0.4114],"pattiann":[0,169,0.4456],"ppatricia":[0,10,0.0],"prenella":[0,5,0.0],"robecca":[0,163,0.4424],"rodonna":[0,5,0.0],"romina":[0,6676,0.7649],"ronnelle":[7,16,0.0],"rosamund":[0,193,0.4571],"rosane":[0,10,0.0],"rosland":[0,281,0.4897],"rwanda":[0,10,0.0],"senoria":[0,17,0.0],"sheary":[0,5,0.0],"sheldia":[0,5,0.0],"shell":[113,198,0.3174],"sherlin":[0,769,0.5772],"stephene":[0,281,0.4897],"sundee":[0,282,0.49],"synda":[0,61,0.0],"tamika":[90,22759,0.8683],"tangie":[0,1149,0.6121],"tarrie":[5,104,0.3888],"tawnie":[0,871,0.588],"teina":[0,30,0.0],"teletha":[0,86,0.0],"tijuana":[0,1337,0.6252],"tinka":[0,10,0.0],"tracee":[10,3413,0.7048],"troylene":[0,23,0.0],"usha":[0,152,0.4364],"valleri":[0,76,0.0],"veena":[0,618,0.5582],"wendella":[0,41,0.0],"yolander":[0,274,0.4876],"yolonde":[0,5,0.0],"cedrick":[6307,10,0.7589],"choya":[73,16,0.0],"cregg":[179,0,0.4506],"lavance":[252,0,0.4803],"bradshaw":[68,0,0.0],"christofer":[3834,0,0.7167],"danile":[190,5,0.4463],"gregrey":[224,0,0.47],"keevin":[603,0,0.5561],"sigfredo":[252,0,0.4803],"sylester":[18,0,0.0],"brick":[452,0,0.531],"christpher":[1304,0,0.6231],"daniell":[831,2047,0.4921],"derris":[416,0,0.5238],"duston":[1165,0,0.6133],"gerod":[295,0,0.494],"humphery":[6,0,0.0],"kernis":[6,0,0.0],"kimmy":[277,1084,0.4992],"kipton":[1301,0,0.6229],"meir":[4356,0,0.7278],"ranford":[6,0,0.0],"timithy":[391,0,0.5184],"yosef":[10192,0,0.8017],"zale":[187,0,0.4544],"zev":[4869,0,0.7375],"zvi":[665,0,0.5646],"aldwin":[134,0,0.4254],"aly":[700,1442,0.4485],"andrie":[39,0,0.0],"arunas":[17,0,0.0],"benjiam":[5,0,0.0],"bron":[416,0,0.5238],"buz":[29,0,0.0],"cappy":[5,5,0.0],"christon":[1229,231,0.5327],"christophor":[537,0,0.546],"daral":[23,0,0.0],"darrie":[104,21,0.3489],"declan":[55965,386,0.9437],"dougals":[47,0,0.0],"dozie":[5,0,0.0],"dywane":[261,0,0.4833],"eleasar":[32,0,0.0],"gawaine":[5,0,0.0],"gerld":[16,0,0.0],"igor":[791,0,0.5796],"jhan":[204,5,0.4529],"joseluis":[4274,0,0.7262],"kaven":[929,0,0.5936],"kimbal":[56,5,0.0],"kurby":[5,0,0.0],"laddy":[16,0,0.0],"lanford":[16,0,0.0],"leandre":[1639,15,0.6379],"leoncio":[512,0,0.5419],"linas":[117,0,0.4136],"lindsley":[15,15,0.0],"linnis":[5,0,0.0],"lynel":[15,64,0.0],"lynus":[15,0,0.0],"marque":[1035,140,0.5408],"micahel":[1412,0,0.63],"mitchum":[44,0,0.0],"naftali":[1965,0,0.6587],"patrich":[76,0,0.0],"phillipe":[623,0,0.5589],"philp":[5,0,0.0],"pomposo":[5,0,0.0],"rajah":[435,175,0.3973],"randoph":[16,0,0.0],"rayfus":[42,0,0.0],"raynoldo":[5,0,0.0],"renardo":[780,12,0.571],"reney":[5,0,0.0],"robertt":[63,0,0.0],"serjio":[1002,0,0.6002],"stover":[5,0,0.0],"sugar":[46,135,0.3368],"tippy":[5,6,0.0],"umar":[3025,0,0.6961],"wali":[1192,0,0.6153],"weylin":[660,0,0.5639],"win":[170,16,0.4149],"terria":[0,1059,0.605],"darcelle":[0,361,0.5115],"aprille":[0,518,0.5429],"barbe":[0,36,0.0],"birute":[0,23,0.0],"darnice":[0,157,0.4392],"dinna":[0,170,0.4461],"kathyjo":[0,129,0.4221],"kimmie":[131,1263,0.5698],"shena":[0,2356,0.6744],"darcee":[0,518,0.5429],"deborahh":[0,23,0.0],"krystyna":[0,1654,0.6437],"rocio":[426,13287,0.8017],"terasa":[0,367,0.5129],"twinkle":[0,84,0.0],"darnise":[0,116,0.4129],"gerriann":[0,57,0.0],"ilyse":[0,385,0.5171],"redonna":[0,191,0.4562],"sheilagh":[0,56,0.0],"shirlynn":[0,48,0.0],"ambra":[0,906,0.5914],"aquanetta":[0,207,0.4632],"bendetta":[0,24,0.0],"brender":[0,24,0.0],"ceceila":[0,32,0.0],"celita":[0,207,0.4632],"charliss":[0,7,0.0],"crystle":[0,1187,0.6149],"danon":[261,30,0.442],"fancy":[0,562,0.5499],"florenda":[0,121,0.4166],"jania":[0,2999,0.6954],"jillayne":[0,137,0.4273],"joselle":[0,191,0.4562],"kalli":[0,5262,0.7442],"laronda":[0,2289,0.6719],"letticia":[0,581,0.5528],"marnice":[0,42,0.0],"roben":[130,314,0.3744],"sharmayne":[0,246,0.4782],"stephine":[0,1685,0.6453],"teana":[0,1000,0.6],"thersea":[0,125,0.4194],"tris":[59,132,0.3153],"vali":[44,141,0.3456],"yavonne":[0,216,0.4669],"alamar":[0,16,0.0],"alarice":[0,16,0.0],"aliza":[5,11546,0.8122],"ariane":[5,3758,0.7142],"brindle":[0,78,0.0],"brynne":[0,2664,0.6851],"caroljo":[0,6,0.0],"cerita":[0,104,0.4034],"charman":[0,154,0.4375],"chrisanna":[0,80,0.0],"christan":[1570,1366,0.3709],"contance":[0,12,0.0],"daniele":[780,3557,0.5966],"danute":[0,11,0.0],"debar":[0,130,0.4228],"denisa":[0,994,0.5995],"desa":[0,239,0.4757],"devie":[0,35,0.0],"doyla":[0,21,0.0],"gaya":[0,73,0.0],"geneen":[0,227,0.4712],"glenise":[0,26,0.0],"gyda":[0,43,0.0],"holiday":[0,414,0.5234],"jacalynn":[0,100,0.4],"jacqua":[0,33,0.0],"jillana":[0,110,0.4083],"joslynn":[0,3293,0.7035],"keran":[5,25,0.0],"kina":[0,1411,0.6299],"koni":[0,282,0.49],"kristel":[0,2959,0.6942],"lenee":[0,480,0.5362],"liesa":[0,392,0.5187],"lonette":[0,198,0.4593],"louretha":[0,6,0.0],"lyndora":[0,52,0.0],"maija":[0,1181,0.6144],"malke":[0,30,0.0],"marte":[139,35,0.358],"maryse":[0,127,0.4208],"meghan":[227,96398,0.9947],"mellisa":[0,4575,0.7321],"meritta":[0,11,0.0],"merlena":[0,6,0.0],"misti":[0,8324,0.7841],"monet":[6,4505,0.7299],"paulanne":[0,22,0.0],"reisa":[0,60,0.0],"rennee":[0,153,0.4369],"samaria":[0,4406,0.7288],"sandia":[0,77,0.0],"skye":[2844,23684,0.7899],"soraida":[0,542,0.5468],"stephnie":[0,530,0.5449],"ulana":[0,18,0.0],"valori":[0,297,0.4946],"venette":[0,27,0.0],"winette":[0,22,0.0],"alegra":[0,386,0.5173],"alivia":[15,34158,0.9063],"andreana":[0,1809,0.6515],"andrene":[0,25,0.0],"andretta":[0,289,0.4922],"angila":[0,613,0.5575],"auria":[0,1217,0.6171],"banita":[0,96,0.0],"benda":[0,5,0.0],"billiejo":[0,1464,0.6331],"breda":[0,91,0.0],"buff":[31,47,0.0],"calli":[0,4491,0.7305],"canice":[0,38,0.0],"casondra":[0,1061,0.6051],"cathirine":[0,10,0.0],"celeta":[0,24,0.0],"ceri":[0,78,0.0],"chavela":[0,120,0.4158],"chrystle":[0,249,0.4792],"claudea":[0,5,0.0],"darrilyn":[0,51,0.0],"dawnetta":[0,302,0.496],"deanette":[0,114,0.4114],"debborrah":[0,17,0.0],"debbye":[0,47,0.0],"debhora":[0,65,0.0],"debrea":[0,5,0.0],"delaina":[0,1583,0.6399],"delephine":[0,5,0.0],"delynne":[0,35,0.0],"devi":[0,965,0.5969],"devone":[730,122,0.5022],"doncella":[0,36,0.0],"donene":[0,39,0.0],"donica":[0,802,0.5808],"donnajo":[0,27,0.0],"doreena":[0,259,0.4827],"druann":[0,37,0.0],"druanne":[0,63,0.0],"duretta":[0,11,0.0],"esthela":[0,395,0.5193],"estrelita":[0,24,0.0],"evaughn":[0,10,0.0],"evyonne":[0,11,0.0],"fayla":[0,21,0.0],"fayth":[0,2045,0.6621],"graice":[0,21,0.0],"gricelda":[0,1577,0.6396],"ivelisse":[0,1763,0.6493],"jacintha":[0,33,0.0],"jamesena":[0,10,0.0],"janay":[0,5817,0.7529],"jauna":[0,95,0.0],"jennilee":[0,483,0.5368],"jodel":[0,65,0.0],"joeen":[0,5,0.0],"jonice":[0,96,0.0],"kacey":[3119,11749,0.6594],"kalen":[4556,1458,0.5726],"karman":[66,592,0.5071],"kathran":[0,5,0.0],"kathyren":[0,29,0.0],"katrenia":[0,217,0.4673],"keena":[141,2196,0.6331],"kenya":[2141,25340,0.8186],"kimberely":[0,2300,0.6723],"kindra":[0,3877,0.7177],"kirsti":[0,1010,0.6009],"krys":[17,47,0.0],"lanea":[0,573,0.5516],"lanett":[0,130,0.4228],"larkie":[5,5,0.0],"laurianne":[0,229,0.472],"lauryn":[12,22003,0.8681],"lavenna":[0,5,0.0],"lejoyce":[0,5,0.0],"lessa":[0,148,0.4341],"leza":[0,304,0.4966],"li":[132,251,0.3386],"ligita":[0,5,0.0],"lilita":[0,5,0.0],"loutricia":[0,5,0.0],"luvonne":[0,5,0.0],"maggi":[0,781,0.5785],"margrit":[0,61,0.0],"matricia":[0,58,0.0],"mecca":[759,2263,0.5212],"mica":[958,2693,0.5255],"moria":[0,557,0.5492],"netra":[0,193,0.4571],"noretha":[0,5,0.0],"patrycia":[0,48,0.0],"paule":[0,18,0.0],"penella":[0,5,0.0],"rai":[350,136,0.387],"rasa":[5,97,0.382],"reginna":[0,102,0.4017],"rifka":[0,728,0.5724],"roshelle":[0,850,0.5859],"sadra":[13,33,0.0],"sharmin":[0,363,0.512],"sherly":[0,1050,0.6042],"shryl":[0,54,0.0],"sunnye":[0,29,0.0],"susin":[0,5,0.0],"tambra":[0,1817,0.6519],"terecia":[0,91,0.0],"theresaann":[0,41,0.0],"trinka":[0,81,0.0],"tudy":[0,5,0.0],"vandra":[0,5,0.0],"varetta":[0,63,0.0],"veronique":[0,1449,0.6322],"vickiann":[0,15,0.0],"vija":[0,5,0.0],"faron":[2411,52,0.664],"gevan":[12,0,0.0],"zbigniew":[28,0,0.0],"adriel":[29712,1091,0.8659],"carlester":[74,0,0.0],"athony":[516,0,0.5425],"timoth":[113,0,0.4106],"darr":[52,0,0.0],"garrette":[370,0,0.5136],"gunars":[13,0,0.0],"kennan":[1210,53,0.5943],"michle":[8,0,0.0],"benji":[2142,63,0.6496],"deric":[4733,0,0.735],"derik":[5481,0,0.7478],"gardell":[47,0,0.0],"marques":[8045,23,0.7791],"michall":[132,0,0.4241],"neri":[645,220,0.438],"randyl":[55,11,0.0],"robertlee":[76,0,0.0],"roc":[279,0,0.4891],"vandon":[52,0,0.0],"aundre":[1288,0,0.622],"burce":[22,0,0.0],"creg":[247,0,0.4785],"davi":[1938,621,0.5162],"freddick":[21,0,0.0],"irv":[14,0,0.0],"jarett":[3557,0,0.7102],"javen":[3423,100,0.6892],"philliph":[21,0,0.0],"steuart":[6,0,0.0],"valdis":[82,0,0.0],"vyto":[6,0,0.0],"yitzchok":[5181,0,0.7429],"abrahm":[801,0,0.5807],"alywin":[5,0,0.0],"arnis":[17,0,0.0],"berel":[181,0,0.4515],"christoph":[1178,0,0.6142],"dainel":[92,0,0.0],"dannel":[120,20,0.3679],"darious":[1550,0,0.6381],"devereaux":[207,35,0.4078],"dex":[638,0,0.561],"eisenhower":[5,0,0.0],"erasto":[145,0,0.4323],"farren":[315,722,0.4199],"garett":[4934,0,0.7386],"gerad":[594,0,0.5548],"gergory":[440,0,0.5287],"gipson":[10,0,0.0],"gregorey":[92,0,0.0],"jeddie":[5,0,0.0],"jeffries":[10,0,0.0],"keefe":[658,0,0.5636],"kipling":[389,0,0.518],"kory":[14350,1330,0.7679],"kurtiss":[245,0,0.4778],"lachlan":[5640,281,0.7187],"leedell":[16,0,0.0],"lowrie":[5,0,0.0],"marke":[159,5,0.4295],"mckinely":[5,0,0.0],"mcrae":[31,5,0.0],"mickal":[72,0,0.0],"natheniel":[10,0,0.0],"noren":[5,0,0.0],"piers":[290,0,0.4925],"randahl":[53,0,0.0],"rennard":[59,0,0.0],"richaad":[5,0,0.0],"richardd":[31,0,0.0],"shephard":[68,0,0.0],"tae":[440,103,0.4432],"tedrick":[750,0,0.575],"terriel":[32,5,0.0],"vytas":[15,0,0.0],"trenace":[0,100,0.4],"angeli":[0,1564,0.6388],"barbi":[0,586,0.5536],"lezli":[0,348,0.5083],"taryn":[733,25650,0.8597],"tenley":[5,6781,0.7658],"judalon":[0,11,0.0],"pier":[119,364,0.4045],"joa":[53,47,0.212],"shermane":[0,32,0.0],"angelic":[0,3843,0.7169],"jaclynne":[0,149,0.4346],"jerilou":[0,9,0.0],"karri":[0,4485,0.7304],"shelita":[0,966,0.597],"sher":[168,124,0.2837],"sherriel":[0,20,0.0],"vanassa":[0,369,0.5134],"angelea":[0,1017,0.6015],"cylinda":[0,78,0.0],"debroh":[0,65,0.0],"delyn":[11,57,0.0],"denell":[58,419,0.4706],"deonn":[0,13,0.0],"gerilynn":[0,181,0.4515],"graceanne":[0,460,0.5326],"karlette":[0,58,0.0],"keryl":[0,66,0.0],"moni":[6,88,0.0],"noli":[0,36,0.0],"rachiel":[0,44,0.0],"reene":[0,118,0.4144],"tyann":[0,896,0.5905],"vanessia":[0,297,0.4946],"yocheved":[0,2353,0.6743],"yolette":[0,115,0.4121],"andrina":[0,712,0.5705],"annalisa":[0,5902,0.7542],"brendell":[5,19,0.0],"capri":[119,5883,0.7407],"carlla":[0,7,0.0],"cristene":[0,33,0.0],"cynithia":[0,220,0.4685],"darise":[0,18,0.0],"darnette":[0,75,0.0],"daviette":[0,7,0.0],"deb":[0,1450,0.6323],"dedorah":[0,36,0.0],"denene":[0,351,0.5091],"earlette":[0,7,0.0],"felisha":[0,5903,0.7542],"finesse":[47,195,0.3842],"glendoria":[0,30,0.0],"holle":[0,77,0.0],"inette":[0,69,0.0],"janiene":[0,121,0.4166],"kare":[0,109,0.4075],"kennette":[0,163,0.4424],"krisanne":[0,297,0.4946],"latitia":[0,490,0.538],"leontyne":[0,213,0.4657],"lurean":[0,7,0.0],"lyann":[5,286,0.4843],"malana":[0,1194,0.6154],"marisol":[315,34610,0.9004],"shron":[0,97,0.0],"sunee":[0,52,0.0],"tersa":[0,222,0.4693],"tonga":[0,159,0.4403],"toniette":[0,67,0.0],"toyia":[0,565,0.5504],"valleria":[0,12,0.0],"vanesa":[5,6510,0.7622],"vincene":[0,7,0.0],"wyetta":[0,22,0.0],"yelonda":[0,46,0.0],"alysa":[0,7041,0.7695],"angelette":[0,394,0.5191],"beki":[0,35,0.0],"carolette":[0,29,0.0],"carri":[0,3466,0.708],"charlese":[0,479,0.5361],"chrisan":[0,6,0.0],"christann":[0,6,0.0],"claresa":[0,35,0.0],"collett":[0,41,0.0],"cynitha":[0,391,0.5184],"cynthi":[0,16,0.0],"cynthie":[0,65,0.0],"darie":[0,57,0.0],"dawyn":[0,12,0.0],"deboah":[0,44,0.0],"debraann":[0,196,0.4585],"debrann":[0,20,0.0],"deett":[0,6,0.0],"delvia":[0,25,0.0],"ea":[0,11,0.0],"elysse":[0,768,0.5771],"gwendol":[0,17,0.0],"haunani":[0,79,0.0],"ilga":[0,6,0.0],"inese":[0,16,0.0],"inta":[0,18,0.0],"jackalynn":[0,117,0.4136],"jequita":[0,16,0.0],"kathyrine":[0,6,0.0],"kitti":[0,130,0.4228],"lafawn":[0,88,0.0],"lavinda":[0,17,0.0],"lendy":[0,130,0.4228],"lindra":[0,6,0.0],"lis":[0,349,0.5086],"marlaina":[0,1386,0.6284],"marretta":[0,6,0.0],"nicolet":[0,109,0.4075],"orfalinda":[0,6,0.0],"peggyjo":[0,6,0.0],"penina":[0,989,0.599],"petrice":[0,173,0.4476],"raizel":[0,1697,0.6459],"ranaye":[0,11,0.0],"ranette":[0,104,0.4034],"redina":[0,68,0.0],"richele":[0,751,0.5751],"saida":[0,1243,0.6189],"sharlean":[0,48,0.0],"shiron":[32,88,0.3049],"sindi":[0,618,0.5582],"tajuana":[0,1090,0.6075],"tanga":[0,404,0.5213],"tanyia":[0,525,0.544],"taren":[505,1177,0.4515],"terita":[0,96,0.0],"terrisa":[0,287,0.4916],"tinia":[0,387,0.5175],"tonnette":[0,382,0.5164],"valenda":[0,27,0.0],"vanester":[0,13,0.0],"vernitta":[0,41,0.0],"wandalyn":[0,34,0.0],"yalanda":[0,652,0.5628],"ymelda":[0,22,0.0],"allynn":[0,15,0.0],"angelika":[0,2852,0.691],"anneke":[0,993,0.5994],"ariene":[0,44,0.0],"baiba":[0,5,0.0],"bonnitta":[0,10,0.0],"brigette":[0,5712,0.7514],"cardella":[0,20,0.0],"carmenlita":[0,42,0.0],"cecilla":[0,24,0.0],"charlain":[0,5,0.0],"chata":[0,10,0.0],"chenita":[0,377,0.5153],"christye":[0,32,0.0],"cina":[0,114,0.4114],"colinda":[0,168,0.4451],"connice":[0,5,0.0],"cydnie":[0,385,0.5171],"dace":[508,18,0.5256],"dalva":[0,5,0.0],"danine":[0,291,0.4928],"daphyne":[0,110,0.4083],"daye":[0,18,0.0],"debor":[0,5,0.0],"debralyn":[0,5,0.0],"debrha":[0,5,0.0],"delanne":[0,5,0.0],"delborah":[0,5,0.0],"delissa":[0,401,0.5206],"deloice":[0,5,0.0],"delonna":[0,56,0.0],"denae":[0,2564,0.6818],"derri":[0,56,0.0],"dibbie":[0,43,0.0],"donnas":[0,5,0.0],"dorienne":[0,12,0.0],"dorretta":[0,5,0.0],"edelina":[0,30,0.0],"elizabet":[0,1753,0.6488],"elke":[0,1107,0.6088],"evelyon":[0,5,0.0],"felica":[0,2087,0.6639],"flame":[0,5,0.0],"frenda":[0,10,0.0],"gailanne":[0,5,0.0],"gelinda":[0,35,0.0],"guyanne":[0,5,0.0],"gwennette":[0,46,0.0],"halyna":[0,5,0.0],"hillarie":[0,329,0.5034],"hirma":[0,5,0.0],"irasema":[0,954,0.5959],"jacynthia":[0,5,0.0],"janea":[0,2022,0.6612],"janeanne":[0,27,0.0],"janinne":[0,41,0.0],"jarita":[0,206,0.4628],"jawana":[0,378,0.5155],"jazelle":[0,3104,0.6984],"jeniece":[0,508,0.5412],"jera":[0,769,0.5772],"jimma":[0,146,0.4329],"jonine":[0,22,0.0],"josslyn":[0,2156,0.6667],"karee":[85,756,0.5258],"kathleeen":[0,10,0.0],"kati":[0,4771,0.7357],"kaylin":[620,19178,0.8324],"ketty":[0,129,0.4221],"kima":[0,369,0.5134],"kori":[1537,14560,0.761],"korinne":[0,1315,0.6238],"kristee":[0,500,0.5398],"kyleen":[0,1056,0.6047],"lai":[25,231,0.4346],"larice":[0,47,0.0],"lerena":[0,5,0.0],"lisanne":[0,408,0.5221],"lolanda":[0,30,0.0],"loletia":[0,23,0.0],"lorree":[0,64,0.0],"luereatha":[0,5,0.0],"lurdes":[0,423,0.5253],"luzette":[0,5,0.0],"lyndelle":[0,10,0.0],"machele":[0,381,0.5162],"maja":[0,2009,0.6606],"malynda":[0,908,0.5916],"marhta":[0,33,0.0],"marirose":[0,70,0.0],"marlice":[0,5,0.0],"marsia":[0,115,0.4121],"marypat":[0,115,0.4121],"melbra":[0,5,0.0],"meloney":[0,895,0.5904],"merari":[21,1339,0.617],"min":[395,243,0.3473],"mindie":[0,487,0.5375],"mini":[0,37,0.0],"mischa":[198,1667,0.5847],"monserrate":[34,123,0.3441],"naila":[0,3117,0.6987],"nathania":[0,565,0.5504],"nayda":[0,255,0.4813],"nike":[164,150,0.2608],"nilene":[0,5,0.0],"nisa":[0,1719,0.6471],"norie":[5,245,0.47],"pattijo":[0,93,0.0],"phillistine":[0,5,0.0],"quintina":[0,1017,0.6015],"ranay":[0,89,0.0],"renai":[0,82,0.0],"revae":[0,31,0.0],"rindy":[0,119,0.4151],"robben":[98,45,0.2954],"robinn":[0,71,0.0],"rodina":[0,145,0.4323],"sarai":[6,22181,0.869],"schelly":[0,107,0.4059],"senita":[0,166,0.444],"sioux":[0,29,0.0],"syndi":[0,255,0.4813],"taffie":[0,118,0.4144],"taide":[0,25,0.0],"tala":[0,3308,0.7039],"terena":[0,565,0.5504],"teresha":[0,150,0.4352],"teria":[0,582,0.553],"terilee":[0,28,0.0],"tiena":[0,75,0.0],"timi":[5,649,0.5588],"trela":[0,33,0.0],"valissa":[0,214,0.4661],"vernae":[0,49,0.0],"vidette":[0,23,0.0],"virgen":[0,397,0.5198],"yvonnda":[0,21,0.0],"caster":[113,0,0.4106],"dieter":[916,0,0.5924],"kane":[18818,36,0.8534],"duan":[571,0,0.5513],"audwin":[351,0,0.5091],"darryal":[55,0,0.0],"credell":[7,0,0.0],"denard":[701,0,0.5691],"klaus":[1408,0,0.6297],"larrey":[7,0,0.0],"romel":[2447,0,0.6777],"rondey":[233,0,0.4735],"shmuel":[5709,0,0.7513],"sky":[4101,9465,0.5766],"stepen":[57,0,0.0],"timonthy":[850,0,0.5859],"uldis":[7,0,0.0],"algirdas":[22,0,0.0],"barnaby":[375,0,0.5148],"carmichael":[240,0,0.476],"chavez":[868,8,0.5831],"decarlo":[635,0,0.5606],"demetri":[4063,158,0.6979],"doniel":[404,7,0.5139],"donld":[23,0,0.0],"dylan":[412422,15929,0.9628],"filip":[2341,0,0.6739],"geofrey":[141,0,0.4298],"gibb":[11,0,0.0],"iain":[2899,0,0.6924],"jedd":[891,0,0.59],"lastarza":[6,0,0.0],"madaleno":[6,0,0.0],"michaeel":[33,0,0.0],"ohara":[6,20,0.0],"raimond":[27,0,0.0],"randey":[31,0,0.0],"reilly":[4510,5467,0.4383],"rein":[151,109,0.2805],"reymond":[645,0,0.5619],"ritchey":[19,0,0.0],"rocklyn":[29,139,0.3682],"stevephen":[12,0,0.0],"tab":[1110,0,0.6091],"yogi":[221,0,0.4689],"antione":[4820,49,0.7301],"arner":[5,0,0.0],"barak":[921,0,0.5929],"bidal":[5,0,0.0],"bienvenido":[405,0,0.5215],"cade":[33374,140,0.9013],"caven":[275,0,0.4879],"cramon":[5,0,0.0],"dalas":[24,10,0.0],"damaso":[275,0,0.4879],"dehaven":[77,0,0.0],"dennett":[5,0,0.0],"dervin":[181,0,0.4515],"eisen":[202,0,0.4611],"gereld":[5,0,0.0],"gian":[4787,0,0.736],"gregroy":[349,0,0.5086],"gustabo":[397,0,0.5198],"guymon":[5,0,0.0],"herberto":[87,0,0.0],"hunberto":[27,0,0.0],"jef":[129,0,0.4221],"jeorge":[381,0,0.5162],"johncharles":[90,0,0.0],"kieron":[724,0,0.5719],"kimbel":[11,0,0.0],"korey":[11393,1413,0.7308],"larone":[251,0,0.4799],"levorne":[5,0,0.0],"mando":[107,0,0.4059],"milorad":[5,0,0.0],"neftali":[2243,380,0.5847],"peer":[24,0,0.0],"peteris":[5,0,0.0],"pride":[89,0,0.0],"randll":[5,0,0.0],"rawn":[110,0,0.4083],"regionald":[46,0,0.0],"rodnee":[10,0,0.0],"rodnie":[41,0,0.0],"roul":[5,0,0.0],"saulius":[15,0,0.0],"stephn":[10,0,0.0],"torey":[2965,1421,0.4924],"viktor":[3472,0,0.7081],"vincient":[212,0,0.4653],"wialliam":[5,0,0.0],"wil":[1089,0,0.6074],"wwilliam":[23,0,0.0],"wwlliam":[22,0,0.0],"yakov":[3191,0,0.7008],"saadia":[0,653,0.563],"lindee":[0,413,0.5232],"felita":[0,783,0.5788],"grisel":[7,1665,0.6419],"krisann":[0,436,0.5279],"loriann":[0,3773,0.7153],"nakita":[28,2990,0.6895],"rossana":[0,887,0.5896],"anglia":[0,639,0.5611],"bekki":[0,164,0.443],"dodi":[5,458,0.5274],"jyll":[0,91,0.0],"lonnetta":[0,61,0.0],"meegan":[0,979,0.5982],"nelsa":[0,39,0.0],"carlise":[0,193,0.4571],"dandrea":[174,915,0.5104],"gabriele":[868,2073,0.489],"gizelle":[0,3099,0.6982],"hollye":[0,445,0.5297],"jeanny":[0,366,0.5127],"jenese":[0,157,0.4392],"latrice":[17,9132,0.7908],"lyndi":[0,1917,0.6565],"melitta":[0,83,0.0],"mendy":[847,2160,0.4997],"mi":[0,721,0.5716],"mika":[1327,6621,0.6498],"tria":[0,239,0.4757],"vanesta":[0,18,0.0],"cendy":[0,332,0.5042],"chicquita":[0,63,0.0],"dawnie":[0,25,0.0],"denisse":[0,7266,0.7723],"donni":[6,179,0.4387],"gwendy":[0,60,0.0],"hara":[0,117,0.4136],"janessa":[0,14601,0.8329],"kimberlea":[0,531,0.545],"klaudia":[0,1042,0.6036],"lachelle":[0,2442,0.6775],"lilette":[0,13,0.0],"lorianne":[0,1689,0.6455],"marri":[0,133,0.4248],"martia":[0,383,0.5166],"mechell":[0,481,0.5364],"melea":[0,1082,0.6068],"ronnah":[0,23,0.0],"shebra":[0,63,0.0],"sheli":[0,647,0.5622],"shonda":[0,7444,0.7744],"simonetta":[0,19,0.0],"tonee":[5,170,0.4358],"tonetta":[0,321,0.5013],"ufemia":[0,7,0.0],"vennessa":[0,217,0.4673],"alicea":[0,1185,0.6147],"anglea":[0,1489,0.6346],"anitha":[0,123,0.418],"bambie":[0,227,0.4712],"bobbyetta":[0,6,0.0],"cassia":[0,2096,0.6643],"ceann":[0,11,0.0],"danitra":[0,358,0.5108],"dariene":[0,36,0.0],"daryn":[2408,987,0.5009],"dawnn":[0,297,0.4946],"delann":[0,11,0.0],"delynda":[0,78,0.0],"ellisa":[0,868,0.5877],"elyssa":[0,7246,0.772],"ferrie":[0,6,0.0],"glynes":[0,11,0.0],"irvina":[0,6,0.0],"jayleen":[199,12825,0.8104],"jonina":[0,45,0.0],"kama":[0,710,0.5703],"kathia":[0,1463,0.633],"katri":[0,16,0.0],"kenita":[0,354,0.5098],"kennetta":[0,202,0.4611],"keva":[0,1258,0.6199],"konni":[0,208,0.4636],"korin":[108,1133,0.5649],"krisandra":[0,267,0.4853],"lawonda":[0,307,0.4974],"lorilei":[0,270,0.4863],"loritta":[0,23,0.0],"marcita":[0,39,0.0],"marli":[5,2762,0.6872],"meagan":[72,41547,0.9223],"meggin":[0,345,0.5076],"meichele":[0,6,0.0],"meshelle":[0,310,0.4983],"miryam":[0,891,0.59],"misha":[592,4206,0.6454],"mishelle":[0,1178,0.6142],"morrine":[0,6,0.0],"nicolene":[0,6,0.0],"nomi":[0,557,0.5492],"norann":[0,11,0.0],"olanda":[111,80,0.2651],"raedene":[0,28,0.0],"rajean":[0,64,0.0],"shirel":[0,360,0.5113],"stacee":[0,1634,0.6427],"suean":[0,6,0.0],"tarin":[322,887,0.4523],"terilynn":[0,120,0.4158],"terise":[0,28,0.0],"tunya":[0,258,0.4823],"tywana":[0,583,0.5531],"valeree":[0,101,0.4009],"valoree":[0,129,0.4221],"wendye":[0,28,0.0],"xiomara":[0,11571,0.8127],"yuette":[0,113,0.4106],"zonda":[0,49,0.0],"adana":[0,262,0.4837],"anderia":[0,106,0.4051],"andreina":[6,1267,0.618],"annet":[0,240,0.476],"annetha":[0,5,0.0],"antonella":[5,9477,0.795],"arlease":[0,5,0.0],"artina":[0,291,0.4928],"brigit":[0,1238,0.6185],"buffie":[0,869,0.5878],"bunni":[0,30,0.0],"cairn":[0,5,0.0],"candies":[0,87,0.0],"carlleen":[0,5,0.0],"charlesa":[0,93,0.0],"charme":[0,10,0.0],"chinesta":[0,5,0.0],"cornetta":[0,32,0.0],"cyntia":[0,483,0.5368],"darvi":[0,11,0.0],"daryla":[0,34,0.0],"davita":[0,709,0.5701],"deatta":[0,5,0.0],"debarh":[0,5,0.0],"debooah":[0,17,0.0],"debraha":[0,11,0.0],"debroha":[0,37,0.0],"delba":[0,5,0.0],"delesia":[0,83,0.0],"derise":[0,15,0.0],"dolleen":[0,5,0.0],"donamarie":[0,5,0.0],"donnett":[0,26,0.0],"doresa":[0,37,0.0],"elecia":[0,526,0.5442],"elydia":[0,20,0.0],"eydie":[0,479,0.5361],"felise":[0,63,0.0],"gardina":[0,5,0.0],"garla":[0,52,0.0],"geneice":[0,40,0.0],"gera":[0,136,0.4267],"gerlyn":[0,10,0.0],"gerolyn":[0,5,0.0],"grasiela":[0,298,0.4948],"gwynetta":[0,5,0.0],"hedi":[0,108,0.4067],"in":[5,21,0.0],"ivanna":[0,9712,0.7975],"jackquelin":[0,37,0.0],"jackqulin":[0,11,0.0],"jamia":[6,4459,0.729],"jea":[0,16,0.0],"jeanel":[0,15,0.0],"jeannee":[0,33,0.0],"jeneice":[0,47,0.0],"jernell":[5,22,0.0],"jet":[3201,122,0.6784],"jodye":[5,64,0.0],"jolette":[0,751,0.5751],"jonee":[0,295,0.494],"joquita":[0,21,0.0],"kalene":[0,724,0.5719],"karola":[0,5,0.0],"katerina":[0,7866,0.7792],"kathry":[0,30,0.0],"kathyn":[0,16,0.0],"kellene":[0,425,0.5257],"kendy":[16,505,0.5267],"ketha":[0,18,0.0],"khristy":[0,332,0.5042],"kimela":[0,320,0.501],"koral":[0,896,0.5905],"lagena":[0,134,0.4254],"laketa":[0,629,0.5597],"lareen":[0,414,0.5234],"laurale":[0,10,0.0],"lavinnia":[0,5,0.0],"lawan":[54,96,0.2785],"letisia":[0,934,0.5941],"liese":[0,144,0.4317],"liesel":[0,1213,0.6168],"lindaa":[0,5,0.0],"lisha":[0,2382,0.6754],"loleatha":[0,15,0.0],"louaine":[0,5,0.0],"louwanna":[0,16,0.0],"lutrica":[0,10,0.0],"lynis":[0,5,0.0],"malea":[0,2519,0.6802],"maradee":[0,5,0.0],"marketa":[0,673,0.5656],"markita":[0,2495,0.6794],"marlenia":[0,16,0.0],"marnetta":[0,59,0.0],"marshan":[0,5,0.0],"marshella":[0,162,0.4419],"marylinn":[0,5,0.0],"mashell":[0,309,0.498],"mea":[0,1673,0.6447],"melessa":[0,502,0.5401],"mellony":[0,146,0.4329],"miguelina":[0,267,0.4853],"mindee":[0,486,0.5373],"moretta":[0,5,0.0],"mya":[59,61595,0.9571],"narita":[0,17,0.0],"nicoli":[436,42,0.4888],"noranne":[0,5,0.0],"pamalia":[0,5,0.0],"pamma":[0,5,0.0],"patriciaa":[0,11,0.0],"perdita":[0,31,0.0],"philistine":[0,5,0.0],"piera":[0,70,0.0],"prissy":[0,28,0.0],"raelyne":[0,87,0.0],"ragenia":[0,5,0.0],"raine":[577,3119,0.6022],"ranetta":[0,114,0.4114],"reana":[0,676,0.566],"rela":[0,5,0.0],"rhanda":[0,146,0.4329],"risha":[0,946,0.5952],"roblyn":[0,59,0.0],"rozana":[0,55,0.0],"ruann":[0,5,0.0],"senda":[0,10,0.0],"sera":[0,1596,0.6406],"shaindy":[0,2230,0.6697],"shalimar":[5,639,0.5574],"sharra":[0,457,0.532],"sharree":[0,23,0.0],"sharrion":[0,22,0.0],"shenita":[0,1550,0.6381],"sherelene":[0,5,0.0],"sulinda":[0,15,0.0],"sunnee":[0,10,0.0],"suzelle":[0,20,0.0],"sylinda":[0,40,0.0],"syndie":[0,15,0.0],"terice":[0,16,0.0],"terresia":[0,5,0.0],"tersea":[0,72,0.0],"thadine":[0,5,0.0],"thereas":[0,21,0.0],"thressia":[0,5,0.0],"toxi":[0,5,0.0],"treacy":[0,78,0.0],"treca":[0,21,0.0],"turea":[0,5,0.0],"vanie":[0,5,0.0],"vannetta":[0,25,0.0],"vernecia":[0,84,0.0],"vernessia":[0,15,0.0],"vickilyn":[0,10,0.0],"vinni":[0,5,0.0],"winter":[958,14874,0.7891],"yael":[4899,4371,0.4193],"ylonda":[0,274,0.4876],"yma":[0,35,0.0],"durk":[88,0,0.0],"callen":[8921,585,0.7466],"ivars":[28,0,0.0],"tadd":[1457,0,0.6327],"tyran":[2269,56,0.6571],"brody":[80174,282,0.9777],"cavin":[1363,0,0.6269],"dano":[36,0,0.0],"gralin":[49,0,0.0],"sedgwick":[44,0,0.0],"derrik":[2142,0,0.6662],"graylan":[80,0,0.0],"rion":[1479,313,0.537],"aldric":[521,0,0.5434],"avraham":[4773,0,0.7358],"chrles":[197,0,0.4589],"corneall":[6,0,0.0],"danail":[6,0,0.0],"derf":[6,0,0.0],"donathan":[478,0,0.5359],"dorne":[19,0,0.0],"drex":[30,0,0.0],"ferlin":[257,0,0.482],"jasen":[4640,0,0.7333],"jefferie":[108,0,0.4067],"jimm":[22,0,0.0],"kendel":[822,801,0.3252],"kerrick":[721,0,0.5716],"kestutis":[22,0,0.0],"kord":[460,0,0.5326],"michaeal":[135,0,0.4261],"perez":[584,0,0.5533],"rimas":[65,38,0.254],"skyler":[41509,27264,0.5839],"swindell":[6,0,0.0],"timthy":[28,0,0.0],"alcides":[528,0,0.5445],"alverto":[141,0,0.4298],"amir":[52416,496,0.9359],"andrae":[2111,41,0.6539],"anjel":[1179,403,0.4768],"antonios":[856,0,0.5865],"arvydas":[5,0,0.0],"aryeh":[3339,5,0.7038],"bogdan":[744,0,0.5743],"borys":[23,0,0.0],"bradrick":[176,0,0.4491],"casiano":[15,0,0.0],"charlas":[15,0,0.0],"claborne":[5,0,0.0],"cobb":[5,0,0.0],"cochise":[76,0,0.0],"demorris":[375,0,0.5148],"deven":[10627,1315,0.7256],"dierk":[22,0,0.0],"dustan":[1695,0,0.6458],"dwen":[5,0,0.0],"dyrk":[10,0,0.0],"erniest":[5,0,0.0],"erric":[336,0,0.5053],"franisco":[26,0,0.0],"gottlob":[5,0,0.0],"gregry":[32,0,0.0],"gwain":[5,0,0.0],"ibrahim":[16966,0,0.8459],"johnthan":[792,0,0.5797],"jonathen":[1507,0,0.6356],"joseh":[143,0,0.4311],"keavin":[41,0,0.0],"kellen":[16837,1260,0.7922],"kilburn":[5,0,0.0],"kimothy":[125,35,0.3444],"kreig":[180,0,0.4511],"labarron":[179,0,0.4506],"landris":[5,0,0.0],"levant":[5,0,0.0],"linzell":[5,0,0.0],"markle":[10,0,0.0],"maurus":[5,0,0.0],"mckinsey":[22,1080,0.5963],"nichlos":[188,0,0.4548],"race":[1399,0,0.6292],"rogar":[5,0,0.0],"rondol":[5,0,0.0],"rone":[61,0,0.0],"shem":[740,5,0.5706],"standly":[21,0,0.0],"thaddis":[10,0,0.0],"timouthy":[76,0,0.0],"tinker":[10,10,0.0],"tomme":[5,0,0.0],"topper":[41,0,0.0],"ulises":[11730,15,0.8129],"veotis":[5,0,0.0],"vitas":[15,0,0.0],"yehudah":[753,0,0.5754],"shevawn":[0,128,0.4214],"sabrena":[0,1982,0.6594],"sebrina":[0,2127,0.6656],"josanne":[0,58,0.0],"taina":[0,2737,0.6875],"september":[0,2182,0.6678],"staria":[0,62,0.0],"kennetha":[0,556,0.549],"rannah":[0,21,0.0],"kimetha":[0,114,0.4114],"lizanne":[0,404,0.5213],"dainette":[0,14,0.0],"quinetta":[0,373,0.5143],"subrina":[0,871,0.588],"denni":[15,197,0.4323],"kismet":[6,186,0.4424],"robi":[116,356,0.4034],"tondalaya":[0,184,0.453],"bettiann":[0,10,0.0],"caria":[0,221,0.4689],"denetta":[0,195,0.458],"kimberlyn":[0,3886,0.7179],"panda":[0,88,0.0],"tinamarie":[0,1159,0.6128],"deandra":[857,4920,0.6407],"debhra":[0,20,0.0],"debro":[0,24,0.0],"doe":[0,27,0.0],"jocelynn":[0,6638,0.7644],"jodette":[0,132,0.4241],"kella":[0,458,0.5322],"mallorie":[0,4424,0.7292],"marchele":[0,102,0.4017],"meleah":[0,1500,0.6352],"rayla":[0,1454,0.6325],"sebrena":[0,449,0.5304],"wander":[35,54,0.0],"aracelis":[0,1089,0.6074],"baila":[0,3268,0.7029],"cythnia":[0,108,0.4067],"denee":[0,911,0.5919],"devita":[0,242,0.4768],"franchesca":[0,4372,0.7281],"jowanda":[0,114,0.4114],"jymme":[0,18,0.0],"keli":[49,4349,0.7205],"kimala":[0,326,0.5026],"kimba":[0,85,0.0],"lilliana":[0,22114,0.8689],"olha":[0,8,0.0],"reni":[0,157,0.4392],"shar":[0,216,0.4669],"voni":[0,43,0.0],"xochitl":[0,5895,0.7541],"beri":[0,17,0.0],"bridgit":[0,1275,0.6211],"charmin":[0,621,0.5586],"conie":[0,12,0.0],"cynethia":[0,190,0.4558],"dinora":[0,806,0.5813],"evamarie":[0,960,0.5965],"hollee":[0,743,0.5742],"jarma":[0,12,0.0],"jeree":[5,202,0.452],"kellye":[0,2347,0.6741],"kymberly":[0,3045,0.6967],"lashawn":[3266,7347,0.5574],"lesha":[0,1053,0.6045],"marisha":[0,1547,0.6379],"maritha":[0,20,0.0],"micha":[1146,1188,0.3429],"rechelle":[0,628,0.5596],"rivkah":[0,1188,0.615],"rowrenia":[0,7,0.0],"sharita":[0,2637,0.6842],"sheralee":[0,102,0.4017],"storme":[34,72,0.2751],"terah":[43,1373,0.6111],"terrina":[0,420,0.5246],"trease":[0,145,0.4323],"wandy":[0,100,0.4],"yalonda":[0,1076,0.6064],"yana":[0,2595,0.6828],"zully":[0,745,0.5744],"abra":[0,1015,0.6013],"aquila":[131,754,0.5021],"arlethea":[0,11,0.0],"becci":[0,122,0.4173],"bibi":[0,665,0.5646],"bridgid":[0,446,0.5299],"cami":[0,5636,0.7502],"chela":[0,474,0.5352],"cheris":[0,149,0.4346],"cherylanne":[0,79,0.0],"corin":[985,1689,0.4329],"dalyn":[904,389,0.4351],"deboarh":[0,11,0.0],"debrajo":[0,11,0.0],"deedie":[0,36,0.0],"delica":[0,16,0.0],"denie":[0,17,0.0],"desra":[0,56,0.0],"elli":[35,2705,0.6788],"ginia":[0,79,0.0],"gwendylon":[0,18,0.0],"ilise":[0,49,0.0],"ilka":[0,249,0.4792],"indy":[789,1974,0.4917],"jany":[0,110,0.4083],"kamala":[0,1285,0.6218],"karmel":[21,137,0.3813],"kayce":[2468,3138,0.4197],"kemberly":[0,1503,0.6354],"klynn":[0,891,0.59],"ksenia":[0,519,0.543],"larenda":[0,347,0.5081],"lashelle":[0,1045,0.6038],"lavonnie":[0,6,0.0],"lezley":[0,280,0.4894],"lizann":[0,103,0.4026],"markay":[0,27,0.0],"martita":[0,101,0.4009],"marypatricia":[0,32,0.0],"mellonie":[0,122,0.4173],"orfelinda":[0,30,0.0],"pala":[0,18,0.0],"patresa":[0,26,0.0],"rohnda":[0,54,0.0],"sharmain":[0,177,0.4496],"shiree":[0,631,0.56],"soraya":[0,6496,0.7625],"stacye":[0,521,0.5434],"talana":[0,369,0.5134],"tamma":[0,215,0.4665],"tammis":[0,6,0.0],"tarra":[0,2295,0.6722],"taunia":[0,269,0.486],"terina":[0,1148,0.612],"theres":[0,23,0.0],"valecia":[0,434,0.5275],"vally":[0,6,0.0],"venessia":[0,17,0.0],"vilene":[0,6,0.0],"adrinne":[0,66,0.0],"alieen":[0,5,0.0],"alitha":[0,33,0.0],"amiee":[0,1708,0.6465],"anadelia":[0,101,0.4009],"angell":[158,478,0.4214],"angla":[0,511,0.5417],"annettee":[0,42,0.0],"athenia":[0,115,0.4121],"beta":[0,11,0.0],"blyth":[0,11,0.0],"brennda":[0,5,0.0],"caffey":[0,5,0.0],"caitlin":[283,112068,0.9975],"carlia":[0,150,0.4352],"cerese":[0,10,0.0],"chavonne":[0,513,0.542],"cherice":[0,1137,0.6112],"cherrel":[0,32,0.0],"chevonne":[0,602,0.5559],"coraleen":[0,10,0.0],"cristella":[0,93,0.0],"danee":[0,565,0.5504],"dannell":[142,234,0.3205],"darletha":[0,27,0.0],"dawanna":[0,435,0.5277],"deboraa":[0,16,0.0],"deion":[5949,123,0.7413],"deletta":[0,5,0.0],"denean":[0,484,0.537],"dennese":[0,5,0.0],"derby":[29,10,0.0],"derra":[0,125,0.4194],"derrie":[51,22,0.0],"des":[11,5,0.0],"desirae":[0,13094,0.8234],"desiray":[0,1782,0.6502],"develyn":[0,59,0.0],"disa":[0,280,0.4894],"edlyn":[0,496,0.5391],"elbia":[0,63,0.0],"elesia":[0,341,0.5066],"faige":[0,197,0.4589],"francheska":[0,1947,0.6579],"gloretha":[0,5,0.0],"guadulupe":[0,5,0.0],"heidy":[0,5984,0.7554],"iliana":[0,12958,0.8225],"jalyn":[1783,4818,0.5576],"jeannice":[0,5,0.0],"jenanne":[0,5,0.0],"johnese":[0,41,0.0],"jolynda":[0,86,0.0],"josann":[0,10,0.0],"jovette":[0,10,0.0],"joycee":[0,65,0.0],"kaia":[53,19280,0.8549],"kalynn":[33,3673,0.7074],"kathyern":[0,5,0.0],"kaycee":[481,8478,0.748],"kenette":[0,5,0.0],"kenise":[0,188,0.4548],"kimilee":[0,10,0.0],"kimmerly":[0,83,0.0],"kimra":[0,220,0.4685],"lafrancine":[0,5,0.0],"larke":[0,24,0.0],"leanetta":[0,5,0.0],"leasia":[0,1143,0.6116],"leean":[0,83,0.0],"lennett":[0,5,0.0],"lewann":[0,5,0.0],"lilo":[5,413,0.518],"lorreen":[0,15,0.0],"lourita":[0,5,0.0],"malora":[0,20,0.0],"marlese":[0,21,0.0],"maurina":[0,94,0.0],"meaghan":[7,14036,0.8291],"melanye":[0,296,0.4943],"mele":[0,914,0.5922],"melindy":[0,10,0.0],"mellany":[0,476,0.5355],"mellodee":[0,5,0.0],"melonye":[0,10,0.0],"migna":[0,21,0.0],"montina":[0,214,0.4661],"mori":[40,75,0.2688],"nelba":[0,5,0.0],"patrese":[0,123,0.418],"rabecca":[0,869,0.5878],"ragina":[0,370,0.5136],"rashelle":[0,1368,0.6272],"raynee":[0,481,0.5364],"rhondalyn":[0,137,0.4273],"rhondi":[0,54,0.0],"robine":[0,37,0.0],"rogina":[0,187,0.4544],"romella":[0,10,0.0],"rondalyn":[0,136,0.4267],"roxeanne":[0,10,0.0],"roya":[0,1545,0.6378],"seana":[0,1905,0.656],"shalla":[0,91,0.0],"shanan":[123,745,0.5044],"sherdina":[0,15,0.0],"sheriee":[0,11,0.0],"sheriel":[0,5,0.0],"sherylann":[0,72,0.0],"sherylyn":[0,26,0.0],"shevon":[15,420,0.5095],"shevonne":[0,307,0.4974],"shielah":[0,5,0.0],"shirleeta":[0,5,0.0],"shirletta":[0,24,0.0],"shirlette":[0,68,0.0],"shree":[13,1005,0.5939],"tabby":[5,162,0.4312],"tamsin":[0,413,0.5232],"tane":[17,159,0.4057],"tanger":[0,20,0.0],"tangi":[0,340,0.5063],"teah":[0,1409,0.6298],"terea":[0,194,0.4576],"terez":[412,145,0.4062],"terianne":[0,69,0.0],"tracye":[5,1080,0.6043],"trenita":[0,106,0.4051],"troye":[75,22,0.0],"tyanna":[0,3814,0.7163],"valynda":[0,41,0.0],"valynn":[0,121,0.4166],"valyre":[0,5,0.0],"vanissa":[0,239,0.4757],"vannesa":[0,1220,0.6173],"vanya":[0,1204,0.6161],"venesa":[0,309,0.498],"vergina":[0,10,0.0],"verra":[0,16,0.0],"wan":[5,10,0.0],"xandria":[0,837,0.5845],"anothony":[344,0,0.5073],"erol":[454,0,0.5314],"christophel":[9,0,0.0],"lamorris":[272,0,0.4869],"avrohom":[3405,0,0.7064],"dejuan":[5491,40,0.7431],"denorris":[201,0,0.4606],"destry":[1501,145,0.5866],"dmitri":[2289,0,0.6719],"padraic":[973,0,0.5976],"rodriquez":[1537,0,0.6373],"brando":[2085,0,0.6638],"dural":[7,0,0.0],"gralyn":[38,0,0.0],"johathan":[1936,0,0.6574],"kiven":[307,0,0.4974],"rainer":[1225,16,0.6108],"terreance":[54,0,0.0],"undra":[558,75,0.4939],"anthonio":[433,0,0.5273],"boruch":[1110,0,0.6091],"corkey":[34,0,0.0],"daaiel":[76,0,0.0],"daran":[590,10,0.5464],"dary":[144,24,0.3815],"fidelio":[6,0,0.0],"fidensio":[6,0,0.0],"hobie":[440,0,0.5287],"kippie":[11,32,0.0],"lenardo":[115,0,0.4121],"mathieu":[2397,0,0.6759],"reiner":[323,0,0.5018],"rodriguez":[952,5,0.5931],"timoty":[141,0,0.4298],"tiran":[86,0,0.0],"turk":[51,0,0.0],"arny":[5,0,0.0],"benje":[5,0,0.0],"benzion":[1051,0,0.6043],"brandan":[5670,96,0.7397],"daven":[2515,92,0.6591],"ddnald":[11,0,0.0],"demarco":[5542,0,0.7487],"dereke":[207,0,0.4632],"derreck":[1375,0,0.6277],"devine":[820,769,0.3304],"durke":[10,0,0.0],"elizar":[132,0,0.4241],"enoc":[1320,0,0.6241],"frak":[46,0,0.0],"frezell":[5,0,0.0],"graylyn":[5,122,0.4042],"ismeal":[85,0,0.0],"isrrael":[557,0,0.5492],"jeffey":[149,0,0.4346],"jocko":[59,0,0.0],"jonney":[5,0,0.0],"kipper":[95,0,0.0],"kolin":[1927,0,0.657],"letroy":[161,0,0.4414],"lindall":[10,0,0.0],"lyndale":[25,5,0.0],"matson":[241,0,0.4764],"michieal":[16,0,0.0],"mickell":[136,51,0.3304],"misael":[10034,16,0.7992],"niall":[1995,0,0.66],"nicholis":[742,0,0.5741],"nikolaus":[2631,0,0.684],"peron":[5,0,0.0],"raun":[129,0,0.4221],"remington":[22860,9534,0.6366],"roberte":[5,0,0.0],"rocklan":[26,0,0.0],"ronld":[12,0,0.0],"roth":[220,0,0.4685],"shaya":[1672,1004,0.4283],"stephon":[8762,14,0.7874],"stevin":[454,0,0.5314],"stevy":[5,33,0.0],"taff":[28,0,0.0],"terrol":[42,0,0.0],"thamos":[5,0,0.0],"thaxter":[5,0,0.0],"turley":[5,0,0.0],"twig":[5,0,0.0],"valice":[5,0,0.0],"zedrick":[458,0,0.5322],"zephery":[5,0,0.0],"siobhan":[0,7310,0.7728],"chrysa":[0,94,0.0],"kimerly":[0,603,0.5561],"tirrell":[774,13,0.5696],"kenetha":[0,87,0.0],"calamity":[0,19,0.0],"edye":[0,173,0.4476],"karina":[253,61097,0.9536],"stormie":[0,3922,0.7187],"babbie":[0,88,0.0],"maleia":[0,1127,0.6104],"paulia":[0,15,0.0],"seneca":[1741,1732,0.355],"shavonne":[0,2951,0.694],"adraine":[5,218,0.4591],"corlette":[0,91,0.0],"eyvette":[0,228,0.4716],"gerardette":[0,36,0.0],"jovonna":[0,422,0.5251],"kacy":[988,5037,0.632],"kimberleigh":[0,735,0.5733],"lynee":[0,301,0.4957],"mylea":[0,304,0.4966],"rossanna":[0,62,0.0],"sheere":[0,9,0.0],"tangela":[0,3784,0.7156],"centhia":[0,14,0.0],"christee":[0,180,0.4511],"cindey":[0,13,0.0],"hindy":[0,1905,0.656],"ilisa":[0,175,0.4486],"kande":[0,31,0.0],"kath":[0,38,0.0],"keela":[0,1065,0.6055],"keila":[0,7288,0.7725],"lisandra":[0,1692,0.6457],"nadolyn":[0,8,0.0],"tannya":[0,253,0.4806],"tesa":[0,1382,0.6281],"vinessa":[0,372,0.5141],"vondra":[0,90,0.0],"amee":[0,1703,0.6462],"cayla":[0,10821,0.8069],"ceci":[0,119,0.4151],"charese":[0,439,0.5285],"cheyanne":[0,15376,0.8374],"cindylee":[0,34,0.0],"daretta":[0,13,0.0],"darragh":[256,35,0.4335],"denesa":[0,26,0.0],"dondi":[766,375,0.4105],"evett":[0,309,0.498],"jaki":[248,100,0.3622],"jenniefer":[0,305,0.4969],"karlena":[0,266,0.485],"krisan":[0,59,0.0],"latresa":[0,549,0.5479],"leabeth":[0,7,0.0],"linora":[0,26,0.0],"marinella":[0,12,0.0],"maritsa":[0,930,0.5937],"mayla":[0,1585,0.64],"meleia":[0,67,0.0],"melora":[0,358,0.5108],"mishele":[0,54,0.0],"rosolyn":[0,12,0.0],"shivaun":[0,65,0.0],"subrena":[0,190,0.4558],"tancy":[0,40,0.0],"tangee":[0,358,0.5108],"teressia":[0,40,0.0],"therasa":[0,136,0.4267],"vaune":[0,34,0.0],"venisa":[0,78,0.0],"vertina":[0,52,0.0],"zanda":[0,7,0.0],"alacia":[0,474,0.5352],"angeletta":[0,88,0.0],"antoinett":[0,173,0.4476],"blaire":[104,7156,0.7611],"brandie":[29,15838,0.8386],"breena":[0,893,0.5902],"caressa":[0,1218,0.6171],"charee":[0,432,0.5271],"cheryllynn":[0,69,0.0],"conzy":[0,6,0.0],"dalaine":[0,6,0.0],"dalynn":[49,423,0.4793],"danah":[0,1039,0.6033],"deba":[0,18,0.0],"deltina":[0,6,0.0],"devena":[0,28,0.0],"dorea":[0,66,0.0],"dorelia":[0,6,0.0],"edwana":[0,12,0.0],"gesele":[0,6,0.0],"gezelle":[0,51,0.0],"jeanise":[0,84,0.0],"jimette":[0,11,0.0],"jode":[25,146,0.3813],"kalyn":[381,7393,0.74],"kana":[18,860,0.5766],"karia":[0,456,0.5318],"kennita":[0,157,0.4392],"kerra":[0,1149,0.6121],"kimalee":[0,32,0.0],"kimila":[0,96,0.0],"kimla":[0,154,0.4375],"korby":[94,12,0.3592],"leisha":[0,2090,0.664],"liba":[0,984,0.5986],"lissette":[5,7476,0.7743],"loranda":[0,97,0.0],"lorraina":[0,390,0.5182],"maleah":[0,9237,0.7931],"marchella":[14,150,0.4052],"melane":[0,210,0.4644],"melessia":[0,212,0.4653],"melloney":[0,29,0.0],"mischell":[0,162,0.4419],"puanani":[0,67,0.0],"sarene":[0,18,0.0],"sasha":[1698,38071,0.8806],"sharisse":[0,621,0.5586],"sharna":[0,412,0.523],"shawnna":[0,2861,0.6913],"shelaine":[0,101,0.4009],"shenia":[0,360,0.5113],"sherea":[0,231,0.4727],"tamlyn":[0,149,0.4346],"tamzen":[0,12,0.0],"tanza":[0,168,0.4451],"telisa":[0,1097,0.608],"terece":[0,11,0.0],"teree":[0,29,0.0],"terralyn":[0,117,0.4136],"trinette":[0,956,0.5961],"venecia":[0,830,0.5838],"wyvette":[0,11,0.0],"andrienne":[0,308,0.4977],"annese":[0,5,0.0],"aracely":[11,9754,0.797],"artensia":[0,5,0.0],"beni":[147,70,0.3166],"bernitha":[0,15,0.0],"brendetta":[0,11,0.0],"carlett":[0,33,0.0],"carnita":[0,55,0.0],"chara":[0,1005,0.6004],"charel":[0,29,0.0],"charlottee":[0,10,0.0],"charlsa":[0,5,0.0],"charnita":[0,359,0.511],"cherese":[0,758,0.5759],"cherrilyn":[0,10,0.0],"coralynn":[0,821,0.5829],"dalerie":[0,11,0.0],"darbie":[0,397,0.5198],"darita":[0,15,0.0],"darlah":[0,62,0.0],"darnita":[0,259,0.4827],"davlyn":[0,5,0.0],"ddnna":[0,25,0.0],"debbey":[0,5,0.0],"deboroh":[0,10,0.0],"decca":[0,5,0.0],"demona":[0,15,0.0],"dennia":[0,20,0.0],"derba":[0,11,0.0],"destiny":[526,151282,0.9965],"dewetta":[0,5,0.0],"dinnah":[0,5,0.0],"dvora":[0,106,0.4051],"dwayna":[0,70,0.0],"fayann":[0,10,0.0],"geena":[0,1554,0.6383],"genea":[0,600,0.5556],"gerie":[0,22,0.0],"gindy":[0,22,0.0],"glorius":[0,5,0.0],"illiana":[0,2021,0.6611],"jamy":[384,750,0.404],"janele":[0,256,0.4816],"jannita":[0,5,0.0],"janyne":[0,21,0.0],"jatana":[0,37,0.0],"jaynelle":[0,48,0.0],"jayni":[30,173,0.3933],"jeralynn":[0,107,0.4059],"jimalee":[0,5,0.0],"jocasta":[0,10,0.0],"jole":[5,53,0.0],"josanna":[0,104,0.4034],"jovina":[0,62,0.0],"julieanna":[0,1524,0.6366],"kally":[5,1382,0.6261],"karian":[0,41,0.0],"karlee":[0,13541,0.8263],"karletta":[0,112,0.4098],"karmon":[5,203,0.4525],"karra":[0,1054,0.6046],"kayne":[2340,15,0.6701],"keelin":[347,1040,0.4712],"kendis":[9,30,0.0],"keni":[88,252,0.3753],"keyna":[0,445,0.5297],"kia":[196,7601,0.7588],"kimara":[0,607,0.5566],"kimarie":[0,180,0.4511],"kimera":[0,28,0.0],"kimery":[0,43,0.0],"korine":[0,264,0.4843],"lanni":[0,16,0.0],"larain":[0,10,0.0],"lasharon":[0,157,0.4392],"latona":[0,345,0.5076],"lauriann":[0,159,0.4403],"lavra":[0,140,0.4292],"leandrea":[5,692,0.5646],"leeza":[0,868,0.5877],"leiann":[0,246,0.4782],"leighann":[0,3435,0.7072],"leighanne":[0,1313,0.6237],"lendra":[0,5,0.0],"liv":[0,6603,0.7639],"loralea":[0,10,0.0],"loreena":[0,118,0.4144],"lourinda":[0,5,0.0],"lurenda":[0,5,0.0],"lyndie":[0,763,0.5765],"marceen":[0,5,0.0],"marianella":[0,31,0.0],"marisel":[0,414,0.5234],"martee":[0,5,0.0],"marvlene":[0,5,0.0],"mauria":[0,64,0.0],"meloni":[0,382,0.5164],"melonia":[0,27,0.0],"milia":[0,292,0.4931],"milica":[0,401,0.5206],"nanelle":[0,5,0.0],"neyda":[0,682,0.5668],"nicol":[28,2203,0.6613],"omeria":[0,5,0.0],"pamilyn":[0,5,0.0],"radell":[6,5,0.0],"rain":[1095,3432,0.5543],"raleen":[0,5,0.0],"ranita":[0,450,0.5306],"raynae":[0,5,0.0],"raynel":[50,5,0.0],"rebeckah":[0,652,0.5628],"rebekkah":[0,1585,0.64],"renada":[0,710,0.5703],"renice":[0,54,0.0],"robette":[0,12,0.0],"rosemaire":[0,16,0.0],"roxeann":[0,16,0.0],"santia":[0,254,0.481],"sarie":[0,90,0.0],"sharil":[0,41,0.0],"sharoll":[0,5,0.0],"shawana":[0,1881,0.6549],"sheera":[0,133,0.4248],"sherrita":[0,566,0.5506],"shevaun":[0,105,0.4042],"shinita":[0,160,0.4408],"sjana":[0,5,0.0],"sonyia":[0,194,0.4576],"suki":[0,492,0.5384],"suni":[0,371,0.5139],"suri":[0,3410,0.7066],"takeela":[0,47,0.0],"teila":[0,310,0.4983],"tereca":[0,16,0.0],"terecita":[0,43,0.0],"teren":[122,57,0.3071],"terrian":[282,119,0.3661],"tima":[0,144,0.4317],"tracine":[0,28,0.0],"tujuana":[0,160,0.4408],"twilia":[0,71,0.0],"tyanne":[0,482,0.5366],"veanne":[0,5,0.0],"vilija":[0,5,0.0],"vonnette":[0,5,0.0],"wendla":[0,11,0.0],"yehudis":[0,2273,0.6713],"zanthia":[0,12,0.0],"zayda":[0,2246,0.6703],"trace":[13419,348,0.8068],"dart":[41,0,0.0],"jubal":[803,0,0.5809],"rainier":[839,46,0.5588],"brodrick":[1779,0,0.65],"dreux":[289,57,0.4242],"kye":[5421,340,0.7077],"simcha":[1915,222,0.5968],"brenden":[25670,42,0.8806],"elbin":[58,0,0.0],"eliyahu":[3496,0,0.7087],"gerrick":[566,0,0.5506],"graylen":[246,26,0.4404],"kelan":[1790,0,0.6506],"lamart":[56,0,0.0],"olando":[621,0,0.5586],"radley":[1509,123,0.5941],"roddrick":[843,0,0.5852],"alistair":[3822,0,0.7165],"auddie":[7,0,0.0],"gonzales":[31,0,0.0],"hernandez":[114,0,0.4114],"jefry":[277,0,0.4885],"kameron":[38340,4396,0.8309],"lathaniel":[177,0,0.4496],"mrk":[85,0,0.0],"naymon":[7,0,0.0],"onix":[348,6,0.5012],"alrick":[139,0,0.4286],"ande":[41,197,0.3934],"andri":[146,5,0.4214],"bengie":[156,0,0.4386],"constantinos":[668,0,0.565],"cubby":[34,0,0.0],"daryal":[18,0,0.0],"dawan":[817,35,0.562],"deano":[210,0,0.4644],"eddward":[13,0,0.0],"furlon":[6,0,0.0],"gegory":[58,0,0.0],"gregeory":[26,0,0.0],"kel":[240,0,0.476],"kurk":[213,0,0.4657],"larsen":[526,187,0.421],"lerone":[402,0,0.5208],"lindale":[11,0,0.0],"nathaiel":[54,0,0.0],"pharon":[6,5,0.0],"raybert":[6,0,0.0],"rigo":[1802,0,0.6512],"roberrt":[11,0,0.0],"stennis":[16,0,0.0],"thommas":[12,0,0.0],"toronto":[49,0,0.0],"andrejs":[21,0,0.0],"averell":[21,0,0.0],"boney":[5,0,0.0],"bren":[555,174,0.4359],"conell":[34,0,0.0],"confesor":[40,0,0.0],"cormac":[3549,0,0.71],"coty":[5516,778,0.6659],"count":[5,0,0.0],"criag":[308,0,0.4977],"darhyl":[11,0,0.0],"demarcus":[13552,29,0.8248],"derome":[11,0,0.0],"deron":[5701,35,0.7471],"dong":[318,0,0.5005],"eith":[11,0,0.0],"eloyd":[10,0,0.0],"emerito":[16,0,0.0],"geof":[21,0,0.0],"gerado":[169,0,0.4456],"geron":[377,0,0.5153],"gerrod":[737,0,0.5735],"giancarlo":[8526,0,0.7861],"gregoy":[10,0,0.0],"heinrich":[506,0,0.5408],"henk":[5,0,0.0],"ichael":[391,0,0.5184],"jaysen":[2961,0,0.6943],"jeanpierre":[1146,0,0.6118],"jonthan":[990,0,0.5991],"kaj":[510,0,0.5415],"kody":[23556,860,0.8466],"krag":[22,0,0.0],"lann":[15,0,0.0],"lanyard":[5,0,0.0],"larin":[58,80,0.2481],"larre":[5,0,0.0],"larrry":[5,0,0.0],"lavin":[141,26,0.3753],"leviticus":[1433,0,0.6312],"linc":[199,0,0.4598],"linsley":[5,0,0.0],"mak":[174,0,0.4481],"marck":[634,0,0.5604],"marek":[3086,5,0.6969],"marrk":[5,0,0.0],"martez":[4077,6,0.7211],"mich":[22,0,0.0],"pepi":[10,0,0.0],"raegan":[273,24621,0.8696],"ramone":[2406,12,0.6733],"rayland":[646,0,0.562],"reade":[141,0,0.4298],"reco":[1197,0,0.6156],"regginald":[130,0,0.4228],"rhodney":[39,0,0.0],"ricks":[5,0,0.0],"roche":[26,15,0.0],"starkey":[5,0,0.0],"than":[36,0,0.0],"thearthur":[5,0,0.0],"tibor":[215,0,0.4665],"tobby":[394,0,0.5191],"tonio":[369,0,0.5134],"torin":[5114,213,0.7155],"wilberto":[511,0,0.5417],"williiam":[25,0,0.0],"zalmen":[648,0,0.5623],"zaragosa":[5,0,0.0],"tierney":[23,3941,0.7155],"sindee":[0,67,0.0],"marsheila":[0,106,0.4051],"tammera":[0,1338,0.6253],"tamy":[0,623,0.5589],"gia":[5,21617,0.8668],"marshelia":[0,35,0.0],"tammye":[0,666,0.5647],"tammra":[0,583,0.5531],"theonita":[0,17,0.0],"tambria":[0,236,0.4746],"tamarah":[0,1326,0.6245],"tamora":[0,677,0.5661],"jael":[3239,4401,0.4474],"kimberlin":[0,1155,0.6125],"tammey":[0,778,0.5782],"teal":[289,1591,0.5542],"deserie":[0,922,0.5929],"teia":[0,1047,0.604],"zeline":[0,22,0.0],"abbi":[0,2076,0.6634],"mandi":[0,10018,0.8002],"marsheela":[0,11,0.0],"sanita":[0,248,0.4789],"syndee":[0,57,0.0],"tamme":[0,267,0.4853],"brend":[0,56,0.0],"tamila":[0,572,0.5515],"cnythia":[0,50,0.0],"contessa":[0,2040,0.6619],"kenni":[10,322,0.489],"pammy":[0,379,0.5157],"avonda":[0,94,0.0],"bethsaida":[0,356,0.5103],"briget":[0,500,0.5398],"dennette":[0,209,0.464],"hae":[0,127,0.4208],"jutta":[0,38,0.0],"keta":[0,128,0.4214],"laurrie":[0,102,0.4017],"marriann":[0,20,0.0],"mishell":[0,511,0.5417],"quinette":[0,189,0.4553],"rondallyn":[0,8,0.0],"rubi":[14,8822,0.788],"sakeena":[0,588,0.5539],"shawnda":[0,2538,0.6809],"sherise":[0,975,0.5978],"tamey":[0,150,0.4352],"trayce":[585,208,0.4278],"yolunda":[0,240,0.476],"apryle":[0,131,0.4235],"audri":[0,1296,0.6225],"betzaida":[0,1446,0.632],"cabrina":[0,324,0.5021],"camy":[0,182,0.452],"candes":[0,7,0.0],"cindylou":[0,44,0.0],"crystol":[0,208,0.4636],"debb":[0,13,0.0],"delfreda":[0,7,0.0],"delsey":[0,32,0.0],"eryn":[165,7369,0.7584],"ginamarie":[0,1076,0.6064],"hildie":[0,17,0.0],"jalayne":[0,74,0.0],"jaleen":[380,344,0.3002],"jannean":[0,7,0.0],"kami":[52,8879,0.7856],"kawana":[0,960,0.5965],"keely":[21,12633,0.8191],"kila":[5,926,0.5906],"laroyce":[55,41,0.0],"meranda":[0,2901,0.6925],"nicci":[0,278,0.4888],"pamel":[0,48,0.0],"reeca":[0,12,0.0],"relinda":[0,45,0.0],"rhondia":[0,32,0.0],"ronnetta":[0,344,0.5073],"sanya":[0,1923,0.6568],"sharona":[0,701,0.5691],"shirlena":[0,105,0.4042],"tambi":[0,177,0.4496],"tamee":[0,127,0.4208],"tamira":[0,2158,0.6668],"teres":[0,45,0.0],"teya":[0,1290,0.6221],"tiina":[0,38,0.0],"timarie":[0,74,0.0],"tinna":[0,317,0.5002],"trinia":[0,316,0.4999],"trisa":[0,475,0.5353],"velecia":[0,77,0.0],"velveeta":[0,31,0.0],"abbye":[0,184,0.453],"aleshia":[0,2826,0.6902],"armelinda":[0,17,0.0],"cameo":[218,1501,0.565],"candye":[0,11,0.0],"carli":[5,8921,0.7897],"carllene":[0,6,0.0],"cath":[0,11,0.0],"cee":[0,18,0.0],"ceresa":[0,28,0.0],"charmine":[0,309,0.498],"cindye":[0,6,0.0],"cynnthia":[0,6,0.0],"cythina":[0,110,0.4083],"davona":[0,290,0.4925],"dawnna":[0,140,0.4292],"debr":[0,6,0.0],"deondra":[415,1354,0.4972],"devery":[265,82,0.388],"doriane":[0,50,0.0],"ernette":[0,11,0.0],"flori":[0,17,0.0],"goddess":[0,715,0.5709],"gogi":[0,6,0.0],"helaina":[0,1023,0.602],"ja":[299,136,0.3627],"jackilynn":[0,16,0.0],"jalynn":[377,4757,0.6876],"jamela":[0,938,0.5944],"janni":[0,49,0.0],"jocene":[0,6,0.0],"jonica":[0,628,0.5596],"kali":[887,31568,0.8776],"katalin":[0,400,0.5204],"kathllen":[0,18,0.0],"keeley":[49,6556,0.7583],"lashon":[716,1535,0.4572],"laurietta":[0,6,0.0],"ledonna":[0,68,0.0],"mariangela":[0,347,0.5081],"marlisa":[0,796,0.5802],"melena":[0,1245,0.619],"nanett":[0,17,0.0],"natacha":[0,1376,0.6277],"pamm":[0,21,0.0],"patriccia":[0,6,0.0],"pattii":[0,6,0.0],"queta":[0,6,0.0],"rodna":[0,6,0.0],"ronalyn":[0,44,0.0],"sequita":[0,200,0.4602],"shahara":[0,212,0.4653],"sharlayne":[0,6,0.0],"sharn":[26,23,0.0],"shawnette":[0,750,0.575],"sheery":[0,6,0.0],"stormi":[0,3889,0.718],"sulma":[0,413,0.5232],"sybrina":[0,98,0.0],"tamberly":[0,230,0.4723],"tambrey":[0,32,0.0],"tamye":[0,42,0.0],"torri":[352,3080,0.6346],"zelene":[0,98,0.0],"zo":[94,304,0.3972],"zsazsa":[0,308,0.4977],"althelia":[0,5,0.0],"amantha":[0,163,0.4424],"analisa":[0,3861,0.7173],"angi":[0,538,0.5462],"anina":[0,634,0.5604],"ariana":[200,118125,0.9983],"arlisa":[0,431,0.5269],"arlissa":[0,68,0.0],"arnitha":[0,5,0.0],"bandi":[0,52,0.0],"bernalee":[0,5,0.0],"bethzaida":[0,321,0.5013],"binky":[0,5,0.0],"breanda":[0,202,0.4611],"bryndis":[0,5,0.0],"carlisa":[0,1001,0.6001],"celisa":[0,324,0.5021],"chantel":[11,14970,0.8345],"cheire":[0,5,0.0],"chera":[0,468,0.534],"christl":[0,61,0.0],"cind":[0,5,0.0],"clintona":[0,30,0.0],"clintonia":[0,36,0.0],"corri":[27,703,0.5515],"coryn":[0,945,0.5951],"cynthiaa":[0,5,0.0],"dae":[122,63,0.299],"dannetta":[0,148,0.4341],"darnese":[0,5,0.0],"debaroh":[0,18,0.0],"deboraah":[0,5,0.0],"detria":[0,287,0.4916],"dianthia":[0,5,0.0],"dimitria":[0,240,0.476],"donitta":[0,16,0.0],"dorisa":[0,49,0.0],"dreamer":[12,101,0.367],"ede":[0,18,0.0],"eloina":[0,72,0.0],"elysia":[7,4341,0.7265],"erina":[0,1009,0.6008],"eun":[5,285,0.484],"evangela":[0,310,0.4983],"falicia":[0,651,0.5627],"galynn":[0,10,0.0],"gennifer":[0,1166,0.6133],"giulia":[0,3577,0.7107],"glenndora":[0,5,0.0],"glyndora":[0,5,0.0],"griselle":[0,390,0.5182],"gwan":[0,5,0.0],"gwender":[0,5,0.0],"gwendia":[0,5,0.0],"heidemarie":[0,100,0.4],"hyun":[263,168,0.3215],"ingrida":[0,10,0.0],"jai":[5037,1355,0.5998],"jalinda":[0,53,0.0],"janemarie":[0,50,0.0],"jaretta":[0,22,0.0],"jayle":[0,87,0.0],"jennifier":[0,506,0.5408],"joannette":[0,10,0.0],"jodena":[0,5,0.0],"jojo":[262,201,0.3017],"joycene":[0,10,0.0],"judell":[0,5,0.0],"judey":[0,5,0.0],"judit":[0,532,0.5452],"juley":[0,75,0.0],"kaja":[0,694,0.5683],"kamie":[0,1210,0.6166],"kamla":[0,68,0.0],"kammy":[0,662,0.5642],"karenn":[0,20,0.0],"katryn":[0,336,0.5053],"khris":[342,46,0.4564],"kibbie":[0,5,0.0],"kimbery":[0,532,0.5452],"kimmberly":[0,77,0.0],"kimmi":[0,225,0.4704],"kirstine":[0,126,0.4201],"kristinia":[0,244,0.4775],"kymm":[0,49,0.0],"ladale":[298,10,0.4816],"ladonda":[0,5,0.0],"ladonn":[0,10,0.0],"lanay":[0,574,0.5518],"laurenda":[0,44,0.0],"lavren":[0,396,0.5195],"lenett":[0,5,0.0],"lesvia":[0,31,0.0],"letecia":[0,525,0.544],"letia":[0,379,0.5157],"levonda":[0,40,0.0],"leyla":[0,10077,0.8007],"lian":[3824,1084,0.5751],"lilliann":[0,1219,0.6172],"linnett":[0,10,0.0],"lorett":[0,15,0.0],"lorii":[0,16,0.0],"lorrinda":[0,105,0.4042],"mardena":[0,5,0.0],"maresa":[0,586,0.5536],"mariclare":[0,10,0.0],"marlayna":[0,878,0.5887],"marsi":[0,123,0.418],"marvita":[0,17,0.0],"meggan":[0,2927,0.6933],"meladee":[0,60,0.0],"melesa":[0,130,0.4228],"melynn":[0,44,0.0],"merredith":[0,50,0.0],"micheala":[0,1484,0.6343],"minga":[0,5,0.0],"missi":[0,222,0.4693],"mlissa":[0,86,0.0],"mmary":[0,5,0.0],"morena":[0,287,0.4916],"mylissa":[0,399,0.5202],"neidra":[0,60,0.0],"nenia":[0,11,0.0],"nicolle":[0,6012,0.7558],"noleen":[0,5,0.0],"pami":[0,87,0.0],"patrena":[0,92,0.0],"paty":[0,5,0.0],"philene":[0,11,0.0],"pippa":[0,1594,0.6405],"raizy":[0,2542,0.681],"ravena":[0,10,0.0],"rebeka":[0,2647,0.6846],"rossalind":[0,5,0.0],"sandora":[0,5,0.0],"shaunda":[0,1623,0.6421],"shayna":[5,16190,0.8416],"sheresa":[0,312,0.4988],"sheretta":[0,355,0.51],"siesta":[0,5,0.0],"song":[76,206,0.358],"sonita":[0,195,0.458],"stanette":[0,10,0.0],"stanna":[0,22,0.0],"starletta":[0,112,0.4098],"susaa":[0,10,0.0],"tameria":[0,691,0.5679],"tarina":[0,803,0.5809],"tawnia":[0,632,0.5601],"tegan":[2526,6706,0.5761],"tenita":[0,219,0.4681],"terica":[0,1038,0.6032],"terrijo":[0,11,0.0],"theresann":[0,5,0.0],"tiara":[61,23770,0.8732],"trenice":[0,351,0.5091],"tuwana":[0,176,0.4491],"vannette":[0,34,0.0],"varonica":[0,231,0.4727],"venica":[0,11,0.0],"vernee":[0,92,0.0],"vestina":[0,5,0.0],"via":[0,332,0.5042],"vickilynn":[0,21,0.0],"vikie":[0,16,0.0],"yevetta":[0,5,0.0],"zainab":[0,6985,0.7688],"zeborah":[0,5,0.0],"zebra":[0,5,0.0],"zipora":[0,45,0.0],"maverick":[64665,711,0.9526],"yul":[669,0,0.5651],"laszlo":[1025,0,0.6021],"kaseem":[885,0,0.5894],"darick":[1257,0,0.6199],"lamark":[490,0,0.538],"seamus":[7656,0,0.7768],"tabb":[61,0,0.0],"dvid":[287,0,0.4916],"gamal":[491,0,0.5382],"ingo":[46,0,0.0],"jeffray":[55,0,0.0],"osmund":[24,0,0.0],"zarak":[29,0,0.0],"audey":[12,0,0.0],"chett":[368,0,0.5132],"colt":[26673,11,0.8849],"darrelle":[249,64,0.3971],"edilberto":[761,0,0.5763],"jakob":[31821,0,0.9005],"kelven":[113,0,0.4106],"melivn":[7,0,0.0],"nasser":[1285,0,0.6218],"amilcar":[945,0,0.5951],"anderw":[43,0,0.0],"bernd":[97,0,0.0],"bix":[16,0,0.0],"chadd":[2456,0,0.678],"chavis":[901,0,0.5909],"christophr":[404,0,0.5213],"darek":[1534,0,0.6372],"dyral":[18,0,0.0],"eldrick":[425,0,0.5257],"fraak":[6,0,0.0],"gregorie":[43,0,0.0],"javiel":[422,0,0.5251],"jefford":[11,0,0.0],"karim":[6688,58,0.7592],"klint":[779,0,0.5783],"michaee":[20,0,0.0],"osualdo":[387,0,0.5175],"rhon":[36,0,0.0],"rimantas":[6,0,0.0],"runnie":[12,0,0.0],"stevee":[11,398,0.5083],"terell":[2690,38,0.6776],"timothhy":[6,0,0.0],"torre":[861,403,0.4226],"tripp":[8398,0,0.7848],"tyronza":[6,108,0.3897],"anothy":[180,0,0.4511],"beck":[3724,114,0.6955],"brentley":[4167,293,0.6819],"callan":[9243,1404,0.6992],"charleton":[82,0,0.0],"charlles":[10,0,0.0],"christer":[5,0,0.0],"damion":[16825,39,0.8434],"dandre":[7689,37,0.7739],"darion":[7172,561,0.7213],"darrly":[347,0,0.5081],"delrick":[64,0,0.0],"devlin":[3233,195,0.6668],"donall":[5,0,0.0],"dovid":[3225,0,0.7017],"farrin":[15,123,0.3815],"gregori":[83,0,0.0],"greyling":[12,0,0.0],"ichard":[10,0,0.0],"jammes":[31,0,0.0],"jeanpaul":[1754,0,0.6488],"jordy":[6530,225,0.7404],"juarez":[27,0,0.0],"khalil":[24190,182,0.8708],"kiernan":[1727,678,0.4856],"krishna":[2316,1890,0.3991],"landel":[5,0,0.0],"mcchael":[5,0,0.0],"michuel":[5,0,0.0],"mik":[5,0,0.0],"mmark":[10,0,0.0],"pepe":[155,0,0.4381],"peppi":[5,13,0.0],"phillp":[64,0,0.0],"rocki":[5,55,0.0],"rodne":[5,0,0.0],"rommell":[56,0,0.0],"rus":[11,75,0.0],"samir":[10659,69,0.8009],"sammeul":[5,0,0.0],"sinatra":[27,5,0.0],"stphen":[25,0,0.0],"sylvain":[87,0,0.0],"theophus":[5,0,0.0],"thomass":[5,0,0.0],"thyrome":[5,0,0.0],"tibby":[5,0,0.0],"timiothy":[10,0,0.0],"tres":[492,5,0.5338],"valdez":[258,0,0.4823],"williamm":[11,0,0.0],"zac":[1563,0,0.6388],"tamre":[0,91,0.0],"miyoshi":[0,311,0.4986],"tequila":[0,2134,0.6658],"karil":[0,55,0.0],"dollinda":[0,30,0.0],"tamalyn":[0,144,0.4317],"tamla":[0,358,0.5108],"kelcey":[697,2123,0.5195],"bridgitte":[0,628,0.5596],"bennita":[0,43,0.0],"elayna":[0,5080,0.7412],"sherice":[0,1506,0.6356],"darsi":[0,105,0.4042],"ginnette":[0,92,0.0],"rivky":[0,2230,0.6697],"tamella":[0,94,0.0],"tamorah":[0,80,0.0],"tayna":[0,874,0.5883],"tequilla":[0,840,0.5849],"tynia":[0,576,0.5521],"aixa":[0,1114,0.6094],"charice":[0,738,0.5736],"darleane":[0,15,0.0],"deedy":[0,8,0.0],"isolina":[0,46,0.0],"katrinia":[0,489,0.5379],"kiva":[24,807,0.5671],"korrine":[0,561,0.5498],"lanor":[0,8,0.0],"laquinta":[27,1209,0.6049],"lisaann":[0,582,0.553],"lorisa":[0,402,0.5208],"millissa":[0,329,0.5034],"sylia":[0,23,0.0],"tamblyn":[0,18,0.0],"tammee":[0,92,0.0],"tamura":[0,193,0.4571],"anetra":[0,423,0.5253],"ani":[5,3125,0.698],"anisa":[0,5496,0.748],"ayse":[0,548,0.5478],"brigett":[0,475,0.5353],"chemise":[0,43,0.0],"chriselda":[0,304,0.4966],"christle":[0,526,0.5442],"crol":[0,12,0.0],"dawnella":[0,30,0.0],"dedee":[0,168,0.4451],"dorese":[0,12,0.0],"hiedi":[0,1033,0.6028],"hollyann":[0,619,0.5583],"jamine":[137,325,0.3749],"janear":[0,20,0.0],"jenae":[0,3357,0.7052],"jenay":[5,959,0.5937],"karita":[0,197,0.4589],"katana":[0,1726,0.6474],"keeli":[0,1190,0.6151],"kimlee":[0,17,0.0],"kimmarie":[0,225,0.4704],"lanise":[0,603,0.5561],"laresa":[0,408,0.5221],"leianne":[0,117,0.4136],"lorian":[23,233,0.4384],"marivel":[0,2121,0.6653],"melenda":[0,95,0.0],"pamale":[0,35,0.0],"patrricia":[0,7,0.0],"peggysue":[0,54,0.0],"rainie":[0,678,0.5662],"renetha":[0,22,0.0],"selita":[0,87,0.0],"sloane":[404,22586,0.857],"sobra":[0,7,0.0],"sussan":[0,76,0.0],"tamberlyn":[0,61,0.0],"terrylynn":[0,33,0.0],"zarita":[0,14,0.0],"angee":[0,159,0.4403],"arlecia":[0,53,0.0],"berit":[0,670,0.5652],"brenette":[0,23,0.0],"carisa":[0,3025,0.6961],"carolyon":[0,6,0.0],"chantell":[5,3491,0.7077],"charrise":[0,220,0.4685],"chenise":[0,289,0.4922],"cherol":[0,17,0.0],"cherrise":[0,105,0.4042],"christol":[0,243,0.4771],"crys":[0,15,0.0],"daintry":[0,6,0.0],"davonne":[393,198,0.3686],"deadre":[0,51,0.0],"debraa":[0,6,0.0],"dedre":[0,44,0.0],"delee":[0,39,0.0],"delesa":[0,66,0.0],"demitra":[0,637,0.5608],"derhonda":[0,101,0.4009],"derlene":[0,6,0.0],"dianie":[0,11,0.0],"dwendolyn":[0,6,0.0],"ellenmarie":[0,33,0.0],"faigy":[0,3477,0.7082],"gerrilyn":[0,32,0.0],"gineen":[0,27,0.0],"gwenne":[0,6,0.0],"jodey":[93,50,0.2803],"joletha":[0,6,0.0],"kammie":[0,897,0.5906],"kitrina":[0,264,0.4843],"kobi":[1911,1105,0.4409],"krysia":[0,75,0.0],"lasonya":[0,1700,0.6461],"latanga":[0,152,0.4364],"letisha":[0,1894,0.6555],"malanie":[0,882,0.5891],"marguerit":[0,6,0.0],"mariela":[8,11475,0.8114],"marykate":[0,2145,0.6663],"melicia":[0,210,0.4644],"melise":[0,33,0.0],"meshell":[0,497,0.5393],"noelani":[0,3551,0.7101],"portland":[93,164,0.3076],"rebecah":[0,214,0.4661],"regetta":[0,6,0.0],"ronia":[0,218,0.4677],"ruthena":[0,11,0.0],"sayonara":[0,6,0.0],"sherese":[0,940,0.5946],"sheritta":[0,205,0.4624],"sybille":[0,11,0.0],"tamarie":[0,57,0.0],"tambre":[0,23,0.0],"tamelia":[0,165,0.4435],"tamilyn":[0,101,0.4009],"tanzy":[0,55,0.0],"taunda":[0,6,0.0],"terryn":[214,587,0.4256],"youlonda":[0,41,0.0],"abigale":[0,5870,0.7537],"anetia":[0,15,0.0],"annete":[0,96,0.0],"aquanette":[0,22,0.0],"arianne":[0,4042,0.7213],"arvia":[0,5,0.0],"athina":[0,878,0.5887],"beatrica":[0,5,0.0],"belverly":[0,5,0.0],"bethie":[0,5,0.0],"bonitta":[0,5,0.0],"brittney":[265,82177,0.9801],"cammi":[0,674,0.5657],"carinne":[0,216,0.4669],"carmelitta":[0,12,0.0],"carre":[0,42,0.0],"channa":[5,873,0.5853],"chele":[0,86,0.0],"chena":[0,150,0.4352],"chirley":[0,5,0.0],"chrisie":[0,230,0.4723],"chrysanthemum":[0,97,0.0],"clarissia":[0,69,0.0],"corbi":[0,5,0.0],"cristen":[126,2655,0.6576],"cyinthia":[0,17,0.0],"cynthya":[0,174,0.4481],"darine":[0,20,0.0],"darleena":[0,5,0.0],"deanise":[0,10,0.0],"debrorah":[0,10,0.0],"delite":[0,10,0.0],"demeta":[0,27,0.0],"demetress":[12,122,0.3873],"demetric":[2126,411,0.5706],"deobrah":[0,10,0.0],"dinita":[0,76,0.0],"dinorah":[0,569,0.551],"dlynn":[0,66,0.0],"domini":[0,162,0.4419],"dorsi":[0,5,0.0],"fatina":[0,334,0.5047],"franchelle":[0,102,0.4017],"giuliana":[0,11793,0.8143],"gloriane":[0,17,0.0],"godiva":[0,10,0.0],"gweneva":[0,5,0.0],"jain":[0,5,0.0],"jaymi":[5,1342,0.6236],"jeannia":[0,63,0.0],"jetaun":[0,148,0.4341],"joany":[5,59,0.0],"joyette":[0,10,0.0],"judilynn":[0,5,0.0],"kahne":[199,5,0.4506],"kamille":[5,5538,0.7481],"kasia":[0,1702,0.6462],"katarina":[0,9244,0.7932],"katheine":[0,47,0.0],"kathyy":[0,5,0.0],"kemmie":[0,5,0.0],"kerie":[0,320,0.501],"kiley":[1097,19110,0.8144],"kimbely":[0,433,0.5273],"kimberlynn":[0,1093,0.6077],"kimberlyy":[0,5,0.0],"kimbly":[0,135,0.4261],"kimily":[0,20,0.0],"kolette":[0,369,0.5134],"krysti":[0,792,0.5797],"laurett":[0,5,0.0],"laurilyn":[0,10,0.0],"leaanne":[0,42,0.0],"leissa":[0,23,0.0],"lesie":[0,57,0.0],"linne":[0,29,0.0],"lisbet":[0,973,0.5976],"litsa":[0,21,0.0],"lorali":[0,405,0.5215],"lorez":[0,11,0.0],"lorijean":[0,61,0.0],"lorrena":[0,90,0.0],"louisia":[0,5,0.0],"lydiann":[0,442,0.5291],"lynise":[0,98,0.0],"machel":[10,118,0.3885],"madona":[0,10,0.0],"malkie":[0,83,0.0],"marel":[0,5,0.0],"mariena":[0,119,0.4151],"marlissa":[0,420,0.5246],"marysusan":[0,20,0.0],"medena":[0,5,0.0],"meriann":[0,15,0.0],"michalle":[0,295,0.494],"michielle":[0,44,0.0],"milca":[0,569,0.551],"mirinda":[0,320,0.501],"monsita":[0,5,0.0],"narcedalia":[0,26,0.0],"noemy":[0,1721,0.6472],"normaa":[0,10,0.0],"novena":[0,36,0.0],"panthea":[0,10,0.0],"patracia":[0,11,0.0],"paulinda":[0,5,0.0],"pixley":[0,5,0.0],"rashell":[0,1289,0.6221],"raya":[0,7165,0.771],"rhodonna":[0,5,0.0],"sadonna":[0,163,0.4424],"sand":[0,10,0.0],"sandry":[0,5,0.0],"schenita":[0,15,0.0],"sequoia":[476,3839,0.6468],"shanta":[142,5112,0.724],"sharal":[0,16,0.0],"sharmen":[0,35,0.0],"sharonda":[0,5839,0.7533],"shavon":[368,3899,0.6634],"shelena":[0,404,0.5213],"sherena":[0,446,0.5299],"sherisse":[0,193,0.4571],"sheryln":[0,11,0.0],"shonie":[0,29,0.0],"stayce":[0,172,0.4471],"stephney":[0,38,0.0],"suzzie":[0,5,0.0],"tabbie":[0,26,0.0],"talli":[0,139,0.4286],"tambry":[0,5,0.0],"tammela":[0,82,0.0],"tamrah":[0,145,0.4323],"tamson":[0,15,0.0],"tamula":[0,196,0.4585],"tangia":[0,74,0.0],"tarla":[0,56,0.0],"tearesa":[0,16,0.0],"terrlyn":[0,12,0.0],"tewana":[0,73,0.0],"tootie":[0,5,0.0],"toria":[0,1151,0.6122],"torie":[268,2811,0.637],"tosha":[0,6720,0.7655],"troi":[224,831,0.4763],"tuwanda":[0,161,0.4414],"twalla":[0,47,0.0],"tyla":[7,3227,0.7004],"ulrike":[0,46,0.0],"veranda":[0,37,0.0],"vernetia":[0,5,0.0],"wyzetta":[0,5,0.0],"yazmin":[7,9216,0.7924],"yollanda":[0,10,0.0],"hoby":[85,0,0.0],"vint":[85,0,0.0],"ryne":[4355,31,0.7233],"osher":[218,0,0.4677],"bretton":[1095,0,0.6079],"attila":[653,0,0.563],"ari":[19781,7179,0.6502],"darran":[778,0,0.5782],"dathan":[1563,0,0.6388],"paal":[14,0,0.0],"robeert":[15,0,0.0],"darryn":[1716,49,0.6313],"geff":[38,0,0.0],"klay":[1531,0,0.637],"lipa":[1192,5,0.613],"ralphie":[124,0,0.4187],"bartt":[115,0,0.4121],"brete":[7,0,0.0],"camron":[14738,399,0.814],"dallon":[679,0,0.5664],"derric":[1448,0,0.6322],"imre":[181,0,0.4515],"jeffy":[49,0,0.0],"koby":[5969,97,0.7445],"lisandro":[2280,5,0.6703],"machael":[195,5,0.4487],"rett":[142,0,0.4305],"sandro":[1887,0,0.6552],"antoino":[506,0,0.5408],"antwan":[12466,113,0.8126],"arnaz":[21,0,0.0],"brennon":[4364,0,0.728],"cevin":[252,0,0.4803],"chrisopher":[753,0,0.5754],"davvid":[6,0,0.0],"doron":[655,0,0.5632],"enneth":[24,0,0.0],"jjames":[6,0,0.0],"kellan":[10537,509,0.7714],"kemmy":[12,0,0.0],"nachman":[711,0,0.5704],"omero":[474,0,0.5352],"ortega":[6,0,0.0],"otoniel":[1060,0,0.6051],"raamond":[6,0,0.0],"ahron":[1262,0,0.6202],"alivn":[15,0,0.0],"antolin":[129,0,0.4221],"antwoine":[1057,0,0.6048],"antwon":[6371,5,0.7603],"bengy":[52,0,0.0],"beresford":[5,0,0.0],"briane":[55,296,0.4293],"bryne":[109,6,0.3906],"car":[5,0,0.0],"carvell":[193,0,0.4571],"cederic":[103,0,0.4026],"cheskel":[712,0,0.5705],"chistopher":[1439,0,0.6316],"christhoper":[88,0,0.0],"cleothis":[5,0,0.0],"conney":[5,0,0.0],"corinthian":[796,202,0.4784],"dade":[916,0,0.5924],"danyl":[76,59,0.2399],"daoud":[272,0,0.4869],"deandre":[29315,452,0.8812],"dein":[11,0,0.0],"dietmar":[11,0,0.0],"dwayn":[72,0,0.0],"dwyne":[85,0,0.0],"eamonn":[1304,0,0.6231],"ericc":[10,0,0.0],"federick":[80,0,0.0],"garyl":[5,0,0.0],"geogory":[10,0,0.0],"guyon":[10,0,0.0],"hasan":[5214,0,0.7434],"hobbie":[5,0,0.0],"iwan":[15,0,0.0],"jammy":[332,130,0.383],"jansen":[2090,214,0.61],"janson":[1153,0,0.6124],"jeffri":[50,0,0.0],"jes":[126,0,0.4201],"kinny":[20,0,0.0],"kirwin":[5,0,0.0],"kjell":[359,0,0.511],"klayton":[2926,0,0.6933],"lazer":[791,0,0.5796],"leib":[419,0,0.5244],"markey":[284,5,0.4837],"micchael":[5,0,0.0],"nicomedes":[5,0,0.0],"paladin":[41,0,0.0],"raman":[332,0,0.5042],"ranger":[1409,0,0.6298],"robroy":[22,0,0.0],"shelvin":[59,0,0.0],"sholem":[44,0,0.0],"spivey":[5,0,0.0],"stevn":[16,0,0.0],"stu":[55,0,0.0],"tarik":[4145,11,0.7218],"terr":[5,0,0.0],"thorn":[302,0,0.496],"timmey":[83,0,0.0],"timothyy":[10,0,0.0],"tovia":[264,41,0.4301],"tristram":[114,0,0.4114],"briggette":[0,184,0.453],"briggitte":[0,108,0.4067],"gema":[0,2823,0.6901],"prisca":[0,465,0.5335],"renatta":[0,636,0.5607],"detrice":[0,304,0.4966],"heidie":[0,395,0.5193],"ildiko":[0,55,0.0],"latasha":[114,30211,0.893],"latrina":[0,2319,0.6731],"pamie":[0,28,0.0],"rapunzel":[0,15,0.0],"steph":[5,66,0.0],"vernadette":[0,65,0.0],"alondra":[122,41878,0.922],"carmelyn":[0,8,0.0],"cyenthia":[0,24,0.0],"deandrea":[724,2233,0.5242],"josi":[0,1046,0.6039],"ketti":[0,34,0.0],"kimley":[0,102,0.4017],"lagina":[0,425,0.5257],"leimomi":[0,92,0.0],"leyda":[0,386,0.5173],"roschelle":[0,196,0.4585],"skyla":[0,14080,0.8297],"tandi":[0,602,0.5559],"tremaine":[4499,288,0.6917],"velencia":[0,135,0.4261],"velerie":[0,13,0.0],"carlissa":[0,658,0.5636],"chelly":[0,152,0.4364],"constanza":[0,893,0.5902],"dawnne":[0,27,0.0],"denett":[0,13,0.0],"doddie":[0,57,0.0],"elishia":[0,587,0.5537],"jenai":[0,789,0.5794],"jodiann":[0,157,0.4392],"jovetta":[0,7,0.0],"kellyann":[0,1843,0.6531],"kimary":[0,18,0.0],"krissy":[0,2176,0.6675],"lenay":[0,197,0.4589],"lisamarie":[0,1838,0.6529],"loi":[53,12,0.0],"megon":[0,161,0.4414],"meliss":[0,351,0.5091],"natalyn":[0,724,0.5719],"perian":[0,73,0.0],"regnia":[0,61,0.0],"shawneen":[0,123,0.418],"sylvette":[0,36,0.0],"tamah":[0,53,0.0],"tammala":[0,88,0.0],"tonnya":[0,72,0.0],"triana":[0,1055,0.6047],"vernesta":[0,7,0.0],"adeana":[0,187,0.4544],"aleata":[0,17,0.0],"aleesa":[0,746,0.5745],"aleisa":[0,405,0.5215],"aleyda":[0,1661,0.6441],"babbi":[0,12,0.0],"bracha":[0,2469,0.6785],"cali":[388,22812,0.8585],"cassi":[0,2356,0.6744],"cathrina":[0,50,0.0],"chirstine":[0,117,0.4136],"crystie":[0,90,0.0],"damary":[0,379,0.5157],"dandra":[60,605,0.5136],"darlise":[0,6,0.0],"dawnmarie":[0,723,0.5718],"decarla":[0,116,0.4129],"delania":[0,238,0.4753],"dellareese":[0,11,0.0],"delonda":[0,296,0.4943],"dymphna":[0,98,0.0],"elanie":[0,700,0.569],"elesha":[0,612,0.5574],"fatimah":[0,3608,0.7115],"flecia":[0,221,0.4689],"galinda":[0,11,0.0],"ginetta":[0,11,0.0],"indie":[254,3953,0.681],"jaimi":[0,1147,0.6119],"jametta":[0,98,0.0],"jennean":[0,23,0.0],"krina":[0,119,0.4151],"lacheryl":[0,156,0.4386],"ladawna":[0,284,0.4907],"lamonica":[6,1662,0.6421],"laneita":[0,6,0.0],"linae":[0,42,0.0],"linita":[0,34,0.0],"lisia":[0,191,0.4562],"llinda":[0,6,0.0],"malorie":[0,3973,0.7198],"mette":[0,68,0.0],"pierette":[0,6,0.0],"reann":[0,476,0.5355],"redonda":[0,33,0.0],"rika":[0,555,0.5489],"seaneen":[0,11,0.0],"seanna":[0,2331,0.6735],"shanita":[0,3450,0.7076],"symantha":[0,602,0.5559],"tamaria":[0,845,0.5854],"tamya":[0,2783,0.6889],"taria":[26,679,0.5486],"terrin":[576,394,0.3547],"teryn":[261,1373,0.54],"therea":[0,11,0.0],"tiwana":[0,463,0.5331],"tonnia":[0,112,0.4098],"torria":[0,181,0.4515],"trese":[0,60,0.0],"tuwanna":[0,152,0.4364],"tyrene":[0,89,0.0],"vanesse":[0,29,0.0],"verenda":[0,17,0.0],"verinda":[0,6,0.0],"veroncia":[0,359,0.511],"vivette":[0,6,0.0],"abbigail":[5,12114,0.8164],"adorn":[0,5,0.0],"alesha":[6,7534,0.7749],"almarosa":[0,144,0.4317],"alvinia":[0,22,0.0],"anela":[0,1735,0.6479],"angelie":[0,2207,0.6688],"angelisa":[0,797,0.5803],"annettie":[0,21,0.0],"anthia":[0,36,0.0],"antoinnette":[0,27,0.0],"arlicia":[0,205,0.4624],"babby":[0,34,0.0],"bamby":[0,5,0.0],"barbaraa":[0,5,0.0],"betheny":[0,268,0.4856],"birgitta":[0,85,0.0],"birgitte":[0,5,0.0],"blynda":[0,5,0.0],"bryanna":[0,19561,0.8583],"carelyn":[0,5,0.0],"charlisa":[0,596,0.555],"charmon":[0,107,0.4059],"chauna":[0,248,0.4789],"chrissa":[0,705,0.5696],"chrisy":[0,216,0.4669],"cissie":[0,5,0.0],"clarrisa":[0,313,0.4991],"colita":[0,41,0.0],"corienne":[0,5,0.0],"cyanthia":[0,5,0.0],"cynthina":[0,53,0.0],"darlisa":[0,141,0.4298],"darri":[0,34,0.0],"deangela":[0,1234,0.6183],"debrra":[0,5,0.0],"deeana":[0,337,0.5055],"deenie":[0,17,0.0],"dekota":[834,349,0.4333],"delrita":[0,17,0.0],"denecia":[0,202,0.4611],"dezra":[0,62,0.0],"dietta":[0,10,0.0],"dobbie":[11,5,0.0],"dolene":[0,5,0.0],"dorane":[0,5,0.0],"dorey":[7,48,0.0],"elgina":[0,5,0.0],"enita":[0,10,0.0],"felina":[0,382,0.5164],"inett":[0,5,0.0],"ingra":[0,71,0.0],"jamice":[0,116,0.4129],"jayetta":[0,5,0.0],"jelena":[0,1607,0.6412],"jennel":[0,271,0.4866],"jessi":[1314,6497,0.6476],"joandra":[0,22,0.0],"jonia":[0,95,0.0],"jowana":[0,107,0.4059],"joyia":[0,102,0.4017],"juwana":[0,137,0.4273],"kaelyn":[82,15435,0.8337],"kamilla":[0,3068,0.6974],"kanella":[0,11,0.0],"kebbie":[0,5,0.0],"kelee":[0,317,0.5002],"keleen":[0,11,0.0],"kelie":[0,273,0.4872],"kelliann":[0,666,0.5647],"kema":[0,185,0.4534],"kimatha":[0,5,0.0],"kimberla":[0,149,0.4346],"kimberlye":[0,70,0.0],"kimbley":[0,573,0.5516],"kimette":[0,10,0.0],"kinda":[0,315,0.4997],"kitza":[0,5,0.0],"kookie":[0,5,0.0],"kylia":[0,1048,0.6041],"lajeana":[0,106,0.4051],"lakay":[0,11,0.0],"lanese":[0,54,0.0],"lashaun":[882,1275,0.3941],"lasondra":[0,539,0.5463],"latangie":[0,5,0.0],"latania":[0,499,0.5396],"laurieann":[0,410,0.5226],"lessia":[0,23,0.0],"liticia":[0,121,0.4166],"loredana":[0,273,0.4872],"lorilie":[0,10,0.0],"lorilynn":[0,130,0.4228],"lorrel":[0,5,0.0],"macrina":[0,170,0.4461],"marialena":[0,246,0.4782],"maricelda":[0,28,0.0],"marsetta":[0,5,0.0],"meline":[0,90,0.0],"metra":[0,30,0.0],"millisa":[0,255,0.4813],"mischel":[0,26,0.0],"mitchelle":[160,502,0.4278],"montrice":[88,208,0.3473],"morgen":[592,1855,0.5138],"norri":[0,21,0.0],"pamler":[0,25,0.0],"pamlyn":[0,5,0.0],"polli":[0,13,0.0],"quanita":[0,547,0.5476],"qwendolyn":[0,10,0.0],"raena":[0,1618,0.6418],"raenae":[0,5,0.0],"raissa":[0,545,0.5473],"ranada":[0,309,0.498],"ravonda":[0,86,0.0],"ravonne":[0,5,0.0],"rebba":[0,27,0.0],"renarda":[5,141,0.418],"renona":[0,36,0.0],"retina":[0,158,0.4397],"revena":[0,10,0.0],"sandera":[0,10,0.0],"selenia":[0,501,0.54],"sharalynn":[0,5,0.0],"sharlena":[0,143,0.4311],"sharnell":[0,599,0.5555],"shauneille":[0,5,0.0],"shelie":[0,119,0.4151],"sherli":[0,10,0.0],"sondi":[0,98,0.0],"stepanie":[0,676,0.566],"sylvanna":[0,280,0.4894],"talisa":[0,2084,0.6638],"tangy":[0,263,0.484],"terease":[0,66,0.0],"terrena":[0,53,0.0],"terrica":[0,1406,0.6296],"tessi":[0,74,0.0],"tiwanna":[0,259,0.4827],"tonianne":[0,225,0.4704],"trissa":[0,214,0.4661],"valire":[0,26,0.0],"valisa":[0,336,0.5053],"vaness":[0,288,0.4919],"wanakee":[0,37,0.0],"yaffa":[0,440,0.5287],"rowdy":[4727,59,0.7269],"shulem":[1503,0,0.6354],"ronan":[19263,237,0.8476],"shmiel":[892,0,0.5901],"skylar":[18158,85585,0.825],"anil":[1160,0,0.6129],"effrem":[24,0,0.0],"jacoby":[11035,119,0.8008],"jerardo":[1462,0,0.633],"juergen":[89,0,0.0],"antwone":[2097,0,0.6643],"ark":[88,0,0.0],"breton":[451,0,0.5308],"hersh":[839,0,0.5848],"ingemar":[21,0,0.0],"miklos":[222,0,0.4693],"oleg":[457,0,0.532],"renault":[24,0,0.0],"tomm":[8,0,0.0],"aharon":[2510,0,0.6799],"aundray":[211,0,0.4649],"derron":[1531,0,0.637],"edvardo":[310,0,0.4983],"kalin":[1883,1519,0.391],"karlan":[45,0,0.0],"martain":[12,0,0.0],"martino":[751,0,0.5751],"quint":[687,0,0.5674],"rade":[19,0,0.0],"reuven":[1033,0,0.6028],"roert":[24,0,0.0],"shamus":[1768,0,0.6495],"shlome":[756,0,0.5757],"tore":[81,11,0.0],"tray":[1519,0,0.6363],"tryone":[253,0,0.4806],"twain":[130,0,0.4228],"zendell":[12,0,0.0],"athanasios":[1260,0,0.6201],"avin":[1016,70,0.568],"borach":[15,0,0.0],"ciaran":[2092,30,0.6559],"davd":[29,0,0.0],"erickson":[1171,0,0.6137],"geffory":[6,0,0.0],"jefferi":[6,0,0.0],"jeffree":[105,0,0.4042],"karlo":[1031,0,0.6027],"kenne":[12,0,0.0],"raymod":[6,0,0.0],"regniald":[24,0,0.0],"ronzel":[11,0,0.0],"staccato":[16,0,0.0],"stevenn":[6,0,0.0],"stig":[22,0,0.0],"toren":[932,11,0.588],"zui":[6,0,0.0],"ahmet":[650,0,0.5626],"alander":[5,0,0.0],"alandus":[21,0,0.0],"artez":[624,0,0.559],"beaver":[19,0,0.0],"beril":[5,0,0.0],"branden":[27501,330,0.8784],"brek":[395,0,0.5193],"bretley":[37,0,0.0],"case":[9565,0,0.7961],"chiam":[21,0,0.0],"dallen":[1197,0,0.6156],"damone":[1259,0,0.62],"datid":[5,0,0.0],"dav":[5,0,0.0],"deryk":[759,0,0.576],"dezi":[332,283,0.3011],"donaldo":[339,0,0.506],"dwright":[29,0,0.0],"dywayne":[37,0,0.0],"edwardd":[5,0,0.0],"elfago":[5,0,0.0],"ericson":[726,0,0.5722],"fabin":[15,0,0.0],"fishel":[280,0,0.4894],"greory":[31,0,0.0],"kalani":[2216,9471,0.6593],"kalon":[1033,23,0.5916],"kendon":[908,0,0.5916],"kevins":[26,0,0.0],"kyron":[4474,0,0.7301],"leonid":[478,0,0.5359],"lonard":[5,0,0.0],"mackel":[16,0,0.0],"mahdi":[2294,0,0.6721],"miichael":[5,0,0.0],"mmichael":[5,0,0.0],"philipe":[158,0,0.4397],"rahman":[1261,0,0.6201],"raland":[10,0,0.0],"ramos":[56,0,0.0],"ranzy":[5,0,0.0],"regnald":[58,0,0.0],"rickyy":[5,0,0.0],"scooter":[20,0,0.0],"selven":[5,0,0.0],"shraga":[698,0,0.5688],"stpehen":[49,0,0.0],"timathy":[280,0,0.4894],"undrea":[70,186,0.3499],"vent":[14,0,0.0],"yechiel":[1887,0,0.6552],"zyndall":[14,0,0.0],"leshia":[0,517,0.5427],"chantay":[0,1108,0.6089],"devy":[0,27,0.0],"periann":[0,32,0.0],"farah":[98,6114,0.7467],"jordana":[0,3407,0.7065],"lajeune":[0,29,0.0],"kileen":[0,118,0.4144],"tiki":[23,356,0.4844],"leasha":[0,309,0.498],"leesha":[0,453,0.5312],"lechia":[0,34,0.0],"perriann":[0,12,0.0],"talena":[0,927,0.5934],"talina":[0,1040,0.6034],"regana":[0,68,0.0],"samone":[5,2210,0.6676],"aletia":[0,55,0.0],"allisa":[0,1340,0.6254],"bridgitt":[0,150,0.4352],"jovon":[2712,289,0.6285],"mistie":[0,2240,0.67],"tauni":[0,296,0.4943],"alishia":[0,2719,0.6869],"deridre":[0,16,0.0],"hayley":[46,51223,0.9411],"nedenia":[0,9,0.0],"talia":[5,32967,0.9035],"tessy":[0,199,0.4598],"tinya":[0,143,0.4311],"ariadne":[0,4708,0.7346],"carilee":[0,14,0.0],"charlise":[0,866,0.5875],"darbi":[0,668,0.565],"deidrea":[0,127,0.4208],"denetra":[0,470,0.5344],"dovetta":[0,16,0.0],"jaylyn":[1789,5659,0.5884],"lesi":[0,19,0.0],"lourdez":[0,93,0.0],"lovann":[0,8,0.0],"magalie":[0,270,0.4863],"marpessa":[0,8,0.0],"mashelle":[0,114,0.4114],"mirenda":[0,79,0.0],"monigue":[0,474,0.5352],"odalys":[0,3385,0.7059],"pari":[0,785,0.579],"shenetta":[0,230,0.4723],"sherrylyn":[0,19,0.0],"sherrylynn":[0,38,0.0],"tersia":[0,30,0.0],"tianda":[0,13,0.0],"timberly":[0,1025,0.6021],"troylynn":[0,52,0.0],"alicyn":[0,690,0.5678],"cherrell":[0,433,0.5273],"cherron":[5,317,0.4938],"claudinette":[0,7,0.0],"demita":[0,275,0.4879],"donielle":[91,1950,0.6325],"doty":[0,7,0.0],"dree":[0,7,0.0],"edee":[0,108,0.4067],"eliabeth":[0,247,0.4785],"janenne":[0,12,0.0],"jolisa":[0,815,0.5822],"kylie":[450,120379,0.9963],"lauraann":[0,235,0.4742],"lavelda":[0,7,0.0],"lishia":[0,28,0.0],"lorieann":[0,73,0.0],"louri":[0,59,0.0],"lycia":[0,71,0.0],"lynthia":[0,12,0.0],"marylisa":[0,28,0.0],"melisha":[0,912,0.592],"samanthia":[0,492,0.5384],"sundie":[0,36,0.0],"tangelia":[0,284,0.4907],"tawnee":[0,778,0.5782],"tracyann":[0,181,0.4515],"valeire":[0,12,0.0],"velicia":[0,240,0.476],"amberly":[0,6626,0.7643],"anitia":[0,6,0.0],"annelisa":[0,229,0.472],"berni":[0,6,0.0],"betsaida":[0,861,0.587],"bevery":[0,11,0.0],"bridgetta":[0,36,0.0],"brigitt":[0,120,0.4158],"calinda":[0,71,0.0],"carlotte":[0,16,0.0],"carrin":[0,222,0.4693],"charlinda":[0,48,0.0],"crickett":[0,115,0.4121],"demetrica":[0,227,0.4712],"dlisa":[0,69,0.0],"eddi":[119,6,0.3993],"felechia":[0,30,0.0],"frady":[0,416,0.5238],"isha":[0,4974,0.7393],"jacqline":[0,40,0.0],"kassy":[0,898,0.5907],"katia":[0,6245,0.7591],"keleigh":[0,798,0.5804],"kelene":[0,44,0.0],"kelia":[0,1040,0.6034],"kimblery":[0,157,0.4392],"krysten":[0,4038,0.7212],"lagreta":[0,17,0.0],"latoya":[185,45555,0.9283],"laurieanne":[0,63,0.0],"lauriel":[0,201,0.4606],"leanette":[0,154,0.4375],"leca":[0,11,0.0],"letetia":[0,160,0.4408],"leti":[0,79,0.0],"lisaanne":[0,63,0.0],"lorriann":[0,63,0.0],"louria":[0,17,0.0],"lueann":[0,6,0.0],"mairi":[0,284,0.4907],"marche":[7,411,0.5155],"megen":[0,682,0.5668],"meiling":[0,365,0.5125],"michaelann":[0,201,0.4606],"mitze":[0,29,0.0],"mychelle":[0,656,0.5634],"natali":[0,4776,0.7358],"nilza":[0,66,0.0],"pammie":[0,101,0.4009],"pandy":[0,14,0.0],"patina":[0,282,0.49],"pattianne":[0,27,0.0],"quenna":[0,142,0.4305],"renitta":[0,28,0.0],"sary":[5,73,0.0],"semone":[0,247,0.4785],"sereda":[0,6,0.0],"seresa":[0,40,0.0],"shaila":[0,3235,0.702],"shawanda":[0,2853,0.6911],"sheina":[0,478,0.5359],"shenetha":[0,54,0.0],"sherrice":[0,412,0.523],"shiri":[0,219,0.4681],"shyrell":[0,12,0.0],"sienna":[10,37207,0.9139],"starlynn":[0,484,0.537],"stephanee":[0,515,0.5424],"tamatha":[0,2811,0.6898],"tanni":[0,6,0.0],"taressa":[0,362,0.5117],"telena":[0,304,0.4966],"telesia":[0,111,0.4091],"telina":[0,281,0.4897],"velisa":[0,153,0.4369],"voncia":[0,29,0.0],"wynee":[0,83,0.0],"ziva":[0,2669,0.6853],"zonya":[0,70,0.0],"adrienna":[0,796,0.5802],"allicia":[0,689,0.5676],"amity":[0,2126,0.6655],"anabella":[0,6687,0.765],"angles":[0,65,0.0],"annelouise":[0,10,0.0],"antia":[0,179,0.4506],"arethea":[0,28,0.0],"arista":[0,588,0.5539],"audrone":[0,5,0.0],"beate":[0,10,0.0],"belisa":[0,69,0.0],"beretta":[0,257,0.482],"bethy":[0,11,0.0],"betsye":[0,5,0.0],"bonniejo":[0,15,0.0],"brendaa":[0,5,0.0],"casaundra":[0,772,0.5775],"charlon":[0,20,0.0],"charri":[0,15,0.0],"cintra":[0,5,0.0],"crysta":[0,1777,0.6499],"crystall":[0,407,0.5219],"cydni":[0,590,0.5542],"cyntheia":[0,11,0.0],"dalea":[0,39,0.0],"danta":[398,10,0.5093],"darsie":[0,12,0.0],"daveda":[0,71,0.0],"deania":[0,79,0.0],"december":[11,1586,0.6362],"delea":[0,5,0.0],"dellena":[0,21,0.0],"demmie":[0,5,0.0],"denea":[0,376,0.515],"denel":[0,10,0.0],"denisha":[0,4306,0.7268],"deverly":[0,5,0.0],"dita":[0,24,0.0],"elissia":[0,291,0.4928],"falina":[0,50,0.0],"fe":[0,115,0.4121],"felesia":[0,87,0.0],"felissa":[0,282,0.49],"geanine":[0,146,0.4329],"geanna":[0,609,0.5569],"genae":[0,314,0.4994],"gennine":[0,17,0.0],"gianina":[0,717,0.5711],"gricel":[0,275,0.4879],"gwendoly":[0,28,0.0],"haya":[0,1579,0.6397],"hee":[0,27,0.0],"heidimarie":[0,5,0.0],"isabelita":[0,24,0.0],"ismelda":[0,101,0.4009],"jacklon":[0,11,0.0],"janai":[88,3057,0.68],"jance":[78,5,0.0],"janmarie":[0,68,0.0],"jeanitta":[0,5,0.0],"jeannell":[0,5,0.0],"jerrae":[0,5,0.0],"joanita":[0,10,0.0],"johnni":[11,261,0.4672],"jolana":[0,77,0.0],"josee":[0,577,0.5522],"josine":[0,5,0.0],"kalleen":[0,16,0.0],"kamela":[0,775,0.5779],"karmella":[0,507,0.541],"kerriann":[0,714,0.5707],"kimella":[0,5,0.0],"kimely":[0,11,0.0],"kimlyn":[0,10,0.0],"konstantina":[0,521,0.5434],"korie":[492,2461,0.5784],"krystn":[0,110,0.4083],"lachele":[0,155,0.4381],"ladana":[0,320,0.501],"ladenna":[0,10,0.0],"lahonda":[0,5,0.0],"lajeanna":[0,21,0.0],"lamonda":[0,72,0.0],"lanai":[0,540,0.5465],"lanet":[0,21,0.0],"laneva":[0,5,0.0],"latanja":[0,136,0.4267],"latressa":[0,290,0.4925],"launda":[0,5,0.0],"lavonya":[0,251,0.4799],"lehua":[0,310,0.4983],"leicia":[0,5,0.0],"leonice":[0,5,0.0],"leresa":[0,10,0.0],"letti":[0,563,0.5501],"lica":[0,5,0.0],"liesha":[0,59,0.0],"linnda":[0,5,0.0],"lorrae":[0,10,0.0],"luwanda":[0,147,0.4335],"magarita":[0,15,0.0],"malaine":[0,5,0.0],"malicia":[0,110,0.4083],"maricel":[0,465,0.5335],"marilinda":[0,5,0.0],"maryeileen":[0,10,0.0],"marykaye":[0,26,0.0],"maryke":[0,11,0.0],"maryterese":[0,5,0.0],"mechel":[219,70,0.373],"meladie":[0,62,0.0],"milka":[0,509,0.5413],"mindel":[0,258,0.4823],"miracle":[491,20836,0.8459],"mirza":[537,135,0.4519],"modesty":[0,571,0.5513],"morrisa":[0,207,0.4632],"nalene":[0,5,0.0],"neisha":[0,1106,0.6088],"nerida":[0,47,0.0],"nuria":[0,738,0.5736],"pandi":[0,5,0.0],"pandra":[0,5,0.0],"pascale":[0,629,0.5597],"perianne":[0,5,0.0],"petite":[0,5,0.0],"philicia":[0,502,0.5401],"quentina":[0,140,0.4292],"ralinda":[0,35,0.0],"raylean":[0,5,0.0],"renel":[62,16,0.0],"roschell":[0,39,0.0],"roseellen":[0,5,0.0],"runda":[0,10,0.0],"sabre":[73,514,0.4849],"samina":[0,694,0.5683],"sandrina":[0,69,0.0],"sebrenia":[0,29,0.0],"sherrl":[0,17,0.0],"shonni":[0,5,0.0],"shoran":[0,16,0.0],"shoshanna":[0,814,0.5821],"sindie":[0,10,0.0],"sita":[0,474,0.5352],"ssirley":[0,5,0.0],"swanda":[0,5,0.0],"sybrena":[0,5,0.0],"syndia":[0,5,0.0],"syrena":[0,677,0.5661],"tanji":[0,147,0.4335],"tanzie":[0,68,0.0],"taralee":[0,207,0.4632],"telesa":[0,103,0.4026],"tesia":[0,1081,0.6068],"thearsa":[0,21,0.0],"tiare":[0,1276,0.6212],"tjuana":[0,127,0.4208],"tonoa":[0,38,0.0],"tracia":[0,414,0.5234],"triena":[0,25,0.0],"trinita":[0,205,0.4624],"trista":[5,12458,0.8188],"twala":[0,109,0.4075],"ute":[0,30,0.0],"vandi":[0,34,0.0],"varda":[0,5,0.0],"veeta":[0,10,0.0],"verdina":[0,16,0.0],"vernay":[0,5,0.0],"viv":[0,5,0.0],"voula":[0,64,0.0],"wendlyn":[0,5,0.0],"yumi":[0,967,0.5971],"zanita":[0,102,0.4017],"cully":[250,0,0.4796],"stefon":[1699,0,0.646],"rydell":[412,0,0.523],"steffon":[877,0,0.5886],"andamo":[15,0,0.0],"stephone":[723,0,0.5718],"christropher":[315,0,0.4997],"labaron":[170,0,0.4461],"arnez":[571,5,0.5473],"darrien":[3251,361,0.6404],"dobie":[32,0,0.0],"kosta":[406,0,0.5217],"markum":[9,0,0.0],"mehmet":[816,0,0.5823],"charlse":[14,0,0.0],"darrett":[35,0,0.0],"raymie":[112,185,0.3081],"saladin":[174,0,0.4481],"therron":[241,0,0.4764],"wynton":[547,0,0.5476],"anothny":[36,0,0.0],"aquilino":[19,0,0.0],"bonanza":[7,0,0.0],"cedrie":[62,0,0.0],"chirstopher":[1051,0,0.6043],"deangelo":[12179,21,0.8159],"ediberto":[337,0,0.5055],"goeffrey":[54,0,0.0],"jamms":[7,0,0.0],"jerron":[1744,0,0.6483],"sanchez":[976,17,0.5891],"stace":[184,33,0.3962],"stein":[108,0,0.4067],"taz":[510,10,0.5328],"treg":[297,0,0.4946],"akbar":[584,0,0.5533],"alexandros":[1727,0,0.6475],"amose":[6,0,0.0],"barret":[1354,5,0.6243],"brently":[1405,18,0.6227],"carrey":[6,47,0.0],"christophere":[189,0,0.4553],"cristian":[69011,1126,0.9536],"cyle":[1971,15,0.6546],"darik":[520,0,0.5432],"darreyl":[43,0,0.0],"dartagnan":[1107,0,0.6088],"derrin":[678,0,0.5662],"didier":[996,0,0.5997],"garlund":[6,0,0.0],"guye":[11,0,0.0],"jomo":[355,0,0.51],"josephy":[12,0,0.0],"kerwyn":[17,0,0.0],"kwame":[3913,38,0.7124],"lonnel":[70,0,0.0],"lonniel":[6,0,0.0],"nico":[19214,998,0.8186],"nikolai":[10550,0,0.8047],"rayce":[1385,11,0.624],"rodny":[60,0,0.0],"ryder":[63889,2335,0.9302],"salim":[1945,0,0.6578],"thommy":[17,0,0.0],"yance":[29,0,0.0],"yon":[87,0,0.0],"zsolt":[6,0,0.0],"almando":[93,0,0.0],"ansara":[5,0,0.0],"barren":[86,0,0.0],"bejamin":[457,0,0.532],"brentt":[294,0,0.4937],"bronco":[119,0,0.4151],"calin":[1152,224,0.5255],"craigory":[98,0,0.0],"dalon":[767,0,0.577],"danard":[20,0,0.0],"darrian":[3436,971,0.5682],"dayn":[69,0,0.0],"devry":[27,11,0.0],"dimitrius":[959,0,0.5964],"djuan":[1512,7,0.6334],"elizandro":[322,0,0.5016],"erice":[234,30,0.4293],"eriks":[41,0,0.0],"fabain":[49,0,0.0],"fennell":[5,0,0.0],"flip":[5,0,0.0],"garo":[157,0,0.4392],"jaimes":[153,0,0.4369],"jamess":[10,0,0.0],"javon":[17474,760,0.8167],"jeremias":[4746,0,0.7353],"johnpaul":[5956,0,0.755],"kimbrell":[5,5,0.0],"lamone":[144,0,0.4317],"lavester":[11,0,0.0],"lennel":[5,0,0.0],"lenoris":[15,0,0.0],"levertis":[5,0,0.0],"macheal":[33,16,0.0],"mitchal":[40,0,0.0],"nicolaas":[398,0,0.52],"norb":[5,0,0.0],"paco":[324,0,0.5021],"ramero":[22,0,0.0],"raudel":[968,0,0.5972],"ritch":[25,0,0.0],"rodeny":[23,0,0.0],"roldan":[307,0,0.4974],"saleem":[1892,0,0.6554],"shia":[2115,1058,0.4668],"staney":[5,0,0.0],"syl":[5,0,0.0],"tarrance":[898,0,0.5907],"thelonious":[455,0,0.5316],"trip":[421,0,0.5249],"volker":[5,0,0.0],"winfried":[5,0,0.0],"zandel":[5,0,0.0],"lavoris":[212,163,0.291],"tarita":[0,364,0.5122],"korina":[0,2590,0.6827],"kiz":[0,39,0.0],"shirelle":[0,711,0.5704],"amby":[0,28,0.0],"shurla":[0,17,0.0],"coreena":[0,345,0.5076],"corrinna":[0,228,0.4716],"sharese":[0,887,0.5896],"chante":[33,3956,0.7142],"deanda":[0,72,0.0],"mariza":[0,1142,0.6115],"nichelle":[5,5536,0.748],"ulonda":[0,176,0.4491],"chanta":[0,861,0.587],"karmin":[0,978,0.5981],"latonja":[0,684,0.567],"shantay":[0,1270,0.6208],"shirell":[0,325,0.5024],"fawnda":[0,71,0.0],"jacquel":[168,363,0.3726],"tywanda":[0,547,0.5476],"calisse":[0,22,0.0],"delecia":[0,336,0.5053],"domita":[0,38,0.0],"elisabet":[0,1509,0.6357],"jozette":[0,513,0.542],"korena":[0,456,0.5318],"mariesa":[0,347,0.5081],"marj":[0,14,0.0],"sheronda":[0,1300,0.6228],"amyjo":[0,487,0.5375],"anecia":[0,650,0.5626],"araina":[0,519,0.543],"briggett":[0,67,0.0],"chanell":[0,2889,0.6921],"corletta":[0,14,0.0],"eleshia":[0,160,0.4408],"iwalani":[0,106,0.4051],"jeantte":[0,28,0.0],"karissa":[0,20026,0.8603],"kellyanne":[0,624,0.559],"leica":[0,28,0.0],"lichelle":[0,124,0.4187],"richell":[0,166,0.444],"rolonda":[0,484,0.537],"sakina":[0,1547,0.6379],"verlane":[0,8,0.0],"yuvette":[0,54,0.0],"aleisha":[0,2999,0.6954],"anga":[0,15,0.0],"audette":[0,7,0.0],"brandee":[0,5486,0.7479],"darena":[0,18,0.0],"dedrea":[0,53,0.0],"denielle":[0,980,0.5982],"deresa":[0,46,0.0],"doraelia":[0,7,0.0],"feleica":[0,68,0.0],"genece":[0,23,0.0],"hanne":[0,177,0.4496],"heike":[0,133,0.4248],"jillann":[0,126,0.4201],"jolin":[47,425,0.4815],"kammi":[0,631,0.56],"kelda":[0,210,0.4644],"kirsty":[0,945,0.5951],"korrina":[0,392,0.5187],"kymberley":[0,106,0.4051],"kymberli":[0,582,0.553],"lashun":[326,677,0.4052],"leashia":[0,30,0.0],"lezette":[0,56,0.0],"lorrianne":[0,32,0.0],"michille":[0,132,0.4241],"ralynn":[0,272,0.4869],"rynda":[0,18,0.0],"sandrah":[0,12,0.0],"saskia":[0,1197,0.6156],"tannia":[0,392,0.5187],"tinalouise":[0,12,0.0],"tonimarie":[0,303,0.4963],"valicia":[0,251,0.4799],"wendey":[0,7,0.0],"wina":[0,13,0.0],"wynna":[0,7,0.0],"adeena":[0,468,0.534],"aissa":[0,665,0.5646],"aleah":[0,16320,0.8425],"andrella":[0,35,0.0],"anndrea":[0,629,0.5597],"annettia":[0,6,0.0],"annika":[0,19337,0.8573],"arlesia":[0,86,0.0],"batina":[0,139,0.4286],"carsandra":[0,17,0.0],"cecelie":[0,31,0.0],"chauntay":[0,61,0.0],"cherell":[0,394,0.5191],"chiffon":[0,470,0.5344],"chistine":[0,68,0.0],"chrysanthia":[0,6,0.0],"danyelle":[37,5763,0.7479],"dawnene":[0,6,0.0],"devanie":[0,397,0.5198],"donnitta":[0,6,0.0],"eleisa":[0,6,0.0],"elizabe":[0,25,0.0],"febra":[0,6,0.0],"felisia":[0,258,0.4823],"fiesta":[0,6,0.0],"gerrilynn":[0,11,0.0],"gwendalina":[0,6,0.0],"jacgueline":[0,6,0.0],"jacqeline":[0,99,0.0],"jaque":[135,23,0.3757],"jennise":[0,158,0.4397],"joelynn":[0,253,0.4806],"judette":[0,6,0.0],"judilyn":[0,6,0.0],"kahla":[0,679,0.5664],"karisa":[0,2773,0.6886],"kaylon":[1325,674,0.4376],"keisha":[44,22227,0.8678],"kellianne":[0,723,0.5718],"kera":[0,3449,0.7075],"kerrye":[0,6,0.0],"keyla":[0,9547,0.796],"kristye":[0,43,0.0],"lauire":[0,6,0.0],"lavett":[0,22,0.0],"leea":[0,678,0.5662],"leigha":[0,6556,0.7633],"letita":[0,96,0.0],"maryesther":[0,16,0.0],"matrice":[0,87,0.0],"medea":[0,202,0.4611],"monisha":[0,1254,0.6197],"nancyjean":[0,6,0.0],"nika":[5,2444,0.6764],"patrizia":[0,417,0.524],"ranea":[0,59,0.0],"robinann":[0,17,0.0],"rosilind":[0,11,0.0],"saberina":[0,11,0.0],"salwa":[0,855,0.5864],"santha":[0,6,0.0],"secelia":[0,6,0.0],"selisa":[0,83,0.0],"shalon":[130,1181,0.5617],"shannen":[150,1921,0.6152],"sharise":[0,645,0.5619],"shawney":[0,35,0.0],"shelbi":[0,5483,0.7478],"shenell":[0,624,0.559],"tanoa":[0,11,0.0],"taya":[0,6501,0.7626],"tenya":[0,82,0.0],"tonilynn":[0,71,0.0],"trea":[385,112,0.4177],"tynetta":[0,307,0.4974],"vanise":[0,6,0.0],"wyndi":[0,173,0.4476],"yelena":[0,1514,0.636],"alaida":[0,24,0.0],"alea":[0,4029,0.721],"alfreada":[0,5,0.0],"altina":[0,56,0.0],"amara":[287,26328,0.8755],"amarilis":[0,739,0.5737],"amita":[0,468,0.534],"andrenette":[0,10,0.0],"angala":[0,213,0.4657],"anginette":[0,83,0.0],"anika":[0,16529,0.8436],"atonya":[0,83,0.0],"bellina":[0,108,0.4067],"bente":[0,10,0.0],"bobbijo":[0,1242,0.6188],"capucine":[0,107,0.4059],"carolita":[0,5,0.0],"chanita":[0,404,0.5213],"charito":[0,43,0.0],"charlina":[0,156,0.4386],"charylene":[0,5,0.0],"codi":[2009,3533,0.4773],"connstance":[0,5,0.0],"corenna":[0,25,0.0],"crisann":[0,5,0.0],"crissa":[0,420,0.5246],"crystale":[0,203,0.4615],"csilla":[0,5,0.0],"daffie":[0,13,0.0],"daffney":[0,202,0.4611],"dalyce":[0,101,0.4009],"danett":[0,143,0.4311],"danille":[0,702,0.5693],"daphanie":[0,466,0.5337],"daralynn":[0,21,0.0],"darchelle":[0,113,0.4106],"darlita":[0,5,0.0],"darya":[0,1317,0.6239],"dauri":[0,5,0.0],"delisha":[0,980,0.5982],"delonia":[0,5,0.0],"deniz":[1162,891,0.375],"dennisse":[0,161,0.4414],"devina":[0,1466,0.6332],"donja":[0,102,0.4017],"donyell":[509,398,0.332],"dorlisa":[0,146,0.4329],"edi":[371,29,0.4827],"eliana":[37,67858,0.9658],"evangelene":[0,196,0.4585],"gabby":[16,1196,0.6086],"gamble":[113,5,0.3968],"gerette":[0,10,0.0],"gerita":[0,5,0.0],"granada":[0,15,0.0],"ilya":[931,230,0.4915],"jakki":[0,140,0.4292],"janah":[0,346,0.5078],"janic":[0,5,0.0],"jeena":[0,446,0.5299],"jelayne":[0,5,0.0],"jeniene":[0,34,0.0],"jevita":[0,5,0.0],"jodyne":[0,5,0.0],"johnnia":[0,5,0.0],"jolanta":[0,58,0.0],"joquetta":[0,10,0.0],"kaethe":[0,20,0.0],"karilee":[0,43,0.0],"karli":[0,10894,0.8074],"kemi":[0,376,0.515],"kendle":[189,339,0.3496],"kenia":[12,10035,0.7995],"kerryn":[0,187,0.4544],"ketta":[0,5,0.0],"kezia":[0,2364,0.6747],"korri":[6,629,0.5553],"kricket":[0,40,0.0],"krislyn":[0,1373,0.6275],"krysta":[0,6568,0.7635],"ladina":[0,184,0.453],"lanel":[5,28,0.0],"laralee":[0,33,0.0],"lasonja":[0,452,0.531],"latrese":[0,810,0.5817],"laur":[0,10,0.0],"lavoria":[0,12,0.0],"leise":[0,10,0.0],"lenea":[0,202,0.4611],"lenya":[0,177,0.4496],"lerita":[0,5,0.0],"lorijo":[0,24,0.0],"ltonya":[0,34,0.0],"lucero":[212,7587,0.7572],"lugina":[0,10,0.0],"lyndra":[0,11,0.0],"lysette":[0,781,0.5785],"macia":[0,15,0.0],"marilisa":[0,50,0.0],"marinette":[0,90,0.0],"marlia":[0,81,0.0],"marycela":[0,5,0.0],"marykathryn":[0,507,0.541],"mavelyn":[0,10,0.0],"meichelle":[0,30,0.0],"michealle":[0,51,0.0],"milisa":[0,312,0.4988],"mitra":[5,582,0.549],"monae":[0,2270,0.6712],"moncia":[0,424,0.5255],"natanya":[0,640,0.5612],"natashia":[0,2631,0.684],"nery":[1538,287,0.5497],"nisha":[0,2979,0.6948],"normalinda":[0,32,0.0],"nory":[0,44,0.0],"ody":[12,5,0.0],"ondine":[0,148,0.4341],"pamara":[0,5,0.0],"pammi":[0,5,0.0],"patriece":[0,85,0.0],"rasha":[37,686,0.5426],"rayshell":[0,193,0.4571],"remelda":[0,5,0.0],"renitha":[0,5,0.0],"romi":[112,1475,0.5949],"rondia":[0,71,0.0],"rosalua":[0,15,0.0],"roshan":[1757,129,0.6103],"rozeta":[0,5,0.0],"rynette":[0,5,0.0],"sabrenia":[0,44,0.0],"saly":[0,30,0.0],"samira":[0,8486,0.7857],"sanja":[0,123,0.418],"saroya":[0,114,0.4114],"saudia":[0,421,0.5249],"sendy":[0,431,0.5269],"shariann":[0,31,0.0],"sharonette":[0,5,0.0],"shaundra":[0,978,0.5981],"shelee":[0,25,0.0],"sherall":[0,5,0.0],"shernita":[0,136,0.4267],"shirlane":[0,5,0.0],"shondra":[0,1228,0.6178],"shuna":[0,108,0.4067],"soo":[18,193,0.4252],"stephonie":[0,155,0.4381],"sylivia":[0,35,0.0],"talara":[0,16,0.0],"talya":[0,2934,0.6935],"tamerah":[0,36,0.0],"tamhra":[0,5,0.0],"tanita":[0,607,0.5566],"taris":[122,41,0.3311],"tarsha":[0,2375,0.6751],"teanna":[0,2365,0.6748],"teenia":[0,5,0.0],"tenesa":[0,46,0.0],"tenise":[0,301,0.4957],"tereas":[0,20,0.0],"ticia":[0,100,0.4],"timolin":[0,35,0.0],"tine":[0,109,0.4075],"tonice":[0,5,0.0],"tonora":[0,11,0.0],"toyna":[0,276,0.4882],"uma":[0,1845,0.6532],"valiere":[0,10,0.0],"valirie":[0,5,0.0],"vanesia":[0,57,0.0],"varinia":[0,18,0.0],"vernesa":[0,10,0.0],"victorene":[0,5,0.0],"yonda":[0,10,0.0],"yvett":[0,333,0.5045],"zoeanne":[0,5,0.0],"jefre":[21,0,0.0],"joselito":[742,0,0.5741],"garin":[1125,0,0.6102],"merv":[20,0,0.0],"jimbo":[23,0,0.0],"darryell":[17,0,0.0],"piero":[795,0,0.5801],"daric":[607,0,0.5566],"darrion":[4377,149,0.7071],"dedric":[1855,20,0.6476],"dermott":[20,0,0.0],"favian":[2820,0,0.69],"geordie":[88,0,0.0],"rafer":[34,0,0.0],"stepfon":[158,0,0.4397],"tzvi":[4015,0,0.7207],"zimbalist":[13,0,0.0],"antoinne":[385,0,0.5171],"conor":[27087,69,0.8845],"darayl":[7,0,0.0],"donte":[15616,137,0.8322],"ervey":[226,0,0.4708],"galo":[368,0,0.5132],"greogory":[79,0,0.0],"jin":[1404,385,0.5105],"nic":[77,0,0.0],"remberto":[79,0,0.0],"staffon":[33,0,0.0],"tedman":[25,0,0.0],"arin":[2173,2573,0.3986],"arye":[422,0,0.5251],"byrant":[198,0,0.4593],"dag":[60,0,0.0],"danieal":[13,29,0.0],"derran":[67,0,0.0],"dewyane":[21,0,0.0],"doneal":[6,0,0.0],"dragan":[275,0,0.4879],"duron":[585,0,0.5534],"erron":[854,15,0.5777],"gig":[17,0,0.0],"kenyatta":[3216,4255,0.4412],"kery":[60,76,0.2385],"lavel":[205,0,0.4624],"ondray":[12,0,0.0],"said":[3058,0,0.6971],"stefen":[878,0,0.5887],"tabor":[721,87,0.5189],"timo":[268,0,0.4856],"williaa":[6,0,0.0],"aj":[2376,43,0.6647],"akiva":[2668,138,0.6557],"alando":[237,0,0.4749],"alexei":[1333,117,0.5813],"anglo":[15,0,0.0],"anival":[283,0,0.4904],"antiono":[339,0,0.506],"antonius":[622,0,0.5588],"aras":[395,0,0.5193],"arick":[942,0,0.5948],"arness":[11,0,0.0],"aundrey":[315,5,0.4932],"barny":[5,0,0.0],"baudilio":[16,0,0.0],"bradely":[60,0,0.0],"branko":[85,0,0.0],"brendt":[207,0,0.4632],"ched":[39,0,0.0],"christoher":[1094,0,0.6078],"christphor":[261,0,0.4833],"daid":[34,0,0.0],"davon":[13318,367,0.8051],"delwayne":[5,0,0.0],"demetruis":[814,5,0.5791],"derrich":[64,0,0.0],"derwyn":[22,0,0.0],"dujuan":[1181,0,0.6144],"dyron":[554,0,0.5487],"edroy":[5,0,0.0],"eirc":[17,0,0.0],"ephrem":[237,0,0.4749],"fabien":[694,0,0.5683],"falcon":[493,23,0.5183],"gibert":[5,0,0.0],"gile":[5,0,0.0],"giorgio":[2103,0,0.6646],"grieg":[5,0,0.0],"jarriet":[5,0,0.0],"kc":[1933,838,0.4803],"keaven":[39,0,0.0],"kiel":[2499,30,0.6725],"kirtis":[122,0,0.4173],"kirtus":[46,0,0.0],"kostas":[365,0,0.5125],"kriston":[540,720,0.3543],"larmar":[41,0,0.0],"lawrenc":[26,0,0.0],"ledel":[5,0,0.0],"leyton":[2487,398,0.5966],"lutz":[5,0,0.0],"macio":[168,0,0.4451],"markk":[5,0,0.0],"marve":[5,0,0.0],"marwan":[1309,0,0.6234],"maurio":[284,0,0.4907],"maurizio":[691,0,0.5679],"michelangelo":[1316,0,0.6239],"noam":[2747,236,0.64],"patick":[47,0,0.0],"quency":[137,0,0.4273],"ravinder":[93,5,0.0],"rayme":[26,67,0.0],"regnold":[5,0,0.0],"robbins":[5,0,0.0],"salamon":[17,0,0.0],"scotte":[22,0,0.0],"shelbert":[5,0,0.0],"syvester":[5,0,0.0],"talvin":[108,0,0.4067],"terone":[40,0,0.0],"tol":[5,0,0.0],"torres":[291,0,0.4928],"tylor":[8055,456,0.7439],"wayd":[10,0,0.0],"yamil":[1501,77,0.6084],"yvan":[493,5,0.534],"lafondra":[0,45,0.0],"chimene":[0,224,0.47],"lyrae":[0,40,0.0],"perette":[0,16,0.0],"shawni":[0,230,0.4723],"chaundra":[0,574,0.5518],"chelli":[0,86,0.0],"tashia":[0,2359,0.6745],"kecia":[0,3148,0.6996],"daphnie":[0,873,0.5882],"lynley":[0,969,0.5973],"nyana":[0,467,0.5339],"errica":[0,368,0.5132],"jacinda":[0,4242,0.7255],"mendi":[0,514,0.5422],"venissa":[0,127,0.4208],"yolandra":[0,128,0.4214],"antigone":[0,388,0.5178],"daffy":[0,8,0.0],"dollicia":[0,24,0.0],"emelinda":[0,38,0.0],"johnene":[0,26,0.0],"kymberlee":[0,875,0.5884],"laranda":[0,284,0.4907],"lynlee":[0,1943,0.6577],"melannie":[0,1727,0.6475],"pataricia":[0,13,0.0],"raychelle":[0,603,0.5561],"shonia":[0,144,0.4317],"shunda":[0,537,0.546],"taunja":[0,90,0.0],"tewanna":[0,55,0.0],"tiffani":[0,14911,0.8347],"waleska":[0,534,0.5455],"alette":[0,114,0.4114],"angeleta":[0,13,0.0],"anja":[0,2761,0.6882],"annazette":[0,20,0.0],"anquinette":[0,165,0.4435],"arielle":[51,30250,0.8948],"dawnya":[0,224,0.47],"deddie":[0,7,0.0],"dedrie":[0,7,0.0],"deseri":[0,92,0.0],"geniene":[0,80,0.0],"jazmin":[227,44022,0.9244],"jodonna":[0,13,0.0],"kedra":[0,548,0.5478],"lania":[0,951,0.5956],"lashanda":[0,4674,0.7339],"latonda":[0,252,0.4803],"lolitha":[0,96,0.0],"luciann":[0,59,0.0],"lynmarie":[0,19,0.0],"marysol":[0,1527,0.6368],"melesia":[0,38,0.0],"melondy":[0,187,0.4544],"meschelle":[0,39,0.0],"novalee":[0,4301,0.7267],"pollyanne":[0,22,0.0],"quanah":[192,40,0.3915],"rainee":[0,679,0.5664],"sheelagh":[0,7,0.0],"songa":[0,55,0.0],"tearsa":[0,204,0.4619],"threase":[0,22,0.0],"tiffney":[0,1138,0.6112],"timmi":[0,124,0.4187],"tryna":[0,57,0.0],"venesta":[0,12,0.0],"vernica":[0,145,0.4323],"aidee":[0,769,0.5772],"amal":[355,3958,0.6671],"andreanna":[0,874,0.5883],"andromeda":[0,1397,0.629],"angelenia":[0,6,0.0],"anneice":[0,6,0.0],"calissa":[0,897,0.5906],"camala":[0,196,0.4585],"celise":[0,196,0.4585],"charleta":[0,30,0.0],"chondra":[0,218,0.4677],"chrie":[0,6,0.0],"clairessa":[0,99,0.0],"clorissa":[0,402,0.5208],"dedi":[0,11,0.0],"delayna":[0,866,0.5875],"dette":[0,36,0.0],"dinetta":[0,34,0.0],"gordean":[0,6,0.0],"halli":[0,1354,0.6263],"jamilyn":[0,661,0.564],"josilyn":[0,1127,0.6104],"joyetta":[0,6,0.0],"july":[265,836,0.4619],"julye":[0,23,0.0],"kalina":[0,4152,0.7237],"kalisa":[0,494,0.5387],"kasi":[53,2280,0.6583],"katreena":[0,289,0.4922],"kerilyn":[0,355,0.51],"khristina":[0,1270,0.6208],"korrin":[0,539,0.5463],"laci":[0,9596,0.7964],"lagail":[0,12,0.0],"lestina":[0,11,0.0],"letonia":[0,86,0.0],"libertad":[0,56,0.0],"lititia":[0,97,0.0],"lizz":[0,6,0.0],"maricruz":[0,2903,0.6926],"marietherese":[0,28,0.0],"meldia":[0,6,0.0],"merissa":[0,3412,0.7066],"monelle":[0,6,0.0],"nichele":[0,667,0.5648],"paricia":[0,18,0.0],"payge":[0,1124,0.6102],"persephone":[0,4583,0.7322],"raechelle":[0,589,0.554],"reynell":[0,6,0.0],"roxsanne":[0,16,0.0],"rusti":[0,350,0.5088],"salvina":[0,6,0.0],"selah":[194,13747,0.8173],"shandy":[115,728,0.5053],"shanel":[0,2515,0.6801],"shani":[17,4518,0.7286],"shewanda":[0,121,0.4166],"shirlann":[0,11,0.0],"shyvonne":[0,53,0.0],"silena":[0,145,0.4323],"tabita":[0,246,0.4782],"taffi":[0,43,0.0],"tammarra":[0,16,0.0],"tarolyn":[0,16,0.0],"tianna":[0,13298,0.8248],"tiffanie":[0,9047,0.7913],"tirza":[0,339,0.506],"toika":[0,12,0.0],"tondi":[0,6,0.0],"trenise":[0,475,0.5353],"warrenetta":[0,6,0.0],"weena":[0,26,0.0],"windi":[0,458,0.5322],"alfanette":[0,5,0.0],"ame":[6,373,0.5076],"angelete":[0,22,0.0],"angenita":[0,10,0.0],"anntonette":[0,92,0.0],"antionett":[0,16,0.0],"antoninette":[0,60,0.0],"arelis":[0,1003,0.6003],"arhonda":[0,28,0.0],"artra":[0,5,0.0],"atina":[0,236,0.4746],"avella":[0,105,0.4042],"basya":[0,1008,0.6007],"billiejean":[0,196,0.4585],"brette":[11,595,0.5464],"brinder":[0,5,0.0],"calandra":[0,1747,0.6485],"camey":[0,172,0.4471],"casi":[0,1080,0.6067],"casie":[18,4794,0.7337],"cassundra":[0,98,0.0],"catrena":[0,365,0.5125],"cesilia":[0,778,0.5782],"charrisse":[0,79,0.0],"cherlene":[0,50,0.0],"chrissandra":[0,52,0.0],"chyrisse":[0,15,0.0],"colleena":[0,62,0.0],"content":[0,5,0.0],"cristiana":[0,917,0.5925],"cristle":[0,59,0.0],"damara":[0,1020,0.6017],"daronda":[0,39,0.0],"dawanda":[0,249,0.4792],"dawni":[0,21,0.0],"deani":[0,47,0.0],"debraoh":[0,5,0.0],"debroa":[0,5,0.0],"deeda":[0,5,0.0],"deenna":[0,45,0.0],"deitre":[0,15,0.0],"deja":[86,16215,0.838],"deldra":[0,16,0.0],"deneil":[0,15,0.0],"denina":[0,116,0.4129],"deora":[0,10,0.0],"deralyn":[0,5,0.0],"deshawn":[15970,1183,0.7885],"deyanira":[0,1950,0.658],"dianette":[0,33,0.0],"didra":[0,5,0.0],"dorren":[5,10,0.0],"dwyn":[0,5,0.0],"elander":[0,5,0.0],"ginell":[0,16,0.0],"gwennetta":[0,5,0.0],"jacueline":[0,27,0.0],"jahna":[0,446,0.5299],"jamila":[0,8198,0.7827],"janalynn":[0,58,0.0],"jeanina":[0,51,0.0],"jodianne":[0,20,0.0],"jolea":[0,196,0.4585],"ka":[136,781,0.5046],"kaaron":[0,5,0.0],"kalee":[74,3875,0.7058],"kalena":[0,2656,0.6848],"karetha":[0,11,0.0],"karryn":[0,40,0.0],"katrice":[0,2198,0.6684],"katya":[0,3130,0.6991],"kayetta":[0,5,0.0],"keelie":[0,1504,0.6354],"keira":[7,33362,0.9045],"kellyjo":[0,196,0.4585],"kendi":[24,634,0.5431],"kerrilyn":[0,107,0.4059],"keryn":[0,320,0.501],"khadijah":[7,7443,0.7737],"kiana":[19,26326,0.8835],"kimberlyann":[0,393,0.5189],"kimmey":[0,23,0.0],"kindy":[0,31,0.0],"kini":[0,5,0.0],"kippi":[0,52,0.0],"konya":[6,62,0.0],"krissa":[0,907,0.5915],"ladeanna":[0,15,0.0],"lametria":[0,96,0.0],"laronna":[0,23,0.0],"lasaundra":[0,300,0.4954],"lashone":[56,396,0.4652],"lasonia":[0,450,0.5306],"latonna":[0,44,0.0],"latosha":[0,6442,0.7618],"latrece":[0,690,0.5678],"latrica":[0,503,0.5403],"lauralynn":[0,150,0.4352],"laurissa":[0,744,0.5743],"lavender":[0,2098,0.6644],"lawonna":[0,22,0.0],"lelana":[0,15,0.0],"lenka":[0,82,0.0],"leslieann":[0,472,0.5348],"letica":[0,193,0.4571],"lindella":[0,5,0.0],"lisajo":[0,10,0.0],"lorria":[0,16,0.0],"lujuan":[0,5,0.0],"lynneann":[0,5,0.0],"makeba":[0,702,0.5693],"marija":[0,519,0.543],"marleena":[0,181,0.4515],"marysia":[0,30,0.0],"maryvel":[0,5,0.0],"melodey":[0,50,0.0],"melvonia":[0,5,0.0],"merrilu":[0,5,0.0],"miri":[0,824,0.5832],"mollee":[0,765,0.5767],"montoya":[119,520,0.4566],"morgana":[0,693,0.5681],"nancianne":[0,5,0.0],"natosha":[0,3105,0.6984],"necole":[0,1346,0.6258],"neina":[0,17,0.0],"nicolee":[0,22,0.0],"nikole":[0,6964,0.7686],"pameal":[0,5,0.0],"parri":[0,5,0.0],"patrichia":[0,5,0.0],"patrise":[0,28,0.0],"pennyann":[0,5,0.0],"quana":[0,260,0.483],"raisa":[0,1291,0.6222],"rean":[0,5,0.0],"relonda":[0,11,0.0],"schelle":[0,10,0.0],"sha":[127,639,0.4812],"shalia":[0,557,0.5492],"shamra":[0,202,0.4611],"shanette":[0,826,0.5834],"sharae":[0,1289,0.6221],"shauneen":[0,15,0.0],"shawndra":[0,677,0.5661],"sherr":[0,5,0.0],"shuron":[47,40,0.0],"shyra":[0,857,0.5866],"sian":[146,853,0.5122],"simi":[6,507,0.5357],"sone":[0,5,0.0],"soula":[0,5,0.0],"stephaie":[0,136,0.4267],"sylena":[0,340,0.5063],"tamasine":[0,5,0.0],"tammeria":[0,10,0.0],"tawyna":[0,100,0.4],"teesa":[0,11,0.0],"terenia":[0,15,0.0],"thania":[0,1421,0.6305],"thia":[0,331,0.504],"tone":[45,54,0.0],"tonua":[0,10,0.0],"treana":[0,312,0.4988],"tuana":[0,84,0.0],"tundra":[0,36,0.0],"tyronda":[0,540,0.5465],"vindetta":[0,5,0.0],"vivianna":[0,4590,0.7324],"wynter":[230,10048,0.7844],"thadd":[145,0,0.4323],"chubby":[14,0,0.0],"hakim":[2315,0,0.6729],"stephfon":[66,0,0.0],"sunil":[989,0,0.599],"yusef":[3032,0,0.6963],"anthoy":[31,0,0.0],"dalan":[570,0,0.5512],"konstantinos":[2093,0,0.6642],"markell":[4676,219,0.7049],"sanjay":[2586,0,0.6825],"chadley":[412,0,0.523],"christhopher":[41,0,0.0],"damond":[2137,5,0.6646],"deryck":[561,0,0.5498],"eliu":[527,0,0.5444],"farid":[1074,0,0.6062],"gianni":[14910,3264,0.6989],"greogry":[111,0,0.4091],"nikolaos":[2020,0,0.6611],"raymont":[301,0,0.4957],"schell":[7,5,0.0],"tiger":[1217,62,0.5913],"antron":[1259,0,0.62],"barrette":[6,0,0.0],"brennen":[9018,178,0.7774],"bryian":[33,0,0.0],"cid":[206,0,0.4628],"cray":[111,0,0.4091],"dabid":[113,0,0.4106],"darrlyn":[22,0,0.0],"demetrus":[639,22,0.5453],"demitrius":[1958,11,0.6552],"jefery":[52,0,0.0],"khalid":[7946,0,0.78],"maarten":[29,0,0.0],"nathniel":[11,0,0.0],"nicolai":[1813,0,0.6517],"orlandus":[116,0,0.4129],"pablito":[31,0,0.0],"raffi":[823,0,0.5831],"raylon":[1247,17,0.612],"ryon":[2009,17,0.6558],"sherwyn":[6,0,0.0],"tarek":[2256,0,0.6707],"timthoy":[18,0,0.0],"tmothy":[25,0,0.0],"torsten":[691,0,0.5679],"yarnell":[64,88,0.2526],"andrian":[599,96,0.4899],"antoin":[532,0,0.5452],"antonyo":[684,0,0.567],"aracelio":[5,0,0.0],"aristedes":[5,0,0.0],"barrion":[5,0,0.0],"biran":[164,0,0.443],"bismark":[45,0,0.0],"brig":[72,0,0.0],"carlston":[5,0,0.0],"carolus":[10,0,0.0],"cederick":[303,0,0.4963],"christerpher":[276,0,0.4882],"christorpher":[176,0,0.4491],"chubbie":[5,0,0.0],"clu":[5,0,0.0],"colm":[650,0,0.5626],"correy":[1099,46,0.5872],"crane":[5,0,0.0],"darrius":[7661,0,0.7769],"darro":[5,0,0.0],"dewan":[653,16,0.5516],"dominie":[137,6,0.413],"donahue":[59,0,0.0],"douglus":[5,0,0.0],"elcid":[5,0,0.0],"fabrizio":[1346,0,0.6258],"ferenc":[37,0,0.0],"ismail":[3818,0,0.7164],"istvan":[81,0,0.0],"janathan":[380,0,0.516],"jeffary":[35,0,0.0],"jeremaih":[433,0,0.5273],"jony":[268,0,0.4856],"kail":[606,36,0.53],"kelson":[1375,0,0.6277],"krzysztof":[468,0,0.534],"lanorris":[146,0,0.4329],"lebarron":[29,0,0.0],"lenley":[5,25,0.0],"margaro":[5,0,0.0],"markian":[77,0,0.0],"michaelangelo":[1398,0,0.6291],"mihael":[22,0,0.0],"natanael":[2393,0,0.6758],"nicholai":[1011,0,0.601],"niko":[13576,487,0.8009],"nikos":[869,0,0.5878],"orlondo":[76,0,0.0],"previn":[68,0,0.0],"rajiv":[820,0,0.5828],"raylen":[1514,766,0.446],"rege":[5,0,0.0],"regi":[16,0,0.0],"tag":[170,0,0.4461],"tarence":[537,0,0.546],"tarrell":[788,11,0.5725],"tarrence":[793,0,0.5799],"thaddeous":[45,0,0.0],"therin":[95,0,0.0],"therone":[5,0,0.0],"timohty":[272,0,0.4869],"toddy":[70,0,0.0],"tomislav":[197,0,0.4589],"trever":[6298,0,0.7598],"tylan":[3717,180,0.685],"uwe":[30,0,0.0],"phaedra":[0,1885,0.6551],"chevelle":[258,3685,0.6721],"chantelle":[8,6667,0.764],"pebbles":[0,877,0.5886],"tonjua":[0,114,0.4114],"grindl":[0,41,0.0],"kiersten":[5,14779,0.8337],"cybele":[0,156,0.4386],"michaelanne":[0,59,0.0],"annmargaret":[0,189,0.4553],"mariselda":[0,65,0.0],"chrysanne":[0,12,0.0],"tinita":[0,99,0.0],"shantel":[59,10252,0.7981],"latrisha":[0,1804,0.6512],"tynnetta":[0,43,0.0],"chantele":[0,419,0.5244],"khristi":[0,146,0.4329],"lolitta":[0,35,0.0],"morag":[0,15,0.0],"pattyann":[0,22,0.0],"brianna":[438,263402,0.9983],"carlet":[0,8,0.0],"cosandra":[0,135,0.4261],"cynthis":[0,60,0.0],"dedera":[0,8,0.0],"dusti":[9,1806,0.6485],"grizel":[0,52,0.0],"kayanne":[0,23,0.0],"kellyjean":[0,13,0.0],"kiera":[19,21630,0.8663],"lashan":[87,512,0.4748],"lety":[0,94,0.0],"mesha":[0,1187,0.6149],"michelann":[0,8,0.0],"shalene":[0,850,0.5859],"treasea":[0,29,0.0],"tressy":[0,171,0.4466],"trishia":[0,701,0.5691],"wondra":[0,33,0.0],"aleasha":[0,968,0.5972],"annmary":[0,12,0.0],"anntionette":[0,93,0.0],"arianna":[73,102811,0.9993],"ashlyn":[54,47768,0.9349],"brittany":[1078,360387,0.997],"chevella":[0,67,0.0],"consandra":[0,97,0.0],"damarys":[0,537,0.546],"domonique":[1881,5172,0.5644],"dynetta":[0,22,0.0],"giana":[0,10142,0.8012],"ginelle":[0,506,0.5408],"grindle":[0,21,0.0],"jannel":[0,505,0.5407],"ketra":[0,255,0.4813],"kisha":[12,6652,0.7634],"latashia":[0,1798,0.651],"merci":[53,947,0.5682],"milynda":[0,7,0.0],"redena":[0,23,0.0],"schelley":[0,15,0.0],"shawanna":[0,1404,0.6295],"shawntel":[17,1135,0.6033],"sheletha":[0,128,0.4214],"shelisa":[0,391,0.5184],"sherina":[0,797,0.5803],"shronda":[0,497,0.5393],"tomeka":[6,3628,0.7109],"toshia":[0,1154,0.6124],"twania":[0,63,0.0],"verlisa":[0,62,0.0],"yamile":[0,1323,0.6243],"adona":[0,57,0.0],"aishah":[0,1264,0.6203],"alesandra":[0,887,0.5896],"angeliki":[0,335,0.505],"anjanette":[0,2563,0.6817],"ayla":[0,34866,0.9085],"benee":[0,6,0.0],"berri":[0,6,0.0],"brycie":[0,6,0.0],"cambria":[0,6110,0.7572],"cassanda":[0,55,0.0],"charvette":[0,24,0.0],"chrysti":[0,50,0.0],"conya":[0,65,0.0],"dalina":[0,480,0.5362],"danalynn":[0,33,0.0],"dawnda":[0,6,0.0],"deirde":[0,6,0.0],"denitra":[0,476,0.5355],"desarie":[0,138,0.428],"doborah":[0,6,0.0],"franziska":[0,200,0.4602],"glorida":[0,6,0.0],"glyniss":[0,6,0.0],"heavenly":[0,5281,0.7445],"jayda":[24,21074,0.8639],"jayneen":[0,6,0.0],"karilynn":[0,112,0.4098],"karinda":[0,92,0.0],"katja":[0,944,0.595],"kendyl":[139,5064,0.7234],"kenyetta":[128,2735,0.6605],"kersten":[0,918,0.5926],"kona":[423,236,0.3619],"krin":[0,11,0.0],"lakita":[0,1627,0.6423],"latifa":[0,817,0.5824],"latonga":[0,128,0.4214],"laurisa":[0,310,0.4983],"lolisa":[0,25,0.0],"lorrieann":[0,27,0.0],"majella":[0,6,0.0],"marrisa":[0,1060,0.6051],"maurisa":[0,292,0.4931],"michalann":[0,6,0.0],"mikelann":[0,6,0.0],"miko":[931,590,0.3896],"monja":[0,6,0.0],"monnette":[0,22,0.0],"moraima":[0,287,0.4916],"neeve":[0,39,0.0],"nica":[0,225,0.4704],"nury":[0,115,0.4121],"odalis":[51,2633,0.6727],"pattina":[0,6,0.0],"regeina":[0,22,0.0],"rejena":[0,6,0.0],"remonda":[0,16,0.0],"renessa":[0,194,0.4576],"renise":[0,128,0.4214],"rosio":[19,2474,0.6742],"seanne":[0,61,0.0],"shalonda":[0,4632,0.7332],"shantell":[26,5080,0.7378],"sook":[0,6,0.0],"stanja":[0,6,0.0],"suanna":[0,22,0.0],"subrenia":[0,18,0.0],"symone":[0,4340,0.7275],"tammany":[0,6,0.0],"tange":[0,59,0.0],"tiann":[0,67,0.0],"tippi":[0,100,0.4],"toyka":[0,11,0.0],"treina":[0,77,0.0],"troyanne":[0,6,0.0],"vesna":[0,248,0.4789],"yanina":[0,379,0.5157],"ylanda":[0,20,0.0],"yulinda":[0,28,0.0],"aldrina":[0,5,0.0],"allecia":[0,175,0.4486],"amira":[5,23429,0.8738],"angelar":[0,10,0.0],"angenetta":[0,34,0.0],"any":[0,658,0.5636],"asha":[58,8904,0.7854],"ashlie":[5,10063,0.8002],"balynda":[0,5,0.0],"bernda":[0,5,0.0],"berrie":[0,5,0.0],"camalla":[0,12,0.0],"camilia":[0,664,0.5644],"candria":[0,15,0.0],"caralynn":[0,326,0.5026],"chanelle":[0,5202,0.7432],"charetta":[0,5,0.0],"charnette":[0,192,0.4567],"charotte":[0,5,0.0],"cheli":[0,10,0.0],"chelley":[0,18,0.0],"cherelle":[0,1674,0.6448],"cheria":[0,199,0.4598],"chistina":[0,282,0.49],"chonna":[0,10,0.0],"chrystina":[0,595,0.5549],"culleen":[0,5,0.0],"cybelle":[0,26,0.0],"daiquiri":[0,42,0.0],"danea":[0,502,0.5401],"dedrah":[0,5,0.0],"deedre":[0,39,0.0],"deidri":[0,5,0.0],"denay":[0,510,0.5415],"denetrice":[0,22,0.0],"desha":[5,813,0.579],"dessiree":[0,137,0.4273],"devette":[0,55,0.0],"diena":[0,10,0.0],"doranda":[0,5,0.0],"dorcia":[0,23,0.0],"down":[0,17,0.0],"ellette":[0,5,0.0],"ennette":[0,5,0.0],"erinn":[143,3418,0.6818],"evelinda":[0,15,0.0],"ewa":[0,296,0.4943],"ewanda":[0,5,0.0],"falecia":[0,218,0.4677],"felesha":[0,177,0.4496],"flechia":[0,5,0.0],"francel":[0,5,0.0],"gaileen":[0,5,0.0],"geannine":[0,21,0.0],"gitta":[0,10,0.0],"gittel":[0,1433,0.6312],"grinda":[0,5,0.0],"heller":[0,5,0.0],"ibet":[0,32,0.0],"jaculine":[0,5,0.0],"jaelyn":[1381,14101,0.7632],"jaimy":[29,381,0.4856],"jaina":[0,2206,0.6687],"jalana":[0,339,0.506],"jamella":[0,463,0.5331],"jamette":[0,30,0.0],"jamille":[260,456,0.3636],"jawanna":[0,306,0.4971],"jaylynn":[578,9248,0.7515],"jaynette":[0,17,0.0],"joelaine":[0,5,0.0],"juella":[0,5,0.0],"kaari":[0,282,0.49],"kadra":[0,82,0.0],"kalia":[0,5640,0.7503],"kamila":[0,19240,0.8568],"karalynn":[0,758,0.5759],"kasie":[21,4193,0.7213],"kaui":[0,16,0.0],"kelleigh":[0,444,0.5295],"kemberley":[0,39,0.0],"kerren":[0,15,0.0],"kerrianne":[0,518,0.5429],"ketrina":[0,105,0.4042],"kimbrely":[0,78,0.0],"kiri":[5,969,0.5946],"krissie":[0,422,0.5251],"kristiana":[0,2785,0.689],"kristiann":[0,206,0.4628],"krystie":[0,521,0.5434],"lachonne":[0,5,0.0],"lacynthia":[0,10,0.0],"lalisa":[0,106,0.4051],"laraye":[0,5,0.0],"latise":[0,78,0.0],"lawenda":[0,5,0.0],"lawona":[0,29,0.0],"leena":[0,5573,0.7492],"leiah":[0,1404,0.6295],"leicha":[0,10,0.0],"lekita":[0,134,0.4254],"leshea":[0,108,0.4067],"likita":[0,32,0.0],"lisajean":[0,5,0.0],"loir":[0,10,0.0],"lolethia":[0,5,0.0],"loressa":[0,18,0.0],"lorrian":[0,5,0.0],"lurinda":[0,15,0.0],"lynese":[0,46,0.0],"maggy":[0,512,0.5419],"malesa":[0,32,0.0],"marceia":[0,16,0.0],"marijke":[0,112,0.4098],"marra":[0,338,0.5058],"marria":[0,81,0.0],"marsue":[0,5,0.0],"martiza":[0,293,0.4934],"maryellyn":[0,5,0.0],"maylyn":[0,355,0.51],"mayte":[0,3439,0.7073],"mayumi":[0,655,0.5632],"michone":[0,10,0.0],"mlisa":[0,10,0.0],"montserrat":[0,5508,0.7482],"mysti":[0,706,0.5698],"nannett":[0,5,0.0],"nesa":[0,101,0.4009],"niomi":[0,1224,0.6176],"ourania":[0,112,0.4098],"panela":[0,5,0.0],"patarica":[0,16,0.0],"personna":[0,5,0.0],"porsha":[6,4026,0.72],"prisilla":[0,640,0.5612],"rainy":[0,1015,0.6013],"rami":[3690,236,0.6756],"rania":[0,3068,0.6974],"raunda":[0,5,0.0],"raychel":[0,1520,0.6364],"raylyn":[84,1093,0.5703],"regla":[0,66,0.0],"resia":[0,5,0.0],"reveca":[0,102,0.4017],"rhnea":[0,5,0.0],"serah":[0,798,0.5804],"shalane":[0,441,0.5289],"sharanda":[0,431,0.5269],"sheleen":[0,78,0.0],"shenda":[0,10,0.0],"shenise":[0,467,0.5339],"sheraldine":[0,5,0.0],"shereese":[0,238,0.4753],"sherile":[0,5,0.0],"sherone":[10,40,0.0],"sherrina":[0,63,0.0],"sherritta":[0,18,0.0],"sioban":[0,36,0.0],"stephanne":[0,92,0.0],"sunita":[0,609,0.5569],"talona":[0,25,0.0],"tamarya":[0,11,0.0],"tammyjo":[0,38,0.0],"tangerine":[0,39,0.0],"tangla":[0,36,0.0],"tarah":[0,4731,0.735],"tarie":[0,20,0.0],"tarisa":[0,90,0.0],"tatjana":[0,424,0.5255],"tawnja":[0,10,0.0],"telecia":[0,200,0.4602],"temi":[0,51,0.0],"tesha":[0,1804,0.6512],"therse":[0,5,0.0],"thomasin":[0,60,0.0],"tianne":[0,190,0.4558],"tiawana":[0,135,0.4261],"titania":[0,538,0.5462],"tiwanda":[0,177,0.4496],"tomara":[0,400,0.5204],"trica":[0,200,0.4602],"trona":[0,18,0.0],"tyana":[0,2741,0.6876],"velvetta":[0,10,0.0],"virgini":[0,5,0.0],"vonnita":[0,5,0.0],"wyndie":[0,5,0.0],"xochilt":[0,1450,0.6323],"zoya":[0,4633,0.7332],"medgar":[46,0,0.0],"keir":[1046,64,0.5739],"dangelo":[9222,0,0.793],"beto":[89,0,0.0],"darrayl":[8,0,0.0],"daryell":[8,0,0.0],"mustafa":[7031,0,0.7694],"stevey":[23,135,0.3757],"tavis":[2201,6,0.6669],"briton":[544,5,0.5429],"cepeda":[24,0,0.0],"derone":[56,0,0.0],"jaydee":[543,596,0.3199],"juancarlos":[4006,0,0.7205],"lukas":[42878,19,0.9261],"massimo":[3775,0,0.7154],"panagiotis":[1297,0,0.6226],"ravi":[3444,5,0.7065],"shain":[1209,26,0.6053],"shedric":[78,0,0.0],"voltaire":[51,0,0.0],"andras":[207,0,0.4632],"brockton":[774,0,0.5777],"chanse":[1155,16,0.6053],"damen":[2444,0,0.6776],"deanglo":[168,0,0.4451],"drexal":[6,0,0.0],"earon":[163,5,0.4318],"eirik":[353,0,0.5096],"isabelo":[16,0,0.0],"jevon":[4949,91,0.7271],"jozsef":[141,0,0.4298],"kallen":[2593,352,0.6109],"lakeith":[662,0,0.5642],"mikhael":[1115,8,0.6057],"nicholus":[755,0,0.5756],"obdulio":[68,0,0.0],"petar":[627,0,0.5595],"quent":[46,0,0.0],"ral":[6,0,0.0],"tyris":[654,0,0.5631],"varick":[257,0,0.482],"billison":[5,0,0.0],"billyjoe":[398,0,0.52],"blakley":[49,706,0.5382],"bouvier":[5,0,0.0],"carland":[10,0,0.0],"chino":[112,0,0.4098],"clarenc":[15,0,0.0],"conal":[126,0,0.4201],"darivs":[67,0,0.0],"demetre":[674,12,0.5573],"demond":[5833,25,0.7503],"derryck":[219,0,0.4681],"detrick":[1509,25,0.6268],"dyrell":[171,0,0.4466],"elan":[3478,793,0.5913],"emmanual":[478,0,0.5359],"ensign":[5,0,0.0],"erenst":[5,0,0.0],"eri":[385,477,0.3249],"farin":[17,97,0.35],"gregson":[10,0,0.0],"jem":[64,102,0.2728],"jermone":[248,0,0.4789],"jerom":[11,0,0.0],"jj":[728,0,0.5724],"kahn":[41,0,0.0],"kendale":[973,55,0.5702],"kenin":[16,0,0.0],"kier":[484,11,0.5269],"kinnard":[5,0,0.0],"maher":[1109,0,0.609],"male":[1530,0,0.6369],"marky":[84,0,0.0],"medger":[11,0,0.0],"nader":[1542,0,0.6376],"oziel":[2488,0,0.6792],"panos":[27,0,0.0],"ramin":[668,0,0.565],"ramont":[57,0,0.0],"robney":[5,0,0.0],"robret":[10,0,0.0],"selvyn":[10,0,0.0],"sharif":[2678,5,0.6844],"sherod":[573,0,0.5516],"shervin":[228,0,0.4716],"slayton":[448,0,0.5303],"speros":[11,0,0.0],"tariq":[6771,7,0.7654],"taron":[2699,90,0.6669],"toris":[120,0,0.4158],"tron":[541,7,0.5408],"vience":[5,0,0.0],"vijay":[1490,0,0.6346],"vivek":[1771,0,0.6496],"djuna":[0,375,0.5148],"deneane":[0,104,0.4034],"deneene":[0,74,0.0],"diahn":[0,65,0.0],"dhana":[0,115,0.4121],"rotunda":[0,104,0.4034],"anjeanette":[0,389,0.518],"kesia":[0,686,0.5673],"danean":[0,127,0.4208],"kesha":[5,5241,0.7433],"keshia":[6,5380,0.7454],"shanell":[12,4702,0.7328],"shevelle":[0,159,0.4403],"annjanette":[0,148,0.4341],"deeneen":[0,12,0.0],"deidree":[0,23,0.0],"kaila":[0,14467,0.8321],"kechia":[0,154,0.4375],"ronit":[554,341,0.3654],"senta":[0,315,0.4997],"cenith":[0,10,0.0],"dennine":[0,50,0.0],"dujuana":[0,25,0.0],"thedy":[0,10,0.0],"tiffiny":[0,2388,0.6756],"tunja":[0,22,0.0],"deina":[0,101,0.4009],"djana":[0,9,0.0],"duuna":[0,9,0.0],"duwana":[0,15,0.0],"kea":[0,653,0.563],"kellyn":[220,1976,0.6014],"pheadra":[0,17,0.0],"samatha":[0,4202,0.7247],"shantelle":[0,2680,0.6856],"alandra":[0,946,0.5952],"ashlynn":[12,25567,0.8812],"dalisa":[0,335,0.505],"deadria":[0,26,0.0],"errin":[271,848,0.4621],"julyn":[0,8,0.0],"keesha":[0,2708,0.6865],"krisha":[0,2439,0.6774],"latisa":[0,535,0.5457],"malky":[0,2545,0.6811],"noele":[0,135,0.4261],"shalanda":[0,1744,0.6483],"shanee":[0,1504,0.6354],"shaney":[0,415,0.5236],"suprena":[0,114,0.4114],"tangala":[0,97,0.0],"zinia":[0,66,0.0],"belina":[0,124,0.4187],"bobbiejo":[0,1009,0.6008],"celynn":[0,7,0.0],"channon":[412,729,0.3907],"chenelle":[0,804,0.5811],"chevon":[63,555,0.5013],"deatria":[0,14,0.0],"deneena":[0,7,0.0],"deniene":[0,12,0.0],"dennen":[0,7,0.0],"dorain":[40,7,0.0],"duchess":[0,210,0.4644],"ernetta":[0,7,0.0],"eulonda":[0,78,0.0],"faithann":[0,270,0.4863],"glynne":[0,7,0.0],"gwendoyln":[0,7,0.0],"ibis":[12,57,0.0],"ingar":[0,7,0.0],"jaton":[55,62,0.2192],"jenia":[0,400,0.5204],"jolonda":[0,81,0.0],"kaarin":[0,89,0.0],"katinka":[0,17,0.0],"kisa":[0,628,0.5596],"kristia":[0,417,0.524],"kristl":[0,95,0.0],"kristle":[0,892,0.5901],"laniece":[0,539,0.5463],"lashonda":[0,9235,0.7931],"latayna":[0,183,0.4525],"latecia":[0,505,0.5407],"lyvette":[0,7,0.0],"marialaina":[0,7,0.0],"marschell":[0,7,0.0],"pleshette":[0,210,0.4644],"revina":[0,13,0.0],"robann":[0,7,0.0],"ronnita":[0,103,0.4026],"roshanda":[0,1163,0.6131],"rotonda":[0,48,0.0],"solita":[0,112,0.4098],"sundi":[0,182,0.452],"tammylynn":[0,29,0.0],"tatyana":[0,10286,0.8024],"teisha":[0,1240,0.6187],"tiffini":[0,1290,0.6221],"triva":[0,97,0.0],"yasemin":[0,447,0.5301],"zinna":[0,22,0.0],"angula":[0,53,0.0],"anjali":[0,5756,0.752],"anjanetta":[0,36,0.0],"anjela":[0,582,0.553],"anjie":[0,36,0.0],"annjeanette":[0,91,0.0],"anuradha":[0,127,0.4208],"barbarette":[0,6,0.0],"bethlyn":[0,6,0.0],"charade":[0,11,0.0],"chaun":[435,11,0.5168],"cheray":[0,128,0.4214],"chorlette":[0,6,0.0],"chrystyna":[0,25,0.0],"cinzia":[0,79,0.0],"corissa":[0,2047,0.6622],"dagne":[0,12,0.0],"darlana":[0,6,0.0],"deene":[0,6,0.0],"dejuna":[0,6,0.0],"desirie":[0,133,0.4248],"dienna":[0,16,0.0],"dreema":[0,6,0.0],"duuana":[0,6,0.0],"duwanna":[0,11,0.0],"dynell":[58,6,0.0],"dynette":[0,40,0.0],"dywana":[0,12,0.0],"echelle":[0,20,0.0],"enger":[0,6,0.0],"feleshia":[0,128,0.4214],"gennia":[0,6,0.0],"herlane":[0,6,0.0],"hether":[0,364,0.5122],"ingred":[0,18,0.0],"jacqulina":[0,6,0.0],"janon":[0,40,0.0],"kandas":[0,77,0.0],"kasha":[0,1518,0.6363],"kerina":[0,219,0.4681],"kimberland":[0,6,0.0],"korinna":[0,441,0.5289],"krissi":[0,346,0.5078],"latana":[0,79,0.0],"latesia":[0,172,0.4471],"latishia":[0,645,0.5619],"lawna":[0,16,0.0],"laya":[0,1963,0.6586],"lorrina":[0,55,0.0],"marguetta":[0,86,0.0],"marnae":[0,159,0.4403],"melecia":[0,40,0.0],"michellene":[0,17,0.0],"monic":[0,509,0.5413],"narissa":[0,784,0.5789],"noeme":[0,6,0.0],"priscila":[0,4811,0.7364],"ralonda":[0,145,0.4323],"raynita":[0,24,0.0],"rechell":[0,43,0.0],"renu":[0,72,0.0],"shanyn":[0,262,0.4837],"shareese":[0,507,0.541],"shawnn":[107,44,0.3088],"shevell":[0,6,0.0],"shirene":[0,36,0.0],"stacci":[0,6,0.0],"stephne":[0,11,0.0],"taralyn":[0,686,0.5673],"tausha":[0,1369,0.6273],"tennia":[0,36,0.0],"teshia":[0,452,0.531],"tessia":[0,371,0.5139],"tomika":[5,2781,0.6878],"tonyua":[0,6,0.0],"torsha":[0,134,0.4254],"trasi":[0,6,0.0],"treasia":[0,6,0.0],"tronda":[0,60,0.0],"whendy":[0,12,0.0],"xanthe":[0,309,0.498],"yowanda":[0,23,0.0],"abilene":[0,1583,0.6399],"adonia":[0,339,0.506],"anegla":[0,35,0.0],"angiela":[0,23,0.0],"angy":[0,472,0.5348],"anjannette":[0,72,0.0],"annel":[0,545,0.5473],"annelies":[0,168,0.4451],"annemargaret":[0,5,0.0],"annemary":[0,5,0.0],"annick":[0,169,0.4456],"ariadna":[0,3874,0.7176],"arienne":[0,442,0.5291],"arinda":[0,10,0.0],"arlesa":[0,10,0.0],"azusena":[0,426,0.5259],"babbett":[0,5,0.0],"bavan":[0,5,0.0],"bellinda":[0,5,0.0],"benilda":[0,5,0.0],"berita":[0,5,0.0],"bethina":[0,20,0.0],"brande":[0,1141,0.6115],"canita":[0,12,0.0],"carye":[0,11,0.0],"chantae":[0,515,0.5424],"chevell":[0,21,0.0],"chrisi":[0,21,0.0],"christmas":[0,160,0.4408],"cliftina":[0,5,0.0],"dahna":[0,89,0.0],"danielia":[0,5,0.0],"danyel":[732,2511,0.5437],"darlynda":[0,5,0.0],"darnisha":[0,877,0.5886],"daya":[0,883,0.5892],"deaneen":[0,5,0.0],"debbee":[0,5,0.0],"deirore":[0,5,0.0],"delanda":[0,78,0.0],"demetras":[0,5,0.0],"demi":[45,14062,0.8272],"deneem":[0,5,0.0],"dennell":[10,28,0.0],"desirea":[0,1875,0.6546],"detri":[0,5,0.0],"detric":[426,5,0.5208],"dinese":[0,17,0.0],"dinise":[0,5,0.0],"dinnia":[0,10,0.0],"djuanna":[0,12,0.0],"dlinda":[0,5,0.0],"dondee":[0,20,0.0],"dondrea":[17,76,0.0],"dondria":[0,35,0.0],"dresden":[954,183,0.5128],"dutchess":[0,177,0.4496],"elainea":[0,37,0.0],"emese":[0,37,0.0],"enette":[0,5,0.0],"eschelle":[0,5,0.0],"falisa":[0,82,0.0],"genesis":[3513,90028,0.9569],"genni":[0,61,0.0],"geraldin":[0,126,0.4201],"gerise":[0,17,0.0],"grizelda":[0,182,0.452],"guendalina":[0,5,0.0],"halane":[0,5,0.0],"herlaine":[0,5,0.0],"hillari":[0,250,0.4796],"jacqelyn":[0,5,0.0],"jacquese":[97,149,0.2896],"jawanda":[0,257,0.482],"jennafer":[0,1080,0.6067],"jevette":[0,5,0.0],"joanelle":[0,29,0.0],"jobi":[6,42,0.0],"judylynn":[0,5,0.0],"julissa":[11,25678,0.8816],"juwanna":[0,49,0.0],"kaara":[0,13,0.0],"kanani":[5,882,0.5863],"kandance":[0,91,0.0],"katanya":[0,116,0.4129],"katonya":[0,292,0.4931],"kawanna":[0,551,0.5482],"kaylah":[0,6481,0.7623],"kehaulani":[0,331,0.504],"kelleyann":[0,5,0.0],"kellijo":[0,45,0.0],"kendalyn":[0,1075,0.6063],"kimann":[0,18,0.0],"kimbla":[0,5,0.0],"kindle":[42,540,0.5131],"koreena":[0,90,0.0],"kourtney":[831,13891,0.7865],"kyndall":[211,6327,0.7385],"lalinda":[0,34,0.0],"latanza":[0,80,0.0],"latarsha":[0,1975,0.6591],"latita":[0,38,0.0],"latrease":[0,289,0.4922],"laynette":[0,17,0.0],"leshawn":[800,312,0.4383],"lonya":[0,65,0.0],"lovanda":[0,10,0.0],"lucertia":[0,5,0.0],"lyndsey":[32,14374,0.8299],"lynnise":[0,10,0.0],"maha":[0,1955,0.6582],"malisha":[0,637,0.5608],"malyn":[0,169,0.4456],"marah":[0,2347,0.6741],"mariateresa":[0,302,0.496],"marilis":[0,10,0.0],"marletha":[0,5,0.0],"marvelous":[226,109,0.3407],"maylynn":[0,628,0.5596],"melaina":[0,1188,0.615],"melisia":[0,122,0.4173],"michalyn":[0,18,0.0],"minelba":[0,5,0.0],"mishawn":[76,117,0.2771],"mistee":[0,250,0.4796],"naja":[6,1275,0.6186],"nurit":[0,10,0.0],"orly":[0,795,0.5801],"panchita":[0,5,0.0],"pandoria":[0,5,0.0],"pasha":[397,498,0.3285],"patrea":[0,10,0.0],"patrenia":[0,15,0.0],"rajeana":[0,16,0.0],"ralanda":[0,20,0.0],"ranata":[0,80,0.0],"rashel":[0,1192,0.6153],"rashida":[6,2993,0.694],"raylynn":[56,3648,0.7029],"renuka":[0,96,0.0],"rhodena":[0,5,0.0],"romanda":[0,106,0.4051],"rosaida":[0,22,0.0],"rosean":[32,5,0.0],"sahara":[5,4629,0.7324],"salandra":[0,5,0.0],"secunda":[0,10,0.0],"shante":[216,5814,0.729],"sharina":[0,1058,0.6049],"sharnette":[0,192,0.4567],"shavonda":[0,1117,0.6096],"shawnae":[0,352,0.5093],"shawnalee":[0,29,0.0],"shele":[0,5,0.0],"shelinda":[0,47,0.0],"shereda":[0,67,0.0],"shernell":[0,62,0.0],"shire":[6,32,0.0],"shonta":[74,1604,0.6165],"starlite":[0,34,0.0],"suelynn":[0,50,0.0],"suzett":[0,51,0.0],"tajuanna":[0,63,0.0],"tameron":[123,53,0.3139],"tarena":[0,153,0.4369],"tarya":[0,44,0.0],"taska":[0,24,0.0],"teka":[0,236,0.4746],"terene":[0,10,0.0],"tewanda":[0,35,0.0],"thesa":[0,5,0.0],"tierra":[70,14918,0.8312],"tongia":[0,26,0.0],"triss":[0,26,0.0],"trivian":[0,5,0.0],"tulisa":[0,5,0.0],"tysha":[0,853,0.5862],"valonda":[0,36,0.0],"vanness":[13,5,0.0],"vontina":[0,15,0.0],"willisa":[0,11,0.0],"wrenda":[0,5,0.0],"yanira":[0,3283,0.7033],"yovonne":[0,28,0.0],"janssen":[197,0,0.4589],"lydon":[244,0,0.4775],"ringo":[244,0,0.4775],"khristopher":[2300,0,0.6723],"hud":[74,0,0.0],"suresh":[140,0,0.4292],"derren":[409,0,0.5223],"jeanmarc":[169,0,0.4456],"kareem":[17776,198,0.8416],"klark":[127,24,0.3665],"aarron":[1240,0,0.6187],"abimael":[1408,0,0.6297],"bilal":[5690,5,0.7504],"christiaan":[879,0,0.5888],"curits":[42,0,0.0],"devlon":[97,0,0.0],"keithen":[579,0,0.5525],"kenndy":[7,10,0.0],"mohammad":[16648,10,0.8438],"rodderick":[237,0,0.4749],"schaun":[44,0,0.0],"spyros":[104,0,0.4034],"trevin":[4631,0,0.7331],"carlitos":[572,0,0.5515],"cedrice":[12,0,0.0],"christapher":[701,0,0.5691],"derin":[894,230,0.4853],"dj":[838,13,0.577],"donavin":[2335,0,0.6737],"donta":[3889,91,0.7035],"efram":[41,0,0.0],"fritzgerald":[43,0,0.0],"hiran":[72,0,0.0],"jamin":[3412,138,0.6824],"jamon":[2732,6,0.686],"jaron":[11171,48,0.8065],"joanthan":[470,0,0.5344],"jonpaul":[1571,0,0.6392],"josehp":[16,0,0.0],"korry":[360,12,0.4975],"leanthony":[312,0,0.4988],"markeith":[2142,0,0.6662],"petros":[706,0,0.5698],"shean":[414,6,0.5172],"silton":[6,0,0.0],"tamas":[96,0,0.0],"trae":[4097,46,0.7154],"trampus":[277,0,0.4885],"ajay":[4524,5,0.7304],"anthoni":[937,0,0.5943],"artur":[832,0,0.584],"bj":[718,5,0.5679],"brint":[54,0,0.0],"cadet":[5,0,0.0],"carlito":[1331,0,0.6248],"deadrick":[179,0,0.4506],"decarlos":[1209,0,0.6165],"delando":[147,0,0.4335],"delfred":[22,0,0.0],"demitri":[2103,23,0.6583],"demont":[534,0,0.5455],"dequincy":[375,0,0.5148],"destery":[11,0,0.0],"dinesh":[167,0,0.4445],"donnye":[5,0,0.0],"dwon":[160,0,0.4408],"fitzroy":[184,0,0.453],"fredricks":[10,0,0.0],"gabrial":[1627,264,0.5638],"glennard":[5,0,0.0],"gumercindo":[16,0,0.0],"hatem":[125,0,0.4194],"ioannis":[1370,0,0.6273],"janos":[147,0,0.4335],"jaret":[2951,22,0.6895],"kimbell":[10,0,0.0],"leovardo":[263,0,0.484],"levelle":[271,0,0.4866],"manoj":[224,0,0.47],"marcum":[20,0,0.0],"michaels":[5,0,0.0],"nathenial":[42,0,0.0],"nephtali":[132,6,0.4094],"nicklaus":[3451,0,0.7076],"nik":[211,0,0.4649],"quintion":[5,0,0.0],"raheem":[8396,6,0.7843],"reinardo":[5,0,0.0],"rooseve":[5,0,0.0],"taggart":[663,0,0.5643],"thel":[5,0,0.0],"trampas":[395,0,0.5193],"trond":[15,0,0.0],"waleed":[1870,0,0.6544],"zedric":[220,0,0.4685],"latrenda":[0,485,0.5371],"tatia":[0,628,0.5596],"xan":[132,123,0.2491],"endora":[0,109,0.4075],"liesl":[0,1916,0.6565],"fanita":[0,33,0.0],"petula":[0,179,0.4506],"kiesha":[0,2621,0.6837],"wednesday":[0,1666,0.6443],"daliah":[0,908,0.5916],"gemini":[305,494,0.3589],"tereska":[0,17,0.0],"catrice":[0,1004,0.6003],"marticia":[0,67,0.0],"phelicia":[0,202,0.4611],"cymantha":[0,27,0.0],"dannah":[0,609,0.5569],"missey":[0,72,0.0],"alysha":[0,9557,0.7961],"arlisha":[0,276,0.4882],"dajuana":[0,132,0.4241],"deanine":[0,41,0.0],"krystin":[0,3131,0.6991],"lashunda":[0,2270,0.6712],"latrena":[0,261,0.4833],"morticia":[0,112,0.4098],"samanatha":[0,601,0.5558],"semantha":[0,19,0.0],"sharice":[0,1459,0.6328],"sueanna":[0,44,0.0],"tameka":[41,12730,0.8186],"tiersa":[0,99,0.0],"timolyn":[0,9,0.0],"tonji":[0,102,0.4017],"vonya":[0,84,0.0],"aleksandra":[0,3062,0.6972],"anglie":[0,45,0.0],"anjelica":[0,4328,0.7273],"araseli":[0,1198,0.6157],"bethaney":[0,632,0.5601],"evet":[0,20,0.0],"jennife":[0,265,0.4846],"jodilyn":[0,76,0.0],"jonnell":[11,58,0.0],"keica":[0,13,0.0],"keicha":[0,79,0.0],"kerensa":[0,457,0.532],"lashana":[0,1061,0.6051],"lisi":[0,24,0.0],"luzmaria":[0,808,0.5815],"mayela":[0,919,0.5927],"melyssa":[0,2023,0.6612],"shanie":[0,493,0.5386],"sharianne":[0,8,0.0],"tyese":[0,321,0.5013],"vhonda":[0,13,0.0],"alicen":[0,1162,0.613],"amia":[0,5952,0.7549],"aminah":[0,5335,0.7454],"annalise":[0,16388,0.8429],"arica":[0,2376,0.6752],"billijo":[0,183,0.4525],"courtnay":[10,467,0.5245],"dannita":[0,14,0.0],"deneta":[0,13,0.0],"dinene":[0,7,0.0],"kaycie":[0,2429,0.6771],"kellieann":[0,48,0.0],"kollette":[0,25,0.0],"kristiane":[0,114,0.4114],"laressa":[0,257,0.482],"leaser":[0,7,0.0],"petina":[0,119,0.4151],"samanth":[0,262,0.4837],"shelleen":[0,37,0.0],"symanthia":[0,12,0.0],"windie":[0,135,0.4261],"yovonda":[0,33,0.0],"zabrina":[0,1374,0.6276],"alechia":[0,82,0.0],"chantale":[0,319,0.5008],"chantee":[0,291,0.4928],"chenell":[0,256,0.4816],"chevette":[0,113,0.4106],"chirstina":[0,313,0.4991],"chonda":[0,189,0.4553],"deah":[0,191,0.4562],"demitria":[0,607,0.5566],"domina":[0,12,0.0],"eurydice":[0,95,0.0],"fabiana":[0,1799,0.651],"francita":[0,6,0.0],"gana":[0,34,0.0],"giannina":[0,505,0.5407],"gwanda":[0,6,0.0],"ilyssa":[0,786,0.5791],"jamilah":[16,2613,0.6798],"jennipher":[0,639,0.5611],"jodina":[0,12,0.0],"jovonnie":[38,6,0.0],"julisa":[0,4391,0.7285],"jwana":[0,44,0.0],"kamara":[26,2029,0.6542],"kasaundra":[0,455,0.5316],"kendahl":[49,662,0.5311],"kerryann":[0,333,0.5045],"keysha":[0,1939,0.6575],"kicia":[0,12,0.0],"kimberline":[0,6,0.0],"kindall":[45,596,0.522],"krisa":[0,216,0.4669],"kyrsten":[0,1995,0.66],"lakecia":[0,629,0.5597],"lasharn":[0,83,0.0],"latunya":[0,219,0.4681],"libbey":[0,114,0.4114],"lisann":[0,23,0.0],"lorissa":[0,1245,0.619],"mareena":[0,302,0.496],"mariluz":[0,428,0.5263],"meena":[12,1540,0.6332],"meighan":[0,564,0.5503],"miya":[0,7947,0.78],"nesha":[0,478,0.5359],"nitsa":[0,29,0.0],"pammela":[0,6,0.0],"patress":[0,6,0.0],"phelecia":[0,6,0.0],"reema":[0,1607,0.6412],"reisha":[0,135,0.4261],"reshell":[0,50,0.0],"ronya":[0,261,0.4833],"sammantha":[0,1985,0.6596],"samona":[0,311,0.4986],"sangeeta":[0,177,0.4496],"shami":[0,17,0.0],"sharlisa":[0,71,0.0],"sherrelle":[0,237,0.4749],"shundra":[0,375,0.5148],"shunta":[29,732,0.5543],"shuree":[0,151,0.4358],"shvonne":[0,50,0.0],"soyna":[0,57,0.0],"stasha":[0,763,0.5765],"stasi":[0,46,0.0],"swati":[0,403,0.5211],"tawania":[0,137,0.4273],"tecia":[0,123,0.418],"timberley":[0,6,0.0],"treshia":[0,6,0.0],"tricha":[0,99,0.0],"tyria":[6,333,0.4971],"ursala":[0,92,0.0],"adilia":[0,30,0.0],"alece":[0,84,0.0],"aliscia":[0,269,0.486],"allisen":[0,371,0.5139],"almida":[0,5,0.0],"annmari":[0,5,0.0],"antonnette":[0,18,0.0],"apasra":[0,5,0.0],"belkis":[0,444,0.5295],"benessa":[0,5,0.0],"breanna":[65,82301,0.9824],"brenee":[0,158,0.4397],"cahterine":[0,111,0.4091],"caree":[0,134,0.4254],"catriona":[0,682,0.5668],"celes":[0,265,0.4846],"celese":[0,73,0.0],"chavon":[55,671,0.5288],"chawn":[187,40,0.3882],"cheretta":[0,5,0.0],"cherilee":[0,23,0.0],"christienne":[0,39,0.0],"christyna":[0,393,0.5189],"cindyann":[0,15,0.0],"dafna":[0,79,0.0],"dahn":[5,16,0.0],"damona":[0,10,0.0],"danyell":[324,2520,0.6121],"daphny":[0,48,0.0],"deannah":[0,107,0.4059],"deboral":[0,5,0.0],"deella":[0,5,0.0],"delaura":[0,10,0.0],"delenia":[0,5,0.0],"denne":[0,5,0.0],"detrich":[117,11,0.3852],"domenique":[194,540,0.4217],"dominque":[2410,3872,0.4682],"dorit":[0,45,0.0],"eizabeth":[0,44,0.0],"elisabetta":[0,354,0.5098],"elisheva":[0,2361,0.6746],"evalinda":[0,10,0.0],"filiz":[0,5,0.0],"fontilla":[0,5,0.0],"franciska":[0,16,0.0],"gela":[0,26,0.0],"graziella":[0,552,0.5484],"illya":[365,39,0.471],"jacey":[487,7968,0.7402],"javonna":[0,862,0.5871],"jenefer":[0,320,0.501],"jhana":[0,107,0.4059],"johneen":[0,11,0.0],"jonae":[0,1136,0.6111],"kaci":[163,9921,0.7878],"kariann":[0,789,0.5794],"karmela":[0,211,0.4649],"kearn":[0,5,0.0],"kevia":[0,242,0.4768],"khadija":[0,5013,0.74],"khristie":[0,144,0.4317],"kimbereley":[0,11,0.0],"kimberlei":[0,18,0.0],"kimberlly":[0,184,0.453],"kimbler":[0,10,0.0],"krisanna":[0,32,0.0],"kylee":[498,50026,0.9314],"kymberlie":[0,185,0.4534],"kynda":[0,29,0.0],"kyndra":[0,2404,0.6762],"ladrena":[0,24,0.0],"lale":[0,22,0.0],"lanesa":[0,5,0.0],"larnice":[0,5,0.0],"larona":[0,39,0.0],"lashawna":[0,1802,0.6512],"lataunya":[0,61,0.0],"latoshia":[0,1057,0.6048],"latrisa":[0,144,0.4317],"leasie":[0,11,0.0],"lorilea":[0,10,0.0],"lucresha":[0,73,0.0],"lycrecia":[0,5,0.0],"machella":[0,15,0.0],"malaina":[0,880,0.5889],"marixa":[0,343,0.5071],"marrissa":[0,1438,0.6316],"mayann":[0,5,0.0],"mecia":[0,21,0.0],"meera":[0,4013,0.7207],"mellyora":[0,5,0.0],"melvita":[0,5,0.0],"merina":[0,338,0.5058],"millette":[0,86,0.0],"monee":[0,456,0.5318],"monicia":[0,110,0.4083],"monisa":[0,59,0.0],"mystie":[0,243,0.4771],"nacole":[0,1018,0.6015],"niccole":[0,1352,0.6262],"nikie":[0,191,0.4562],"patrisa":[0,5,0.0],"porchia":[0,528,0.5445],"prestina":[0,79,0.0],"princilla":[0,5,0.0],"raenee":[0,15,0.0],"rikke":[0,16,0.0],"ronnett":[0,61,0.0],"ronnica":[0,134,0.4254],"roshawn":[931,422,0.4309],"roshunda":[0,589,0.554],"rubyann":[0,221,0.4689],"samentha":[0,63,0.0],"satina":[0,170,0.4461],"seva":[15,105,0.3639],"shandon":[748,184,0.4766],"shanin":[0,317,0.5002],"shannette":[0,180,0.4511],"sharhonda":[0,1333,0.625],"shawan":[59,236,0.3952],"shawnta":[118,1812,0.6169],"sheley":[0,32,0.0],"shelina":[0,426,0.5259],"sherae":[0,273,0.4872],"sheray":[0,151,0.4358],"sherlonda":[0,156,0.4386],"siena":[0,10590,0.805],"sunja":[0,11,0.0],"tabatha":[0,19398,0.8576],"tabetha":[0,3917,0.7186],"taira":[0,1022,0.6019],"taj":[5616,548,0.6906],"taleen":[0,1060,0.6051],"talicia":[0,542,0.5468],"tamari":[397,686,0.3844],"tarron":[413,20,0.5029],"tarryn":[15,785,0.5697],"teesha":[0,478,0.5359],"telicia":[0,489,0.5379],"teralee":[0,5,0.0],"teresaann":[0,5,0.0],"terraine":[5,5,0.0],"threse":[0,10,0.0],"tialisa":[0,36,0.0],"tichina":[0,379,0.5157],"tiffaney":[0,2281,0.6716],"trenese":[0,72,0.0],"trinetta":[0,126,0.4201],"tynese":[0,11,0.0],"ulrica":[0,61,0.0],"valisha":[0,248,0.4789],"velissa":[0,42,0.0],"verdonna":[0,5,0.0],"vichelle":[0,5,0.0],"vionette":[0,5,0.0],"vonzetta":[0,12,0.0],"walesca":[0,23,0.0],"yolenda":[0,5,0.0],"zanette":[0,10,0.0],"jarrod":[25273,65,0.8785],"shenandoah":[112,347,0.4025],"tarus":[534,0,0.5455],"diron":[174,0,0.4481],"undray":[105,0,0.4042],"alfonson":[8,0,0.0],"andray":[241,0,0.4764],"marichal":[8,0,0.0],"torrell":[381,0,0.5162],"trevon":[14230,25,0.8293],"alexi":[1738,4190,0.5333],"amin":[3333,0,0.7046],"garrin":[418,0,0.5242],"keegan":[38063,3757,0.8412],"manolo":[1410,0,0.6298],"petey":[26,0,0.0],"raimund":[7,0,0.0],"shenan":[25,27,0.0],"syed":[5864,11,0.7524],"toran":[366,0,0.5127],"addam":[748,0,0.5748],"amit":[2891,202,0.6525],"andrej":[398,0,0.52],"antero":[66,0,0.0],"apollo":[8282,12,0.7826],"arik":[2577,0,0.6822],"bernaldo":[31,0,0.0],"gamalier":[46,0,0.0],"joab":[940,0,0.5946],"kamran":[2347,10,0.6716],"lanard":[344,0,0.5073],"linny":[6,10,0.0],"lornell":[6,0,0.0],"lothario":[6,0,0.0],"markos":[1022,0,0.6019],"nicklous":[245,0,0.4778],"prenell":[16,0,0.0],"rajesh":[683,0,0.5669],"raymone":[677,0,0.5661],"rickardo":[79,0,0.0],"roddney":[6,0,0.0],"sanjiv":[124,0,0.4187],"shaughn":[387,5,0.512],"shonn":[242,5,0.4689],"torr":[13,0,0.0],"zak":[1593,0,0.6404],"abdel":[815,0,0.5822],"atul":[212,0,0.4653],"chadrick":[2410,0,0.6764],"clayne":[14,0,0.0],"danald":[5,0,0.0],"darly":[104,113,0.2433],"darric":[100,0,0.4],"deepak":[553,0,0.5485],"delmonte":[59,0,0.0],"devell":[186,0,0.4539],"earic":[11,0,0.0],"elrick":[42,0,0.0],"endre":[56,0,0.0],"everick":[64,0,0.0],"fabion":[193,0,0.4571],"ferdinan":[5,0,0.0],"frederi":[15,0,0.0],"garritt":[200,0,0.4602],"gianfranco":[1050,0,0.6042],"gregorg":[5,0,0.0],"greyson":[57770,793,0.9406],"gy":[5,0,0.0],"ilan":[3107,59,0.6871],"jacek":[527,0,0.5444],"je":[10,0,0.0],"jenard":[51,0,0.0],"jer":[10,12,0.0],"karnell":[172,0,0.4471],"keithan":[775,0,0.5779],"kemal":[368,0,0.5132],"kennen":[287,0,0.4916],"klinton":[580,0,0.5527],"krieg":[43,0,0.0],"krister":[36,16,0.0],"lange":[5,0,0.0],"leonzo":[45,0,0.0],"pantelis":[207,0,0.4632],"rodgerick":[110,0,0.4083],"rorry":[21,0,0.0],"santee":[74,0,0.0],"schon":[117,0,0.4136],"shanton":[42,15,0.0],"soterios":[5,0,0.0],"thatcher":[4761,12,0.7339],"torlan":[5,0,0.0],"torland":[5,0,0.0],"toure":[420,0,0.5246],"trampis":[29,0,0.0],"twan":[217,27,0.4246],"tylon":[1216,0,0.617],"tyrice":[959,29,0.5814],"ulf":[5,0,0.0],"indira":[0,2435,0.6773],"tamitha":[0,454,0.5314],"anissa":[5,12444,0.8187],"lainie":[0,1915,0.6564],"yesenia":[314,39359,0.9124],"romunda":[0,54,0.0],"tamantha":[0,143,0.4311],"agena":[0,15,0.0],"donyale":[79,354,0.4311],"tabbatha":[0,748,0.5748],"bernay":[0,13,0.0],"tammatha":[0,153,0.4369],"cherish":[0,11190,0.8098],"trenell":[286,144,0.3503],"leisl":[0,79,0.0],"tiffiney":[0,1040,0.6034],"ashleigh":[83,31844,0.8985],"deshon":[2537,166,0.6442],"filicia":[0,83,0.0],"genifer":[0,185,0.4534],"kaprice":[0,383,0.5166],"lachon":[5,45,0.0],"monquie":[0,305,0.4969],"rebekka":[0,2061,0.6628],"salisa":[0,116,0.4129],"stavroula":[0,447,0.5301],"tascha":[0,205,0.4624],"titia":[0,24,0.0],"beronica":[0,1010,0.6009],"denessa":[0,151,0.4358],"falisha":[0,910,0.5918],"hydee":[0,143,0.4311],"kimbrly":[0,44,0.0],"kinberly":[0,350,0.5088],"lachell":[0,189,0.4553],"lamanda":[0,364,0.5122],"latonyia":[0,107,0.4059],"lisel":[0,89,0.0],"oriana":[0,3769,0.7152],"rashawn":[6371,709,0.6929],"roisin":[0,922,0.5929],"roshonda":[0,1069,0.6058],"sheva":[0,353,0.5096],"tabathia":[0,183,0.4525],"teffany":[0,253,0.4806],"yavette":[0,40,0.0],"angelicia":[0,448,0.5303],"candece":[0,33,0.0],"chantina":[0,45,0.0],"charmelle":[0,101,0.4009],"daneille":[0,476,0.5355],"felcia":[0,130,0.4228],"javonne":[318,361,0.3011],"kacie":[57,12674,0.8173],"kalpana":[0,31,0.0],"kiran":[3009,1859,0.4558],"laconda":[0,123,0.418],"lacresha":[0,1177,0.6142],"ladonya":[0,215,0.4665],"lasha":[0,1033,0.6028],"lissete":[0,432,0.5271],"lynsey":[0,4929,0.7386],"mechille":[0,69,0.0],"mollyann":[0,126,0.4201],"nicholle":[0,1837,0.6528],"raschelle":[0,105,0.4042],"romonda":[0,101,0.4009],"shamarie":[11,128,0.3947],"shavelle":[0,122,0.4173],"sirena":[0,3147,0.6996],"synethia":[0,123,0.418],"taisha":[0,2825,0.6902],"tametha":[0,85,0.0],"tampatha":[0,27,0.0],"taura":[0,433,0.5273],"tiffeny":[0,838,0.5846],"tiffiany":[0,839,0.5848],"traciann":[0,19,0.0],"yolandia":[0,18,0.0],"ameena":[0,1839,0.6529],"ammy":[0,1275,0.6211],"amorette":[0,645,0.5619],"ashlee":[258,43495,0.9227],"caramia":[0,251,0.4799],"caronda":[0,53,0.0],"casundra":[0,30,0.0],"chanin":[11,301,0.4812],"christne":[0,60,0.0],"cimberly":[0,60,0.0],"cinthya":[0,1795,0.6508],"cintia":[0,894,0.5903],"corbie":[5,12,0.0],"corenthia":[0,23,0.0],"cortina":[0,259,0.4827],"corvette":[0,80,0.0],"deandria":[0,705,0.5696],"deeddra":[0,6,0.0],"deiadra":[0,6,0.0],"deidria":[0,18,0.0],"denah":[0,58,0.0],"dennita":[0,6,0.0],"detrina":[0,12,0.0],"dushon":[34,6,0.0],"ericca":[0,580,0.5527],"evagelia":[0,106,0.4051],"ginine":[0,6,0.0],"hanan":[139,2022,0.624],"heleen":[0,27,0.0],"janeta":[0,17,0.0],"jeneene":[0,17,0.0],"jesica":[0,4715,0.7347],"jull":[0,151,0.4358],"kassi":[0,2101,0.6645],"kierstin":[0,3270,0.7029],"kimblyn":[0,6,0.0],"kristianne":[0,323,0.5018],"larua":[0,207,0.4632],"lisl":[0,60,0.0],"lizet":[0,2522,0.6803],"maelynn":[0,2679,0.6856],"malessa":[0,74,0.0],"malika":[36,4901,0.7333],"mandee":[0,887,0.5896],"monday":[0,35,0.0],"nataly":[10,15164,0.8357],"ondria":[0,85,0.0],"quentella":[0,23,0.0],"rashon":[1864,118,0.6202],"retonia":[0,6,0.0],"seema":[0,1183,0.6146],"shanelle":[0,4610,0.7327],"sharrone":[0,31,0.0],"shaunta":[37,1193,0.5994],"shelitha":[0,86,0.0],"shellane":[0,28,0.0],"shonette":[0,160,0.4408],"sibel":[0,254,0.481],"simmone":[0,184,0.453],"sulyn":[0,11,0.0],"sundai":[0,114,0.4114],"tabbitha":[0,699,0.5689],"thonda":[0,26,0.0],"tika":[0,348,0.5083],"tracina":[0,103,0.4026],"trisia":[0,52,0.0],"tyjuana":[0,51,0.0],"varonda":[0,11,0.0],"verity":[0,1706,0.6464],"wynde":[0,23,0.0],"yanire":[0,11,0.0],"aine":[0,1648,0.6434],"alisyn":[0,722,0.5717],"analicia":[0,2084,0.6638],"annmaria":[0,11,0.0],"areli":[107,6445,0.7508],"arika":[0,2434,0.6773],"ashly":[122,12000,0.8085],"ayumi":[0,599,0.5555],"barbare":[0,10,0.0],"beckett":[26626,1267,0.8487],"bedar":[0,5,0.0],"belkys":[0,112,0.4098],"brana":[0,44,0.0],"camillie":[0,5,0.0],"capricia":[0,267,0.4853],"casonya":[0,51,0.0],"cassander":[6,24,0.0],"celissa":[0,44,0.0],"cerina":[0,541,0.5466],"cezanne":[0,38,0.0],"chalon":[22,133,0.3759],"charo":[6,238,0.4657],"cherisa":[0,178,0.4501],"chrisa":[0,92,0.0],"chrisoula":[0,105,0.4042],"chynthia":[0,5,0.0],"cici":[0,123,0.418],"coleena":[0,10,0.0],"coulette":[0,5,0.0],"curtina":[0,69,0.0],"daleena":[0,57,0.0],"danele":[0,46,0.0],"danika":[0,10626,0.8053],"dannett":[0,38,0.0],"darleta":[0,5,0.0],"davanna":[0,91,0.0],"davilyn":[0,20,0.0],"deleatrice":[0,5,0.0],"demeatrice":[18,41,0.0],"denitta":[0,5,0.0],"dienne":[0,5,0.0],"donyel":[79,96,0.2461],"dorca":[0,30,0.0],"dorissa":[0,64,0.0],"dustine":[96,146,0.2876],"eleasa":[0,5,0.0],"evonn":[0,5,0.0],"faviola":[0,1995,0.66],"felinda":[0,5,0.0],"finola":[0,178,0.4501],"frita":[0,5,0.0],"gisselle":[0,10440,0.8037],"hadassa":[0,1525,0.6367],"immacolata":[0,18,0.0],"ivelis":[0,168,0.4451],"ivett":[0,696,0.5685],"jalena":[0,1097,0.608],"jamara":[45,926,0.5698],"jamelyn":[0,84,0.0],"jeanifer":[0,100,0.4],"jenea":[0,810,0.5817],"jennilyn":[0,340,0.5063],"jimena":[8,16516,0.8432],"jinjer":[0,5,0.0],"jocelin":[0,2604,0.6831],"joclyn":[0,644,0.5618],"joele":[0,21,0.0],"jonnita":[0,26,0.0],"jowell":[792,5,0.5767],"joyanna":[0,765,0.5767],"jujuan":[451,5,0.526],"julin":[0,5,0.0],"kacee":[290,2234,0.6022],"kaisa":[0,682,0.5668],"kalinda":[0,404,0.5213],"kamy":[0,116,0.4129],"kandise":[0,256,0.4816],"karelyn":[0,191,0.4562],"karlie":[0,11400,0.8114],"kasondra":[0,874,0.5883],"kathleena":[0,128,0.4214],"keasha":[0,705,0.5696],"keisa":[0,391,0.5184],"kele":[89,75,0.2404],"kelleye":[0,16,0.0],"kendrea":[0,643,0.5616],"kimbrley":[0,5,0.0],"kimly":[0,39,0.0],"konny":[0,5,0.0],"korrie":[30,793,0.5618],"kortney":[436,5313,0.6949],"lachel":[0,10,0.0],"ladonnia":[0,10,0.0],"lalaine":[0,74,0.0],"laloni":[0,120,0.4158],"lashawne":[0,78,0.0],"lashay":[10,2837,0.6885],"lashel":[0,22,0.0],"latesha":[0,3110,0.6986],"lauralea":[0,23,0.0],"lavondia":[0,5,0.0],"legina":[0,43,0.0],"leisel":[0,136,0.4267],"lenni":[16,295,0.4729],"letonya":[0,182,0.452],"linnaea":[0,215,0.4665],"lorencita":[0,15,0.0],"loresa":[0,39,0.0],"lorida":[0,5,0.0],"lorrisa":[0,5,0.0],"madina":[0,1461,0.6329],"malee":[0,326,0.5026],"marialisa":[0,18,0.0],"marjori":[0,31,0.0],"marquise":[10541,392,0.7788],"marykathleen":[0,83,0.0],"melanne":[0,18,0.0],"miechelle":[0,27,0.0],"mikaela":[0,20475,0.8622],"mimma":[0,16,0.0],"minka":[0,465,0.5335],"moneque":[0,5,0.0],"natascha":[0,915,0.5923],"natrice":[0,23,0.0],"neia":[0,26,0.0],"neshell":[0,21,0.0],"nickole":[0,2542,0.681],"nidya":[0,77,0.0],"paisley":[82,61817,0.9571],"pemela":[0,5,0.0],"pertrina":[0,5,0.0],"quan":[1412,39,0.6153],"rachella":[0,91,0.0],"radhika":[0,1086,0.6072],"resha":[0,257,0.482],"rhodesia":[0,95,0.0],"rosaelia":[0,34,0.0],"rosangela":[0,342,0.5068],"roshaun":[402,55,0.468],"rossalyn":[0,32,0.0],"sabrinia":[0,197,0.4589],"sala":[0,276,0.4882],"sandhya":[0,504,0.5405],"shalamar":[83,234,0.3692],"shalyn":[0,1992,0.6599],"shannyn":[0,527,0.5444],"shanti":[140,1874,0.6149],"sharetta":[0,263,0.484],"sharo":[0,11,0.0],"shavaun":[0,92,0.0],"shavette":[0,106,0.4051],"shawnice":[0,435,0.5277],"sheil":[0,5,0.0],"shelane":[0,23,0.0],"shelonda":[0,280,0.4894],"sherronda":[0,195,0.458],"silke":[0,47,0.0],"sommer":[0,6053,0.7564],"sondrea":[0,27,0.0],"sonni":[56,525,0.4995],"stephanine":[0,143,0.4311],"sudha":[0,15,0.0],"suprina":[0,111,0.4091],"tabbetha":[0,214,0.4661],"taci":[0,146,0.4329],"taffeta":[0,5,0.0],"tamathia":[0,10,0.0],"tamathy":[0,15,0.0],"tanjala":[0,25,0.0],"tashi":[133,482,0.4372],"tatum":[11476,26979,0.6433],"tavi":[151,177,0.2715],"tayne":[11,5,0.0],"teasha":[0,666,0.5647],"teha":[0,5,0.0],"tifany":[0,960,0.5965],"tiffin":[0,60,0.0],"tiffony":[0,137,0.4273],"tiya":[0,749,0.5749],"tracylee":[0,12,0.0],"traycee":[0,10,0.0],"treda":[0,5,0.0],"trenee":[0,113,0.4106],"trivia":[0,159,0.4403],"tyrena":[0,95,0.0],"ulisa":[0,17,0.0],"ursela":[0,35,0.0],"valanda":[0,21,0.0],"valesia":[0,15,0.0],"veronice":[0,16,0.0],"wendylee":[0,5,0.0],"ximena":[13,37963,0.9156],"xina":[0,51,0.0],"yvelle":[0,5,0.0],"zandria":[0,576,0.5521],"zarina":[0,1533,0.6371],"jarred":[13242,8,0.8239],"heith":[572,0,0.5515],"alfy":[15,0,0.0],"tavio":[148,0,0.4341],"tremell":[599,0,0.5555],"tremelle":[18,0,0.0],"karriem":[512,5,0.5374],"trev":[87,0,0.0],"jarod":[11791,5,0.814],"deren":[236,0,0.4746],"jerrick":[2097,0,0.6643],"sultan":[2234,0,0.6698],"treavor":[740,0,0.5738],"arun":[1428,0,0.6309],"christipher":[620,0,0.5585],"dietrick":[189,0,0.4553],"jeth":[8,0,0.0],"christohper":[423,0,0.5253],"dejon":[2588,77,0.6653],"jerrid":[1086,0,0.6072],"jondavid":[302,0,0.496],"keil":[317,0,0.5002],"kristofor":[805,0,0.5812],"murice":[77,0,0.0],"remon":[161,0,0.4414],"reza":[1155,9,0.6084],"samer":[1443,5,0.63],"stavros":[1019,0,0.6016],"tramell":[665,0,0.5646],"alondo":[43,0,0.0],"andrzej":[378,0,0.5155],"apostolos":[237,0,0.4749],"britain":[810,705,0.3401],"demetrie":[308,17,0.4761],"eril":[34,0,0.0],"isai":[7151,34,0.7676],"jarrad":[1897,0,0.6556],"jovan":[9890,1079,0.7285],"justen":[4046,5,0.7206],"lavale":[55,0,0.0],"mondo":[33,0,0.0],"ramesh":[185,0,0.4534],"ravindra":[113,0,0.4106],"sandeep":[806,115,0.5188],"trenten":[3250,0,0.7024],"treven":[1068,0,0.6057],"amaury":[1444,5,0.63],"anand":[1886,17,0.65],"andrius":[114,0,0.4114],"antionio":[381,0,0.5162],"braddock":[476,0,0.5355],"breon":[2435,290,0.614],"bria":[55,16613,0.8416],"bryen":[432,0,0.5271],"daktari":[5,0,0.0],"damin":[578,0,0.5524],"delawrence":[130,0,0.4228],"demian":[2051,14,0.6585],"deondre":[4030,15,0.7187],"deray":[190,0,0.4558],"derel":[65,0,0.0],"deval":[72,0,0.0],"dijon":[1443,69,0.6069],"edmondo":[5,0,0.0],"eran":[609,87,0.4975],"frankin":[28,0,0.0],"gannon":[6611,5,0.7635],"greggery":[16,0,0.0],"hamid":[911,0,0.5919],"henrique":[611,0,0.5572],"iric":[21,0,0.0],"jabin":[621,0,0.5586],"jeramy":[4519,5,0.7303],"jerret":[453,0,0.5312],"johnathen":[1356,0,0.6265],"johnaton":[243,0,0.4771],"kaare":[28,0,0.0],"karson":[20690,2063,0.7924],"kendric":[2500,0,0.6796],"khan":[431,0,0.5269],"kynan":[370,0,0.5136],"latroy":[865,0,0.5874],"marlvin":[5,0,0.0],"murat":[361,0,0.5115],"nabil":[1910,49,0.6419],"naeem":[2060,0,0.6628],"nilesh":[178,0,0.4501],"raef":[367,0,0.5129],"rahul":[3324,0,0.7043],"rajan":[1027,0,0.6023],"rakesh":[440,0,0.5287],"rashid":[2534,0,0.6808],"rundy":[5,0,0.0],"saintjohn":[5,0,0.0],"sanjeev":[459,0,0.5324],"santonio":[939,0,0.5945],"savoy":[176,12,0.4258],"seann":[517,5,0.5383],"shadd":[243,0,0.4771],"shuan":[176,0,0.4491],"tarance":[219,0,0.4681],"teral":[5,0,0.0],"terren":[559,169,0.4395],"terrick":[874,0,0.5883],"tood":[54,0,0.0],"tregg":[42,0,0.0],"tremel":[344,0,0.5073],"trumell":[5,0,0.0],"warran":[5,0,0.0],"cinnamon":[0,2022,0.6612],"sivi":[0,47,0.0],"carrieann":[0,669,0.5651],"joely":[0,1807,0.6514],"malette":[0,20,0.0],"tineke":[0,23,0.0],"anessa":[0,2842,0.6907],"milette":[0,17,0.0],"tahnee":[0,919,0.5927],"buffi":[0,194,0.4576],"nechelle":[0,295,0.494],"annissa":[0,1162,0.613],"melette":[0,13,0.0],"ronisue":[0,13,0.0],"kerith":[0,189,0.4553],"tifani":[0,872,0.5881],"tineka":[0,255,0.4813],"twiggy":[0,12,0.0],"annisa":[0,689,0.5676],"carianne":[0,496,0.5391],"charemon":[0,17,0.0],"felishia":[0,331,0.504],"marisal":[0,84,0.0],"nichell":[0,56,0.0],"amybeth":[0,116,0.4129],"chandi":[0,242,0.4768],"christien":[927,136,0.5279],"ichelle":[0,79,0.0],"saprina":[0,365,0.5125],"shannel":[0,1256,0.6198],"svetlana":[0,909,0.5917],"tini":[0,10,0.0],"alessia":[0,9238,0.7931],"camara":[81,788,0.533],"chalene":[0,132,0.4241],"kimberl":[0,62,0.0],"lashaunda":[0,1421,0.6305],"rosaisela":[0,449,0.5304],"taletha":[0,242,0.4768],"alecea":[0,125,0.4194],"delisia":[0,115,0.4121],"franchon":[0,91,0.0],"geisha":[0,157,0.4392],"karima":[0,1460,0.6329],"kartika":[0,13,0.0],"lakesha":[6,8168,0.7819],"lasean":[418,155,0.4024],"meliza":[0,1048,0.6041],"nikky":[0,123,0.418],"sherece":[0,260,0.483],"shonte":[80,1008,0.5627],"tamica":[0,2139,0.666],"tiffinie":[0,304,0.4966],"traca":[0,26,0.0],"alissia":[0,839,0.5848],"anjenette":[0,82,0.0],"annessa":[0,672,0.5655],"athea":[0,305,0.4969],"buffey":[0,96,0.0],"camaro":[18,19,0.0],"celicia":[0,361,0.5115],"charnessa":[0,23,0.0],"chenoa":[0,1728,0.6475],"cherina":[0,210,0.4644],"cretia":[0,17,0.0],"crystina":[0,623,0.5589],"danyale":[50,927,0.5674],"devara":[0,7,0.0],"diondra":[5,688,0.564],"jammi":[0,172,0.4471],"jillanne":[0,56,0.0],"kaela":[0,6338,0.7604],"kassondra":[0,927,0.5934],"kawanda":[0,423,0.5253],"kodi":[3247,3770,0.4133],"lamara":[0,374,0.5146],"larra":[0,215,0.4665],"lashae":[0,1631,0.6425],"latesa":[0,182,0.452],"mali":[81,1368,0.5969],"marette":[0,17,0.0],"michellie":[0,31,0.0],"milessa":[0,94,0.0],"miria":[0,124,0.4187],"mone":[0,515,0.5424],"sabrenna":[0,7,0.0],"sharay":[5,739,0.5705],"sharonn":[0,43,0.0],"shaunte":[88,1698,0.6183],"shontell":[6,652,0.5585],"sobrina":[0,12,0.0],"tahirih":[0,95,0.0],"talaya":[0,1502,0.6353],"tandeka":[0,7,0.0],"tangula":[0,55,0.0],"taronda":[0,175,0.4486],"tenesha":[0,1438,0.6316],"tiera":[6,4070,0.721],"toiya":[0,123,0.418],"amgela":[0,11,0.0],"anesia":[0,477,0.5357],"annesa":[0,39,0.0],"ariella":[5,20602,0.8626],"audris":[0,102,0.4017],"carmala":[0,6,0.0],"carrissa":[0,965,0.5969],"charmarie":[0,18,0.0],"cherlyl":[0,6,0.0],"cia":[0,84,0.0],"crissi":[0,48,0.0],"cyrstal":[0,962,0.5966],"danamarie":[0,163,0.4424],"danessa":[0,701,0.5691],"darhonda":[0,33,0.0],"deangelia":[0,11,0.0],"demarie":[69,114,0.2819],"demetrias":[127,49,0.3241],"denissa":[0,72,0.0],"derena":[0,12,0.0],"deshaun":[5685,231,0.7249],"doralynn":[0,6,0.0],"dynelle":[0,6,0.0],"elizabeht":[0,53,0.0],"esa":[607,102,0.4881],"eurika":[0,81,0.0],"fauna":[0,172,0.4471],"gaelen":[156,18,0.4018],"galia":[0,555,0.5489],"grisell":[0,175,0.4486],"ilissa":[0,249,0.4792],"indi":[53,776,0.5464],"jalanda":[0,40,0.0],"jinnifer":[0,148,0.4341],"joliene":[0,77,0.0],"joselin":[0,4182,0.7243],"jovanka":[0,55,0.0],"kaley":[25,13642,0.8256],"karianne":[0,999,0.5999],"kassaundra":[0,400,0.5204],"keita":[486,189,0.4074],"kely":[10,242,0.4612],"kendria":[0,1054,0.6046],"keya":[0,1897,0.6556],"kirsta":[0,264,0.4843],"krisi":[0,146,0.4329],"krisy":[0,81,0.0],"ladonia":[0,48,0.0],"laini":[0,361,0.5115],"lakeitha":[0,917,0.5925],"lakeshia":[0,4710,0.7346],"lakisha":[12,12310,0.8173],"laquanda":[0,1539,0.6374],"lashawnda":[0,2227,0.6695],"lashonna":[0,429,0.5265],"latangela":[0,143,0.4311],"latese":[0,88,0.0],"lavonnia":[0,11,0.0],"liset":[0,1021,0.6018],"lorianna":[0,439,0.5285],"lureen":[0,6,0.0],"mairead":[0,1369,0.6273],"maletha":[0,6,0.0],"marixsa":[0,27,0.0],"megann":[0,797,0.5803],"melisssa":[0,133,0.4248],"mellette":[0,6,0.0],"mikala":[10,4008,0.719],"milissia":[0,36,0.0],"mirjana":[0,112,0.4098],"mychele":[0,57,0.0],"nachelle":[0,449,0.5304],"neshia":[0,81,0.0],"patrisia":[0,411,0.5228],"phylisa":[0,6,0.0],"quantina":[0,225,0.4704],"raquelle":[0,832,0.584],"rhoni":[0,17,0.0],"richella":[0,23,0.0],"ronique":[10,329,0.4911],"selicia":[0,76,0.0],"shalisa":[0,863,0.5872],"shanae":[0,3464,0.7079],"shawnia":[0,168,0.4451],"shawny":[0,87,0.0],"shellena":[0,52,0.0],"shevette":[0,62,0.0],"shinell":[0,17,0.0],"shone":[335,51,0.449],"shontel":[19,771,0.5656],"smita":[0,134,0.4254],"taffany":[0,219,0.4681],"tahnya":[0,48,0.0],"tali":[72,1404,0.6029],"tammyann":[0,6,0.0],"tassy":[0,27,0.0],"theia":[0,1119,0.6098],"timika":[0,1005,0.6004],"tinaka":[0,11,0.0],"toie":[0,6,0.0],"tya":[0,791,0.5796],"vangela":[0,11,0.0],"vianey":[0,3697,0.7136],"victori":[0,74,0.0],"virigina":[0,6,0.0],"zoey":[224,111856,0.998],"zuleika":[0,1213,0.6168],"adreanne":[0,109,0.4075],"aimie":[0,548,0.5478],"alicha":[0,265,0.4846],"amdrea":[0,16,0.0],"amethyst":[11,4376,0.7266],"anat":[0,51,0.0],"aneesa":[0,1571,0.6392],"anesa":[0,462,0.5329],"anesha":[0,795,0.5801],"anicia":[0,622,0.5588],"anneli":[0,478,0.5359],"annissia":[0,27,0.0],"antonitte":[0,16,0.0],"antrina":[0,10,0.0],"arasely":[0,251,0.4799],"ariann":[6,471,0.529],"arnissa":[0,36,0.0],"ashlea":[0,3152,0.6997],"aundreia":[0,5,0.0],"beatrize":[0,32,0.0],"bethani":[0,1020,0.6017],"brandye":[0,485,0.5371],"camelle":[0,107,0.4059],"cardine":[0,10,0.0],"cariann":[0,281,0.4897],"carriann":[0,105,0.4042],"channel":[0,1523,0.6365],"charlla":[0,5,0.0],"charlote":[0,10,0.0],"charnel":[0,66,0.0],"chauntelle":[0,202,0.4611],"chineta":[0,5,0.0],"chrisine":[0,15,0.0],"circe":[0,270,0.4863],"coreene":[0,5,0.0],"crissandra":[0,15,0.0],"crystalyn":[0,647,0.5622],"cynita":[0,10,0.0],"cytnhia":[0,5,0.0],"daiana":[0,1137,0.6112],"dangela":[0,366,0.5127],"danyele":[0,327,0.5029],"dawm":[0,5,0.0],"dawndra":[0,10,0.0],"denesia":[0,71,0.0],"denetria":[0,266,0.485],"denica":[0,194,0.4576],"desree":[0,217,0.4673],"donatella":[0,356,0.5103],"donyelle":[15,378,0.4991],"dorra":[0,5,0.0],"dulcey":[0,105,0.4042],"dyvonne":[0,5,0.0],"elanna":[0,555,0.5489],"ellissa":[0,486,0.5373],"erikka":[0,981,0.5983],"faryl":[0,5,0.0],"febie":[0,5,0.0],"felicha":[0,226,0.4708],"gaelyn":[0,64,0.0],"georgy":[26,15,0.0],"gigette":[0,5,0.0],"guendolyn":[0,5,0.0],"gwana":[0,10,0.0],"ijeoma":[0,491,0.5382],"illana":[0,169,0.4456],"imberly":[0,74,0.0],"jamell":[2145,75,0.6467],"jandra":[0,20,0.0],"jara":[0,849,0.5858],"jayann":[0,45,0.0],"ji":[163,251,0.3173],"jonnetta":[0,50,0.0],"joymarie":[0,15,0.0],"jozetta":[0,11,0.0],"julynn":[0,15,0.0],"justi":[5,17,0.0],"kaija":[0,1014,0.6012],"karinne":[0,294,0.4937],"kassia":[0,840,0.5849],"keenya":[0,280,0.4894],"keia":[0,597,0.5552],"kista":[0,79,0.0],"kristelle":[0,288,0.4919],"krystyn":[0,711,0.5704],"kurstin":[0,463,0.5331],"laconia":[0,41,0.0],"lacresia":[0,162,0.4419],"lainee":[0,1428,0.6309],"lakeisha":[36,12848,0.8197],"lashonne":[0,65,0.0],"lechelle":[0,166,0.444],"lecretia":[0,62,0.0],"leeana":[0,810,0.5817],"lennia":[0,5,0.0],"letriana":[0,5,0.0],"liat":[0,554,0.5487],"lisset":[0,1460,0.6329],"lissett":[0,608,0.5568],"litonya":[0,26,0.0],"lovi":[0,10,0.0],"luanda":[0,25,0.0],"lyssette":[0,55,0.0],"magally":[0,110,0.4083],"manal":[0,1401,0.6293],"marialana":[0,5,0.0],"marizela":[0,50,0.0],"marizol":[0,332,0.5042],"marquesa":[0,75,0.0],"martrice":[11,123,0.3905],"marueen":[0,26,0.0],"maryn":[0,2848,0.6909],"meisha":[0,1048,0.6041],"meka":[0,623,0.5589],"melainie":[0,107,0.4059],"melizza":[0,123,0.418],"mellinda":[0,27,0.0],"micelle":[0,29,0.0],"michaelynn":[0,15,0.0],"molette":[0,5,0.0],"molissa":[0,5,0.0],"myka":[436,2749,0.6047],"nacy":[0,35,0.0],"nagela":[0,5,0.0],"natarsha":[0,501,0.54],"natina":[0,179,0.4506],"neisa":[0,47,0.0],"nichella":[0,5,0.0],"nicollette":[0,1229,0.6179],"pageant":[0,5,0.0],"patreece":[0,42,0.0],"paulyn":[0,5,0.0],"rashmi":[0,308,0.4977],"raychell":[0,163,0.4424],"rendi":[0,140,0.4292],"reshon":[18,5,0.0],"richael":[0,24,0.0],"roiann":[0,10,0.0],"roshon":[166,60,0.3458],"saira":[0,3564,0.7104],"sangita":[0,85,0.0],"sania":[0,1884,0.655],"santita":[0,61,0.0],"secret":[0,743,0.5742],"serra":[0,806,0.5813],"shaela":[0,1115,0.6095],"shanley":[0,473,0.535],"shannie":[0,91,0.0],"sharifa":[0,555,0.5489],"sharmel":[0,117,0.4136],"sharmila":[0,180,0.4511],"shaunette":[0,154,0.4375],"shawndell":[258,146,0.3329],"shawntay":[35,695,0.5452],"shayleen":[0,519,0.543],"shelanda":[0,125,0.4194],"shelayne":[0,5,0.0],"shenette":[0,43,0.0],"sherisa":[0,68,0.0],"sheritha":[0,129,0.4221],"shina":[0,426,0.5259],"shirletha":[0,5,0.0],"sholanda":[0,309,0.498],"shondel":[24,24,0.0],"shonnette":[0,39,0.0],"shoshannah":[0,223,0.4697],"stefenie":[0,40,0.0],"stepahnie":[0,397,0.5198],"suelyn":[0,5,0.0],"sulynn":[0,5,0.0],"tabrina":[0,91,0.0],"tajana":[0,91,0.0],"talisha":[0,2911,0.6928],"tamerra":[0,138,0.428],"tamilla":[0,17,0.0],"tammetha":[0,5,0.0],"tammia":[0,29,0.0],"tangular":[0,5,0.0],"tanise":[0,79,0.0],"tanisha":[21,19322,0.8564],"taran":[2030,560,0.5351],"tarji":[0,46,0.0],"tarnya":[0,5,0.0],"telissa":[0,118,0.4144],"teneke":[0,5,0.0],"thelisa":[0,5,0.0],"tiesha":[0,2849,0.6909],"tifini":[0,101,0.4009],"tinika":[0,565,0.5504],"tiona":[0,1341,0.6255],"tiphanie":[0,623,0.5589],"travia":[0,208,0.4636],"tress":[0,23,0.0],"tristina":[0,442,0.5291],"tyia":[0,232,0.4731],"undria":[0,5,0.0],"uvonka":[0,5,0.0],"valyncia":[0,112,0.4098],"vedette":[0,5,0.0],"velarie":[0,5,0.0],"virma":[0,11,0.0],"vondia":[0,5,0.0],"wendra":[0,12,0.0],"wynda":[0,5,0.0],"wytina":[0,10,0.0],"yavonda":[0,43,0.0],"zaundra":[0,10,0.0],"zsa":[0,17,0.0],"clayt":[20,0,0.0],"demetrick":[706,0,0.5698],"kahlil":[4233,5,0.7246],"dax":[11524,16,0.8113],"taurus":[1979,84,0.6359],"amar":[4856,328,0.6959],"avid":[232,0,0.4731],"jerrad":[1751,0,0.6487],"jerrett":[1243,0,0.6189],"pual":[37,0,0.0],"rahim":[1839,0,0.6529],"yaron":[284,0,0.4907],"zoran":[434,0,0.5275],"antal":[8,0,0.0],"patrik":[692,0,0.568],"ramel":[1550,0,0.6381],"sascha":[383,1135,0.4757],"arjun":[11560,0,0.8126],"carols":[129,0,0.4221],"cean":[29,0,0.0],"daman":[666,0,0.5647],"damascus":[129,0,0.4221],"keelan":[3534,351,0.653],"mannix":[517,0,0.5427],"marrio":[368,0,0.5132],"maruice":[168,0,0.4451],"montrell":[3955,28,0.715],"raif":[324,0,0.5021],"raja":[850,376,0.4283],"ralphael":[439,0,0.5285],"regional":[22,0,0.0],"steed":[62,0,0.0],"timorthy":[12,0,0.0],"tomothy":[119,0,0.4151],"yuval":[402,217,0.3626],"aroldo":[125,0,0.4194],"dameon":[4241,0,0.7255],"demone":[499,0,0.5396],"elieser":[253,0,0.4806],"erek":[671,0,0.5653],"gorje":[91,0,0.0],"harun":[982,0,0.5984],"hussein":[3320,0,0.7042],"jase":[23523,127,0.8701],"jassen":[266,0,0.485],"jeramie":[3392,41,0.6987],"jeromy":[4793,0,0.7361],"johndavid":[1229,0,0.6179],"keldon":[607,0,0.5566],"lamarcus":[2994,0,0.6953],"lemanuel":[28,0,0.0],"nachum":[276,0,0.4882],"nicholaos":[124,0,0.4187],"obrian":[482,0,0.5366],"partick":[208,0,0.4636],"raimondo":[13,0,0.0],"rajeev":[504,0,0.5405],"ranjit":[153,0,0.4369],"remond":[33,0,0.0],"shanen":[48,131,0.3297],"sherard":[537,0,0.546],"taber":[413,28,0.4953],"tharin":[11,0,0.0],"tharron":[6,0,0.0],"theodoros":[526,0,0.5442],"tommaso":[615,0,0.5578],"tremayne":[3943,39,0.713],"akim":[792,0,0.5797],"aleksandar":[1416,0,0.6302],"alexand":[5,0,0.0],"aniel":[424,0,0.5255],"antoney":[63,0,0.0],"antuan":[1392,0,0.6287],"arrick":[226,0,0.4708],"cazzie":[17,0,0.0],"chirs":[12,0,0.0],"chritopher":[341,0,0.5066],"darvell":[281,0,0.4897],"delancey":[28,94,0.3215],"delvis":[104,0,0.4034],"deny":[140,0,0.4292],"derian":[1473,135,0.5874],"dobby":[5,0,0.0],"durron":[40,0,0.0],"dushawn":[440,11,0.5179],"elimelech":[1103,0,0.6085],"eyal":[454,0,0.5314],"gamel":[15,0,0.0],"genard":[49,0,0.0],"guenter":[5,0,0.0],"guerin":[62,0,0.0],"guillaume":[341,0,0.5066],"hondo":[92,0,0.0],"jamar":[15892,73,0.8368],"jarald":[5,0,0.0],"jerad":[3787,0,0.7157],"johanthan":[106,0,0.4051],"jonh":[160,0,0.4408],"jordi":[3366,327,0.6503],"kamron":[7187,291,0.7446],"konstantin":[648,0,0.5623],"kordell":[1737,0,0.648],"kristoffer":[3928,0,0.7188],"lateef":[891,0,0.59],"lenneth":[5,0,0.0],"leondrus":[5,0,0.0],"lesile":[5,45,0.0],"levance":[10,0,0.0],"luisito":[15,0,0.0],"mukesh":[5,0,0.0],"nando":[41,0,0.0],"ontario":[877,0,0.5886],"pacer":[94,0,0.0],"raji":[150,0,0.4352],"rederick":[5,0,0.0],"ronrico":[194,0,0.4576],"rui":[838,75,0.5435],"sergie":[5,0,0.0],"sir":[2106,0,0.6647],"sotirios":[270,0,0.4863],"tait":[1207,16,0.6094],"telly":[1527,82,0.6086],"thyrone":[5,0,0.0],"traver":[290,0,0.4925],"travon":[6618,28,0.7613],"trig":[194,0,0.4576],"tryon":[34,0,0.0],"turan":[36,0,0.0],"tymothy":[273,0,0.4872],"undre":[15,0,0.0],"willilam":[22,0,0.0],"laryssa":[0,1239,0.6186],"lya":[0,911,0.5919],"torina":[0,212,0.4653],"quetcy":[0,51,0.0],"charisma":[0,3790,0.7157],"trenny":[0,33,0.0],"sacha":[621,1911,0.5137],"jossette":[0,80,0.0],"ondina":[0,15,0.0],"shahna":[0,41,0.0],"tamaira":[0,278,0.4888],"josett":[0,32,0.0],"trixy":[0,174,0.4481],"angeligue":[0,131,0.4235],"britney":[83,35449,0.908],"caretta":[0,47,0.0],"chandrea":[0,262,0.4837],"ixchel":[0,1014,0.6012],"lashann":[0,93,0.0],"lytonia":[0,34,0.0],"maite":[0,4272,0.7261],"sorina":[0,149,0.4346],"anissia":[0,289,0.4922],"chauntel":[0,497,0.5393],"shilpa":[0,573,0.5516],"tameko":[0,270,0.4863],"telisha":[0,1182,0.6145],"anessia":[0,149,0.4346],"carrianne":[0,294,0.4937],"cossandra":[0,20,0.0],"jayla":[51,45852,0.9313],"joley":[0,373,0.5143],"stevette":[0,26,0.0],"tanika":[0,4522,0.7311],"windee":[0,26,0.0],"amena":[0,1051,0.6043],"cailin":[30,3706,0.7087],"chaunte":[0,464,0.5333],"damonica":[0,183,0.4525],"faydra":[0,174,0.4481],"keishia":[0,258,0.4823],"latrinda":[0,46,0.0],"letanya":[0,92,0.0],"leya":[0,1619,0.6418],"rashonda":[0,1499,0.6352],"shandel":[10,365,0.5011],"shanise":[0,1466,0.6332],"sia":[5,2574,0.681],"sujata":[0,123,0.418],"tamekia":[0,1883,0.655],"tanette":[0,60,0.0],"tenisha":[0,3501,0.7088],"timiko":[0,97,0.0],"tristen":[21252,4177,0.7363],"tynette":[0,28,0.0],"andreal":[0,112,0.4098],"angilique":[0,18,0.0],"antje":[0,18,0.0],"ayda":[0,1461,0.6329],"chantella":[0,105,0.4042],"charmen":[0,38,0.0],"charnelle":[0,471,0.5346],"chaunda":[0,123,0.418],"cherae":[0,183,0.4525],"dashawn":[8825,541,0.7484],"jessilyn":[0,682,0.5668],"kimbelry":[0,35,0.0],"kirstan":[0,479,0.5361],"lamia":[0,1378,0.6278],"latoria":[0,2702,0.6863],"lucynda":[0,66,0.0],"maisha":[0,1904,0.6559],"malaika":[0,2584,0.6825],"marenda":[0,134,0.4254],"moriah":[108,13173,0.8179],"nissa":[0,1527,0.6368],"paraskevi":[0,271,0.4866],"rasheedah":[0,930,0.5937],"shannin":[0,240,0.476],"shauntel":[10,913,0.5866],"shawnte":[102,1385,0.5909],"shelise":[0,137,0.4273],"surena":[0,95,0.0],"taja":[28,1882,0.6466],"tamico":[0,85,0.0],"tomekia":[0,709,0.5701],"tousha":[0,20,0.0],"trichia":[0,31,0.0],"tristin":[9745,2827,0.6355],"ursla":[0,18,0.0],"aja":[90,8269,0.776],"ashiya":[0,483,0.5368],"atonia":[0,18,0.0],"aymee":[0,445,0.5297],"belissa":[0,68,0.0],"carrieanne":[0,209,0.464],"cassey":[155,1691,0.5984],"chandelle":[0,242,0.4768],"chandrika":[0,161,0.4414],"dawnyel":[0,56,0.0],"dustie":[11,916,0.5864],"iesha":[15,7452,0.7731],"juile":[0,17,0.0],"jyoti":[0,235,0.4742],"kaylie":[0,21950,0.8683],"kaysha":[0,1290,0.6221],"kebra":[0,77,0.0],"kelinda":[0,23,0.0],"keriann":[0,967,0.5971],"kerianne":[0,790,0.5795],"kisten":[0,29,0.0],"koretta":[0,14,0.0],"kyshia":[0,35,0.0],"lachandra":[0,496,0.5391],"latara":[0,1394,0.6289],"latreece":[0,175,0.4486],"latrise":[0,171,0.4466],"lesette":[0,55,0.0],"lohoma":[0,12,0.0],"luara":[0,71,0.0],"lynnai":[0,7,0.0],"lyzette":[0,344,0.5073],"magan":[0,2739,0.6875],"mallisa":[0,100,0.4],"mellissia":[0,57,0.0],"meshia":[0,216,0.4669],"misa":[0,751,0.5751],"montica":[0,37,0.0],"mylisa":[0,106,0.4051],"natonya":[0,203,0.4615],"necola":[0,64,0.0],"nikol":[0,874,0.5883],"onika":[0,680,0.5665],"ramonica":[0,118,0.4144],"rockelle":[0,252,0.4803],"rosha":[0,96,0.0],"roula":[0,51,0.0],"sabreena":[0,629,0.5597],"shalee":[0,1074,0.6062],"shaneen":[0,321,0.5013],"shantele":[0,238,0.4753],"shantella":[0,197,0.4589],"shawntell":[0,495,0.5389],"shondell":[262,237,0.2833],"stehanie":[0,207,0.4632],"taia":[0,585,0.5534],"tarasa":[0,28,0.0],"tarshia":[0,123,0.418],"temika":[0,911,0.5919],"tezra":[0,56,0.0],"tomia":[0,206,0.4628],"tongela":[0,79,0.0],"turina":[0,19,0.0],"tyrina":[0,132,0.4241],"zenja":[0,47,0.0],"abigayle":[5,6157,0.7573],"adrainne":[0,13,0.0],"alexandrea":[0,8641,0.7873],"alis":[5,476,0.5309],"alithia":[0,116,0.4129],"alnisa":[0,280,0.4894],"anabelia":[0,6,0.0],"ananda":[111,1624,0.6064],"ania":[0,3245,0.7022],"annesia":[0,21,0.0],"annitte":[0,6,0.0],"artavia":[0,448,0.5303],"brendella":[0,6,0.0],"brendy":[0,351,0.5091],"camielle":[0,269,0.486],"caprina":[0,69,0.0],"celines":[0,176,0.4491],"chani":[0,707,0.5699],"channin":[86,45,0.278],"chantea":[0,109,0.4075],"chantil":[0,221,0.4689],"chanty":[0,31,0.0],"charonda":[0,187,0.4544],"chrystel":[0,77,0.0],"contrina":[0,168,0.4451],"delethia":[0,11,0.0],"densie":[0,19,0.0],"devri":[0,102,0.4017],"dorinna":[0,6,0.0],"farrah":[7,11984,0.8153],"gaylynne":[0,6,0.0],"genel":[0,24,0.0],"iveliz":[0,147,0.4335],"janien":[0,6,0.0],"janique":[0,539,0.5463],"javonda":[0,278,0.4888],"jenessa":[0,3208,0.7012],"jessamyn":[5,727,0.569],"jessika":[0,5961,0.7551],"joesette":[0,18,0.0],"julana":[0,28,0.0],"katurah":[0,280,0.4894],"kaya":[647,10106,0.7578],"keeva":[0,657,0.5635],"kelaine":[0,6,0.0],"kelline":[0,6,0.0],"kenora":[0,112,0.4098],"killeen":[0,11,0.0],"klarissa":[0,2857,0.6912],"kristien":[41,264,0.4301],"kristol":[0,255,0.4813],"lachanda":[0,328,0.5032],"lagenia":[0,16,0.0],"lainey":[5,22669,0.8709],"lareina":[0,729,0.5725],"latice":[0,209,0.464],"lavonde":[0,6,0.0],"leshon":[80,28,0.3012],"maronda":[0,100,0.4],"merisa":[0,555,0.5489],"meshawn":[0,102,0.4017],"mistye":[0,15,0.0],"myranda":[0,4644,0.7334],"neeley":[0,412,0.523],"neko":[967,247,0.4913],"philisa":[0,17,0.0],"porcia":[0,167,0.4445],"raegina":[0,6,0.0],"rechel":[0,248,0.4789],"reinalda":[0,11,0.0],"reshelle":[0,11,0.0],"richa":[0,640,0.5612],"rondella":[0,6,0.0],"satrina":[0,104,0.4034],"savonia":[0,6,0.0],"serrina":[0,233,0.4735],"shantal":[0,1671,0.6446],"shauntelle":[0,195,0.458],"shawnelle":[0,117,0.4136],"shawnetta":[0,255,0.4813],"sheana":[0,623,0.5589],"shelline":[0,11,0.0],"shlonda":[0,118,0.4144],"shondi":[0,22,0.0],"stacyann":[0,90,0.0],"stassa":[0,6,0.0],"tamikia":[0,367,0.5129],"tamisha":[0,2188,0.668],"tammitha":[0,17,0.0],"tannetta":[0,6,0.0],"tannette":[0,23,0.0],"tashawn":[1516,273,0.5513],"taundra":[0,37,0.0],"teel":[0,18,0.0],"tephanie":[0,135,0.4261],"tiffanny":[0,374,0.5146],"timeka":[0,1000,0.6],"tyleen":[0,28,0.0],"vadra":[0,16,0.0],"verlana":[0,6,0.0],"adriennie":[0,5,0.0],"aleicia":[0,96,0.0],"alenna":[0,528,0.5445],"amaris":[681,9058,0.7419],"andreya":[0,1152,0.6123],"angelite":[0,5,0.0],"anglene":[0,5,0.0],"anglique":[0,43,0.0],"anisha":[0,4516,0.731],"artricia":[0,11,0.0],"arwen":[0,3138,0.6993],"avigail":[0,2128,0.6656],"barbett":[0,5,0.0],"bayyinah":[0,79,0.0],"becka":[0,338,0.5058],"bettine":[0,5,0.0],"caitlyn":[34,52531,0.9435],"carlana":[0,5,0.0],"carmenita":[0,17,0.0],"caroyn":[0,5,0.0],"casandr":[0,5,0.0],"charell":[0,135,0.4261],"cheryce":[0,44,0.0],"chontel":[0,62,0.0],"chontell":[0,16,0.0],"clarica":[0,11,0.0],"cobi":[673,254,0.4308],"coleeta":[0,5,0.0],"corsandra":[0,5,0.0],"courteney":[5,1124,0.6078],"cristee":[0,11,0.0],"crysti":[0,51,0.0],"dalaina":[0,238,0.4753],"dalane":[0,5,0.0],"damari":[5303,792,0.6586],"danalyn":[0,55,0.0],"daretha":[0,5,0.0],"dasha":[0,4045,0.7214],"dawnel":[0,22,0.0],"dawnielle":[0,401,0.5206],"deannia":[0,17,0.0],"deepa":[0,480,0.5362],"deia":[0,86,0.0],"demia":[0,662,0.5642],"demonica":[0,339,0.506],"deneva":[0,5,0.0],"desarae":[0,1794,0.6508],"devida":[0,43,0.0],"diahanna":[0,32,0.0],"dinean":[0,5,0.0],"dionnie":[0,18,0.0],"dondie":[0,5,0.0],"engrid":[0,21,0.0],"erricka":[0,154,0.4375],"eshell":[0,5,0.0],"franchell":[0,16,0.0],"franchette":[0,12,0.0],"geeta":[0,190,0.4558],"giuseppa":[0,22,0.0],"greda":[0,5,0.0],"halena":[0,335,0.505],"haylee":[20,30056,0.895],"heatherly":[0,86,0.0],"ilaria":[0,726,0.5722],"ivelise":[0,140,0.4292],"jadelyn":[0,2037,0.6618],"jadi":[0,181,0.4515],"jamese":[0,775,0.5779],"janya":[0,2358,0.6745],"jataun":[0,17,0.0],"javette":[0,54,0.0],"javita":[0,29,0.0],"jeninne":[0,10,0.0],"jennier":[0,247,0.4785],"jerena":[0,10,0.0],"joei":[0,446,0.5299],"joezette":[0,5,0.0],"johnnita":[0,33,0.0],"joia":[0,477,0.5357],"joo":[5,10,0.0],"joset":[11,5,0.0],"jozett":[0,5,0.0],"karlita":[0,101,0.4009],"karmyn":[0,2125,0.6655],"karoleigh":[0,5,0.0],"kashia":[0,623,0.5589],"katura":[0,196,0.4585],"kavita":[0,780,0.5784],"keirsten":[0,1370,0.6273],"keirstin":[0,547,0.5476],"kelin":[478,321,0.3473],"kerrilee":[0,15,0.0],"kerrilynn":[0,76,0.0],"kerryanne":[0,28,0.0],"keysa":[0,54,0.0],"kiara":[221,55726,0.9458],"kishia":[0,273,0.4872],"kristeena":[0,377,0.5153],"lacresa":[0,20,0.0],"lalena":[0,291,0.4928],"lanecia":[0,143,0.4311],"lashane":[10,106,0.3773],"lashanna":[0,806,0.5813],"lashea":[0,900,0.5908],"lasheila":[0,10,0.0],"latia":[0,2870,0.6916],"latonjia":[0,10,0.0],"latonza":[0,10,0.0],"latoyna":[0,181,0.4515],"latreace":[0,41,0.0],"latresha":[0,464,0.5333],"latyna":[0,5,0.0],"laurah":[0,27,0.0],"lawanza":[0,18,0.0],"leshan":[11,16,0.0],"letina":[0,84,0.0],"letrece":[0,15,0.0],"lettica":[0,15,0.0],"libra":[0,218,0.4677],"litisha":[0,256,0.4816],"lizza":[0,55,0.0],"ljiljana":[0,10,0.0],"loryssa":[0,5,0.0],"lycinda":[0,5,0.0],"lyrissa":[0,22,0.0],"lyshon":[0,5,0.0],"makeda":[0,1752,0.6487],"malikah":[84,943,0.553],"maral":[0,349,0.5086],"maressa":[0,468,0.534],"marilia":[0,28,0.0],"marinna":[0,415,0.5236],"marquel":[2699,248,0.6355],"marshalle":[0,5,0.0],"martisha":[0,406,0.5217],"maryum":[0,319,0.5008],"mashanda":[0,89,0.0],"maurissa":[0,639,0.5611],"mellisia":[0,10,0.0],"merchelle":[0,5,0.0],"micole":[0,577,0.5522],"mironda":[0,41,0.0],"mishel":[0,304,0.4966],"mitsie":[0,5,0.0],"monaca":[0,87,0.0],"muna":[0,1255,0.6197],"mylee":[0,4305,0.7268],"nalini":[0,345,0.5076],"nereyda":[0,1194,0.6154],"nini":[0,164,0.443],"nycole":[0,944,0.595],"olivera":[0,13,0.0],"ornella":[0,234,0.4738],"ozlem":[0,78,0.0],"padma":[0,51,0.0],"patches":[0,151,0.4358],"pene":[0,5,0.0],"phylicia":[0,2381,0.6754],"pietra":[0,182,0.452],"ptosha":[0,10,0.0],"quincie":[5,307,0.4908],"raqual":[0,59,0.0],"raschel":[0,51,0.0],"rayeann":[0,13,0.0],"rhond":[0,5,0.0],"ritu":[0,341,0.5066],"rocquel":[0,113,0.4106],"roianne":[0,5,0.0],"roquel":[0,68,0.0],"rumonda":[0,5,0.0],"sabah":[0,522,0.5435],"sandrine":[0,198,0.4593],"savita":[0,108,0.4067],"shai":[2254,1793,0.4018],"shaina":[18,11917,0.8141],"shalena":[0,966,0.597],"shalise":[0,411,0.5228],"shama":[0,451,0.5308],"shamane":[0,23,0.0],"shanann":[0,34,0.0],"shandell":[68,526,0.4912],"shandi":[0,1744,0.6483],"shandora":[0,66,0.0],"shanice":[5,9579,0.7959],"shanne":[37,48,0.0],"shannone":[0,25,0.0],"sharine":[0,110,0.4083],"sharnetta":[0,121,0.4166],"shavone":[0,473,0.535],"shawndel":[51,46,0.0],"shawndi":[0,5,0.0],"shawnell":[21,248,0.448],"shawntelle":[0,210,0.4644],"shawntina":[0,101,0.4009],"sheretha":[0,74,0.0],"sheriece":[0,47,0.0],"sherrene":[0,5,0.0],"shervon":[0,97,0.0],"sherwanda":[0,58,0.0],"shiretta":[0,5,0.0],"shiva":[518,284,0.3752],"shontay":[10,567,0.5427],"shonya":[0,117,0.4136],"shounda":[0,16,0.0],"silbia":[0,45,0.0],"sony":[287,39,0.4425],"sorena":[0,20,0.0],"sujatha":[0,5,0.0],"surina":[0,466,0.5337],"taisa":[0,146,0.4329],"talithia":[0,39,0.0],"tamesha":[0,1883,0.655],"tamina":[0,239,0.4757],"tanjie":[0,5,0.0],"tanzania":[0,667,0.5648],"teara":[0,1260,0.6201],"temeka":[5,1414,0.6282],"temre":[0,13,0.0],"terenna":[0,5,0.0],"terrilynne":[0,5,0.0],"tiah":[0,571,0.5513],"tiea":[0,75,0.0],"tijuanna":[0,26,0.0],"timeko":[0,37,0.0],"tinamaria":[0,10,0.0],"tiphany":[0,235,0.4742],"toka":[0,34,0.0],"tomaka":[0,29,0.0],"tondia":[0,11,0.0],"toniya":[0,140,0.4292],"torya":[0,60,0.0],"tunesia":[0,45,0.0],"tyona":[0,338,0.5058],"urszula":[0,5,0.0],"vanecia":[0,164,0.443],"varsha":[0,932,0.5939],"velisha":[0,47,0.0],"verlanda":[0,5,0.0],"vermonica":[0,5,0.0],"vernisa":[0,5,0.0],"veronic":[0,19,0.0],"veronicia":[0,10,0.0],"yahne":[0,5,0.0],"yamilett":[0,474,0.5352],"yanique":[0,367,0.5129],"youlander":[0,5,0.0],"zarah":[0,2804,0.6896],"zelina":[0,309,0.498],"jemal":[901,0,0.5909],"che":[2094,364,0.5777],"manolito":[111,0,0.4091],"dack":[50,0,0.0],"blue":[899,473,0.4111],"orenthal":[277,0,0.4885],"ricahrd":[207,0,0.4632],"antwain":[2358,0,0.6745],"daimon":[784,0,0.5789],"deanthony":[3334,0,0.7046],"jerred":[1569,0,0.6391],"roanld":[20,0,0.0],"shahid":[711,0,0.5704],"arif":[704,0,0.5695],"lemark":[20,0,0.0],"stefanos":[497,0,0.5393],"alcindor":[33,0,0.0],"antion":[190,0,0.4558],"ashish":[903,0,0.5911],"babak":[287,0,0.4916],"brandyn":[4751,442,0.6798],"brittain":[391,315,0.3155],"doanld":[41,0,0.0],"ehren":[1186,17,0.6073],"fernado":[145,0,0.4323],"nole":[190,5,0.4463],"shown":[75,6,0.0],"srinivas":[79,0,0.0],"tedric":[247,0,0.4785],"torben":[396,0,0.5195],"alok":[212,0,0.4653],"berto":[6,0,0.0],"bijan":[990,29,0.5845],"cartez":[429,0,0.5265],"chaka":[262,841,0.464],"christoopher":[6,0,0.0],"cowan":[175,0,0.4486],"criston":[102,19,0.3511],"darreck":[12,0,0.0],"deith":[6,0,0.0],"demario":[6333,17,0.7585],"ean":[6473,0,0.7622],"edan":[1495,174,0.5773],"erike":[11,17,0.0],"etan":[307,0,0.4974],"gerrad":[321,0,0.5013],"jemel":[724,0,0.5719],"jerid":[859,0,0.5868],"jonnathan":[1229,0,0.6179],"keoni":[3131,359,0.6357],"konstantine":[422,6,0.5189],"krik":[12,0,0.0],"lemonte":[105,0,0.4042],"malcon":[17,0,0.0],"nehemias":[1780,0,0.6501],"onassis":[18,0,0.0],"osama":[961,0,0.5965],"ramondo":[89,0,0.0],"rasheed":[4801,35,0.7316],"rashied":[122,0,0.4173],"redginald":[6,0,0.0],"roderich":[16,0,0.0],"rylan":[33753,6434,0.7734],"sameer":[3343,0,0.7048],"sandon":[225,0,0.4704],"shahn":[34,0,0.0],"spenser":[2985,372,0.627],"stehen":[29,0,0.0],"terriance":[24,0,0.0],"torrin":[914,100,0.5419],"yardley":[99,107,0.2404],"yoram":[6,0,0.0],"abrahan":[1039,0,0.6033],"alferdo":[10,0,0.0],"andren":[74,0,0.0],"antino":[126,0,0.4201],"antonne":[11,0,0.0],"antrone":[170,0,0.4461],"aul":[46,0,0.0],"bartly":[5,0,0.0],"beaumont":[309,0,0.498],"caine":[2050,0,0.6624],"casino":[15,0,0.0],"cassidy":[3684,60279,0.9058],"christoffer":[728,0,0.5724],"cj":[1396,133,0.5815],"dameion":[896,0,0.5905],"damont":[332,0,0.5042],"dannen":[5,0,0.0],"dannon":[503,92,0.4691],"darney":[5,0,0.0],"darrain":[13,0,0.0],"dawyne":[15,0,0.0],"dayan":[514,199,0.4114],"dejaun":[451,0,0.5308],"desean":[4007,11,0.7188],"deshane":[238,17,0.4492],"destin":[6013,745,0.6815],"edwrd":[15,0,0.0],"effrey":[57,0,0.0],"eleftherios":[180,0,0.4511],"han":[753,637,0.3405],"hari":[848,14,0.5776],"jad":[3678,0,0.7131],"jaison":[1769,0,0.6495],"jameel":[3021,18,0.6924],"jamerson":[643,0,0.5616],"jarrid":[1199,0,0.6158],"jerritt":[152,0,0.4364],"jerzy":[177,140,0.2793],"kavan":[878,0,0.5887],"kawika":[1202,0,0.616],"khristian":[2757,553,0.5864],"kirkpatrick":[25,0,0.0],"kolby":[11484,1308,0.7374],"kurtus":[28,0,0.0],"lavont":[16,0,0.0],"lerome":[5,0,0.0],"lidell":[10,0,0.0],"mahmoud":[2674,0,0.6854],"manish":[537,0,0.546],"manuelito":[136,0,0.4267],"micharl":[97,0,0.0],"mikhail":[4050,24,0.7178],"mikol":[55,0,0.0],"mohan":[312,0,0.4988],"myreon":[105,0,0.4042],"nadeem":[746,0,0.5745],"natan":[1562,0,0.6387],"pedrito":[45,0,0.0],"phalon":[15,37,0.0],"phoenix":[23520,15480,0.5538],"renan":[391,0,0.5184],"rhet":[229,0,0.472],"roberick":[5,0,0.0],"roggie":[10,0,0.0],"saeed":[1830,0,0.6525],"sajid":[547,0,0.5476],"seven":[3239,1138,0.5389],"sjon":[37,0,0.0],"tadeo":[5089,0,0.7413],"teo":[2668,0,0.6852],"thorin":[2166,0,0.6671],"timohy":[11,0,0.0],"travell":[852,0,0.5861],"traves":[306,0,0.4971],"tshombe":[42,0,0.0],"tyke":[212,0,0.4653],"tyrel":[3406,0,0.7064],"vernall":[5,0,0.0],"zain":[9395,317,0.7714],"zavier":[6823,5,0.7663],"omayra":[0,814,0.5821],"cinamon":[0,49,0.0],"barbarella":[0,25,0.0],"chelsa":[0,1107,0.6088],"dameron":[39,15,0.0],"joeli":[0,232,0.4731],"lashondra":[0,1097,0.608],"catrece":[0,47,0.0],"omaira":[0,406,0.5217],"chelsey":[65,31478,0.8979],"monifa":[0,416,0.5238],"shanetta":[0,913,0.5921],"trinisa":[0,13,0.0],"deshannon":[114,193,0.3127],"jamillah":[0,1048,0.6041],"lashauna":[0,732,0.5729],"lashonn":[0,32,0.0],"yuko":[0,157,0.4392],"demetriss":[0,27,0.0],"lashaune":[0,26,0.0],"nechole":[0,30,0.0],"nickol":[0,236,0.4746],"niurka":[0,260,0.483],"nolita":[0,90,0.0],"shontae":[10,842,0.5792],"anndee":[0,103,0.4026],"ayisha":[0,982,0.5984],"donique":[36,122,0.3395],"juila":[0,10,0.0],"miosotis":[0,76,0.0],"patrinia":[0,19,0.0],"phedra":[0,47,0.0],"philana":[0,332,0.5042],"sophina":[0,287,0.4916],"toia":[0,74,0.0],"tonica":[0,248,0.4789],"tuesdee":[0,15,0.0],"zobeida":[0,26,0.0],"chandria":[0,192,0.4567],"charelle":[0,429,0.5265],"chereese":[0,101,0.4009],"darsha":[0,88,0.0],"kellea":[0,35,0.0],"kjersti":[0,249,0.4792],"kristianna":[0,1178,0.6142],"lalanya":[0,79,0.0],"lanissa":[0,92,0.0],"leronda":[0,64,0.0],"michole":[0,142,0.4305],"naima":[0,4661,0.7337],"necol":[0,29,0.0],"neha":[0,4329,0.7273],"shawnya":[0,141,0.4298],"sholonda":[0,118,0.4144],"tangila":[0,22,0.0],"tondelayo":[0,17,0.0],"yumiko":[0,265,0.4846],"antwanette":[0,601,0.5558],"averi":[390,7718,0.7442],"bernina":[0,40,0.0],"charisa":[0,395,0.5193],"charnetta":[0,184,0.453],"christyn":[6,1103,0.6057],"faren":[0,273,0.4872],"francellia":[0,8,0.0],"ilysa":[0,18,0.0],"jennfier":[0,234,0.4738],"julliette":[0,112,0.4098],"kerre":[0,28,0.0],"landee":[0,8,0.0],"lanessa":[0,531,0.545],"laquisha":[0,2728,0.6872],"lashandra":[0,960,0.5965],"lashona":[0,419,0.5244],"lashune":[0,8,0.0],"lasonda":[0,47,0.0],"leshonda":[0,160,0.4408],"lucecita":[0,19,0.0],"mahealani":[0,619,0.5583],"megin":[0,293,0.4934],"mikelle":[77,912,0.5524],"nadege":[0,321,0.5013],"natisha":[0,1860,0.6539],"priya":[0,6461,0.7621],"serrena":[0,111,0.4091],"shamon":[659,140,0.4788],"shanah":[0,295,0.494],"sharena":[0,523,0.5437],"shaylene":[0,994,0.5995],"shenelle":[0,432,0.5271],"shenequa":[0,506,0.5408],"sheranda":[0,73,0.0],"shoni":[0,149,0.4346],"sonal":[0,592,0.5545],"tiffanee":[0,597,0.5552],"twaina":[0,13,0.0],"twanya":[0,60,0.0],"abril":[5,9123,0.7916],"africa":[0,1034,0.6029],"alyssia":[0,4899,0.738],"ambre":[0,676,0.566],"anouk":[0,381,0.5162],"antonya":[0,209,0.464],"cantrece":[0,24,0.0],"cassandre":[0,548,0.5478],"catrenia":[0,20,0.0],"chanese":[0,69,0.0],"channan":[0,12,0.0],"chastity":[0,9711,0.7975],"chelisa":[0,91,0.0],"chemene":[0,17,0.0],"chirsty":[0,85,0.0],"christna":[0,105,0.4042],"christyl":[0,142,0.4305],"cressida":[0,151,0.4358],"delinia":[0,7,0.0],"deshun":[1302,40,0.6069],"dinamarie":[0,56,0.0],"elsy":[0,1753,0.6488],"faedra":[0,12,0.0],"ghana":[0,12,0.0],"hiede":[0,12,0.0],"jaya":[28,3822,0.7119],"jodilynn":[0,47,0.0],"kathlena":[0,37,0.0],"keala":[22,842,0.5723],"keara":[0,4767,0.7356],"kersti":[0,62,0.0],"ketsy":[0,7,0.0],"kimyatta":[0,330,0.5037],"kirstina":[0,126,0.4201],"kristyna":[0,722,0.5717],"kyrie":[17187,4223,0.6953],"lashundra":[0,983,0.5985],"latreese":[0,49,0.0],"lelania":[0,66,0.0],"leshell":[0,26,0.0],"meika":[0,605,0.5564],"morayma":[0,119,0.4151],"nefertiti":[0,880,0.5889],"nicoll":[0,56,0.0],"nolana":[0,31,0.0],"ranessa":[0,72,0.0],"raquell":[0,201,0.4606],"reem":[0,3469,0.708],"schwanda":[0,99,0.0],"seanda":[0,14,0.0],"shalana":[0,574,0.5518],"shander":[0,7,0.0],"shandria":[0,303,0.4963],"shanya":[0,2156,0.6667],"sharmell":[0,32,0.0],"sharunda":[0,59,0.0],"shaton":[10,101,0.3722],"sherhonda":[0,145,0.4323],"tabithia":[0,165,0.4435],"taji":[504,131,0.4449],"tameca":[0,697,0.5686],"tamu":[5,285,0.484],"tamyko":[0,12,0.0],"traie":[0,7,0.0],"trcy":[0,12,0.0],"twina":[0,7,0.0],"wannette":[0,14,0.0],"wyndy":[0,28,0.0],"yasmina":[0,1533,0.6371],"aicha":[0,1164,0.6132],"alecha":[0,11,0.0],"aleena":[0,12096,0.8165],"aliesa":[0,17,0.0],"allissa":[0,2054,0.6625],"almadelia":[0,277,0.4885],"amani":[2779,13018,0.692],"anji":[0,63,0.0],"anngela":[0,51,0.0],"anupama":[0,177,0.4496],"aysha":[0,3077,0.6976],"bethney":[0,47,0.0],"brandalyn":[0,581,0.5528],"british":[31,294,0.4545],"bronte":[18,914,0.5824],"cantrice":[0,51,0.0],"catricia":[0,73,0.0],"charlin":[0,37,0.0],"charmell":[0,32,0.0],"chelise":[0,192,0.4567],"chiquetta":[0,71,0.0],"chiquitta":[0,168,0.4451],"christyann":[0,68,0.0],"chrstine":[0,11,0.0],"cinnamin":[0,6,0.0],"clariza":[0,179,0.4506],"clevette":[0,6,0.0],"colandra":[0,93,0.0],"coronda":[0,43,0.0],"cynnamon":[0,40,0.0],"dalonda":[0,63,0.0],"dechelle":[0,75,0.0],"desere":[0,193,0.4571],"deshone":[288,51,0.4299],"devlyn":[341,268,0.3118],"diandra":[0,1944,0.6577],"ennifer":[0,208,0.4636],"ereka":[0,203,0.4615],"fotini":[0,410,0.5226],"guenevere":[0,170,0.4461],"hilari":[0,226,0.4708],"hollyanne":[0,145,0.4323],"jenipher":[0,226,0.4708],"jillynn":[0,12,0.0],"kajuana":[0,118,0.4144],"katrece":[0,63,0.0],"katrinna":[0,88,0.0],"katryna":[0,841,0.585],"keba":[0,36,0.0],"kelsi":[0,10113,0.801],"kimako":[0,6,0.0],"kischa":[0,74,0.0],"kysha":[0,411,0.5228],"lacee":[0,2552,0.6814],"laconya":[0,97,0.0],"lakenya":[0,1683,0.6452],"lalania":[0,81,0.0],"lareese":[0,21,0.0],"larrisa":[0,330,0.5037],"latacha":[0,168,0.4451],"lateasha":[0,439,0.5285],"latoyia":[0,1578,0.6396],"ligaya":[0,65,0.0],"lucesita":[0,11,0.0],"manisha":[0,872,0.5881],"mardina":[0,6,0.0],"marines":[0,6,0.0],"marvenia":[0,6,0.0],"meko":[183,97,0.3199],"michelee":[0,37,0.0],"mickelle":[0,144,0.4317],"mieke":[0,255,0.4813],"moniece":[0,62,0.0],"myisha":[0,1551,0.6381],"myndi":[0,122,0.4173],"natausha":[0,290,0.4925],"nekita":[0,368,0.5132],"nichoel":[0,131,0.4235],"nikkol":[0,132,0.4241],"nubia":[0,2379,0.6753],"olisa":[0,56,0.0],"pascha":[0,214,0.4661],"rashaun":[3123,182,0.6651],"relanda":[0,6,0.0],"renina":[0,11,0.0],"reshonda":[0,299,0.4951],"ronnda":[0,6,0.0],"salima":[0,580,0.5527],"sariah":[0,9319,0.7939],"satonya":[0,89,0.0],"sejal":[0,895,0.5904],"seleste":[0,848,0.5857],"serenia":[0,46,0.0],"shahla":[0,99,0.0],"shaletha":[0,189,0.4553],"shanni":[0,28,0.0],"shantrell":[10,620,0.551],"sharis":[0,191,0.4562],"sharmyn":[0,12,0.0],"shauntay":[6,439,0.5225],"shewanna":[0,32,0.0],"shontelle":[0,257,0.482],"shunna":[0,76,0.0],"shwanda":[0,133,0.4248],"siomara":[0,716,0.571],"tacia":[0,103,0.4026],"tahra":[0,147,0.4335],"tameco":[0,16,0.0],"tanesha":[0,5307,0.745],"tanganyika":[0,113,0.4106],"tangerla":[0,11,0.0],"taniya":[0,5080,0.7412],"teffanie":[0,6,0.0],"teneka":[0,509,0.5413],"timia":[0,1164,0.6132],"tomica":[0,574,0.5518],"tomicka":[0,108,0.4067],"torra":[0,65,0.0],"trachelle":[0,100,0.4],"travette":[0,11,0.0],"trichelle":[0,165,0.4435],"trischa":[0,50,0.0],"tyara":[0,519,0.543],"vedra":[0,20,0.0],"venesia":[0,38,0.0],"vianca":[0,1885,0.6551],"yara":[24,6945,0.766],"adreana":[0,946,0.5952],"aimi":[0,207,0.4632],"aislinn":[0,5388,0.7463],"aleecia":[0,665,0.5646],"aletra":[0,11,0.0],"aliesha":[0,852,0.5861],"aliisa":[0,5,0.0],"almitra":[0,24,0.0],"alpa":[0,76,0.0],"anisia":[0,282,0.49],"anjana":[0,566,0.5506],"anke":[0,5,0.0],"anthoula":[0,11,0.0],"aqua":[0,173,0.4476],"arian":[6474,1567,0.6289],"arlynda":[0,10,0.0],"ashia":[0,2431,0.6772],"azeneth":[0,1478,0.6339],"batsheva":[0,2115,0.6651],"bethania":[0,229,0.472],"betrina":[0,15,0.0],"biafra":[0,5,0.0],"bobbyjo":[0,160,0.4408],"bridgete":[0,28,0.0],"bronica":[0,5,0.0],"carah":[0,876,0.5885],"careyann":[0,15,0.0],"cartina":[0,104,0.4034],"cassand":[0,11,0.0],"cathlena":[0,10,0.0],"cathyjo":[0,50,0.0],"chalanda":[0,54,0.0],"chama":[0,10,0.0],"chelesa":[0,180,0.4511],"chelsi":[0,4043,0.7213],"chelsia":[0,386,0.5173],"cheresa":[0,108,0.4067],"cherianne":[0,10,0.0],"cheronda":[0,164,0.443],"christinna":[0,75,0.0],"chundra":[0,58,0.0],"cilia":[0,48,0.0],"clinetta":[0,5,0.0],"contrena":[0,5,0.0],"danisha":[0,2421,0.6768],"danja":[0,5,0.0],"danyella":[0,440,0.5287],"danylle":[0,128,0.4214],"daughn":[0,5,0.0],"dawniel":[0,33,0.0],"deannette":[0,5,0.0],"deelynn":[0,5,0.0],"deida":[0,10,0.0],"deisha":[0,321,0.5013],"demetrise":[6,25,0.0],"deonda":[0,5,0.0],"derina":[0,11,0.0],"deserae":[0,1348,0.6259],"deshanna":[0,339,0.506],"deshawna":[0,646,0.562],"deshonda":[0,334,0.5047],"devonya":[0,41,0.0],"deyon":[538,11,0.5369],"dharma":[22,618,0.5419],"dinneen":[0,5,0.0],"elefteria":[0,15,0.0],"elycia":[0,443,0.5293],"enise":[0,15,0.0],"enrika":[0,71,0.0],"ericia":[0,449,0.5304],"fellicia":[0,5,0.0],"fleshia":[0,24,0.0],"gabi":[0,263,0.484],"galadriel":[0,219,0.4681],"gidgett":[0,26,0.0],"gisel":[0,2266,0.6711],"grainne":[0,92,0.0],"grasha":[0,5,0.0],"hedie":[0,5,0.0],"heidee":[0,66,0.0],"hollianne":[0,60,0.0],"ifetayo":[0,19,0.0],"indu":[0,15,0.0],"inelda":[0,5,0.0],"jadeen":[5,15,0.0],"jameelah":[0,1302,0.6229],"jamene":[0,5,0.0],"janin":[0,87,0.0],"jazette":[0,5,0.0],"jeannet":[0,30,0.0],"jenitha":[0,5,0.0],"jenniver":[0,36,0.0],"jennyfer":[0,1802,0.6512],"jerhonda":[0,10,0.0],"jeronda":[0,76,0.0],"jileen":[0,5,0.0],"jocqueline":[0,10,0.0],"joelee":[0,142,0.4305],"julea":[0,116,0.4129],"juniper":[233,19219,0.8475],"kadijah":[0,1458,0.6328],"kalie":[0,5292,0.7447],"kambra":[0,74,0.0],"kambria":[0,1633,0.6426],"kanitra":[0,125,0.4194],"kaori":[68,1309,0.5968],"katonia":[0,34,0.0],"kava":[0,15,0.0],"keily":[5,5161,0.7419],"kelita":[0,131,0.4235],"kellei":[0,5,0.0],"kenja":[0,51,0.0],"kesa":[0,135,0.4261],"kiely":[0,843,0.5852],"kimyetta":[0,130,0.4228],"kinya":[0,343,0.5071],"krystle":[44,12939,0.8199],"kyndal":[139,4649,0.7147],"lachone":[0,10,0.0],"lacrisha":[0,408,0.5221],"lacynda":[0,10,0.0],"lalainia":[0,5,0.0],"lalitha":[0,101,0.4009],"lanisa":[0,75,0.0],"lashaundra":[0,480,0.5362],"lashuna":[0,139,0.4286],"latascha":[0,45,0.0],"latetia":[0,10,0.0],"latongia":[0,10,0.0],"latonnia":[0,10,0.0],"leangela":[0,11,0.0],"leighan":[0,22,0.0],"lelanya":[0,5,0.0],"leshay":[0,172,0.4471],"letisa":[0,10,0.0],"letishia":[0,64,0.0],"licette":[0,17,0.0],"loreene":[0,5,0.0],"loronda":[0,10,0.0],"lucianna":[0,1863,0.654],"mandana":[0,43,0.0],"marcinda":[0,24,0.0],"marelin":[0,267,0.4853],"margurita":[0,11,0.0],"mariadel":[0,150,0.4352],"marshawn":[2625,78,0.6666],"maylee":[0,4348,0.7277],"mcihelle":[0,5,0.0],"meeghan":[0,235,0.4742],"meesha":[0,358,0.5108],"michellee":[0,52,0.0],"mikko":[798,25,0.5654],"minique":[0,15,0.0],"mishael":[444,178,0.3989],"montrese":[5,22,0.0],"monyette":[0,51,0.0],"mria":[0,15,0.0],"najah":[34,1850,0.6432],"natika":[0,293,0.4934],"neco":[187,38,0.391],"neesa":[0,140,0.4292],"neesha":[0,276,0.4882],"neshelle":[0,10,0.0],"niamh":[0,1574,0.6394],"nickcola":[0,5,0.0],"nickcole":[0,127,0.4208],"niesha":[0,2183,0.6678],"nikcole":[0,109,0.4075],"niketa":[0,371,0.5139],"nikisha":[0,1165,0.6133],"nikkii":[0,21,0.0],"nikkole":[0,840,0.5849],"ninnette":[0,5,0.0],"october":[87,1204,0.5803],"olinka":[0,21,0.0],"pallas":[0,98,0.0],"pamlia":[0,5,0.0],"ra":[216,20,0.4344],"raelee":[0,1854,0.6536],"raemarie":[0,11,0.0],"ramanda":[0,204,0.4619],"rane":[214,124,0.3202],"reanee":[0,15,0.0],"rechetta":[0,5,0.0],"relena":[0,106,0.4051],"robertina":[0,10,0.0],"rochon":[5,5,0.0],"romonica":[0,37,0.0],"ronnet":[0,5,0.0],"roshanna":[0,167,0.4445],"roshawnda":[0,272,0.4869],"roshun":[70,15,0.0],"rosonda":[0,5,0.0],"rotonia":[0,5,0.0],"rupa":[0,153,0.4369],"rustie":[0,44,0.0],"saeeda":[0,46,0.0],"sagrario":[0,137,0.4273],"salimah":[0,276,0.4882],"sarae":[0,448,0.5303],"senetra":[0,78,0.0],"shabnam":[0,435,0.5277],"shalisha":[0,353,0.5096],"shalynn":[0,1488,0.6345],"shamar":[6120,249,0.7311],"shandolyn":[0,40,0.0],"shanese":[0,753,0.5754],"shantae":[6,1583,0.6378],"shantee":[0,489,0.5379],"sharada":[0,61,0.0],"sharetha":[0,157,0.4392],"sharney":[0,5,0.0],"shauntell":[0,266,0.485],"shavonna":[0,799,0.5805],"shaynee":[0,58,0.0],"shellaine":[0,5,0.0],"shellina":[0,32,0.0],"shellisa":[0,5,0.0],"shenee":[0,263,0.484],"shennon":[0,10,0.0],"shiloh":[8183,14003,0.5486],"shirah":[0,291,0.4928],"shondia":[0,21,0.0],"shuntel":[0,140,0.4292],"sibrina":[0,5,0.0],"sieglinde":[0,16,0.0],"sirita":[0,27,0.0],"smantha":[0,325,0.5024],"snezana":[0,40,0.0],"sonnya":[0,16,0.0],"sonza":[0,5,0.0],"stefannie":[0,69,0.0],"stefeni":[0,10,0.0],"stephennie":[0,5,0.0],"sumaya":[0,2066,0.663],"syrina":[0,175,0.4486],"tamalia":[0,5,0.0],"tameeka":[0,939,0.5945],"tamijo":[0,10,0.0],"tammila":[0,5,0.0],"tammylee":[0,5,0.0],"tanara":[0,214,0.4661],"tany":[0,28,0.0],"tarja":[0,11,0.0],"tasa":[0,42,0.0],"taunie":[0,5,0.0],"terrissa":[0,5,0.0],"terrolyn":[0,5,0.0],"therease":[0,5,0.0],"tija":[5,114,0.3977],"timara":[0,633,0.5603],"tinesha":[0,762,0.5764],"tinisha":[0,1145,0.6118],"tischa":[0,57,0.0],"tiziana":[0,149,0.4346],"tolanda":[0,58,0.0],"tonesha":[0,359,0.511],"tonza":[0,5,0.0],"toosdhi":[0,12,0.0],"toronda":[0,59,0.0],"toyea":[0,5,0.0],"tracylynn":[0,15,0.0],"trana":[0,119,0.4151],"treisa":[0,15,0.0],"treka":[0,18,0.0],"tristy":[0,69,0.0],"troas":[0,5,0.0],"tselane":[0,10,0.0],"twanette":[0,31,0.0],"tymeka":[0,191,0.4562],"tzivia":[0,658,0.5636],"uranus":[0,5,0.0],"urena":[0,5,0.0],"ursulla":[0,10,0.0],"vawn":[0,5,0.0],"venicia":[0,194,0.4576],"wyndee":[0,5,0.0],"yashica":[0,1048,0.6041],"yulander":[0,10,0.0],"zaira":[0,4760,0.7355],"zerlina":[0,58,0.0],"zorana":[0,102,0.4017],"tige":[333,0,0.5045],"aldrin":[534,0,0.5455],"jermal":[754,0,0.5755],"aristede":[22,0,0.0],"ameer":[6362,0,0.7607],"jeremey":[3423,0,0.7069],"jeremie":[4289,70,0.7162],"jahmal":[1211,0,0.6166],"jasson":[1297,0,0.6226],"ketih":[94,0,0.0],"antwaun":[1461,5,0.6311],"demon":[845,0,0.5854],"jamahl":[734,0,0.5731],"shaine":[1013,222,0.5072],"teon":[1030,15,0.5952],"aran":[936,27,0.58],"dusten":[1374,0,0.6276],"fotios":[88,0,0.0],"jarrette":[142,0,0.4305],"jereme":[2226,0,0.6695],"shoan":[9,0,0.0],"cavan":[1681,0,0.6451],"demetreus":[238,0,0.4753],"kael":[3791,16,0.7131],"kedron":[145,5,0.4207],"mattheu":[118,0,0.4144],"nenad":[43,0,0.0],"sharrieff":[75,0,0.0],"teague":[1686,32,0.635],"theodoric":[60,0,0.0],"thorsten":[220,0,0.4685],"vikram":[2042,0,0.662],"yitzchak":[1399,0,0.6292],"antjuan":[852,0,0.5861],"cartrell":[152,0,0.4364],"dirrick":[40,0,0.0],"donovon":[660,0,0.5639],"jamall":[1513,0,0.636],"jarad":[2165,0,0.6671],"java":[20,17,0.0],"jerimy":[757,0,0.5758],"kelwin":[120,0,0.4158],"kenderick":[487,0,0.5375],"marquez":[5594,5,0.749],"megail":[7,0,0.0],"ondre":[275,0,0.4879],"parag":[199,0,0.4598],"seon":[216,0,0.4669],"sharad":[105,0,0.4042],"tomasz":[771,0,0.5774],"tremain":[970,0,0.5974],"adon":[918,0,0.5926],"altonio":[194,0,0.4576],"antwane":[880,0,0.5889],"anwar":[2723,103,0.6651],"asim":[1264,0,0.6203],"askia":[334,0,0.5047],"becket":[559,0,0.5495],"blandon":[77,0,0.0],"brenten":[879,0,0.5888],"cheval":[6,0,0.0],"christepher":[287,0,0.4916],"covey":[241,68,0.3884],"danen":[58,0,0.0],"darriell":[11,54,0.0],"demetricus":[31,0,0.0],"demitrus":[134,0,0.4254],"dontae":[5892,17,0.7521],"dony":[22,0,0.0],"duwan":[210,0,0.4644],"eduin":[362,0,0.5117],"ferlando":[91,0,0.0],"furnell":[27,0,0.0],"imari":[1061,2342,0.4861],"jameison":[109,0,0.4075],"jermey":[2697,0,0.6862],"jeromie":[585,0,0.5534],"jihad":[2035,5,0.6603],"kade":[22339,269,0.8605],"keone":[603,0,0.5561],"kerim":[373,0,0.5143],"kwan":[530,27,0.5226],"labron":[406,0,0.5217],"landen":[26602,238,0.8779],"lejon":[235,0,0.4742],"lesean":[351,10,0.4973],"mareo":[179,0,0.4506],"robbey":[6,0,0.0],"rogerick":[152,0,0.4364],"rohan":[11796,49,0.8113],"rolondo":[84,0,0.0],"schawn":[66,0,0.0],"sherif":[419,0,0.5244],"tarris":[92,0,0.0],"terrelle":[575,34,0.5258],"trone":[19,0,0.0],"ulrick":[85,0,0.0],"alcibiades":[5,0,0.0],"aldous":[158,0,0.4397],"aman":[2391,180,0.6343],"antar":[208,0,0.4636],"antonnio":[42,0,0.0],"antwann":[564,0,0.5503],"antwyne":[64,0,0.0],"anuj":[937,0,0.5943],"aramis":[2222,196,0.6218],"ashraf":[923,0,0.593],"brance":[312,0,0.4988],"carlvin":[5,0,0.0],"cinque":[339,0,0.506],"clinten":[93,0,0.0],"cutberto":[82,0,0.0],"daaron":[309,0,0.498],"dagan":[1076,10,0.6016],"dajuan":[3507,0,0.709],"damean":[468,0,0.534],"delrico":[258,0,0.4823],"delron":[70,0,0.0],"desmon":[1285,0,0.6218],"dev":[3020,0,0.696],"diondre":[1434,0,0.6313],"divid":[5,0,0.0],"doel":[25,0,0.0],"dorrel":[5,0,0.0],"dwanye":[42,0,0.0],"dyon":[206,5,0.4538],"ebon":[269,0,0.486],"edil":[58,5,0.0],"ehud":[5,0,0.0],"erez":[249,0,0.4792],"eryck":[169,0,0.4456],"gared":[227,0,0.4712],"giacinto":[5,0,0.0],"gilad":[330,0,0.5037],"greagory":[5,0,0.0],"hanns":[5,0,0.0],"haralambos":[266,0,0.485],"heiko":[22,0,0.0],"irfan":[667,0,0.5648],"issa":[2188,870,0.4988],"jaeson":[611,0,0.5572],"jamiel":[858,19,0.5758],"jaroslaw":[17,0,0.0],"jasin":[379,0,0.5157],"javiar":[59,0,0.0],"jeffrery":[5,0,0.0],"jeran":[492,8,0.5312],"jeremi":[1660,44,0.6296],"jeret":[223,0,0.4697],"jermel":[1341,5,0.6235],"jia":[214,1921,0.5991],"joffrey":[77,0,0.0],"johnmichael":[2258,0,0.6707],"joshuah":[2862,0,0.6913],"josphe":[5,0,0.0],"jotham":[663,0,0.5643],"jsoeph":[71,0,0.0],"juba":[12,0,0.0],"judas":[570,0,0.5512],"keoki":[508,0,0.5412],"keric":[79,0,0.0],"khaled":[2686,0,0.6858],"kimani":[1726,1664,0.3595],"kino":[263,0,0.484],"kole":[9623,65,0.7919],"kylan":[10224,1050,0.7349],"laith":[3342,0,0.7048],"laroi":[5,0,0.0],"lior":[803,310,0.4396],"llyod":[10,0,0.0],"lomar":[17,0,0.0],"marquin":[107,0,0.4059],"marvan":[5,0,0.0],"montee":[79,0,0.0],"montreal":[1108,0,0.6089],"neftaly":[371,170,0.3749],"nickolaos":[152,0,0.4364],"onald":[5,0,0.0],"orenthial":[29,0,0.0],"oseph":[67,0,0.0],"pino":[10,0,0.0],"ralphel":[25,0,0.0],"rayshawn":[3967,178,0.6924],"redrick":[26,0,0.0],"rhyan":[1496,3049,0.4907],"ronen":[1115,0,0.6095],"sanuel":[118,0,0.4144],"saulo":[665,0,0.5646],"shayn":[454,0,0.5314],"sheon":[5,5,0.0],"stephe":[16,0,0.0],"sushil":[25,0,0.0],"taiwan":[836,71,0.5452],"tevin":[11663,59,0.8097],"timur":[927,0,0.5934],"tirus":[16,0,0.0],"torence":[75,5,0.0],"trahern":[11,0,0.0],"tremont":[77,0,0.0],"trence":[25,0,0.0],"trevan":[986,0,0.5988],"trevino":[162,0,0.4419],"tyreese":[1962,49,0.6446],"varon":[10,0,0.0],"walid":[982,0,0.5984],"wyeth":[365,0,0.5125],"yu":[440,381,0.3124],"yvain":[5,0,0.0],"zaid":[7056,0,0.7697],"zen":[2528,552,0.5727],"shilo":[1128,1822,0.4286],"rewa":[0,161,0.4414],"chasity":[23,24381,0.8767],"chamaine":[0,63,0.0],"eboni":[5,6521,0.7623],"angeleque":[0,46,0.0],"aricka":[0,478,0.5359],"ashanti":[767,12486,0.7767],"dardi":[0,14,0.0],"alisande":[0,36,0.0],"errika":[0,122,0.4173],"juandalynn":[0,13,0.0],"saby":[0,32,0.0],"shadonna":[0,638,0.561],"chemaine":[0,23,0.0],"jennfer":[0,128,0.4214],"kyri":[413,512,0.3284],"requel":[0,53,0.0],"shakira":[0,8263,0.7834],"tonisha":[0,2224,0.6694],"angelicque":[0,11,0.0],"caprecia":[0,26,0.0],"labrina":[0,111,0.4091],"latondra":[0,174,0.4481],"loey":[0,38,0.0],"meeka":[0,467,0.5339],"noraida":[0,21,0.0],"quandra":[0,211,0.4649],"sabrine":[0,344,0.5073],"saunya":[0,55,0.0],"taneka":[0,1519,0.6363],"tiffni":[0,17,0.0],"zoraya":[0,546,0.5474],"ahna":[0,1145,0.6118],"allisha":[0,865,0.5874],"cresta":[0,236,0.4746],"dustina":[0,169,0.4456],"dyonne":[0,26,0.0],"jolina":[0,845,0.5854],"latissa":[0,119,0.4151],"myesha":[0,3392,0.7061],"nyree":[241,1726,0.578],"reeshemah":[0,121,0.4166],"shalini":[0,784,0.5789],"sherica":[0,648,0.5623],"syreeta":[0,1960,0.6585],"trinese":[0,25,0.0],"vernicia":[0,36,0.0],"donzaleigh":[0,9,0.0],"imani":[1353,27296,0.8493],"jamesa":[0,293,0.4934],"janal":[5,69,0.0],"karessa":[0,452,0.531],"katelyn":[157,133817,0.9988],"keyshia":[0,267,0.4853],"lakeysha":[0,1225,0.6176],"letoya":[0,282,0.49],"rashunda":[0,349,0.5086],"rekha":[0,212,0.4653],"shahida":[0,135,0.4261],"shalita":[0,405,0.5215],"sherrise":[0,64,0.0],"talesha":[0,622,0.5588],"tarhonda":[0,93,0.0],"tatanisha":[0,586,0.5536],"tenecia":[0,301,0.4957],"teralyn":[0,221,0.4689],"turi":[5,19,0.0],"almee":[0,134,0.4254],"alyshia":[0,1297,0.6226],"aniesa":[0,85,0.0],"antrice":[0,55,0.0],"aparna":[0,517,0.5427],"artrice":[0,93,0.0],"ashely":[70,6515,0.7556],"brandice":[0,1032,0.6027],"chanon":[26,62,0.0],"chereen":[0,26,0.0],"conswella":[0,186,0.4539],"daphnee":[0,407,0.5219],"detricia":[0,8,0.0],"erynn":[0,1834,0.6527],"halima":[0,2208,0.6688],"lakeesha":[0,1370,0.6273],"lakesia":[0,559,0.5495],"madhavi":[0,99,0.0],"maegan":[0,9170,0.7925],"merridith":[0,59,0.0],"miesha":[0,2552,0.6814],"nikko":[4373,177,0.7031],"oneka":[0,125,0.4194],"reshanda":[0,78,0.0],"saba":[88,1560,0.609],"shanika":[11,5599,0.7483],"sharissa":[0,502,0.5401],"shawnita":[0,258,0.4823],"sonta":[0,15,0.0],"terrah":[0,674,0.5657],"tifanie":[0,407,0.5219],"torii":[17,79,0.0],"yolaunda":[0,14,0.0],"ailisa":[0,12,0.0],"aleesha":[0,1942,0.6576],"aquarius":[177,235,0.2983],"arissa":[0,2458,0.6781],"arnessa":[0,32,0.0],"brae":[143,203,0.2979],"brantlee":[2323,230,0.62],"chesney":[157,2602,0.649],"daisha":[0,4669,0.7338],"danyette":[0,22,0.0],"danyiel":[0,89,0.0],"davinia":[0,79,0.0],"daydra":[0,18,0.0],"denicia":[0,257,0.482],"dianthe":[0,13,0.0],"eina":[0,7,0.0],"falana":[0,124,0.4187],"gianetta":[0,7,0.0],"gitel":[0,211,0.4649],"gretchin":[0,36,0.0],"halona":[0,370,0.5136],"jawan":[1453,12,0.628],"jennica":[0,1965,0.6587],"jesseca":[0,1498,0.6351],"jordanna":[0,839,0.5848],"kaisha":[0,1020,0.6017],"kareena":[0,1484,0.6343],"katria":[0,103,0.4026],"kennethia":[0,230,0.4723],"khrista":[0,228,0.4716],"kimya":[0,749,0.5749],"kistin":[0,7,0.0],"kiwana":[0,260,0.483],"kristyl":[0,211,0.4649],"kya":[13,6185,0.7569],"lanya":[0,871,0.588],"lashannon":[0,291,0.4928],"latausha":[0,285,0.491],"latavia":[0,2333,0.6736],"latunja":[0,7,0.0],"lesandra":[0,29,0.0],"lytonya":[0,7,0.0],"magen":[0,3346,0.7049],"mariaisabel":[0,625,0.5592],"markeita":[0,233,0.4735],"marki":[34,364,0.4756],"maronica":[0,13,0.0],"mashawn":[37,62,0.0],"meca":[0,45,0.0],"mercedita":[0,12,0.0],"moniqua":[0,409,0.5223],"natalya":[0,7096,0.7702],"nekole":[0,46,0.0],"noa":[2206,10457,0.6776],"nyssa":[0,1811,0.6516],"parul":[0,98,0.0],"pepsi":[0,44,0.0],"rasheda":[0,994,0.5995],"reesha":[0,81,0.0],"rigina":[0,7,0.0],"rolunda":[0,7,0.0],"rupal":[0,201,0.4606],"samala":[0,57,0.0],"sapna":[0,551,0.5482],"satanya":[0,28,0.0],"seandra":[0,59,0.0],"shalese":[0,209,0.464],"shamaine":[5,197,0.4497],"shanay":[45,1415,0.6134],"shanea":[0,1131,0.6107],"shaniece":[0,2004,0.6604],"sharronda":[0,148,0.4341],"shatonya":[0,220,0.4685],"sheronica":[0,157,0.4392],"sheyla":[0,4162,0.7239],"shonell":[0,50,0.0],"shonnon":[23,31,0.0],"shuntay":[0,114,0.4114],"shylo":[196,661,0.4524],"tahisha":[0,373,0.5143],"tahitia":[0,44,0.0],"takita":[0,300,0.4954],"talita":[0,257,0.482],"tangella":[0,22,0.0],"tashawna":[0,899,0.5908],"tessica":[0,229,0.472],"tifney":[0,35,0.0],"tondalayo":[0,7,0.0],"torino":[45,12,0.0],"tyesha":[0,4564,0.7319],"valenica":[0,22,0.0],"aaronette":[0,11,0.0],"afrika":[0,239,0.4757],"akiba":[5,87,0.0],"amorita":[0,73,0.0],"andrean":[5,20,0.0],"anganette":[0,19,0.0],"anica":[0,1097,0.608],"aruna":[0,538,0.5462],"ashli":[0,5718,0.7514],"ayana":[5,11888,0.8147],"brandelyn":[0,177,0.4496],"brocha":[0,837,0.5845],"calley":[0,948,0.5954],"carrisa":[0,547,0.5476],"catonya":[0,38,0.0],"chalonda":[0,128,0.4214],"chandy":[0,91,0.0],"chantaye":[0,6,0.0],"charrissa":[0,30,0.0],"cherity":[0,230,0.4723],"chermaine":[0,178,0.4501],"cherrita":[0,47,0.0],"chrishelle":[0,145,0.4323],"contina":[0,484,0.537],"coraline":[0,6370,0.7608],"cotrina":[0,46,0.0],"cristyn":[0,286,0.4913],"danyne":[0,6,0.0],"darshell":[0,46,0.0],"daveena":[0,139,0.4286],"dayana":[0,15205,0.8364],"deea":[0,6,0.0],"denika":[0,528,0.5445],"derrica":[0,558,0.5493],"deshea":[16,162,0.4096],"dianetta":[0,11,0.0],"donnielle":[0,96,0.0],"dream":[494,7043,0.7246],"elieen":[0,6,0.0],"ellisha":[0,303,0.4963],"embra":[0,6,0.0],"ericha":[0,258,0.4823],"eryka":[0,1171,0.6137],"faleshia":[0,20,0.0],"gabriell":[408,1290,0.4908],"grissel":[0,237,0.4749],"iana":[0,747,0.5747],"ieshia":[0,1650,0.6435],"ife":[0,202,0.4611],"indya":[0,1714,0.6468],"jaleh":[0,52,0.0],"jamellah":[0,22,0.0],"jamilla":[0,1175,0.614],"jaquel":[405,123,0.4177],"jeannelle":[0,75,0.0],"jeffifer":[0,170,0.4461],"jennifr":[0,106,0.4051],"jeny":[0,352,0.5093],"jerica":[0,3908,0.7184],"kajsa":[0,401,0.5206],"kawanis":[0,22,0.0],"keana":[0,2722,0.687],"kinita":[0,12,0.0],"kiya":[23,4075,0.7185],"kresha":[0,77,0.0],"kristey":[0,22,0.0],"kwana":[0,157,0.4392],"lachaun":[0,6,0.0],"lalaina":[0,54,0.0],"lametra":[0,57,0.0],"lashaon":[0,6,0.0],"lashonia":[0,42,0.0],"latrenia":[0,11,0.0],"lisett":[0,488,0.5377],"loreal":[0,1714,0.6468],"luv":[81,105,0.2562],"lywanda":[0,6,0.0],"magalis":[0,11,0.0],"makela":[0,292,0.4931],"maki":[510,211,0.4043],"mania":[0,18,0.0],"marisabel":[0,626,0.5593],"mariya":[0,2599,0.683],"marnia":[0,11,0.0],"martricia":[0,6,0.0],"matasha":[0,229,0.472],"michala":[0,1545,0.6378],"michellle":[0,11,0.0],"mija":[0,175,0.4486],"mundy":[0,11,0.0],"nasreen":[0,381,0.5162],"nedine":[0,6,0.0],"nefertari":[0,551,0.5482],"ngela":[0,53,0.0],"nicoe":[0,6,0.0],"nilka":[0,38,0.0],"nneka":[0,1178,0.6142],"nya":[0,5940,0.7548],"omaida":[0,19,0.0],"orit":[0,124,0.4187],"qiana":[0,2617,0.6836],"quiana":[0,3994,0.7203],"quintonia":[0,11,0.0],"raeshawn":[351,124,0.3956],"reshawn":[428,43,0.4858],"rockell":[0,211,0.4649],"ronice":[0,41,0.0],"sabryna":[0,810,0.5817],"sativa":[0,700,0.569],"seprina":[0,6,0.0],"shanine":[0,54,0.0],"shanique":[0,1689,0.6455],"shannell":[0,498,0.5394],"shantina":[0,366,0.5127],"shawnise":[0,92,0.0],"shawntae":[15,854,0.5777],"sheletta":[0,18,0.0],"shenice":[0,261,0.4833],"shenika":[0,1839,0.6529],"sheniqua":[0,703,0.5694],"shereta":[0,64,0.0],"sherrone":[0,6,0.0],"shilonda":[0,37,0.0],"shonetta":[0,39,0.0],"shonita":[0,122,0.4173],"shuana":[0,42,0.0],"shuntell":[0,64,0.0],"stanya":[0,16,0.0],"starlena":[0,146,0.4329],"stefanee":[0,203,0.4615],"stracy":[0,11,0.0],"tabaitha":[0,27,0.0],"talea":[0,868,0.5877],"tamber":[0,215,0.4665],"tamecia":[0,264,0.4843],"tanasha":[0,606,0.5565],"tanaya":[0,2113,0.665],"tanishia":[0,563,0.5501],"taree":[5,16,0.0],"tawonda":[0,82,0.0],"tawonna":[0,82,0.0],"terika":[0,638,0.561],"tiffane":[0,200,0.4602],"tiffeney":[0,53,0.0],"tirra":[0,6,0.0],"tondrea":[0,6,0.0],"toneka":[0,179,0.4506],"tonyette":[0,16,0.0],"topeka":[0,118,0.4144],"toyota":[0,6,0.0],"trayci":[0,6,0.0],"trema":[0,6,0.0],"trenae":[0,238,0.4753],"tyelise":[0,6,0.0],"tzipora":[0,1278,0.6213],"umeki":[0,17,0.0],"vielka":[0,179,0.4506],"virjinia":[0,21,0.0],"yamira":[0,184,0.453],"yitty":[0,1808,0.6514],"yocasta":[0,11,0.0],"zoi":[0,867,0.5876],"abigal":[0,797,0.5803],"afeni":[0,73,0.0],"airica":[0,141,0.4298],"alania":[0,717,0.5711],"alescia":[0,51,0.0],"alessa":[0,2900,0.6925],"alichia":[0,151,0.4358],"altonia":[7,5,0.0],"amera":[0,1093,0.6077],"anabela":[0,524,0.5439],"anathea":[0,24,0.0],"angil":[0,5,0.0],"aniko":[57,210,0.3817],"anite":[0,10,0.0],"anjelita":[0,66,0.0],"anjonette":[0,18,0.0],"anju":[0,186,0.4539],"annaliza":[0,230,0.4723],"aracelli":[0,373,0.5143],"arlesha":[0,51,0.0],"artisha":[0,478,0.5359],"avital":[0,906,0.5914],"avonna":[0,369,0.5134],"ayme":[0,328,0.5032],"basha":[0,179,0.4506],"batya":[0,712,0.5705],"bethellen":[0,5,0.0],"bradi":[0,637,0.5608],"bridey":[0,44,0.0],"brietta":[0,216,0.4669],"brijida":[0,10,0.0],"britany":[0,6536,0.7631],"brittin":[113,227,0.338],"cady":[20,2424,0.6721],"calie":[0,1537,0.6373],"calisa":[0,158,0.4397],"cama":[0,5,0.0],"camia":[0,586,0.5536],"caraline":[0,1092,0.6076],"carice":[0,25,0.0],"carlitta":[0,5,0.0],"catlin":[446,1055,0.4465],"catrinia":[0,74,0.0],"celenia":[0,220,0.4685],"celetha":[0,5,0.0],"celida":[0,32,0.0],"chae":[148,175,0.2719],"chandell":[0,104,0.4034],"chandre":[0,41,0.0],"channell":[0,391,0.5184],"chantez":[0,5,0.0],"charae":[0,204,0.4619],"charina":[0,110,0.4083],"charlea":[0,488,0.5377],"chelene":[0,22,0.0],"chelette":[0,16,0.0],"chemane":[0,5,0.0],"chennel":[0,62,0.0],"cheriann":[0,5,0.0],"cherrisse":[0,5,0.0],"chez":[114,27,0.3475],"chi":[554,746,0.3574],"chie":[0,32,0.0],"chiniqua":[0,86,0.0],"chirelle":[0,5,0.0],"chonte":[0,58,0.0],"chrisitne":[0,5,0.0],"cindya":[0,5,0.0],"colisa":[0,5,0.0],"cristan":[166,203,0.2824],"crystaline":[0,39,0.0],"cybil":[0,593,0.5546],"dalilah":[0,4935,0.7387],"danyetta":[0,104,0.4034],"dashell":[42,47,0.0],"dawndi":[0,5,0.0],"dawnett":[0,5,0.0],"daysi":[0,1502,0.6353],"deaundra":[120,318,0.3836],"debrina":[0,95,0.0],"delaila":[0,309,0.498],"denesha":[0,907,0.5915],"dequita":[0,86,0.0],"derricka":[0,909,0.5917],"deshell":[0,15,0.0],"desmona":[0,27,0.0],"destini":[0,7836,0.7788],"deyna":[0,164,0.443],"dipti":[0,11,0.0],"dlana":[0,5,0.0],"dorota":[0,49,0.0],"dustee":[0,84,0.0],"dwyla":[0,11,0.0],"earlisa":[0,5,0.0],"efthimia":[0,40,0.0],"egina":[0,5,0.0],"erikia":[0,10,0.0],"erinne":[0,243,0.4771],"euginia":[0,5,0.0],"evangelita":[0,5,0.0],"fabrienne":[0,42,0.0],"falesha":[0,165,0.4435],"fancie":[0,11,0.0],"fatema":[0,885,0.5894],"feleicia":[0,10,0.0],"felicea":[0,17,0.0],"galina":[0,373,0.5143],"genya":[0,25,0.0],"giuditta":[0,5,0.0],"giulietta":[0,676,0.566],"gwenivere":[0,760,0.5762],"haleh":[0,25,0.0],"heatherlyn":[0,11,0.0],"heida":[0,29,0.0],"hera":[0,878,0.5887],"hidi":[0,57,0.0],"hydi":[0,26,0.0],"icela":[0,166,0.444],"indria":[0,50,0.0],"irit":[0,5,0.0],"jacine":[0,5,0.0],"jacqualyne":[0,5,0.0],"jadean":[5,15,0.0],"jadonna":[0,10,0.0],"jamaine":[1334,16,0.6186],"jamise":[0,151,0.4358],"jannah":[0,2418,0.6767],"jasha":[0,249,0.4792],"jeanea":[0,24,0.0],"jeannifer":[0,79,0.0],"jenica":[0,2070,0.6632],"jennifere":[0,10,0.0],"jerrica":[0,4482,0.7303],"jesika":[0,1275,0.6211],"jevonda":[0,5,0.0],"jodyann":[0,5,0.0],"joelie":[0,218,0.4677],"jogina":[0,5,0.0],"joleigh":[0,1007,0.6006],"jonya":[0,43,0.0],"juliza":[0,544,0.5471],"juwan":[3769,10,0.7136],"kady":[0,2873,0.6917],"kailey":[10,27089,0.8863],"kaira":[0,3183,0.7006],"kalisha":[0,1293,0.6223],"kalliopi":[0,308,0.4977],"karah":[0,3274,0.703],"karisma":[0,2122,0.6653],"katasha":[0,417,0.524],"katieann":[0,417,0.524],"katrisha":[0,191,0.4562],"kaylan":[783,4389,0.6303],"keidra":[0,372,0.5141],"keischa":[0,5,0.0],"keiya":[0,42,0.0],"kessa":[0,443,0.5293],"kiela":[0,277,0.4885],"kijana":[264,137,0.3428],"kijuana":[0,76,0.0],"kjerstin":[0,248,0.4789],"kresta":[0,160,0.4408],"krish":[4656,10,0.7322],"kristalyn":[0,600,0.5556],"kristn":[0,22,0.0],"kuwana":[0,5,0.0],"lada":[0,106,0.4051],"lakendra":[0,2289,0.6719],"lakisa":[0,263,0.484],"lamesa":[0,15,0.0],"lamika":[0,372,0.5141],"lanesha":[0,900,0.5908],"laquan":[2466,217,0.6303],"lasanya":[0,15,0.0],"lashanya":[0,17,0.0],"lasheryl":[0,5,0.0],"lashonya":[0,52,0.0],"lashurn":[0,5,0.0],"latisia":[0,71,0.0],"latoi":[0,88,0.0],"latracy":[0,5,0.0],"latresia":[0,53,0.0],"latronda":[0,87,0.0],"latsha":[0,44,0.0],"latundra":[0,15,0.0],"latunia":[0,17,0.0],"latwanda":[0,37,0.0],"laurae":[0,5,0.0],"laurea":[0,17,0.0],"leandria":[0,253,0.4806],"ledawn":[0,10,0.0],"leina":[0,766,0.5768],"leshelle":[0,17,0.0],"lilibeth":[0,1654,0.6437],"londrea":[0,5,0.0],"luzviminda":[0,12,0.0],"maelee":[0,1508,0.6357],"malanda":[0,12,0.0],"maleka":[0,398,0.52],"malgorzata":[0,81,0.0],"marae":[0,237,0.4749],"marfa":[0,10,0.0],"marideth":[0,11,0.0],"mariliz":[0,17,0.0],"mariola":[0,15,0.0],"marivell":[0,5,0.0],"marliese":[0,25,0.0],"marshon":[627,15,0.5484],"massiel":[0,797,0.5803],"maticia":[0,5,0.0],"maytee":[0,33,0.0],"meagen":[0,1182,0.6145],"merrideth":[0,48,0.0],"michelli":[0,18,0.0],"mikayla":[11,56339,0.95],"milisia":[0,5,0.0],"minelva":[0,5,0.0],"mirasol":[0,28,0.0],"miwa":[0,60,0.0],"monai":[0,184,0.453],"moneka":[0,266,0.485],"monina":[0,10,0.0],"montressa":[0,29,0.0],"morning":[0,164,0.443],"myia":[0,2266,0.6711],"nasha":[0,443,0.5293],"nathasha":[0,330,0.5037],"nekki":[0,5,0.0],"nicco":[1146,5,0.6096],"niccola":[0,10,0.0],"nicia":[0,59,0.0],"nicolia":[0,18,0.0],"niema":[0,507,0.541],"nikka":[0,410,0.5226],"nili":[0,249,0.4792],"omeka":[0,106,0.4051],"phadra":[0,15,0.0],"philisha":[0,109,0.4075],"quetzy":[0,5,0.0],"quintessa":[0,426,0.5259],"raechell":[0,67,0.0],"raini":[53,516,0.4997],"rasheeda":[10,1713,0.6435],"rashele":[0,41,0.0],"raysa":[0,121,0.4166],"rebakah":[0,133,0.4248],"rechele":[0,5,0.0],"remonica":[0,36,0.0],"robia":[0,20,0.0],"ronja":[0,63,0.0],"rouchelle":[0,5,0.0],"sabria":[0,975,0.5978],"sahnnon":[0,18,0.0],"saidah":[0,330,0.5037],"sakura":[0,1725,0.6474],"samanda":[0,264,0.4843],"santosha":[0,90,0.0],"saronda":[0,11,0.0],"sauna":[0,5,0.0],"schlonda":[0,18,0.0],"schwanna":[0,35,0.0],"sentoria":[0,66,0.0],"serenna":[0,206,0.4628],"shajuan":[56,142,0.3294],"shajuana":[0,241,0.4764],"shalona":[0,108,0.4067],"shalone":[0,17,0.0],"shania":[0,15744,0.8394],"shanlee":[0,34,0.0],"shantale":[0,125,0.4194],"shantih":[0,5,0.0],"shaquita":[5,2391,0.6745],"sharette":[0,22,0.0],"sharlita":[0,22,0.0],"sharnita":[0,186,0.4539],"shauntina":[0,36,0.0],"shavna":[0,32,0.0],"shawon":[165,40,0.3721],"shawona":[0,43,0.0],"shayni":[0,10,0.0],"shayvonne":[0,25,0.0],"shelette":[0,5,0.0],"shelon":[0,20,0.0],"shely":[0,31,0.0],"shennan":[0,5,0.0],"shereece":[0,92,0.0],"shevella":[0,5,0.0],"shevonda":[0,54,0.0],"shewana":[0,19,0.0],"shilla":[0,10,0.0],"shindana":[0,17,0.0],"shirron":[0,5,0.0],"shonnetta":[0,5,0.0],"shontea":[0,17,0.0],"shontee":[0,41,0.0],"shulamis":[0,230,0.4723],"shulonda":[0,25,0.0],"shuronda":[0,87,0.0],"shwana":[0,21,0.0],"shyrene":[0,5,0.0],"sindia":[0,192,0.4567],"siobhain":[0,22,0.0],"sojourner":[0,179,0.4506],"solia":[0,59,0.0],"sonali":[0,1336,0.6252],"stephinie":[0,80,0.0],"tabiatha":[0,23,0.0],"taffney":[0,10,0.0],"tahira":[0,1281,0.6215],"taiwana":[0,111,0.4091],"takeisha":[0,1050,0.6042],"takisha":[0,2058,0.6627],"tamboura":[12,5,0.0],"tameika":[0,1535,0.6372],"tammmy":[0,5,0.0],"tamyka":[0,136,0.4267],"tanell":[0,52,0.0],"taneshia":[0,1309,0.6234],"tangier":[0,15,0.0],"tanyetta":[0,40,0.0],"tanyika":[0,70,0.0],"tanzi":[0,10,0.0],"tashua":[0,47,0.0],"tavish":[759,5,0.5728],"temekia":[0,259,0.4827],"teonna":[0,1136,0.6111],"terrice":[15,15,0.0],"terronda":[0,5,0.0],"tiese":[0,24,0.0],"tiessa":[0,5,0.0],"tiffnie":[0,5,0.0],"tiiu":[0,5,0.0],"tilisa":[0,23,0.0],"timber":[860,1464,0.4241],"timisha":[0,295,0.494],"tinette":[0,5,0.0],"tishawn":[228,52,0.3985],"tiye":[0,263,0.484],"tobye":[0,5,0.0],"toinetta":[0,18,0.0],"tonija":[0,5,0.0],"tonique":[0,207,0.4632],"tonise":[0,5,0.0],"tonyetta":[0,94,0.0],"toschia":[0,5,0.0],"toshika":[0,67,0.0],"toshua":[55,129,0.3176],"toyya":[0,22,0.0],"tracei":[0,5,0.0],"tracianne":[0,5,0.0],"tresca":[0,5,0.0],"tyease":[0,29,0.0],"tyronica":[0,145,0.4323],"tziporah":[0,1062,0.6052],"urica":[0,19,0.0],"valincia":[0,63,0.0],"vanisa":[0,12,0.0],"venisha":[0,266,0.485],"vered":[0,10,0.0],"wendyann":[0,10,0.0],"xylina":[0,217,0.4673],"yasha":[58,212,0.3818],"yasmeen":[0,6063,0.7565],"toriano":[1198,0,0.6157],"ngai":[66,0,0.0],"keefer":[315,0,0.4997],"jeromey":[416,0,0.5238],"kofi":[1506,10,0.6319],"omarr":[488,0,0.5377],"jermain":[2004,0,0.6604],"mcgarrett":[22,0,0.0],"cheston":[839,0,0.5848],"brannen":[376,0,0.515],"dimitris":[516,0,0.5425],"jarid":[1402,0,0.6293],"keifer":[1149,0,0.6121],"kyriakos":[150,0,0.4352],"antonine":[53,0,0.0],"aries":[4339,2323,0.4981],"bray":[701,56,0.5332],"cosmos":[44,0,0.0],"daemon":[1746,0,0.6484],"delvon":[1140,0,0.6114],"gibran":[1186,0,0.6148],"jedediah":[3253,0,0.7025],"jerame":[563,0,0.5501],"jolyon":[31,0,0.0],"keenon":[581,0,0.5528],"kwane":[211,0,0.4649],"rahsaan":[1614,6,0.6395],"aldrick":[253,0,0.4806],"bradey":[714,9,0.5647],"bradon":[2055,0,0.6626],"cheney":[124,209,0.3166],"cristofer":[4242,0,0.7255],"dimetrius":[156,0,0.4386],"dustyn":[2653,60,0.6715],"geremy":[1278,0,0.6213],"ibn":[927,0,0.5934],"imran":[4320,0,0.7271],"jajuan":[2441,11,0.6749],"jaremy":[200,0,0.4602],"jayde":[395,8498,0.7547],"jeanclaude":[367,0,0.5129],"jerico":[889,8,0.5853],"jerrard":[253,0,0.4806],"khevin":[14,0,0.0],"kwasi":[703,0,0.5694],"marcius":[14,0,0.0],"ram":[1074,0,0.6062],"renauld":[39,0,0.0],"rossano":[8,0,0.0],"shaunn":[76,0,0.0],"alprentice":[17,0,0.0],"antawn":[592,0,0.5545],"auturo":[17,0,0.0],"chace":[5358,140,0.729],"chadly":[7,0,0.0],"darain":[42,0,0.0],"davion":[12968,216,0.8105],"deverick":[98,0,0.0],"dewon":[411,0,0.5228],"diogenes":[153,0,0.4369],"dracy":[17,0,0.0],"estaban":[234,0,0.4738],"hisham":[902,0,0.591],"jermy":[717,0,0.5711],"kassim":[387,0,0.5175],"keffer":[7,0,0.0],"keif":[25,0,0.0],"keon":[9014,152,0.7793],"ketan":[352,0,0.5093],"khalif":[1715,0,0.6469],"kollin":[2738,5,0.6864],"kostantinos":[241,0,0.4764],"mahesh":[214,0,0.4661],"mazin":[759,0,0.576],"muhammed":[2533,0,0.6807],"olu":[7,0,0.0],"osiris":[3391,868,0.5779],"prashant":[278,0,0.4888],"rogan":[2235,135,0.6365],"ryszard":[33,0,0.0],"sekou":[1083,0,0.6069],"shaan":[2443,0,0.6776],"shariff":[572,0,0.5515],"stamatios":[23,0,0.0],"tushar":[240,0,0.476],"vaugh":[12,0,0.0],"yehoshua":[2348,0,0.6741],"adnan":[2882,0,0.6919],"aiden":[252629,2120,0.9917],"akil":[2130,0,0.6657],"angelito":[473,0,0.535],"antwione":[128,0,0.4214],"atom":[1023,0,0.602],"barin":[32,27,0.0],"braun":[372,0,0.5141],"brayden":[134973,1058,0.9922],"chrisotpher":[108,0,0.4067],"coray":[54,0,0.0],"culley":[80,0,0.0],"dakar":[28,0,0.0],"danthony":[1612,0,0.6415],"darrek":[106,0,0.4051],"davian":[6575,105,0.7529],"dawud":[991,0,0.5992],"deitrich":[119,0,0.4151],"dejan":[317,13,0.4839],"dondre":[1640,0,0.643],"donjuan":[71,0,0.0],"dontrell":[2809,16,0.6863],"dorell":[136,0,0.4267],"edwar":[297,0,0.4946],"eon":[404,0,0.5213],"erec":[6,0,0.0],"favio":[598,0,0.5553],"georgios":[1048,0,0.6041],"gunner":[22874,22,0.8711],"hadrian":[779,0,0.5783],"helder":[230,0,0.4723],"iram":[902,102,0.5394],"jacen":[2449,0,0.6778],"jacent":[12,0,0.0],"jamaal":[8516,45,0.7824],"kaleb":[85483,202,0.9843],"kegan":[3832,237,0.6799],"keiron":[444,0,0.5295],"kief":[12,0,0.0],"koy":[927,34,0.5754],"mano":[23,0,0.0],"mansa":[295,0,0.494],"marcas":[239,0,0.4757],"marcelus":[307,0,0.4974],"markanthony":[1784,0,0.6503],"maurico":[257,0,0.482],"mico":[138,18,0.388],"nabeel":[1156,0,0.6126],"octavian":[1428,0,0.6309],"pavan":[557,0,0.5492],"rajendra":[76,0,0.0],"ramses":[3365,0,0.7054],"ranier":[199,0,0.4598],"ricko":[55,0,0.0],"rodrigues":[105,0,0.4042],"rohit":[1898,0,0.6557],"rondale":[509,0,0.5413],"roselio":[12,0,0.0],"ryker":[39175,546,0.9072],"shalako":[6,0,0.0],"shunn":[16,0,0.0],"talion":[52,0,0.0],"tao":[417,10,0.5138],"tarvis":[401,0,0.5206],"terriss":[12,0,0.0],"torren":[824,39,0.5607],"travas":[199,0,0.4598],"trebor":[504,0,0.5405],"vikas":[518,0,0.5429],"wei":[283,79,0.4001],"zakary":[5595,0,0.7496],"zeljko":[6,0,0.0],"zubin":[355,0,0.51],"aeron":[620,65,0.5133],"ahren":[956,0,0.5961],"alexey":[549,19,0.5324],"alim":[813,0,0.582],"andru":[1209,0,0.6165],"andrw":[51,0,0.0],"anish":[3095,0,0.6981],"antuane":[131,0,0.4235],"arafat":[179,0,0.4506],"aragorn":[98,0,0.0],"arrin":[95,69,0.2566],"arrington":[501,233,0.3912],"arvind":[570,0,0.5512],"asad":[1910,0,0.6562],"assaf":[11,0,0.0],"atthew":[194,0,0.4576],"bejan":[28,0,0.0],"bekim":[161,0,0.4414],"bernadino":[17,0,0.0],"blu":[459,302,0.3476],"bran":[232,0,0.4731],"brentwood":[5,0,0.0],"can":[543,0,0.547],"carmelito":[5,0,0.0],"carrick":[594,0,0.5548],"cheyney":[5,28,0.0],"chivas":[134,0,0.4254],"christof":[59,0,0.0],"damein":[1040,0,0.6034],"dammon":[79,0,0.0],"daruis":[180,0,0.4511],"daxton":[14090,0,0.8298],"deatrick":[25,0,0.0],"demetres":[97,6,0.3791],"denmark":[5,0,0.0],"derak":[74,0,0.0],"dewarren":[97,0,0.0],"diangelo":[699,0,0.5689],"django":[292,0,0.4931],"donivon":[28,0,0.0],"donnovan":[546,0,0.5474],"drummond":[20,0,0.0],"duarte":[20,0,0.0],"edjuan":[20,0,0.0],"emir":[5066,5,0.7403],"euclides":[20,0,0.0],"exavier":[1302,0,0.6229],"fareed":[715,0,0.5709],"fitzpatrick":[154,0,0.4375],"galvester":[5,0,0.0],"gandalf":[5,0,0.0],"gantt":[5,0,0.0],"garbiel":[26,0,0.0],"gavan":[982,0,0.5984],"gerall":[5,0,0.0],"gero":[5,0,0.0],"giovani":[7467,5,0.7742],"hristopher":[194,0,0.4576],"hyung":[5,0,0.0],"jalon":[2447,74,0.6603],"jamaul":[528,0,0.5445],"japheth":[1353,0,0.6263],"jasn":[224,0,0.47],"jaycen":[1304,5,0.621],"jericho":[5704,359,0.7117],"jeriel":[1028,0,0.6024],"jonmichael":[1414,0,0.6301],"jonus":[187,0,0.4544],"juddson":[261,0,0.4833],"kemuel":[585,0,0.5534],"kenyan":[958,10,0.591],"kian":[12653,105,0.8144],"kilian":[2512,27,0.6737],"kivin":[20,0,0.0],"kwabena":[701,0,0.5691],"kwaku":[483,0,0.5368],"kyley":[76,1596,0.6153],"lizardo":[20,0,0.0],"majid":[716,0,0.571],"marcio":[378,0,0.5155],"marico":[399,0,0.5202],"markee":[724,110,0.5072],"markis":[904,0,0.5912],"marqui":[307,59,0.43],"marshaun":[925,0,0.5932],"martinus":[29,0,0.0],"maurey":[5,0,0.0],"mcihael":[98,0,0.0],"mikele":[66,65,0.2133],"mithcell":[215,0,0.4665],"montique":[34,41,0.0],"munir":[804,0,0.5811],"murali":[5,0,0.0],"neeraj":[327,0,0.5029],"niraj":[331,0,0.504],"nthony":[61,0,0.0],"osiel":[2872,0,0.6916],"pavlos":[132,0,0.4241],"perryn":[20,6,0.0],"petre":[5,0,0.0],"pinchas":[1141,0,0.6115],"pj":[201,0,0.4606],"praveen":[217,0,0.4673],"ramell":[425,0,0.5257],"ramzi":[838,10,0.5788],"remone":[21,0,0.0],"rodel":[108,0,0.4067],"ronzell":[87,0,0.0],"santoi":[5,0,0.0],"satish":[28,0,0.0],"shaka":[692,142,0.4848],"sharief":[187,0,0.4544],"sharod":[1311,0,0.6235],"shawen":[11,0,0.0],"sheldrick":[36,0,0.0],"siddhartha":[523,0,0.5437],"suen":[5,0,0.0],"tage":[580,0,0.5527],"tarren":[436,230,0.3697],"tarrin":[113,97,0.2499],"tauras":[10,0,0.0],"tavo":[10,0,0.0],"tawan":[348,60,0.4453],"tayari":[72,13,0.0],"toben":[128,0,0.4214],"toddrick":[412,0,0.523],"trinell":[5,40,0.0],"tyren":[2157,5,0.6654],"tywan":[1259,15,0.6137],"uhuru":[28,5,0.0],"urian":[289,0,0.4922],"vareck":[13,0,0.0],"vishal":[1729,0,0.6476],"wai":[174,88,0.3212],"yoav":[403,0,0.5211],"yoel":[4122,0,0.723],"yousef":[6654,5,0.7641],"zon":[15,0,0.0],"ayanna":[0,16163,0.8417],"jesenia":[6,4749,0.7345],"bree":[17,9225,0.7917],"jurea":[0,34,0.0],"nkenge":[0,122,0.4173],"tango":[0,33,0.0],"tonika":[0,853,0.5862],"yessenia":[12,7436,0.7732],"molina":[0,222,0.4693],"veleka":[0,146,0.4329],"kamilah":[0,6395,0.7612],"ta":[30,207,0.4148],"ashaki":[0,252,0.4803],"lakiesha":[0,1897,0.6556],"njeri":[0,293,0.4934],"treneice":[0,49,0.0],"acacia":[0,4237,0.7254],"aliya":[0,10743,0.8062],"nataki":[0,140,0.4292],"shaniqua":[0,5117,0.7418],"amoreena":[0,170,0.4461],"kemba":[0,169,0.4456],"tomorrow":[0,260,0.483],"yecenia":[5,1230,0.6158],"katisha":[0,774,0.5777],"latawnya":[0,54,0.0],"shamone":[22,213,0.4298],"sukari":[0,91,0.0],"anneka":[0,840,0.5849],"brittani":[22,11754,0.8127],"jessenia":[0,5406,0.7466],"laketha":[0,303,0.4963],"lateshia":[0,682,0.5668],"latika":[0,474,0.5352],"naeemah":[0,641,0.5614],"tamicka":[0,420,0.5246],"taneisha":[0,2038,0.6618],"amarilys":[0,327,0.5029],"anel":[264,1869,0.5834],"atara":[0,1182,0.6145],"chianti":[20,388,0.4965],"nakisha":[0,2459,0.6782],"ngina":[0,77,0.0],"sakinah":[0,1039,0.6033],"tarisha":[0,237,0.4749],"tene":[0,324,0.5021],"laticha":[0,146,0.4329],"lekesha":[0,671,0.5653],"lekisha":[0,914,0.5922],"myriah":[0,1980,0.6593],"natoshia":[0,454,0.5314],"shalina":[0,547,0.5476],"shameka":[0,6191,0.7584],"shamona":[0,220,0.4685],"sharai":[0,465,0.5335],"sherika":[0,1967,0.6588],"thembi":[0,35,0.0],"tristine":[5,201,0.4515],"tunisha":[0,301,0.4957],"tyhesha":[0,118,0.4144],"akua":[0,545,0.5473],"anjanet":[0,9,0.0],"annastacia":[0,495,0.5389],"atasha":[0,215,0.4665],"ayodele":[256,98,0.3687],"billyjo":[34,44,0.0],"brandis":[84,730,0.5221],"charnise":[0,215,0.4665],"earica":[0,37,0.0],"gesenia":[0,160,0.4408],"kenyette":[0,100,0.4],"larrissa":[0,348,0.5083],"lashanta":[0,509,0.5413],"malkia":[0,269,0.486],"niambi":[0,260,0.483],"shalinda":[0,270,0.4863],"shemeka":[0,1563,0.6388],"shulamit":[0,87,0.0],"stori":[10,1384,0.6243],"tameshia":[0,541,0.5466],"tanecia":[0,289,0.4922],"tashina":[0,1758,0.649],"tomeca":[0,159,0.4403],"toscha":[0,59,0.0],"umeka":[0,109,0.4075],"zakia":[16,1714,0.6416],"allyssa":[0,6670,0.7648],"aryn":[415,2916,0.6167],"atalaya":[0,235,0.4742],"brandilyn":[0,664,0.5644],"candina":[0,44,0.0],"chanti":[0,110,0.4083],"conswello":[0,35,0.0],"corianne":[0,379,0.5157],"damia":[0,1141,0.6115],"darchell":[0,8,0.0],"donika":[0,402,0.5208],"ebonie":[0,2638,0.6843],"fatisha":[0,62,0.0],"heaven":[430,29789,0.8833],"jessicca":[0,558,0.5493],"joseline":[0,3765,0.7152],"julena":[0,104,0.4034],"kaitlin":[75,57319,0.9505],"kamili":[0,62,0.0],"karriann":[0,21,0.0],"katrese":[0,129,0.4221],"lachonda":[0,44,0.0],"lashonta":[0,238,0.4753],"lataya":[0,769,0.5772],"lateisha":[0,1019,0.6016],"latessa":[0,282,0.49],"latorsha":[0,84,0.0],"lorenna":[0,141,0.4298],"makayla":[153,107474,0.9986],"mariadelcarmen":[0,512,0.5419],"mariama":[0,2099,0.6644],"maricar":[0,50,0.0],"marshea":[0,165,0.4435],"meganne":[0,294,0.4937],"mikita":[0,124,0.4187],"miyosha":[0,13,0.0],"monnica":[0,66,0.0],"nandi":[0,841,0.585],"nyesha":[0,1531,0.637],"rashanda":[0,695,0.5684],"rasheen":[1390,95,0.5938],"rotonya":[0,8,0.0],"ryann":[751,11173,0.7639],"shamika":[6,5061,0.7401],"sharnee":[0,102,0.4017],"shatara":[0,1479,0.634],"shey":[146,135,0.2545],"soyini":[0,59,0.0],"tacha":[0,63,0.0],"tahirah":[0,925,0.5932],"tangle":[0,8,0.0],"taniesha":[0,775,0.5779],"tarica":[0,99,0.0],"tarnisha":[0,397,0.5198],"tawona":[0,78,0.0],"teleshia":[0,54,0.0],"tiffine":[0,156,0.4386],"tiombe":[0,100,0.4],"traice":[5,13,0.0],"tristana":[0,25,0.0],"uhura":[0,32,0.0],"vaishali":[0,204,0.4619],"abena":[0,656,0.5634],"andraya":[0,1064,0.6054],"annisha":[0,169,0.4456],"apple":[0,464,0.5333],"arnisha":[0,308,0.4977],"arrica":[0,54,0.0],"ashanta":[6,597,0.5505],"ashante":[172,1458,0.5746],"autum":[0,3299,0.7037],"camisha":[0,993,0.5994],"chandel":[0,143,0.4311],"claritza":[0,445,0.5297],"crescent":[0,110,0.4083],"dancy":[0,14,0.0],"dandria":[0,88,0.0],"darsey":[0,55,0.0],"dichelle":[0,18,0.0],"ebonee":[0,1662,0.6441],"eirene":[0,237,0.4749],"gaea":[0,51,0.0],"gordana":[0,40,0.0],"jasa":[0,229,0.472],"joela":[0,17,0.0],"jonique":[0,427,0.5261],"kafi":[0,106,0.4051],"kalandra":[0,201,0.4606],"kaysi":[0,594,0.5548],"kindel":[5,66,0.0],"lacricia":[0,22,0.0],"lakshmi":[0,859,0.5868],"lanisha":[0,1240,0.6187],"laquana":[0,763,0.5765],"lateefah":[0,617,0.5581],"lationa":[0,12,0.0],"latish":[0,121,0.4166],"latriece":[0,183,0.4525],"lekeisha":[0,785,0.579],"leshun":[21,7,0.0],"lizeth":[9,9082,0.7909],"maliaka":[0,62,0.0],"marchand":[5,7,0.0],"mashona":[0,24,0.0],"meiko":[135,112,0.2615],"mishon":[68,28,0.0],"moneeka":[0,23,0.0],"my":[239,1093,0.5128],"myoshi":[0,42,0.0],"nikkia":[12,1441,0.6272],"omyra":[0,17,0.0],"onica":[0,259,0.4827],"pedra":[0,12,0.0],"phillina":[0,46,0.0],"phoenicia":[0,122,0.4173],"radha":[0,924,0.5931],"ricquel":[0,134,0.4254],"rondelle":[6,13,0.0],"schronda":[0,25,0.0],"shaheen":[570,143,0.4562],"shalunda":[0,108,0.4067],"shamara":[0,1660,0.644],"sharece":[0,217,0.4673],"sharlonda":[0,45,0.0],"shauntae":[5,689,0.5642],"shauntee":[0,152,0.4364],"shawonda":[0,123,0.418],"shemika":[0,1454,0.6325],"shonica":[0,72,0.0],"shontai":[0,17,0.0],"shontrell":[0,51,0.0],"starlina":[0,57,0.0],"takesha":[0,977,0.598],"talissa":[0,406,0.5217],"tarasha":[0,52,0.0],"tashana":[0,847,0.5856],"tashima":[0,347,0.5081],"tata":[0,143,0.4311],"tawanya":[0,54,0.0],"tekesha":[0,221,0.4689],"tiffanni":[0,110,0.4083],"tiffanye":[0,54,0.0],"tihesha":[0,49,0.0],"tishana":[0,233,0.4735],"toisha":[0,7,0.0],"tomeika":[0,252,0.4803],"trasa":[0,16,0.0],"travonda":[0,37,0.0],"treniece":[0,185,0.4534],"abeer":[194,596,0.4372],"aiesha":[0,1273,0.621],"allisyn":[0,1072,0.606],"amberlee":[0,2072,0.6633],"amberley":[0,824,0.5832],"aprel":[0,70,0.0],"aretina":[0,34,0.0],"ariela":[0,3663,0.7128],"ashlei":[0,2044,0.6621],"asma":[0,2618,0.6836],"ayoka":[0,46,0.0],"betzabel":[0,50,0.0],"biatris":[0,17,0.0],"burgundy":[0,277,0.4885],"cardia":[0,13,0.0],"carmille":[0,6,0.0],"catie":[0,1027,0.6023],"catreena":[0,6,0.0],"cerrie":[0,6,0.0],"chanise":[0,333,0.5045],"chantalle":[0,286,0.4913],"chasta":[0,313,0.4991],"chastidy":[0,542,0.5468],"chea":[15,80,0.0],"cherece":[0,42,0.0],"cherida":[0,28,0.0],"chinyere":[0,585,0.5534],"christey":[0,40,0.0],"cija":[0,6,0.0],"corette":[0,6,0.0],"cresha":[0,46,0.0],"crystalynn":[0,235,0.4742],"cynthnia":[0,6,0.0],"damali":[0,338,0.5058],"daphen":[0,6,0.0],"darshana":[0,92,0.0],"delishia":[0,43,0.0],"demika":[0,239,0.4757],"dereka":[0,422,0.5251],"divya":[16,2646,0.6809],"donnica":[0,93,0.0],"dorianna":[0,116,0.4129],"erryn":[0,105,0.4042],"esmerelda":[0,749,0.5749],"feliscia":[0,6,0.0],"giovana":[0,872,0.5881],"gretchan":[0,34,0.0],"henrika":[0,13,0.0],"idania":[0,604,0.5562],"jamiann":[0,6,0.0],"jamika":[0,1379,0.6279],"jessamy":[0,245,0.4778],"jillisa":[0,118,0.4144],"juanika":[0,53,0.0],"kanita":[0,204,0.4619],"karimah":[0,588,0.5539],"keecha":[0,12,0.0],"keema":[0,57,0.0],"keshea":[0,22,0.0],"khristin":[0,103,0.4026],"kianna":[0,8604,0.7869],"kindell":[52,174,0.3625],"kinshasa":[6,116,0.3968],"kjersten":[0,305,0.4969],"krisie":[0,52,0.0],"lakina":[0,178,0.4501],"lakysha":[0,162,0.4419],"lashella":[0,11,0.0],"latacia":[0,38,0.0],"laterra":[0,257,0.482],"latissha":[0,28,0.0],"lativia":[0,61,0.0],"latoynia":[0,6,0.0],"latrish":[0,86,0.0],"lavitta":[0,6,0.0],"leeandra":[0,339,0.506],"lerhonda":[0,19,0.0],"leshaun":[235,28,0.4325],"lizandra":[0,507,0.541],"lubna":[0,360,0.5113],"lucelenia":[0,16,0.0],"makala":[5,3398,0.7053],"makesha":[0,473,0.535],"makita":[0,309,0.498],"marshae":[0,584,0.5533],"mashonda":[0,120,0.4158],"melantha":[0,29,0.0],"melika":[0,400,0.5204],"monesha":[0,420,0.5246],"monik":[0,142,0.4305],"monque":[0,60,0.0],"nekisha":[0,411,0.5228],"nikesha":[0,464,0.5333],"november":[0,967,0.5971],"nyasha":[0,645,0.5619],"orlantha":[0,11,0.0],"rahel":[0,497,0.5393],"rainbow":[0,588,0.5539],"ratasha":[0,80,0.0],"renisha":[0,735,0.5733],"riza":[0,90,0.0],"saleema":[0,202,0.4611],"seanette":[0,11,0.0],"shalean":[0,11,0.0],"shalondra":[0,134,0.4254],"shamelle":[0,23,0.0],"shaneka":[0,2686,0.6858],"shannetta":[0,51,0.0],"shantra":[0,14,0.0],"sharesa":[0,115,0.4121],"shawnese":[0,173,0.4476],"shefali":[0,296,0.4943],"shellyann":[0,76,0.0],"sherease":[0,28,0.0],"shondelle":[0,6,0.0],"shonelle":[0,22,0.0],"shontia":[0,330,0.5037],"shoshanah":[0,193,0.4571],"stacha":[0,38,0.0],"susanah":[0,34,0.0],"tahara":[0,299,0.4951],"tahesha":[0,165,0.4435],"taiya":[0,692,0.568],"tajma":[0,53,0.0],"tamaran":[0,6,0.0],"tamecka":[0,127,0.4208],"tanea":[0,745,0.5744],"tanina":[0,130,0.4228],"tanyanika":[0,49,0.0],"tarika":[0,381,0.5162],"tashika":[0,569,0.551],"taysha":[0,692,0.568],"tenaya":[0,1008,0.6007],"tenicia":[0,139,0.4286],"teronda":[0,19,0.0],"tiffannie":[0,182,0.452],"tikita":[0,62,0.0],"tiphani":[0,266,0.485],"tomarra":[0,43,0.0],"tomeco":[0,21,0.0],"tylette":[0,11,0.0],"tylisa":[0,132,0.4241],"tyrese":[8933,148,0.7787],"valeka":[0,23,0.0],"yanna":[0,591,0.5543],"yatisha":[0,6,0.0],"yuvonka":[0,6,0.0],"aarti":[0,437,0.5281],"abraxas":[58,5,0.0],"adabel":[0,26,0.0],"adrienn":[7,27,0.0],"ahuva":[0,1821,0.6521],"aindrea":[0,16,0.0],"aishia":[0,403,0.5211],"alandria":[0,481,0.5364],"alisan":[0,81,0.0],"alischa":[0,11,0.0],"alisen":[0,213,0.4657],"aliyah":[43,47811,0.9351],"allyse":[0,741,0.574],"altovise":[0,144,0.4317],"amissa":[0,21,0.0],"analilia":[0,440,0.5287],"anamari":[0,108,0.4067],"anjanett":[0,5,0.0],"anjennette":[0,5,0.0],"anysia":[0,338,0.5058],"aracelly":[0,128,0.4214],"arnesia":[0,67,0.0],"asimina":[0,11,0.0],"assata":[0,693,0.5681],"ayelet":[0,932,0.5939],"ayonna":[0,1203,0.6161],"bernessa":[0,5,0.0],"betzy":[0,974,0.5977],"biatriz":[0,21,0.0],"camesha":[0,457,0.532],"carna":[0,5,0.0],"carynn":[0,84,0.0],"cerri":[0,5,0.0],"chalena":[0,31,0.0],"chalette":[0,11,0.0],"chalyce":[0,27,0.0],"chantille":[0,68,0.0],"charesse":[0,38,0.0],"chariti":[0,229,0.472],"charlanda":[0,10,0.0],"charlottle":[0,5,0.0],"charra":[0,51,0.0],"chasidy":[0,2269,0.6712],"chauntae":[0,126,0.4201],"chelese":[0,46,0.0],"chelsy":[0,3303,0.7038],"chene":[11,64,0.0],"chenille":[0,207,0.4632],"cheramie":[0,46,0.0],"cherrish":[0,588,0.5539],"cheryse":[0,21,0.0],"chontelle":[0,5,0.0],"christalyn":[0,296,0.4943],"chyvonne":[0,26,0.0],"collenn":[0,5,0.0],"corelle":[0,5,0.0],"corisa":[0,139,0.4286],"daedra":[0,34,0.0],"danay":[0,684,0.567],"danina":[0,41,0.0],"darshan":[757,11,0.5688],"davana":[0,44,0.0],"dawnyell":[0,39,0.0],"decia":[0,23,0.0],"demetricia":[0,5,0.0],"denetrius":[0,10,0.0],"derica":[0,658,0.5636],"derika":[0,440,0.5287],"deshanta":[0,61,0.0],"deveta":[0,5,0.0],"dilcia":[0,224,0.47],"dindi":[0,5,0.0],"eisha":[0,304,0.4966],"evi":[0,427,0.5261],"fionna":[0,732,0.5729],"fitima":[0,16,0.0],"garri":[0,5,0.0],"gea":[0,61,0.0],"gidgette":[0,5,0.0],"gloribel":[0,45,0.0],"grecia":[0,6113,0.7573],"gretal":[0,5,0.0],"hakima":[0,29,0.0],"hallee":[0,1402,0.6293],"hawanya":[0,22,0.0],"hopi":[0,5,0.0],"idaliz":[0,118,0.4144],"ilicia":[0,40,0.0],"indigo":[1107,3700,0.5668],"iracema":[0,61,0.0],"isolde":[0,327,0.5029],"iwona":[0,33,0.0],"jackelin":[0,1397,0.629],"jamea":[0,491,0.5382],"jamica":[0,801,0.5807],"jandi":[0,155,0.4381],"jandy":[7,89,0.0],"jazmine":[99,38136,0.9141],"jenn":[0,28,0.0],"jenniferann":[0,110,0.4083],"jessyca":[0,1280,0.6214],"jillinda":[0,10,0.0],"johari":[284,401,0.332],"juleigh":[0,64,0.0],"justy":[0,10,0.0],"kaitlyn":[232,166341,0.9986],"kanisha":[0,2603,0.6831],"karesa":[0,64,0.0],"karisha":[0,360,0.5113],"katalina":[0,8002,0.7806],"katara":[0,1436,0.6314],"katrell":[467,43,0.4959],"katrisa":[0,5,0.0],"kaylynne":[0,632,0.5601],"kealy":[0,422,0.5251],"keisher":[0,11,0.0],"kellylynn":[0,10,0.0],"kenra":[0,30,0.0],"kenyata":[306,820,0.4445],"kenyotta":[20,130,0.3772],"kewanna":[0,256,0.4816],"kiann":[10,15,0.0],"kierston":[13,849,0.5782],"kilolo":[0,16,0.0],"kimyata":[0,153,0.4369],"kish":[5,15,0.0],"kishla":[0,5,0.0],"kisia":[0,5,0.0],"korynn":[0,480,0.5362],"kristana":[0,41,0.0],"krystel":[0,1125,0.6102],"kwanza":[42,227,0.4101],"kyesha":[0,760,0.5762],"lachrisha":[0,143,0.4311],"ladetra":[0,54,0.0],"lalenia":[0,5,0.0],"lamesha":[0,579,0.5525],"lanitra":[0,196,0.4585],"laria":[0,139,0.4286],"laronica":[0,123,0.418],"lashawndra":[0,256,0.4816],"lashown":[0,5,0.0],"latandra":[0,98,0.0],"latanyia":[0,5,0.0],"latechia":[0,26,0.0],"latichia":[0,13,0.0],"latinia":[0,10,0.0],"latrinia":[0,26,0.0],"latysha":[0,124,0.4187],"lawanika":[0,5,0.0],"laytoya":[0,142,0.4305],"leatricia":[0,5,0.0],"lotoya":[0,466,0.5337],"lucritia":[0,15,0.0],"lusila":[0,27,0.0],"lyana":[0,873,0.5882],"lynnete":[0,5,0.0],"macarena":[0,303,0.4963],"madhuri":[0,58,0.0],"maika":[241,492,0.3846],"makiba":[0,42,0.0],"malise":[0,30,0.0],"marbella":[0,2304,0.6725],"marhonda":[0,12,0.0],"mariacristina":[0,73,0.0],"marianthi":[0,24,0.0],"marilina":[0,5,0.0],"mariska":[0,1010,0.6009],"marshe":[0,71,0.0],"marykatherine":[0,821,0.5829],"mekeba":[0,30,0.0],"melisaa":[0,27,0.0],"menyon":[0,12,0.0],"meshel":[0,5,0.0],"miel":[11,195,0.4381],"mikka":[0,566,0.5506],"mishia":[0,5,0.0],"monise":[0,30,0.0],"nailah":[0,4736,0.7351],"nakesha":[0,1050,0.6042],"nalo":[51,12,0.0],"natachia":[0,29,0.0],"natalene":[0,5,0.0],"natonia":[0,28,0.0],"natricia":[0,15,0.0],"neelam":[0,316,0.4999],"nekol":[0,5,0.0],"ngozi":[26,512,0.5198],"nicohle":[0,15,0.0],"nikelle":[0,112,0.4098],"nikia":[246,3727,0.6753],"nilaja":[0,51,0.0],"nunzia":[0,5,0.0],"ocean":[4030,3474,0.4162],"oneika":[0,94,0.0],"orlenda":[0,5,0.0],"parisa":[0,1074,0.6062],"parminder":[21,15,0.0],"patrika":[0,22,0.0],"pertina":[0,11,0.0],"pessy":[0,1157,0.6127],"pnina":[0,32,0.0],"porsche":[0,2115,0.6651],"rael":[405,189,0.3782],"recina":[0,5,0.0],"reshea":[0,15,0.0],"retonya":[0,5,0.0],"rhinda":[0,5,0.0],"rochanda":[0,62,0.0],"roechelle":[0,11,0.0],"ronae":[0,163,0.4424],"ronise":[0,24,0.0],"rosylin":[0,5,0.0],"rozlynn":[0,723,0.5718],"rushell":[0,39,0.0],"rya":[19,1766,0.6434],"safiyya":[0,196,0.4585],"sahar":[29,2410,0.6694],"sahron":[0,5,0.0],"sarada":[0,39,0.0],"sarra":[0,662,0.5642],"saudah":[0,16,0.0],"sebrinia":[0,5,0.0],"sedina":[0,38,0.0],"seleana":[0,45,0.0],"shadia":[0,775,0.5779],"shalah":[0,138,0.428],"shalaine":[0,116,0.4129],"shalayne":[0,64,0.0],"shandal":[0,10,0.0],"shandia":[0,27,0.0],"shanequa":[0,1874,0.6546],"shanetha":[0,113,0.4106],"shangaleza":[0,5,0.0],"shantrice":[0,473,0.535],"sharisa":[0,103,0.4026],"sharonna":[0,154,0.4375],"shaunti":[0,50,0.0],"shavona":[0,271,0.4866],"shawneequa":[0,90,0.0],"shekita":[0,300,0.4954],"shelbra":[0,5,0.0],"shellea":[0,10,0.0],"shelsea":[0,653,0.563],"sheneka":[0,822,0.583],"shequita":[0,602,0.5559],"sheresse":[0,11,0.0],"sherette":[0,24,0.0],"sherlita":[0,25,0.0],"sherray":[0,36,0.0],"sherunda":[0,5,0.0],"sheshe":[0,5,0.0],"shinda":[0,5,0.0],"shondale":[77,14,0.0],"shonique":[0,77,0.0],"shulanda":[0,21,0.0],"shuwanda":[0,26,0.0],"sonnette":[0,10,0.0],"staphanie":[0,206,0.4628],"stepheni":[0,151,0.4358],"story":[149,1778,0.6062],"sukina":[0,10,0.0],"sumer":[0,1520,0.6364],"suprenia":[0,5,0.0],"taba":[0,5,0.0],"tacoma":[204,42,0.3965],"takeya":[0,640,0.5612],"takiyah":[0,1964,0.6586],"talise":[0,391,0.5184],"tamaka":[0,182,0.452],"tameica":[0,32,0.0],"tameyka":[0,5,0.0],"tanicia":[0,144,0.4317],"tannisha":[0,66,0.0],"tanuja":[0,5,0.0],"taralynn":[0,431,0.5269],"taramarie":[0,36,0.0],"tarrah":[0,1074,0.6062],"tashema":[0,255,0.4813],"tashona":[0,188,0.4548],"tawanne":[0,5,0.0],"tear":[0,10,0.0],"teffani":[0,5,0.0],"tehani":[0,566,0.5506],"tekeisha":[0,149,0.4346],"telesha":[0,120,0.4158],"temeko":[0,5,0.0],"teneshia":[0,558,0.5493],"tenika":[0,1029,0.6025],"teona":[0,967,0.5971],"terase":[0,10,0.0],"terisha":[0,155,0.4381],"tertia":[0,10,0.0],"tetra":[0,22,0.0],"teva":[16,144,0.3967],"thrisa":[0,5,0.0],"tiffinay":[0,37,0.0],"tiffonie":[0,15,0.0],"tifinie":[0,11,0.0],"tikisha":[0,278,0.4888],"timesha":[0,498,0.5394],"timica":[0,107,0.4059],"tishanna":[0,63,0.0],"tojuana":[0,11,0.0],"tomora":[0,5,0.0],"tonaya":[0,11,0.0],"toniqua":[0,122,0.4173],"tonisia":[0,5,0.0],"tonnetta":[0,16,0.0],"topaz":[6,300,0.4874],"tram":[0,455,0.5316],"trellany":[0,10,0.0],"triscia":[0,19,0.0],"trishalana":[0,5,0.0],"tuere":[0,103,0.4026],"twonda":[0,5,0.0],"tyan":[222,68,0.377],"tynika":[0,312,0.4988],"tyrona":[0,10,0.0],"uilani":[0,111,0.4091],"umekia":[0,15,0.0],"urina":[0,5,0.0],"velvett":[0,5,0.0],"yadhira":[0,1334,0.625],"yakima":[0,261,0.4833],"yawanda":[0,5,0.0],"yedda":[0,5,0.0],"yesina":[0,35,0.0],"yolana":[0,5,0.0],"yulunda":[0,11,0.0],"yvalondra":[0,5,0.0],"zenetta":[0,15,0.0],"zuri":[753,15895,0.8061],"diallo":[796,5,0.5771],"khari":[4652,1898,0.5421],"kobie":[1523,438,0.5114],"shaft":[103,0,0.4026],"damani":[2565,638,0.5615],"jarmaine":[381,0,0.5162],"oronde":[292,0,0.4931],"sundiata":[120,0,0.4158],"deacon":[11038,0,0.8086],"amiri":[2830,1354,0.4899],"rashaan":[1182,28,0.6023],"kwesi":[810,0,0.5817],"atiba":[367,5,0.5072],"chao":[284,36,0.4447],"demea":[12,5,0.0],"antionne":[222,0,0.4693],"kasim":[801,0,0.5807],"kojo":[323,0,0.5018],"sebastien":[4001,0,0.7204],"vinay":[1132,0,0.6108],"derec":[104,0,0.4034],"jawanza":[201,5,0.4515],"jerimie":[229,0,0.472],"jerremy":[410,0,0.5226],"josua":[768,0,0.5771],"khary":[928,5,0.5908],"talib":[902,0,0.591],"teron":[1007,0,0.6006],"toraino":[40,0,0.0],"adi":[755,927,0.3556],"alika":[635,570,0.3247],"antonious":[292,0,0.4931],"babatunde":[344,0,0.5073],"branon":[240,0,0.476],"hakeem":[6178,0,0.7582],"jaja":[109,0,0.4075],"jermie":[327,0,0.5029],"jermine":[372,0,0.5141],"jerrit":[150,0,0.4352],"joon":[472,63,0.4814],"nikhil":[5360,0,0.7458],"rasheem":[1316,0,0.6239],"shabazz":[286,0,0.4913],"shaen":[52,0,0.0],"tyjuan":[1565,0,0.6389],"yaphet":[261,5,0.4759],"aaren":[912,282,0.4701],"abu":[452,0,0.531],"adarryl":[58,0,0.0],"canon":[2687,36,0.6779],"dak":[226,0,0.4708],"dashan":[210,10,0.4472],"daylan":[2777,84,0.671],"emad":[805,0,0.5812],"hombre":[8,0,0.0],"jasun":[156,0,0.4386],"jeramey":[636,0,0.5607],"jeremaine":[213,0,0.4657],"kalonji":[150,0,0.4352],"kamau":[921,0,0.5929],"kenon":[406,0,0.5217],"kwabene":[8,0,0.0],"lajuane":[92,0,0.0],"lumumba":[49,0,0.0],"ori":[1540,315,0.5427],"quaid":[894,0,0.5903],"rayshon":[801,0,0.5807],"rodolpho":[29,0,0.0],"shakir":[1204,10,0.6118],"shango":[28,0,0.0],"termaine":[688,13,0.5586],"torriano":[44,0,0.0],"tramel":[535,0,0.5457],"zacharia":[1719,22,0.64],"adarryll":[29,0,0.0],"aki":[365,248,0.3319],"ako":[22,5,0.0],"alias":[1092,0,0.6076],"amery":[106,604,0.4851],"antwuan":[794,0,0.58],"aswad":[129,0,0.4221],"boe":[1043,22,0.593],"brannan":[381,11,0.5041],"cezar":[731,0,0.5728],"chadwich":[31,0,0.0],"damarcus":[3246,0,0.7023],"dawon":[552,0,0.5484],"deddrick":[131,0,0.4235],"dontay":[2418,0,0.6767],"fabricio":[1193,0,0.6153],"fard":[106,0,0.4051],"hasaan":[606,0,0.5565],"jemaine":[169,0,0.4456],"jermane":[723,0,0.5718],"jermanie":[113,38,0.3261],"joshue":[1113,0,0.6093],"jsaon":[115,0,0.4121],"kanoa":[844,11,0.5788],"latif":[411,0,0.5228],"marios":[106,0,0.4051],"marlos":[103,0,0.4026],"mazen":[1386,0,0.6284],"mister":[729,0,0.5725],"montrel":[994,0,0.5995],"murad":[1087,0,0.6072],"nicolaos":[99,0,0.0],"omari":[12756,392,0.7992],"paresh":[32,0,0.0],"raheim":[872,0,0.5881],"sederick":[168,0,0.4451],"talal":[719,0,0.5713],"tarius":[231,0,0.4727],"torance":[42,39,0.0],"tyge":[72,0,0.0],"zechariah":[11059,13,0.8079],"zerrick":[373,0,0.5143],"absalom":[208,0,0.4636],"alberico":[6,0,0.0],"amish":[294,0,0.4937],"ante":[215,0,0.4665],"anzio":[29,0,0.0],"arek":[373,0,0.5143],"aristidis":[65,0,0.0],"avant":[637,0,0.5608],"baraka":[369,23,0.4882],"bracken":[610,0,0.5571],"britten":[529,354,0.353],"chadwin":[184,0,0.453],"chanc":[110,0,0.4083],"cheyne":[909,115,0.5344],"colter":[8343,0,0.7843],"contrell":[220,0,0.4685],"cyrano":[14,0,0.0],"dashaun":[2866,32,0.6848],"dashon":[1609,33,0.6302],"delance":[106,0,0.4051],"demitrios":[114,0,0.4114],"elrod":[6,0,0.0],"ephrain":[11,0,0.0],"eriverto":[61,0,0.0],"fabius":[6,0,0.0],"gianluca":[3734,0,0.7144],"hashim":[1907,0,0.6561],"hassain":[6,0,0.0],"heshimu":[36,0,0.0],"jair":[7087,11,0.769],"jaleel":[4829,24,0.7336],"jamol":[188,0,0.4548],"jaramie":[106,0,0.4051],"jarmain":[18,0,0.0],"jashua":[1705,0,0.6463],"jathan":[1494,0,0.6349],"jawara":[274,5,0.4804],"jermon":[506,0,0.5408],"jonatan":[3677,0,0.7131],"jonath":[35,0,0.0],"joshu":[96,0,0.0],"joson":[80,0,0.0],"kendrix":[1182,98,0.5739],"kindrick":[94,0,0.0],"lacedric":[56,0,0.0],"lamonta":[226,0,0.4708],"macker":[6,0,0.0],"marcanthony":[1388,0,0.6285],"nantambu":[6,0,0.0],"nevelle":[6,0,0.0],"priest":[537,0,0.546],"rahaman":[11,0,0.0],"rahiem":[652,0,0.5628],"ranjan":[6,0,0.0],"river":[36498,18256,0.6317],"ry":[417,0,0.524],"sandip":[82,0,0.0],"shadrack":[123,0,0.418],"sundance":[65,10,0.0],"tarun":[841,0,0.585],"terranc":[6,0,0.0],"thorpe":[6,0,0.0],"timotheus":[188,0,0.4548],"toland":[25,0,0.0],"torian":[1533,225,0.5659],"torrick":[16,0,0.0],"tshaka":[12,0,0.0],"tydus":[572,0,0.5515],"uland":[6,0,0.0],"yuseff":[11,0,0.0],"zerick":[161,0,0.4414],"abiel":[1520,28,0.6264],"adem":[1206,0,0.6163],"akin":[352,0,0.5093],"albertico":[5,0,0.0],"aleksandr":[1629,0,0.6424],"almondo":[5,0,0.0],"amdrew":[104,0,0.4034],"amjad":[585,0,0.5534],"andrel":[40,5,0.0],"angello":[586,0,0.5536],"arjuna":[309,0,0.498],"arlandus":[10,0,0.0],"arlondo":[10,0,0.0],"arrow":[1639,822,0.4517],"aseem":[181,0,0.4515],"azikiwe":[18,0,0.0],"aziz":[1778,0,0.65],"baylen":[1323,219,0.5471],"brann":[22,0,0.0],"breh":[5,0,0.0],"briar":[5948,6222,0.4177],"brigg":[174,0,0.4481],"chaddrick":[339,0,0.506],"chane":[322,128,0.3797],"chantz":[1170,0,0.6136],"clynt":[5,0,0.0],"corrice":[5,0,0.0],"dallin":[5162,0,0.7426],"damu":[34,0,0.0],"danan":[43,0,0.0],"dar":[28,0,0.0],"dedan":[40,0,0.0],"deejay":[168,5,0.4347],"deldrick":[225,0,0.4704],"demetrous":[35,0,0.0],"dermaine":[46,0,0.0],"deshan":[253,12,0.4627],"diarra":[78,348,0.4296],"diedrick":[10,0,0.0],"dinos":[5,0,0.0],"dionte":[3123,26,0.6939],"dionysius":[27,0,0.0],"dishon":[329,0,0.5034],"dniel":[22,0,0.0],"dondrick":[20,0,0.0],"dorion":[585,0,0.5534],"elrico":[38,0,0.0],"eoin":[1558,0,0.6385],"eryc":[68,0,0.0],"everado":[121,0,0.4166],"farrow":[5,0,0.0],"gant":[23,0,0.0],"gjon":[62,0,0.0],"haim":[144,0,0.4317],"hanif":[775,0,0.5779],"hason":[223,0,0.4697],"heathe":[24,51,0.0],"ho":[129,0,0.4221],"ilija":[172,0,0.4471],"irin":[5,5,0.0],"ishmail":[208,0,0.4636],"jabar":[444,0,0.5295],"jabari":[9589,0,0.7964],"jahan":[790,38,0.5568],"jarvin":[216,0,0.4669],"jasan":[217,0,0.4673],"jedidiah":[9035,40,0.7881],"jochen":[5,0,0.0],"josha":[426,28,0.4986],"json":[302,0,0.496],"kaleo":[1985,0,0.6596],"kano":[222,0,0.4693],"kentrell":[4180,66,0.7143],"kibwe":[19,0,0.0],"laderrick":[441,0,0.5289],"lamor":[49,0,0.0],"laronn":[103,0,0.4026],"leaf":[134,0,0.4254],"lev":[2770,75,0.6726],"mansour":[403,0,0.5211],"marsel":[162,0,0.4419],"matthieu":[1045,0,0.6038],"nairobi":[35,1455,0.6197],"nicolaus":[1141,0,0.6115],"osbert":[11,0,0.0],"pavel":[1507,0,0.6356],"quran":[1942,34,0.6478],"rahsan":[56,0,0.0],"rajinder":[23,0,0.0],"rangel":[119,0,0.4151],"raulie":[5,0,0.0],"raydon":[311,0,0.4986],"rejean":[18,8,0.0],"reynardo":[20,0,0.0],"robrick":[5,0,0.0],"rye":[1017,155,0.5326],"schad":[28,0,0.0],"selim":[973,0,0.5976],"semaj":[7203,2019,0.6194],"seung":[79,0,0.0],"shaffer":[43,0,0.0],"shorn":[5,0,0.0],"shyam":[747,0,0.5747],"sohn":[16,0,0.0],"spartacus":[41,0,0.0],"stalin":[109,0,0.4075],"stepfan":[21,0,0.0],"tamir":[2313,59,0.6582],"tauhid":[5,0,0.0],"terek":[280,0,0.4894],"timtohy":[80,0,0.0],"tobiah":[662,0,0.5642],"toranio":[5,0,0.0],"toriana":[5,642,0.5578],"torraine":[5,0,0.0],"tosh":[557,0,0.5492],"trad":[31,0,0.0],"trask":[113,0,0.4106],"tuan":[1417,0,0.6303],"tyrod":[11,0,0.0],"ulisses":[1296,0,0.6225],"unseld":[5,0,0.0],"valdimir":[5,0,0.0],"wolfram":[53,0,0.0],"yamal":[5,0,0.0],"yan":[927,99,0.5441],"yasin":[2619,5,0.6825],"yomo":[5,0,0.0],"zawdie":[5,0,0.0],"zel":[16,13,0.0],"cotina":[0,243,0.4771],"dayatra":[0,49,0.0],"kamisha":[0,1128,0.6105],"tashara":[0,1147,0.6119],"cutina":[0,52,0.0],"katena":[0,66,0.0],"kutina":[0,52,0.0],"ketina":[0,63,0.0],"kamesha":[0,1105,0.6087],"kateena":[0,62,0.0],"atiya":[0,1394,0.6289],"aneshia":[0,377,0.5153],"kitina":[0,60,0.0],"cantina":[0,39,0.0],"kertina":[0,33,0.0],"tishara":[0,176,0.4491],"tyhessia":[0,17,0.0],"chassity":[0,2236,0.6699],"krisinda":[0,96,0.0],"catena":[0,28,0.0],"kartina":[0,40,0.0],"kattina":[0,15,0.0],"tamieka":[0,643,0.5616],"chamisa":[0,14,0.0],"katenia":[0,25,0.0],"shawndee":[0,37,0.0],"lakishia":[0,397,0.5198],"nikkita":[0,798,0.5804],"tashonda":[0,386,0.5173],"vernique":[0,26,0.0],"afi":[0,52,0.0],"akilah":[0,3002,0.6955],"brie":[0,3127,0.699],"chekesha":[0,151,0.4358],"jamaica":[37,1532,0.6241],"katine":[0,31,0.0],"kotina":[0,20,0.0],"lashara":[0,358,0.5108],"letasha":[0,285,0.491],"nakeisha":[0,1403,0.6294],"shironda":[0,83,0.0],"yoni":[774,20,0.5654],"brea":[0,5684,0.7509],"chassidy":[0,3480,0.7083],"djenaba":[0,29,0.0],"kareema":[0,787,0.5792],"katinia":[0,16,0.0],"katyna":[0,11,0.0],"kenitra":[0,319,0.5008],"riqui":[0,19,0.0],"valency":[0,11,0.0],"bindy":[0,16,0.0],"carmisha":[0,77,0.0],"cateena":[0,19,0.0],"demeka":[0,273,0.4872],"karly":[5,10800,0.8064],"keeya":[0,85,0.0],"kontina":[0,10,0.0],"lakasha":[0,308,0.4977],"meco":[43,43,0.0],"nzinga":[0,325,0.5024],"rosangel":[0,49,0.0],"shandale":[5,109,0.3933],"shandrea":[0,459,0.5324],"shantia":[0,1088,0.6073],"sheetal":[0,251,0.4799],"tamasha":[0,108,0.4067],"tanessa":[0,382,0.5164],"tynisha":[0,1668,0.6444],"yetunde":[0,192,0.4567],"cameshia":[0,126,0.4201],"carmia":[0,19,0.0],"chikita":[0,92,0.0],"demesha":[0,337,0.5055],"kantina":[0,20,0.0],"katesha":[0,177,0.4496],"kaysie":[0,1256,0.6198],"lakeishia":[0,121,0.4166],"lataisha":[0,273,0.4872],"lekeshia":[0,404,0.5213],"livier":[0,284,0.4907],"matisha":[0,167,0.4445],"mieka":[0,230,0.4723],"nadira":[0,1020,0.6017],"natesha":[0,363,0.512],"neile":[0,35,0.0],"priti":[0,264,0.4843],"sharmeen":[0,58,0.0],"shatina":[0,401,0.5206],"sheronne":[0,19,0.0],"tasheka":[0,408,0.5221],"tenesia":[0,169,0.4456],"tonnica":[0,9,0.0],"tyisha":[0,1829,0.6524],"tylisha":[0,497,0.5393],"uganda":[12,46,0.0],"zakiya":[0,3305,0.7038],"adinah":[0,95,0.0],"amika":[0,340,0.5063],"anquanette":[0,90,0.0],"brijin":[0,13,0.0],"catinia":[0,17,0.0],"cybill":[0,135,0.4261],"dafney":[0,90,0.0],"danesha":[0,1291,0.6222],"danyle":[0,161,0.4414],"deshaunda":[0,48,0.0],"deshunda":[0,53,0.0],"eryca":[0,161,0.4414],"ginnifer":[0,80,0.0],"jameela":[0,910,0.5918],"janika":[0,779,0.5783],"janisha":[0,948,0.5954],"kameshia":[0,298,0.4948],"karona":[0,8,0.0],"kiska":[0,14,0.0],"lakrisha":[0,327,0.5029],"maquel":[0,24,0.0],"marquisha":[0,1314,0.6237],"martinique":[0,460,0.5326],"mendie":[0,60,0.0],"militza":[0,83,0.0],"miste":[0,30,0.0],"nashonda":[0,76,0.0],"nekesha":[0,280,0.4894],"nicko":[284,8,0.4796],"nkechi":[0,175,0.4486],"poppi":[0,210,0.4644],"reshma":[0,446,0.5299],"rickelle":[0,301,0.4957],"seandee":[0,8,0.0],"shericka":[0,324,0.5021],"shontella":[0,17,0.0],"syretta":[0,392,0.5187],"taifa":[0,25,0.0],"tamishia":[0,29,0.0],"tashunda":[0,58,0.0],"tequita":[0,150,0.4352],"ulrika":[0,8,0.0],"yezenia":[0,497,0.5393],"adenike":[0,237,0.4749],"afia":[0,594,0.5548],"allysa":[0,2554,0.6814],"angelque":[0,14,0.0],"antwinette":[0,13,0.0],"arlonda":[0,7,0.0],"audrena":[0,120,0.4158],"aya":[0,7534,0.7754],"ayo":[155,79,0.3139],"bindu":[0,67,0.0],"britni":[0,4315,0.727],"catrese":[0,17,0.0],"chandar":[13,12,0.0],"chaquita":[0,525,0.544],"chawana":[0,19,0.0],"cheniqua":[0,59,0.0],"cherone":[0,7,0.0],"clarivel":[0,80,0.0],"comisha":[0,7,0.0],"damika":[0,381,0.5162],"edrina":[0,42,0.0],"elisabel":[0,123,0.418],"eriko":[0,78,0.0],"habiba":[0,764,0.5766],"hassana":[0,42,0.0],"hoda":[0,508,0.5412],"ifeoma":[0,392,0.5187],"ioanna":[0,572,0.5515],"jameka":[0,1631,0.6425],"karley":[0,7908,0.7796],"kasee":[0,365,0.5125],"katika":[0,39,0.0],"katinna":[0,13,0.0],"keina":[0,122,0.4173],"keishla":[0,383,0.5166],"kenyada":[146,565,0.4533],"kereen":[0,7,0.0],"kicha":[0,7,0.0],"kiisha":[0,13,0.0],"kimesha":[0,322,0.5016],"lalana":[0,60,0.0],"laquandra":[0,432,0.5271],"lateesha":[0,446,0.5299],"letesha":[0,197,0.4589],"lukisha":[0,79,0.0],"maranatha":[5,402,0.5155],"markeda":[0,175,0.4486],"markesha":[0,1000,0.6],"micca":[0,74,0.0],"mita":[0,62,0.0],"monick":[0,80,0.0],"myeshia":[0,910,0.5918],"najuma":[0,12,0.0],"nickki":[0,38,0.0],"nicloe":[0,146,0.4329],"nsombi":[0,17,0.0],"phylisha":[0,135,0.4261],"preeti":[0,360,0.5113],"prisicilla":[0,7,0.0],"reanne":[0,651,0.5627],"ronika":[0,532,0.5452],"ryanne":[0,3195,0.7009],"serenity":[75,75261,0.9744],"shamica":[0,606,0.5565],"shazia":[0,540,0.5465],"shiwanda":[0,12,0.0],"shonika":[0,112,0.4098],"sridevi":[0,7,0.0],"tajuan":[665,7,0.5596],"tanish":[525,66,0.4924],"tarcha":[0,17,0.0],"tatasha":[0,24,0.0],"tejuana":[0,23,0.0],"temica":[0,150,0.4352],"tieshka":[0,7,0.0],"tiffny":[0,95,0.0],"tomecia":[0,50,0.0],"tonay":[0,7,0.0],"tylee":[395,1549,0.5241],"tyresa":[0,79,0.0],"vanisha":[0,445,0.5297],"veonica":[0,17,0.0],"verenice":[0,1617,0.6417],"yesena":[0,72,0.0],"yohanna":[0,987,0.5989],"yoruba":[0,13,0.0],"afua":[0,200,0.4602],"annessia":[0,11,0.0],"annica":[0,642,0.5615],"antina":[0,32,0.0],"anu":[75,282,0.4033],"arely":[0,10958,0.8079],"arnetra":[0,59,0.0],"atisha":[0,124,0.4187],"attica":[0,47,0.0],"aubree":[56,48933,0.9369],"binta":[0,588,0.5539],"brandolyn":[0,145,0.4323],"bre":[0,461,0.5327],"bridy":[0,6,0.0],"brielle":[5,47748,0.9357],"brooklyn":[1818,122847,0.9854],"bryana":[0,6191,0.7584],"callee":[0,783,0.5788],"canisha":[0,270,0.4863],"carmilita":[0,33,0.0],"caryann":[0,11,0.0],"catenia":[0,6,0.0],"catine":[0,6,0.0],"cattina":[0,15,0.0],"chalise":[0,222,0.4693],"chantrell":[0,127,0.4208],"chavella":[0,6,0.0],"cherrice":[0,32,0.0],"chinetta":[0,20,0.0],"chioma":[0,980,0.5982],"cobie":[405,261,0.3434],"conswala":[0,13,0.0],"cotenia":[0,6,0.0],"damica":[0,63,0.0],"daneka":[0,201,0.4606],"dawnyelle":[0,24,0.0],"daysha":[0,2623,0.6838],"deiana":[0,13,0.0],"deneka":[0,183,0.4525],"donesha":[0,652,0.5628],"efrosini":[0,6,0.0],"eman":[311,2172,0.594],"fania":[0,37,0.0],"farisa":[0,11,0.0],"funda":[0,6,0.0],"hasana":[0,111,0.4091],"hatina":[0,6,0.0],"hidie":[0,38,0.0],"hosanna":[0,1726,0.6474],"iasia":[0,417,0.524],"irmalinda":[0,48,0.0],"jaima":[0,209,0.464],"janiese":[0,12,0.0],"jasma":[0,366,0.5127],"jenniferlynn":[0,111,0.4091],"jenniger":[0,47,0.0],"jequetta":[0,34,0.0],"jessicia":[0,348,0.5083],"jinna":[0,164,0.443],"jovonne":[28,177,0.3992],"kanesha":[0,1752,0.6487],"kanya":[25,593,0.5356],"karre":[0,6,0.0],"karrianne":[0,11,0.0],"kathina":[0,12,0.0],"kecha":[0,48,0.0],"keeba":[0,17,0.0],"kenyana":[0,362,0.5117],"kerilynn":[0,33,0.0],"kevina":[0,425,0.5257],"kewana":[0,171,0.4466],"keyana":[0,3822,0.7165],"keyra":[0,968,0.5972],"kianga":[0,37,0.0],"kiwanna":[0,98,0.0],"ktina":[0,6,0.0],"lacole":[0,297,0.4946],"lacrista":[0,19,0.0],"lakeena":[0,71,0.0],"lakeeta":[0,183,0.4525],"laketia":[0,141,0.4298],"lakeya":[0,1211,0.6166],"lamica":[0,63,0.0],"lashika":[0,169,0.4456],"lasundra":[0,80,0.0],"latarshia":[0,65,0.0],"latinya":[0,23,0.0],"loudes":[0,6,0.0],"lovonne":[0,6,0.0],"makia":[28,1345,0.6147],"maleika":[0,29,0.0],"manika":[0,200,0.4602],"marivic":[0,16,0.0],"marquietta":[0,12,0.0],"marvinia":[0,6,0.0],"melynie":[0,21,0.0],"mesa":[0,811,0.5818],"michonne":[0,23,0.0],"milele":[0,6,0.0],"minika":[0,18,0.0],"moon":[149,413,0.4041],"najwa":[0,590,0.5542],"naquita":[0,263,0.484],"naticia":[0,32,0.0],"neela":[0,1326,0.6245],"neema":[256,753,0.4484],"niani":[0,296,0.4943],"nicholl":[0,171,0.4466],"orisha":[0,11,0.0],"quanetta":[0,127,0.4208],"quanna":[0,58,0.0],"quintana":[0,202,0.4611],"radiah":[0,108,0.4067],"raschell":[0,6,0.0],"renetia":[0,6,0.0],"renika":[0,359,0.511],"richanda":[0,58,0.0],"sadiqa":[0,49,0.0],"satara":[0,315,0.4997],"shada":[0,596,0.555],"shalandra":[0,241,0.4764],"shalaunda":[0,61,0.0],"sharah":[0,231,0.4727],"shareka":[0,795,0.5801],"sharifah":[0,145,0.4323],"sharnett":[0,11,0.0],"shauntrell":[0,29,0.0],"shawntee":[0,207,0.4632],"shawntrice":[0,70,0.0],"shenay":[0,162,0.4419],"shenique":[0,266,0.485],"shereka":[0,501,0.54],"sherrika":[0,176,0.4491],"sheryce":[0,19,0.0],"shital":[0,135,0.4261],"shondala":[0,12,0.0],"shunette":[0,6,0.0],"sora":[600,1699,0.4968],"stefnie":[0,6,0.0],"talonda":[0,158,0.4397],"tamanika":[0,69,0.0],"tamesa":[0,24,0.0],"tamesia":[0,55,0.0],"tanaka":[10,129,0.3978],"tanetta":[0,81,0.0],"tannika":[0,21,0.0],"tapatha":[0,6,0.0],"tarnesha":[0,112,0.4098],"tatina":[0,21,0.0],"tawaina":[0,34,0.0],"teddra":[0,6,0.0],"tejal":[0,299,0.4951],"tekoa":[161,150,0.2581],"tequisha":[0,90,0.0],"thara":[0,280,0.4894],"tiarra":[0,3551,0.7101],"tiffoni":[0,6,0.0],"tikki":[0,22,0.0],"tionna":[0,2584,0.6825],"tomico":[0,22,0.0],"tomisha":[0,312,0.4988],"tonyna":[0,6,0.0],"tracilynn":[0,6,0.0],"tramaine":[1881,561,0.5219],"tredena":[0,6,0.0],"tremeka":[0,100,0.4],"trissie":[0,6,0.0],"tunisa":[0,17,0.0],"tyeisha":[0,1555,0.6383],"tyeshia":[0,1093,0.6077],"tyrah":[0,680,0.5665],"tyshawn":[5231,134,0.7273],"unique":[907,7539,0.701],"uraina":[0,35,0.0],"yashika":[0,710,0.5703],"ysenia":[0,378,0.5155],"aarona":[0,5,0.0],"aisling":[0,1494,0.6349],"akima":[0,80,0.0],"alcia":[0,23,0.0],"aldrena":[0,10,0.0],"alishea":[0,183,0.4525],"alisse":[0,227,0.4712],"alixandra":[0,984,0.5986],"amaya":[22,41782,0.9238],"ameera":[0,3286,0.7033],"ameika":[0,5,0.0],"amenia":[0,51,0.0],"ametra":[0,16,0.0],"amonda":[0,72,0.0],"amylee":[0,222,0.4693],"amylynn":[0,223,0.4697],"anaberta":[0,5,0.0],"anais":[107,8911,0.7816],"analise":[0,4511,0.7309],"andrya":[0,117,0.4136],"aneka":[0,317,0.5002],"anetria":[0,61,0.0],"angalee":[0,46,0.0],"angelice":[0,185,0.4534],"annalie":[0,1166,0.6133],"annalyn":[0,1331,0.6248],"anonda":[0,45,0.0],"antona":[0,5,0.0],"archana":[0,408,0.5221],"aricia":[0,38,0.0],"arisha":[0,940,0.5946],"arnika":[0,188,0.4548],"astacia":[0,46,0.0],"atalie":[0,959,0.5964],"ayona":[0,317,0.5002],"brittny":[0,3585,0.7109],"cachet":[0,285,0.491],"cadi":[0,248,0.4789],"cameisha":[0,37,0.0],"camisa":[0,10,0.0],"camishia":[0,5,0.0],"candle":[0,24,0.0],"carrina":[0,162,0.4419],"cartrina":[0,5,0.0],"cassonia":[0,5,0.0],"catrinna":[0,5,0.0],"chalita":[0,28,0.0],"charidy":[0,135,0.4261],"charnese":[0,83,0.0],"chay":[375,54,0.4602],"chaye":[0,50,0.0],"chejuana":[0,5,0.0],"chrisinda":[0,5,0.0],"ciara":[7,34718,0.9079],"cita":[0,10,0.0],"coco":[0,1801,0.6511],"colanda":[0,5,0.0],"constina":[0,5,0.0],"contenia":[0,10,0.0],"continia":[0,5,0.0],"crystl":[0,27,0.0],"dadra":[0,5,0.0],"danyal":[597,176,0.4461],"dasa":[0,10,0.0],"dawny":[0,10,0.0],"deisy":[0,3067,0.6973],"delanya":[0,5,0.0],"deleah":[0,189,0.4553],"demeshia":[0,96,0.0],"denetia":[0,5,0.0],"deria":[0,25,0.0],"desandra":[0,5,0.0],"deshana":[0,235,0.4742],"deshawnda":[0,60,0.0],"destine":[199,1222,0.5422],"donicia":[0,56,0.0],"donyetta":[0,103,0.4026],"eleasha":[0,77,0.0],"eleftheria":[0,258,0.4823],"emine":[0,135,0.4261],"erendira":[0,817,0.5824],"erical":[0,13,0.0],"etty":[0,732,0.5729],"fajr":[0,277,0.4885],"fantasy":[0,107,0.4059],"fanya":[0,30,0.0],"fareeda":[0,107,0.4059],"foluke":[0,5,0.0],"franchetta":[0,5,0.0],"friday":[0,30,0.0],"gecenia":[0,5,0.0],"giget":[0,5,0.0],"ginney":[0,5,0.0],"hendy":[0,228,0.4716],"jalila":[0,222,0.4693],"jamala":[0,103,0.4026],"jameca":[0,202,0.4611],"jamita":[0,56,0.0],"janara":[0,64,0.0],"janira":[0,740,0.5738],"jasmina":[0,1135,0.611],"javana":[0,72,0.0],"jaycie":[5,3949,0.7185],"jenafer":[0,179,0.4506],"jeneffer":[0,42,0.0],"jeneine":[0,5,0.0],"jessaca":[0,179,0.4506],"jynell":[0,15,0.0],"kalita":[0,40,0.0],"kamey":[0,10,0.0],"karensa":[0,26,0.0],"karlisa":[0,120,0.4158],"karonda":[0,53,0.0],"karsha":[0,22,0.0],"kawan":[560,15,0.5375],"keish":[0,11,0.0],"kellisa":[0,5,0.0],"kenetra":[0,140,0.4292],"kenitha":[0,68,0.0],"kenyanna":[0,222,0.4693],"kenyatte":[123,61,0.3028],"kerrey":[0,11,0.0],"kerrigan":[105,2430,0.6526],"kewanda":[0,125,0.4194],"keyona":[0,2906,0.6927],"keziah":[173,4533,0.7075],"khisha":[0,26,0.0],"khrishna":[0,5,0.0],"kika":[0,10,0.0],"kindal":[0,309,0.498],"kirston":[0,228,0.4716],"kisher":[0,5,0.0],"kisty":[0,25,0.0],"kiwanda":[0,44,0.0],"kizmet":[0,42,0.0],"kontrina":[0,5,0.0],"krissandra":[0,59,0.0],"kristieann":[0,5,0.0],"kristinn":[0,5,0.0],"kristna":[0,10,0.0],"krystl":[0,150,0.4352],"krystol":[0,113,0.4106],"kurtina":[0,5,0.0],"kuuipo":[0,172,0.4471],"kyria":[0,791,0.5796],"labreeska":[0,38,0.0],"lacreasha":[0,122,0.4173],"ladedra":[0,21,0.0],"laela":[0,1662,0.6441],"laguisha":[0,28,0.0],"laguita":[0,27,0.0],"lailani":[0,2400,0.676],"lajauna":[0,5,0.0],"lakeisa":[0,122,0.4173],"lamisha":[0,343,0.5071],"laneisha":[0,616,0.5579],"lanina":[0,111,0.4091],"laquesha":[0,946,0.5952],"lashalle":[0,5,0.0],"lasheka":[0,304,0.4966],"lasherrie":[0,5,0.0],"lashundia":[0,5,0.0],"latarcha":[0,34,0.0],"latasia":[0,605,0.5564],"latatia":[0,5,0.0],"lateresa":[0,10,0.0],"latima":[0,58,0.0],"latischa":[0,16,0.0],"latoina":[0,5,0.0],"latric":[0,5,0.0],"latusha":[0,47,0.0],"lawander":[0,12,0.0],"lesleyann":[0,86,0.0],"leticha":[0,30,0.0],"litonia":[0,5,0.0],"lizete":[0,48,0.0],"lonnita":[0,5,0.0],"lusha":[0,5,0.0],"lyza":[0,805,0.5812],"maketa":[0,43,0.0],"maradith":[0,5,0.0],"mariechristine":[0,10,0.0],"marijuana":[0,5,0.0],"markella":[0,303,0.4963],"markisha":[0,1136,0.6111],"martice":[310,15,0.4792],"mckenna":[183,43545,0.9243],"mekia":[0,181,0.4515],"meosha":[0,500,0.5398],"micol":[0,16,0.0],"milcah":[0,169,0.4456],"mitza":[0,5,0.0],"myosha":[0,101,0.4009],"myoshia":[0,12,0.0],"myrella":[0,61,0.0],"naketa":[0,259,0.4827],"nastasha":[0,414,0.5234],"natarshia":[0,5,0.0],"natusha":[0,30,0.0],"nikiki":[0,10,0.0],"nikkisha":[0,51,0.0],"ninia":[0,5,0.0],"nocole":[0,176,0.4491],"notasha":[0,21,0.0],"perlita":[0,310,0.4983],"poonam":[0,260,0.483],"quinita":[0,117,0.4136],"quisha":[0,58,0.0],"rachale":[0,33,0.0],"raeshell":[0,42,0.0],"rashan":[935,66,0.5605],"rashaunda":[0,253,0.4806],"rashena":[0,62,0.0],"rashidah":[0,343,0.5071],"reshunda":[0,74,0.0],"rhochelle":[0,5,0.0],"richette":[0,5,0.0],"rochan":[0,5,0.0],"rondee":[0,5,0.0],"ronke":[0,5,0.0],"rosenna":[0,5,0.0],"rukaiyah":[0,5,0.0],"runako":[28,5,0.0],"samanta":[0,1840,0.653],"samar":[1218,1078,0.3566],"samarah":[0,1993,0.6599],"sameena":[0,82,0.0],"sandr":[0,5,0.0],"santasha":[0,34,0.0],"schnell":[0,25,0.0],"shaana":[0,58,0.0],"shaindel":[0,921,0.5929],"shakera":[0,1374,0.6276],"shaketa":[0,375,0.5148],"shalea":[0,389,0.518],"shaletta":[0,60,0.0],"shamay":[0,5,0.0],"shandelle":[0,92,0.0],"shanina":[0,216,0.4669],"shannondoah":[0,11,0.0],"sharima":[0,28,0.0],"sharlanda":[0,5,0.0],"shasha":[0,209,0.464],"shashana":[0,99,0.0],"shaunell":[0,42,0.0],"shavella":[0,20,0.0],"shawndale":[158,28,0.3856],"shawnea":[0,52,0.0],"shawntella":[0,10,0.0],"shaylee":[0,7001,0.769],"she":[0,5,0.0],"shemaine":[0,5,0.0],"shenae":[0,333,0.5045],"shennell":[0,5,0.0],"shenoa":[0,62,0.0],"sherissa":[0,92,0.0],"sherna":[0,21,0.0],"shevetta":[0,5,0.0],"shimeka":[0,261,0.4833],"shiquita":[0,456,0.5318],"shonice":[0,91,0.0],"shoronda":[0,11,0.0],"sonica":[0,5,0.0],"sonnet":[5,363,0.5062],"soojin":[0,28,0.0],"sophelia":[0,40,0.0],"sossity":[0,12,0.0],"sotiria":[0,41,0.0],"spiridoula":[0,10,0.0],"sylina":[0,174,0.4481],"taffani":[0,10,0.0],"taka":[0,46,0.0],"talanda":[0,53,0.0],"taleah":[0,2681,0.6857],"talika":[0,50,0.0],"tamakia":[0,92,0.0],"tametra":[0,84,0.0],"tamiki":[0,61,0.0],"tamikka":[0,163,0.4424],"tamisa":[0,10,0.0],"tandrea":[0,148,0.4341],"taneeka":[0,194,0.4576],"taneesha":[0,525,0.544],"tanesia":[0,285,0.491],"tanglia":[0,5,0.0],"tanica":[0,253,0.4806],"tanique":[0,125,0.4194],"tanysha":[0,228,0.4716],"tarcia":[0,5,0.0],"tashanda":[0,209,0.464],"tashanika":[0,5,0.0],"tashanna":[0,438,0.5283],"tashay":[0,537,0.546],"tasheen":[0,45,0.0],"tashira":[0,366,0.5127],"tatanishia":[0,5,0.0],"tawann":[0,5,0.0],"tawsha":[0,84,0.0],"tekela":[0,121,0.4166],"teronica":[0,23,0.0],"thurayya":[0,5,0.0],"tiawanda":[0,5,0.0],"tilwanda":[0,5,0.0],"timaka":[0,39,0.0],"tirina":[0,5,0.0],"tiwan":[123,10,0.3928],"tocha":[0,5,0.0],"tomeeka":[0,75,0.0],"tomicko":[0,5,0.0],"tomieka":[0,48,0.0],"trenece":[0,15,0.0],"trenetta":[0,10,0.0],"trenicia":[0,17,0.0],"trinika":[0,79,0.0],"tushara":[0,5,0.0],"tyeast":[0,17,0.0],"tyece":[0,10,0.0],"tylina":[0,15,0.0],"tyneshia":[0,574,0.5518],"tyshell":[0,70,0.0],"tywona":[0,12,0.0],"unity":[0,773,0.5776],"urhonda":[0,5,0.0],"valesha":[0,22,0.0],"vandana":[0,97,0.0],"vernise":[0,10,0.0],"vidya":[0,479,0.5361],"waconda":[0,5,0.0],"watisha":[0,11,0.0],"xochil":[0,607,0.5566],"yamilee":[0,62,0.0],"yanette":[0,277,0.4885],"yarrow":[54,86,0.2637],"zeporia":[0,5,0.0],"zissy":[0,954,0.5959],"jabbar":[746,0,0.5745],"keino":[89,0,0.0],"jermayne":[389,0,0.518],"keyon":[5857,101,0.7422],"akili":[454,254,0.3655],"jerami":[380,6,0.5093],"demarko":[690,0,0.5678],"jamarr":[1453,0,0.6325],"karreem":[28,0,0.0],"videl":[29,225,0.4261],"sharrod":[563,0,0.5501],"iman":[1396,5032,0.5962],"bishara":[28,0,0.0],"damain":[366,0,0.5127],"damar":[1125,5,0.6079],"jeramine":[95,0,0.0],"monolito":[37,0,0.0],"naveen":[1436,339,0.5257],"raheen":[406,0,0.5217],"sulaiman":[1763,0,0.6493],"tiko":[40,0,0.0],"vashon":[762,69,0.5354],"adaryll":[43,0,0.0],"antohny":[29,0,0.0],"changa":[27,0,0.0],"jamason":[229,0,0.472],"larome":[39,0,0.0],"malo":[64,0,0.0],"tahir":[1922,0,0.6568],"yero":[19,0,0.0],"afshin":[52,0,0.0],"atiim":[19,0,0.0],"chaunce":[101,0,0.4009],"christerphor":[8,0,0.0],"chrstopher":[74,0,0.0],"dorrian":[480,31,0.5088],"efstathios":[53,0,0.0],"eldric":[42,0,0.0],"esdras":[1547,0,0.6379],"gautam":[702,0,0.5693],"jamain":[57,0,0.0],"jamane":[41,0,0.0],"jarmal":[266,0,0.485],"jarmel":[179,0,0.4506],"jerime":[281,0,0.4897],"jerman":[451,0,0.5308],"karanja":[15,0,0.0],"karrem":[15,0,0.0],"kevis":[245,0,0.4778],"kiowa":[228,70,0.3786],"konata":[16,0,0.0],"larron":[142,0,0.4305],"nahshon":[692,0,0.568],"nkosi":[367,7,0.5049],"quantrell":[415,0,0.5236],"rashi":[129,213,0.3156],"shale":[56,21,0.0],"abayomi":[221,0,0.4689],"anthonie":[777,0,0.5781],"antwoin":[312,0,0.4988],"azriel":[3433,660,0.6059],"berish":[260,0,0.483],"billyjack":[79,0,0.0],"brandin":[2748,137,0.6592],"canyon":[3719,250,0.6744],"chadric":[194,0,0.4576],"chato":[27,0,0.0],"christohpher":[13,0,0.0],"damany":[89,0,0.0],"dariusz":[130,0,0.4228],"delshon":[68,0,0.0],"demarkus":[1236,0,0.6184],"eban":[255,0,0.4813],"ewan":[3116,0,0.6987],"farhad":[268,0,0.4856],"gernard":[17,0,0.0],"jarius":[1796,0,0.6509],"jermell":[615,0,0.5578],"jermyn":[52,0,0.0],"juane":[32,0,0.0],"kariem":[154,0,0.4375],"kedar":[549,0,0.5479],"kerr":[23,0,0.0],"kevine":[13,0,0.0],"kipchoge":[7,0,0.0],"kowan":[19,0,0.0],"latonio":[28,0,0.0],"marchant":[7,0,0.0],"marcoantonio":[1521,0,0.6364],"marlando":[38,0,0.0],"marlone":[28,0,0.0],"micheil":[61,0,0.0],"nkrumah":[27,0,0.0],"ramar":[278,0,0.4888],"ryun":[182,0,0.452],"shant":[817,0,0.5824],"taiwo":[147,63,0.3251],"tearle":[17,0,0.0],"tehran":[119,5,0.4018],"trennis":[27,0,0.0],"tyronn":[244,0,0.4775],"won":[97,0,0.0],"yahya":[4119,6,0.722],"zachory":[733,0,0.573],"zephaniah":[3254,456,0.6261],"akeem":[6753,0,0.7659],"amitabh":[12,0,0.0],"brenan":[833,0,0.5841],"cayle":[250,133,0.3372],"cedar":[2464,1402,0.4573],"charod":[57,0,0.0],"chetan":[473,0,0.535],"cobey":[682,0,0.5668],"codey":[3214,28,0.6961],"darrik":[90,0,0.0],"dartanyan":[71,0,0.0],"davinder":[29,0,0.0],"demico":[80,0,0.0],"devrin":[87,0,0.0],"dimitry":[561,0,0.5498],"durante":[121,0,0.4166],"eliah":[1122,454,0.4553],"ferando":[29,0,0.0],"franck":[174,0,0.4481],"geffery":[16,0,0.0],"genghis":[11,0,0.0],"gerasimos":[197,0,0.4589],"godofredo":[16,0,0.0],"guan":[6,0,0.0],"hani":[720,199,0.4643],"helio":[326,0,0.5026],"hemant":[22,0,0.0],"hodari":[91,0,0.0],"jamaar":[617,0,0.5581],"jamale":[495,0,0.5389],"jaman":[94,0,0.0],"jamian":[520,0,0.5432],"jarion":[213,0,0.4657],"jaso":[12,0,0.0],"jernard":[109,0,0.4075],"johnthomas":[560,0,0.5496],"joseantonio":[813,0,0.582],"kannon":[5775,130,0.7376],"kanon":[1495,158,0.5821],"keynan":[355,0,0.51],"kono":[6,0,0.0],"manu":[677,5,0.5626],"marquet":[194,0,0.4576],"mercury":[196,94,0.3328],"nirav":[533,0,0.5453],"oji":[29,0,0.0],"rafiel":[91,0,0.0],"raju":[6,0,0.0],"romone":[187,0,0.4544],"sachin":[1397,0,0.629],"salah":[954,173,0.5167],"shadron":[11,0,0.0],"shafton":[12,0,0.0],"shahram":[81,0,0.0],"sham":[36,215,0.4111],"sharieff":[33,0,0.0],"sirron":[212,0,0.4653],"sundeep":[248,5,0.4711],"tacuma":[87,0,0.0],"tarrant":[44,0,0.0],"tavon":[4050,78,0.7095],"temujin":[63,0,0.0],"tico":[81,0,0.0],"todo":[6,0,0.0],"tomatra":[6,0,0.0],"toriono":[6,0,0.0],"tyon":[660,0,0.5639],"vidale":[13,0,0.0],"vipul":[70,0,0.0],"zeyad":[525,0,0.544],"aaric":[565,0,0.5504],"aasim":[553,0,0.5485],"adeyemi":[149,10,0.4126],"ajamu":[116,0,0.4129],"akintunde":[27,0,0.0],"alesandro":[370,0,0.5136],"alexandar":[681,0,0.5666],"antiona":[18,5,0.0],"antwaine":[328,0,0.5032],"antwand":[24,0,0.0],"anurag":[244,0,0.4775],"arash":[953,0,0.5958],"arren":[301,21,0.4689],"ato":[56,0,0.0],"azariah":[5906,6920,0.4433],"bassam":[582,0,0.553],"bayete":[5,0,0.0],"brantly":[854,5,0.5834],"bwana":[5,0,0.0],"cable":[170,0,0.4461],"caliph":[202,0,0.4611],"cardale":[124,0,0.4187],"charvis":[179,0,0.4506],"chass":[10,0,0.0],"chenier":[20,0,0.0],"cheo":[113,0,0.4106],"christifer":[179,0,0.4506],"christiopher":[35,0,0.0],"clintin":[30,0,0.0],"colum":[86,0,0.0],"cordney":[190,12,0.4337],"creon":[10,0,0.0],"damaine":[33,0,0.0],"damiane":[31,0,0.0],"darrington":[36,0,0.0],"dartanyon":[98,0,0.0],"dason":[623,0,0.5589],"daymion":[206,0,0.4628],"deidrick":[118,0,0.4144],"delonte":[1519,0,0.6363],"delshawn":[314,0,0.4994],"demark":[29,0,0.0],"dennon":[33,0,0.0],"derico":[337,0,0.5055],"dierre":[202,0,0.4611],"din":[84,0,0.0],"dionysios":[64,0,0.0],"dipak":[5,0,0.0],"doremus":[10,0,0.0],"dwone":[16,0,0.0],"dwuan":[22,0,0.0],"ehab":[459,0,0.5324],"elron":[5,0,0.0],"erubey":[50,0,0.0],"fallon":[604,11284,0.7736],"fanon":[5,0,0.0],"faruq":[86,0,0.0],"garic":[10,0,0.0],"garrion":[19,0,0.0],"garrod":[45,0,0.0],"gaven":[3832,0,0.7167],"germane":[12,0,0.0],"germayne":[5,0,0.0],"gioacchino":[21,0,0.0],"habib":[915,0,0.5923],"hadji":[5,0,0.0],"haitham":[325,0,0.5024],"izaak":[2846,0,0.6908],"jabarr":[11,0,0.0],"jalal":[735,0,0.5733],"jamael":[417,0,0.524],"jamen":[613,0,0.5575],"jamir":[8814,20,0.7874],"jamone":[266,0,0.485],"jarmar":[359,0,0.511],"jasyn":[192,0,0.4567],"jawad":[1572,0,0.6393],"jaxon":[110514,397,0.9964],"jerimey":[81,0,0.0],"jermanine":[16,0,0.0],"jevin":[998,0,0.5998],"jimel":[105,0,0.4042],"johnothan":[126,0,0.4201],"johnta":[224,5,0.4617],"jonithan":[22,0,0.0],"joseangel":[1220,0,0.6173],"josip":[109,0,0.4075],"jumal":[38,0,0.0],"justan":[532,0,0.5452],"kaipo":[479,0,0.5361],"kaream":[28,0,0.0],"karrien":[5,0,0.0],"kekoa":[1991,22,0.6535],"keyan":[1349,7,0.6232],"kiambu":[5,0,0.0],"konan":[121,0,0.4166],"kristof":[299,0,0.4951],"kumar":[305,0,0.4969],"lafeyette":[5,0,0.0],"lajaune":[10,0,0.0],"lambros":[52,0,0.0],"larmont":[10,0,0.0],"lashaw":[5,5,0.0],"lathe":[18,0,0.0],"lejuan":[207,0,0.4632],"leondre":[696,0,0.5685],"linnard":[5,0,0.0],"loukas":[627,0,0.5595],"manvel":[27,0,0.0],"marcellos":[10,0,0.0],"markieth":[11,0,0.0],"marus":[35,0,0.0],"meguel":[21,0,0.0],"mikah":[3272,1657,0.4903],"mir":[535,0,0.5457],"montonio":[5,0,0.0],"montray":[204,0,0.4619],"morlon":[5,0,0.0],"mychael":[1341,242,0.5421],"mykal":[1164,332,0.4941],"nathaneal":[908,0,0.5916],"navin":[847,0,0.5856],"nichael":[92,0,0.0],"nitin":[639,0,0.5611],"okeith":[12,0,0.0],"onaje":[109,0,0.4075],"osric":[125,0,0.4194],"prakash":[57,0,0.0],"predrag":[5,0,0.0],"ranard":[64,0,0.0],"ranardo":[16,0,0.0],"rasaan":[218,0,0.4677],"rashee":[155,0,0.4381],"raysean":[538,0,0.5462],"recco":[50,0,0.0],"reyn":[291,50,0.4323],"romando":[39,0,0.0],"romaro":[37,0,0.0],"saed":[208,0,0.4636],"sahwn":[36,0,0.0],"sai":[1611,455,0.517],"samad":[817,0,0.5824],"sancho":[34,0,0.0],"seam":[18,0,0.0],"sedwick":[5,0,0.0],"serigo":[39,0,0.0],"shaban":[22,0,0.0],"shah":[418,10,0.514],"shohn":[11,0,0.0],"stelios":[211,0,0.4649],"taki":[50,5,0.0],"tarick":[147,0,0.4335],"tarvin":[5,0,0.0],"tash":[22,15,0.0],"teven":[292,0,0.4931],"thelonius":[21,0,0.0],"tierre":[380,117,0.4123],"torianno":[5,0,0.0],"trek":[125,0,0.4194],"triston":[11544,274,0.7956],"tycho":[360,0,0.5113],"tyras":[10,0,0.0],"tywon":[858,0,0.5867],"vernando":[5,0,0.0],"yuji":[262,0,0.4837],"zacharian":[54,0,0.0],"yajaira":[5,5641,0.7497],"loukisha":[0,69,0.0],"janaya":[0,3896,0.7181],"kanika":[0,1248,0.6192],"yahaira":[0,5149,0.7423],"season":[0,1169,0.6136],"sacheen":[0,105,0.4042],"analia":[0,7173,0.7711],"jenaya":[0,993,0.5994],"xaviera":[0,697,0.5686],"vonnetta":[0,81,0.0],"kenisha":[5,4010,0.7198],"shameeka":[0,936,0.5943],"desheila":[0,18,0.0],"keona":[80,3234,0.6871],"yumeka":[0,46,0.0],"deshelia":[0,24,0.0],"lameka":[0,480,0.5362],"kiona":[0,1656,0.6438],"laquenta":[0,69,0.0],"latica":[0,89,0.0],"sasheen":[0,43,0.0],"walida":[0,66,0.0],"atoya":[0,153,0.4369],"jahaira":[0,1508,0.6357],"jonikka":[0,21,0.0],"kamaria":[0,2957,0.6942],"lakeita":[0,292,0.4931],"shandreka":[0,233,0.4735],"sharika":[0,1300,0.6228],"cicley":[0,74,0.0],"danniell":[0,122,0.4173],"shandrika":[0,303,0.4963],"sicily":[0,1443,0.6319],"akisha":[0,373,0.5143],"anedra":[0,105,0.4042],"catinna":[0,11,0.0],"genaya":[0,50,0.0],"makisha":[0,446,0.5299],"malaka":[0,142,0.4305],"shaquana":[0,2286,0.6718],"laguana":[0,66,0.0],"lakesa":[0,106,0.4051],"mende":[0,61,0.0],"mysty":[0,66,0.0],"nakeitha":[0,82,0.0],"nature":[197,572,0.4293],"nickelle":[0,49,0.0],"nirvana":[12,1558,0.6343],"sakita":[0,37,0.0],"shanrika":[0,10,0.0],"tameki":[0,59,0.0],"tekisha":[0,340,0.5063],"tristi":[0,25,0.0],"aleia":[0,2942,0.6937],"aziza":[0,1918,0.6566],"cherissa":[0,161,0.4414],"conquista":[0,9,0.0],"donisha":[0,1276,0.6212],"eumeka":[0,9,0.0],"iisha":[0,254,0.481],"kachina":[0,296,0.4943],"kandida":[0,14,0.0],"kenosha":[0,377,0.5153],"kertrina":[0,9,0.0],"kimika":[0,104,0.4034],"laketta":[0,188,0.4548],"lakeysia":[0,29,0.0],"lakia":[0,2639,0.6843],"lameeka":[0,63,0.0],"liduvina":[0,25,0.0],"mandisa":[0,374,0.5146],"maritess":[0,58,0.0],"miasha":[0,114,0.4114],"netasha":[0,143,0.4311],"nyisha":[0,532,0.5452],"shakina":[0,668,0.565],"sherah":[0,193,0.4571],"tanisia":[0,68,0.0],"tomeica":[0,9,0.0],"yahira":[0,485,0.5371],"alexsa":[0,631,0.56],"anana":[0,22,0.0],"areti":[0,30,0.0],"aspen":[2753,23536,0.7914],"aubri":[5,4986,0.7389],"brandace":[0,160,0.4408],"brittanie":[0,4738,0.7351],"coffy":[0,16,0.0],"danyeal":[0,59,0.0],"deanza":[0,68,0.0],"dellanira":[0,71,0.0],"deneshia":[0,347,0.5081],"deshanda":[0,111,0.4091],"essence":[11,10543,0.8038],"fikisha":[0,45,0.0],"janeya":[0,306,0.4971],"jennea":[0,78,0.0],"kamika":[0,438,0.5283],"kashonda":[0,148,0.4341],"keanna":[0,3620,0.7117],"kerisha":[0,146,0.4329],"kesi":[0,221,0.4689],"lakeasha":[0,272,0.4869],"lakena":[0,85,0.0],"lanika":[0,467,0.5339],"laquinda":[0,145,0.4323],"lashunta":[0,106,0.4051],"maci":[6,20986,0.8642],"marieke":[0,119,0.4151],"mekisha":[0,106,0.4051],"miriah":[0,1836,0.6528],"moneak":[0,13,0.0],"morningstar":[0,195,0.458],"nakina":[0,57,0.0],"natashi":[0,13,0.0],"nija":[19,815,0.5709],"nitasha":[0,323,0.5018],"olaiya":[0,8,0.0],"purvi":[0,286,0.4913],"shakisha":[0,234,0.4738],"shianne":[0,3864,0.7174],"takeshia":[0,418,0.5242],"tanganika":[0,61,0.0],"taquita":[0,270,0.4863],"tasheba":[0,185,0.4534],"tasheena":[0,838,0.5846],"tatisha":[0,61,0.0],"teasa":[0,42,0.0],"trevina":[0,27,0.0],"tumeka":[0,65,0.0],"tynesha":[0,1317,0.6239],"wanika":[0,46,0.0],"yumika":[0,20,0.0],"zahra":[0,8831,0.7892],"aaryn":[779,1441,0.4344],"afiya":[0,331,0.504],"alithea":[0,89,0.0],"aneatra":[0,41,0.0],"aqila":[0,12,0.0],"arnitra":[0,97,0.0],"artesia":[0,226,0.4708],"aubrie":[0,15065,0.8356],"austina":[0,105,0.4042],"avian":[1799,328,0.5629],"badia":[0,40,0.0],"brandey":[0,209,0.464],"camri":[0,742,0.5741],"ceciley":[0,131,0.4235],"charitie":[0,116,0.4129],"contrella":[0,7,0.0],"cristol":[0,62,0.0],"curtisa":[0,30,0.0],"dachelle":[0,107,0.4059],"demeteria":[0,12,0.0],"ekaterini":[0,201,0.4606],"falonda":[0,25,0.0],"galit":[0,141,0.4298],"gin":[35,7,0.0],"heater":[0,53,0.0],"janaia":[0,245,0.4778],"japonica":[0,45,0.0],"jenniferr":[0,7,0.0],"johonna":[0,121,0.4166],"karem":[129,233,0.3294],"karinna":[0,605,0.5564],"kasonya":[0,19,0.0],"katresa":[0,24,0.0],"kenetta":[0,17,0.0],"kiriaki":[0,37,0.0],"kiwanis":[0,19,0.0],"kursten":[0,281,0.4897],"lakeba":[0,28,0.0],"lakeithia":[0,193,0.4571],"lakeysa":[0,54,0.0],"laquanna":[0,273,0.4872],"lashawnta":[0,84,0.0],"latoy":[0,136,0.4267],"leighanna":[0,1207,0.6163],"lynessa":[0,95,0.0],"malikia":[10,45,0.0],"maridith":[0,19,0.0],"megumi":[0,580,0.5527],"moneca":[0,33,0.0],"monike":[0,60,0.0],"morenike":[0,121,0.4166],"morica":[0,7,0.0],"mundi":[0,7,0.0],"myiesha":[0,657,0.5635],"nakia":[2006,8730,0.6555],"nashanda":[0,35,0.0],"natania":[0,708,0.57],"nekeisha":[0,269,0.486],"rache":[0,74,0.0],"ralna":[0,24,0.0],"rehana":[0,324,0.5021],"ronessa":[0,7,0.0],"sabriya":[0,383,0.5166],"sancha":[0,12,0.0],"shaena":[0,541,0.5466],"shamira":[0,1537,0.6373],"shaneeka":[0,433,0.5273],"shanella":[0,33,0.0],"shatika":[0,273,0.4872],"shemica":[0,201,0.4606],"shenica":[0,132,0.4241],"shenitha":[0,42,0.0],"shineka":[0,150,0.4352],"shy":[51,420,0.4767],"tameaka":[0,159,0.4403],"tanikka":[0,124,0.4187],"taniko":[0,33,0.0],"tanisa":[0,76,0.0],"tanyeka":[0,26,0.0],"tenessa":[0,74,0.0],"tomecka":[0,30,0.0],"viridiana":[5,4245,0.7248],"yessica":[0,3935,0.719],"akesha":[0,133,0.4248],"aliceson":[0,227,0.4712],"amrita":[0,1022,0.6019],"annetra":[0,33,0.0],"anquenette":[0,26,0.0],"antanette":[0,69,0.0],"audreya":[0,17,0.0],"aylin":[63,15984,0.8378],"bisa":[0,19,0.0],"brendi":[0,118,0.4144],"camecia":[0,6,0.0],"cana":[0,655,0.5632],"cecely":[0,80,0.0],"charece":[0,17,0.0],"charitee":[0,47,0.0],"chauntee":[0,28,0.0],"chawanda":[0,17,0.0],"chenay":[0,61,0.0],"cherika":[0,286,0.4913],"chryssa":[0,21,0.0],"chy":[0,11,0.0],"ciceley":[0,6,0.0],"cidalia":[0,11,0.0],"coriann":[0,119,0.4151],"courtnie":[0,2114,0.665],"dafina":[0,133,0.4248],"danialle":[0,155,0.4381],"daniellie":[0,27,0.0],"dantoinette":[0,6,0.0],"danyall":[0,6,0.0],"dashia":[0,918,0.5926],"dashonda":[0,126,0.4201],"davonda":[0,67,0.0],"dejah":[5,3163,0.6991],"dekeisha":[0,41,0.0],"deleana":[0,11,0.0],"delmonica":[0,12,0.0],"demitrice":[5,6,0.0],"dinelle":[0,24,0.0],"eurica":[0,16,0.0],"faiza":[0,1024,0.6021],"ghia":[0,66,0.0],"hina":[0,713,0.5706],"idrissa":[162,6,0.4292],"ieisha":[0,799,0.5805],"jamilliah":[0,6,0.0],"jemeka":[0,73,0.0],"jenalee":[0,461,0.5327],"jerina":[0,50,0.0],"jewelie":[0,55,0.0],"juwanda":[0,16,0.0],"kamia":[0,1711,0.6467],"kaneshia":[0,452,0.531],"kashana":[0,172,0.4471],"kashawn":[1105,78,0.5741],"kasundra":[0,11,0.0],"katrica":[0,17,0.0],"keacha":[0,6,0.0],"keedra":[0,26,0.0],"keeshia":[0,68,0.0],"ketia":[0,50,0.0],"ketura":[0,179,0.4506],"keyoka":[0,53,0.0],"keyonna":[0,3568,0.7105],"khadeja":[0,181,0.4515],"kiamesha":[0,103,0.4026],"kimyada":[0,60,0.0],"kinyatta":[0,45,0.0],"kinyetta":[0,38,0.0],"kriscinda":[0,6,0.0],"kristain":[66,237,0.3882],"kristanne":[0,6,0.0],"lakechia":[0,86,0.0],"lakeeshia":[0,28,0.0],"lakitha":[0,84,0.0],"lariza":[0,192,0.4567],"lashasta":[0,23,0.0],"lasheba":[0,80,0.0],"latachia":[0,18,0.0],"latarisha":[0,16,0.0],"latora":[0,521,0.5434],"latosia":[0,21,0.0],"leketha":[0,11,0.0],"lindiwe":[0,6,0.0],"lizett":[0,1173,0.6139],"lotosha":[0,6,0.0],"lynice":[0,18,0.0],"mache":[0,6,0.0],"mackenzie":[7761,139918,0.9474],"magic":[370,69,0.4454],"malini":[0,327,0.5029],"marisia":[0,29,0.0],"marketia":[0,55,0.0],"marysa":[0,544,0.5471],"mashana":[0,6,0.0],"meara":[0,1383,0.6282],"meigan":[0,147,0.4335],"meleka":[0,12,0.0],"meriah":[0,910,0.5918],"mystique":[0,456,0.5318],"nakenya":[0,67,0.0],"natalye":[0,342,0.5068],"natash":[0,125,0.4194],"nataya":[0,673,0.5656],"nathasa":[0,11,0.0],"nawana":[0,12,0.0],"neka":[0,155,0.4381],"nitika":[0,149,0.4346],"nykole":[0,233,0.4735],"okema":[0,71,0.0],"olayinka":[49,61,0.2264],"oni":[12,275,0.471],"poppie":[0,103,0.4026],"quantella":[0,24,0.0],"quatina":[0,53,0.0],"ranisha":[0,584,0.5533],"rashana":[0,286,0.4913],"rasheena":[0,358,0.5108],"renica":[0,32,0.0],"rukiya":[0,310,0.4983],"saketha":[0,6,0.0],"salana":[0,30,0.0],"shalome":[0,18,0.0],"shamea":[0,31,0.0],"shameca":[0,296,0.4943],"shamekia":[0,947,0.5953],"shamia":[0,1468,0.6333],"shanett":[0,6,0.0],"shanica":[0,409,0.5223],"shanitha":[0,63,0.0],"sharica":[0,249,0.4792],"sharletta":[0,37,0.0],"sharrona":[0,6,0.0],"shatisha":[0,163,0.4424],"shawnique":[0,106,0.4051],"shekira":[0,159,0.4403],"shenese":[0,48,0.0],"shenicka":[0,56,0.0],"sherrese":[0,18,0.0],"shiwana":[0,6,0.0],"shlanda":[0,22,0.0],"shunte":[0,142,0.4305],"soma":[136,103,0.2707],"somer":[0,2239,0.67],"staceyann":[0,71,0.0],"suha":[0,493,0.5386],"sumita":[0,23,0.0],"syvella":[0,6,0.0],"tajuanda":[0,6,0.0],"taleshia":[0,157,0.4392],"tameisha":[0,391,0.5184],"tammeka":[0,11,0.0],"tanesa":[0,60,0.0],"tanyette":[0,11,0.0],"taranda":[0,11,0.0],"tarmara":[0,31,0.0],"teika":[0,16,0.0],"tekeshia":[0,103,0.4026],"temeca":[0,93,0.0],"tiauna":[0,557,0.5492],"tiawanna":[0,95,0.0],"tilisha":[0,49,0.0],"tiva":[0,23,0.0],"tonishia":[0,87,0.0],"tyhesia":[0,37,0.0],"tyshia":[0,192,0.4567],"valeshia":[0,6,0.0],"vanesha":[0,342,0.5068],"vatasha":[0,6,0.0],"vontrice":[0,35,0.0],"wadiya":[0,29,0.0],"watasha":[0,11,0.0],"yakita":[0,30,0.0],"yameka":[0,18,0.0],"abi":[22,622,0.5426],"abimbola":[5,85,0.0],"adama":[431,635,0.3607],"aerica":[0,87,0.0],"aggeliki":[0,5,0.0],"agila":[0,11,0.0],"ahsaki":[0,34,0.0],"aisa":[5,552,0.5442],"akeba":[0,26,0.0],"akeisha":[0,257,0.482],"akiesha":[0,18,0.0],"akita":[0,152,0.4364],"aleana":[0,961,0.5965],"aletheia":[0,830,0.5838],"alisandra":[0,447,0.5301],"aliska":[0,5,0.0],"alisson":[5,6464,0.7616],"allysen":[0,580,0.5527],"altrina":[0,5,0.0],"alya":[0,2074,0.6634],"amanita":[0,32,0.0],"amberlea":[0,127,0.4208],"ameka":[0,136,0.4267],"analuisa":[0,413,0.5232],"andela":[0,11,0.0],"anderea":[0,5,0.0],"andriea":[0,95,0.0],"androniki":[0,5,0.0],"aniece":[0,34,0.0],"anjelina":[0,615,0.5578],"anjum":[0,28,0.0],"arniece":[0,5,0.0],"arnise":[0,5,0.0],"arpil":[0,55,0.0],"artrina":[0,11,0.0],"asela":[0,5,0.0],"asusena":[0,685,0.5671],"atricia":[0,5,0.0],"aubre":[15,798,0.5713],"ayde":[0,299,0.4951],"ayeesha":[0,34,0.0],"beyonka":[0,118,0.4144],"bobbiejean":[0,38,0.0],"brandii":[0,194,0.4576],"brandilynn":[0,116,0.4129],"breana":[0,11208,0.8099],"breanne":[0,10345,0.8029],"breigh":[0,236,0.4746],"britte":[0,18,0.0],"brydie":[0,5,0.0],"brynna":[0,3082,0.6978],"calita":[0,5,0.0],"calondra":[0,10,0.0],"canada":[0,54,0.0],"carmalena":[0,5,0.0],"carmyn":[0,1025,0.6021],"catasha":[0,37,0.0],"cedra":[0,111,0.4091],"chali":[5,15,0.0],"chamise":[0,5,0.0],"chanette":[0,75,0.0],"charnice":[0,194,0.4576],"charone":[5,16,0.0],"charro":[0,18,0.0],"chawanna":[0,15,0.0],"chelita":[0,37,0.0],"chelon":[0,5,0.0],"chenese":[0,10,0.0],"cherlonda":[0,5,0.0],"chitina":[0,5,0.0],"chrishawn":[560,48,0.5128],"contessia":[0,28,0.0],"crmen":[0,5,0.0],"crytal":[0,89,0.0],"daielle":[0,98,0.0],"dametra":[0,78,0.0],"damisha":[0,171,0.4466],"daniece":[0,26,0.0],"danillie":[0,12,0.0],"deanah":[0,15,0.0],"denedra":[0,37,0.0],"denena":[0,5,0.0],"dequanda":[0,5,0.0],"dequilla":[0,5,0.0],"deshona":[0,46,0.0],"destinee":[0,16746,0.8448],"destinie":[0,2843,0.6908],"dinisha":[0,125,0.4194],"drea":[0,843,0.5852],"dunia":[6,614,0.5531],"dylana":[0,241,0.4764],"eowyn":[0,1732,0.6477],"evelisse":[0,80,0.0],"farra":[0,118,0.4144],"folashade":[0,174,0.4481],"fransica":[0,10,0.0],"gaela":[0,30,0.0],"gorete":[0,5,0.0],"hava":[0,313,0.4991],"heathr":[0,36,0.0],"helina":[0,521,0.5434],"ieesha":[0,174,0.4481],"ishia":[0,147,0.4335],"iysha":[0,92,0.0],"jacquise":[73,47,0.253],"jahaida":[0,28,0.0],"jala":[0,2049,0.6623],"jalonda":[0,150,0.4352],"janeia":[0,39,0.0],"janille":[0,81,0.0],"jannea":[0,5,0.0],"jayci":[0,1827,0.6523],"jeenifer":[0,5,0.0],"jennnifer":[0,38,0.0],"jerrina":[0,5,0.0],"johnitta":[0,5,0.0],"juawana":[0,11,0.0],"kadee":[0,1045,0.6038],"kamber":[0,720,0.5715],"kanette":[0,5,0.0],"karlye":[0,384,0.5169],"karrissa":[0,356,0.5103],"katedra":[0,10,0.0],"katessa":[0,64,0.0],"kathya":[0,814,0.5821],"kavitha":[0,115,0.4121],"keelyn":[297,857,0.4548],"keichia":[0,5,0.0],"keiva":[0,64,0.0],"keke":[0,10,0.0],"keonna":[0,1902,0.6558],"kerilee":[0,16,0.0],"keysia":[0,5,0.0],"kibibi":[0,27,0.0],"kimberlyanne":[0,46,0.0],"kishma":[0,5,0.0],"knicole":[0,5,0.0],"koya":[0,82,0.0],"kritina":[0,5,0.0],"kutana":[0,16,0.0],"kuwanna":[0,5,0.0],"kyisha":[0,216,0.4669],"kyriaki":[0,149,0.4346],"kyrstin":[0,1274,0.621],"kysa":[0,194,0.4576],"lacreshia":[0,189,0.4553],"ladonja":[0,5,0.0],"lafonya":[0,10,0.0],"lakaisha":[0,113,0.4106],"lakietha":[0,36,0.0],"lamecia":[0,22,0.0],"lameshia":[0,161,0.4414],"landi":[0,109,0.4075],"laquetha":[0,5,0.0],"laquida":[0,130,0.4228],"larisha":[0,385,0.5171],"lashawanda":[0,30,0.0],"lashawnna":[0,75,0.0],"lashema":[0,34,0.0],"lashena":[0,74,0.0],"lashica":[0,84,0.0],"lashondia":[0,17,0.0],"lashunya":[0,5,0.0],"lassandra":[0,21,0.0],"lata":[0,5,0.0],"latashua":[0,10,0.0],"latecha":[0,18,0.0],"latefa":[0,28,0.0],"latravia":[0,200,0.4602],"latreasa":[0,15,0.0],"lawandra":[0,16,0.0],"laytona":[0,16,0.0],"lazandra":[0,29,0.0],"lekesia":[0,23,0.0],"leketa":[0,31,0.0],"lemonica":[0,5,0.0],"letrina":[0,5,0.0],"lilybeth":[0,479,0.5361],"lotonya":[0,15,0.0],"lovonda":[0,5,0.0],"ly":[119,280,0.365],"lyndsay":[0,6716,0.7654],"madelena":[0,190,0.4558],"mahisha":[0,5,0.0],"makeeba":[0,15,0.0],"makini":[0,56,0.0],"marey":[0,10,0.0],"marites":[0,73,0.0],"markeisha":[0,1296,0.6225],"marlisha":[0,217,0.4673],"mashunda":[0,5,0.0],"matia":[15,414,0.5081],"mawiyah":[0,10,0.0],"meggen":[0,133,0.4248],"meira":[0,1564,0.6388],"mekesha":[0,86,0.0],"melandie":[0,21,0.0],"merriah":[0,36,0.0],"meshonda":[0,15,0.0],"minica":[0,28,0.0],"miquelle":[0,21,0.0],"missty":[0,10,0.0],"mistydawn":[0,39,0.0],"monecia":[0,36,0.0],"moneke":[0,26,0.0],"montessa":[0,23,0.0],"montia":[0,179,0.4506],"morrissa":[0,86,0.0],"mortisha":[0,15,0.0],"myeisha":[0,1088,0.6073],"na":[34,223,0.4182],"naiomi":[0,1107,0.6088],"naisha":[0,1598,0.6407],"nakeesha":[0,193,0.4571],"nandini":[0,924,0.5931],"nashawn":[905,53,0.5633],"natasa":[0,79,0.0],"natoya":[0,607,0.5566],"natsha":[0,115,0.4121],"nekeshia":[0,125,0.4194],"nely":[0,597,0.5552],"neyra":[0,80,0.0],"nikeisha":[0,235,0.4742],"nikitia":[0,88,0.0],"niria":[0,32,0.0],"nitosha":[0,48,0.0],"nychelle":[0,157,0.4392],"olufunmilayo":[0,34,0.0],"otisha":[0,160,0.4408],"pele":[51,52,0.2032],"prairie":[0,465,0.5335],"quenetta":[0,43,0.0],"quovadis":[0,16,0.0],"rabia":[0,854,0.5863],"rabiah":[0,81,0.0],"rashawnda":[0,376,0.515],"rayonda":[0,5,0.0],"renesha":[0,425,0.5257],"ricia":[0,11,0.0],"rindi":[0,92,0.0],"rocheal":[0,15,0.0],"roderica":[0,135,0.4261],"roopa":[0,48,0.0],"roopal":[0,5,0.0],"roshaunda":[0,166,0.444],"rotasha":[0,42,0.0],"ryna":[20,76,0.0],"saara":[0,379,0.5157],"sadia":[0,1333,0.625],"sadiqua":[0,15,0.0],"safiya":[0,2662,0.685],"salathia":[0,10,0.0],"salema":[0,38,0.0],"sayra":[0,1496,0.635],"schantel":[0,13,0.0],"seeta":[0,10,0.0],"semia":[0,52,0.0],"sepia":[0,5,0.0],"shaconda":[0,85,0.0],"shakeena":[0,508,0.5412],"shalette":[0,16,0.0],"shalice":[0,167,0.4445],"shally":[0,27,0.0],"shamecka":[0,114,0.4114],"shamina":[0,139,0.4286],"shandrica":[0,32,0.0],"shanessa":[0,131,0.4235],"shanrica":[0,5,0.0],"shantana":[0,157,0.4392],"shanterria":[0,251,0.4799],"shantie":[0,5,0.0],"sharea":[0,203,0.4615],"shaunya":[0,40,0.0],"shawndelle":[0,5,0.0],"shawneeque":[0,5,0.0],"shekelia":[0,55,0.0],"shelbe":[0,336,0.5053],"shelea":[0,32,0.0],"shemeika":[0,186,0.4539],"shenea":[0,146,0.4329],"shenikwa":[0,10,0.0],"sherlanda":[0,16,0.0],"shermain":[5,5,0.0],"sherneice":[0,5,0.0],"sherrica":[0,176,0.4491],"shikita":[0,94,0.0],"shondolyn":[0,5,0.0],"shondrea":[0,147,0.4335],"shondria":[0,58,0.0],"shonnell":[0,10,0.0],"shontal":[0,22,0.0],"shontina":[0,47,0.0],"showanda":[0,15,0.0],"shunya":[0,5,0.0],"sirina":[0,33,0.0],"solina":[0,180,0.4511],"sorrel":[0,102,0.4017],"stephiane":[0,21,0.0],"syeeda":[0,26,0.0],"sylvonia":[0,5,0.0],"taesha":[0,198,0.4593],"tahna":[0,5,0.0],"taissa":[0,15,0.0],"taiwanna":[0,22,0.0],"takeesha":[0,137,0.4273],"takima":[0,95,0.0],"talesa":[0,37,0.0],"tamaya":[0,1123,0.6101],"tamekio":[0,10,0.0],"tamicko":[0,5,0.0],"tamirra":[0,125,0.4194],"tamkia":[0,130,0.4228],"tammica":[0,25,0.0],"tammika":[0,50,0.0],"taneika":[0,242,0.4768],"taritha":[0,5,0.0],"tashea":[0,266,0.485],"tashon":[340,15,0.4885],"tatanya":[0,25,0.0],"taushia":[0,5,0.0],"tawayna":[0,15,0.0],"taynia":[0,10,0.0],"teketa":[0,10,0.0],"temesa":[0,5,0.0],"temicka":[0,19,0.0],"temisha":[0,104,0.4034],"teneisha":[0,430,0.5267],"teonia":[0,104,0.4034],"tesse":[0,15,0.0],"teuta":[0,43,0.0],"thamara":[0,247,0.4785],"tiasha":[0,371,0.5139],"tiffinee":[0,55,0.0],"tilena":[0,5,0.0],"timeca":[0,24,0.0],"tinishia":[0,29,0.0],"tiondra":[0,82,0.0],"tonilyn":[0,11,0.0],"trevira":[0,5,0.0],"troya":[0,58,0.0],"tykeisha":[0,246,0.4782],"tykisha":[0,181,0.4515],"tymika":[0,116,0.4129],"tyneka":[0,131,0.4235],"uchenna":[434,190,0.3888],"udana":[0,30,0.0],"urika":[0,5,0.0],"vashion":[11,5,0.0],"vasti":[0,225,0.4704],"vasudha":[0,31,0.0],"venezia":[0,408,0.5221],"vernisha":[0,333,0.5045],"vershawn":[80,5,0.0],"walisha":[0,16,0.0],"whisper":[0,785,0.579],"yakini":[0,15,0.0],"yakisha":[0,43,0.0],"yamika":[0,50,0.0],"yaminah":[0,483,0.5368],"yuvonda":[0,5,0.0],"zahava":[0,813,0.582],"zeina":[0,1123,0.6101],"zorica":[0,16,0.0],"zubaidah":[0,10,0.0],"zuwena":[0,12,0.0],"yohance":[407,0,0.5219],"jelani":[4651,874,0.6301],"airrion":[78,0,0.0],"kaine":[3491,0,0.7086],"mandrell":[255,0,0.4813],"vashawn":[499,33,0.5114],"hasani":[1159,11,0.6079],"chirag":[667,0,0.5648],"jeshua":[2570,5,0.6808],"shomari":[1121,71,0.5786],"tijuan":[408,0,0.5221],"diandre":[572,15,0.5396],"faisal":[2108,0,0.6648],"jadon":[10448,173,0.7921],"jeramiah":[4740,0,0.7352],"keithon":[184,0,0.453],"tyshon":[1404,11,0.6253],"akida":[42,15,0.0],"jomar":[1926,0,0.6569],"masai":[748,6,0.5709],"bianco":[9,71,0.0],"chap":[37,0,0.0],"cymande":[9,0,0.0],"delante":[724,0,0.5719],"donyea":[171,97,0.3099],"dylon":[4506,0,0.7308],"eddrick":[327,0,0.5029],"gyasi":[438,0,0.5283],"jammey":[31,0,0.0],"javin":[2397,5,0.6747],"kain":[3655,0,0.7126],"keldrick":[796,0,0.5802],"kendrell":[898,18,0.5807],"sesar":[468,0,0.534],"artimus":[94,0,0.0],"bakari":[1593,0,0.6404],"chadron":[25,0,0.0],"dameian":[163,0,0.4424],"darrio":[78,0,0.0],"demarlo":[216,0,0.4669],"gaberial":[445,16,0.5143],"hakan":[367,0,0.5129],"jabali":[50,0,0.0],"jacobi":[4134,306,0.6792],"jermiane":[13,0,0.0],"jermond":[190,0,0.4558],"johnnell":[72,0,0.0],"kaveh":[408,0,0.5221],"lamarc":[13,0,0.0],"mehul":[297,0,0.4946],"rhasaan":[14,0,0.0],"roverto":[76,0,0.0],"shadwick":[18,0,0.0],"sridhar":[13,0,0.0],"tabari":[455,0,0.5316],"tarl":[166,0,0.444],"zachry":[967,0,0.5971],"zebulun":[870,0,0.5879],"aaran":[259,0,0.4827],"ajene":[89,59,0.261],"ajit":[337,0,0.5055],"amondo":[14,0,0.0],"antinio":[82,0,0.0],"arran":[279,0,0.4891],"atif":[487,0,0.5375],"ayinde":[439,0,0.5285],"cason":[11015,75,0.8035],"cedeno":[7,0,0.0],"charistopher":[97,0,0.0],"demeco":[76,0,0.0],"demeterius":[23,0,0.0],"dionysus":[89,0,0.0],"dontaye":[392,0,0.5187],"fabrice":[473,0,0.535],"geovanni":[4310,0,0.7269],"jebediah":[737,0,0.5735],"jemar":[490,0,0.538],"jemell":[149,0,0.4346],"jestin":[1199,0,0.6158],"kelii":[261,0,0.4833],"kemo":[74,0,0.0],"kenta":[704,5,0.5661],"keola":[575,31,0.528],"lamaine":[7,0,0.0],"lamel":[336,0,0.5053],"laquincy":[130,0,0.4228],"margus":[29,0,0.0],"naim":[2597,0,0.6829],"ramy":[1078,0,0.6065],"rj":[841,0,0.585],"salil":[83,0,0.0],"seanpaul":[260,0,0.483],"shang":[25,0,0.0],"tobian":[12,0,0.0],"travelle":[296,0,0.4943],"vashone":[12,0,0.0],"zahir":[4417,7,0.728],"abdu":[32,0,0.0],"adil":[1504,0,0.6354],"akram":[1389,0,0.6285],"alif":[176,0,0.4491],"antwion":[130,0,0.4228],"anup":[203,0,0.4615],"aquil":[494,0,0.5387],"azim":[569,0,0.551],"bengt":[6,0,0.0],"canaan":[5629,318,0.7145],"catrell":[205,0,0.4624],"corye":[49,0,0.0],"damione":[96,0,0.0],"dashun":[521,0,0.5434],"davell":[299,0,0.4951],"demeturis":[12,0,0.0],"demonte":[2488,0,0.6792],"deonte":[8140,41,0.7786],"dulani":[11,0,0.0],"dwann":[20,5,0.0],"efran":[39,0,0.0],"elazar":[590,0,0.5542],"erico":[77,0,0.0],"errik":[70,0,0.0],"giovanny":[6644,30,0.7614],"giuliano":[904,0,0.5912],"hagen":[3111,243,0.654],"haji":[105,0,0.4042],"jacon":[90,0,0.0],"jarom":[1244,0,0.619],"jasonn":[6,0,0.0],"jejuan":[217,0,0.4673],"jeremia":[706,10,0.563],"jerett":[322,0,0.5016],"jermale":[214,0,0.4661],"jerran":[202,0,0.4611],"jervon":[504,0,0.5405],"jevan":[380,0,0.516],"joshoa":[97,0,0.0],"kalei":[265,1935,0.588],"kamel":[590,0,0.5542],"kartik":[485,0,0.5371],"kelvis":[125,0,0.4194],"kendricks":[82,0,0.0],"keshawn":[5988,342,0.7192],"kishan":[1029,0,0.6025],"konstandinos":[29,0,0.0],"kreston":[64,0,0.0],"lamario":[578,0,0.5524],"lapriest":[6,0,0.0],"mandrill":[29,0,0.0],"markco":[6,0,0.0],"marquell":[1556,19,0.6317],"marquies":[450,0,0.5306],"mashon":[6,0,0.0],"mathaniel":[29,0,0.0],"matther":[69,0,0.0],"mic":[26,0,0.0],"michaeljohn":[240,0,0.476],"miguelangel":[3959,0,0.7195],"minas":[117,0,0.4136],"mosi":[105,11,0.3737],"nasir":[17290,54,0.8452],"nehal":[77,197,0.3505],"nikitas":[73,0,0.0],"olufemi":[383,0,0.5166],"omid":[780,0,0.5784],"rashad":[16151,85,0.8377],"rayan":[8394,1023,0.7084],"saad":[2417,0,0.6767],"salik":[79,0,0.0],"seddrick":[80,0,0.0],"shaul":[706,0,0.5698],"shaundell":[42,5,0.0],"sherrick":[166,5,0.4335],"sione":[1471,6,0.6313],"sly":[91,0,0.0],"tamal":[16,0,0.0],"taraus":[17,0,0.0],"teddrick":[228,0,0.4716],"todrick":[90,0,0.0],"tolan":[44,0,0.0],"tomar":[45,0,0.0],"travus":[85,0,0.0],"trevar":[367,0,0.5129],"vassilios":[23,0,0.0],"verron":[17,0,0.0],"vondale":[6,0,0.0],"yaw":[398,0,0.52],"zef":[44,0,0.0],"abdalla":[390,0,0.5182],"alterick":[12,0,0.0],"anant":[364,22,0.4878],"antawan":[198,0,0.4593],"antiwan":[58,0,0.0],"antowan":[119,0,0.4151],"antowine":[10,0,0.0],"antwin":[5,0,0.0],"antwun":[40,0,0.0],"apurva":[28,102,0.3317],"argelio":[101,0,0.4009],"arhtur":[15,0,0.0],"asif":[590,0,0.5542],"azar":[172,5,0.4369],"bashar":[370,0,0.5136],"bily":[10,0,0.0],"binyomin":[1276,0,0.6212],"braeden":[13607,230,0.8144],"brandal":[20,0,0.0],"brandell":[91,6,0.0],"brandley":[67,0,0.0],"carlose":[12,0,0.0],"cavett":[5,0,0.0],"ceddrick":[47,0,0.0],"chrsitopher":[176,0,0.4491],"chubasco":[5,0,0.0],"cott":[30,0,0.0],"coury":[57,0,0.0],"dakarai":[1462,18,0.6263],"damico":[76,0,0.0],"dartanian":[242,0,0.4768],"delondo":[5,0,0.0],"demarquis":[449,0,0.5304],"demonde":[5,0,0.0],"denim":[2447,1020,0.4997],"derrico":[102,0,0.4017],"deshanon":[5,0,0.0],"deshay":[183,290,0.328],"devale":[15,0,0.0],"devonn":[432,23,0.5047],"donaven":[1179,0,0.6143],"dontez":[1018,0,0.6015],"drago":[119,0,0.4151],"duvon":[31,0,0.0],"dwaylon":[20,0,0.0],"eathan":[1205,0,0.6162],"enver":[81,0,0.0],"eren":[1964,197,0.6061],"fadil":[145,0,0.4323],"fionn":[657,0,0.5635],"gabreal":[149,41,0.3574],"goran":[108,0,0.4067],"gregoire":[84,0,0.0],"hany":[37,11,0.0],"hanz":[123,0,0.418],"hec":[5,0,0.0],"hermino":[5,0,0.0],"hesham":[416,0,0.5238],"hickory":[17,0,0.0],"hosam":[72,0,0.0],"hoss":[90,0,0.0],"iban":[524,0,0.5439],"imamu":[5,0,0.0],"iyad":[233,0,0.4735],"jabaar":[15,0,0.0],"jaems":[47,0,0.0],"jafari":[217,0,0.4673],"jaimey":[25,126,0.3636],"jalani":[654,1441,0.4569],"jamor":[28,0,0.0],"jarin":[1015,33,0.5851],"jarrard":[57,0,0.0],"jarren":[2199,10,0.6658],"jarriel":[68,0,0.0],"javaughn":[939,0,0.5945],"jermar":[327,0,0.5029],"jeromi":[40,0,0.0],"jese":[452,0,0.531],"jhonathan":[911,0,0.5919],"johnatha":[57,0,0.0],"jorey":[238,25,0.438],"jourdan":[1861,2324,0.4022],"jullian":[2798,948,0.5338],"juma":[149,0,0.4346],"jumaane":[135,0,0.4261],"kasan":[70,0,0.0],"kashif":[916,0,0.5924],"kasimu":[5,0,0.0],"kayode":[198,0,0.4593],"kayvon":[1371,0,0.6274],"kejuan":[1669,0,0.6445],"kevinn":[24,0,0.0],"khyle":[325,24,0.4736],"kiam":[144,0,0.4317],"kindu":[11,0,0.0],"kondwani":[11,0,0.0],"kwadwo":[275,0,0.4879],"lain":[469,27,0.5098],"lakendrick":[861,0,0.587],"lapaul":[10,0,0.0],"larico":[144,0,0.4317],"laterrence":[25,0,0.0],"latron":[358,0,0.5108],"leevon":[70,0,0.0],"lehi":[348,0,0.5083],"lekeith":[125,0,0.4194],"lomant":[5,0,0.0],"maneesh":[32,0,0.0],"marguis":[154,0,0.4375],"marid":[5,0,0.0],"marrico":[12,0,0.0],"matthe":[68,0,0.0],"melchizedek":[419,0,0.5244],"messiah":[25371,1026,0.8499],"micaiah":[2949,1517,0.482],"monsanto":[5,0,0.0],"nadar":[10,44,0.0],"narayan":[273,0,0.4872],"naser":[437,0,0.5281],"nichalos":[485,0,0.5371],"nimesh":[67,0,0.0],"octavis":[289,0,0.4922],"osmar":[2244,0,0.6702],"pattrick":[89,0,0.0],"piotr":[734,0,0.5731],"qunicy":[58,0,0.0],"ragen":[15,583,0.5414],"ramil":[143,0,0.4311],"rashiem":[45,0,0.0],"rashone":[28,6,0.0],"rashun":[564,18,0.5359],"rayn":[575,633,0.323],"regginal":[15,0,0.0],"riad":[231,0,0.4727],"salih":[565,0,0.5504],"saun":[10,0,0.0],"shawki":[5,0,0.0],"shedrich":[5,0,0.0],"shelden":[275,5,0.4807],"snapper":[24,0,0.0],"stamatis":[31,0,0.0],"strider":[439,0,0.5285],"sujal":[49,0,0.0],"tarone":[46,0,0.0],"taurence":[27,0,0.0],"thyron":[5,0,0.0],"tonka":[5,0,0.0],"trifon":[5,0,0.0],"turon":[95,0,0.0],"tygh":[5,0,0.0],"tyrece":[751,0,0.5751],"umang":[5,0,0.0],"yannis":[559,147,0.4511],"yaphett":[5,0,0.0],"yovani":[2057,16,0.6582],"zackariah":[1326,0,0.6245],"zeus":[2554,0,0.6814],"shalawn":[0,125,0.4194],"toshiba":[0,408,0.5221],"nekia":[50,811,0.5529],"dayanara":[0,6533,0.763],"passion":[0,2445,0.6777],"charnissa":[0,32,0.0],"kidada":[0,93,0.0],"saresa":[0,26,0.0],"takia":[0,1962,0.6585],"tiaa":[0,29,0.0],"timitra":[0,23,0.0],"nakeya":[0,805,0.5812],"ticey":[0,37,0.0],"kameka":[0,288,0.4919],"shakita":[0,1202,0.616],"akia":[94,1560,0.6071],"willona":[0,82,0.0],"courtni":[0,937,0.5943],"nakeshia":[0,450,0.5306],"tikesha":[0,109,0.4075],"courtnee":[9,1627,0.6392],"nakeba":[0,20,0.0],"nakkia":[0,119,0.4151],"takenya":[0,286,0.4913],"kissa":[0,68,0.0],"shakima":[0,627,0.5595],"chasiti":[0,380,0.516],"emili":[0,1888,0.6552],"kosha":[0,113,0.4106],"makeesha":[0,41,0.0],"makeisha":[0,229,0.472],"nakeia":[0,393,0.5189],"nakiesha":[0,260,0.483],"tamecca":[0,67,0.0],"anitria":[0,112,0.4098],"asheley":[0,786,0.5791],"cadence":[2049,22182,0.8027],"chalese":[0,73,0.0],"chasitity":[0,29,0.0],"dakisha":[0,56,0.0],"demisha":[0,237,0.4749],"drita":[0,41,0.0],"dyani":[20,1294,0.6142],"feather":[0,554,0.5487],"keiona":[0,885,0.5894],"lakecha":[0,51,0.0],"lanetra":[0,90,0.0],"muranda":[0,66,0.0],"niamalika":[0,10,0.0],"shakena":[0,387,0.5175],"shemekia":[0,333,0.5045],"tashica":[0,101,0.4009],"tysie":[0,18,0.0],"walidah":[0,15,0.0],"aneitra":[0,9,0.0],"chariss":[0,38,0.0],"chelse":[0,838,0.5846],"chendra":[0,9,0.0],"denyel":[0,32,0.0],"destiney":[0,7678,0.777],"grisela":[0,70,0.0],"hanifah":[0,161,0.4414],"jenika":[0,906,0.5914],"jeronica":[0,179,0.4506],"latash":[0,92,0.0],"lateka":[0,171,0.4466],"latiesha":[0,308,0.4977],"lekecia":[0,56,0.0],"messina":[0,117,0.4136],"nakai":[884,185,0.501],"nikeya":[0,508,0.5412],"pashen":[0,22,0.0],"saraya":[0,1640,0.643],"sarika":[0,538,0.5462],"shameika":[0,837,0.5845],"shyanne":[0,9411,0.7947],"syrita":[0,112,0.4098],"tanikia":[0,59,0.0],"twanetta":[0,9,0.0],"yesennia":[0,77,0.0],"arnetria":[0,13,0.0],"ayala":[0,1124,0.6102],"channelle":[0,275,0.4879],"chiqueta":[0,26,0.0],"cortnie":[0,869,0.5878],"fawna":[0,168,0.4451],"fawne":[0,71,0.0],"heatherann":[0,54,0.0],"ieasha":[0,534,0.5455],"kelisha":[0,405,0.5215],"kimwana":[0,8,0.0],"kyana":[0,2162,0.667],"lameca":[0,22,0.0],"latrail":[107,13,0.3708],"marquisa":[0,195,0.458],"minde":[0,23,0.0],"nakea":[0,228,0.4716],"nakie":[14,8,0.0],"nakiea":[0,66,0.0],"neilie":[0,8,0.0],"neosha":[0,204,0.4619],"pashion":[0,57,0.0],"rececca":[0,26,0.0],"ronesha":[0,773,0.5776],"ruchel":[0,385,0.5171],"samika":[0,336,0.5053],"satonia":[0,13,0.0],"sephora":[0,972,0.5975],"shandee":[0,165,0.4435],"shandrell":[0,86,0.0],"shanitra":[0,273,0.4872],"shantea":[0,215,0.4665],"syeda":[0,1787,0.6504],"tanashia":[0,201,0.4606],"tavares":[2966,23,0.6898],"temesha":[0,131,0.4235],"tikia":[0,254,0.481],"tomesha":[0,249,0.4792],"trenisha":[0,191,0.4562],"tycie":[0,31,0.0],"yosha":[0,37,0.0],"ahnjayla":[0,7,0.0],"alysson":[0,1528,0.6368],"amica":[0,99,0.0],"aminata":[0,2241,0.6701],"amisha":[0,848,0.5857],"analiza":[0,207,0.4632],"analyn":[0,462,0.5329],"ayasha":[0,289,0.4922],"bahia":[0,22,0.0],"brisa":[0,8468,0.7856],"cambra":[0,39,0.0],"caty":[0,189,0.4553],"chakita":[0,134,0.4254],"curtisha":[0,303,0.4963],"duewa":[0,7,0.0],"earth":[11,38,0.0],"etosha":[0,77,0.0],"felichia":[0,35,0.0],"free":[56,76,0.2442],"heatherlee":[0,12,0.0],"ilisha":[0,104,0.4034],"kalimba":[0,13,0.0],"kamryn":[5259,24261,0.7348],"kaydee":[0,2395,0.6759],"keitra":[0,93,0.0],"kersha":[0,31,0.0],"khia":[0,866,0.5875],"kioka":[0,13,0.0],"kortni":[0,1189,0.615],"kourtni":[0,818,0.5826],"kowana":[0,20,0.0],"kyann":[10,371,0.5026],"lachana":[0,39,0.0],"lakeish":[0,44,0.0],"lakethia":[0,126,0.4201],"laketra":[0,146,0.4329],"lanesia":[0,25,0.0],"laquisa":[0,47,0.0],"lasheena":[0,478,0.5359],"latifah":[0,1470,0.6335],"latrissa":[0,7,0.0],"laytonya":[0,12,0.0],"mamta":[0,39,0.0],"manessa":[0,146,0.4329],"markeya":[0,383,0.5166],"mikisha":[0,101,0.4009],"milika":[0,110,0.4083],"mistina":[0,93,0.0],"moranda":[0,270,0.4863],"nakeeta":[0,99,0.0],"naya":[0,6225,0.7588],"nikeesha":[0,17,0.0],"nitra":[0,35,0.0],"niya":[0,4726,0.7349],"nyema":[0,667,0.5648],"nykia":[0,993,0.5994],"phillisa":[0,7,0.0],"rakia":[0,504,0.5405],"ranya":[0,982,0.5984],"reagen":[76,638,0.51],"ryane":[58,846,0.5533],"scotia":[0,30,0.0],"shakeema":[0,629,0.5597],"shakia":[0,2358,0.6745],"shaleta":[0,107,0.4059],"shanai":[0,392,0.5187],"shatanya":[0,44,0.0],"sheketa":[0,84,0.0],"shilah":[0,897,0.5906],"sundown":[6,12,0.0],"sydonna":[0,7,0.0],"takiesha":[0,182,0.452],"tameiko":[0,13,0.0],"tamonica":[0,39,0.0],"tanaisha":[0,235,0.4742],"tarissa":[0,247,0.4785],"tasheema":[0,126,0.4201],"tashiba":[0,138,0.428],"telana":[0,22,0.0],"uronda":[0,7,0.0],"venesha":[0,96,0.0],"yesica":[5,2402,0.6749],"addy":[22,1467,0.6252],"akeesha":[0,11,0.0],"akila":[0,718,0.5712],"akosua":[0,355,0.51],"anasa":[0,13,0.0],"anikka":[0,260,0.483],"arkisha":[0,50,0.0],"arnecia":[0,77,0.0],"arti":[9,256,0.4682],"asucena":[0,442,0.5291],"asya":[0,2204,0.6686],"ayeisha":[0,137,0.4273],"baleria":[0,430,0.5267],"bianka":[0,2520,0.6803],"brigita":[0,17,0.0],"brittina":[0,40,0.0],"brittni":[6,5986,0.7548],"burgandy":[0,196,0.4585],"cacey":[23,207,0.4251],"caeli":[0,1161,0.613],"carilla":[0,11,0.0],"carmesha":[0,192,0.4567],"caternia":[0,6,0.0],"catosha":[0,6,0.0],"chalisa":[0,119,0.4151],"chenee":[0,59,0.0],"cheralee":[0,6,0.0],"chrishonda":[0,135,0.4261],"christela":[0,6,0.0],"chystal":[0,45,0.0],"comfort":[0,249,0.4792],"crimson":[539,1250,0.4545],"dacey":[0,648,0.5623],"dalisha":[0,335,0.505],"dallanara":[0,58,0.0],"dameka":[0,240,0.476],"danniele":[0,51,0.0],"darann":[0,6,0.0],"darnesha":[0,527,0.5444],"darnetha":[0,6,0.0],"dartanya":[0,11,0.0],"demekia":[0,31,0.0],"devyn":[6746,9247,0.4861],"ebecca":[0,38,0.0],"eboney":[0,747,0.5747],"ebonique":[0,299,0.4951],"elham":[92,335,0.4127],"emeka":[472,17,0.5192],"enilda":[0,6,0.0],"geneane":[0,6,0.0],"gicela":[0,80,0.0],"hasina":[0,221,0.4689],"hena":[0,344,0.5073],"henna":[0,1288,0.622],"huma":[0,235,0.4742],"jakia":[0,1198,0.6157],"jamelia":[0,920,0.5928],"jamesha":[0,2274,0.6714],"jeanete":[0,11,0.0],"jenohn":[0,14,0.0],"jobina":[0,126,0.4201],"jonay":[10,151,0.414],"kaiya":[33,8330,0.7814],"kamera":[0,269,0.486],"karime":[0,2538,0.6809],"katera":[0,551,0.5482],"kayci":[14,1636,0.638],"khristal":[0,45,0.0],"kinisha":[0,124,0.4187],"kweli":[228,11,0.4538],"lachrista":[0,97,0.0],"laciana":[0,24,0.0],"lacora":[0,139,0.4286],"lacosta":[0,250,0.4796],"lakissia":[0,6,0.0],"laneka":[0,180,0.4511],"laneshia":[0,225,0.4704],"lareesa":[0,48,0.0],"lashante":[0,272,0.4869],"lasheen":[0,6,0.0],"lashondria":[0,34,0.0],"lashunna":[0,23,0.0],"latamara":[0,68,0.0],"latessia":[0,6,0.0],"latiffany":[0,223,0.4697],"latoia":[0,288,0.4919],"latoscha":[0,6,0.0],"leahann":[0,69,0.0],"leidy":[0,848,0.5857],"lequisha":[0,141,0.4298],"leshanda":[0,38,0.0],"libya":[0,14,0.0],"likisha":[0,67,0.0],"lizzett":[0,221,0.4689],"lovelyn":[0,368,0.5132],"lucreshia":[0,6,0.0],"lushana":[0,6,0.0],"madria":[0,17,0.0],"mande":[0,92,0.0],"maricarmen":[0,1130,0.6106],"maryah":[0,2172,0.6674],"mega":[140,108,0.2703],"melesha":[0,18,0.0],"melica":[0,27,0.0],"miho":[0,95,0.0],"mikesha":[0,283,0.4904],"minerba":[0,11,0.0],"montrece":[0,6,0.0],"naikia":[0,6,0.0],"nakida":[0,37,0.0],"nakya":[0,620,0.5585],"natashya":[0,6,0.0],"natia":[0,753,0.5754],"natishia":[0,48,0.0],"neelie":[0,90,0.0],"nefretiri":[0,34,0.0],"neketa":[0,35,0.0],"nikeshia":[0,109,0.4075],"omekia":[0,12,0.0],"orli":[0,489,0.5379],"panya":[0,29,0.0],"pashun":[0,6,0.0],"pei":[0,18,0.0],"porscha":[0,1457,0.6327],"rashanna":[0,183,0.4525],"rasheema":[0,113,0.4106],"raygan":[51,1037,0.5789],"rekita":[0,82,0.0],"ronisha":[0,1403,0.6294],"roshni":[0,1027,0.6023],"sadiga":[0,17,0.0],"sakia":[0,263,0.484],"samica":[0,23,0.0],"selema":[0,6,0.0],"selethia":[0,6,0.0],"shadawn":[0,104,0.4034],"shadon":[33,44,0.0],"shaketha":[0,91,0.0],"shalandria":[0,105,0.4042],"shanitta":[0,37,0.0],"shantai":[0,160,0.4408],"shanthi":[0,44,0.0],"shaquila":[0,405,0.5215],"sharnel":[0,31,0.0],"shaunice":[0,609,0.5569],"shavanda":[0,24,0.0],"shavonia":[0,25,0.0],"shelana":[0,29,0.0],"shermeka":[0,139,0.4286],"shermika":[0,151,0.4358],"shetal":[0,6,0.0],"shi":[80,332,0.4214],"shikina":[0,18,0.0],"srah":[0,84,0.0],"sundara":[0,11,0.0],"syreta":[0,32,0.0],"tahisa":[0,6,0.0],"taiesha":[0,251,0.4799],"tajauna":[0,18,0.0],"takela":[0,269,0.486],"takeysha":[0,123,0.418],"takina":[0,89,0.0],"takiya":[0,1022,0.6019],"taniqua":[0,605,0.5564],"taquisha":[0,307,0.4974],"tashma":[0,6,0.0],"teashia":[0,43,0.0],"tennesha":[0,6,0.0],"thasha":[0,22,0.0],"thuy":[17,1076,0.5983],"tieysha":[0,6,0.0],"tiffay":[0,139,0.4286],"tomecca":[0,12,0.0],"tomorra":[0,6,0.0],"tomya":[0,25,0.0],"tosheba":[0,34,0.0],"trameka":[0,131,0.4235],"travina":[0,28,0.0],"trinidy":[33,840,0.566],"tumika":[0,11,0.0],"turiya":[0,13,0.0],"twanisha":[0,54,0.0],"twynette":[0,6,0.0],"tycee":[0,24,0.0],"tyhisa":[0,6,0.0],"tyhisha":[0,17,0.0],"tymisha":[0,51,0.0],"unika":[0,123,0.418],"wafa":[0,469,0.5342],"wimberly":[0,57,0.0],"yanet":[0,2256,0.6707],"yasheka":[0,87,0.0],"yohana":[7,1367,0.6244],"abeni":[0,403,0.5211],"abygail":[0,2841,0.6907],"adeola":[43,417,0.4828],"ai":[11,392,0.5068],"ailee":[0,849,0.5858],"alanea":[0,109,0.4075],"alexas":[0,787,0.5792],"alexcia":[0,1539,0.6374],"aleya":[0,2023,0.6612],"algeria":[0,32,0.0],"aliette":[0,5,0.0],"allysia":[0,615,0.5578],"alysen":[0,456,0.5318],"amamda":[0,247,0.4785],"ambur":[0,495,0.5389],"andranette":[0,10,0.0],"anicka":[0,82,0.0],"annalissa":[0,225,0.4704],"annitra":[0,49,0.0],"apache":[16,10,0.0],"argyro":[0,5,0.0],"arneice":[0,5,0.0],"arnesha":[0,304,0.4966],"artishia":[0,10,0.0],"ashantay":[0,35,0.0],"ashonda":[0,36,0.0],"autumne":[0,62,0.0],"awn":[5,5,0.0],"bahiya":[0,15,0.0],"biljana":[0,5,0.0],"bobbilynn":[0,5,0.0],"bolanle":[0,5,0.0],"breann":[0,5808,0.7528],"brecca":[0,30,0.0],"breeze":[190,901,0.5018],"brendaliz":[0,163,0.4424],"brienna":[0,1694,0.6458],"brittan":[480,878,0.4051],"britteny":[0,1450,0.6323],"brittnee":[0,2822,0.6901],"brittnie":[0,2301,0.6724],"calandria":[0,100,0.4],"caletha":[0,5,0.0],"camas":[0,34,0.0],"cameka":[0,66,0.0],"camryn":[4633,30315,0.7882],"cartisha":[0,5,0.0],"casee":[0,245,0.4778],"catressa":[0,5,0.0],"cawanda":[0,19,0.0],"ceara":[0,1510,0.6358],"cecili":[0,26,0.0],"chala":[0,139,0.4286],"chanee":[0,176,0.4491],"chanika":[0,233,0.4735],"chantia":[0,301,0.4957],"chantra":[19,35,0.0],"chauntell":[0,34,0.0],"chekita":[0,15,0.0],"chemeka":[0,82,0.0],"chemika":[0,73,0.0],"cherra":[0,17,0.0],"cherrelle":[0,848,0.5857],"chiriga":[0,5,0.0],"chistie":[0,5,0.0],"chree":[0,10,0.0],"chrissey":[0,31,0.0],"ciji":[0,579,0.5525],"clesha":[0,10,0.0],"cortni":[0,823,0.5831],"cowanda":[0,26,0.0],"curtrina":[0,22,0.0],"cyra":[0,867,0.5876],"danesa":[0,29,0.0],"danila":[49,181,0.3717],"dannille":[0,10,0.0],"daveta":[0,10,0.0],"dayo":[11,5,0.0],"dekeshia":[0,10,0.0],"dekisha":[0,70,0.0],"delmy":[0,663,0.5643],"demetia":[0,5,0.0],"dennae":[0,5,0.0],"deondrea":[68,88,0.2474],"deseray":[0,707,0.5699],"detrica":[0,5,0.0],"dezarae":[0,1421,0.6305],"dimetra":[0,20,0.0],"dixi":[0,60,0.0],"dorica":[0,5,0.0],"dwaina":[0,5,0.0],"ebelia":[0,53,0.0],"ebone":[0,1182,0.6145],"eiman":[0,103,0.4026],"eleisha":[0,162,0.4419],"elisandra":[0,225,0.4704],"elisheba":[0,215,0.4665],"esmeraldo":[0,46,0.0],"etonya":[0,5,0.0],"euricka":[0,5,0.0],"evelis":[0,10,0.0],"fiorella":[0,1548,0.638],"flower":[0,118,0.4144],"genessa":[0,470,0.5344],"gittle":[0,5,0.0],"guinnevere":[0,25,0.0],"habibah":[0,44,0.0],"halee":[0,2952,0.694],"hariklia":[0,21,0.0],"harmonie":[0,2738,0.6875],"hayde":[0,213,0.4657],"ijnanya":[0,10,0.0],"ikeisha":[0,69,0.0],"ineke":[0,25,0.0],"iyesha":[0,269,0.486],"jacilyn":[0,386,0.5173],"jadee":[0,306,0.4971],"janeka":[0,249,0.4792],"jatina":[0,34,0.0],"jemica":[0,42,0.0],"jeness":[0,5,0.0],"jennah":[0,3081,0.6977],"jenniper":[0,5,0.0],"jesscia":[0,383,0.5166],"jessina":[0,128,0.4214],"jevonne":[0,26,0.0],"jolen":[45,10,0.0],"jonene":[0,5,0.0],"josselyn":[0,3306,0.7039],"juaria":[0,5,0.0],"judite":[0,5,0.0],"kamberly":[0,5,0.0],"kamecia":[0,39,0.0],"kamica":[0,70,0.0],"karyna":[0,852,0.5861],"kata":[0,53,0.0],"katee":[0,637,0.5608],"katoya":[0,189,0.4553],"kayse":[69,447,0.47],"keanya":[0,15,0.0],"kelsy":[39,3215,0.6941],"kenyia":[0,103,0.4026],"keosha":[0,1884,0.655],"keshi":[0,11,0.0],"kesiha":[0,5,0.0],"kessler":[537,119,0.4612],"keyia":[0,68,0.0],"keyonia":[0,366,0.5127],"keyva":[0,5,0.0],"kiasha":[0,175,0.4486],"kieshia":[0,38,0.0],"kimbie":[0,5,0.0],"kimeko":[0,20,0.0],"kineta":[0,60,0.0],"kionna":[0,1178,0.6142],"kishana":[0,89,0.0],"kito":[160,11,0.4179],"kiyana":[0,1567,0.639],"konika":[0,5,0.0],"koree":[262,447,0.3594],"krysty":[0,33,0.0],"kyan":[3711,164,0.6873],"kyia":[0,1045,0.6038],"laguanda":[0,29,0.0],"lakeda":[0,53,0.0],"lakeia":[0,520,0.5432],"lakeyshia":[0,108,0.4067],"lakischa":[0,14,0.0],"lakiya":[0,671,0.5653],"laleta":[0,5,0.0],"lanena":[0,5,0.0],"lanique":[0,266,0.485],"laquanta":[0,333,0.5045],"laqueeta":[0,15,0.0],"laralyn":[0,5,0.0],"lashowna":[0,5,0.0],"lastacia":[0,79,0.0],"latanisha":[0,5,0.0],"latarsia":[0,5,0.0],"latassha":[0,5,0.0],"latawn":[0,5,0.0],"latera":[0,98,0.0],"latracia":[0,16,0.0],"latria":[0,64,0.0],"latryce":[0,11,0.0],"lavisha":[0,47,0.0],"lawon":[5,5,0.0],"leiloni":[0,456,0.5318],"lekeesha":[0,21,0.0],"lekeitha":[0,18,0.0],"leshunda":[0,15,0.0],"letrica":[0,5,0.0],"ligeia":[0,5,0.0],"lindsie":[0,969,0.5973],"lizbet":[0,1195,0.6155],"loraina":[0,198,0.4593],"lytisha":[0,16,0.0],"maari":[0,17,0.0],"maegen":[0,875,0.5884],"mahina":[0,649,0.5624],"maiko":[40,71,0.2617],"maila":[0,716,0.571],"maiya":[0,4289,0.7265],"makesia":[0,5,0.0],"makeva":[0,15,0.0],"makiesha":[0,10,0.0],"manica":[0,39,0.0],"manju":[0,12,0.0],"mareesa":[0,75,0.0],"mariadelourdes":[0,17,0.0],"markelle":[227,125,0.3284],"marranda":[0,71,0.0],"marriah":[0,702,0.5693],"maylin":[0,3009,0.6957],"meike":[0,20,0.0],"mekeisha":[0,12,0.0],"melanni":[0,140,0.4292],"meldoy":[0,28,0.0],"melitza":[0,96,0.0],"miah":[10,9435,0.7942],"mikiko":[0,5,0.0],"minday":[0,25,0.0],"minden":[0,16,0.0],"mistelle":[0,47,0.0],"modupe":[0,64,0.0],"morissa":[0,196,0.4585],"myndee":[0,21,0.0],"nakeysha":[0,118,0.4144],"naki":[55,5,0.0],"nakiah":[0,624,0.559],"nakiya":[5,1782,0.6486],"namita":[0,135,0.4261],"nashelle":[0,26,0.0],"nathifa":[0,61,0.0],"neera":[0,154,0.4375],"nelissa":[0,169,0.4456],"neshawn":[64,10,0.0],"nichet":[0,5,0.0],"nickell":[0,11,0.0],"nickia":[0,260,0.483],"nikeita":[0,12,0.0],"nikiya":[0,587,0.5537],"nilam":[0,76,0.0],"nohemy":[0,407,0.5219],"odete":[0,5,0.0],"olajumoke":[0,23,0.0],"onya":[0,184,0.453],"panayiota":[0,112,0.4098],"phara":[0,21,0.0],"pondra":[0,5,0.0],"porshia":[0,608,0.5568],"ramandeep":[16,87,0.34],"rashauna":[0,190,0.4558],"rashima":[0,44,0.0],"ratonya":[0,10,0.0],"rayza":[0,40,0.0],"rei":[443,526,0.3242],"rhiannon":[5,15325,0.8368],"romika":[0,27,0.0],"rotisha":[0,5,0.0],"sadira":[0,264,0.4843],"saffron":[0,709,0.5701],"sahra":[0,859,0.5868],"salama":[0,42,0.0],"salanda":[0,5,0.0],"saleena":[0,776,0.578],"salonda":[0,5,0.0],"sanae":[0,318,0.5005],"saray":[0,2288,0.6719],"saron":[151,771,0.4958],"satya":[218,378,0.352],"sawana":[0,10,0.0],"selima":[0,50,0.0],"shadow":[598,491,0.3335],"shafonda":[0,19,0.0],"shakema":[0,435,0.5277],"shakesha":[0,138,0.428],"shalesha":[0,26,0.0],"shalika":[0,109,0.4075],"shammara":[0,56,0.0],"shammie":[0,5,0.0],"shandie":[0,92,0.0],"shanegua":[0,12,0.0],"shaneque":[0,120,0.4158],"shanikqua":[0,189,0.4553],"shantrel":[0,42,0.0],"shaquetta":[0,462,0.5329],"sharain":[0,53,0.0],"sharella":[0,10,0.0],"shareta":[0,71,0.0],"sharonica":[0,246,0.4782],"shashawn":[0,5,0.0],"shatima":[0,172,0.4471],"shatona":[0,88,0.0],"shatoya":[0,840,0.5849],"shaunita":[0,135,0.4261],"shawauna":[0,11,0.0],"shawnika":[0,158,0.4397],"shawntrell":[8,50,0.0],"shaylynn":[0,2305,0.6725],"sheketha":[0,11,0.0],"shelese":[0,15,0.0],"sheleta":[0,42,0.0],"sheneta":[0,21,0.0],"sherille":[0,11,0.0],"sherinda":[0,5,0.0],"sherricka":[0,57,0.0],"shimika":[0,174,0.4481],"shruti":[0,1088,0.6073],"shuntia":[0,61,0.0],"shurhonda":[0,5,0.0],"sibil":[0,5,0.0],"starcia":[0,5,0.0],"syvia":[0,5,0.0],"tabia":[0,171,0.4466],"takara":[0,1466,0.6332],"takella":[0,5,0.0],"takesia":[0,11,0.0],"talibah":[0,123,0.418],"tamaki":[0,35,0.0],"tamarin":[0,20,0.0],"tamicha":[0,16,0.0],"tamiika":[0,5,0.0],"tamike":[0,43,0.0],"tandria":[0,39,0.0],"tanielle":[0,134,0.4254],"tanith":[0,122,0.4173],"tanitra":[0,35,0.0],"tasneem":[0,1607,0.6412],"tatianna":[0,5595,0.7496],"tegra":[0,24,0.0],"tekoah":[0,12,0.0],"telli":[0,11,0.0],"telsha":[0,5,0.0],"temeeka":[0,5,0.0],"temeshia":[0,38,0.0],"temiko":[0,17,0.0],"tenica":[0,37,0.0],"tenishia":[0,137,0.4273],"tennisha":[0,44,0.0],"tian":[361,153,0.3808],"tiani":[0,738,0.5736],"tiffy":[0,24,0.0],"tikeshia":[0,10,0.0],"tiria":[0,5,0.0],"tirsa":[0,132,0.4241],"tomeshia":[0,76,0.0],"tomicia":[0,10,0.0],"tomikia":[0,55,0.0],"tomyka":[0,5,0.0],"tranda":[0,5,0.0],"tranell":[98,40,0.3039],"treava":[0,5,0.0],"triniti":[0,2962,0.6943],"trinket":[0,16,0.0],"triste":[0,5,0.0],"tritia":[0,79,0.0],"tusha":[0,10,0.0],"tyeasha":[0,208,0.4636],"tyice":[0,5,0.0],"tyiesha":[0,699,0.5689],"tyletha":[0,5,0.0],"tyrine":[0,5,0.0],"ureka":[0,15,0.0],"uzoamaka":[0,40,0.0],"veronnica":[0,59,0.0],"vontressa":[0,11,0.0],"voronica":[0,10,0.0],"wakisha":[0,86,0.0],"wakita":[0,23,0.0],"willamena":[0,36,0.0],"wyconda":[0,10,0.0],"ylenia":[0,35,0.0],"yovanna":[0,333,0.5045],"yulissa":[0,4103,0.7226],"zarifa":[0,29,0.0],"zira":[0,168,0.4451],"savalas":[102,0,0.4017],"rishi":[4934,0,0.7386],"tavaris":[2507,6,0.6784],"rashard":[2701,0,0.6863],"shareef":[1187,0,0.6149],"telley":[45,0,0.0],"rahmon":[63,0,0.0],"tymon":[527,0,0.5444],"tellas":[46,0,0.0],"ihsan":[612,40,0.5283],"jaworski":[58,0,0.0],"kojak":[15,0,0.0],"tyrin":[1916,11,0.6532],"damieon":[194,0,0.4576],"gavriel":[1935,5,0.6559],"hideki":[27,0,0.0],"jaden":[80689,13574,0.8516],"jarron":[1507,0,0.6356],"josemanuel":[1284,0,0.6217],"mohamad":[3589,0,0.711],"rafi":[691,5,0.5644],"agron":[133,0,0.4248],"chason":[1239,0,0.6186],"chioke":[86,0,0.0],"demtrius":[60,0,0.0],"dewone":[44,0,0.0],"fuquan":[224,0,0.47],"jumar":[138,0,0.428],"kalif":[407,0,0.5219],"laman":[25,0,0.0],"marqus":[960,0,0.5965],"sirica":[8,0,0.0],"taha":[2316,0,0.6729],"tysen":[1643,10,0.6398],"zebadiah":[1080,0,0.6067],"ahmid":[7,0,0.0],"andrico":[13,0,0.0],"ankur":[668,0,0.565],"bomani":[178,0,0.4501],"christophen":[28,0,0.0],"cimarron":[42,6,0.0],"cornellius":[144,0,0.4317],"cristo":[1225,0,0.6176],"daimion":[86,0,0.0],"dawaun":[224,0,0.47],"deitrick":[134,0,0.4254],"dondrell":[107,0,0.4059],"donti":[13,0,0.0],"geovani":[1480,0,0.6341],"jacobe":[1292,0,0.6223],"jaimeson":[343,16,0.4882],"javad":[57,0,0.0],"jermichael":[418,0,0.5242],"johnhenry":[709,0,0.5701],"joshawa":[508,0,0.5412],"joshva":[59,0,0.0],"juanmanuel":[810,0,0.5817],"lamour":[28,0,0.0],"malcoln":[7,0,0.0],"markese":[1165,0,0.6133],"medrick":[17,0,0.0],"montre":[371,0,0.5139],"pax":[971,54,0.5704],"rodriques":[226,0,0.4708],"romond":[66,0,0.0],"salman":[2529,0,0.6806],"tamarcus":[554,0,0.5487],"tavarus":[995,0,0.5996],"tavius":[403,0,0.5211],"tiron":[175,0,0.4486],"vasean":[16,0,0.0],"zacchaeus":[1910,0,0.6562],"zaire":[8859,1425,0.6912],"zaki":[1457,0,0.6327],"aamir":[2616,6,0.6822],"aashish":[137,0,0.4273],"abdule":[6,0,0.0],"adom":[259,0,0.4827],"ajani":[2174,252,0.6067],"alexsandro":[306,0,0.4971],"amari":[29973,20473,0.5588],"atilla":[113,0,0.4106],"ayal":[39,0,0.0],"bardo":[39,0,0.0],"barrick":[64,0,0.0],"cashawn":[66,0,0.0],"chukwuemeka":[675,0,0.5659],"dakari":[4031,194,0.6919],"damir":[3208,5,0.7003],"damisi":[6,0,0.0],"damiso":[11,0,0.0],"darylle":[6,0,0.0],"demetries":[61,0,0.0],"diondray":[6,0,0.0],"donae":[6,197,0.4479],"dray":[299,0,0.4951],"efthimios":[21,0,0.0],"elefterios":[6,0,0.0],"erine":[12,88,0.352],"fadi":[811,0,0.5818],"falando":[12,0,0.0],"felando":[6,0,0.0],"geovanny":[2788,0,0.6891],"gerrett":[92,0,0.0],"huberto":[6,0,0.0],"ivica":[11,0,0.0],"janeiro":[6,0,0.0],"jeramaine":[12,0,0.0],"jerin":[568,54,0.5102],"jermall":[70,0,0.0],"jerrall":[11,0,0.0],"jerrico":[209,0,0.464],"jibri":[264,0,0.4843],"jimbob":[6,0,0.0],"josedejesus":[703,0,0.5694],"jwyanza":[6,0,0.0],"kalan":[1320,242,0.5398],"kalem":[955,0,0.596],"karlon":[57,0,0.0],"karras":[6,0,0.0],"kaseen":[16,0,0.0],"kodie":[1347,1326,0.3454],"korrey":[113,0,0.4106],"kwon":[39,0,0.0],"kylon":[1384,0,0.6282],"lacorey":[91,0,0.0],"lajohn":[37,0,0.0],"lamarco":[109,0,0.4075],"magdiel":[594,26,0.5351],"makarios":[120,0,0.4158],"marjoe":[12,0,0.0],"marquese":[1381,0,0.628],"martrell":[550,0,0.5481],"mehran":[302,0,0.496],"mitul":[95,0,0.0],"montego":[58,0,0.0],"montsho":[6,0,0.0],"nidal":[215,0,0.4665],"oded":[6,0,0.0],"olaniyan":[6,0,0.0],"regenal":[6,0,0.0],"rehan":[1421,21,0.6226],"renier":[32,0,0.0],"rodrico":[60,0,0.0],"shadric":[11,0,0.0],"shafi":[58,0,0.0],"sherief":[11,0,0.0],"shloma":[497,0,0.5393],"tavaras":[132,0,0.4241],"travion":[2438,0,0.6774],"travius":[195,0,0.458],"tre":[5844,58,0.7468],"trevell":[662,0,0.5642],"tyreek":[2352,0,0.6743],"vineet":[247,0,0.4785],"xerxes":[287,0,0.4916],"youssef":[3593,0,0.7111],"yuma":[347,98,0.413],"zacary":[1137,0,0.6112],"zayd":[4445,5,0.7289],"ziad":[1071,0,0.606],"adante":[171,0,0.4466],"adaryl":[10,0,0.0],"adedayo":[72,0,0.0],"adewale":[205,0,0.4624],"aleem":[555,0,0.5489],"alejando":[29,0,0.0],"ameen":[1702,0,0.6462],"amr":[956,0,0.5961],"andrick":[585,0,0.5534],"anthory":[5,0,0.0],"antoan":[55,0,0.0],"antrione":[5,0,0.0],"aundrae":[26,0,0.0],"banyon":[10,0,0.0],"basilios":[5,0,0.0],"benyamin":[735,0,0.5733],"bridger":[6490,67,0.7555],"cabral":[5,0,0.0],"chaderick":[45,0,0.0],"charlemagne":[44,6,0.0],"charlston":[21,0,0.0],"chaz":[9887,165,0.7873],"chey":[76,72,0.2229],"chrispher":[15,0,0.0],"christafer":[29,0,0.0],"chrystopher":[383,0,0.5166],"condredge":[5,0,0.0],"corban":[3549,11,0.7081],"corben":[1628,0,0.6423],"daimeon":[59,0,0.0],"damiel":[83,0,0.0],"dammion":[16,0,0.0],"damyon":[178,0,0.4501],"danal":[10,0,0.0],"danian":[55,0,0.0],"darelle":[284,11,0.4755],"dartanion":[125,0,0.4194],"daunte":[1563,0,0.6388],"davaughn":[856,0,0.5865],"deaundre":[992,0,0.5993],"dejohn":[435,0,0.5277],"deljuan":[28,0,0.0],"dementrius":[21,0,0.0],"demerrick":[5,0,0.0],"demetrik":[27,0,0.0],"deonta":[2626,36,0.6758],"detron":[146,0,0.4329],"deundra":[163,102,0.2981],"dewand":[29,0,0.0],"donnavon":[45,0,0.0],"dontate":[17,0,0.0],"dontee":[94,0,0.0],"efrin":[38,0,0.0],"eros":[1886,0,0.6551],"eyad":[1338,0,0.6253],"garylee":[12,0,0.0],"geoggrey":[33,0,0.0],"geraud":[16,0,0.0],"golan":[22,0,0.0],"harish":[368,0,0.5132],"jahmar":[550,0,0.5481],"jalil":[2880,5,0.6908],"jamarco":[254,0,0.481],"jamile":[224,204,0.2754],"jamond":[555,0,0.5489],"jarell":[2970,0,0.6946],"jarrold":[23,0,0.0],"jasom":[10,0,0.0],"jayjay":[200,0,0.4602],"jediah":[874,0,0.5883],"jermelle":[48,0,0.0],"jerramie":[30,0,0.0],"jerramy":[43,0,0.0],"jerrimy":[17,0,0.0],"jibreel":[979,0,0.5982],"jibril":[1346,0,0.6258],"johsua":[266,0,0.485],"joshaua":[209,0,0.464],"josuha":[281,0,0.4897],"jovani":[7185,135,0.7586],"juanjose":[1031,0,0.6027],"jumoke":[15,0,0.0],"juri":[10,258,0.4675],"justun":[129,0,0.4221],"kairi":[527,6015,0.7017],"kajuan":[668,0,0.565],"kalid":[204,0,0.4619],"kalum":[427,0,0.5261],"kaniel":[167,0,0.4445],"karvin":[10,0,0.0],"kason":[14415,47,0.8293],"kealii":[277,0,0.4885],"keats":[78,0,0.0],"kedrin":[57,0,0.0],"kentaro":[346,0,0.5078],"kewan":[337,0,0.5055],"keye":[5,0,0.0],"kimathi":[15,0,0.0],"kirtan":[180,0,0.4511],"kitwana":[16,0,0.0],"kudura":[5,0,0.0],"lavaris":[185,0,0.4534],"lazell":[5,0,0.0],"leedward":[5,0,0.0],"lemarcus":[402,0,0.5208],"lequan":[391,5,0.513],"macgregor":[282,0,0.49],"maleek":[2052,0,0.6624],"malek":[2965,6,0.6932],"manasseh":[554,5,0.5446],"manrique":[50,0,0.0],"manwell":[5,0,0.0],"marcellis":[310,0,0.4983],"marcellius":[61,0,0.0],"marguette":[29,0,0.0],"mariusz":[80,0,0.0],"maurisio":[315,0,0.4997],"mayur":[197,0,0.4589],"mondrell":[41,0,0.0],"nakio":[5,0,0.0],"ndrew":[104,0,0.4034],"niclas":[80,0,0.0],"nikesh":[129,0,0.4221],"nilay":[234,17,0.4474],"nizam":[5,0,0.0],"olanrewaju":[80,0,0.0],"olatunji":[10,0,0.0],"osei":[233,0,0.4735],"petrick":[5,0,0.0],"quintonio":[10,0,0.0],"rahsheen":[16,0,0.0],"rashaad":[3395,0,0.7062],"rashe":[11,0,0.0],"rashene":[5,0,0.0],"rayshone":[5,0,0.0],"rizwan":[521,0,0.5434],"romondo":[28,0,0.0],"rondrick":[78,0,0.0],"roric":[24,0,0.0],"rosbel":[98,0,0.0],"roudy":[21,0,0.0],"ryen":[1324,1044,0.3773],"salaam":[70,0,0.0],"saleh":[1720,6,0.6452],"scoey":[22,0,0.0],"shamel":[1020,155,0.533],"shanard":[138,0,0.428],"sharrief":[10,0,0.0],"shondrick":[5,0,0.0],"shuaib":[319,0,0.5008],"tajiri":[37,0,0.0],"tavare":[38,0,0.0],"teray":[17,0,0.0],"terrius":[168,0,0.4451],"theral":[5,0,0.0],"toderick":[26,0,0.0],"torenzo":[11,0,0.0],"torray":[15,0,0.0],"torron":[24,0,0.0],"tramon":[323,0,0.5018],"traven":[806,0,0.5813],"trayon":[420,0,0.5246],"twayne":[15,0,0.0],"tyress":[146,0,0.4329],"tyrik":[1385,0,0.6283],"tywayne":[28,0,0.0],"umoja":[5,0,0.0],"uria":[11,0,0.0],"uthman":[323,0,0.5018],"vanshon":[5,0,0.0],"walberto":[54,0,0.0],"weyland":[112,0,0.4098],"yamani":[5,61,0.0],"yasir":[3084,0,0.6978],"yonah":[869,26,0.5732],"yonatan":[2505,0,0.6798],"azure":[412,1657,0.5311],"turkessa":[0,280,0.4894],"tennille":[15,2179,0.6637],"joyelle":[0,385,0.5171],"joyel":[0,130,0.4228],"joyell":[0,89,0.0],"russchelle":[0,24,0.0],"taneha":[0,42,0.0],"reesheda":[0,23,0.0],"cerissa":[0,461,0.5327],"keilani":[5,4918,0.7377],"chakakhan":[0,37,0.0],"taneya":[0,373,0.5143],"unborn":[8,32,0.0],"margaux":[0,3898,0.7182],"tenille":[0,998,0.5998],"khalilah":[0,1673,0.6447],"lakiska":[0,38,0.0],"mahogany":[0,4068,0.7219],"swanzetta":[0,34,0.0],"tadzia":[0,17,0.0],"rashada":[0,172,0.4471],"nekeidra":[0,23,0.0],"okima":[0,27,0.0],"tanicka":[0,115,0.4121],"aiysha":[0,148,0.4341],"baretta":[52,20,0.0],"clorisa":[0,51,0.0],"dametria":[0,257,0.482],"dareth":[5,77,0.0],"deonza":[0,14,0.0],"akina":[0,521,0.5434],"azizi":[21,71,0.0],"joyl":[0,19,0.0],"luchana":[0,35,0.0],"nikea":[0,328,0.5032],"zendre":[0,35,0.0],"cherica":[0,132,0.4241],"joyal":[0,19,0.0],"markia":[0,1616,0.6417],"rashetta":[0,24,0.0],"shemeeka":[0,59,0.0],"zendra":[0,20,0.0],"jecenia":[0,119,0.4151],"kadie":[0,2617,0.6836],"keria":[0,467,0.5339],"lakieta":[0,28,0.0],"mikia":[0,696,0.5685],"sangria":[0,16,0.0],"sharity":[0,38,0.0],"taneal":[0,127,0.4208],"tanieka":[0,146,0.4329],"tekia":[0,377,0.5153],"ameenah":[0,983,0.5985],"anh":[706,1562,0.4622],"apirl":[0,52,0.0],"azuredee":[0,22,0.0],"brandeis":[0,39,0.0],"charryse":[0,34,0.0],"conchata":[0,15,0.0],"efrat":[0,60,0.0],"havilah":[0,657,0.5635],"kahealani":[0,457,0.532],"kalimah":[0,174,0.4481],"kenesha":[0,986,0.5988],"lashond":[0,10,0.0],"latorya":[0,532,0.5452],"letosha":[0,24,0.0],"llesenia":[0,202,0.4611],"lluvia":[0,3632,0.712],"marsela":[0,249,0.4792],"payal":[0,674,0.5657],"shakeitha":[0,212,0.4653],"shinika":[0,167,0.4445],"sinead":[0,1329,0.6247],"takasha":[0,58,0.0],"tametria":[0,63,0.0],"tashauna":[0,563,0.5501],"tashena":[0,332,0.5042],"zalika":[0,236,0.4746],"aiyana":[0,9699,0.7973],"alysse":[0,1499,0.6352],"chrisha":[0,119,0.4151],"jenara":[0,16,0.0],"jubilee":[27,3548,0.7053],"kimaree":[0,14,0.0],"kirstyn":[0,2309,0.6727],"koryn":[6,838,0.5811],"lakresha":[0,268,0.4856],"latwana":[0,42,0.0],"mandalyn":[0,300,0.4954],"okemia":[0,9,0.0],"phuong":[282,1033,0.49],"shawntia":[0,306,0.4971],"sneha":[0,1434,0.6313],"taquana":[0,310,0.4983],"trasha":[0,29,0.0],"ain":[0,28,0.0],"breezy":[0,658,0.5636],"brooklynn":[31,37512,0.9142],"camika":[0,76,0.0],"catisha":[0,45,0.0],"chamika":[0,129,0.4221],"chantilly":[0,253,0.4806],"chelby":[0,501,0.54],"cherhonda":[0,8,0.0],"chinwe":[0,148,0.4341],"collyn":[818,261,0.4599],"dainelle":[0,67,0.0],"dawneen":[0,8,0.0],"demica":[0,75,0.0],"edit":[0,179,0.4506],"elbony":[0,189,0.4553],"elysha":[31,691,0.5472],"emmi":[0,2211,0.6689],"ercia":[0,80,0.0],"havala":[0,14,0.0],"jovana":[0,2040,0.6619],"keonia":[0,301,0.4957],"kerissa":[0,502,0.5401],"kirra":[0,2574,0.6821],"kyanne":[0,344,0.5073],"lakashia":[0,95,0.0],"lakema":[0,36,0.0],"lakeyta":[0,97,0.0],"lakish":[0,38,0.0],"latress":[0,19,0.0],"maiysha":[0,22,0.0],"michelly":[0,13,0.0],"nicle":[0,87,0.0],"nuvia":[0,1118,0.6097],"penda":[0,96,0.0],"quianna":[0,881,0.589],"rekisha":[0,66,0.0],"rokisha":[0,41,0.0],"sameka":[0,128,0.4214],"shamecca":[0,245,0.4778],"shamieka":[0,227,0.4712],"shashona":[0,25,0.0],"shatasha":[0,174,0.4481],"shekina":[0,176,0.4491],"shema":[20,35,0.0],"sheyna":[0,196,0.4585],"spirit":[16,832,0.5746],"taneia":[0,126,0.4201],"tanyell":[0,48,0.0],"tarana":[0,31,0.0],"timikia":[0,32,0.0],"tykesha":[0,214,0.4661],"xaveria":[0,14,0.0],"zuleyka":[0,1560,0.6386],"aneisha":[0,604,0.5562],"anka":[0,14,0.0],"ashanda":[0,23,0.0],"avani":[49,3905,0.7105],"azur":[34,13,0.0],"azurdee":[0,12,0.0],"benicia":[0,143,0.4311],"bethia":[0,29,0.0],"charli":[146,11090,0.7996],"chyanne":[5,2932,0.6924],"dakita":[0,24,0.0],"damitra":[0,40,0.0],"dashana":[0,198,0.4593],"fradel":[0,547,0.5476],"holy":[22,166,0.4016],"honie":[0,7,0.0],"jabina":[0,7,0.0],"jameica":[0,74,0.0],"janera":[0,56,0.0],"jessicah":[0,295,0.494],"joanny":[5,201,0.4515],"keah":[0,138,0.428],"keyisha":[0,13,0.0],"kiffany":[0,122,0.4173],"lakedra":[0,240,0.476],"lakeicha":[0,26,0.0],"lashina":[0,56,0.0],"lateefa":[0,115,0.4121],"lekisa":[0,7,0.0],"lenina":[0,15,0.0],"maghan":[0,496,0.5391],"mandolyn":[0,58,0.0],"marquia":[0,464,0.5333],"mattea":[0,1833,0.6526],"meagon":[0,240,0.476],"myah":[6,10130,0.8007],"najla":[0,640,0.5612],"naria":[0,311,0.4986],"neika":[0,51,0.0],"nguyen":[477,117,0.4455],"prema":[0,53,0.0],"puja":[0,818,0.5826],"raiza":[0,376,0.515],"ranika":[0,143,0.4311],"rashika":[0,140,0.4292],"rayni":[0,149,0.4346],"sapphira":[0,835,0.5843],"shabana":[0,159,0.4403],"shakeeta":[0,147,0.4335],"shakeisha":[0,197,0.4589],"shakeya":[0,718,0.5712],"shaleena":[0,217,0.4673],"shaneika":[0,549,0.5479],"shaneta":[0,80,0.0],"shantera":[0,84,0.0],"sharema":[0,12,0.0],"shelisha":[0,66,0.0],"shivani":[0,2849,0.6909],"supriya":[0,370,0.5136],"sybill":[0,7,0.0],"tamitra":[0,37,0.0],"tamkio":[0,12,0.0],"tanyka":[0,29,0.0],"tarynn":[0,575,0.5519],"tavara":[0,39,0.0],"tayana":[0,808,0.5815],"temikia":[0,7,0.0],"terrika":[0,570,0.5512],"thu":[5,832,0.5811],"tilesha":[0,17,0.0],"tobiann":[0,7,0.0],"tomeaka":[0,15,0.0],"trinice":[0,36,0.0],"trinisha":[0,84,0.0],"turkesha":[0,21,0.0],"tyffany":[0,207,0.4632],"yaritza":[5,8371,0.7841],"adriena":[0,135,0.4261],"aimy":[0,268,0.4856],"alexsis":[190,1264,0.5499],"alsha":[0,105,0.4042],"altovese":[0,6,0.0],"amberlyn":[0,1662,0.6441],"amekia":[0,6,0.0],"amme":[0,49,0.0],"amyann":[0,12,0.0],"anielle":[0,55,0.0],"anitrice":[0,11,0.0],"aprell":[0,19,0.0],"apryll":[0,71,0.0],"artura":[0,6,0.0],"ashika":[0,271,0.4866],"atanya":[0,6,0.0],"auralee":[0,12,0.0],"aviance":[13,469,0.5221],"azuree":[0,132,0.4241],"batrice":[0,6,0.0],"bich":[0,142,0.4305],"brandina":[0,6,0.0],"branwen":[0,42,0.0],"breeann":[0,1363,0.6269],"britani":[0,1409,0.6298],"camica":[0,11,0.0],"caprica":[0,27,0.0],"caresa":[0,42,0.0],"carilynn":[0,12,0.0],"carlesha":[0,190,0.4558],"celica":[0,183,0.4525],"cerelia":[0,22,0.0],"chanea":[0,58,0.0],"chanele":[0,167,0.4445],"chantrice":[0,71,0.0],"chasty":[0,92,0.0],"chaunta":[0,82,0.0],"cherea":[0,17,0.0],"chia":[69,214,0.3708],"chritina":[0,48,0.0],"clairissa":[0,507,0.541],"clancey":[71,23,0.0],"courtny":[5,499,0.5351],"cura":[0,11,0.0],"daffany":[0,41,0.0],"danetra":[0,55,0.0],"demethra":[0,12,0.0],"dionza":[0,11,0.0],"disha":[0,783,0.5788],"ebonye":[0,106,0.4051],"elisavet":[0,57,0.0],"emmanuelle":[285,1403,0.5365],"erendida":[0,223,0.4697],"franchesska":[0,18,0.0],"gloryvee":[0,6,0.0],"heathre":[0,6,0.0],"jacee":[51,1592,0.6232],"jajuana":[0,23,0.0],"jamina":[0,197,0.4589],"jasmyn":[0,6048,0.7563],"jenilyn":[0,136,0.4267],"jenneifer":[0,13,0.0],"jessalynn":[0,984,0.5986],"juanisha":[0,174,0.4481],"kadesha":[0,417,0.524],"kadi":[0,954,0.5959],"kalima":[0,142,0.4305],"kalonda":[0,16,0.0],"kameo":[10,121,0.3911],"kandrea":[0,25,0.0],"kanisa":[0,6,0.0],"karaline":[0,765,0.5767],"kasinda":[0,30,0.0],"kassidy":[426,21037,0.8491],"keera":[0,793,0.5799],"kelci":[0,2423,0.6769],"kelsha":[0,139,0.4286],"keme":[0,6,0.0],"kemisha":[0,168,0.4451],"kenyell":[7,22,0.0],"kessie":[0,67,0.0],"keyanna":[0,3446,0.7075],"kiandra":[0,973,0.5976],"kiawana":[0,18,0.0],"kimberlina":[0,19,0.0],"kirsha":[0,47,0.0],"lachina":[0,105,0.4042],"lakea":[0,182,0.452],"lakessa":[0,29,0.0],"lakicha":[0,11,0.0],"lakicia":[0,21,0.0],"lakima":[0,61,0.0],"laneice":[0,82,0.0],"lashaundria":[0,17,0.0],"lashundria":[0,24,0.0],"latiya":[0,165,0.4435],"leinani":[0,139,0.4286],"lekeya":[0,86,0.0],"lessette":[0,11,0.0],"lezanne":[0,6,0.0],"limor":[0,28,0.0],"lindsi":[0,776,0.578],"linh":[213,1503,0.5666],"luchina":[0,13,0.0],"lukeshia":[0,11,0.0],"mandria":[0,19,0.0],"mariposa":[0,380,0.516],"matika":[0,95,0.0],"meshaun":[0,6,0.0],"moniquie":[0,11,0.0],"mykel":[3371,713,0.5961],"mystic":[0,390,0.5182],"nakisa":[0,26,0.0],"nayo":[0,16,0.0],"nenette":[0,6,0.0],"nikasha":[0,6,0.0],"nykisha":[0,40,0.0],"quina":[0,68,0.0],"rakisha":[0,173,0.4476],"ralena":[0,17,0.0],"ramika":[0,35,0.0],"rashawna":[0,349,0.5086],"reia":[0,258,0.4823],"reneka":[0,143,0.4311],"rushelle":[0,44,0.0],"rustina":[0,22,0.0],"sakena":[0,47,0.0],"sametra":[0,47,0.0],"sausha":[0,150,0.4352],"sequana":[0,49,0.0],"shadana":[0,109,0.4075],"shakelia":[0,218,0.4677],"shakila":[0,536,0.5458],"shalece":[0,79,0.0],"shaline":[0,11,0.0],"shamonica":[0,297,0.4946],"shandalyn":[0,49,0.0],"shaneequa":[0,170,0.4461],"shanekia":[0,283,0.4904],"shanena":[0,79,0.0],"shanisha":[0,354,0.5098],"shaquan":[2115,537,0.5461],"shaquanna":[0,873,0.5882],"shaquitta":[0,238,0.4753],"sharitta":[0,54,0.0],"shemicka":[0,74,0.0],"shene":[0,92,0.0],"sherlena":[0,6,0.0],"sheyanne":[0,738,0.5736],"shiann":[0,2008,0.6606],"sura":[0,413,0.5232],"takecia":[0,19,0.0],"takeila":[0,63,0.0],"takila":[0,203,0.4615],"tameesha":[0,23,0.0],"tamicia":[0,45,0.0],"tamiya":[0,1823,0.6522],"tanyea":[0,6,0.0],"tavita":[161,34,0.3781],"tavonna":[0,111,0.4091],"tawauna":[0,6,0.0],"temaka":[0,31,0.0],"tenea":[0,168,0.4451],"teneha":[0,6,0.0],"teran":[355,185,0.3593],"terricka":[0,210,0.4644],"territa":[0,25,0.0],"thao":[192,1040,0.5218],"thesha":[0,6,0.0],"tieasha":[0,118,0.4144],"tiffnay":[0,71,0.0],"timekia":[0,19,0.0],"titilayo":[0,106,0.4051],"toyce":[0,6,0.0],"trang":[8,955,0.5918],"trishawn":[10,12,0.0],"tyonna":[0,1374,0.6276],"wakesha":[0,11,0.0],"yamel":[26,153,0.3851],"yamila":[0,1183,0.6146],"yaneth":[0,1083,0.6069],"yashima":[0,6,0.0],"zakiyyah":[0,1163,0.6131],"adreanna":[0,1571,0.6392],"adrieanne":[0,16,0.0],"ailyn":[0,4321,0.7271],"akela":[38,613,0.5299],"akeya":[0,212,0.4653],"alanya":[0,167,0.4445],"alegria":[0,235,0.4742],"aleina":[0,949,0.5955],"aleka":[0,220,0.4685],"aliah":[0,5635,0.7502],"allycia":[0,348,0.5083],"alondrea":[0,11,0.0],"altonya":[0,5,0.0],"altouise":[0,17,0.0],"altrice":[0,5,0.0],"amabel":[0,170,0.4461],"amanada":[0,369,0.5134],"amanoa":[0,28,0.0],"ameisha":[0,72,0.0],"amelinda":[0,40,0.0],"andaiye":[0,5,0.0],"angalina":[0,181,0.4515],"angellica":[0,396,0.5195],"annique":[0,40,0.0],"areecia":[0,5,0.0],"aril":[0,10,0.0],"arwa":[0,1302,0.6229],"asalia":[0,36,0.0],"asiya":[0,2431,0.6772],"aszure":[0,5,0.0],"atarah":[0,907,0.5915],"ausha":[0,271,0.4866],"aydee":[0,178,0.4501],"ayeshia":[0,114,0.4114],"aynsley":[0,424,0.5255],"azura":[0,890,0.5899],"bahati":[5,72,0.0],"basheba":[0,24,0.0],"beena":[0,90,0.0],"bionca":[0,716,0.571],"blessing":[484,4155,0.6568],"brandise":[0,15,0.0],"brandyann":[0,5,0.0],"brandyce":[0,100,0.4],"breah":[0,947,0.5953],"breia":[0,410,0.5226],"brighid":[0,524,0.5439],"cacy":[0,52,0.0],"calisha":[0,240,0.476],"candase":[0,30,0.0],"carinna":[0,168,0.4451],"caris":[5,1194,0.6132],"carleigh":[0,6046,0.7563],"catia":[0,369,0.5134],"celecia":[0,50,0.0],"celinez":[0,5,0.0],"cha":[253,37,0.4296],"chablis":[0,126,0.4201],"chaffee":[5,5,0.0],"chakka":[0,10,0.0],"chalet":[0,71,0.0],"chameka":[0,193,0.4571],"chanah":[0,195,0.458],"chaniqua":[0,198,0.4593],"channah":[0,265,0.4846],"chantey":[0,47,0.0],"chareese":[0,106,0.4051],"charhonda":[0,5,0.0],"charmisa":[0,5,0.0],"chasitie":[0,274,0.4876],"chastina":[0,26,0.0],"chau":[107,389,0.4228],"chawna":[0,5,0.0],"cheketa":[0,11,0.0],"chenda":[0,23,0.0],"chenel":[0,83,0.0],"chereka":[0,37,0.0],"cherronda":[0,5,0.0],"chevi":[5,141,0.418],"chrysoula":[0,10,0.0],"cisely":[0,5,0.0],"clorise":[0,5,0.0],"colisha":[0,63,0.0],"cortnee":[0,617,0.5581],"corynn":[0,772,0.5775],"coya":[0,18,0.0],"dailyn":[398,1809,0.5482],"dakia":[0,102,0.4017],"damarie":[120,44,0.3241],"danaka":[0,139,0.4286],"danyalle":[0,25,0.0],"darneshia":[0,171,0.4466],"datril":[6,5,0.0],"davada":[0,5,0.0],"deauna":[0,84,0.0],"deeya":[0,223,0.4697],"demara":[0,128,0.4214],"demetrial":[0,5,0.0],"demetrish":[0,5,0.0],"denisia":[0,184,0.453],"denya":[0,124,0.4187],"devika":[0,639,0.5611],"dianara":[0,72,0.0],"domica":[0,5,0.0],"donnika":[0,80,0.0],"donnisha":[0,445,0.5297],"dorae":[0,5,0.0],"drisana":[0,63,0.0],"efia":[0,19,0.0],"efstathia":[0,23,0.0],"egypt":[780,4537,0.6358],"eilzabeth":[0,30,0.0],"elexis":[0,2817,0.69],"emie":[0,247,0.4785],"emilly":[0,1403,0.6294],"erum":[0,119,0.4151],"erynne":[0,179,0.4506],"esha":[0,1899,0.6557],"evaggelia":[0,10,0.0],"evalisa":[0,5,0.0],"fabianna":[0,195,0.458],"fatmire":[0,5,0.0],"fetina":[0,5,0.0],"foxy":[0,5,0.0],"geetha":[0,23,0.0],"givonna":[0,5,0.0],"halimah":[0,539,0.5463],"hallema":[0,5,0.0],"hoa":[262,270,0.2767],"holleigh":[0,126,0.4201],"honesty":[0,4911,0.7382],"iasha":[0,120,0.4158],"ieshea":[0,50,0.0],"ikesha":[0,88,0.0],"iselda":[0,16,0.0],"ishea":[0,26,0.0],"iyanna":[0,5303,0.7449],"jajaira":[0,205,0.4624],"jakima":[0,50,0.0],"jameila":[0,138,0.428],"jancey":[0,10,0.0],"janitha":[0,5,0.0],"jaree":[92,106,0.2459],"jeneil":[0,17,0.0],"jenina":[0,87,0.0],"jevonna":[0,11,0.0],"jonisha":[0,437,0.5281],"julonda":[0,5,0.0],"kaiesha":[0,92,0.0],"kaliopi":[0,45,0.0],"kaly":[0,495,0.5389],"kamil":[2059,542,0.5407],"kamra":[0,59,0.0],"kandia":[5,15,0.0],"kareemah":[0,355,0.51],"karess":[0,112,0.4098],"karmesha":[0,27,0.0],"kasara":[0,229,0.472],"kashanda":[0,41,0.0],"kashanna":[0,53,0.0],"kashima":[0,39,0.0],"kashina":[0,104,0.4034],"katona":[0,52,0.0],"keandra":[10,1372,0.6236],"keashia":[0,82,0.0],"kemia":[0,93,0.0],"keneta":[0,11,0.0],"kennya":[0,631,0.56],"keondra":[17,1107,0.6009],"keywanna":[0,41,0.0],"khara":[0,672,0.5655],"kidata":[0,5,0.0],"kierra":[18,15616,0.8378],"kinshasha":[0,5,0.0],"kirah":[0,1018,0.6015],"kishara":[5,21,0.0],"kitra":[0,56,0.0],"kjirsten":[0,94,0.0],"kourtnie":[0,675,0.5659],"krishana":[0,162,0.4419],"kura":[0,64,0.0],"kuulei":[0,152,0.4364],"kwanna":[0,27,0.0],"kyanna":[0,2004,0.6604],"labrisha":[0,75,0.0],"lachisha":[0,5,0.0],"lacia":[0,50,0.0],"lafran":[0,5,0.0],"lakeidra":[0,152,0.4364],"lakenia":[0,17,0.0],"lakeska":[0,10,0.0],"lakeyia":[0,178,0.4501],"lakindra":[0,94,0.0],"laksha":[0,17,0.0],"laquitha":[0,68,0.0],"larea":[0,5,0.0],"lareshia":[0,15,0.0],"lasunda":[0,11,0.0],"latocha":[0,16,0.0],"latoisha":[0,16,0.0],"latrivia":[0,34,0.0],"lauriana":[0,126,0.4201],"laylah":[0,7116,0.7704],"leinaala":[0,73,0.0],"lelita":[0,5,0.0],"letoria":[0,49,0.0],"letrisha":[0,22,0.0],"lien":[6,519,0.5378],"lislie":[0,27,0.0],"luchiana":[0,5,0.0],"luicana":[0,10,0.0],"lushonda":[0,5,0.0],"lutina":[0,5,0.0],"lyanna":[0,3466,0.708],"lyndsie":[0,1473,0.6336],"magon":[0,179,0.4506],"mailee":[0,624,0.559],"makenzie":[301,44603,0.9242],"makida":[0,10,0.0],"malecia":[0,10,0.0],"malenda":[0,11,0.0],"maquetta":[0,5,0.0],"markeitha":[0,29,0.0],"marquea":[0,15,0.0],"marshay":[5,765,0.5735],"maryluz":[0,26,0.0],"masheka":[0,23,0.0],"mayling":[0,122,0.4173],"mecha":[0,12,0.0],"melveen":[0,5,0.0],"merenda":[0,10,0.0],"meridyth":[0,39,0.0],"michelin":[0,20,0.0],"mistala":[0,5,0.0],"monicka":[0,66,0.0],"munirah":[0,140,0.4292],"myca":[35,304,0.4538],"myeesha":[0,89,0.0],"naama":[0,304,0.4966],"nakaia":[0,43,0.0],"nakesia":[0,30,0.0],"nakoma":[36,83,0.2895],"nari":[0,486,0.5373],"narkita":[0,12,0.0],"naseem":[1261,255,0.5291],"nashea":[0,108,0.4067],"nazia":[0,405,0.5215],"neeli":[0,23,0.0],"nefeteria":[0,5,0.0],"nekeia":[0,53,0.0],"neli":[0,313,0.4991],"nerina":[0,33,0.0],"nerrissa":[0,10,0.0],"ngoc":[54,667,0.5288],"niakia":[0,5,0.0],"nicketa":[0,10,0.0],"nickeya":[0,55,0.0],"nickisha":[0,55,0.0],"niekia":[0,5,0.0],"nigeria":[0,805,0.5812],"ninoska":[0,106,0.4051],"niquita":[0,119,0.4151],"nisaa":[0,51,0.0],"nitisha":[0,59,0.0],"nivea":[0,1321,0.6242],"nnenna":[0,292,0.4931],"nykesha":[0,51,0.0],"nyota":[0,97,0.0],"okeema":[0,5,0.0],"okeima":[0,5,0.0],"olesha":[0,5,0.0],"olukemi":[0,76,0.0],"omotayo":[16,10,0.0],"onawa":[0,22,0.0],"owetta":[0,5,0.0],"persia":[0,775,0.5779],"promise":[394,6089,0.716],"pui":[0,10,0.0],"quanika":[0,126,0.4201],"rakesha":[0,123,0.418],"rakhi":[21,54,0.0],"ramada":[0,5,0.0],"ranna":[0,58,0.0],"rashia":[0,135,0.4261],"rebcca":[0,27,0.0],"ricca":[0,72,0.0],"rikka":[0,54,0.0],"roshana":[0,125,0.4194],"rubicela":[0,36,0.0],"russchell":[0,5,0.0],"sacajawea":[0,12,0.0],"safia":[0,1541,0.6376],"samekia":[0,5,0.0],"samera":[0,564,0.5503],"saquana":[0,32,0.0],"satin":[0,373,0.5143],"secilia":[0,350,0.5088],"semeka":[0,26,0.0],"shabree":[0,111,0.4091],"shadell":[5,66,0.0],"shadi":[711,247,0.4425],"shakela":[0,456,0.5318],"shaketta":[0,98,0.0],"shalima":[0,5,0.0],"shalo":[0,5,0.0],"shanalee":[0,31,0.0],"shanara":[0,241,0.4764],"shanonn":[0,5,0.0],"sharaine":[0,64,0.0],"shareeta":[0,50,0.0],"sharinda":[0,5,0.0],"sharletha":[0,5,0.0],"sharmeka":[0,91,0.0],"sharnice":[0,425,0.5257],"sharvon":[0,26,0.0],"shata":[0,26,0.0],"shatica":[0,11,0.0],"shaunee":[0,128,0.4214],"shaunielle":[0,5,0.0],"shawnah":[0,39,0.0],"shawntal":[0,33,0.0],"shawonna":[0,29,0.0],"shealyn":[0,1278,0.6213],"shekima":[0,33,0.0],"shelice":[0,11,0.0],"shikia":[0,42,0.0],"shima":[0,111,0.4091],"shiniqua":[0,95,0.0],"shondalyn":[0,5,0.0],"shontaye":[0,35,0.0],"slavica":[0,5,0.0],"sobia":[0,61,0.0],"somona":[0,5,0.0],"sonequa":[0,5,0.0],"sooner":[0,10,0.0],"stancy":[0,5,0.0],"starlit":[0,116,0.4129],"storie":[0,542,0.5468],"stormee":[0,336,0.5053],"stormey":[7,220,0.4567],"sulin":[0,5,0.0],"suraya":[0,712,0.5705],"tacita":[0,16,0.0],"takashia":[0,5,0.0],"taketa":[0,43,0.0],"takishia":[0,26,0.0],"talaia":[0,30,0.0],"talene":[0,72,0.0],"tamaron":[0,5,0.0],"tamikca":[0,5,0.0],"tamita":[0,13,0.0],"tamryn":[15,398,0.5042],"tanai":[0,139,0.4286],"tanelle":[0,58,0.0],"tanyel":[0,17,0.0],"taquilla":[0,219,0.4681],"tareka":[0,74,0.0],"tashan":[123,10,0.3928],"tasheika":[0,151,0.4358],"tashell":[0,55,0.0],"temeika":[0,54,0.0],"teniqua":[0,125,0.4194],"ticha":[0,5,0.0],"tiffancy":[0,48,0.0],"tihisha":[0,5,0.0],"tineshia":[0,92,0.0],"tinica":[0,11,0.0],"tivona":[0,38,0.0],"tomako":[0,5,0.0],"tonyell":[0,11,0.0],"toshya":[0,5,0.0],"towonda":[0,11,0.0],"tralena":[0,10,0.0],"trenette":[0,15,0.0],"tukesha":[0,5,0.0],"tulani":[0,63,0.0],"tumekia":[0,5,0.0],"tureka":[0,11,0.0],"tymesha":[0,251,0.4799],"tyneal":[0,5,0.0],"tyrisha":[0,262,0.4837],"udona":[0,5,0.0],"udonna":[0,5,0.0],"urana":[0,5,0.0],"varvara":[0,183,0.4525],"vernonica":[0,44,0.0],"viet":[1085,11,0.6019],"wandalid":[0,5,0.0],"wykena":[0,5,0.0],"yamilet":[0,5037,0.7404],"yen":[47,564,0.5143],"yoshika":[0,81,0.0],"yovana":[0,474,0.5352],"yuka":[0,391,0.5184],"yushica":[0,5,0.0],"zahira":[0,1184,0.6147],"zebrina":[0,5,0.0],"tiant":[61,0,0.0],"hung":[1018,0,0.6015],"caribe":[20,0,0.0],"nam":[1396,0,0.629],"huy":[1705,0,0.6463],"rashod":[980,0,0.5982],"taryll":[60,0,0.0],"janmichael":[284,0,0.4907],"snehal":[49,6,0.0],"cuahutemoc":[146,0,0.4329],"gerron":[301,0,0.4957],"jamail":[349,0,0.5086],"long":[1903,0,0.6559],"starsky":[134,0,0.4254],"trapper":[979,0,0.5982],"jamarcus":[5610,0,0.7498],"tavoris":[554,0,0.5487],"thalmus":[29,0,0.0],"travares":[85,0,0.0],"vu":[770,0,0.5773],"amad":[359,0,0.511],"antrell":[363,0,0.512],"bulmaro":[318,0,0.5005],"damarius":[1532,0,0.6371],"evagelos":[31,0,0.0],"jushua":[260,0,0.483],"kamuela":[293,0,0.4934],"kiron":[282,0,0.49],"rajohn":[85,0,0.0],"shalin":[335,173,0.3569],"tran":[128,559,0.4617],"abdula":[39,0,0.0],"caton":[199,58,0.3732],"daquan":[7933,6,0.7794],"darweshi":[8,0,0.0],"dequan":[3839,5,0.716],"duc":[421,0,0.5249],"dung":[469,287,0.3571],"gustin":[175,0,0.4486],"hoang":[750,51,0.5438],"jousha":[432,0,0.5271],"kenyun":[45,0,0.0],"ladarryl":[62,0,0.0],"lizandro":[919,0,0.5927],"nadir":[1268,0,0.6206],"ramzy":[404,0,0.5213],"rashann":[59,0,0.0],"rashidi":[95,0,0.0],"rechard":[33,0,0.0],"shevin":[13,0,0.0],"tarvares":[66,0,0.0],"tchalla":[13,0,0.0],"thalamus":[15,0,0.0],"tyrie":[835,41,0.561],"tywann":[59,0,0.0],"vashaun":[209,6,0.4535],"abdias":[875,0,0.5884],"akai":[918,68,0.5575],"akash":[2352,0,0.6743],"ameet":[65,0,0.0],"amrom":[324,0,0.5021],"antwonne":[37,0,0.0],"arkim":[7,0,0.0],"bengi":[7,0,0.0],"crispus":[7,0,0.0],"damario":[1331,0,0.6248],"dammian":[7,0,0.0],"filipe":[423,0,0.5253],"franko":[324,0,0.5021],"giuseppi":[7,0,0.0],"gram":[360,0,0.5113],"haashim":[7,0,0.0],"issam":[208,0,0.4636],"jahi":[843,0,0.5852],"jamus":[98,0,0.0],"jocob":[341,0,0.5066],"keion":[2822,10,0.688],"koran":[621,10,0.5511],"kurry":[12,0,0.0],"mattthew":[70,0,0.0],"phong":[1006,5,0.598],"sadiki":[36,0,0.0],"shabaka":[28,0,0.0],"shaheed":[1132,0,0.6108],"stylianos":[56,0,0.0],"sumit":[250,0,0.4796],"suraj":[1085,0,0.6071],"tarig":[116,0,0.4129],"taurin":[29,0,0.0],"tellys":[7,0,0.0],"tiawan":[59,0,0.0],"tion":[439,16,0.5129],"tivon":[324,0,0.5021],"tramain":[141,0,0.4298],"trance":[41,0,0.0],"tyone":[23,0,0.0],"tyrek":[2171,0,0.6673],"adisa":[80,117,0.2725],"akito":[137,0,0.4273],"altariq":[211,0,0.4649],"amen":[1186,864,0.3832],"antonis":[94,0,0.0],"antroine":[12,0,0.0],"antwanne":[12,0,0.0],"anupam":[16,0,0.0],"arrion":[291,79,0.404],"auden":[1796,934,0.4521],"aurohom":[16,0,0.0],"ayman":[2684,45,0.6759],"banning":[60,0,0.0],"bear":[3066,0,0.6973],"binh":[487,38,0.5047],"camaron":[715,52,0.5378],"careem":[155,0,0.4381],"carolos":[58,0,0.0],"chasen":[2031,0,0.6615],"chayim":[134,0,0.4254],"christerfer":[30,0,0.0],"dameyon":[47,0,0.0],"damonn":[22,0,0.0],"dasan":[629,0,0.5597],"dayon":[739,11,0.5666],"deante":[2707,5,0.6854],"demichael":[401,0,0.5206],"dezmond":[3561,0,0.7103],"domanic":[1192,11,0.6104],"dontai":[178,0,0.4501],"fotis":[17,0,0.0],"gopal":[92,0,0.0],"islam":[664,128,0.486],"jamare":[471,0,0.5346],"jamichael":[1477,0,0.6339],"jamiyl":[24,0,0.0],"jascha":[32,0,0.0],"javaris":[1741,0,0.6482],"jawhar":[6,0,0.0],"johnmark":[581,0,0.5528],"jonanthan":[76,0,0.0],"kainoa":[2560,40,0.6725],"keithrick":[18,0,0.0],"keiven":[37,0,0.0],"keshon":[1232,48,0.5981],"kesley":[67,660,0.5196],"khaleel":[1187,0,0.6149],"kwami":[39,0,0.0],"lamondo":[6,0,0.0],"laquane":[23,0,0.0],"latavius":[191,0,0.4562],"luka":[25067,537,0.8632],"maliek":[1055,0,0.6047],"michaelpaul":[115,0,0.4121],"milik":[117,0,0.4136],"minh":[2071,286,0.5926],"miran":[359,22,0.4864],"montay":[294,0,0.4937],"nael":[1194,44,0.5966],"najja":[44,41,0.0],"nektarios":[73,0,0.0],"nuno":[126,0,0.4201],"nuri":[488,1078,0.4398],"quaashie":[11,0,0.0],"quang":[733,0,0.573],"quoc":[489,0,0.5379],"rahmel":[722,0,0.5717],"rahshan":[11,0,0.0],"rakeem":[2152,0,0.6666],"sagar":[1017,0,0.6015],"santonia":[11,10,0.0],"schane":[6,0,0.0],"shontez":[55,0,0.0],"shundell":[6,0,0.0],"soctt":[33,0,0.0],"sohail":[463,0,0.5331],"suhail":[374,25,0.4876],"talon":[12319,535,0.7876],"tarrus":[12,0,0.0],"tederick":[11,0,0.0],"tephen":[11,0,0.0],"thai":[1208,212,0.5363],"tyle":[48,0,0.0],"tyus":[1063,0,0.6053],"tywone":[165,0,0.4435],"usbaldo":[90,0,0.0],"yaser":[478,0,0.5359],"abbas":[1782,0,0.6502],"abduel":[5,0,0.0],"adarsh":[613,0,0.5575],"ahamad":[41,0,0.0],"alrahman":[5,0,0.0],"amauris":[74,0,0.0],"aneesh":[915,0,0.5923],"antonial":[5,0,0.0],"antowain":[5,0,0.0],"antwian":[70,0,0.0],"antyon":[11,0,0.0],"aquiles":[622,0,0.5588],"armard":[18,0,0.0],"arric":[15,0,0.0],"asael":[1555,0,0.6383],"asante":[1199,249,0.5234],"ash":[2360,127,0.6445],"ashon":[370,0,0.5136],"ayan":[3753,828,0.5999],"benajmin":[31,0,0.0],"birche":[5,0,0.0],"boban":[17,0,0.0],"broch":[30,0,0.0],"chaston":[582,0,0.553],"crag":[5,0,0.0],"czar":[217,0,0.4673],"dakin":[63,0,0.0],"danai":[5,415,0.5184],"danyon":[98,0,0.0],"dareck":[66,0,0.0],"darrnell":[78,0,0.0],"datron":[144,0,0.4317],"daudi":[20,0,0.0],"davone":[568,15,0.5389],"dawin":[12,0,0.0],"delancy":[5,21,0.0],"delonta":[350,0,0.5088],"demeko":[32,0,0.0],"deondray":[299,0,0.4951],"derrius":[843,0,0.5852],"diablo":[5,0,0.0],"dillan":[6966,384,0.7329],"dionisios":[85,0,0.0],"dontre":[493,0,0.5386],"dorjan":[15,0,0.0],"durville":[5,0,0.0],"dvon":[284,0,0.4907],"efrian":[5,0,0.0],"eitan":[2586,0,0.6825],"eleodoro":[10,0,0.0],"eliel":[4418,9,0.7277],"elizer":[116,0,0.4129],"erion":[590,113,0.4779],"exzavier":[325,0,0.5024],"faraji":[50,0,0.0],"fatmir":[18,0,0.0],"gaurav":[709,0,0.5701],"germell":[5,0,0.0],"geromy":[10,0,0.0],"gianpaolo":[170,0,0.4461],"hai":[567,21,0.5341],"hakiem":[97,0,0.0],"halim":[236,0,0.4746],"hameen":[16,0,0.0],"haran":[32,0,0.0],"harlem":[3199,1596,0.4911],"hossein":[61,0,0.0],"hristos":[28,0,0.0],"husani":[36,0,0.0],"hutch":[523,0,0.5437],"ilias":[959,0,0.5964],"illiam":[42,0,0.0],"ioane":[196,0,0.4585],"jabulani":[28,0,0.0],"jachin":[485,0,0.5371],"jacobie":[894,22,0.5782],"jafar":[659,0,0.5638],"jaquan":[10543,58,0.8007],"jarmon":[111,0,0.4091],"jasdeep":[219,49,0.3968],"jawaun":[862,0,0.5871],"jawayne":[11,0,0.0],"jawon":[805,5,0.5781],"jemery":[88,0,0.0],"jerimi":[41,0,0.0],"jeromee":[10,0,0.0],"jeromiah":[67,0,0.0],"jimal":[15,0,0.0],"johnrobert":[368,0,0.5132],"joshwa":[449,0,0.5304],"josias":[3267,0,0.7028],"justiniano":[5,0,0.0],"justis":[1492,432,0.5094],"kaled":[329,0,0.5034],"kalib":[1537,0,0.6373],"karibe":[5,0,0.0],"kashka":[12,16,0.0],"kasiem":[23,0,0.0],"kelon":[324,0,0.5021],"kennyatta":[5,10,0.0],"kenyota":[5,26,0.0],"khalfani":[185,0,0.4534],"kion":[1260,0,0.6201],"koreem":[5,0,0.0],"kwamin":[5,0,0.0],"lacharles":[101,0,0.4009],"ladaryl":[14,0,0.0],"lafonzo":[5,0,0.0],"lataurus":[52,5,0.0],"laterrance":[196,0,0.4585],"letwan":[5,0,0.0],"lutalo":[10,0,0.0],"mansoor":[325,0,0.5024],"mathan":[159,0,0.4403],"matheu":[214,0,0.4661],"mathhew":[133,0,0.4248],"matti":[77,646,0.5109],"mattias":[2516,0,0.6801],"mckeever":[5,0,0.0],"mihcael":[75,0,0.0],"mitesh":[148,0,0.4341],"montrail":[221,0,0.4689],"moreno":[11,0,0.0],"nadim":[416,0,0.5238],"naphtali":[265,83,0.3871],"nashon":[402,0,0.5208],"nichlas":[268,0,0.4856],"orenthia":[5,0,0.0],"oryan":[1093,0,0.6077],"palani":[30,0,0.0],"paras":[284,0,0.4907],"paton":[87,0,0.0],"peterjohn":[44,0,0.0],"petr":[109,0,0.4075],"pike":[224,0,0.47],"puneet":[160,163,0.2533],"quantez":[627,0,0.5595],"quientin":[69,0,0.0],"quron":[361,0,0.5115],"raed":[454,0,0.5314],"rafiq":[412,0,0.523],"raheam":[16,0,0.0],"rajon":[810,0,0.5817],"rameses":[198,0,0.4593],"rashed":[527,0,0.5444],"rashim":[5,0,0.0],"rasul":[398,0,0.52],"raylan":[6540,566,0.709],"rayon":[530,11,0.5355],"reshard":[351,0,0.5091],"revelle":[10,0,0.0],"rhakeem":[26,0,0.0],"rigoverto":[37,0,0.0],"rocko":[273,0,0.4872],"rodrickus":[63,0,0.0],"rodricus":[285,0,0.491],"ryo":[778,0,0.5782],"sadat":[93,0,0.0],"safet":[5,0,0.0],"samy":[865,11,0.5811],"santosh":[146,0,0.4329],"saumil":[10,0,0.0],"schneur":[339,0,0.506],"scotland":[260,633,0.4183],"sefton":[10,0,0.0],"shamir":[1491,214,0.5652],"shamont":[21,0,0.0],"shantez":[48,29,0.0],"shen":[56,0,0.0],"shukri":[15,255,0.4593],"shyrone":[37,0,0.0],"stash":[5,0,0.0],"sumeet":[231,10,0.4566],"sylas":[8160,62,0.7771],"symeon":[211,0,0.4649],"syron":[5,0,0.0],"tallis":[89,47,0.2792],"tarrick":[36,0,0.0],"tauris":[25,0,0.0],"telvis":[21,0,0.0],"thunder":[542,0,0.5468],"tien":[800,506,0.3817],"timothee":[345,0,0.5076],"tiomthy":[5,0,0.0],"tjay":[160,0,0.4408],"tobius":[27,0,0.0],"torran":[37,0,0.0],"towan":[27,0,0.0],"tramayne":[259,0,0.4827],"tylone":[5,0,0.0],"tynell":[112,0,0.4098],"tyrees":[61,0,0.0],"tyvon":[851,0,0.586],"usvaldo":[17,0,0.0],"vahram":[5,0,0.0],"vinod":[153,0,0.4369],"wisam":[295,0,0.494],"yago":[291,0,0.4928],"yash":[2715,0,0.6868],"yasser":[1171,0,0.6137],"yassir":[356,0,0.5103],"yecheskel":[389,0,0.518],"yoseph":[937,0,0.5943],"yost":[10,0,0.0],"yun":[26,78,0.3026],"zacariah":[452,5,0.5262],"zederick":[5,0,0.0],"tynisa":[0,215,0.4665],"rhianna":[0,5755,0.752],"naimah":[0,1641,0.643],"sujey":[0,690,0.5678],"rhiana":[0,1054,0.6046],"tennile":[0,132,0.4241],"aesha":[0,663,0.5643],"huong":[0,578,0.5524],"rheanna":[0,1778,0.65],"nadiyah":[0,1066,0.6056],"nonya":[0,28,0.0],"aneesah":[0,714,0.5707],"tennelle":[0,64,0.0],"raushanah":[0,164,0.443],"aaliyah":[106,107314,0.999],"shallon":[0,246,0.4782],"khaliah":[0,1278,0.6213],"ameerah":[0,2570,0.682],"deshonna":[0,159,0.4403],"latoiya":[0,174,0.4481],"norlisha":[0,16,0.0],"shahidah":[0,227,0.4712],"shalan":[5,112,0.396],"tauheedah":[0,160,0.4408],"tomeki":[0,22,0.0],"latorie":[0,74,0.0],"norlishia":[0,15,0.0],"shakara":[0,896,0.5905],"loan":[18,426,0.508],"shylah":[0,1755,0.6489],"taneil":[0,133,0.4248],"aarin":[895,307,0.4587],"amirah":[0,10253,0.8022],"aqueelah":[0,321,0.5013],"kameelah":[0,462,0.5329],"kishina":[0,19,0.0],"latori":[0,157,0.4392],"latorria":[0,151,0.4358],"mistey":[0,72,0.0],"sajata":[0,13,0.0],"sakeenah":[0,250,0.4796],"sugey":[0,442,0.5291],"teneeshia":[0,30,0.0],"tenelle":[0,67,0.0],"tennielle":[0,13,0.0],"chudney":[5,76,0.0],"hanh":[21,454,0.5117],"jehan":[149,347,0.3772],"kaamilya":[0,49,0.0],"keiana":[0,1424,0.6307],"reannon":[0,260,0.483],"shekia":[0,313,0.4991],"teneil":[0,73,0.0],"thanh":[1099,650,0.4075],"chaketa":[0,17,0.0],"fanisha":[0,39,0.0],"jaimelyn":[0,38,0.0],"jessia":[0,661,0.564],"kameela":[0,239,0.4757],"kendrah":[0,432,0.5271],"kennisha":[0,600,0.5556],"lachaka":[0,24,0.0],"nadirah":[0,867,0.5876],"nyia":[5,671,0.5618],"rachna":[0,213,0.4657],"saleemah":[0,169,0.4456],"shanesha":[0,218,0.4677],"suehay":[0,11,0.0],"tamsyn":[0,180,0.4511],"teneal":[0,39,0.0],"tenile":[0,25,0.0],"jaimelynn":[0,27,0.0],"kaileen":[0,834,0.5842],"kemesha":[0,73,0.0],"kimetra":[0,19,0.0],"nafeesa":[0,203,0.4615],"natilie":[0,283,0.4904],"rianna":[0,3796,0.7159],"sujei":[0,23,0.0],"summar":[0,329,0.5034],"tanille":[0,46,0.0],"teneille":[0,50,0.0],"wykesha":[0,43,0.0],"aerin":[16,932,0.5853],"akeia":[0,183,0.4525],"bryony":[0,257,0.482],"charish":[0,435,0.5277],"cilicia":[0,154,0.4375],"comaneci":[0,9,0.0],"deshundra":[0,68,0.0],"gaudy":[0,20,0.0],"hadiya":[0,952,0.5957],"hadiyah":[0,588,0.5539],"jaala":[0,362,0.5117],"jihan":[114,605,0.4808],"jonika":[0,206,0.4628],"kabrina":[0,435,0.5277],"kahlilah":[0,55,0.0],"kashunda":[0,37,0.0],"khalidah":[0,67,0.0],"nashira":[0,295,0.494],"nekeya":[0,77,0.0],"niger":[11,25,0.0],"qianna":[0,165,0.4435],"sameerah":[0,469,0.5342],"shanicka":[0,217,0.4673],"solana":[0,2844,0.6908],"tamka":[0,9,0.0],"tanekia":[0,123,0.418],"thi":[63,408,0.4631],"yanick":[57,45,0.2245],"yeni":[0,464,0.5333],"zarinah":[0,189,0.4553],"ajeenah":[0,79,0.0],"allisson":[0,2780,0.6888],"antria":[0,8,0.0],"bandy":[62,30,0.0],"brandia":[0,19,0.0],"calina":[0,753,0.5754],"chelan":[0,72,0.0],"chessica":[0,86,0.0],"denille":[0,34,0.0],"dennielle":[0,20,0.0],"elika":[0,414,0.5234],"falona":[0,19,0.0],"genesia":[0,78,0.0],"ha":[73,422,0.4594],"hanni":[0,103,0.4026],"jaclin":[0,153,0.4369],"jacole":[5,127,0.408],"jamekia":[0,258,0.4823],"jermica":[0,48,0.0],"kalilah":[0,760,0.5762],"laterica":[0,202,0.4611],"latoyya":[0,43,0.0],"linsay":[0,673,0.5656],"lynsay":[0,307,0.4974],"mehgan":[0,543,0.547],"nafeesah":[0,206,0.4628],"pooja":[0,1981,0.6594],"quanisha":[0,1535,0.6372],"ruchi":[0,374,0.5146],"rut":[0,834,0.5842],"safiyyah":[0,731,0.5728],"shakeia":[0,328,0.5032],"shantil":[0,111,0.4091],"shareefah":[0,43,0.0],"sobeida":[0,14,0.0],"suhey":[0,212,0.4653],"tannille":[0,8,0.0],"tayla":[0,5432,0.747],"tenneal":[0,8,0.0],"tennell":[5,13,0.0],"tiniki":[0,8,0.0],"toree":[30,418,0.4947],"trinh":[0,443,0.5293],"wakeelah":[0,95,0.0],"amysue":[0,18,0.0],"anahi":[31,18730,0.8532],"anjail":[0,51,0.0],"arisa":[0,855,0.5864],"aunika":[0,374,0.5146],"chanae":[0,406,0.5217],"charmeka":[0,104,0.4034],"charmika":[0,63,0.0],"chayla":[0,949,0.5955],"chinika":[0,19,0.0],"christinamarie":[0,163,0.4424],"cortny":[0,197,0.4589],"deedgra":[0,12,0.0],"dekesha":[0,20,0.0],"denyelle":[0,7,0.0],"donecia":[0,40,0.0],"ehrin":[22,33,0.0],"elpida":[0,22,0.0],"faten":[0,174,0.4481],"flesha":[0,7,0.0],"haleema":[0,446,0.5299],"haneefah":[0,164,0.443],"heathermarie":[0,17,0.0],"hema":[0,165,0.4435],"ilima":[0,37,0.0],"ingris":[0,240,0.476],"iyana":[0,5225,0.7436],"jady":[5,221,0.4604],"jaemi":[0,41,0.0],"jassica":[0,236,0.4746],"jonise":[0,76,0.0],"kadisha":[0,241,0.4764],"karema":[0,62,0.0],"keneisha":[0,528,0.5445],"keoka":[0,47,0.0],"kerisa":[0,55,0.0],"khalia":[7,3465,0.7067],"laquina":[0,47,0.0],"laresha":[0,250,0.4796],"laryn":[0,410,0.5226],"latousha":[0,17,0.0],"lekeysha":[0,40,0.0],"lizzet":[0,629,0.5597],"lyndsi":[0,1043,0.6037],"magdalia":[0,7,0.0],"makeshia":[0,98,0.0],"maquita":[0,133,0.4248],"mariaguadalupe":[0,807,0.5814],"meleana":[0,276,0.4882],"melissaann":[0,197,0.4589],"memori":[0,119,0.4151],"mykia":[0,927,0.5934],"nakima":[0,173,0.4476],"oluwatosin":[156,150,0.2534],"paraskeve":[0,7,0.0],"rakeisha":[0,185,0.4534],"rashema":[0,62,0.0],"resheda":[0,12,0.0],"rhianon":[0,355,0.51],"riana":[0,2261,0.6709],"santrice":[0,97,0.0],"shafina":[0,7,0.0],"shakeela":[0,257,0.482],"shakerra":[0,287,0.4916],"shalonna":[0,40,0.0],"shanieka":[0,220,0.4685],"shaquanda":[0,691,0.5679],"sheeba":[0,38,0.0],"shekinah":[0,2124,0.6654],"shenetra":[0,30,0.0],"shyree":[0,55,0.0],"takeia":[0,277,0.4885],"talishia":[0,104,0.4034],"taneca":[0,12,0.0],"tanequa":[0,171,0.4466],"tankia":[0,7,0.0],"taquila":[0,214,0.4661],"tarkesha":[0,7,0.0],"teather":[0,30,0.0],"tekila":[0,57,0.0],"telsa":[0,74,0.0],"temecka":[0,7,0.0],"tenneil":[0,12,0.0],"tennillie":[0,7,0.0],"thyais":[0,7,0.0],"tikina":[0,7,0.0],"timiki":[0,12,0.0],"tishona":[0,18,0.0],"tremika":[0,34,0.0],"trinise":[0,17,0.0],"tynesia":[0,97,0.0],"tyresha":[0,607,0.5566],"adilah":[0,24,0.0],"akiya":[0,524,0.5439],"alainna":[0,751,0.5751],"alexes":[139,700,0.4879],"alexza":[0,220,0.4685],"amand":[0,181,0.4515],"amberlynn":[0,1412,0.63],"ambyr":[0,283,0.4904],"aminda":[0,39,0.0],"amylyn":[0,12,0.0],"analiese":[0,1631,0.6425],"aneesha":[0,590,0.5542],"anisah":[0,786,0.5791],"aseelah":[0,19,0.0],"bahiyyah":[0,6,0.0],"bekah":[0,208,0.4636],"benika":[0,19,0.0],"bernnadette":[0,17,0.0],"brecken":[4876,858,0.6392],"carshena":[0,30,0.0],"caycee":[0,437,0.5281],"chakina":[0,11,0.0],"chericka":[0,6,0.0],"chessa":[0,436,0.5279],"chevonda":[0,11,0.0],"chiquta":[0,12,0.0],"dashanda":[0,17,0.0],"demecia":[0,84,0.0],"emmily":[0,961,0.5965],"fatime":[0,81,0.0],"geovanna":[0,803,0.5809],"gerardina":[0,6,0.0],"hien":[305,327,0.2898],"hristina":[0,48,0.0],"intisar":[0,111,0.4091],"ivori":[0,544,0.5471],"jamaca":[0,18,0.0],"jamieann":[0,42,0.0],"jamiela":[0,28,0.0],"jamielynn":[0,607,0.5566],"jamiylah":[0,11,0.0],"javetta":[0,22,0.0],"javona":[0,231,0.4727],"jema":[0,400,0.5204],"jima":[0,6,0.0],"joielle":[0,11,0.0],"jouanna":[0,6,0.0],"kailee":[28,12823,0.82],"kalissa":[0,1088,0.6073],"kalista":[0,2384,0.6755],"kamillah":[0,322,0.5016],"kanetra":[0,89,0.0],"karana":[0,11,0.0],"karrah":[0,833,0.5841],"kasmin":[0,6,0.0],"keelee":[0,463,0.5331],"keilah":[0,1568,0.6391],"kennesha":[0,366,0.5127],"keyatta":[0,115,0.4121],"kimaka":[0,14,0.0],"kimeka":[0,61,0.0],"lakelsha":[0,6,0.0],"lakesiha":[0,11,0.0],"lakevia":[0,257,0.482],"lamecca":[0,22,0.0],"lameisha":[0,184,0.453],"lametrice":[0,6,0.0],"laquette":[0,43,0.0],"lareisha":[0,40,0.0],"larhea":[0,6,0.0],"lartarsha":[0,6,0.0],"latashi":[0,6,0.0],"lataska":[0,6,0.0],"lataysha":[0,109,0.4075],"lateria":[0,262,0.4837],"latres":[0,22,0.0],"lymari":[0,40,0.0],"lyndsy":[0,622,0.5588],"mahasin":[0,94,0.0],"makeia":[0,39,0.0],"makeitha":[0,6,0.0],"malarie":[0,773,0.5776],"mandilyn":[0,34,0.0],"maneka":[0,44,0.0],"mariatheresa":[0,40,0.0],"markiesha":[0,213,0.4657],"mattia":[332,136,0.3789],"mieshia":[0,149,0.4346],"nakeda":[0,48,0.0],"nataka":[0,6,0.0],"natara":[0,154,0.4375],"natira":[0,31,0.0],"neetu":[0,35,0.0],"netisha":[0,25,0.0],"nikishia":[0,21,0.0],"primavera":[0,27,0.0],"quanesha":[0,687,0.5674],"radoika":[0,6,0.0],"rahni":[0,29,0.0],"rameka":[0,37,0.0],"rebekha":[0,73,0.0],"roshawna":[0,61,0.0],"sakara":[0,167,0.4445],"salisha":[0,82,0.0],"samyra":[0,1099,0.6082],"sanika":[0,433,0.5273],"sapana":[0,12,0.0],"schandra":[0,6,0.0],"seniqua":[0,21,0.0],"shadina":[0,6,0.0],"shalen":[11,72,0.0],"shamaka":[0,39,0.0],"shamarra":[0,101,0.4009],"shamell":[128,65,0.3032],"shamikia":[0,59,0.0],"shamiko":[0,11,0.0],"sharlinda":[0,6,0.0],"shatana":[0,90,0.0],"shawann":[0,17,0.0],"shaylyn":[0,2100,0.6644],"sheika":[0,76,0.0],"shekema":[0,30,0.0],"shemeca":[0,91,0.0],"shiloe":[0,34,0.0],"shreen":[0,11,0.0],"shrita":[0,58,0.0],"shumeka":[0,20,0.0],"shunika":[0,41,0.0],"sirenia":[0,99,0.0],"siti":[0,11,0.0],"sugei":[0,6,0.0],"sujeiry":[0,12,0.0],"sumayyah":[0,920,0.5928],"taheera":[0,91,0.0],"tahlia":[0,3380,0.7058],"taliah":[0,3372,0.7056],"tamaica":[0,11,0.0],"tamaika":[0,19,0.0],"taniel":[0,18,0.0],"taquetta":[0,11,0.0],"taraann":[0,54,0.0],"tarea":[0,79,0.0],"tashawnda":[0,57,0.0],"tashera":[0,121,0.4166],"tasya":[0,54,0.0],"tea":[0,2483,0.679],"tekelia":[0,67,0.0],"temecia":[0,6,0.0],"temitope":[128,260,0.347],"tenniel":[0,11,0.0],"tereka":[0,107,0.4059],"teshika":[0,6,0.0],"tifphanie":[0,6,0.0],"tinelle":[0,6,0.0],"tishika":[0,6,0.0],"tonyeka":[0,6,0.0],"torrye":[0,18,0.0],"tovah":[0,649,0.5624],"tuyet":[0,298,0.4948],"tyeesha":[0,230,0.4723],"tylena":[0,53,0.0],"tymia":[0,287,0.4916],"tynise":[0,33,0.0],"tynisia":[0,6,0.0],"tynita":[0,44,0.0],"tyshonda":[0,27,0.0],"vaneka":[0,6,0.0],"varee":[0,6,0.0],"vernika":[0,28,0.0],"vernoica":[0,11,0.0],"vontresa":[0,6,0.0],"vulnavia":[0,6,0.0],"yamileth":[0,6397,0.7612],"yesha":[0,109,0.4075],"yittel":[0,123,0.418],"yukia":[0,17,0.0],"zanobia":[0,118,0.4144],"adale":[0,10,0.0],"adelicia":[0,49,0.0],"aderonke":[0,23,0.0],"aerie":[0,198,0.4593],"ageliki":[0,16,0.0],"akasha":[0,1407,0.6297],"akeshia":[0,48,0.0],"alcina":[0,12,0.0],"alenia":[0,70,0.0],"alexandera":[0,351,0.5091],"alima":[0,477,0.5357],"alodie":[0,10,0.0],"amatullah":[0,342,0.5068],"amesha":[0,323,0.5018],"ametria":[0,16,0.0],"amymarie":[0,52,0.0],"anaida":[0,20,0.0],"aneika":[0,10,0.0],"angeleah":[0,480,0.5362],"anietra":[0,5,0.0],"arabia":[0,311,0.4986],"arnedra":[0,5,0.0],"arsha":[46,33,0.0],"arshia":[130,355,0.3932],"ashana":[0,220,0.4685],"ashlye":[0,391,0.5184],"asmahan":[0,20,0.0],"atosha":[0,17,0.0],"auna":[0,547,0.5476],"ayondela":[0,5,0.0],"ayra":[0,1996,0.66],"ayrica":[0,38,0.0],"azra":[110,1216,0.5727],"babita":[0,11,0.0],"banessa":[0,390,0.5182],"baranda":[0,16,0.0],"bas":[0,5,0.0],"berenise":[0,645,0.5619],"bobijo":[0,16,0.0],"bri":[0,305,0.4969],"britnie":[0,959,0.5964],"caitrin":[0,410,0.5226],"calanda":[0,5,0.0],"camera":[0,106,0.4051],"carise":[0,15,0.0],"carleena":[0,110,0.4083],"carnisha":[0,195,0.458],"casmin":[0,5,0.0],"cassity":[0,358,0.5108],"catessa":[0,29,0.0],"catrease":[0,5,0.0],"ceila":[0,10,0.0],"cesily":[0,97,0.0],"chalandra":[0,15,0.0],"charlissa":[0,105,0.4042],"charu":[0,12,0.0],"chasitiy":[0,20,0.0],"chataqua":[0,5,0.0],"chatina":[0,5,0.0],"chenele":[0,5,0.0],"chenequa":[0,42,0.0],"chenika":[0,81,0.0],"chenique":[0,42,0.0],"cherrica":[0,10,0.0],"cheska":[0,11,0.0],"cheyene":[22,720,0.5571],"chiana":[0,215,0.4665],"chiante":[5,74,0.0],"chika":[28,350,0.4773],"chimeka":[0,15,0.0],"chitra":[0,33,0.0],"christale":[0,5,0.0],"chyla":[0,433,0.5273],"comeka":[0,17,0.0],"cyrelle":[0,5,0.0],"daaimah":[0,17,0.0],"daenna":[0,5,0.0],"dalya":[0,544,0.5471],"daniette":[0,5,0.0],"dannyell":[0,15,0.0],"danyll":[0,5,0.0],"decole":[0,5,0.0],"deda":[0,5,0.0],"demeatra":[0,5,0.0],"deshauna":[0,293,0.4934],"deshondra":[0,92,0.0],"devia":[0,10,0.0],"deya":[0,150,0.4352],"doan":[37,17,0.0],"domanique":[146,375,0.3911],"domingue":[19,68,0.0],"doneisha":[0,365,0.5125],"donnesha":[0,273,0.4872],"ednita":[0,31,0.0],"eleesha":[0,66,0.0],"elexia":[0,593,0.5546],"esparanza":[0,72,0.0],"evdokia":[0,10,0.0],"evdoxia":[0,10,0.0],"falanda":[0,11,0.0],"falena":[0,16,0.0],"farrar":[0,10,0.0],"felissia":[0,5,0.0],"fruma":[0,169,0.4456],"geshia":[0,5,0.0],"giavanna":[0,5978,0.7553],"grechen":[0,5,0.0],"hafeezah":[0,34,0.0],"haily":[0,3096,0.6982],"idara":[0,138,0.428],"jadira":[0,468,0.534],"jaelene":[0,483,0.5368],"jahnna":[0,25,0.0],"jamei":[0,41,0.0],"jamielyn":[0,252,0.4803],"jamillia":[0,108,0.4067],"janaye":[0,955,0.596],"jannica":[0,28,0.0],"jaquelina":[0,39,0.0],"jarah":[11,433,0.5164],"jee":[5,38,0.0],"jenesa":[0,109,0.4075],"jenille":[0,69,0.0],"jennessa":[0,618,0.5582],"jenniferanne":[0,29,0.0],"jennifermarie":[0,56,0.0],"joakima":[0,13,0.0],"jomaira":[0,56,0.0],"jovi":[666,2011,0.515],"jovona":[0,55,0.0],"juaita":[0,5,0.0],"kacia":[0,274,0.4876],"kahlia":[0,1286,0.6218],"kalah":[0,778,0.5782],"kaleema":[0,46,0.0],"kamarie":[236,553,0.4061],"kamee":[0,89,0.0],"kameisha":[0,303,0.4963],"kamelia":[0,424,0.5255],"kametra":[0,16,0.0],"kanetha":[0,32,0.0],"kapri":[139,1427,0.5822],"karlisha":[0,156,0.4386],"karrina":[0,223,0.4697],"karuna":[0,144,0.4317],"kasheena":[0,183,0.4525],"kashira":[0,94,0.0],"kasmira":[0,146,0.4329],"katashia":[0,12,0.0],"katiuscia":[0,5,0.0],"katreina":[0,5,0.0],"katrenna":[0,5,0.0],"keetra":[0,11,0.0],"kelani":[66,1571,0.6169],"kelena":[0,87,0.0],"kelina":[0,230,0.4723],"kelsea":[5,5997,0.755],"kenishia":[0,84,0.0],"kerl":[0,10,0.0],"kescha":[0,5,0.0],"keyonda":[0,175,0.4486],"khaleelah":[0,107,0.4059],"khalema":[0,5,0.0],"khrystal":[0,351,0.5091],"kierstyn":[0,2409,0.6764],"kiesel":[0,5,0.0],"kimbala":[0,5,0.0],"kinesha":[0,127,0.4208],"kishon":[262,20,0.4553],"komal":[0,631,0.56],"komeka":[0,10,0.0],"kristilyn":[0,59,0.0],"kumi":[0,5,0.0],"kwanda":[0,29,0.0],"kylah":[0,6152,0.7578],"lacher":[0,11,0.0],"ladesha":[0,65,0.0],"lafoya":[0,10,0.0],"lakeida":[0,5,0.0],"lakeshi":[0,16,0.0],"lakinia":[0,5,0.0],"lakinya":[0,27,0.0],"lakisia":[0,11,0.0],"lakiva":[0,36,0.0],"lalisha":[0,10,0.0],"lanasha":[0,56,0.0],"landrea":[0,33,0.0],"landria":[0,28,0.0],"laportia":[0,219,0.4681],"laquinthia":[0,5,0.0],"lasheta":[0,5,0.0],"lateashia":[0,5,0.0],"latiasha":[0,11,0.0],"latorra":[0,37,0.0],"latorri":[0,5,0.0],"latrasha":[0,5,0.0],"latreca":[0,5,0.0],"latreva":[0,22,0.0],"latronya":[0,10,0.0],"lekiesha":[0,44,0.0],"lenesha":[0,48,0.0],"lexia":[0,783,0.5788],"liberti":[0,194,0.4576],"lira":[0,362,0.5117],"liseth":[0,743,0.5742],"lladira":[0,32,0.0],"lotasha":[0,15,0.0],"luchanna":[0,5,0.0],"lucinia":[0,5,0.0],"maeghan":[0,1064,0.6054],"mahria":[0,30,0.0],"majeeda":[0,5,0.0],"maketta":[0,5,0.0],"mandala":[0,5,0.0],"mandisha":[0,10,0.0],"mandolin":[0,186,0.4539],"manoy":[0,5,0.0],"marish":[0,5,0.0],"markeesha":[0,80,0.0],"marquitia":[0,32,0.0],"masika":[0,21,0.0],"matalie":[0,136,0.4267],"maygan":[0,612,0.5574],"mekka":[5,47,0.0],"merranda":[0,132,0.4241],"mesina":[0,10,0.0],"mickela":[0,38,0.0],"mirel":[0,675,0.5659],"mistyann":[0,16,0.0],"moani":[0,101,0.4009],"mylynda":[0,5,0.0],"najeebah":[0,15,0.0],"najmah":[0,63,0.0],"naketta":[0,5,0.0],"nandita":[0,245,0.4778],"naneka":[0,5,0.0],"nanyamka":[0,53,0.0],"narisa":[0,15,0.0],"natacia":[0,146,0.4329],"natalea":[0,267,0.4853],"natelie":[0,138,0.428],"nateshia":[0,34,0.0],"nawal":[0,1318,0.624],"necha":[0,80,0.0],"nekesia":[0,5,0.0],"nency":[0,15,0.0],"nequita":[0,11,0.0],"nickita":[21,40,0.0],"nidhi":[0,1497,0.635],"nieshia":[0,161,0.4414],"nikiesha":[0,67,0.0],"nikina":[0,20,0.0],"nikitra":[0,5,0.0],"nikya":[0,247,0.4785],"nimat":[0,11,0.0],"noha":[135,381,0.4006],"nyeasha":[0,21,0.0],"octivia":[0,68,0.0],"oluwatoyin":[0,120,0.4158],"phawn":[0,5,0.0],"ping":[6,10,0.0],"quanta":[70,93,0.2524],"quwanda":[0,11,0.0],"rabecka":[0,67,0.0],"rahcel":[0,128,0.4214],"raheema":[0,42,0.0],"raime":[0,52,0.0],"rasheida":[0,68,0.0],"ravyn":[19,2583,0.6781],"rheanne":[0,146,0.4329],"rheannon":[0,440,0.5287],"rhia":[0,164,0.443],"richenda":[0,16,0.0],"ricketta":[0,83,0.0],"rie":[0,84,0.0],"riena":[0,22,0.0],"romeka":[0,77,0.0],"roneka":[0,134,0.4254],"roshida":[0,15,0.0],"sadaf":[0,640,0.5612],"sadi":[26,669,0.5471],"salud":[5,5,0.0],"samarra":[0,419,0.5244],"sametria":[0,55,0.0],"sanetra":[0,10,0.0],"sareena":[0,572,0.5515],"satoya":[0,118,0.4144],"sauda":[0,22,0.0],"schannon":[0,5,0.0],"seanta":[0,5,0.0],"sekina":[0,30,0.0],"senada":[0,15,0.0],"senica":[72,27,0.0],"shaakira":[0,224,0.47],"shaelyn":[0,3476,0.7082],"shahrzad":[0,124,0.4187],"shaisha":[0,5,0.0],"shajuanna":[0,16,0.0],"shakeita":[0,118,0.4144],"shakirah":[0,808,0.5815],"shalaundra":[0,5,0.0],"shalitha":[0,26,0.0],"shallan":[0,54,0.0],"shallen":[0,57,0.0],"shallyn":[0,85,0.0],"shametra":[0,102,0.4017],"shamyra":[0,775,0.5779],"shanaya":[0,3052,0.6969],"shaneda":[0,16,0.0],"shanetra":[0,177,0.4496],"shanida":[0,17,0.0],"shanikka":[0,146,0.4329],"shannika":[0,42,0.0],"shantaye":[0,46,0.0],"shantika":[0,106,0.4051],"shareece":[0,144,0.4317],"sharmilla":[0,5,0.0],"sharnet":[0,5,0.0],"shatema":[0,34,0.0],"shaundria":[0,34,0.0],"shaurice":[0,42,0.0],"shawndrea":[0,133,0.4248],"shawnett":[0,11,0.0],"shawnon":[0,5,0.0],"shawntai":[0,16,0.0],"shawyn":[0,5,0.0],"sheindel":[0,38,0.0],"sheindy":[0,52,0.0],"shekela":[0,82,0.0],"shekena":[0,36,0.0],"shekila":[0,44,0.0],"shelica":[0,5,0.0],"shemia":[0,142,0.4305],"shenaye":[0,10,0.0],"sheneeka":[0,37,0.0],"shequila":[0,154,0.4375],"shinise":[0,10,0.0],"shonett":[0,5,0.0],"shoshona":[0,5,0.0],"shrea":[0,5,0.0],"shundria":[0,10,0.0],"shuntae":[0,144,0.4317],"shwanna":[0,20,0.0],"soniya":[0,341,0.5066],"sonrisa":[0,43,0.0],"sugeiri":[0,5,0.0],"sule":[0,5,0.0],"sunshyne":[0,106,0.4051],"suyapa":[0,24,0.0],"taheerah":[0,157,0.4392],"tahia":[0,55,0.0],"tahsha":[0,10,0.0],"taiasha":[0,28,0.0],"talecia":[0,85,0.0],"tamarind":[0,10,0.0],"tamaro":[0,5,0.0],"tamarr":[12,5,0.0],"tamecha":[0,10,0.0],"tamekea":[0,5,0.0],"tamieko":[0,5,0.0],"tamilia":[0,28,0.0],"tanae":[0,675,0.5659],"taneille":[0,5,0.0],"tanikqua":[0,18,0.0],"taresha":[0,32,0.0],"tarkisha":[0,5,0.0],"tarlisha":[0,11,0.0],"tawanica":[0,5,0.0],"tawasha":[0,11,0.0],"tawiana":[0,5,0.0],"telah":[0,33,0.0],"teneca":[0,5,0.0],"teneile":[0,5,0.0],"tenneill":[0,5,0.0],"teondra":[0,115,0.4121],"teshawn":[350,26,0.4794],"tiandra":[0,484,0.537],"tikeisha":[0,21,0.0],"tiphaine":[0,5,0.0],"tiyana":[0,1154,0.6124],"tnisha":[0,21,0.0],"tolonda":[0,10,0.0],"tomkia":[0,5,0.0],"tomomi":[0,50,0.0],"tranise":[0,78,0.0],"trishelle":[0,210,0.4644],"trixi":[0,10,0.0],"tuesdae":[0,25,0.0],"tyishia":[0,62,0.0],"umika":[0,23,0.0],"utopia":[0,44,0.0],"venitra":[0,5,0.0],"yanett":[0,175,0.4486],"yasheika":[0,22,0.0],"yatta":[0,10,0.0],"yazmine":[0,2627,0.6839],"yelitza":[0,1182,0.6145],"yema":[0,5,0.0],"yesinia":[0,48,0.0],"yides":[0,922,0.5929],"yliana":[0,510,0.5415],"yudelka":[0,29,0.0],"zakiyah":[7,1995,0.658],"zeneida":[0,15,0.0],"zia":[311,3080,0.6413],"delvecchio":[81,0,0.0],"rasean":[700,0,0.569],"zakee":[577,0,0.5522],"salathiel":[64,0,0.0],"chevy":[3678,860,0.5928],"tarell":[874,0,0.5883],"tri":[666,0,0.5647],"abdiel":[7249,0,0.7721],"bashir":[1010,0,0.6009],"rasool":[120,0,0.4158],"gerren":[552,38,0.5185],"ramadan":[298,0,0.4948],"rodregus":[49,0,0.0],"abdurrahim":[27,0,0.0],"almalik":[97,0,0.0],"faheem":[800,0,0.5806],"farhan":[1752,0,0.6487],"nafis":[538,0,0.5462],"sabian":[938,21,0.5833],"corian":[313,21,0.473],"duriel":[261,0,0.4833],"haleem":[218,0,0.4677],"hameed":[177,0,0.4496],"jamah":[37,0,0.0],"jeramia":[139,0,0.4286],"kyrone":[30,0,0.0],"lukus":[967,0,0.5971],"nnamdi":[797,0,0.5803],"seanmichael":[588,0,0.5539],"shakim":[430,0,0.5267],"xzavier":[8302,0,0.7838],"yechezkel":[848,0,0.5857],"alexy":[301,381,0.3166],"bao":[840,580,0.3729],"fouad":[415,0,0.5236],"jameil":[240,0,0.476],"jammal":[295,0,0.494],"jenner":[536,15,0.5333],"jeramee":[40,0,0.0],"jeric":[596,0,0.555],"jermont":[14,0,0.0],"kamar":[1556,56,0.6192],"latwan":[62,0,0.0],"lebrone":[8,0,0.0],"lomont":[18,0,0.0],"rayshun":[352,0,0.5093],"ritesh":[171,0,0.4466],"tyrance":[43,0,0.0],"vinh":[1518,10,0.6327],"abasi":[40,0,0.0],"abdual":[17,0,0.0],"adetokunbo":[104,5,0.3888],"anterio":[86,0,0.0],"artavius":[374,0,0.5146],"ayron":[326,5,0.4964],"benaiah":[2233,0,0.6698],"bladimir":[1185,0,0.6147],"brach":[99,0,0.0],"braheem":[254,0,0.481],"chike":[183,0,0.4525],"christpoher":[61,0,0.0],"darrence":[28,0,0.0],"dayron":[827,0,0.5835],"dewann":[17,0,0.0],"diante":[1366,20,0.6193],"etoyi":[7,0,0.0],"garick":[41,0,0.0],"jashawn":[2306,34,0.6641],"jashon":[946,6,0.592],"jerem":[13,0,0.0],"jerode":[34,0,0.0],"jessen":[360,0,0.5113],"khoa":[794,5,0.5769],"lamell":[52,0,0.0],"leeandrew":[45,0,0.0],"mahdee":[18,0,0.0],"marquett":[79,0,0.0],"matthen":[35,0,0.0],"mehdi":[996,0,0.5997],"michah":[380,17,0.4975],"montrez":[579,0,0.5525],"ojay":[19,0,0.0],"ortiz":[7,0,0.0],"othoniel":[37,0,0.0],"pratik":[558,0,0.5493],"romar":[190,0,0.4558],"sevag":[165,0,0.4435],"shaheem":[761,0,0.5763],"shahied":[7,0,0.0],"tau":[34,0,0.0],"tiras":[207,0,0.4632],"toron":[61,0,0.0],"torrez":[110,0,0.4083],"trung":[759,0,0.576],"tymaine":[22,0,0.0],"weslee":[1181,267,0.5156],"yisrael":[1492,0,0.6348],"abdallah":[1591,0,0.6403],"abrian":[369,5,0.5077],"aiman":[368,193,0.3606],"antwayne":[11,0,0.0],"assad":[300,0,0.4954],"austreberto":[16,0,0.0],"avier":[136,0,0.4267],"bobbyjoe":[89,0,0.0],"branndon":[261,0,0.4833],"cabe":[202,0,0.4611],"cesear":[12,0,0.0],"christaphor":[6,0,0.0],"dadrian":[667,0,0.5648],"demarrio":[198,0,0.4593],"demerick":[21,0,0.0],"deontae":[3660,0,0.7127],"dionta":[364,0,0.5122],"dishan":[27,0,0.0],"divine":[1772,2382,0.415],"dywan":[26,0,0.0],"emilo":[177,0,0.4496],"emmanouel":[6,0,0.0],"erique":[260,0,0.483],"eryk":[1046,0,0.6039],"feras":[480,0,0.5362],"fonta":[11,12,0.0],"gabiel":[23,0,0.0],"hamed":[563,0,0.5501],"harsha":[229,19,0.4422],"hatim":[253,0,0.4806],"hussien":[280,0,0.4894],"jadrien":[357,5,0.5047],"jahmel":[660,0,0.5639],"jareb":[72,0,0.0],"jarnell":[51,0,0.0],"jarone":[60,0,0.0],"jauan":[196,0,0.4585],"javar":[714,0,0.5707],"javed":[291,0,0.4928],"jaylon":[10100,252,0.7835],"jereomy":[6,0,0.0],"jontae":[865,179,0.5002],"joshuwa":[393,0,0.5189],"jusitn":[143,0,0.4311],"kabir":[3374,0,0.7056],"keevan":[170,0,0.4461],"ketrick":[74,0,0.0],"khayree":[263,0,0.484],"kumasi":[18,0,0.0],"lakieth":[6,0,0.0],"larvell":[6,0,0.0],"londale":[15,0,0.0],"luqman":[1048,0,0.6041],"mandeep":[251,160,0.3193],"markeis":[302,0,0.496],"mohit":[432,0,0.5271],"mondre":[29,0,0.0],"montae":[680,0,0.5665],"nadav":[754,0,0.5755],"naveed":[677,0,0.5661],"nickalas":[609,0,0.5569],"nickalus":[444,0,0.5295],"nickolai":[523,0,0.5437],"paulmichael":[182,0,0.452],"quiency":[11,0,0.0],"quintez":[664,0,0.5644],"rahmaan":[43,0,0.0],"rahshawn":[90,0,0.0],"rashine":[11,0,0.0],"raymel":[75,0,0.0],"rigel":[613,10,0.5499],"sargon":[74,0,0.0],"saud":[497,0,0.5393],"saxton":[679,0,0.5664],"shanga":[36,5,0.0],"siddharth":[3270,0,0.7029],"sulton":[11,0,0.0],"tamel":[83,0,0.0],"tan":[586,11,0.545],"tavarius":[712,0,0.5705],"tizoc":[56,0,0.0],"travoris":[144,0,0.4317],"treaver":[21,0,0.0],"tysean":[1027,0,0.6023],"tywain":[54,0,0.0],"ulices":[1542,0,0.6376],"wesam":[366,0,0.5127],"yair":[4917,0,0.7383],"yeshaya":[814,0,0.5821],"zackory":[461,0,0.5327],"ziyad":[999,0,0.5999],"abdulla":[519,0,0.543],"abdur":[336,0,0.5053],"agim":[27,0,0.0],"ahmon":[228,0,0.4716],"alekos":[10,0,0.0],"alpesh":[5,0,0.0],"altarik":[5,0,0.0],"amol":[237,0,0.4749],"antario":[166,0,0.444],"anttwan":[5,0,0.0],"antwonn":[5,0,0.0],"aqeel":[220,0,0.4685],"aristotelis":[55,0,0.0],"arkee":[5,0,0.0],"arvelle":[5,0,0.0],"ashwin":[2177,0,0.6676],"asmar":[175,0,0.4486],"audi":[143,213,0.3053],"avinash":[1039,0,0.6033],"avion":[2631,304,0.6217],"aviv":[704,218,0.4527],"bassey":[10,0,0.0],"blakeley":[102,1280,0.5817],"bodhi":[12980,530,0.7937],"bowden":[577,0,0.5522],"brahim":[127,0,0.4208],"brahin":[10,0,0.0],"brannigan":[21,7,0.0],"brionne":[15,449,0.5161],"bronc":[150,0,0.4352],"brycen":[13706,26,0.826],"buenaventura":[5,0,0.0],"cardin":[341,25,0.4777],"casy":[122,86,0.2719],"chadney":[43,5,0.0],"chain":[5,0,0.0],"chaska":[67,10,0.0],"chaswick":[5,0,0.0],"cian":[3575,27,0.706],"coran":[76,0,0.0],"cuong":[554,0,0.5487],"dai":[122,85,0.273],"daimen":[319,0,0.5008],"damiean":[81,0,0.0],"dandrick":[5,0,0.0],"dayman":[10,0,0.0],"decory":[44,0,0.0],"demetry":[95,0,0.0],"demiko":[22,0,0.0],"demonta":[743,0,0.5742],"derrian":[676,88,0.5102],"devang":[36,0,0.0],"develle":[60,0,0.0],"dhati":[5,0,0.0],"dikran":[10,0,0.0],"dionn":[5,0,0.0],"dishawn":[201,0,0.4606],"donnavan":[152,0,0.4364],"dontel":[208,0,0.4636],"dontell":[193,0,0.4571],"dovon":[13,0,0.0],"dunstan":[5,0,0.0],"dushaun":[72,0,0.0],"dyami":[366,5,0.5069],"efstratios":[12,0,0.0],"esgar":[563,0,0.5501],"ezriel":[922,0,0.5929],"fares":[1015,0,0.6013],"gabreil":[235,22,0.4407],"gariel":[40,6,0.0],"geramie":[17,0,0.0],"geramy":[57,0,0.0],"god":[61,0,0.0],"grahm":[682,0,0.5668],"hammad":[510,0,0.5415],"hao":[442,5,0.5241],"haroon":[1421,0,0.6305],"hieu":[827,28,0.5672],"iden":[463,5,0.5283],"ikechukwu":[522,0,0.5435],"ikem":[5,0,0.0],"ilyas":[1996,0,0.66],"iniko":[138,14,0.3962],"isaak":[4223,0,0.7251],"issachar":[149,0,0.4346],"jacin":[25,0,0.0],"jacyn":[48,36,0.0],"jalen":[40113,1711,0.8865],"jamaah":[5,0,0.0],"jamesmichael":[361,0,0.5115],"jantzen":[698,14,0.5593],"javas":[16,0,0.0],"jawann":[167,0,0.4445],"jebb":[34,0,0.0],"jerimah":[177,0,0.4496],"jerimia":[16,0,0.0],"jerit":[37,0,0.0],"jermail":[34,0,0.0],"jerric":[80,0,0.0],"jerrime":[5,0,0.0],"jesiah":[4112,747,0.624],"joshau":[247,0,0.4785],"joshus":[171,0,0.4466],"josuah":[36,0,0.0],"jua":[20,8,0.0],"jwan":[141,92,0.2865],"kable":[153,0,0.4369],"kavon":[2751,41,0.6791],"kawaski":[37,0,0.0],"kazeem":[47,0,0.0],"kederick":[18,0,0.0],"keenen":[1181,0,0.6144],"keilan":[1292,43,0.605],"keldric":[158,0,0.4397],"kenrie":[5,0,0.0],"kevn":[20,0,0.0],"khamisi":[5,0,0.0],"khanh":[414,299,0.3313],"khareem":[92,0,0.0],"kinte":[213,12,0.4453],"kiwan":[97,0,0.0],"korbin":[9153,173,0.7792],"krishan":[410,0,0.5226],"kristifer":[28,0,0.0],"kyon":[818,0,0.5826],"ladarius":[4528,0,0.7312],"lamichael":[328,0,0.5032],"landus":[10,0,0.0],"laquentin":[130,0,0.4228],"larodney":[5,0,0.0],"leeron":[11,0,0.0],"lekendrick":[193,0,0.4571],"maichael":[28,0,0.0],"manpreet":[203,338,0.3415],"marquie":[108,27,0.3409],"marquist":[135,0,0.4261],"martese":[237,0,0.4749],"melik":[489,0,0.5379],"mihir":[1456,0,0.6326],"montral":[15,0,0.0],"mujahid":[320,0,0.501],"naftoli":[453,0,0.5312],"naquan":[1363,0,0.6269],"naron":[60,0,0.0],"nashid":[64,0,0.0],"neven":[429,6,0.5204],"nickalaus":[281,0,0.4897],"niklas":[1701,0,0.6461],"nnaemeka":[94,0,0.0],"nyron":[118,0,0.4144],"olusegun":[77,0,0.0],"onathan":[47,0,0.0],"orlandis":[80,0,0.0],"panayiotis":[303,0,0.4963],"phi":[474,45,0.4959],"prem":[535,0,0.5457],"quinlin":[200,5,0.4511],"quintrell":[505,0,0.5407],"raashan":[5,0,0.0],"radoslav":[5,0,0.0],"radu":[30,0,0.0],"rafhael":[5,0,0.0],"rahkeem":[321,0,0.5013],"rasan":[34,0,0.0],"rasheim":[31,0,0.0],"raymar":[141,0,0.4298],"reimundo":[10,0,0.0],"riyad":[420,0,0.5246],"rodrecus":[70,0,0.0],"rodrigus":[50,0,0.0],"roshard":[127,0,0.4208],"rosolino":[5,0,0.0],"rovon":[5,0,0.0],"ryle":[432,35,0.4939],"samora":[5,587,0.5498],"senaca":[54,0,0.0],"senecca":[27,0,0.0],"sevan":[338,49,0.452],"shaddrick":[10,0,0.0],"shakeem":[830,0,0.5838],"shaman":[71,0,0.0],"shaphan":[53,0,0.0],"sharat":[5,0,0.0],"shimshon":[379,0,0.5157],"shoney":[5,11,0.0],"sincere":[9642,1427,0.7045],"sindey":[5,0,0.0],"spiridon":[15,0,0.0],"taner":[579,0,0.5525],"tarran":[42,39,0.0],"tarryl":[10,0,0.0],"tauheed":[85,0,0.0],"tavarez":[22,0,0.0],"taveres":[10,0,0.0],"tavious":[159,0,0.4403],"tavores":[5,0,0.0],"teko":[11,0,0.0],"terick":[50,0,0.0],"thabiti":[16,0,0.0],"thang":[739,29,0.5553],"thong":[305,0,0.4969],"tiheim":[5,0,0.0],"tjuan":[24,0,0.0],"tobyn":[302,23,0.4668],"tolga":[33,0,0.0],"torrian":[575,11,0.5432],"traeger":[145,0,0.4323],"trason":[168,0,0.4451],"traveon":[1070,0,0.6059],"trayvon":[3400,0,0.7063],"trenity":[23,857,0.5735],"treves":[5,0,0.0],"tujuan":[5,0,0.0],"tung":[221,0,0.4689],"tyee":[318,0,0.5005],"tyquan":[3651,10,0.7108],"tyray":[337,0,0.5055],"tyreece":[677,0,0.5661],"tyshan":[96,0,0.0],"tytus":[1499,0,0.6352],"tywane":[5,0,0.0],"vasili":[193,0,0.4571],"vinicio":[358,0,0.5108],"vonzel":[5,0,0.0],"welsey":[33,0,0.0],"xaiver":[1124,0,0.6102],"yeshua":[2477,0,0.6788],"zacharie":[1145,0,0.6118],"kizzy":[12,2347,0.6711],"riann":[0,773,0.5776],"fanta":[0,1137,0.6112],"meghann":[0,3788,0.7157],"kissy":[0,136,0.4267],"kissie":[0,100,0.4],"shakonda":[0,32,0.0],"kizzi":[0,70,0.0],"rianne":[0,940,0.5946],"jamilia":[0,516,0.5425],"delinah":[0,43,0.0],"tamekka":[0,60,0.0],"brienne":[5,1497,0.6332],"maxi":[156,142,0.259],"jilian":[0,803,0.5809],"kizzey":[0,24,0.0],"margeaux":[0,920,0.5928],"yaisa":[0,60,0.0],"breean":[0,110,0.4083],"jaslyn":[0,4462,0.7299],"kaneisha":[0,1014,0.6012],"aeisha":[0,265,0.4846],"suhaill":[0,15,0.0],"carlisha":[0,665,0.5646],"kinta":[73,14,0.0],"sabreen":[0,616,0.5579],"atlantis":[75,529,0.4871],"carrah":[0,155,0.4381],"jamiee":[0,385,0.5171],"jasmyne":[0,4047,0.7214],"laisha":[0,2431,0.6772],"latory":[0,44,0.0],"londie":[0,13,0.0],"shaneice":[0,485,0.5371],"baisha":[0,12,0.0],"breeanna":[0,3147,0.6996],"hang":[0,382,0.5164],"lafarrah":[0,17,0.0],"lameika":[0,35,0.0],"talarisha":[0,17,0.0],"turquoise":[0,539,0.5463],"ahisha":[0,16,0.0],"jamisha":[0,694,0.5683],"kimisha":[0,181,0.4515],"kissey":[0,29,0.0],"lakizzy":[0,11,0.0],"maigan":[0,239,0.4757],"malaya":[0,8111,0.7818],"omolola":[0,121,0.4166],"qadriyyah":[0,41,0.0],"riannon":[0,250,0.4796],"tristaca":[0,22,0.0],"asiha":[0,15,0.0],"brean":[10,144,0.4091],"desaray":[0,1053,0.6045],"formeka":[0,37,0.0],"frimet":[0,612,0.5574],"genesee":[0,278,0.4888],"jamecia":[0,822,0.583],"kwanita":[0,38,0.0],"kynisha":[0,80,0.0],"lamekia":[0,80,0.0],"lekia":[0,213,0.4657],"lenika":[0,23,0.0],"myshia":[0,38,0.0],"ravan":[0,231,0.4727],"ruqayyah":[0,519,0.543],"shamonda":[0,31,0.0],"shaneca":[0,77,0.0],"stevi":[0,1602,0.6409],"takelia":[0,163,0.4424],"tarajee":[0,18,0.0],"tieshia":[0,192,0.4567],"uyen":[0,397,0.5198],"wilona":[0,16,0.0],"abiola":[50,183,0.3719],"artia":[0,73,0.0],"brehan":[0,27,0.0],"brein":[0,18,0.0],"daaiyah":[0,78,0.0],"daarina":[0,47,0.0],"eshe":[0,62,0.0],"haniyyah":[0,142,0.4305],"huyen":[0,276,0.4882],"kashawna":[0,200,0.4602],"kezzy":[0,9,0.0],"laqueena":[0,149,0.4346],"lasheika":[0,146,0.4329],"levar":[2017,9,0.6584],"mandra":[0,49,0.0],"marleny":[0,1448,0.6322],"muslimah":[0,25,0.0],"nijah":[184,1219,0.5469],"noralba":[0,21,0.0],"porcha":[0,865,0.5874],"rhian":[126,889,0.5266],"roneisha":[0,573,0.5516],"saniyyah":[0,239,0.4757],"shelika":[0,20,0.0],"tequlia":[0,71,0.0],"tiaisha":[0,14,0.0],"tyaisha":[0,120,0.4158],"andrika":[0,75,0.0],"bienvenida":[0,8,0.0],"canesha":[0,161,0.4414],"cynara":[0,136,0.4267],"femi":[32,45,0.0],"haylie":[0,10194,0.8017],"jacyln":[0,173,0.4476],"jaida":[0,9611,0.7966],"jentry":[410,1052,0.4555],"jessice":[0,151,0.4358],"jondrea":[0,19,0.0],"kalley":[0,705,0.5696],"kellian":[35,15,0.0],"khalisha":[0,54,0.0],"kristyann":[0,54,0.0],"krystall":[0,170,0.4461],"kunta":[303,8,0.4857],"lashaunta":[0,78,0.0],"lashekia":[0,37,0.0],"latoysha":[0,33,0.0],"latyra":[0,215,0.4665],"lindsee":[0,257,0.482],"litasha":[0,25,0.0],"madinah":[0,249,0.4792],"magin":[5,69,0.0],"mandey":[0,8,0.0],"markela":[0,136,0.4267],"muneerah":[0,51,0.0],"nekea":[0,20,0.0],"norell":[15,64,0.0],"olubunmi":[0,52,0.0],"omara":[0,251,0.4799],"rachana":[0,272,0.4869],"rehanna":[0,215,0.4665],"saria":[0,1050,0.6042],"shaneil":[0,176,0.4491],"shantavia":[0,679,0.5664],"shatia":[0,636,0.5607],"shawntea":[0,29,0.0],"taraneh":[0,110,0.4083],"taryne":[0,133,0.4248],"tashuna":[0,25,0.0],"tieisha":[0,90,0.0],"toyah":[0,8,0.0],"tysa":[0,37,0.0],"uzma":[0,155,0.4381],"alonya":[0,17,0.0],"aquita":[0,67,0.0],"baseemah":[0,28,0.0],"bryanne":[0,1030,0.6026],"cristalle":[0,64,0.0],"crystelle":[0,77,0.0],"danijela":[0,63,0.0],"dashawna":[0,483,0.5368],"davisha":[0,209,0.464],"debraca":[0,7,0.0],"etoya":[0,31,0.0],"ferrah":[0,96,0.0],"glendaly":[0,49,0.0],"haili":[0,834,0.5842],"harmoni":[0,5292,0.7447],"ikisha":[0,37,0.0],"jameeka":[0,166,0.444],"januari":[0,44,0.0],"jenya":[0,147,0.4335],"jesi":[38,557,0.5195],"jillianne":[0,472,0.5348],"jillienne":[0,57,0.0],"johndrea":[0,7,0.0],"jovonda":[0,58,0.0],"kakisha":[0,17,0.0],"kalea":[0,4461,0.7299],"kashena":[0,84,0.0],"katosha":[0,32,0.0],"keishana":[0,76,0.0],"keyanta":[0,13,0.0],"khalila":[0,358,0.5108],"kinzie":[0,1613,0.6415],"kizi":[0,7,0.0],"kristalee":[0,33,0.0],"ladessa":[0,19,0.0],"lakenda":[0,30,0.0],"lakyna":[0,7,0.0],"laquanza":[0,17,0.0],"latricha":[0,14,0.0],"latshia":[0,7,0.0],"lavatrice":[0,7,0.0],"lenisha":[0,224,0.47],"lorrell":[0,7,0.0],"lukesha":[0,21,0.0],"lynzee":[0,836,0.5844],"marleana":[0,40,0.0],"mirandy":[0,12,0.0],"mitsi":[0,7,0.0],"moneek":[0,15,0.0],"nacola":[0,17,0.0],"nakema":[0,75,0.0],"nakishia":[0,38,0.0],"naudia":[0,1420,0.6305],"nicosia":[0,13,0.0],"nikima":[0,46,0.0],"philina":[0,19,0.0],"quantia":[0,102,0.4017],"raimee":[0,54,0.0],"raisha":[0,147,0.4335],"ramee":[6,7,0.0],"sarahbeth":[0,204,0.4619],"serrita":[0,57,0.0],"shaguana":[0,54,0.0],"shaheerah":[0,24,0.0],"shameen":[0,13,0.0],"shamiah":[0,590,0.5542],"shamicka":[0,172,0.4471],"shantaya":[0,140,0.4292],"sharitha":[0,12,0.0],"shashanna":[0,25,0.0],"shauntai":[0,31,0.0],"sheteka":[0,7,0.0],"sommers":[0,7,0.0],"suma":[0,53,0.0],"takeyla":[0,106,0.4051],"tandie":[0,12,0.0],"tanjanika":[0,35,0.0],"tansha":[0,12,0.0],"tashonna":[0,153,0.4369],"teira":[0,292,0.4931],"temaria":[0,7,0.0],"tica":[0,7,0.0],"tyneisha":[0,613,0.5575],"verronica":[0,12,0.0],"adwoa":[0,221,0.4689],"aginah":[0,6,0.0],"ainslie":[0,610,0.5571],"akwete":[0,6,0.0],"alasha":[0,289,0.4922],"aleeza":[0,1298,0.6227],"alike":[0,11,0.0],"amanee":[0,164,0.443],"anali":[0,2221,0.6693],"anarosa":[0,350,0.5088],"anber":[0,56,0.0],"aresha":[0,32,0.0],"asisha":[0,6,0.0],"bnai":[0,6,0.0],"breane":[0,135,0.4261],"breezie":[0,76,0.0],"brei":[0,70,0.0],"calee":[0,800,0.5806],"calida":[0,36,0.0],"cameca":[0,6,0.0],"carisha":[0,69,0.0],"carree":[0,6,0.0],"cashanda":[0,6,0.0],"cassady":[87,1080,0.5677],"cassidi":[0,863,0.5872],"chai":[378,251,0.3364],"chaitra":[0,256,0.4816],"chakia":[0,159,0.4403],"chamara":[0,76,0.0],"chantrelle":[0,28,0.0],"chavonda":[0,19,0.0],"chelsee":[0,1742,0.6482],"cherisha":[0,6,0.0],"cheyanna":[0,1471,0.6335],"chinue":[0,16,0.0],"chyrstal":[0,28,0.0],"ciana":[0,2560,0.6816],"cosha":[0,6,0.0],"crystalle":[0,56,0.0],"cystal":[0,155,0.4381],"daira":[0,1300,0.6228],"damesha":[0,281,0.4897],"denishia":[0,223,0.4697],"destanie":[0,1682,0.6452],"dior":[2029,5047,0.5492],"elania":[0,180,0.4511],"elif":[0,1429,0.631],"federica":[0,265,0.4846],"felena":[0,6,0.0],"ganesa":[0,16,0.0],"genesa":[0,33,0.0],"gessica":[0,200,0.4602],"iiesha":[0,36,0.0],"ishna":[0,6,0.0],"islah":[5,541,0.5424],"itisha":[0,6,0.0],"jakeisha":[0,134,0.4254],"jakisha":[0,48,0.0],"jamalia":[0,21,0.0],"jamesia":[0,671,0.5653],"jamilynn":[0,184,0.453],"jannae":[0,140,0.4292],"jaquay":[418,156,0.4018],"jenaye":[0,143,0.4311],"jennille":[0,11,0.0],"jenyfer":[0,168,0.4451],"jessic":[0,139,0.4286],"jessyka":[0,432,0.5271],"jillena":[0,35,0.0],"jilliane":[0,149,0.4346],"jilliann":[0,338,0.5058],"jimeka":[0,101,0.4009],"jonte":[1253,226,0.5371],"josalynn":[0,747,0.5747],"joscelyne":[0,117,0.4136],"kaili":[41,2872,0.6831],"kallee":[0,752,0.5752],"kanesia":[0,27,0.0],"katelin":[0,8917,0.79],"kateshia":[0,11,0.0],"katti":[0,191,0.4562],"kavonda":[0,6,0.0],"kayonna":[0,552,0.5484],"kendee":[0,12,0.0],"keneshia":[0,331,0.504],"kenyona":[0,155,0.4381],"keyonta":[219,102,0.342],"keywana":[0,11,0.0],"khalida":[0,70,0.0],"khaliliah":[0,6,0.0],"khayriyyah":[0,12,0.0],"kiesa":[0,21,0.0],"kimby":[0,6,0.0],"kimitra":[0,6,0.0],"kirin":[544,413,0.3389],"kishea":[0,6,0.0],"kiyanna":[0,786,0.5791],"konica":[0,54,0.0],"korah":[0,772,0.5775],"korissa":[0,357,0.5105],"kyli":[0,2171,0.6673],"lacasta":[0,6,0.0],"lachan":[0,6,0.0],"lakela":[0,65,0.0],"lakeyla":[0,20,0.0],"laneika":[0,11,0.0],"lashada":[0,11,0.0],"lasharra":[0,21,0.0],"laterese":[0,6,0.0],"latreshia":[0,61,0.0],"latwanna":[0,6,0.0],"lavonta":[327,11,0.4893],"lekenya":[0,13,0.0],"lekishia":[0,6,0.0],"letarsha":[0,6,0.0],"levana":[0,217,0.4673],"libertie":[0,86,0.0],"lynika":[0,6,0.0],"lynsie":[0,966,0.597],"mairin":[0,742,0.5741],"makila":[0,304,0.4966],"malani":[5,6283,0.7591],"malesha":[0,72,0.0],"mallika":[0,332,0.5042],"maraya":[0,909,0.5917],"maredith":[0,29,0.0],"mareka":[0,40,0.0],"maresha":[0,226,0.4708],"markesia":[0,83,0.0],"markitta":[0,99,0.0],"martinque":[0,6,0.0],"maryssa":[0,1670,0.6445],"mashanna":[0,6,0.0],"melady":[0,91,0.0],"melissha":[0,6,0.0],"mikela":[0,797,0.5803],"mikeya":[0,300,0.4954],"nabila":[0,747,0.5747],"nassim":[277,21,0.46],"nayeli":[14,23493,0.8737],"nga":[0,349,0.5086],"nikeeta":[0,29,0.0],"nikida":[0,31,0.0],"nikkea":[0,28,0.0],"ninotchka":[0,11,0.0],"nirmala":[0,11,0.0],"nisreen":[0,388,0.5178],"nyasia":[0,5376,0.7461],"nyeema":[0,199,0.4598],"nyeisha":[0,450,0.5306],"nyiesha":[0,225,0.4704],"olufunke":[0,21,0.0],"orquidea":[0,55,0.0],"porche":[0,748,0.5748],"quyen":[42,335,0.4579],"racy":[0,6,0.0],"raegen":[5,905,0.5886],"rasheta":[0,36,0.0],"rashona":[0,22,0.0],"raushana":[0,11,0.0],"reannan":[0,6,0.0],"rekiya":[0,12,0.0],"rhapsody":[0,117,0.4136],"royale":[653,899,0.3697],"rozalynn":[0,357,0.5105],"savonna":[0,176,0.4491],"selinna":[0,11,0.0],"shakemia":[0,59,0.0],"shakitha":[0,13,0.0],"shallin":[0,11,0.0],"shameko":[0,6,0.0],"shamela":[0,105,0.4042],"shameta":[0,6,0.0],"shaneek":[0,16,0.0],"shanike":[0,17,0.0],"shantrese":[0,11,0.0],"sharicka":[0,159,0.4403],"sharnelle":[0,80,0.0],"shatonia":[0,117,0.4136],"shauntia":[0,273,0.4872],"shawta":[0,42,0.0],"shekeita":[0,6,0.0],"shentell":[0,6,0.0],"sheyenne":[0,1431,0.6311],"shondrika":[0,88,0.0],"shukriyyah":[0,12,0.0],"shyann":[0,6307,0.76],"siana":[0,1220,0.6173],"sommar":[0,32,0.0],"sosha":[0,155,0.4381],"steffenie":[0,11,0.0],"sumar":[0,53,0.0],"susaye":[0,6,0.0],"taleesha":[0,34,0.0],"taline":[0,332,0.5042],"tamba":[11,12,0.0],"taneasha":[0,88,0.0],"tansey":[0,21,0.0],"taquanda":[0,37,0.0],"teaira":[0,1158,0.6127],"tekeya":[0,117,0.4136],"thalassa":[0,6,0.0],"tonicia":[0,46,0.0],"tonicka":[0,6,0.0],"tpring":[0,6,0.0],"trimika":[0,6,0.0],"trineka":[0,14,0.0],"trishonda":[0,11,0.0],"tristica":[0,6,0.0],"vessica":[0,33,0.0],"wysteria":[0,16,0.0],"xuan":[25,242,0.4399],"yatasha":[0,16,0.0],"ydania":[0,6,0.0],"yicel":[0,86,0.0],"yisel":[0,865,0.5874],"yolandita":[0,6,0.0],"zehra":[0,705,0.5696],"adamma":[0,5,0.0],"addi":[0,504,0.5405],"aditi":[0,3647,0.7124],"ahlam":[0,1042,0.6036],"ahsley":[0,1189,0.615],"aislynn":[0,2695,0.6861],"alafia":[0,5,0.0],"alexanderia":[0,745,0.5744],"alitia":[0,5,0.0],"allisun":[0,18,0.0],"alnisha":[0,29,0.0],"amberleigh":[0,566,0.5506],"ambika":[0,382,0.5164],"ambria":[0,2097,0.6643],"ammi":[0,141,0.4298],"andia":[0,58,0.0],"anett":[0,144,0.4317],"antrea":[0,5,0.0],"anuja":[0,121,0.4166],"aprilmarie":[0,33,0.0],"aranda":[0,142,0.4305],"arkesha":[0,26,0.0],"artesha":[0,153,0.4369],"arynn":[0,506,0.5408],"asenet":[0,58,0.0],"atesha":[0,5,0.0],"aubrea":[0,429,0.5265],"avni":[0,1500,0.6352],"bahar":[0,575,0.5519],"batrina":[0,5,0.0],"beila":[0,103,0.4026],"breeana":[0,1711,0.6467],"brezzy":[0,5,0.0],"brieanne":[0,667,0.5648],"briony":[0,226,0.4708],"caira":[0,882,0.5891],"cammille":[0,11,0.0],"carisma":[0,534,0.5455],"carmila":[0,18,0.0],"cashana":[0,5,0.0],"cayci":[0,134,0.4254],"cerisa":[0,5,0.0],"chakira":[0,229,0.472],"chalsea":[0,120,0.4158],"champagne":[0,517,0.5427],"chanoa":[0,5,0.0],"chatrice":[0,5,0.0],"chavi":[0,95,0.0],"chelena":[0,16,0.0],"chervon":[0,10,0.0],"chesica":[0,5,0.0],"chrisina":[0,10,0.0],"chunta":[0,5,0.0],"chyenne":[5,1372,0.6255],"cielo":[142,4421,0.7091],"civona":[0,5,0.0],"clarity":[0,897,0.5906],"corryn":[0,737,0.5735],"crisinda":[0,5,0.0],"cristena":[0,18,0.0],"dachia":[0,15,0.0],"dameta":[0,5,0.0],"dandi":[0,10,0.0],"davenia":[0,12,0.0],"denali":[653,1716,0.4889],"denetris":[0,5,0.0],"deshia":[0,91,0.0],"detisha":[0,5,0.0],"deveni":[0,5,0.0],"devvon":[59,5,0.0],"dewi":[0,5,0.0],"dinesha":[0,243,0.4771],"disheka":[0,5,0.0],"dwania":[0,5,0.0],"eilish":[0,346,0.5078],"elizabel":[0,20,0.0],"elle":[0,18574,0.8538],"emillie":[0,545,0.5473],"erim":[5,5,0.0],"eveliz":[0,11,0.0],"fareedah":[0,131,0.4235],"farnaz":[0,54,0.0],"frica":[0,16,0.0],"gayatri":[0,308,0.4977],"geneine":[0,5,0.0],"ghada":[0,131,0.4235],"gissel":[0,2533,0.6807],"hanah":[0,2047,0.6622],"hayle":[0,1526,0.6367],"heavenor":[0,5,0.0],"herika":[0,5,0.0],"hetal":[0,120,0.4158],"hollyn":[0,1919,0.6566],"huda":[0,1899,0.6557],"ineshia":[0,31,0.0],"inisha":[0,42,0.0],"ismeralda":[0,15,0.0],"itzel":[115,20460,0.8578],"ivet":[0,286,0.4913],"iyona":[0,473,0.535],"jaclyne":[0,151,0.4358],"jacylyn":[0,11,0.0],"jacynth":[0,5,0.0],"jaeda":[0,2653,0.6847],"jakara":[0,471,0.5346],"jamelah":[0,152,0.4364],"jamilee":[0,231,0.4727],"jamira":[0,1209,0.6165],"janissa":[0,514,0.5422],"januarie":[0,10,0.0],"jeanae":[0,149,0.4346],"jennae":[0,362,0.5117],"jerah":[0,101,0.4009],"jerissa":[0,49,0.0],"jermeka":[0,107,0.4059],"jesicca":[0,121,0.4166],"jeslyn":[0,1527,0.6368],"jessicaann":[0,181,0.4515],"jillean":[0,47,0.0],"jimia":[0,92,0.0],"jinelle":[0,159,0.4403],"jisela":[0,373,0.5143],"jocinda":[0,10,0.0],"jonnelle":[0,48,0.0],"jovonn":[22,5,0.0],"jumana":[0,590,0.5542],"kaarina":[0,29,0.0],"kaitrin":[0,58,0.0],"kaiulani":[0,443,0.5293],"kalesha":[0,272,0.4869],"kalila":[0,1116,0.6095],"kalle":[33,325,0.4637],"kamekia":[0,11,0.0],"kaneesha":[0,482,0.5366],"kaniesha":[0,259,0.4827],"kanyatta":[0,5,0.0],"karese":[0,5,0.0],"karrisa":[0,245,0.4778],"kashanta":[0,5,0.0],"kashika":[0,29,0.0],"katishia":[0,5,0.0],"katoria":[0,178,0.4501],"kawanza":[0,48,0.0],"kayley":[0,8541,0.7863],"kayra":[35,799,0.5597],"kealani":[0,532,0.5452],"keante":[213,13,0.4437],"keedah":[0,5,0.0],"keeisha":[0,5,0.0],"keekee":[0,5,0.0],"kelsa":[0,183,0.4525],"keneesha":[0,37,0.0],"kenika":[0,51,0.0],"kennitha":[0,15,0.0],"keonda":[0,87,0.0],"kerian":[21,24,0.0],"keshauna":[0,256,0.4816],"keshona":[0,117,0.4136],"keydra":[0,35,0.0],"khaalis":[35,5,0.0],"khiana":[0,374,0.5146],"kieva":[0,26,0.0],"kijafa":[0,16,0.0],"kili":[11,117,0.3852],"kimaada":[0,5,0.0],"kinika":[0,10,0.0],"kissha":[0,5,0.0],"knisha":[0,12,0.0],"krishanda":[0,18,0.0],"kryste":[0,10,0.0],"kuwanda":[0,5,0.0],"kyonna":[0,457,0.532],"lachanta":[0,10,0.0],"lachristy":[0,5,0.0],"lacrystal":[0,256,0.4816],"ladan":[0,217,0.4673],"lajada":[0,169,0.4456],"lakeycha":[0,5,0.0],"lakida":[0,22,0.0],"lakika":[0,10,0.0],"lakitra":[0,5,0.0],"lakitta":[0,25,0.0],"laquasha":[0,433,0.5273],"laquilla":[0,77,0.0],"laqunda":[0,60,0.0],"lashanette":[0,10,0.0],"lashayla":[0,480,0.5362],"lastarr":[0,39,0.0],"lataria":[0,69,0.0],"latarra":[0,87,0.0],"latarya":[0,22,0.0],"laterria":[0,204,0.4619],"latoyla":[0,5,0.0],"latoyta":[0,17,0.0],"leba":[0,201,0.4606],"leeah":[0,1320,0.6241],"leiana":[0,1163,0.6131],"lekedia":[0,5,0.0],"lexy":[0,2974,0.6947],"licet":[0,75,0.0],"linday":[0,133,0.4248],"lindey":[0,209,0.464],"ling":[18,197,0.4274],"loleatta":[0,5,0.0],"lotaya":[0,5,0.0],"lushawn":[0,5,0.0],"lynsi":[0,415,0.5236],"maciel":[58,198,0.3725],"maili":[0,361,0.5115],"mailing":[0,5,0.0],"majida":[0,11,0.0],"maleeka":[0,241,0.4764],"mandye":[0,5,0.0],"marjon":[15,59,0.0],"marwa":[0,2313,0.6728],"mashika":[0,11,0.0],"mataya":[0,1164,0.6132],"mccall":[125,1111,0.5559],"meme":[0,10,0.0],"merrisa":[0,144,0.4317],"miatta":[0,25,0.0],"micheleen":[0,5,0.0],"michelleann":[0,44,0.0],"mili":[0,470,0.5344],"miosha":[0,92,0.0],"myishia":[0,56,0.0],"nadea":[0,64,0.0],"nahla":[0,3176,0.7004],"naiesha":[0,39,0.0],"nakasha":[0,43,0.0],"nakeea":[0,10,0.0],"nakeita":[0,73,0.0],"nakila":[0,21,0.0],"nakish":[0,5,0.0],"naoko":[0,67,0.0],"natelege":[0,5,0.0],"natile":[0,44,0.0],"natoria":[0,201,0.4606],"neeru":[0,5,0.0],"nekeda":[0,10,0.0],"nelli":[0,360,0.5113],"niasia":[0,884,0.5893],"nicha":[0,111,0.4091],"nickea":[0,19,0.0],"nikeia":[0,62,0.0],"nikema":[0,38,0.0],"niquel":[0,5,0.0],"niti":[0,76,0.0],"nixaliz":[0,10,0.0],"nyeshia":[0,256,0.4816],"nykea":[0,44,0.0],"oanh":[0,237,0.4749],"paradise":[0,1244,0.619],"passionate":[0,5,0.0],"philecia":[0,33,0.0],"qiuana":[0,5,0.0],"quionna":[0,17,0.0],"rahshida":[0,5,0.0],"rashea":[5,145,0.4207],"rashieda":[0,10,0.0],"raygen":[72,564,0.4972],"reachel":[0,21,0.0],"remeka":[0,5,0.0],"rickesha":[0,116,0.4129],"riuka":[0,5,0.0],"roshanta":[0,5,0.0],"roshena":[0,22,0.0],"ryanna":[0,1321,0.6242],"sahirah":[0,98,0.0],"saidy":[0,279,0.4891],"sakima":[10,5,0.0],"saleana":[0,16,0.0],"sameera":[0,827,0.5835],"samirah":[0,1888,0.6552],"sanaa":[0,6055,0.7564],"sarahanne":[0,262,0.4837],"savonya":[0,5,0.0],"sbrina":[0,5,0.0],"schmeka":[0,10,0.0],"semika":[0,30,0.0],"shameaka":[0,48,0.0],"shamera":[0,307,0.4974],"shamik":[51,5,0.0],"shanavia":[0,220,0.4685],"shanaye":[0,122,0.4173],"shanene":[0,16,0.0],"shankia":[0,59,0.0],"shanneka":[0,5,0.0],"shantala":[0,5,0.0],"shantey":[0,37,0.0],"shaquilla":[36,520,0.5135],"sharees":[0,5,0.0],"sharenda":[0,25,0.0],"sharmia":[0,5,0.0],"sharnae":[0,374,0.5146],"shashawna":[0,30,0.0],"shatavia":[0,740,0.5738],"shaunelle":[0,31,0.0],"shavaughn":[11,174,0.4265],"shawntaye":[0,12,0.0],"shaylin":[10,1883,0.652],"shaynna":[0,234,0.4738],"sheandra":[0,5,0.0],"shellise":[0,12,0.0],"shenel":[0,42,0.0],"sheneshia":[0,5,0.0],"shenikia":[0,5,0.0],"shermica":[0,24,0.0],"shernette":[0,5,0.0],"shervonda":[0,5,0.0],"shinelle":[0,12,0.0],"shivonne":[0,117,0.4136],"siddeeqah":[0,18,0.0],"sinthia":[0,258,0.4823],"somalia":[0,114,0.4114],"sonceria":[0,5,0.0],"sonnett":[0,5,0.0],"sorah":[0,200,0.4602],"sowsan":[0,5,0.0],"sparrow":[174,968,0.5184],"stardust":[0,5,0.0],"suja":[0,11,0.0],"sumitra":[0,11,0.0],"surayya":[0,5,0.0],"takema":[0,52,0.0],"takesa":[0,10,0.0],"takisa":[0,5,0.0],"taleisha":[0,207,0.4632],"talin":[646,367,0.3833],"tanay":[563,331,0.3717],"tanyelle":[0,10,0.0],"tareia":[0,5,0.0],"tarkeshia":[0,5,0.0],"tashiana":[0,480,0.5362],"tatrina":[0,5,0.0],"taurie":[0,33,0.0],"tawnjai":[0,5,0.0],"teale":[0,116,0.4129],"tearra":[0,758,0.5759],"teeka":[0,15,0.0],"teguila":[0,10,0.0],"tekita":[0,5,0.0],"telethia":[0,18,0.0],"temetrius":[0,5,0.0],"tenee":[0,91,0.0],"tenneille":[0,5,0.0],"tennill":[0,5,0.0],"tequesta":[0,17,0.0],"tida":[0,97,0.0],"tikila":[0,11,0.0],"tikiya":[0,15,0.0],"tinnelle":[0,5,0.0],"tishea":[0,15,0.0],"tonisa":[0,5,0.0],"toral":[0,26,0.0],"torree":[0,10,0.0],"tranee":[0,11,0.0],"tranesha":[0,95,0.0],"trava":[0,5,0.0],"treanna":[0,277,0.4885],"tremica":[0,5,0.0],"turia":[0,11,0.0],"tushima":[0,5,0.0],"twilight":[0,18,0.0],"tykeshia":[0,90,0.0],"tykia":[0,624,0.559],"tynishia":[0,36,0.0],"tyshema":[0,32,0.0],"utica":[0,5,0.0],"vaneesa":[0,10,0.0],"vaneza":[0,399,0.5202],"vershonda":[0,5,0.0],"vika":[0,152,0.4364],"volare":[0,5,0.0],"whitni":[0,333,0.5045],"yakeisha":[0,17,0.0],"yarira":[0,5,0.0],"yobana":[0,105,0.4042],"yolanta":[0,5,0.0],"yuen":[0,5,0.0],"zakiyya":[0,39,0.0],"ziomara":[0,290,0.4925],"zujey":[0,28,0.0],"kente":[55,0,0.0],"omoro":[38,0,0.0],"kunte":[26,0,0.0],"jedadiah":[537,0,0.546],"lucan":[469,0,0.5342],"shadeed":[181,0,0.4515],"andros":[146,0,0.4329],"calen":[2459,226,0.6281],"ebay":[12,0,0.0],"lamin":[262,0,0.4837],"rashaud":[1298,0,0.6227],"haneef":[563,0,0.5501],"jontue":[77,34,0.2838],"lavarr":[55,0,0.0],"qasim":[1179,0,0.6143],"jerren":[543,0,0.547],"nacoma":[27,0,0.0],"nataniel":[655,0,0.5632],"rayshaun":[1022,0,0.6019],"steveland":[21,0,0.0],"tarvaris":[107,0,0.4059],"beaux":[2301,240,0.6167],"darth":[29,0,0.0],"idi":[9,0,0.0],"jebadiah":[181,0,0.4515],"jezreel":[665,209,0.4476],"ladarrell":[63,0,0.0],"mensah":[38,0,0.0],"nakuma":[15,0,0.0],"rajaee":[15,0,0.0],"teco":[9,0,0.0],"truong":[236,0,0.4746],"wael":[507,0,0.541],"jaramy":[18,0,0.0],"jovaughn":[358,0,0.5108],"kairaba":[8,0,0.0],"karam":[1526,0,0.6367],"lacory":[20,0,0.0],"lam":[549,76,0.4912],"meshach":[565,0,0.5504],"telvin":[588,0,0.5539],"tyrelle":[820,16,0.5733],"abhay":[897,0,0.5906],"alireza":[233,0,0.4735],"ammar":[2922,0,0.6931],"antorio":[24,0,0.0],"armad":[33,0,0.0],"cerrone":[73,0,0.0],"chen":[193,57,0.3702],"dawain":[7,0,0.0],"derrion":[1459,45,0.6164],"devanand":[13,0,0.0],"domanick":[772,0,0.5775],"edon":[211,0,0.4649],"hooman":[29,0,0.0],"ibe":[7,0,0.0],"idrees":[626,0,0.5593],"izaac":[2799,0,0.6894],"jaben":[69,0,0.0],"jamien":[512,5,0.5374],"jamont":[95,0,0.0],"japeth":[37,0,0.0],"jarek":[1606,0,0.6411],"jaymar":[555,0,0.5489],"jaysun":[199,0,0.4598],"jeriah":[1959,369,0.5667],"jitu":[7,0,0.0],"joah":[1167,0,0.6134],"joshlin":[7,23,0.0],"juvon":[141,0,0.4298],"kayin":[540,82,0.4851],"keagan":[8674,1728,0.67],"keanon":[153,0,0.4369],"keddrick":[119,0,0.4151],"kentay":[12,0,0.0],"lapatrick":[57,0,0.0],"laquann":[42,0,0.0],"lavares":[19,0,0.0],"levarr":[14,0,0.0],"najeeb":[259,0,0.4827],"obinna":[858,0,0.5867],"quadir":[1939,0,0.6575],"quintel":[294,0,0.4937],"rahshon":[18,0,0.0],"saquan":[760,7,0.5717],"smauel":[52,0,0.0],"travone":[258,0,0.4823],"tristian":[7843,641,0.7264],"varion":[7,0,0.0],"zuberi":[24,0,0.0],"abiodun":[18,0,0.0],"ademola":[157,0,0.4392],"adre":[6,0,0.0],"ahman":[225,0,0.4704],"amaro":[198,0,0.4593],"amond":[63,0,0.0],"ankoma":[6,0,0.0],"artavis":[72,0,0.0],"atrick":[13,0,0.0],"basheer":[216,0,0.4669],"biren":[6,0,0.0],"bowe":[175,0,0.4486],"chadwell":[6,0,0.0],"chanan":[92,0,0.0],"chedrick":[20,0,0.0],"daimian":[212,0,0.4653],"daks":[6,0,0.0],"dalin":[436,27,0.502],"dantae":[557,0,0.5492],"dantrell":[628,0,0.5596],"darence":[19,0,0.0],"davien":[1311,0,0.6235],"dawane":[20,0,0.0],"daylin":[1801,1898,0.3662],"demaine":[6,0,0.0],"demingo":[6,0,0.0],"deston":[457,0,0.532],"deville":[16,0,0.0],"donsha":[25,26,0.0],"dontea":[98,0,0.0],"edin":[1254,94,0.5823],"eian":[2067,0,0.6631],"evay":[6,0,0.0],"faiz":[548,0,0.5478],"garyn":[239,73,0.3821],"gerred":[43,0,0.0],"ilir":[155,0,0.4381],"imad":[549,0,0.5479],"ishaq":[662,0,0.5642],"jabir":[376,0,0.515],"jacson":[213,0,0.4657],"jarmell":[18,0,0.0],"jawwaad":[6,0,0.0],"jayden":[249245,22001,0.9189],"jayesh":[77,0,0.0],"jerrin":[494,16,0.5245],"jesten":[82,0,0.0],"johnpatrick":[435,0,0.5277],"jolon":[91,0,0.0],"jonothon":[39,0,0.0],"jonthomas":[43,0,0.0],"juanantonio":[419,0,0.5244],"juanpablo":[2011,0,0.6607],"kahil":[119,0,0.4151],"kaleem":[446,0,0.5299],"kalil":[1307,0,0.6233],"kanta":[49,0,0.0],"kedryn":[12,0,0.0],"keidrick":[126,0,0.4201],"keland":[157,0,0.4392],"kendrich":[16,0,0.0],"keonte":[1509,55,0.6164],"khaaliq":[60,0,0.0],"kontar":[6,0,0.0],"kristophor":[11,0,0.0],"kuntakinte":[6,0,0.0],"lameen":[6,0,0.0],"lavelton":[6,0,0.0],"laver":[6,0,0.0],"leconte":[6,0,0.0],"mansur":[247,0,0.4785],"marell":[29,0,0.0],"mazi":[930,195,0.5045],"mican":[42,0,0.0],"muneer":[274,0,0.4876],"mynor":[798,0,0.5804],"nakoa":[1030,68,0.5705],"nazar":[598,0,0.5553],"nectarios":[6,0,0.0],"nedal":[63,0,0.0],"nichalas":[280,0,0.4894],"nickolus":[479,0,0.5361],"nicolino":[39,0,0.0],"nyerere":[6,0,0.0],"orentha":[6,0,0.0],"quinte":[6,0,0.0],"quinzell":[59,0,0.0],"rahson":[11,0,0.0],"rameen":[105,283,0.3776],"rason":[59,0,0.0],"rishard":[230,0,0.4723],"rosheen":[6,0,0.0],"ruark":[14,0,0.0],"rustan":[11,0,0.0],"shahab":[182,0,0.452],"shauwn":[6,0,0.0],"sherrard":[47,0,0.0],"shneur":[616,0,0.5579],"sulieman":[26,0,0.0],"taboris":[32,0,0.0],"tarnell":[6,0,0.0],"tasos":[6,0,0.0],"taurice":[39,0,0.0],"tavar":[29,0,0.0],"tawayne":[15,0,0.0],"teejay":[146,0,0.4329],"tejas":[1430,0,0.6311],"terelle":[352,5,0.5034],"terric":[36,0,0.0],"ti":[57,12,0.0],"timmon":[6,0,0.0],"tramine":[30,5,0.0],"travaris":[440,0,0.5287],"travor":[109,0,0.4075],"tyri":[108,0,0.4067],"vishnu":[1113,0,0.6093],"warees":[6,0,0.0],"zachari":[898,0,0.5907],"abijah":[340,69,0.4342],"abubakar":[921,0,0.5929],"adriaan":[98,0,0.0],"afrim":[10,0,0.0],"ahmand":[15,0,0.0],"aland":[88,0,0.0],"amadi":[224,214,0.2702],"amhad":[5,0,0.0],"ansen":[273,0,0.4872],"anslem":[10,0,0.0],"antoinio":[37,0,0.0],"antojuan":[5,0,0.0],"antroy":[5,0,0.0],"arshad":[296,0,0.4943],"ashan":[185,0,0.4534],"azael":[3513,0,0.7091],"bayron":[1625,0,0.6422],"belal":[697,0,0.5686],"braydon":[14222,23,0.8294],"bryden":[1909,28,0.6479],"cabel":[34,0,0.0],"calem":[424,0,0.5255],"cerdic":[5,0,0.0],"chancelor":[841,0,0.585],"ches":[10,0,0.0],"chintan":[5,0,0.0],"chinua":[20,0,0.0],"chisum":[109,0,0.4075],"constandinos":[5,0,0.0],"corneilius":[48,0,0.0],"curtus":[11,0,0.0],"dametrius":[393,0,0.5189],"danien":[15,0,0.0],"danion":[5,0,0.0],"dawone":[27,0,0.0],"deandrae":[421,0,0.5249],"deavon":[417,29,0.4954],"delbreco":[5,0,0.0],"deltrick":[5,0,0.0],"demarus":[65,0,0.0],"demery":[11,27,0.0],"derck":[23,0,0.0],"desmund":[125,0,0.4194],"detrell":[96,0,0.0],"deundre":[302,0,0.496],"devar":[20,0,0.0],"devarian":[10,0,0.0],"dewyne":[5,0,0.0],"dmarcus":[890,0,0.5899],"donail":[5,0,0.0],"dondray":[11,0,0.0],"dontray":[309,0,0.498],"duquan":[92,0,0.0],"durrel":[55,0,0.0],"edmound":[5,0,0.0],"ehsan":[510,0,0.5415],"elidio":[10,0,0.0],"eremy":[12,0,0.0],"esam":[58,0,0.0],"evangelo":[30,0,0.0],"faraz":[655,0,0.5632],"fateen":[15,0,0.0],"ganesh":[290,0,0.4925],"gedalia":[114,0,0.4114],"gregorios":[5,0,0.0],"hamza":[10017,0,0.8001],"hery":[5,0,0.0],"ibin":[21,0,0.0],"irshad":[5,0,0.0],"jaffar":[31,0,0.0],"jahari":[1774,219,0.5874],"jamario":[1438,0,0.6316],"jamaro":[5,0,0.0],"jamill":[395,0,0.5193],"jammar":[33,0,0.0],"jantz":[75,0,0.0],"jaosn":[5,0,0.0],"jaques":[301,5,0.489],"jarem":[15,0,0.0],"jarreau":[152,0,0.4364],"jarrin":[407,0,0.5219],"jasonpaul":[5,0,0.0],"jaymon":[370,0,0.5136],"jedadia":[12,0,0.0],"jemon":[5,0,0.0],"jeremee":[58,0,0.0],"jeremian":[69,0,0.0],"jeriod":[5,0,0.0],"jerrame":[12,0,0.0],"joanathan":[92,0,0.0],"johnnathan":[289,0,0.4922],"jonahtan":[188,0,0.4548],"joss":[428,250,0.3575],"jsutin":[53,0,0.0],"jumel":[19,0,0.0],"kaden":[68537,1100,0.9533],"kaliq":[231,0,0.4727],"kalob":[1671,0,0.6446],"kamali":[150,125,0.2661],"karthik":[1475,0,0.6338],"kasheen":[5,0,0.0],"keanan":[623,0,0.5589],"kefentse":[5,0,0.0],"kehinde":[168,102,0.3026],"keishon":[257,0,0.482],"keivn":[5,0,0.0],"kentwan":[5,0,0.0],"khai":[3006,453,0.6151],"kierre":[428,94,0.4457],"kore":[77,12,0.0],"koron":[130,0,0.4228],"koury":[62,0,0.0],"kristoff":[594,0,0.5548],"kunal":[1253,0,0.6196],"lacarlos":[29,0,0.0],"lajace":[5,0,0.0],"latarus":[18,0,0.0],"latee":[10,0,0.0],"latorrance":[5,0,0.0],"lavare":[5,0,0.0],"learon":[5,0,0.0],"lemarco":[5,0,0.0],"lucanus":[5,0,0.0],"mahir":[1528,0,0.6368],"makalani":[5,0,0.0],"mako":[241,65,0.3915],"manuell":[5,0,0.0],"marquan":[1881,0,0.6549],"marquest":[116,0,0.4129],"marreco":[5,0,0.0],"massimiliano":[339,0,0.506],"matthue":[40,0,0.0],"maximilliano":[697,0,0.5686],"micholas":[217,0,0.4673],"montaque":[20,0,0.0],"montea":[5,5,0.0],"monterrio":[117,0,0.4136],"montrey":[241,0,0.4764],"morad":[171,0,0.4466],"muhamed":[608,0,0.5568],"mykle":[90,0,0.0],"myrone":[5,0,0.0],"najee":[2738,417,0.6073],"natham":[13,0,0.0],"navid":[812,26,0.5665],"nazim":[246,0,0.4782],"nezar":[197,0,0.4589],"nir":[50,0,0.0],"nuru":[29,17,0.0],"olukayode":[21,0,0.0],"olumide":[164,0,0.443],"ontrell":[5,0,0.0],"orantes":[5,0,0.0],"osamah":[101,0,0.4009],"othman":[503,0,0.5403],"payam":[193,0,0.4571],"philson":[5,0,0.0],"phuc":[277,7,0.4786],"pranav":[4169,0,0.724],"quetin":[31,0,0.0],"quinlan":[2532,713,0.5479],"rafal":[194,0,0.4576],"rajat":[108,0,0.4067],"ramal":[128,0,0.4214],"ranon":[64,0,0.0],"raoof":[5,0,0.0],"rashem":[11,0,0.0],"rassan":[29,0,0.0],"reico":[10,0,0.0],"roderrick":[46,0,0.0],"romal":[10,0,0.0],"roozbeh":[16,0,0.0],"rushun":[5,0,0.0],"rynell":[83,0,0.0],"saurabh":[72,0,0.0],"schyler":[772,602,0.3526],"shahzad":[161,0,0.4414],"shaki":[53,0,0.0],"sharome":[5,0,0.0],"shonski":[5,0,0.0],"sudhir":[12,0,0.0],"surya":[1168,328,0.4958],"symon":[471,10,0.5253],"tabori":[5,0,0.0],"taiwon":[5,0,0.0],"tajiddin":[25,0,0.0],"taray":[92,0,0.0],"tarrod":[5,0,0.0],"tavalas":[5,0,0.0],"tayvon":[1530,0,0.6369],"theofanis":[10,0,0.0],"thien":[1048,29,0.5901],"tlaloc":[272,0,0.4869],"traylon":[278,0,0.4888],"tyrick":[345,0,0.5076],"tyshaun":[1968,5,0.6574],"tywand":[5,0,0.0],"tywaun":[221,0,0.4689],"uday":[240,0,0.476],"usama":[176,0,0.4491],"weylon":[49,0,0.0],"zacheriah":[644,0,0.5618],"zakery":[1339,0,0.6254],"zeth":[1197,0,0.6156],"zuriel":[1868,472,0.5379],"enjoli":[0,859,0.5868],"katiria":[0,525,0.544],"arnetia":[0,76,0.0],"shavonn":[0,174,0.4481],"astria":[0,71,0.0],"kushana":[0,23,0.0],"sayward":[0,117,0.4136],"chivon":[0,207,0.4632],"kearston":[6,424,0.5193],"jaywana":[0,20,0.0],"chrissi":[0,76,0.0],"linzi":[0,557,0.5492],"tyrhonda":[0,120,0.4158],"chivonne":[0,130,0.4228],"tekeema":[0,23,0.0],"heba":[0,1383,0.6282],"sequoya":[5,493,0.534],"deaven":[581,184,0.438],"kassey":[5,731,0.5695],"antonique":[0,359,0.511],"arien":[632,456,0.3528],"brittainy":[0,531,0.545],"eronda":[0,11,0.0],"essica":[0,189,0.4553],"jemila":[0,144,0.4317],"kierstan":[0,482,0.5366],"kilee":[0,1824,0.6522],"latroya":[0,278,0.4888],"alisabeth":[0,373,0.5143],"ayneka":[0,18,0.0],"chavone":[0,36,0.0],"dalal":[0,441,0.5289],"deonca":[0,15,0.0],"jahayra":[0,256,0.4816],"jamieka":[0,54,0.0],"kerston":[0,68,0.0],"laiya":[0,488,0.5377],"shanet":[0,31,0.0],"astrea":[0,95,0.0],"cheresse":[0,24,0.0],"corrinda":[0,9,0.0],"dawnisha":[0,122,0.4173],"diesha":[0,178,0.4501],"eunique":[10,623,0.5514],"hayli":[0,1837,0.6528],"kajal":[0,369,0.5134],"kaliah":[0,2555,0.6815],"kyeisha":[0,231,0.4727],"laporsha":[0,731,0.5728],"nashia":[0,188,0.4548],"nirali":[0,339,0.506],"nykita":[0,40,0.0],"sadina":[0,30,0.0],"shantrelle":[0,38,0.0],"sheka":[0,37,0.0],"shivon":[0,136,0.4267],"starsha":[0,260,0.483],"alissha":[0,27,0.0],"azadeh":[0,170,0.4461],"betony":[0,8,0.0],"bijal":[0,128,0.4214],"breea":[0,377,0.5153],"cadie":[0,820,0.5828],"camil":[81,95,0.2424],"carinda":[0,8,0.0],"desirre":[0,111,0.4091],"devann":[8,148,0.4161],"deziree":[0,1448,0.6322],"enchantra":[0,8,0.0],"jacquay":[17,13,0.0],"jaquaya":[0,67,0.0],"jasmeen":[0,622,0.5588],"jaywanna":[0,8,0.0],"kearsten":[0,530,0.5449],"kinsley":[215,47311,0.9312],"kyleigh":[6,19995,0.86],"kyona":[0,220,0.4685],"myeasha":[0,92,0.0],"nadiya":[0,1517,0.6362],"nafeesha":[0,13,0.0],"rosheda":[0,44,0.0],"rosibel":[0,347,0.5081],"safa":[6,2689,0.6846],"sawanda":[0,8,0.0],"seante":[0,18,0.0],"shakeila":[0,181,0.4515],"shakeria":[0,999,0.5999],"shareena":[0,201,0.4606],"shateka":[0,95,0.0],"shaunah":[0,14,0.0],"sheniece":[0,76,0.0],"sherrae":[0,44,0.0],"shikara":[0,68,0.0],"tamona":[0,8,0.0],"tranisha":[0,189,0.4553],"tu":[313,114,0.3856],"wadeeah":[0,8,0.0],"waukesha":[0,25,0.0],"alyx":[177,1287,0.5566],"britnee":[0,1690,0.6456],"brittaney":[0,3280,0.7032],"chaneka":[0,64,0.0],"charlana":[0,27,0.0],"cheena":[0,41,0.0],"cheilon":[0,7,0.0],"chiquila":[0,18,0.0],"chrishana":[0,113,0.4106],"chrisma":[0,119,0.4151],"deniqua":[0,137,0.4273],"fadia":[0,76,0.0],"fatemeh":[0,38,0.0],"guisela":[0,7,0.0],"hafeeza":[0,12,0.0],"irisha":[0,80,0.0],"jaimmie":[0,7,0.0],"jameika":[0,265,0.4846],"jarrah":[10,64,0.0],"jauwana":[0,7,0.0],"johnisha":[0,464,0.5333],"kalana":[0,263,0.484],"kameika":[0,16,0.0],"karalynne":[0,17,0.0],"karenina":[0,14,0.0],"kayana":[0,1078,0.6065],"kayte":[0,508,0.5412],"kensie":[0,1032,0.6027],"kinna":[0,25,0.0],"kinyata":[0,22,0.0],"kiyona":[0,145,0.4323],"kowanda":[0,7,0.0],"kylea":[0,1571,0.6392],"latalia":[0,93,0.0],"latova":[0,12,0.0],"lynnsey":[0,775,0.5779],"mahogony":[0,109,0.4075],"maiesha":[0,34,0.0],"mandalynn":[0,29,0.0],"martesha":[0,90,0.0],"mayleen":[0,880,0.5889],"mckinzie":[0,1538,0.6374],"meaghann":[0,145,0.4323],"muneera":[0,43,0.0],"myda":[0,58,0.0],"myesheia":[0,7,0.0],"nacona":[0,34,0.0],"nakeyia":[0,76,0.0],"nashika":[0,60,0.0],"niasha":[0,180,0.4511],"nikiah":[0,169,0.4456],"nuha":[0,705,0.5696],"phanta":[0,7,0.0],"quatisha":[0,118,0.4144],"querida":[0,127,0.4208],"rekina":[0,7,0.0],"reyanna":[0,477,0.5357],"rheana":[0,248,0.4789],"rhiannan":[0,171,0.4466],"sakisha":[0,7,0.0],"sequetta":[0,7,0.0],"shafeqah":[0,14,0.0],"shahana":[0,150,0.4352],"shahnaz":[0,44,0.0],"shakiesha":[0,7,0.0],"shakiya":[0,804,0.5811],"shamena":[0,7,0.0],"shamila":[0,133,0.4248],"shamita":[0,12,0.0],"sharane":[0,54,0.0],"shetika":[0,12,0.0],"shonee":[0,7,0.0],"shu":[72,18,0.0],"stesha":[0,132,0.4241],"taaffe":[0,7,0.0],"takeema":[0,51,0.0],"teja":[73,571,0.4981],"temia":[0,164,0.443],"tenina":[0,7,0.0],"triniece":[0,39,0.0],"un":[7,7,0.0],"yaisha":[0,7,0.0],"yasamin":[0,211,0.4649],"yomaira":[0,451,0.5308],"aba":[5,27,0.0],"adebola":[15,45,0.0],"ainka":[0,6,0.0],"ajah":[0,1467,0.6333],"ajia":[0,616,0.5579],"akelia":[0,63,0.0],"aleshea":[0,44,0.0],"aliki":[0,21,0.0],"alizabeth":[0,1846,0.6532],"ameshia":[0,150,0.4352],"analaura":[0,474,0.5352],"ancy":[0,16,0.0],"annielaurie":[0,11,0.0],"areliz":[0,73,0.0],"arelys":[0,515,0.5424],"arkeshia":[0,11,0.0],"arnee":[0,6,0.0],"arpita":[0,96,0.0],"astreia":[0,6,0.0],"azizah":[0,196,0.4585],"belicia":[0,624,0.559],"benisha":[0,91,0.0],"breona":[0,1996,0.66],"briann":[20,1609,0.6345],"brin":[37,413,0.487],"carminia":[0,6,0.0],"casha":[0,117,0.4136],"ceanna":[0,742,0.5741],"charessa":[0,17,0.0],"chrstina":[0,38,0.0],"copper":[387,151,0.3929],"corrinn":[0,33,0.0],"corynne":[0,425,0.5257],"cristyl":[0,6,0.0],"crysal":[0,38,0.0],"danicia":[0,100,0.4],"dashona":[0,34,0.0],"demelza":[0,44,0.0],"denai":[0,133,0.4248],"deneisha":[0,411,0.5228],"deseret":[0,11,0.0],"desirree":[0,27,0.0],"dezaray":[0,923,0.593],"doneshia":[0,201,0.4606],"dywanna":[0,6,0.0],"estibaliz":[0,23,0.0],"faaizah":[0,11,0.0],"farzana":[0,204,0.4619],"fatma":[0,824,0.5832],"feigy":[0,54,0.0],"franceska":[0,369,0.5134],"genika":[0,18,0.0],"gopi":[0,51,0.0],"haneefa":[0,6,0.0],"hannan":[132,468,0.4334],"hawa":[0,2261,0.6709],"hiliary":[0,141,0.4298],"isoke":[0,6,0.0],"itza":[0,394,0.5191],"jahira":[0,373,0.5143],"jamielee":[0,471,0.5346],"jazma":[0,109,0.4075],"jerika":[0,1457,0.6327],"jnai":[0,156,0.4386],"johanny":[42,389,0.4756],"kaliska":[0,30,0.0],"kandiss":[0,123,0.418],"kaneka":[0,54,0.0],"kashona":[0,6,0.0],"katira":[0,67,0.0],"kaylea":[0,3094,0.6981],"kayli":[0,7090,0.7701],"keirston":[0,156,0.4386],"kellina":[0,126,0.4201],"kennia":[0,790,0.5795],"kentra":[0,33,0.0],"kenyarda":[0,16,0.0],"keshaun":[2361,51,0.6622],"khaleedah":[0,11,0.0],"kimona":[0,11,0.0],"kortnee":[0,660,0.5639],"kristinna":[0,17,0.0],"kumari":[36,122,0.3395],"kyah":[27,3051,0.6915],"kyeshia":[0,129,0.4221],"lachrisa":[0,11,0.0],"ladrina":[0,21,0.0],"lakeashia":[0,6,0.0],"lakeva":[0,111,0.4091],"lakissa":[0,6,0.0],"lama":[0,507,0.541],"laniesha":[0,116,0.4129],"lasanda":[0,6,0.0],"lashaunna":[0,39,0.0],"latea":[0,43,0.0],"lateeka":[0,6,0.0],"latosca":[0,13,0.0],"latoyo":[0,11,0.0],"laurelin":[0,131,0.4235],"lavondra":[0,26,0.0],"layana":[0,824,0.5832],"lehuanani":[0,12,0.0],"leialoha":[0,102,0.4017],"leneka":[0,6,0.0],"leyna":[0,2120,0.6653],"likesha":[0,12,0.0],"lorielle":[0,433,0.5273],"lucricia":[0,11,0.0],"luzelena":[0,398,0.52],"lynia":[0,154,0.4375],"mahagony":[0,212,0.4653],"marlania":[0,6,0.0],"martisa":[0,19,0.0],"masiel":[0,139,0.4286],"mber":[0,40,0.0],"megha":[0,1179,0.6143],"mirranda":[0,245,0.4778],"mishonda":[0,6,0.0],"mohini":[0,158,0.4397],"moniquea":[0,28,0.0],"muffy":[0,6,0.0],"naquisha":[0,145,0.4323],"nashara":[0,33,0.0],"natavia":[0,590,0.5542],"nekeysha":[0,6,0.0],"nesreen":[0,194,0.4576],"nikela":[0,27,0.0],"qwana":[0,6,0.0],"raneka":[0,38,0.0],"rashandra":[0,16,0.0],"raygina":[0,6,0.0],"rikisha":[0,17,0.0],"roshandra":[0,34,0.0],"sadiyyah":[0,42,0.0],"samah":[0,439,0.5285],"samaiyah":[0,309,0.498],"sarit":[0,185,0.4534],"seneatha":[0,6,0.0],"seneka":[0,12,0.0],"senika":[0,28,0.0],"sesha":[0,36,0.0],"shaconna":[0,18,0.0],"shaharra":[0,6,0.0],"shakeera":[0,154,0.4375],"shakinah":[0,147,0.4335],"shaniel":[0,40,0.0],"shannelle":[0,190,0.4558],"shantoria":[0,351,0.5091],"sharmika":[0,40,0.0],"sharnique":[0,13,0.0],"shaundrea":[0,145,0.4323],"shauntea":[0,48,0.0],"shequilla":[0,64,0.0],"shervonne":[0,17,0.0],"shevy":[17,398,0.5022],"shiffon":[0,18,0.0],"shiobhan":[0,11,0.0],"shirita":[0,41,0.0],"shunita":[0,28,0.0],"shuvon":[0,6,0.0],"sianna":[0,1965,0.6587],"sri":[5,104,0.3888],"takira":[0,978,0.5981],"taleka":[0,6,0.0],"tamarsha":[0,6,0.0],"tameia":[0,158,0.4397],"taminka":[0,11,0.0],"tauja":[0,6,0.0],"tayler":[2562,11147,0.6728],"tedrina":[0,6,0.0],"tehra":[0,46,0.0],"tequia":[0,68,0.0],"teyona":[0,321,0.5013],"tondria":[0,6,0.0],"trenika":[0,117,0.4136],"trimeka":[0,36,0.0],"twanika":[0,6,0.0],"tyreka":[0,180,0.4511],"yamina":[0,187,0.4544],"yoon":[80,39,0.2791],"yoshica":[0,6,0.0],"adanna":[0,669,0.5651],"africia":[0,5,0.0],"afshan":[0,41,0.0],"aieshia":[0,5,0.0],"airian":[0,5,0.0],"aishe":[0,5,0.0],"akimi":[0,10,0.0],"alani":[105,16949,0.8412],"aleacia":[0,32,0.0],"alegandra":[0,165,0.4435],"alisah":[0,170,0.4461],"amberlie":[0,252,0.4803],"ambi":[0,23,0.0],"ambrea":[0,485,0.5371],"ameila":[0,519,0.543],"amenah":[0,199,0.4598],"anaya":[0,17080,0.8465],"andreka":[0,144,0.4317],"angelamarie":[0,148,0.4341],"anglica":[0,40,0.0],"anndria":[0,35,0.0],"antranette":[0,38,0.0],"antronette":[0,25,0.0],"antwana":[7,5,0.0],"aracelie":[0,124,0.4187],"arceli":[0,25,0.0],"ariele":[0,578,0.5524],"arrianne":[0,34,0.0],"arwyn":[40,625,0.5306],"aryan":[7831,743,0.7185],"asra":[0,485,0.5371],"atia":[0,386,0.5173],"atira":[0,292,0.4931],"autumm":[0,130,0.4228],"bahareh":[0,28,0.0],"baheerah":[0,5,0.0],"bianica":[0,33,0.0],"brancy":[0,17,0.0],"brandalynn":[0,127,0.4208],"brandelynn":[0,5,0.0],"brandiann":[0,5,0.0],"brandilee":[0,60,0.0],"breonna":[0,5160,0.7425],"bryann":[113,369,0.4108],"caisha":[0,23,0.0],"caitilin":[0,36,0.0],"calle":[0,218,0.4677],"candid":[0,62,0.0],"caress":[0,209,0.464],"carlitha":[0,5,0.0],"cathalina":[0,208,0.4636],"catoya":[0,20,0.0],"cayenne":[32,410,0.4908],"chakara":[0,76,0.0],"chamia":[0,48,0.0],"chanci":[0,56,0.0],"chandice":[0,50,0.0],"charanda":[0,5,0.0],"charette":[0,5,0.0],"chastie":[0,5,0.0],"chavie":[0,103,0.4026],"cheila":[0,121,0.4166],"chenin":[0,29,0.0],"cherryann":[0,5,0.0],"cheyenna":[0,715,0.5709],"chiquitha":[0,5,0.0],"chrishna":[0,5,0.0],"christalle":[0,17,0.0],"cierra":[36,27560,0.887],"cleste":[0,5,0.0],"conisha":[0,43,0.0],"corree":[0,5,0.0],"courtnye":[0,5,0.0],"crissey":[0,20,0.0],"crystral":[0,22,0.0],"cypress":[1078,970,0.3486],"daleshia":[0,5,0.0],"damariz":[0,420,0.5246],"daniale":[0,10,0.0],"danyielle":[0,15,0.0],"darissa":[0,93,0.0],"dasheika":[0,5,0.0],"dawndee":[0,5,0.0],"deannea":[0,5,0.0],"dekita":[0,5,0.0],"delanea":[0,5,0.0],"delani":[65,1922,0.6381],"dennetta":[0,10,0.0],"dennisha":[0,252,0.4803],"denyell":[0,10,0.0],"deonica":[0,47,0.0],"deshandra":[0,16,0.0],"dessirae":[0,81,0.0],"devaki":[0,10,0.0],"deverie":[0,5,0.0],"dezirae":[0,2049,0.6623],"dianca":[0,110,0.4083],"dominigue":[46,165,0.3635],"dynisha":[0,180,0.4511],"elianna":[0,12084,0.8164],"elizabete":[0,10,0.0],"ellizabeth":[0,121,0.4166],"elyzabeth":[0,558,0.5493],"ethne":[0,101,0.4009],"fadeelah":[0,10,0.0],"fany":[0,102,0.4017],"farica":[0,5,0.0],"fasha":[0,11,0.0],"fawnia":[0,17,0.0],"fayga":[0,16,0.0],"folami":[0,10,0.0],"fraida":[0,560,0.5496],"francesa":[0,62,0.0],"genvieve":[0,5,0.0],"giner":[0,10,0.0],"glendy":[0,505,0.5407],"golnaz":[0,10,0.0],"hailie":[0,6439,0.7618],"haleigh":[9,14250,0.8303],"hatti":[0,78,0.0],"ikeya":[0,102,0.4017],"ilyana":[0,1374,0.6276],"ineka":[0,13,0.0],"jacenta":[0,44,0.0],"jakeya":[0,180,0.4511],"jameta":[0,5,0.0],"jamonica":[0,246,0.4782],"janaki":[0,189,0.4553],"jaquana":[0,399,0.5202],"jasey":[5,639,0.5574],"jaslynn":[0,2258,0.6707],"jaycelyn":[0,230,0.4723],"jaysa":[0,550,0.5481],"jeannete":[0,37,0.0],"jendayi":[0,141,0.4298],"jessikah":[0,101,0.4009],"jiana":[0,1287,0.6219],"jilliene":[0,5,0.0],"jillyan":[0,291,0.4928],"jinni":[0,5,0.0],"jocelynne":[0,614,0.5576],"jovania":[0,5,0.0],"joynell":[0,5,0.0],"joyous":[0,135,0.4261],"kaleah":[0,4285,0.7264],"kalishia":[0,15,0.0],"kamina":[0,104,0.4034],"karhonda":[0,11,0.0],"karmina":[0,123,0.418],"kashauna":[0,79,0.0],"kateria":[0,242,0.4768],"katyria":[0,15,0.0],"kawonna":[0,10,0.0],"kayna":[0,260,0.483],"keani":[54,509,0.4973],"keiley":[0,516,0.5425],"keresa":[0,17,0.0],"kerline":[0,102,0.4017],"keslie":[0,243,0.4771],"keyuana":[0,78,0.0],"kezzie":[0,5,0.0],"khedra":[0,15,0.0],"khristen":[0,153,0.4369],"kiea":[0,10,0.0],"kiffin":[0,5,0.0],"kortnie":[0,767,0.577],"krishelle":[0,37,0.0],"kristell":[0,294,0.4937],"kuiana":[0,10,0.0],"ladasha":[0,316,0.4999],"lakara":[0,79,0.0],"lakeah":[0,5,0.0],"lakedia":[0,16,0.0],"lakeshea":[0,5,0.0],"lakessha":[0,5,0.0],"lakeyda":[0,21,0.0],"lakira":[0,453,0.5312],"laporcha":[0,246,0.4782],"laquietta":[0,5,0.0],"lashera":[0,37,0.0],"lashira":[0,46,0.0],"laterrica":[0,235,0.4742],"lateya":[0,78,0.0],"latovia":[0,15,0.0],"latoyra":[0,5,0.0],"latrishia":[0,16,0.0],"layota":[0,16,0.0],"leiha":[0,23,0.0],"lekethia":[0,10,0.0],"lesleyanne":[0,80,0.0],"lizzeth":[0,565,0.5504],"londi":[0,5,0.0],"loribeth":[0,130,0.4228],"lynissa":[0,5,0.0],"maaike":[0,10,0.0],"mackensie":[5,904,0.5885],"mackenzi":[11,2044,0.659],"magalena":[0,5,0.0],"magee":[0,10,0.0],"maigen":[0,109,0.4075],"mailyn":[0,902,0.591],"makeya":[0,96,0.0],"malesia":[0,5,0.0],"marieka":[0,20,0.0],"mariha":[0,339,0.506],"marinee":[0,5,0.0],"marini":[0,5,0.0],"marjani":[0,103,0.4026],"markishia":[0,5,0.0],"mashawna":[0,11,0.0],"mashawnda":[0,10,0.0],"mckenzi":[0,2017,0.6609],"meaghen":[0,172,0.4471],"megahn":[0,64,0.0],"megham":[0,91,0.0],"mehan":[10,22,0.0],"mekea":[0,5,0.0],"meleesa":[0,5,0.0],"mendee":[0,11,0.0],"meoshia":[0,88,0.0],"mikeia":[0,54,0.0],"mikkia":[0,11,0.0],"milini":[0,16,0.0],"nakosha":[0,15,0.0],"nakysha":[0,11,0.0],"nallely":[0,2977,0.6948],"nashay":[0,390,0.5182],"nashima":[0,5,0.0],"nataisha":[0,54,0.0],"natane":[0,95,0.0],"nateasha":[0,10,0.0],"natessa":[0,27,0.0],"nathasia":[0,10,0.0],"naticha":[0,5,0.0],"ndidi":[0,65,0.0],"nefateria":[0,5,0.0],"nekishia":[0,10,0.0],"netanya":[0,514,0.5422],"nidra":[0,44,0.0],"niketta":[0,11,0.0],"nikeyia":[0,5,0.0],"nikila":[0,17,0.0],"nikoma":[0,5,0.0],"nodia":[0,12,0.0],"nykeesha":[0,5,0.0],"nyrie":[11,159,0.4172],"olisha":[0,25,0.0],"onesha":[0,113,0.4106],"oshanna":[0,5,0.0],"pallavi":[0,358,0.5108],"pang":[11,615,0.5495],"phenicia":[0,26,0.0],"preethi":[0,188,0.4548],"preeya":[0,65,0.0],"prisila":[0,787,0.5792],"pyper":[0,3246,0.7023],"quannah":[0,5,0.0],"quian":[11,10,0.0],"quila":[0,17,0.0],"quinesha":[0,410,0.5226],"quiona":[0,44,0.0],"qwanda":[0,10,0.0],"rabihah":[0,5,0.0],"rakhee":[0,22,0.0],"randilyn":[0,102,0.4017],"ranesha":[0,464,0.5333],"raqueal":[0,55,0.0],"rasheka":[0,117,0.4136],"reneshia":[0,74,0.0],"renitia":[0,5,0.0],"rhawnie":[0,40,0.0],"riah":[15,614,0.5464],"rickisha":[0,48,0.0],"rohini":[0,330,0.5037],"roneshia":[0,257,0.482],"ronnika":[0,135,0.4261],"roshundra":[0,34,0.0],"sabeen":[0,200,0.4602],"sadiya":[0,443,0.5293],"samehesha":[0,5,0.0],"sanaz":[0,142,0.4305],"santoria":[0,113,0.4106],"seasons":[0,5,0.0],"seina":[0,59,0.0],"senequa":[0,27,0.0],"shahada":[0,38,0.0],"shakeerah":[0,94,0.0],"shakeshia":[0,43,0.0],"shakeyia":[0,41,0.0],"shalaina":[0,87,0.0],"shamella":[0,20,0.0],"shamequa":[0,24,0.0],"shanean":[0,26,0.0],"shaneisha":[0,98,0.0],"shanele":[0,73,0.0],"shanik":[0,206,0.4628],"shaniki":[0,5,0.0],"shaniquia":[0,139,0.4286],"shanoa":[0,38,0.0],"shantoya":[0,79,0.0],"shanty":[0,193,0.4571],"shaqueeta":[0,5,0.0],"shaquina":[0,123,0.418],"sharida":[0,30,0.0],"sharrae":[0,5,0.0],"shasa":[0,5,0.0],"shauntele":[0,5,0.0],"shavondra":[0,53,0.0],"shawntane":[0,5,0.0],"shawntey":[0,5,0.0],"shedonna":[0,5,0.0],"sheenia":[0,21,0.0],"shekera":[0,77,0.0],"sheneaka":[0,5,0.0],"sheneda":[0,5,0.0],"sheonna":[0,12,0.0],"sherretta":[0,5,0.0],"shevone":[0,13,0.0],"shianna":[0,929,0.5936],"shikira":[0,143,0.4311],"shilow":[0,15,0.0],"shmeka":[0,32,0.0],"shrhonda":[0,5,0.0],"shukura":[0,21,0.0],"shynita":[0,5,0.0],"siobahn":[0,82,0.0],"soheila":[0,38,0.0],"sohela":[0,5,0.0],"stara":[0,5,0.0],"starrla":[0,49,0.0],"stpehanie":[0,109,0.4075],"sulie":[0,10,0.0],"taaliba":[0,10,0.0],"tahina":[0,53,0.0],"tahnisha":[0,5,0.0],"taima":[0,105,0.4042],"takeeta":[0,5,0.0],"tameke":[0,5,0.0],"tamiqua":[0,22,0.0],"tammora":[0,5,0.0],"tanasia":[0,1222,0.6174],"tanee":[0,115,0.4121],"tanneshia":[0,5,0.0],"taronza":[0,5,0.0],"tarria":[0,16,0.0],"tarsheka":[0,5,0.0],"tashae":[0,350,0.5088],"tawne":[0,5,0.0],"tekenya":[0,5,0.0],"temkia":[0,5,0.0],"tendra":[0,5,0.0],"tenicka":[0,11,0.0],"tenielle":[0,24,0.0],"terasha":[0,13,0.0],"teyonda":[0,5,0.0],"thuhuong":[0,5,0.0],"tieesha":[0,24,0.0],"tiffannee":[0,5,0.0],"tionne":[86,735,0.5218],"tiquana":[0,23,0.0],"tonantzin":[0,252,0.4803],"traneice":[0,10,0.0],"tshaye":[0,5,0.0],"tyesia":[0,10,0.0],"tyshea":[0,136,0.4267],"valerine":[0,5,0.0],"vanika":[0,16,0.0],"vineeta":[0,11,0.0],"wakenda":[0,5,0.0],"yaa":[0,269,0.486],"yajahira":[0,195,0.458],"yakina":[0,10,0.0],"yamisha":[0,5,0.0],"yanel":[6,199,0.4488],"yanitza":[0,638,0.561],"yarnelle":[0,5,0.0],"yokasta":[0,12,0.0],"yonika":[0,5,0.0],"yonina":[0,47,0.0],"yve":[0,10,0.0],"zakkiyya":[0,75,0.0],"zaviera":[0,25,0.0],"zeida":[0,44,0.0],"mychal":[2002,265,0.5926],"jarian":[369,0,0.5134],"kene":[28,5,0.0],"jovany":[4632,11,0.7316],"quarterrio":[11,0,0.0],"theus":[59,0,0.0],"travolta":[11,0,0.0],"zebulan":[102,0,0.4017],"ikaika":[1041,0,0.6035],"jonta":[216,33,0.4157],"jovian":[533,5,0.5411],"kalief":[203,0,0.4615],"rontae":[76,0,0.0],"anoop":[211,36,0.4088],"biju":[17,0,0.0],"chima":[288,0,0.4919],"davan":[253,78,0.3852],"demarius":[2009,0,0.6606],"duy":[827,0,0.5835],"jerick":[882,0,0.5891],"kortez":[801,0,0.5807],"nicholous":[129,0,0.4221],"shahin":[319,0,0.5008],"zebediah":[602,0,0.5559],"anas":[2753,0,0.688],"bamidele":[21,0,0.0],"binu":[8,0,0.0],"chantry":[147,0,0.4335],"daisuke":[136,0,0.4267],"gered":[39,0,0.0],"hussain":[1989,0,0.6597],"ladrick":[8,0,0.0],"latravis":[143,0,0.4311],"lemarr":[26,0,0.0],"monterio":[316,0,0.4999],"nickalous":[172,0,0.4471],"zebulen":[56,0,0.0],"adika":[13,0,0.0],"asaf":[390,0,0.5182],"benjamyn":[391,0,0.5184],"bradden":[106,0,0.4051],"cemal":[7,0,0.0],"damarco":[763,0,0.5765],"dectrick":[7,0,0.0],"dewaun":[145,0,0.4323],"dorsett":[29,0,0.0],"enriquez":[32,0,0.0],"germar":[12,0,0.0],"jaran":[236,0,0.4746],"kasib":[12,0,0.0],"kentrail":[179,0,0.4506],"keo":[290,0,0.4925],"khalik":[199,0,0.4598],"khurram":[40,0,0.0],"koa":[6410,714,0.6933],"lanoris":[7,0,0.0],"laquinn":[53,5,0.0],"lequient":[7,0,0.0],"menashe":[415,0,0.5236],"nickolous":[44,0,0.0],"nii":[57,0,0.0],"olatunde":[19,0,0.0],"quantas":[12,0,0.0],"quindell":[161,0,0.4414],"saif":[2377,0,0.6752],"shammah":[66,39,0.2541],"shin":[97,12,0.3626],"tafari":[941,6,0.5915],"tamon":[196,0,0.4585],"tyrane":[22,0,0.0],"yusuke":[289,0,0.4922],"abdulrahman":[2837,0,0.6906],"aljandro":[45,0,0.0],"arben":[275,0,0.4879],"baruti":[6,0,0.0],"byan":[75,0,0.0],"castro":[6,0,0.0],"chevez":[69,0,0.0],"ciprian":[6,0,0.0],"corinthians":[26,0,0.0],"darrious":[389,0,0.518],"davidlee":[168,0,0.4451],"delson":[89,0,0.0],"demel":[16,0,0.0],"demien":[11,0,0.0],"demitris":[147,0,0.4335],"demorrio":[21,0,0.0],"dennys":[477,83,0.4682],"deondrick":[114,0,0.4114],"derike":[6,0,0.0],"donye":[284,86,0.3943],"duong":[164,0,0.443],"esquiel":[6,0,0.0],"gerell":[136,0,0.4267],"ghassan":[396,0,0.5195],"grahame":[6,0,0.0],"hamin":[33,0,0.0],"hershy":[1059,0,0.605],"iron":[23,0,0.0],"issaac":[173,0,0.4476],"jaaron":[331,0,0.504],"jarvon":[60,0,0.0],"javares":[224,0,0.47],"javian":[2834,6,0.6892],"jessiah":[2196,342,0.5891],"jigar":[147,0,0.4335],"johnanthony":[529,0,0.5447],"jumah":[6,0,0.0],"kamari":[11722,5638,0.5725],"kantrell":[59,0,0.0],"kenjuan":[37,0,0.0],"kenson":[525,0,0.544],"kerick":[6,0,0.0],"ketric":[11,0,0.0],"keylon":[471,0,0.5346],"khali":[685,1347,0.4386],"kristapher":[69,0,0.0],"laderick":[6,0,0.0],"lajon":[30,0,0.0],"lakota":[1528,1646,0.3632],"lamarkus":[153,0,0.4369],"landrick":[13,0,0.0],"lawarren":[6,0,0.0],"lecedric":[16,0,0.0],"lemel":[24,0,0.0],"mahmood":[359,0,0.511],"maricus":[125,0,0.4194],"masud":[263,0,0.484],"michaelanthony":[569,0,0.551],"mostafa":[738,0,0.5736],"mumin":[126,0,0.4201],"nathane":[25,0,0.0],"nichalaus":[6,0,0.0],"nichlous":[24,0,0.0],"nihar":[303,0,0.4963],"nocholas":[103,0,0.4026],"oshua":[95,0,0.0],"parren":[6,0,0.0],"qaadir":[112,0,0.4098],"riko":[88,108,0.2526],"roarke":[361,0,0.5115],"sajan":[295,0,0.494],"seith":[125,0,0.4194],"senneca":[11,0,0.0],"shadley":[6,0,0.0],"shawkat":[6,0,0.0],"shephen":[23,0,0.0],"shoun":[6,0,0.0],"taijuan":[64,0,0.0],"tawon":[42,0,0.0],"tejuan":[68,0,0.0],"terik":[114,0,0.4114],"toan":[405,0,0.5215],"trinton":[738,0,0.5736],"tyrand":[6,0,0.0],"vahid":[22,0,0.0],"vikash":[162,0,0.4419],"waheed":[52,0,0.0],"zahid":[1086,0,0.6072],"aalon":[5,0,0.0],"aaraon":[5,0,0.0],"abdulaziz":[1679,0,0.645],"abid":[391,0,0.5184],"adrew":[31,0,0.0],"allateef":[5,0,0.0],"amandeep":[238,183,0.2967],"andretti":[68,0,0.0],"andrue":[597,0,0.5552],"aneudy":[114,0,0.4114],"ankit":[798,0,0.5804],"ansar":[139,0,0.4286],"anthone":[130,0,0.4228],"anwon":[5,0,0.0],"arnab":[32,0,0.0],"artavious":[492,0,0.5384],"ashkan":[231,0,0.4727],"barett":[178,0,0.4501],"basem":[142,0,0.4305],"basim":[292,0,0.4931],"biko":[30,0,0.0],"binyamin":[1032,0,0.6027],"boz":[5,0,0.0],"breandan":[164,0,0.443],"calum":[3188,0,0.7007],"camren":[6625,625,0.7055],"casen":[6339,22,0.7581],"chadlee":[5,0,0.0],"chard":[5,0,0.0],"chastin":[463,126,0.4355],"chayne":[240,25,0.4389],"christophermich":[52,0,0.0],"cleason":[22,0,0.0],"colten":[16116,0,0.8415],"coron":[84,0,0.0],"dam":[69,0,0.0],"damiene":[5,0,0.0],"damine":[40,0,0.0],"daniyel":[26,0,0.0],"danzell":[204,0,0.4619],"darico":[29,0,0.0],"dariush":[144,0,0.4317],"daton":[94,0,0.0],"datrick":[10,0,0.0],"deguan":[12,0,0.0],"dejesus":[22,0,0.0],"dekendrick":[197,0,0.4589],"demille":[10,0,0.0],"demorio":[71,0,0.0],"denario":[100,0,0.4],"derius":[560,0,0.5496],"desman":[179,0,0.4506],"dialo":[10,0,0.0],"donshay":[64,28,0.0],"drapper":[5,0,0.0],"dumaka":[5,0,0.0],"dyshon":[102,0,0.4017],"ebin":[337,0,0.5055],"eddieberto":[43,0,0.0],"elisah":[102,37,0.3145],"emre":[938,5,0.5917],"fahad":[1557,0,0.6385],"farooq":[106,0,0.4051],"firas":[478,0,0.5359],"fuad":[500,0,0.5398],"gadiel":[2395,0,0.6759],"gejuan":[20,0,0.0],"geordan":[582,55,0.5124],"gzim":[5,0,0.0],"harilaos":[5,0,0.0],"hasheem":[70,0,0.0],"hassen":[205,0,0.4624],"hazem":[293,0,0.4934],"husam":[439,0,0.5285],"icholas":[70,0,0.0],"ikenna":[713,0,0.5706],"isael":[2932,0,0.6934],"jaamal":[81,0,0.0],"jacory":[1251,0,0.6195],"jadrian":[573,50,0.514],"jaisen":[282,0,0.49],"jamer":[39,0,0.0],"janard":[168,0,0.4451],"jaruis":[26,0,0.0],"jarvas":[15,0,0.0],"jauron":[56,0,0.0],"javarus":[294,0,0.4937],"jebidiah":[112,0,0.4098],"jerimaine":[10,0,0.0],"jerimee":[5,0,0.0],"jm":[5,0,0.0],"jocqua":[5,0,0.0],"joemar":[34,0,0.0],"johathon":[114,0,0.4114],"jomel":[68,0,0.0],"joplin":[5,343,0.501],"josel":[76,0,0.0],"joseramon":[55,0,0.0],"jovanni":[6641,192,0.7454],"juliocesar":[459,0,0.5324],"kagan":[646,73,0.5133],"kalim":[139,0,0.4286],"kareme":[5,0,0.0],"karif":[10,0,0.0],"keeon":[162,0,0.4419],"keitric":[5,0,0.0],"kentae":[26,0,0.0],"kenten":[39,0,0.0],"kentral":[45,0,0.0],"kentrel":[362,0,0.5117],"keonta":[433,64,0.4698],"kerk":[10,0,0.0],"keynon":[51,0,0.0],"kiril":[158,0,0.4397],"klye":[297,0,0.4946],"koty":[454,30,0.5037],"kristoper":[21,0,0.0],"kujtim":[16,0,0.0],"kwang":[5,0,0.0],"ladarrius":[1222,0,0.6174],"lakeem":[149,0,0.4346],"lamech":[16,0,0.0],"laremy":[24,0,0.0],"laroderick":[21,0,0.0],"lavonte":[1304,11,0.6186],"lendale":[15,0,0.0],"lito":[33,0,0.0],"lydale":[5,0,0.0],"markcus":[191,0,0.4562],"marquinn":[75,0,0.0],"marshun":[230,0,0.4723],"martinis":[5,0,0.0],"mate":[75,0,0.0],"mateen":[609,0,0.5569],"maximillion":[661,0,0.564],"mondra":[5,0,0.0],"mousa":[513,0,0.542],"mychel":[10,10,0.0],"namath":[5,0,0.0],"nichlaus":[40,0,0.0],"nickalos":[265,0,0.4846],"nickolos":[56,0,0.0],"nikolos":[217,0,0.4673],"olakunle":[10,0,0.0],"ophir":[16,0,0.0],"qadree":[24,0,0.0],"quartez":[388,0,0.5178],"randen":[286,0,0.4913],"rashand":[5,0,0.0],"renado":[5,0,0.0],"romale":[27,0,0.0],"ronak":[930,12,0.5872],"rourke":[345,0,0.5076],"shadee":[73,91,0.2458],"shamal":[172,0,0.4471],"shamarr":[299,5,0.4884],"shawun":[5,0,0.0],"siddeeq":[10,0,0.0],"srikanth":[13,0,0.0],"tabu":[5,0,0.0],"thinh":[227,0,0.4712],"tirell":[55,0,0.0],"tobais":[10,0,0.0],"torell":[63,0,0.0],"tornell":[5,0,0.0],"travin":[434,0,0.5275],"ubong":[10,0,0.0],"ustin":[113,0,0.4106],"vache":[15,0,0.0],"vasilis":[186,0,0.4539],"vasily":[113,0,0.4106],"waylin":[367,55,0.4566],"woo":[10,0,0.0],"zikomo":[5,0,0.0],"chimere":[5,824,0.5802],"brieanna":[0,3203,0.7011],"aarika":[0,898,0.5907],"chisa":[0,206,0.4628],"sulay":[0,71,0.0],"zulay":[0,518,0.5429],"santresa":[0,64,0.0],"kitzie":[0,27,0.0],"amii":[0,42,0.0],"shaherah":[0,24,0.0],"brieann":[0,718,0.5712],"akeela":[0,197,0.4589],"kayatana":[0,13,0.0],"turkesa":[0,19,0.0],"kiauna":[0,435,0.5277],"lacoya":[0,155,0.4381],"meia":[0,430,0.5267],"shahera":[0,18,0.0],"brianda":[5,1957,0.6569],"evony":[0,582,0.553],"jasara":[0,60,0.0],"jetaime":[0,142,0.4305],"quinisha":[0,288,0.4919],"shaleka":[0,60,0.0],"shatonga":[0,21,0.0],"sherona":[0,22,0.0],"tante":[0,11,0.0],"anjuli":[0,551,0.5482],"breeanne":[0,344,0.5073],"briza":[0,1301,0.6229],"brucha":[0,593,0.5546],"chyna":[0,5777,0.7523],"glendaliz":[0,17,0.0],"jaela":[0,2704,0.6864],"jaquanda":[0,115,0.4121],"jasmaine":[6,818,0.5789],"laruen":[0,156,0.4386],"linsy":[0,294,0.4937],"pa":[5,1338,0.6233],"rashina":[0,15,0.0],"shaida":[0,67,0.0],"shaquanta":[0,135,0.4261],"shavawn":[0,55,0.0],"anjoli":[0,141,0.4298],"barika":[0,9,0.0],"brionna":[0,4913,0.7383],"brittne":[0,263,0.484],"cassiopeia":[0,380,0.516],"catiria":[0,33,0.0],"dezerae":[0,448,0.5303],"iyonna":[0,1760,0.6491],"jenesia":[0,20,0.0],"kenethia":[0,19,0.0],"kilah":[0,440,0.5287],"meghen":[0,135,0.4261],"nahtanha":[0,9,0.0],"nateisha":[0,69,0.0],"rajeeni":[0,17,0.0],"ronata":[0,39,0.0],"shakendra":[0,255,0.4813],"shaleah":[0,504,0.5405],"shanada":[0,21,0.0],"tamarisk":[0,14,0.0],"tamikah":[0,20,0.0],"vani":[0,439,0.5285],"wakina":[0,9,0.0],"addrienne":[0,15,0.0],"agnieszka":[0,233,0.4735],"allesha":[0,119,0.4151],"alyna":[0,2802,0.6895],"arinn":[0,30,0.0],"asmaa":[0,932,0.5939],"bisceglia":[0,26,0.0],"briseida":[0,2634,0.6841],"cassiopia":[0,46,0.0],"gauri":[0,579,0.5525],"glorimar":[0,174,0.4481],"graviela":[0,60,0.0],"hailee":[6,16318,0.8423],"jatasha":[0,26,0.0],"jeneka":[0,13,0.0],"jennylynn":[0,19,0.0],"jordyn":[5827,61324,0.8816],"kearstin":[0,726,0.5722],"keshonna":[0,124,0.4187],"leiya":[0,327,0.5029],"lynzie":[0,993,0.5994],"markeshia":[0,408,0.5221],"minal":[0,200,0.4602],"muriah":[0,103,0.4026],"niyoka":[0,25,0.0],"rayven":[170,2956,0.661],"sarh":[0,52,0.0],"shaghayegh":[0,20,0.0],"shakenya":[0,152,0.4364],"shamekka":[0,41,0.0],"shamim":[0,13,0.0],"shatoria":[0,510,0.5415],"shephanie":[0,64,0.0],"tieka":[0,18,0.0],"tonta":[0,8,0.0],"tramika":[0,36,0.0],"trianna":[0,453,0.5312],"yuridia":[0,2591,0.6827],"anacani":[0,33,0.0],"arasele":[0,7,0.0],"ashantia":[0,71,0.0],"ashaunti":[0,374,0.5146],"asiah":[898,1718,0.4489],"breezi":[0,17,0.0],"breinne":[0,7,0.0],"britanie":[0,423,0.5253],"brookes":[108,44,0.3101],"byanca":[0,433,0.5273],"cera":[0,1402,0.6293],"chynna":[0,2263,0.6709],"cynarra":[0,7,0.0],"daneisha":[0,678,0.5662],"dericka":[0,416,0.5238],"elizabeta":[0,20,0.0],"esi":[0,28,0.0],"fani":[0,64,0.0],"gavriela":[0,92,0.0],"gisell":[0,1858,0.6538],"idy":[0,528,0.5445],"jakita":[0,117,0.4136],"jalina":[0,648,0.5623],"jamacia":[0,123,0.418],"jenique":[0,60,0.0],"jenisha":[0,320,0.501],"jillien":[0,66,0.0],"johnica":[0,92,0.0],"jovanda":[0,18,0.0],"ju":[12,24,0.0],"kathiria":[0,36,0.0],"katlyn":[5,18421,0.8529],"kayanna":[0,1113,0.6093],"keianna":[0,1041,0.6035],"kellymarie":[0,30,0.0],"keshanda":[0,27,0.0],"lachic":[0,7,0.0],"lakee":[6,7,0.0],"lakiea":[0,30,0.0],"lakila":[0,19,0.0],"lanequia":[0,12,0.0],"lanica":[0,12,0.0],"laquieta":[0,12,0.0],"lashanti":[0,349,0.5086],"lauressa":[0,7,0.0],"loriel":[0,261,0.4833],"makaila":[0,4735,0.7351],"malyssa":[0,399,0.5202],"meah":[0,1613,0.6415],"mecole":[0,19,0.0],"miaisha":[0,12,0.0],"mykesha":[0,51,0.0],"nafisa":[0,616,0.5579],"natallie":[0,548,0.5478],"nausheen":[0,17,0.0],"neelima":[0,7,0.0],"nhi":[0,1057,0.6048],"noor":[1034,7838,0.6976],"onekki":[0,7,0.0],"palak":[5,289,0.4853],"quantisha":[0,117,0.4136],"rajni":[0,17,0.0],"ratisha":[0,36,0.0],"rebekan":[0,30,0.0],"rokeisha":[0,36,0.0],"schavon":[0,7,0.0],"shakeima":[0,23,0.0],"shanana":[0,12,0.0],"shantha":[0,7,0.0],"sharda":[0,613,0.5575],"shareeka":[0,84,0.0],"shareika":[0,37,0.0],"sharieka":[0,44,0.0],"shastity":[0,7,0.0],"shaunika":[0,54,0.0],"sheneika":[0,78,0.0],"so":[5,47,0.0],"someeka":[0,7,0.0],"stefane":[0,32,0.0],"sujin":[0,32,0.0],"sweet":[0,65,0.0],"timicka":[0,7,0.0],"tolisha":[0,12,0.0],"tymekia":[0,7,0.0],"vy":[37,1267,0.6054],"waheedah":[0,7,0.0],"willisha":[0,95,0.0],"yajaida":[0,7,0.0],"yajayra":[0,304,0.4966],"aarica":[0,95,0.0],"aislyn":[0,1879,0.6548],"aliana":[0,8571,0.7866],"allina":[0,280,0.4894],"amalin":[0,6,0.0],"ambar":[5,2916,0.6919],"amellia":[0,825,0.5833],"anavel":[0,35,0.0],"anet":[0,95,0.0],"angalena":[0,76,0.0],"arynne":[0,35,0.0],"ayshia":[0,334,0.5047],"baheejah":[0,11,0.0],"brandlyn":[0,41,0.0],"breianna":[0,435,0.5277],"brendaly":[0,87,0.0],"brindy":[0,99,0.0],"calena":[0,161,0.4414],"camilya":[0,48,0.0],"caprisha":[0,146,0.4329],"casta":[0,6,0.0],"chalina":[0,26,0.0],"chaquana":[0,59,0.0],"chaquetta":[0,52,0.0],"charika":[0,69,0.0],"chasady":[0,135,0.4261],"chasaty":[0,11,0.0],"cheneka":[0,6,0.0],"chesa":[0,37,0.0],"chevaun":[0,6,0.0],"chiquana":[0,6,0.0],"chira":[0,17,0.0],"christabelle":[0,268,0.4856],"cynetha":[0,6,0.0],"dacy":[0,71,0.0],"daneshia":[0,258,0.4823],"dannika":[0,571,0.5513],"deawn":[0,6,0.0],"delesha":[0,83,0.0],"demeca":[0,11,0.0],"deondria":[0,208,0.4636],"deserea":[0,216,0.4669],"destany":[0,3411,0.7066],"devinn":[273,100,0.3764],"deyonna":[0,387,0.5175],"donitra":[0,6,0.0],"dristy":[0,6,0.0],"duyen":[0,184,0.453],"dynesha":[0,257,0.482],"earlisha":[0,98,0.0],"elleni":[0,91,0.0],"gennelle":[0,6,0.0],"ginneh":[0,6,0.0],"glendalys":[0,12,0.0],"harpreet":[249,254,0.2728],"hather":[0,11,0.0],"heena":[0,253,0.4806],"idesha":[0,20,0.0],"ikia":[0,252,0.4803],"irlanda":[0,795,0.5801],"jamessa":[0,21,0.0],"jaritza":[0,792,0.5797],"jaryn":[578,335,0.3748],"jemia":[0,193,0.4571],"jemilla":[0,6,0.0],"jenecia":[0,27,0.0],"jenielle":[0,47,0.0],"jennia":[0,56,0.0],"jerrita":[0,6,0.0],"jezabel":[0,638,0.561],"jovann":[114,6,0.395],"juliah":[0,325,0.5024],"kaletha":[0,6,0.0],"kanoelani":[0,79,0.0],"kensha":[0,6,0.0],"kenyonna":[0,142,0.4305],"ketsia":[0,256,0.4816],"keyetta":[0,67,0.0],"keyuna":[0,168,0.4451],"kitzi":[0,6,0.0],"korinn":[0,60,0.0],"kristjana":[0,6,0.0],"krystalyn":[0,445,0.5297],"lakendria":[0,259,0.4827],"lakimberly":[0,19,0.0],"laqwanda":[0,17,0.0],"latreisha":[0,12,0.0],"laurabeth":[0,71,0.0],"leniece":[0,6,0.0],"lizaida":[0,11,0.0],"lokelani":[0,141,0.4298],"lucha":[0,6,0.0],"marciela":[0,21,0.0],"markeia":[0,144,0.4317],"markina":[0,11,0.0],"marshana":[0,30,0.0],"maurisha":[0,227,0.4712],"megean":[0,174,0.4481],"meliah":[0,743,0.5742],"melian":[0,20,0.0],"melysa":[0,80,0.0],"meshan":[0,6,0.0],"miosoty":[0,6,0.0],"monea":[0,289,0.4922],"monekia":[0,6,0.0],"naarah":[0,222,0.4693],"naeema":[0,304,0.4966],"nakeema":[0,49,0.0],"napua":[0,6,0.0],"nathena":[0,16,0.0],"natrina":[0,11,0.0],"nayla":[0,3353,0.7051],"negar":[0,53,0.0],"niaomi":[0,254,0.481],"nicosha":[0,58,0.0],"nizhoni":[0,804,0.5811],"porshe":[0,270,0.4863],"pricsilla":[0,68,0.0],"qiona":[0,6,0.0],"quenita":[0,16,0.0],"raemi":[0,12,0.0],"rashita":[0,33,0.0],"revecca":[0,54,0.0],"rickia":[0,463,0.5331],"rikesha":[0,23,0.0],"rizza":[0,6,0.0],"ronada":[0,36,0.0],"sabree":[24,287,0.4601],"samiya":[0,4012,0.7207],"sanam":[0,492,0.5384],"sanetta":[0,6,0.0],"saren":[0,135,0.4261],"sayaka":[0,212,0.4653],"schrita":[0,6,0.0],"see":[0,395,0.5193],"selecia":[0,11,0.0],"shacoya":[0,187,0.4544],"shadra":[0,6,0.0],"shaheeda":[0,11,0.0],"shaketia":[0,30,0.0],"shakida":[0,23,0.0],"shakura":[0,197,0.4589],"shanaka":[0,16,0.0],"shannikia":[0,21,0.0],"shanora":[0,99,0.0],"shaqueta":[0,145,0.4323],"shareda":[0,42,0.0],"sharekia":[0,48,0.0],"sharmine":[0,11,0.0],"sheala":[0,279,0.4891],"shealynn":[0,819,0.5827],"shenekia":[0,60,0.0],"sheneque":[0,16,0.0],"shenitra":[0,25,0.0],"shola":[5,32,0.0],"siboney":[0,80,0.0],"siddeegah":[0,6,0.0],"starlight":[0,40,0.0],"swiyyah":[0,12,0.0],"taiwanda":[0,6,0.0],"takeyia":[0,35,0.0],"takeyshia":[0,6,0.0],"taqueena":[0,6,0.0],"taronica":[0,6,0.0],"tassa":[0,6,0.0],"teagan":[5491,28515,0.76],"teandra":[0,309,0.498],"terin":[181,343,0.356],"tesheka":[0,11,0.0],"tiaira":[0,461,0.5327],"tranika":[0,75,0.0],"trelana":[0,6,0.0],"tyshika":[0,55,0.0],"venassa":[0,6,0.0],"whitnee":[0,607,0.5566],"wykisha":[0,18,0.0],"yachica":[0,6,0.0],"yanita":[0,11,0.0],"yasminda":[0,6,0.0],"yasmira":[0,6,0.0],"yuisa":[0,11,0.0],"abria":[0,889,0.5898],"adara":[0,2668,0.6852],"adeanna":[0,5,0.0],"adesina":[0,5,0.0],"adiana":[0,347,0.5081],"adlin":[0,67,0.0],"afra":[0,203,0.4615],"aija":[0,388,0.5178],"akane":[0,345,0.5076],"alaisha":[0,623,0.5589],"alaya":[0,10249,0.8021],"allisan":[0,34,0.0],"allissia":[0,37,0.0],"almanda":[0,10,0.0],"alysun":[0,5,0.0],"amalyn":[0,5,0.0],"amana":[0,420,0.5246],"amarys":[0,209,0.464],"ambert":[0,145,0.4323],"amecia":[0,27,0.0],"anacelis":[0,5,0.0],"anahita":[0,479,0.5361],"analissa":[0,366,0.5127],"anansa":[0,22,0.0],"anila":[0,571,0.5513],"anique":[0,305,0.4969],"aniya":[0,17850,0.8503],"annalis":[0,202,0.4611],"annesha":[0,72,0.0],"annsley":[0,898,0.5907],"anrea":[0,12,0.0],"aqueela":[0,5,0.0],"arati":[0,16,0.0],"araya":[10,3949,0.7177],"aricca":[0,11,0.0],"arkeba":[0,5,0.0],"armetrice":[0,5,0.0],"arriane":[0,5,0.0],"artresha":[0,5,0.0],"asal":[0,149,0.4346],"ashling":[0,317,0.5002],"ashonta":[0,24,0.0],"attiyya":[0,11,0.0],"aubray":[0,18,0.0],"auriel":[98,856,0.5347],"babygirl":[6,2016,0.6592],"beret":[0,15,0.0],"bethannie":[0,143,0.4311],"bethsheba":[0,5,0.0],"betsabe":[0,1071,0.606],"bianey":[0,629,0.5597],"biannca":[0,155,0.4381],"breen":[0,5,0.0],"breyn":[0,5,0.0],"brieana":[0,989,0.599],"briona":[0,1683,0.6452],"brissa":[0,2757,0.6881],"brittania":[0,402,0.5208],"brittnay":[0,1619,0.6418],"brookelyn":[0,3365,0.7054],"caia":[0,1136,0.6111],"cailyn":[0,5509,0.7482],"calise":[0,494,0.5387],"camay":[0,72,0.0],"camber":[41,545,0.5148],"cambi":[0,5,0.0],"camen":[55,10,0.0],"carisse":[0,26,0.0],"caseyann":[0,20,0.0],"ceason":[0,5,0.0],"chairity":[0,10,0.0],"chamel":[5,5,0.0],"chandris":[0,5,0.0],"chanice":[0,569,0.551],"chantill":[0,10,0.0],"chaqueta":[0,12,0.0],"charmella":[0,5,0.0],"charmonique":[0,18,0.0],"chelonda":[0,5,0.0],"chemere":[0,79,0.0],"cherub":[0,29,0.0],"chevone":[0,11,0.0],"chiquia":[0,5,0.0],"christylee":[0,5,0.0],"ciani":[0,702,0.5693],"ciarra":[0,3352,0.7051],"ciera":[5,11359,0.8107],"citlali":[0,4358,0.7279],"clarisha":[0,17,0.0],"comesha":[0,5,0.0],"corrissa":[0,91,0.0],"coti":[11,49,0.0],"coutney":[0,77,0.0],"crisha":[0,16,0.0],"cristabel":[0,220,0.4685],"crystalina":[0,59,0.0],"crystine":[0,28,0.0],"daja":[0,2399,0.676],"dalayna":[0,338,0.5058],"damekia":[0,5,0.0],"danaya":[0,786,0.5791],"daneika":[0,10,0.0],"danisa":[0,92,0.0],"dannia":[0,462,0.5329],"darniece":[0,10,0.0],"dashanna":[0,80,0.0],"dashauna":[0,181,0.4515],"dashiell":[2773,16,0.6851],"dawnesha":[0,51,0.0],"deanndra":[0,197,0.4589],"deavin":[127,5,0.408],"deepika":[0,254,0.481],"delsha":[0,5,0.0],"derrika":[0,168,0.4451],"dewayna":[0,21,0.0],"dianira":[0,44,0.0],"diella":[0,68,0.0],"dolli":[0,5,0.0],"domonica":[0,10,0.0],"eira":[0,762,0.5764],"elbonie":[0,5,0.0],"elenie":[0,143,0.4311],"elica":[0,62,0.0],"elyshia":[0,74,0.0],"emmanuella":[0,1384,0.6282],"endra":[0,5,0.0],"faiga":[0,1399,0.6292],"fantasia":[0,1815,0.6518],"farha":[0,158,0.4397],"franka":[0,17,0.0],"gelsey":[0,226,0.4708],"gemia":[0,10,0.0],"gesina":[0,5,0.0],"ging":[0,5,0.0],"giovonna":[0,26,0.0],"gissell":[0,1382,0.6281],"gladiz":[0,10,0.0],"glenisha":[0,119,0.4151],"hakimah":[0,10,0.0],"haleemah":[0,105,0.4042],"hind":[0,209,0.464],"hydie":[0,69,0.0],"idelisa":[0,5,0.0],"inbal":[0,16,0.0],"jaana":[0,102,0.4017],"jacquana":[0,31,0.0],"jaelithe":[0,5,0.0],"jahanna":[0,189,0.4553],"jahida":[0,52,0.0],"jalee":[0,473,0.535],"janicka":[0,10,0.0],"janvier":[17,15,0.0],"jaquette":[0,33,0.0],"jaronda":[0,16,0.0],"jasmen":[11,607,0.5483],"jazzmine":[0,2452,0.6779],"jeanique":[0,11,0.0],"jemika":[0,44,0.0],"jenalyn":[0,272,0.4869],"jernice":[0,5,0.0],"jessieca":[0,115,0.4121],"jigna":[0,19,0.0],"jillanna":[0,5,0.0],"joee":[5,94,0.0],"johnesha":[0,279,0.4891],"jolissa":[0,411,0.5228],"jondra":[0,5,0.0],"jonlyn":[0,5,0.0],"jordann":[59,1042,0.5758],"kahila":[0,5,0.0],"kaile":[22,699,0.5541],"kaity":[0,463,0.5331],"kalicia":[0,277,0.4885],"kamora":[0,3932,0.7189],"kanessa":[0,48,0.0],"karaann":[0,16,0.0],"karesha":[0,112,0.4098],"katelynn":[11,30615,0.8969],"katrea":[0,5,0.0],"kaydi":[0,294,0.4937],"kayti":[0,253,0.4806],"kebrina":[0,100,0.4],"keesa":[0,27,0.0],"keeshan":[0,5,0.0],"keionna":[0,659,0.5638],"keishanda":[0,5,0.0],"kelicia":[0,100,0.4],"kemyatta":[0,5,0.0],"kennetra":[0,38,0.0],"keonya":[0,16,0.0],"keshana":[0,193,0.4571],"keshonda":[0,157,0.4392],"khalimah":[0,5,0.0],"kheli":[0,5,0.0],"kieasha":[0,5,0.0],"kija":[0,30,0.0],"kileigh":[0,661,0.564],"kimari":[381,532,0.345],"kiosha":[0,175,0.4486],"kizze":[0,5,0.0],"korren":[0,10,0.0],"korynne":[0,145,0.4323],"kristalle":[0,5,0.0],"kristyanne":[0,5,0.0],"ktherine":[0,5,0.0],"lachaundra":[0,10,0.0],"lachisa":[0,5,0.0],"lacye":[0,119,0.4151],"laira":[0,157,0.4392],"lakaya":[0,181,0.4515],"lakeela":[0,5,0.0],"lakeeya":[0,16,0.0],"lakeila":[0,24,0.0],"lakersha":[0,5,0.0],"lakey":[0,18,0.0],"lakista":[0,5,0.0],"lakitsha":[0,5,0.0],"lamaya":[0,701,0.5691],"lanedra":[0,16,0.0],"lanekia":[0,5,0.0],"lanicia":[0,26,0.0],"lantanya":[0,5,0.0],"laquenda":[0,10,0.0],"laquicha":[0,5,0.0],"laqunita":[0,10,0.0],"larica":[0,53,0.0],"lasaunda":[0,5,0.0],"lashawda":[0,10,0.0],"latissia":[0,5,0.0],"latissue":[0,5,0.0],"latya":[0,21,0.0],"laycee":[0,736,0.5734],"lekeia":[0,11,0.0],"lekendra":[0,53,0.0],"lenaya":[0,295,0.494],"lequetta":[0,10,0.0],"lerissa":[0,27,0.0],"leshauna":[0,5,0.0],"leshaunda":[0,10,0.0],"leshaundra":[0,5,0.0],"leslianne":[0,10,0.0],"liah":[0,2542,0.681],"liala":[0,126,0.4201],"lieba":[0,23,0.0],"lija":[0,11,0.0],"lilac":[0,335,0.505],"linnzi":[0,17,0.0],"lisamaria":[0,17,0.0],"lorimar":[0,28,0.0],"ltoya":[0,10,0.0],"lyndsee":[0,311,0.4986],"madai":[0,571,0.5513],"mandalin":[0,5,0.0],"mandelyn":[0,16,0.0],"markeyta":[0,46,0.0],"marlenea":[0,10,0.0],"mashauna":[0,5,0.0],"maysa":[0,928,0.5935],"mckayla":[5,13173,0.8237],"meghanne":[0,98,0.0],"melissamarie":[0,10,0.0],"melssia":[0,5,0.0],"mercede":[0,535,0.5457],"merrissa":[0,177,0.4496],"meya":[0,825,0.5833],"micala":[0,373,0.5143],"mikella":[0,400,0.5204],"mikiala":[0,49,0.0],"mikiya":[0,354,0.5098],"moneshia":[0,57,0.0],"mong":[92,18,0.3415],"monikia":[0,10,0.0],"montoyia":[0,5,0.0],"morgann":[0,753,0.5754],"morganne":[0,1158,0.6127],"myeka":[0,14,0.0],"mylinh":[0,269,0.486],"mysha":[0,566,0.5506],"nahal":[0,85,0.0],"najiyyah":[0,23,0.0],"nala":[0,5815,0.7529],"natasia":[0,931,0.5938],"naysha":[0,301,0.4957],"nazanin":[0,239,0.4757],"nemesis":[0,166,0.444],"nguyet":[0,73,0.0],"niama":[0,12,0.0],"nickesha":[0,23,0.0],"nicolyn":[0,5,0.0],"nijia":[0,39,0.0],"nikeea":[0,5,0.0],"nimisha":[0,138,0.428],"nkem":[0,5,0.0],"nohelani":[0,61,0.0],"noralva":[0,5,0.0],"nou":[56,352,0.4505],"nyeesha":[0,57,0.0],"nykeisha":[0,54,0.0],"olibia":[0,5,0.0],"olina":[0,306,0.4971],"oshea":[1173,61,0.5877],"princessa":[0,167,0.4445],"quatrina":[0,5,0.0],"quinessa":[0,5,0.0],"quinnetta":[0,85,0.0],"qunita":[0,22,0.0],"quwana":[0,11,0.0],"rainah":[0,395,0.5193],"rakel":[0,305,0.4969],"ratesha":[0,5,0.0],"reanetta":[0,11,0.0],"rikita":[0,93,0.0],"ronesia":[0,15,0.0],"rosalynda":[0,56,0.0],"roshondra":[0,14,0.0],"roxsand":[0,5,0.0],"rubisela":[0,20,0.0],"saderia":[0,5,0.0],"sameria":[0,239,0.4757],"samiyyah":[0,148,0.4341],"sannon":[0,5,0.0],"sanoe":[0,106,0.4051],"sapphire":[0,4806,0.7364],"savitri":[0,25,0.0],"sayuri":[0,1348,0.6259],"scarlotte":[0,44,0.0],"schmika":[0,5,0.0],"schrie":[0,5,0.0],"selica":[0,18,0.0],"serica":[0,10,0.0],"seville":[50,83,0.2651],"shacola":[0,71,0.0],"shacondra":[0,5,0.0],"shaira":[0,556,0.549],"shakea":[0,138,0.428],"shakeda":[0,82,0.0],"shakeemah":[0,16,0.0],"shakenna":[0,52,0.0],"shamain":[0,5,0.0],"shamere":[105,188,0.3166],"shamil":[38,15,0.0],"shamiya":[0,1312,0.6236],"shanedra":[0,59,0.0],"shanekwa":[0,23,0.0],"shanielle":[0,59,0.0],"shanikia":[0,87,0.0],"shantara":[0,146,0.4329],"shantisha":[0,34,0.0],"shanyel":[0,5,0.0],"shaquna":[0,57,0.0],"sharareh":[0,10,0.0],"shariece":[0,70,0.0],"sharli":[0,26,0.0],"sharnika":[0,69,0.0],"sharocka":[0,5,0.0],"shataka":[0,5,0.0],"shataya":[0,195,0.458],"shatora":[0,119,0.4151],"shaunetta":[0,25,0.0],"shauni":[0,265,0.4846],"shauntal":[0,15,0.0],"shavan":[0,5,0.0],"shawndrika":[0,22,0.0],"shawnequa":[0,24,0.0],"shawniece":[0,175,0.4486],"shaylon":[87,166,0.3154],"shekeitha":[0,10,0.0],"shekitha":[0,5,0.0],"shemaiah":[12,264,0.467],"shimeeka":[0,5,0.0],"shinee":[0,5,0.0],"shirlina":[0,5,0.0],"shonnita":[0,5,0.0],"shontisha":[0,5,0.0],"shoshawna":[0,18,0.0],"shunell":[0,5,0.0],"shurie":[0,5,0.0],"shuvonne":[0,5,0.0],"shuwanna":[0,5,0.0],"sintia":[0,450,0.5306],"siohban":[0,5,0.0],"sonika":[0,148,0.4341],"sonoma":[0,266,0.485],"souad":[0,27,0.0],"stcy":[0,5,0.0],"sulai":[0,5,0.0],"suliana":[0,34,0.0],"sushma":[0,5,0.0],"swapna":[0,24,0.0],"sweta":[0,217,0.4673],"symphony":[29,3111,0.6929],"synithia":[0,5,0.0],"taana":[0,16,0.0],"tabethia":[0,28,0.0],"tachic":[0,5,0.0],"takeasha":[0,5,0.0],"takeita":[0,11,0.0],"takoya":[0,105,0.4042],"talethia":[0,18,0.0],"tamille":[0,15,0.0],"tanaia":[0,80,0.0],"tantra":[0,5,0.0],"tashie":[0,16,0.0],"tashieka":[0,35,0.0],"tayesha":[0,5,0.0],"tehesha":[0,5,0.0],"teneia":[0,5,0.0],"tenicha":[0,5,0.0],"teniel":[0,5,0.0],"thamar":[5,85,0.0],"thy":[0,366,0.5127],"tiawna":[0,22,0.0],"tifiny":[0,11,0.0],"timera":[0,211,0.4649],"tisheka":[0,5,0.0],"tiyanna":[0,821,0.5829],"tiyonna":[0,329,0.5034],"toneshia":[0,91,0.0],"tonesia":[0,12,0.0],"toshina":[0,21,0.0],"tranae":[0,201,0.4606],"traneka":[0,5,0.0],"tranita":[0,22,0.0],"trenesha":[0,59,0.0],"tyasha":[0,40,0.0],"tyena":[0,23,0.0],"tyffanie":[0,18,0.0],"tyrae":[326,35,0.4619],"tyrita":[0,10,0.0],"tyronzia":[0,5,0.0],"tywania":[0,5,0.0],"tywonda":[0,5,0.0],"unica":[0,42,0.0],"vitoria":[0,409,0.5223],"walkidia":[0,5,0.0],"whittney":[5,1633,0.6409],"wisteria":[0,80,0.0],"wydia":[0,10,0.0],"yaira":[0,568,0.5509],"yakia":[0,29,0.0],"yamilette":[0,635,0.5606],"yashekia":[0,10,0.0],"yoana":[0,1542,0.6376],"yulisa":[0,2013,0.6608],"yvelisse":[0,45,0.0],"zamira":[0,1531,0.637],"zareen":[0,269,0.486],"jorel":[1081,0,0.6068],"narada":[201,7,0.448],"sentell":[39,0,0.0],"tehron":[33,0,0.0],"dantonio":[176,0,0.4491],"kiko":[147,113,0.2731],"roshad":[244,0,0.4775],"jermery":[110,0,0.4083],"dilanjan":[13,0,0.0],"terdell":[13,0,0.0],"jamard":[32,0,0.0],"nishant":[615,0,0.5578],"zebulin":[77,0,0.0],"starbuck":[11,0,0.0],"atari":[90,58,0.264],"germany":[206,471,0.3939],"isaul":[163,0,0.4424],"jovanny":[4816,16,0.7344],"neiman":[320,5,0.4946],"behrang":[9,0,0.0],"brison":[1227,0,0.6178],"chanson":[200,0,0.4602],"cheng":[641,38,0.5347],"dang":[310,6,0.4904],"derrus":[9,0,0.0],"farzad":[154,0,0.4375],"jakari":[4848,294,0.6998],"jorell":[479,0,0.5361],"kong":[935,0,0.5942],"random":[135,0,0.4261],"saman":[288,118,0.3701],"santini":[9,0,0.0],"vimal":[97,0,0.0],"wacey":[375,0,0.5148],"aeric":[143,0,0.4311],"alhaji":[211,0,0.4649],"brenon":[266,0,0.485],"colley":[18,0,0.0],"daymeon":[130,0,0.4228],"deontay":[1158,0,0.6127],"jamari":[14723,877,0.7915],"jaydon":[9035,201,0.7758],"jerediah":[27,0,0.0],"jerud":[16,0,0.0],"kawon":[164,0,0.443],"kemon":[535,0,0.5457],"laramy":[47,0,0.0],"loc":[280,0,0.4894],"najib":[368,0,0.5132],"niklaus":[2299,0,0.6723],"pinchus":[673,0,0.5656],"ralpheal":[241,0,0.4764],"ramiah":[19,528,0.5286],"rashean":[8,0,0.0],"rontrell":[186,0,0.4539],"shiraz":[119,57,0.3037],"suliman":[275,0,0.4879],"traun":[17,0,0.0],"trong":[61,0,0.0],"vuong":[180,0,0.4511],"waseem":[775,0,0.5779],"abed":[219,0,0.4681],"adebayo":[137,0,0.4273],"aslan":[1439,90,0.5994],"aviel":[1232,53,0.5961],"azeem":[619,0,0.5583],"brishen":[7,0,0.0],"christion":[1196,17,0.6081],"daiman":[7,0,0.0],"davar":[12,0,0.0],"dederick":[45,0,0.0],"demarkis":[117,0,0.4136],"dkwon":[7,0,0.0],"ehron":[13,0,0.0],"farouk":[271,0,0.4866],"hamzah":[1499,0,0.6352],"ishi":[7,112,0.3907],"jabriel":[1009,0,0.6008],"javid":[391,0,0.5184],"jemario":[98,0,0.0],"jemiah":[105,211,0.3338],"jerek":[504,0,0.5405],"jeren":[419,0,0.5244],"jimmel":[22,0,0.0],"jmichael":[65,0,0.0],"johnwilliam":[235,0,0.4742],"joran":[192,0,0.4567],"josehua":[102,0,0.4017],"joushua":[90,0,0.0],"kamaal":[317,0,0.5002],"krystopher":[729,0,0.5725],"lopaka":[134,0,0.4254],"okechukwu":[100,0,0.4],"oluseyi":[38,0,0.0],"pedram":[65,0,0.0],"quante":[294,6,0.4855],"shamari":[844,1063,0.3657],"treston":[1271,0,0.6208],"yaacov":[127,0,0.4208],"yaniv":[273,0,0.4872],"zebulah":[7,0,0.0],"abrahim":[682,0,0.5668],"adham":[911,0,0.5919],"aditya":[5317,5,0.7445],"ayatollah":[6,0,0.0],"bravlio":[134,0,0.4254],"cairo":[8444,547,0.7427],"chade":[18,137,0.3872],"chamar":[240,0,0.476],"chelton":[16,0,0.0],"chih":[6,0,0.0],"dantoni":[11,0,0.0],"daylen":[3872,333,0.6674],"deandrew":[310,0,0.4983],"derelle":[80,0,0.0],"dillion":[3638,6,0.7111],"dmario":[452,0,0.531],"eiad":[11,0,0.0],"givon":[30,0,0.0],"grzegorz":[35,0,0.0],"hommy":[6,0,0.0],"husain":[404,0,0.5213],"ibraheem":[1545,0,0.6378],"isak":[1068,0,0.6057],"jabon":[6,0,0.0],"jacobus":[137,0,0.4273],"japhet":[270,0,0.4863],"jaryl":[11,0,0.0],"javoris":[401,0,0.5206],"jehad":[175,0,0.4486],"jereny":[6,0,0.0],"kamien":[6,0,0.0],"karac":[36,0,0.0],"karega":[11,0,0.0],"kealoha":[53,43,0.0],"kelechi":[572,261,0.4011],"kennell":[6,0,0.0],"khang":[1191,0,0.6152],"khoi":[681,50,0.5336],"kou":[691,33,0.5459],"latwon":[6,0,0.0],"lazerick":[39,0,0.0],"lerin":[29,195,0.4092],"michaeljames":[190,0,0.4558],"mondale":[21,0,0.0],"narayana":[17,5,0.0],"nicholson":[97,0,0.0],"nicklus":[46,0,0.0],"nizar":[386,0,0.5173],"pharaoh":[1917,5,0.655],"rachard":[103,0,0.4026],"rashawd":[74,0,0.0],"ronta":[12,0,0.0],"ruban":[11,0,0.0],"spanky":[6,0,0.0],"tamario":[93,0,0.0],"terrane":[6,0,0.0],"thuan":[207,5,0.4543],"tigh":[34,0,0.0],"tin":[436,0,0.5279],"tredell":[12,0,0.0],"tyeson":[241,0,0.4764],"tyresse":[273,0,0.4872],"usman":[1622,0,0.642],"vang":[325,11,0.4887],"zebula":[6,0,0.0],"zeshan":[265,0,0.4846],"aakash":[1040,0,0.6034],"aarn":[17,0,0.0],"adali":[24,674,0.5492],"adeyinka":[5,5,0.0],"adib":[290,0,0.4925],"adrell":[5,0,0.0],"ahmond":[20,0,0.0],"alaa":[458,1475,0.5015],"alamin":[168,0,0.4451],"amrit":[573,421,0.3456],"andon":[1045,0,0.6038],"anquan":[245,0,0.4778],"aquan":[137,0,0.4273],"ashlin":[155,2551,0.6471],"ashur":[762,0,0.5764],"ata":[306,0,0.4971],"azhar":[289,147,0.3499],"bai":[5,10,0.0],"barbaro":[15,0,0.0],"bleu":[339,246,0.3207],"bobak":[122,0,0.4173],"brayan":[16203,18,0.8411],"brence":[5,0,0.0],"brenner":[1200,10,0.6115],"bric":[28,0,0.0],"caden":[70293,937,0.9578],"chadwyck":[37,0,0.0],"chazz":[1316,29,0.6123],"chevas":[23,0,0.0],"coulter":[812,0,0.5819],"daemion":[127,0,0.4208],"daivid":[5,0,0.0],"dakotah":[3123,2278,0.4316],"dalibor":[5,0,0.0],"damiam":[5,0,0.0],"dat":[534,0,0.5455],"deedrick":[12,0,0.0],"demion":[10,0,0.0],"demis":[10,0,0.0],"dendrick":[10,0,0.0],"depree":[17,0,0.0],"detwan":[26,0,0.0],"devesh":[290,0,0.4925],"diomedes":[21,0,0.0],"dishaun":[5,0,0.0],"dunta":[10,0,0.0],"dwaun":[48,0,0.0],"dyson":[1564,5,0.6371],"elchonon":[346,0,0.5078],"eldrin":[15,0,0.0],"elijiah":[1143,0,0.6116],"enmanuel":[1139,0,0.6113],"ernan":[329,0,0.5034],"fontane":[5,0,0.0],"garbriel":[31,0,0.0],"geddy":[185,0,0.4534],"georffrey":[16,0,0.0],"geovany":[1725,0,0.6474],"guarionex":[5,0,0.0],"haralabos":[5,0,0.0],"hashem":[576,0,0.5521],"hiroki":[392,0,0.5187],"hyon":[5,0,0.0],"jabril":[1652,0,0.6436],"jagdeep":[44,0,0.0],"jaimar":[27,0,0.0],"jakarri":[444,0,0.5295],"jamaris":[391,77,0.4462],"jameen":[5,0,0.0],"jamion":[225,0,0.4704],"jarard":[42,0,0.0],"jaray":[268,0,0.4856],"jatin":[312,0,0.4988],"jatinder":[34,0,0.0],"javor":[5,0,0.0],"jayvon":[3830,0,0.7166],"jeason":[10,0,0.0],"jemelle":[35,0,0.0],"jenson":[2707,27,0.6806],"jerade":[11,0,0.0],"jeramiha":[28,0,0.0],"jerrimiah":[31,0,0.0],"jesper":[220,0,0.4685],"johnchristopher":[118,0,0.4144],"johnjoseph":[207,0,0.4632],"johnte":[182,0,0.452],"jorrell":[149,0,0.4346],"josephe":[32,0,0.0],"josephmichael":[97,0,0.0],"joshoua":[10,0,0.0],"jp":[104,0,0.4034],"kaeo":[357,0,0.5105],"kahlid":[26,0,0.0],"kalpesh":[17,0,0.0],"keanen":[134,0,0.4254],"keeton":[911,0,0.5919],"keishaun":[358,0,0.5108],"keitrick":[5,0,0.0],"keng":[504,0,0.5405],"kinyon":[15,0,0.0],"kylo":[4546,77,0.7208],"kyree":[7872,906,0.7073],"labrian":[105,0,0.4042],"lafredrick":[26,0,0.0],"lamare":[38,0,0.0],"laquinton":[351,0,0.5091],"latodd":[5,0,0.0],"latrone":[17,0,0.0],"ledarius":[499,0,0.5396],"leevi":[787,0,0.5792],"lemario":[60,0,0.0],"leodegario":[41,0,0.0],"leor":[315,24,0.4702],"levent":[135,0,0.4261],"luay":[154,0,0.4375],"luisalberto":[305,0,0.4969],"lukes":[57,0,0.0],"majed":[379,0,0.5157],"mandre":[5,0,0.0],"manoah":[281,0,0.4897],"manolis":[18,0,0.0],"margues":[48,0,0.0],"markiee":[5,0,0.0],"markise":[191,0,0.4562],"marquee":[227,34,0.4204],"marreo":[29,0,0.0],"mashaun":[24,0,0.0],"meng":[555,13,0.5383],"montario":[91,0,0.0],"nassar":[10,0,0.0],"nathian":[94,0,0.0],"nhan":[361,5,0.5057],"nickolis":[258,0,0.4823],"nicolos":[17,0,0.0],"nyheem":[151,0,0.4358],"okpara":[5,0,0.0],"omeed":[288,0,0.4919],"onel":[43,0,0.0],"osmon":[5,0,0.0],"oved":[60,0,0.0],"padro":[5,0,0.0],"pao":[301,0,0.4957],"pasquinel":[5,0,0.0],"patrisio":[5,0,0.0],"pecos":[46,0,0.0],"phuoc":[135,0,0.4261],"quandell":[41,0,0.0],"quantis":[5,0,0.0],"quartterio":[5,0,0.0],"quennel":[47,0,0.0],"quintell":[175,5,0.4385],"rajahn":[29,0,0.0],"ralphy":[55,0,0.0],"ranaldo":[38,0,0.0],"raphiel":[53,0,0.0],"rayshan":[22,0,0.0],"rhashad":[23,0,0.0],"ronderick":[5,0,0.0],"ronte":[109,0,0.4075],"roshod":[22,0,0.0],"rupesh":[22,0,0.0],"ryn":[54,254,0.4104],"sabir":[776,0,0.578],"saladine":[5,0,0.0],"salvado":[5,0,0.0],"samit":[82,0,0.0],"seyed":[122,0,0.4173],"sheik":[39,0,0.0],"sriram":[608,0,0.5568],"taryl":[5,0,0.0],"tekulve":[5,0,0.0],"tevita":[850,0,0.5859],"thaddaus":[11,0,0.0],"thadeous":[17,0,0.0],"theofilos":[10,0,0.0],"titan":[5341,5,0.7449],"tremon":[394,0,0.5191],"tremond":[88,0,0.0],"tyral":[24,0,0.0],"vegas":[312,145,0.3632],"wilner":[27,0,0.0],"wylee":[434,163,0.4036],"yitzhak":[242,0,0.4768],"yung":[11,0,0.0],"zeeshan":[604,0,0.5562],"nykeba":[0,26,0.0],"ilea":[0,247,0.4785],"semiko":[0,31,0.0],"brittanya":[0,128,0.4214],"cielita":[0,31,0.0],"nyah":[5,5379,0.7455],"yer":[142,572,0.4572],"britanya":[0,37,0.0],"renoda":[0,26,0.0],"renotta":[0,22,0.0],"sumeka":[0,14,0.0],"britania":[0,124,0.4187],"tralana":[0,18,0.0],"danitza":[0,1036,0.6031],"jameshia":[0,725,0.5721],"ronnisha":[0,364,0.5122],"ying":[140,260,0.3383],"britny":[0,1914,0.6564],"jelissa":[0,933,0.594],"keshawna":[0,460,0.5326],"renorda":[0,11,0.0],"shanndolyn":[0,11,0.0],"sumika":[0,11,0.0],"azia":[0,1410,0.6298],"chimera":[0,46,0.0],"lencola":[0,10,0.0],"phung":[16,163,0.4103],"renauda":[0,15,0.0],"riane":[5,534,0.5412],"shamelia":[0,45,0.0],"shastina":[0,90,0.0],"teadra":[0,24,0.0],"blia":[0,119,0.4151],"carenda":[0,9,0.0],"cheriese":[0,14,0.0],"chinara":[0,71,0.0],"kalika":[0,261,0.4833],"kang":[44,108,0.3101],"kao":[467,244,0.3746],"layce":[0,189,0.4553],"mao":[10,285,0.4772],"mariely":[0,1187,0.6149],"martini":[0,26,0.0],"meggie":[0,514,0.5422],"nai":[76,294,0.4081],"neshanta":[0,9,0.0],"porschia":[0,242,0.4768],"ranoda":[0,9,0.0],"renarta":[0,9,0.0],"shaquinta":[0,149,0.4346],"shenitta":[0,9,0.0],"special":[0,344,0.5073],"talar":[0,212,0.4653],"teea":[0,66,0.0],"youa":[0,175,0.4486],"zulekha":[0,19,0.0],"amandia":[0,43,0.0],"ashle":[0,546,0.5474],"bindi":[0,396,0.5195],"carmeshia":[0,33,0.0],"chanequa":[0,56,0.0],"courteny":[0,63,0.0],"elizet":[0,77,0.0],"ileah":[0,286,0.4913],"jamicka":[0,34,0.0],"kailani":[45,11553,0.8097],"krishauna":[0,83,0.0],"laquila":[0,31,0.0],"lauralei":[0,121,0.4166],"leonela":[0,1044,0.6037],"lynzi":[0,553,0.5485],"murjani":[0,24,0.0],"neecy":[0,8,0.0],"nhu":[0,372,0.5141],"nhung":[0,215,0.4665],"nieka":[0,26,0.0],"omesha":[0,66,0.0],"pegah":[0,75,0.0],"quintasha":[0,53,0.0],"ranarda":[0,13,0.0],"reneda":[0,8,0.0],"shaleia":[0,13,0.0],"shamaya":[0,828,0.5836],"shanigua":[0,59,0.0],"shatera":[0,300,0.4954],"shemecka":[0,8,0.0],"sheng":[16,370,0.4959],"shernika":[0,48,0.0],"shireka":[0,43,0.0],"starkisha":[0,94,0.0],"taleena":[0,39,0.0],"teneika":[0,19,0.0],"tifanny":[0,145,0.4323],"ullanda":[0,24,0.0],"vennesa":[0,53,0.0],"yamaris":[0,176,0.4491],"yoanna":[0,665,0.5646],"abha":[0,57,0.0],"akeila":[0,189,0.4553],"alexys":[378,4161,0.6705],"anamika":[0,180,0.4511],"avanti":[57,347,0.4477],"beige":[0,19,0.0],"brittiny":[0,597,0.5552],"brookelynn":[0,3451,0.7076],"cathia":[0,34,0.0],"chamere":[0,38,0.0],"chervonne":[0,7,0.0],"cheyann":[0,1679,0.645],"chinelle":[0,27,0.0],"chrsitina":[0,25,0.0],"dao":[194,88,0.3371],"desera":[0,63,0.0],"desireah":[0,7,0.0],"eliset":[0,18,0.0],"emberly":[0,5148,0.7423],"enas":[0,182,0.452],"estefania":[5,6949,0.7679],"faheemah":[0,12,0.0],"fariba":[0,12,0.0],"fatemah":[0,168,0.4451],"flannery":[0,574,0.5518],"ghadah":[0,7,0.0],"hayat":[0,790,0.5795],"ianna":[0,1096,0.608],"ikeshia":[0,49,0.0],"itasha":[0,12,0.0],"jatoya":[0,141,0.4298],"jazzmin":[0,2269,0.6712],"jenah":[0,476,0.5355],"jerrika":[0,615,0.5578],"kaleigh":[6,16184,0.8415],"kaleisha":[0,149,0.4346],"katielynn":[0,343,0.5071],"kaytie":[0,600,0.5556],"keauna":[0,342,0.5068],"kensey":[5,920,0.59],"keyosha":[0,338,0.5058],"kimia":[0,574,0.5518],"krishawn":[175,12,0.4252],"lakeitra":[0,7,0.0],"lakesh":[0,7,0.0],"lareka":[0,23,0.0],"lastar":[0,38,0.0],"lateasa":[0,13,0.0],"latrista":[0,41,0.0],"lincy":[0,203,0.4615],"monyetta":[0,7,0.0],"nakedra":[0,33,0.0],"nashana":[0,21,0.0],"nasheka":[0,38,0.0],"nasim":[487,119,0.4472],"natesa":[0,7,0.0],"nathina":[0,12,0.0],"natlaie":[0,13,0.0],"phoua":[0,99,0.0],"punam":[0,55,0.0],"quaneshia":[0,185,0.4534],"quenisha":[0,191,0.4562],"quynh":[0,332,0.5042],"rasheeta":[0,23,0.0],"rekesha":[0,17,0.0],"rheagan":[0,631,0.56],"rylee":[5461,66869,0.8985],"saisha":[0,996,0.5997],"sameko":[0,7,0.0],"satasha":[0,27,0.0],"sayda":[0,371,0.5139],"semico":[0,7,0.0],"sepideh":[0,25,0.0],"shalae":[0,126,0.4201],"shalaya":[0,590,0.5542],"shambra":[0,34,0.0],"shametria":[0,44,0.0],"shanreka":[0,17,0.0],"shirika":[0,17,0.0],"shreya":[0,4975,0.7394],"simeko":[0,7,0.0],"soua":[56,105,0.2878],"sully":[645,364,0.384],"sumeko":[0,7,0.0],"sunrise":[0,7,0.0],"tanvi":[0,2262,0.6709],"teaya":[0,47,0.0],"teeya":[0,32,0.0],"tishonda":[0,13,0.0],"tyffani":[0,132,0.4241],"velvette":[0,7,0.0],"xee":[0,118,0.4144],"yamaira":[0,66,0.0],"yin":[0,13,0.0],"abigael":[5,1937,0.656],"afsaneh":[0,17,0.0],"airen":[178,135,0.2838],"akishia":[0,6,0.0],"amberdawn":[0,23,0.0],"angellina":[0,336,0.5053],"antonisha":[0,268,0.4856],"ashunti":[0,301,0.4957],"baylee":[662,21486,0.8431],"beonka":[0,119,0.4151],"billiejoe":[0,6,0.0],"blimie":[0,331,0.504],"brandylee":[0,27,0.0],"brinn":[15,596,0.5435],"britne":[0,282,0.49],"brittanny":[0,389,0.518],"cameran":[954,1315,0.389],"carnesha":[0,143,0.4311],"catrisha":[0,6,0.0],"caysie":[0,155,0.4381],"cedrina":[0,26,0.0],"chanella":[0,6,0.0],"charlonda":[0,6,0.0],"charmica":[0,6,0.0],"cheryllyn":[0,6,0.0],"ching":[84,30,0.3031],"christanna":[0,36,0.0],"christieann":[0,6,0.0],"chrystin":[0,45,0.0],"comekia":[0,6,0.0],"crystalann":[0,150,0.4352],"crystallee":[0,74,0.0],"czarina":[0,424,0.5255],"darnika":[0,32,0.0],"decola":[0,11,0.0],"deesha":[0,22,0.0],"desirey":[0,284,0.4907],"diem":[89,710,0.5158],"doneka":[0,11,0.0],"ernisha":[0,62,0.0],"falishia":[0,13,0.0],"gaia":[0,2274,0.6714],"gao":[0,375,0.5148],"genay":[0,32,0.0],"genina":[0,13,0.0],"haifa":[0,219,0.4681],"hanifa":[0,274,0.4876],"hermanda":[0,6,0.0],"hilaree":[0,44,0.0],"jacina":[0,16,0.0],"jadda":[0,100,0.4],"jalisa":[6,6167,0.7574],"jamicia":[0,91,0.0],"jamilya":[0,191,0.4562],"janei":[0,120,0.4158],"janitza":[0,305,0.4969],"japera":[0,21,0.0],"jaquline":[0,44,0.0],"jasminda":[0,11,0.0],"javanna":[0,136,0.4267],"jenilee":[0,806,0.5813],"jennika":[0,459,0.5324],"jheri":[0,148,0.4341],"jochebed":[0,166,0.444],"jordanne":[0,619,0.5583],"juleah":[0,271,0.4866],"kaely":[0,1108,0.6089],"kalandria":[0,12,0.0],"kamini":[0,27,0.0],"karista":[0,142,0.4305],"katarzyna":[0,721,0.5716],"katilyn":[0,1737,0.648],"katora":[0,118,0.4144],"keshanna":[0,78,0.0],"kieu":[0,145,0.4323],"kishauna":[0,17,0.0],"krishaun":[42,6,0.0],"krizia":[0,410,0.5226],"laleh":[0,87,0.0],"laquista":[0,16,0.0],"laquonda":[0,63,0.0],"lashenda":[0,6,0.0],"lashounda":[0,6,0.0],"lateia":[0,106,0.4051],"latoyria":[0,17,0.0],"lekevia":[0,6,0.0],"leslieanne":[0,93,0.0],"lilianna":[0,8506,0.7859],"linsi":[0,77,0.0],"linzee":[0,290,0.4925],"lizamarie":[0,32,0.0],"llia":[0,6,0.0],"makaela":[0,2749,0.6878],"marnisha":[0,128,0.4214],"marquesha":[0,471,0.5346],"maygen":[0,398,0.52],"melissasue":[0,17,0.0],"merin":[0,176,0.4491],"meshon":[0,6,0.0],"miaya":[0,348,0.5083],"micayla":[0,2597,0.6829],"monek":[0,6,0.0],"musheerah":[0,11,0.0],"myya":[0,99,0.0],"nekiesha":[0,6,0.0],"niclole":[0,19,0.0],"nikitta":[0,64,0.0],"nohealani":[0,264,0.4843],"normandy":[0,73,0.0],"orquidia":[0,44,0.0],"quintisha":[0,43,0.0],"raashida":[0,27,0.0],"ralana":[0,6,0.0],"raneisha":[0,345,0.5076],"ranota":[0,6,0.0],"rashonna":[0,43,0.0],"renauta":[0,6,0.0],"rennata":[0,24,0.0],"rinata":[0,6,0.0],"rokesha":[0,17,0.0],"rupali":[0,27,0.0],"ryah":[0,1385,0.6283],"sadena":[0,6,0.0],"sanela":[0,77,0.0],"santrese":[0,6,0.0],"sarahjo":[0,27,0.0],"seleena":[0,215,0.4665],"semeko":[0,6,0.0],"senikka":[0,6,0.0],"shadena":[0,6,0.0],"shakedra":[0,101,0.4009],"shakiah":[0,158,0.4397],"shamanda":[0,79,0.0],"shamorrow":[0,6,0.0],"shanekqua":[0,125,0.4194],"shanequia":[0,162,0.4419],"shanikwa":[0,85,0.0],"shanteria":[0,703,0.5694],"shantese":[0,59,0.0],"sharaya":[0,462,0.5329],"sharaye":[0,19,0.0],"sharessa":[0,6,0.0],"shauntrice":[0,53,0.0],"shavell":[6,113,0.3942],"shavonya":[0,12,0.0],"shawandra":[0,6,0.0],"sheleah":[0,12,0.0],"shinetta":[0,6,0.0],"shinna":[0,6,0.0],"shovan":[0,6,0.0],"shterna":[0,294,0.4937],"shundrea":[0,18,0.0],"solitaire":[0,11,0.0],"sparkles":[0,73,0.0],"starlisha":[0,23,0.0],"syretha":[0,6,0.0],"tajah":[76,858,0.5457],"tamirah":[0,218,0.4677],"tang":[0,47,0.0],"telishia":[0,6,0.0],"tenay":[0,44,0.0],"tenice":[0,6,0.0],"tishawna":[0,78,0.0],"tomii":[0,6,0.0],"toshima":[0,11,0.0],"tremekia":[0,6,0.0],"trenica":[0,6,0.0],"truc":[17,226,0.4437],"tuyen":[26,160,0.3905],"tyneesha":[0,53,0.0],"tysheka":[0,123,0.418],"vakesha":[0,6,0.0],"vernesha":[0,104,0.4034],"wakia":[0,6,0.0],"whitnie":[0,416,0.5238],"yaicha":[0,6,0.0],"yaquelin":[0,1410,0.6298],"yaschica":[0,6,0.0],"yasheca":[0,6,0.0],"yashira":[0,519,0.543],"abbegail":[0,247,0.4785],"aby":[56,272,0.4173],"achel":[0,39,0.0],"adea":[0,187,0.4544],"adessa":[0,457,0.532],"aelisa":[0,5,0.0],"alexias":[0,154,0.4375],"alyscia":[0,172,0.4471],"alyssum":[0,22,0.0],"amandalynn":[0,81,0.0],"amande":[0,19,0.0],"amariah":[23,3558,0.7062],"amarillis":[0,10,0.0],"amillia":[0,767,0.577],"ammanda":[0,106,0.4051],"andonia":[0,5,0.0],"annaka":[0,591,0.5543],"annalynn":[0,1541,0.6376],"antonica":[0,5,0.0],"antoria":[0,201,0.4606],"aracel":[0,5,0.0],"arina":[0,1124,0.6102],"arnica":[0,5,0.0],"arteria":[0,38,0.0],"arzu":[0,163,0.4424],"ashliegh":[0,418,0.5242],"ashunta":[0,10,0.0],"atiyah":[0,234,0.4738],"audrianna":[0,4854,0.7372],"aunna":[0,440,0.5287],"basma":[0,450,0.5306],"beranda":[0,10,0.0],"binita":[0,5,0.0],"blayre":[0,136,0.4267],"bobbilee":[0,5,0.0],"briselda":[0,140,0.4292],"britiany":[0,180,0.4511],"brittiany":[0,737,0.5735],"brookley":[0,114,0.4114],"canan":[69,5,0.0],"cardiss":[0,5,0.0],"casidy":[0,346,0.5078],"cate":[0,1778,0.65],"caycie":[0,39,0.0],"caylee":[0,9682,0.7972],"chakeya":[0,5,0.0],"chalan":[0,5,0.0],"charlisha":[0,61,0.0],"cheisa":[0,10,0.0],"chelcie":[0,763,0.5765],"chelynne":[0,21,0.0],"chenae":[0,110,0.4083],"chimira":[0,11,0.0],"chinere":[0,11,0.0],"chole":[0,1984,0.6595],"choua":[86,390,0.4388],"chua":[0,24,0.0],"chyann":[0,939,0.5945],"clinique":[0,41,0.0],"cortnei":[0,35,0.0],"countney":[0,27,0.0],"courtnei":[0,229,0.472],"crystil":[0,11,0.0],"crystin":[0,225,0.4704],"daci":[0,66,0.0],"dametrice":[0,5,0.0],"davonia":[0,16,0.0],"dawnta":[0,5,0.0],"dayra":[0,1330,0.6248],"deaunna":[0,86,0.0],"delandra":[0,20,0.0],"denamarie":[0,10,0.0],"denaya":[0,299,0.4951],"denekia":[0,10,0.0],"destani":[0,1164,0.6132],"devony":[0,123,0.418],"dezaree":[0,166,0.444],"deziray":[0,476,0.5355],"dipa":[0,18,0.0],"ebonne":[0,41,0.0],"edica":[0,5,0.0],"edweina":[0,5,0.0],"eftihia":[0,12,0.0],"elizabethanne":[0,86,0.0],"emmanuela":[0,701,0.5691],"emmilee":[0,152,0.4364],"enjolie":[0,28,0.0],"eunise":[0,39,0.0],"farhana":[0,270,0.4863],"farm":[0,34,0.0],"fatin":[10,59,0.0],"fiana":[0,73,0.0],"gitana":[0,15,0.0],"haide":[0,158,0.4397],"herica":[0,15,0.0],"ia":[0,160,0.4408],"ileia":[0,11,0.0],"illia":[0,17,0.0],"isavel":[0,48,0.0],"iveth":[0,775,0.5779],"jachelle":[0,120,0.4158],"jacqlynn":[0,49,0.0],"jacquis":[77,10,0.0],"jaemie":[0,10,0.0],"jalaina":[0,179,0.4506],"jalie":[0,305,0.4969],"jamyra":[0,1002,0.6002],"jandee":[0,11,0.0],"jaqualine":[0,18,0.0],"jaqueta":[0,26,0.0],"jaselyn":[0,427,0.5261],"jasna":[0,10,0.0],"jazmyn":[0,9437,0.795],"jelisa":[0,1098,0.6081],"jemimah":[0,544,0.5471],"jerisha":[0,60,0.0],"jesha":[0,24,0.0],"jezebel":[0,778,0.5782],"jhovana":[0,24,0.0],"jocilyn":[0,383,0.5166],"jollene":[0,22,0.0],"jomeka":[0,10,0.0],"jonnae":[0,280,0.4894],"jowharah":[0,5,0.0],"junea":[0,5,0.0],"jurita":[0,5,0.0],"kaimi":[43,26,0.0],"kaite":[0,31,0.0],"kalae":[5,12,0.0],"kalona":[0,5,0.0],"kandria":[0,10,0.0],"kanedra":[0,16,0.0],"kapiolani":[0,17,0.0],"kasa":[0,5,0.0],"kathalina":[0,296,0.4943],"katiuska":[0,32,0.0],"kausha":[0,5,0.0],"kaydra":[0,132,0.4241],"kaysey":[0,148,0.4341],"keaira":[0,1839,0.6529],"keili":[0,412,0.523],"keiondra":[0,128,0.4214],"kelsee":[0,1748,0.6485],"kendre":[275,64,0.4105],"kenicia":[0,45,0.0],"ketisha":[0,10,0.0],"keyshonda":[0,16,0.0],"keywanda":[0,15,0.0],"khadeeja":[0,274,0.4876],"kiante":[471,182,0.4061],"kieisha":[0,5,0.0],"kimanh":[0,56,0.0],"kindrea":[0,5,0.0],"kinyada":[0,10,0.0],"kishanna":[0,5,0.0],"koriann":[0,37,0.0],"kowanna":[0,5,0.0],"krisna":[13,94,0.3566],"kristilynn":[0,10,0.0],"krupa":[0,403,0.5211],"kyara":[0,3452,0.7076],"kyndell":[64,581,0.5062],"kywanna":[0,5,0.0],"laia":[0,1045,0.6038],"lakayla":[0,1340,0.6254],"lakelia":[0,28,0.0],"lakieshia":[0,5,0.0],"lakosha":[0,12,0.0],"lakya":[0,241,0.4764],"lanequa":[0,10,0.0],"laquanya":[0,15,0.0],"laquia":[0,62,0.0],"laquise":[0,5,0.0],"larika":[0,37,0.0],"lashelia":[0,5,0.0],"lashia":[0,153,0.4369],"lateena":[0,13,0.0],"latenya":[0,5,0.0],"latiah":[0,15,0.0],"latraya":[0,10,0.0],"lavasha":[0,44,0.0],"laycie":[0,333,0.5045],"lecresha":[0,20,0.0],"leianna":[0,823,0.5831],"leshawnda":[0,5,0.0],"lesheka":[0,5,0.0],"liezl":[0,33,0.0],"liron":[89,44,0.2842],"lisah":[0,5,0.0],"lloana":[0,5,0.0],"lorrenda":[0,5,0.0],"lynisha":[0,108,0.4067],"lyrica":[0,915,0.5923],"macaire":[5,5,0.0],"magenta":[0,248,0.4789],"maisa":[0,247,0.4785],"malonda":[0,5,0.0],"manesha":[0,28,0.0],"mariachristina":[0,66,0.0],"maricely":[0,5,0.0],"marlaena":[0,10,0.0],"marsinah":[0,5,0.0],"marwah":[0,337,0.5055],"marytza":[0,93,0.0],"marzena":[0,18,0.0],"maxx":[3982,105,0.7037],"mekeshia":[0,5,0.0],"meridth":[0,5,0.0],"merika":[0,40,0.0],"meshea":[0,5,0.0],"michaelia":[0,141,0.4298],"milanie":[0,243,0.4771],"milisha":[0,5,0.0],"mistique":[0,22,0.0],"mohogany":[0,64,0.0],"moneik":[0,11,0.0],"monserrat":[26,7920,0.7775],"mycah":[827,820,0.323],"naadira":[0,24,0.0],"nalin":[201,28,0.4143],"nao":[23,95,0.3336],"narine":[0,54,0.0],"neah":[0,547,0.5476],"negin":[0,87,0.0],"nerisa":[0,10,0.0],"nichcole":[0,5,0.0],"nicoel":[0,5,0.0],"ninamarie":[0,180,0.4511],"nitoya":[0,5,0.0],"nitzia":[0,93,0.0],"nurah":[0,137,0.4273],"ogechi":[0,289,0.4922],"presilla":[0,5,0.0],"pricila":[0,1124,0.6102],"quenette":[0,5,0.0],"raenada":[0,5,0.0],"rainna":[0,266,0.485],"randalynn":[0,5,0.0],"rashay":[0,158,0.4397],"raveen":[0,407,0.5219],"raynika":[0,11,0.0],"reannen":[0,15,0.0],"reizel":[0,147,0.4335],"reizy":[0,113,0.4106],"reshawna":[0,16,0.0],"rhanada":[0,5,0.0],"rhianne":[0,223,0.4697],"rishona":[0,10,0.0],"ristina":[0,15,0.0],"rokeya":[0,11,0.0],"ronnella":[0,5,0.0],"roshonna":[0,5,0.0],"rossella":[0,34,0.0],"saajida":[0,5,0.0],"sae":[5,78,0.0],"samaya":[0,3046,0.6967],"sameika":[0,5,0.0],"santricia":[0,10,0.0],"sarajo":[0,40,0.0],"savonne":[5,26,0.0],"sawsan":[0,64,0.0],"sephra":[0,40,0.0],"sequina":[0,5,0.0],"seritta":[0,5,0.0],"sevasti":[0,25,0.0],"shacora":[0,321,0.5013],"shakeenah":[0,10,0.0],"shalanna":[0,5,0.0],"shalicia":[0,104,0.4034],"shamala":[0,11,0.0],"shamaria":[0,538,0.5462],"shamonia":[0,5,0.0],"shannara":[0,54,0.0],"shaquella":[0,107,0.4059],"sharnay":[0,129,0.4221],"sharrika":[0,5,0.0],"shaundreka":[0,5,0.0],"shavada":[0,5,0.0],"shawnacy":[0,5,0.0],"sheanna":[0,198,0.4593],"shemita":[0,5,0.0],"shereca":[0,10,0.0],"shereeta":[0,16,0.0],"sherreka":[0,5,0.0],"sherrena":[0,10,0.0],"sherris":[0,5,0.0],"shinequa":[0,27,0.0],"shovonne":[0,10,0.0],"shureka":[0,23,0.0],"silpa":[0,24,0.0],"smitha":[0,51,0.0],"sochil":[0,18,0.0],"sonovia":[0,5,0.0],"sstephanie":[0,5,0.0],"starleigh":[0,23,0.0],"starlisa":[0,5,0.0],"starlita":[0,5,0.0],"starshemah":[0,5,0.0],"suna":[0,34,0.0],"sunie":[0,10,0.0],"swathi":[0,232,0.4731],"syrette":[0,5,0.0],"syritta":[0,5,0.0],"takeena":[0,27,0.0],"tamaris":[26,32,0.0],"tannah":[0,269,0.486],"taraya":[0,122,0.4173],"tashe":[0,97,0.0],"tasheia":[0,21,0.0],"tavette":[0,5,0.0],"tazia":[0,303,0.4963],"teaka":[0,15,0.0],"teauna":[0,128,0.4214],"teneeka":[0,5,0.0],"ternisha":[0,28,0.0],"tiaka":[0,5,0.0],"tierza":[0,46,0.0],"tifanee":[0,36,0.0],"tiffiani":[0,10,0.0],"tifni":[0,5,0.0],"timbra":[0,15,0.0],"tinea":[0,60,0.0],"titiana":[0,563,0.5501],"tracilyn":[0,5,0.0],"tralaina":[0,5,0.0],"trene":[0,32,0.0],"treneka":[0,25,0.0],"tyheshia":[0,5,0.0],"tyshawna":[0,195,0.458],"tzirel":[0,521,0.5434],"velen":[0,46,0.0],"velika":[0,5,0.0],"vianney":[10,2576,0.6799],"viky":[0,24,0.0],"wakeisha":[0,15,0.0],"walia":[0,5,0.0],"walkiria":[0,15,0.0],"wenndy":[0,5,0.0],"wykeisha":[0,20,0.0],"wykeshia":[0,10,0.0],"yaschia":[0,5,0.0],"yelissa":[0,25,0.0],"yenny":[0,245,0.4778],"yi":[289,172,0.334],"zahida":[0,26,0.0],"tou":[1254,0,0.6197],"marchello":[546,0,0.5474],"teng":[354,0,0.5098],"kimario":[13,0,0.0],"almanzo":[27,0,0.0],"danh":[216,0,0.4669],"jordache":[30,0,0.0],"bassel":[291,0,0.4928],"andreus":[495,0,0.5389],"devonte":[11688,32,0.8116],"fue":[272,0,0.4869],"jowan":[157,0,0.4392],"vontrell":[247,0,0.4785],"calder":[2070,37,0.6531],"fady":[247,0,0.4785],"kiet":[343,0,0.5071],"martise":[114,0,0.4114],"phu":[282,0,0.49],"quavis":[59,0,0.0],"rajai":[35,0,0.0],"shyron":[55,0,0.0],"tabias":[529,0,0.5447],"xiong":[176,0,0.4491],"adeel":[406,0,0.5217],"almonzo":[18,0,0.0],"cerone":[28,0,0.0],"chue":[329,5,0.4972],"chuong":[85,0,0.0],"dontia":[13,36,0.0],"duante":[135,0,0.4261],"ger":[385,88,0.4354],"haki":[28,0,0.0],"hiep":[120,0,0.4158],"jamaa":[13,0,0.0],"jamarl":[129,0,0.4221],"kavis":[13,0,0.0],"kiyon":[549,0,0.5479],"mareco":[8,0,0.0],"marieo":[21,0,0.0],"menelik":[386,0,0.5173],"ninos":[28,0,0.0],"raffael":[111,0,0.4091],"salahuddin":[205,0,0.4624],"tavarres":[8,0,0.0],"tayron":[248,0,0.4789],"trumaine":[417,0,0.524],"zadok":[515,0,0.5424],"bentzion":[532,0,0.5452],"bharat":[178,0,0.4501],"cordale":[586,0,0.5536],"dajon":[1711,70,0.6246],"devaun":[395,0,0.5193],"dimitrious":[63,0,0.0],"dontavious":[1902,0,0.6558],"dontavius":[1061,0,0.6051],"eliyohu":[123,0,0.418],"eytan":[438,0,0.5283],"fahd":[374,0,0.5146],"hadi":[2393,6,0.6743],"haris":[1752,0,0.6487],"huan":[88,0,0.0],"jacquan":[445,0,0.5297],"jamere":[1771,22,0.6427],"jeanphilippe":[33,0,0.0],"jehoshua":[14,0,0.0],"jesson":[98,0,0.0],"joeray":[19,0,0.0],"johneric":[71,0,0.0],"juron":[70,0,0.0],"jvon":[517,0,0.5427],"kaheem":[370,0,0.5136],"kush":[1203,0,0.6161],"kylle":[70,5,0.0],"laif":[32,0,0.0],"marquice":[835,0,0.5843],"montavious":[992,0,0.5993],"octabio":[7,0,0.0],"orasio":[7,0,0.0],"otniel":[129,0,0.4221],"rafeeq":[39,0,0.0],"reshad":[166,0,0.444],"sahir":[887,0,0.5896],"samnang":[139,28,0.37],"santigo":[17,0,0.0],"seng":[239,84,0.3713],"shaon":[12,0,0.0],"siaosi":[297,0,0.4946],"sohrab":[85,0,0.0],"tameem":[406,0,0.5217],"tario":[7,0,0.0],"terel":[145,0,0.4323],"tiso":[7,0,0.0],"toua":[170,0,0.4461],"traviss":[12,0,0.0],"tyheem":[385,0,0.5171],"warith":[17,0,0.0],"yeng":[426,98,0.4422],"aarion":[528,146,0.4432],"adiel":[2758,119,0.6632],"ahmaad":[458,0,0.5322],"aladdin":[261,0,0.4833],"anjuan":[33,0,0.0],"antawon":[28,0,0.0],"azam":[199,0,0.4598],"beren":[288,76,0.4053],"bjay":[6,0,0.0],"brandonn":[122,0,0.4173],"breyon":[721,95,0.5145],"brondon":[70,0,0.0],"camerino":[21,0,0.0],"coryell":[13,0,0.0],"dajaun":[314,0,0.4994],"davius":[76,0,0.0],"dayshawn":[1345,5,0.6237],"desmen":[156,0,0.4386],"dionel":[116,0,0.4129],"durane":[6,0,0.0],"edwinn":[11,0,0.0],"emon":[596,90,0.4928],"garion":[472,0,0.5348],"gerid":[11,0,0.0],"hitesh":[75,0,0.0],"isais":[201,0,0.4606],"jakeem":[1142,0,0.6115],"jamele":[49,0,0.0],"jarratt":[25,0,0.0],"jarrick":[221,0,0.4689],"jarrot":[11,0,0.0],"jarvaris":[56,0,0.0],"javell":[450,0,0.5306],"jawuan":[686,0,0.5673],"jemarr":[6,0,0.0],"jermario":[68,0,0.0],"jimar":[23,0,0.0],"joash":[384,0,0.5169],"jonce":[6,0,0.0],"junaid":[534,0,0.5455],"justn":[99,0,0.0],"keny":[217,11,0.4488],"kijuan":[309,0,0.498],"markas":[151,0,0.4358],"matthan":[305,0,0.4969],"monteze":[16,0,0.0],"naji":[781,0,0.5785],"olawale":[120,0,0.4158],"omri":[863,36,0.5671],"panagiotes":[6,0,0.0],"paulos":[22,0,0.0],"pheng":[436,0,0.5279],"quantavious":[526,0,0.5442],"rhasheen":[6,0,0.0],"russelle":[6,0,0.0],"saro":[16,0,0.0],"sayed":[664,0,0.5644],"shamarcus":[70,0,0.0],"shameek":[239,5,0.4677],"shariyf":[20,0,0.0],"tareq":[357,0,0.5105],"terrez":[193,0,0.4571],"tesfa":[38,0,0.0],"tho":[46,6,0.0],"torreon":[50,0,0.0],"travious":[325,0,0.5024],"trawn":[6,0,0.0],"turrell":[82,0,0.0],"tyriek":[703,0,0.5694],"viliami":[543,0,0.547],"vong":[124,0,0.4187],"yaseen":[3122,0,0.6989],"yohan":[1707,0,0.6464],"zaccheus":[481,0,0.5364],"zachrey":[219,0,0.4681],"zakaria":[2769,466,0.6009],"abdo":[88,0,0.0],"abriel":[617,648,0.3178],"adonnis":[688,0,0.5675],"adryan":[1387,189,0.5628],"ajai":[267,182,0.3154],"akhenaton":[10,0,0.0],"alexios":[296,0,0.4943],"almonza":[5,0,0.0],"alquan":[150,0,0.4352],"andreaus":[39,0,0.0],"arpan":[253,5,0.473],"ashvin":[180,0,0.4511],"audel":[233,0,0.4735],"benitez":[10,0,0.0],"bow":[247,5,0.4708],"brandun":[99,0,0.0],"branoon":[11,0,0.0],"brenn":[76,78,0.2216],"brok":[272,0,0.4869],"cavell":[34,0,0.0],"centwane":[5,0,0.0],"cervando":[105,0,0.4042],"chinh":[14,0,0.0],"christopherjohn":[123,0,0.418],"chrostopher":[22,0,0.0],"croy":[99,0,0.0],"cullan":[329,0,0.5034],"darshaun":[37,0,0.0],"davison":[326,0,0.5026],"decedric":[16,0,0.0],"dejay":[137,0,0.4273],"dejuane":[26,0,0.0],"demedrick":[5,0,0.0],"demetrics":[23,0,0.0],"dijuan":[66,0,0.0],"dilan":[5723,104,0.7396],"dmarco":[470,0,0.5344],"dnaiel":[48,0,0.0],"dontrail":[141,0,0.4298],"dontrel":[258,0,0.4823],"doua":[39,28,0.0],"druce":[5,0,0.0],"du":[27,0,0.0],"dyshawn":[296,0,0.4943],"ebaristo":[5,0,0.0],"eljin":[15,0,0.0],"emmauel":[60,0,0.0],"estrada":[5,0,0.0],"evens":[239,0,0.4757],"farshid":[5,0,0.0],"garian":[16,0,0.0],"geran":[77,0,0.0],"gianpiero":[28,0,0.0],"gurpreet":[311,172,0.3456],"haytham":[330,0,0.5037],"izeal":[5,0,0.0],"jaason":[22,0,0.0],"jabbaar":[5,0,0.0],"jacorey":[2213,0,0.669],"jahara":[5,257,0.4744],"jahmil":[275,0,0.4879],"jalan":[901,70,0.5544],"jamai":[234,27,0.4333],"janthony":[162,0,0.4419],"jaquin":[197,5,0.4497],"jare":[38,0,0.0],"jariah":[298,1340,0.5259],"javonn":[275,0,0.4879],"jemale":[24,0,0.0],"jemond":[5,0,0.0],"jeremyah":[968,0,0.5972],"jerjuan":[17,0,0.0],"jermarcus":[375,0,0.5148],"jobin":[93,0,0.0],"johnnathon":[10,0,0.0],"johnrichard":[18,0,0.0],"johnryan":[121,0,0.4166],"jonmarc":[75,0,0.0],"jonpierre":[10,0,0.0],"jorin":[50,0,0.0],"jorome":[5,0,0.0],"joshewa":[10,0,0.0],"joshuea":[16,0,0.0],"juanluis":[396,0,0.5195],"justian":[45,0,0.0],"kaleef":[26,0,0.0],"kamon":[329,0,0.5034],"kapena":[79,0,0.0],"kapil":[134,0,0.4254],"keandre":[3042,9,0.6948],"kedrian":[15,0,0.0],"keelon":[99,0,0.0],"keemon":[5,0,0.0],"kelvon":[320,0,0.501],"kelvyn":[267,0,0.4853],"kewon":[264,0,0.4843],"khuong":[40,0,0.0],"kiriakos":[10,0,0.0],"kison":[63,0,0.0],"labrandon":[224,0,0.47],"ladarien":[121,0,0.4166],"lajarvis":[96,0,0.0],"lakendric":[31,0,0.0],"lamarius":[199,0,0.4598],"lamine":[293,0,0.4934],"landan":[2365,5,0.6735],"laquon":[108,0,0.4067],"laronzo":[10,0,0.0],"latarius":[38,0,0.0],"laterrell":[5,0,0.0],"latony":[11,0,0.0],"leeshawn":[44,0,0.0],"leng":[324,5,0.4958],"mahmud":[239,0,0.4757],"manh":[10,0,0.0],"marguise":[42,0,0.0],"markice":[120,0,0.4158],"martavis":[311,0,0.4986],"matheau":[67,0,0.0],"maulin":[5,0,0.0],"mohsin":[469,0,0.5342],"montavius":[366,0,0.5127],"naoki":[322,15,0.483],"nefi":[173,0,0.4476],"nghi":[5,22,0.0],"nichaolas":[5,0,0.0],"nicholad":[51,0,0.0],"ocasio":[5,0,0.0],"ociel":[482,0,0.5366],"oladimeji":[33,0,0.0],"oshay":[400,39,0.4815],"ouinton":[5,0,0.0],"pawel":[449,0,0.5304],"poncho":[5,0,0.0],"premal":[10,0,0.0],"quantel":[76,0,0.0],"quintan":[310,0,0.4983],"quwan":[10,0,0.0],"quy":[111,0,0.4091],"rahil":[537,161,0.4376],"reshaun":[135,0,0.4261],"rhandy":[30,0,0.0],"ripal":[5,0,0.0],"ronreco":[5,0,0.0],"rosh":[5,0,0.0],"roshaud":[16,0,0.0],"sapan":[24,0,0.0],"satyam":[37,0,0.0],"shamond":[172,0,0.4471],"shamsuddin":[10,0,0.0],"shaundale":[5,0,0.0],"sheraton":[5,0,0.0],"shernard":[12,0,0.0],"shoua":[83,282,0.3959],"sujay":[270,0,0.4863],"syid":[5,0,0.0],"taavon":[17,0,0.0],"talat":[5,0,0.0],"tapan":[11,0,0.0],"tarak":[115,0,0.4121],"tejay":[168,0,0.4451],"teman":[5,0,0.0],"terrion":[1653,111,0.6084],"tiege":[5,0,0.0],"ton":[27,0,0.0],"tramane":[67,0,0.0],"tremane":[73,0,0.0],"trestan":[129,0,0.4221],"trimaine":[64,0,0.0],"tuson":[5,0,0.0],"twon":[5,0,0.0],"tylar":[1626,1346,0.38],"tyric":[423,0,0.5253],"vikrant":[232,0,0.4731],"vue":[109,0,0.4075],"westen":[1745,0,0.6484],"westlee":[188,0,0.4548],"willison":[5,0,0.0],"yari":[57,542,0.5026],"yohei":[35,0,0.0],"zackaria":[377,0,0.5153],"zackry":[374,0,0.5146],"zhivago":[5,0,0.0],"toccara":[14,966,0.5897],"nastassia":[0,946,0.5952],"falon":[83,1975,0.636],"yalitza":[0,1035,0.603],"kaleena":[0,2102,0.6645],"natassia":[0,694,0.5683],"yuliana":[0,6534,0.763],"shiona":[0,24,0.0],"dynasty":[10,2344,0.6715],"jadyn":[3651,11824,0.6402],"laiza":[0,364,0.5122],"shambrica":[0,28,0.0],"tijwana":[0,18,0.0],"taccara":[0,129,0.4221],"fallyn":[0,1543,0.6377],"sheenah":[0,86,0.0],"yoshida":[0,27,0.0],"atyia":[0,15,0.0],"avita":[0,55,0.0],"chardon":[0,20,0.0],"tocarra":[0,226,0.4708],"ayofemi":[0,14,0.0],"crysten":[0,154,0.4375],"irais":[0,622,0.5588],"nydra":[0,14,0.0],"adri":[33,259,0.4374],"kaelin":[920,2732,0.533],"aleigha":[0,4810,0.7364],"lavasia":[0,37,0.0],"shoneen":[0,12,0.0],"tacara":[0,546,0.5474],"falan":[0,137,0.4273],"hiba":[0,2044,0.6621],"kiira":[0,123,0.418],"shyanna":[0,1725,0.6474],"sokha":[27,55,0.0],"teairra":[0,745,0.5744],"aleaha":[0,849,0.5858],"articia":[0,20,0.0],"deepti":[0,155,0.4381],"falyn":[0,1109,0.609],"jineane":[0,17,0.0],"karishma":[0,1054,0.6046],"kiarra":[0,3814,0.7163],"krystale":[0,170,0.4461],"lakaii":[0,16,0.0],"lelsie":[0,22,0.0],"mey":[0,39,0.0],"naomy":[0,1819,0.652],"reneisha":[0,236,0.4746],"reynelda":[0,29,0.0],"amneris":[0,35,0.0],"asley":[0,611,0.5572],"astin":[441,157,0.4095],"courney":[0,69,0.0],"falen":[0,192,0.4567],"falynn":[0,710,0.5703],"jermika":[0,83,0.0],"jovanne":[64,29,0.0],"katlin":[126,5335,0.7302],"meuy":[0,43,0.0],"natiya":[0,141,0.4298],"nekedra":[0,15,0.0],"nura":[0,855,0.5864],"rehab":[0,25,0.0],"rhema":[20,1155,0.6036],"ronnesha":[0,259,0.4827],"sarahi":[0,7915,0.7797],"tshwanda":[0,9,0.0],"yakira":[0,964,0.5968],"yury":[17,190,0.4252],"alexzandria":[0,1738,0.648],"brandiss":[0,15,0.0],"brittini":[0,747,0.5747],"carmesa":[0,8,0.0],"devany":[0,1067,0.6056],"diara":[0,773,0.5776],"ekaterina":[0,982,0.5984],"fallan":[0,142,0.4305],"imee":[0,8,0.0],"jury":[6,123,0.4025],"kamiko":[0,102,0.4017],"karlina":[0,323,0.5018],"khyla":[0,1042,0.6036],"kiyonna":[0,256,0.4816],"krishawna":[0,72,0.0],"lahela":[0,230,0.4723],"lamya":[0,2032,0.6616],"laqueshia":[0,141,0.4298],"latoyah":[0,43,0.0],"lynsee":[0,131,0.4235],"munira":[0,699,0.5689],"nahema":[0,8,0.0],"nikolette":[0,518,0.5429],"phaidra":[0,8,0.0],"phallon":[0,132,0.4241],"rhandi":[0,135,0.4261],"romesha":[0,79,0.0],"shakeyla":[0,189,0.4553],"shalay":[0,112,0.4098],"shavetta":[0,30,0.0],"shawntavia":[0,190,0.4558],"shimere":[0,43,0.0],"tacarra":[0,343,0.5071],"tachaka":[0,8,0.0],"tieara":[0,229,0.472],"toccaro":[0,15,0.0],"tylesha":[0,210,0.4644],"yira":[0,13,0.0],"abbigale":[0,2181,0.6677],"aftan":[0,109,0.4075],"ambor":[0,23,0.0],"amea":[0,184,0.453],"andraea":[0,36,0.0],"antwonette":[0,114,0.4114],"ativa":[0,7,0.0],"banesa":[0,514,0.5422],"basiliki":[0,7,0.0],"bilma":[0,45,0.0],"brekke":[0,7,0.0],"bricia":[0,262,0.4837],"brittony":[0,213,0.4657],"charnika":[0,62,0.0],"cherline":[0,12,0.0],"darica":[0,64,0.0],"darlisha":[0,82,0.0],"der":[0,190,0.4558],"derrisha":[0,64,0.0],"fame":[5,7,0.0],"faryn":[0,438,0.5283],"hajar":[0,719,0.5713],"hebah":[0,167,0.4445],"ifeyinwa":[0,7,0.0],"ireka":[0,7,0.0],"jakeia":[0,99,0.0],"jamiyla":[0,97,0.0],"janeese":[0,89,0.0],"jemina":[0,111,0.4091],"jenisa":[0,159,0.4403],"journey":[1929,20095,0.7925],"kahlila":[0,52,0.0],"kania":[0,613,0.5575],"katiya":[0,157,0.4392],"kelila":[0,38,0.0],"kenneshia":[0,71,0.0],"khalika":[0,7,0.0],"krishonda":[0,28,0.0],"lacara":[0,62,0.0],"lajoya":[0,91,0.0],"maly":[0,209,0.464],"mckensie":[0,768,0.5771],"menucha":[0,612,0.5574],"naira":[0,844,0.5853],"niyah":[0,2949,0.6939],"randilee":[0,31,0.0],"rayana":[0,1144,0.6117],"sandrika":[0,50,0.0],"shacara":[0,333,0.5045],"shanoah":[0,103,0.4026],"shanteka":[0,36,0.0],"shawndreka":[0,19,0.0],"shekeena":[0,7,0.0],"shelbey":[0,896,0.5905],"shontrice":[0,22,0.0],"shyloh":[205,637,0.4426],"sindhu":[0,189,0.4553],"soleil":[30,4767,0.7316],"tacora":[0,173,0.4476],"taniah":[0,902,0.591],"tashala":[0,77,0.0],"teirra":[0,389,0.518],"teniya":[0,231,0.4727],"tiane":[0,71,0.0],"tierny":[0,30,0.0],"tiffanyann":[0,91,0.0],"xai":[154,20,0.3966],"xanthia":[0,37,0.0],"xue":[110,29,0.3392],"zayra":[0,1644,0.6432],"aaisha":[0,256,0.4816],"abbra":[0,36,0.0],"adalis":[0,227,0.4712],"aerial":[6,1994,0.6582],"aften":[0,102,0.4017],"aimara":[0,49,0.0],"alaena":[0,287,0.4916],"alexiss":[20,528,0.5278],"amandalyn":[0,57,0.0],"ambree":[0,492,0.5384],"ameia":[0,231,0.4727],"andrianne":[0,33,0.0],"antenette":[0,6,0.0],"antoya":[0,35,0.0],"aolani":[0,902,0.591],"ashea":[0,69,0.0],"aviana":[0,8560,0.7865],"benica":[0,6,0.0],"bita":[0,109,0.4075],"blanka":[0,73,0.0],"bobbisue":[0,11,0.0],"calah":[0,537,0.546],"calyn":[86,727,0.5205],"carlisia":[0,61,0.0],"cassidee":[0,777,0.5781],"castina":[0,6,0.0],"cawanna":[0,6,0.0],"caylin":[87,2463,0.6581],"cesia":[0,1420,0.6305],"chandal":[0,40,0.0],"charia":[0,35,0.0],"cherena":[0,18,0.0],"chevala":[0,6,0.0],"chiann":[0,125,0.4194],"chontae":[0,17,0.0],"christiene":[0,6,0.0],"chrysten":[0,62,0.0],"cianna":[0,2918,0.693],"cie":[0,11,0.0],"cimone":[0,202,0.4611],"cornisha":[0,227,0.4712],"danet":[0,11,0.0],"dannisha":[0,64,0.0],"darisha":[0,52,0.0],"dyesha":[0,104,0.4034],"elexa":[0,606,0.5565],"emisha":[0,6,0.0],"etasha":[0,6,0.0],"faizah":[0,335,0.505],"hlee":[0,96,0.0],"houa":[79,181,0.3362],"irisa":[0,186,0.4539],"ivania":[0,638,0.561],"jacquella":[0,34,0.0],"janisa":[0,350,0.5088],"jasman":[46,259,0.4219],"jaspreet":[252,385,0.339],"javone":[425,11,0.5146],"jenissa":[0,193,0.4571],"jerusalem":[133,319,0.3748],"jesseka":[0,170,0.4461],"jessicalynn":[0,126,0.4201],"jora":[11,123,0.3905],"josy":[0,83,0.0],"joua":[0,65,0.0],"jylian":[0,103,0.4026],"kadedra":[0,286,0.4913],"kailin":[189,1206,0.5437],"kailyn":[132,14098,0.8229],"katari":[16,6,0.0],"kathyria":[0,21,0.0],"katianne":[0,104,0.4034],"katima":[0,14,0.0],"keaundra":[0,230,0.4723],"keyanda":[0,27,0.0],"keyondra":[0,378,0.5155],"kiele":[0,508,0.5412],"kiondra":[0,136,0.4267],"kourtnee":[0,697,0.5686],"kristne":[0,11,0.0],"kruti":[0,109,0.4075],"krystan":[0,397,0.5198],"ladia":[0,11,0.0],"lanicka":[0,6,0.0],"lashai":[0,210,0.4644],"lashaya":[0,273,0.4872],"lathasha":[0,6,0.0],"lenzi":[0,122,0.4173],"lidya":[0,400,0.5204],"lirio":[0,125,0.4194],"lynesha":[0,89,0.0],"markieta":[0,33,0.0],"marlem":[0,36,0.0],"meissa":[0,13,0.0],"michaelena":[0,6,0.0],"mily":[0,482,0.5366],"miyah":[0,3509,0.709],"morghan":[5,1296,0.6205],"mykisha":[0,24,0.0],"nadiah":[0,521,0.5434],"naiya":[0,1595,0.6406],"nakecia":[0,23,0.0],"nalina":[0,153,0.4369],"nateka":[0,6,0.0],"neferteria":[0,6,0.0],"nishia":[0,11,0.0],"nitara":[0,314,0.4994],"nkechinyere":[0,41,0.0],"orenda":[0,30,0.0],"philece":[0,6,0.0],"pleasure":[0,11,0.0],"porcher":[0,11,0.0],"quiyana":[0,23,0.0],"quwanna":[0,6,0.0],"rachelann":[0,146,0.4329],"ramya":[0,1194,0.6154],"randilynn":[0,41,0.0],"rickita":[0,121,0.4166],"ricole":[0,37,0.0],"romita":[0,6,0.0],"roselena":[0,100,0.4],"samiah":[0,1546,0.6378],"samtha":[0,6,0.0],"samya":[0,2826,0.6902],"saquita":[0,35,0.0],"seka":[0,6,0.0],"sendi":[0,41,0.0],"sequena":[0,29,0.0],"setareh":[0,232,0.4731],"shakyra":[0,1136,0.6111],"shameia":[0,36,0.0],"shamesha":[0,30,0.0],"shavonta":[10,141,0.4069],"shawndria":[0,6,0.0],"shemiah":[0,160,0.4408],"sheona":[0,28,0.0],"shequitta":[0,15,0.0],"shua":[36,11,0.0],"shyna":[0,118,0.4144],"solimar":[0,466,0.5337],"syndy":[0,11,0.0],"tarneshia":[0,21,0.0],"tashenna":[0,27,0.0],"taurean":[2250,45,0.659],"tekeyla":[0,21,0.0],"tenae":[0,136,0.4267],"tierria":[0,78,0.0],"tishina":[0,68,0.0],"toccarra":[0,60,0.0],"toccora":[0,32,0.0],"vesenia":[0,40,0.0],"yanin":[0,129,0.4221],"yashia":[0,16,0.0],"yudelca":[0,6,0.0],"zoua":[0,142,0.4305],"abegail":[0,515,0.5424],"abrah":[0,41,0.0],"abranda":[0,5,0.0],"adero":[0,5,0.0],"adjoa":[0,98,0.0],"adrieanna":[0,363,0.512],"aftin":[0,61,0.0],"ahlea":[0,32,0.0],"akevia":[0,25,0.0],"aleishia":[0,10,0.0],"aliea":[0,129,0.4221],"allysun":[0,29,0.0],"alympia":[0,5,0.0],"amany":[0,196,0.4585],"amberli":[0,85,0.0],"anasha":[0,115,0.4121],"andrica":[0,33,0.0],"angelmarie":[0,241,0.4764],"arathi":[0,10,0.0],"areej":[0,597,0.5552],"arial":[0,1189,0.615],"aristea":[0,81,0.0],"arkeisha":[0,26,0.0],"arleny":[0,314,0.4994],"ashwini":[0,149,0.4346],"auri":[51,890,0.5625],"ayeasha":[0,5,0.0],"bethan":[0,89,0.0],"bhavna":[0,37,0.0],"bosede":[0,5,0.0],"brandel":[52,18,0.0],"briauna":[0,1345,0.6257],"bridge":[129,5,0.4095],"brisha":[0,120,0.4158],"britaney":[0,261,0.4833],"brittnye":[0,97,0.0],"brooklynne":[0,1995,0.66],"caesare":[42,10,0.0],"cambri":[0,915,0.5923],"cameika":[0,5,0.0],"camill":[0,26,0.0],"candess":[0,19,0.0],"candias":[0,23,0.0],"carrera":[0,236,0.4746],"cassidie":[0,464,0.5333],"chakela":[0,5,0.0],"chakera":[0,25,0.0],"chariese":[0,5,0.0],"chatia":[0,19,0.0],"chenoah":[0,69,0.0],"cherette":[0,15,0.0],"chianne":[0,362,0.5117],"chiyoka":[0,5,0.0],"cholena":[0,5,0.0],"chrisna":[6,10,0.0],"corren":[5,25,0.0],"corrida":[0,11,0.0],"cowana":[0,5,0.0],"cristinia":[0,10,0.0],"crystalgayle":[0,5,0.0],"crystallynn":[0,66,0.0],"cyrina":[0,47,0.0],"cyrita":[0,5,0.0],"daesha":[0,674,0.5657],"dallana":[0,477,0.5357],"delanee":[0,395,0.5193],"deliza":[0,41,0.0],"deshante":[19,68,0.0],"destenee":[0,105,0.4042],"detoya":[0,11,0.0],"diep":[6,21,0.0],"doniell":[0,5,0.0],"dristen":[44,5,0.0],"drystal":[0,24,0.0],"edita":[0,77,0.0],"ellicia":[0,101,0.4009],"emileigh":[0,1378,0.6278],"enisha":[0,40,0.0],"evany":[0,702,0.5693],"falin":[0,48,0.0],"fallen":[0,64,0.0],"farina":[0,21,0.0],"fateema":[0,25,0.0],"female":[5,1292,0.6202],"gaelle":[0,480,0.5362],"hafsa":[0,2445,0.6777],"hanadi":[0,130,0.4228],"harmoney":[0,598,0.5553],"hearther":[0,10,0.0],"heleana":[0,20,0.0],"hermilinda":[0,5,0.0],"hristine":[0,16,0.0],"iaisha":[0,31,0.0],"ihuoma":[0,5,0.0],"ikeda":[0,5,0.0],"indrani":[0,16,0.0],"inesha":[0,112,0.4098],"jadah":[0,1876,0.6546],"jaide":[0,1658,0.6439],"jalynne":[0,280,0.4894],"jametra":[0,22,0.0],"janetha":[0,5,0.0],"janiqua":[0,361,0.5115],"jasie":[0,225,0.4704],"jaylee":[129,8298,0.7731],"jazlyn":[0,16922,0.8457],"jenal":[0,12,0.0],"jenele":[0,5,0.0],"jeryn":[138,61,0.3188],"jesselynn":[0,40,0.0],"jessicalee":[0,40,0.0],"jessicamarie":[0,156,0.4386],"jhoana":[0,615,0.5578],"jimica":[0,5,0.0],"jimika":[0,22,0.0],"jimmica":[0,5,0.0],"jodana":[0,5,0.0],"jodanna":[0,11,0.0],"jordin":[2466,4402,0.4918],"josianne":[0,34,0.0],"jyllian":[0,244,0.4775],"kaina":[0,243,0.4771],"kandle":[0,5,0.0],"kanitha":[0,30,0.0],"kanoe":[0,91,0.0],"kartrina":[0,5,0.0],"kashara":[0,182,0.452],"kashaunda":[0,5,0.0],"kasidy":[0,612,0.5574],"katarra":[0,10,0.0],"kataya":[0,112,0.4098],"katiann":[0,27,0.0],"kayona":[0,310,0.4983],"keadra":[0,10,0.0],"kelyn":[329,428,0.3256],"kerstyn":[0,426,0.5259],"kharissa":[0,63,0.0],"kiayana":[0,16,0.0],"kieana":[0,145,0.4323],"kieona":[0,50,0.0],"kinder":[0,10,0.0],"kineshia":[0,10,0.0],"kizuwanda":[0,5,0.0],"kolina":[0,64,0.0],"kristiina":[0,10,0.0],"kristil":[0,10,0.0],"kyrstal":[0,128,0.4214],"lailah":[0,6767,0.7661],"laisa":[0,232,0.4731],"lakitia":[0,5,0.0],"laniqua":[0,87,0.0],"laprecious":[0,208,0.4636],"larah":[0,222,0.4693],"larosha":[0,5,0.0],"larrisha":[0,104,0.4034],"lastasha":[0,11,0.0],"latedra":[0,31,0.0],"lateika":[0,5,0.0],"latorrie":[0,10,0.0],"latoye":[0,11,0.0],"latoyer":[0,10,0.0],"latreena":[0,5,0.0],"leanndra":[0,138,0.428],"leha":[0,54,0.0],"lensey":[0,35,0.0],"leshanta":[0,5,0.0],"lettia":[0,5,0.0],"liezel":[0,53,0.0],"lilyana":[0,9629,0.7967],"lindita":[0,40,0.0],"lindzey":[0,264,0.4843],"linsie":[0,123,0.418],"lisseth":[0,696,0.5685],"lizelle":[0,51,0.0],"macaela":[0,325,0.5024],"macee":[0,1863,0.654],"mackinzie":[15,824,0.5743],"magdala":[0,70,0.0],"malie":[0,381,0.5162],"manjit":[0,10,0.0],"margan":[0,92,0.0],"mariadelaluz":[0,144,0.4317],"mariadelrosario":[0,16,0.0],"marleni":[0,692,0.568],"marqueshia":[0,52,0.0],"marquettia":[0,5,0.0],"marshanna":[0,24,0.0],"matesha":[0,11,0.0],"matoya":[0,31,0.0],"maurika":[0,10,0.0],"maytal":[0,198,0.4593],"mekeia":[0,5,0.0],"melishia":[0,5,0.0],"mellssa":[0,5,0.0],"merrin":[0,251,0.4799],"meryn":[0,250,0.4796],"mirabai":[0,16,0.0],"mirsa":[0,35,0.0],"morgin":[0,127,0.4208],"mylena":[0,225,0.4704],"mystery":[0,257,0.482],"naa":[0,46,0.0],"nafisah":[0,126,0.4201],"nalee":[0,76,0.0],"nalisha":[0,25,0.0],"naly":[0,68,0.0],"nasrin":[0,100,0.4],"natahsa":[0,52,0.0],"nataska":[0,5,0.0],"natoyia":[0,22,0.0],"ndrea":[0,10,0.0],"nealey":[0,15,0.0],"neana":[0,5,0.0],"neeti":[0,84,0.0],"neicha":[0,5,0.0],"nephateria":[0,21,0.0],"nicoleta":[0,45,0.0],"niquisha":[0,5,0.0],"nithya":[0,797,0.5803],"norissa":[0,57,0.0],"nour":[576,2738,0.5817],"nykeia":[0,17,0.0],"nyna":[0,184,0.453],"nytasha":[0,34,0.0],"odila":[0,5,0.0],"oluwakemi":[0,243,0.4771],"phan":[20,15,0.0],"phonesavanh":[0,5,0.0],"quashonda":[0,21,0.0],"raewyn":[0,24,0.0],"rakeya":[0,65,0.0],"ramesha":[0,74,0.0],"ramina":[0,76,0.0],"raylena":[0,39,0.0],"reanda":[0,5,0.0],"reshia":[0,5,0.0],"rhonisha":[0,17,0.0],"rickeya":[0,100,0.4],"riquel":[0,25,0.0],"roseangela":[0,5,0.0],"roshina":[0,5,0.0],"ryoko":[0,20,0.0],"sajdah":[0,29,0.0],"samata":[0,5,0.0],"sammatha":[0,54,0.0],"sandreka":[0,5,0.0],"saphia":[0,108,0.4067],"selin":[0,1004,0.6003],"seren":[47,976,0.5743],"shadeen":[0,5,0.0],"shadona":[0,5,0.0],"shainna":[0,137,0.4273],"shakiea":[0,21,0.0],"shakiera":[0,379,0.5157],"shalica":[0,5,0.0],"shamada":[0,5,0.0],"shamecia":[0,16,0.0],"shanera":[0,119,0.4151],"shaneva":[0,18,0.0],"shanira":[0,140,0.4292],"shanka":[0,10,0.0],"shaquandra":[0,169,0.4456],"share":[0,22,0.0],"sharrah":[0,21,0.0],"shaterra":[0,291,0.4928],"shatesha":[0,11,0.0],"shatondra":[0,11,0.0],"shaundel":[0,5,0.0],"shaylan":[60,328,0.4377],"sheara":[0,10,0.0],"sheereen":[0,11,0.0],"shenkia":[0,10,0.0],"shibani":[0,15,0.0],"shirret":[0,5,0.0],"shovon":[0,5,0.0],"shreeta":[0,10,0.0],"shuntina":[0,5,0.0],"shymeka":[0,16,0.0],"siu":[5,13,0.0],"skylene":[0,110,0.4083],"smyrna":[0,5,0.0],"sopheap":[46,80,0.2667],"sophilia":[0,5,0.0],"stephanieann":[0,95,0.0],"tahesia":[0,5,0.0],"tahnesha":[0,5,0.0],"takiea":[0,11,0.0],"taleia":[0,212,0.4653],"taliba":[0,5,0.0],"tannaz":[0,36,0.0],"taranika":[0,21,0.0],"tashekia":[0,22,0.0],"taylore":[0,678,0.5662],"tenasha":[0,24,0.0],"tenequa":[0,34,0.0],"tericka":[0,151,0.4358],"teshena":[0,5,0.0],"teyonna":[0,462,0.5329],"thandiwe":[0,100,0.4],"thomesa":[0,5,0.0],"thuthuy":[0,5,0.0],"tiearra":[0,150,0.4352],"tiquila":[0,5,0.0],"tokunbo":[10,5,0.0],"toniesha":[0,147,0.4335],"torita":[0,5,0.0],"vallon":[43,22,0.0],"verenise":[0,292,0.4931],"viesha":[0,5,0.0],"vimala":[0,5,0.0],"vironica":[0,5,0.0],"wilmary":[0,119,0.4151],"xia":[0,778,0.5782],"xong":[5,16,0.0],"yahaida":[0,5,0.0],"yaneli":[0,3722,0.7142],"yanessa":[0,405,0.5215],"yehudit":[0,143,0.4311],"yesika":[0,98,0.0],"yosheka":[0,5,0.0],"yudith":[0,481,0.5364],"yuriana":[0,547,0.5476],"zeynep":[0,1363,0.6269],"argenis":[1000,0,0.6],"argelis":[36,5,0.0],"blong":[255,0,0.4813],"mikkos":[21,0,0.0],"andron":[65,0,0.0],"peng":[227,0,0.4712],"jaycob":[4437,0,0.7294],"magnum":[272,0,0.4869],"garan":[107,0,0.4059],"shavar":[380,0,0.516],"tynan":[725,0,0.5721],"marcin":[467,0,0.5339],"mikos":[29,0,0.0],"rhamel":[26,0,0.0],"tiemeyer":[15,0,0.0],"cainan":[992,0,0.5993],"devoris":[41,0,0.0],"johnatan":[687,0,0.5674],"mohsen":[283,0,0.4904],"scorpio":[72,0,0.0],"yang":[291,47,0.4355],"yannick":[1054,0,0.6046],"akshay":[1793,0,0.6507],"brandom":[301,0,0.4957],"braylon":[18497,158,0.8469],"cetric":[8,0,0.0],"cristhian":[1347,0,0.6259],"davelle":[95,5,0.38],"dharmesh":[8,0,0.0],"diontae":[706,0,0.5698],"erikson":[357,0,0.5105],"joshual":[146,0,0.4329],"jossue":[682,0,0.5668],"kylen":[4531,597,0.6556],"loucas":[23,0,0.0],"moua":[167,0,0.4445],"mustapha":[638,0,0.561],"nghia":[211,5,0.4561],"nhia":[213,32,0.4154],"roynell":[20,0,0.0],"skylor":[1058,436,0.4496],"viral":[64,0,0.0],"adarius":[1304,0,0.6231],"ahsan":[858,0,0.5867],"algenis":[65,0,0.0],"arry":[7,0,0.0],"artrell":[163,0,0.4424],"atonio":[13,0,0.0],"calob":[728,0,0.5724],"chidi":[212,0,0.4653],"demareo":[39,0,0.0],"depaul":[56,0,0.0],"giovany":[1594,0,0.6405],"giscard":[17,0,0.0],"husein":[88,0,0.0],"jaccob":[629,0,0.5597],"jameal":[224,0,0.47],"jamiah":[350,2438,0.6026],"johnpeter":[36,0,0.0],"jovar":[12,0,0.0],"kalub":[674,0,0.5657],"kapono":[205,0,0.4624],"kashan":[35,0,0.0],"kassem":[249,0,0.4792],"kaulana":[147,6,0.4198],"kervens":[265,0,0.4846],"khiem":[129,0,0.4221],"liem":[719,0,0.5713],"lukeus":[12,0,0.0],"nichalous":[52,0,0.0],"rodrique":[18,0,0.0],"som":[29,0,0.0],"torez":[90,0,0.0],"travarus":[77,0,0.0],"ahmod":[259,0,0.4827],"amed":[93,0,0.0],"andropolis":[6,0,0.0],"antavius":[227,0,0.4712],"armar":[6,0,0.0],"bader":[377,0,0.5153],"bimal":[6,0,0.0],"bora":[407,199,0.3738],"bracey":[29,20,0.0],"bronston":[11,0,0.0],"chou":[60,0,0.0],"clayvon":[63,0,0.0],"coire":[6,0,0.0],"crhistopher":[45,0,0.0],"cupid":[11,0,0.0],"denroy":[6,0,0.0],"deriek":[11,0,0.0],"dontavis":[359,0,0.511],"eagle":[95,0,0.0],"ebrahim":[589,0,0.554],"eion":[529,0,0.5447],"elad":[239,0,0.4757],"gardy":[74,0,0.0],"ge":[51,5,0.0],"grandon":[32,0,0.0],"harout":[325,0,0.5024],"imhotep":[43,0,0.0],"isamel":[6,0,0.0],"issiac":[105,0,0.4042],"jaired":[55,0,0.0],"jamespaul":[77,0,0.0],"jamonte":[767,0,0.577],"jarmarcus":[166,0,0.444],"jarris":[136,0,0.4267],"jasmon":[74,128,0.2922],"jerelle":[198,12,0.4379],"jermil":[12,0,0.0],"joathan":[31,0,0.0],"jonathn":[25,0,0.0],"joron":[74,0,0.0],"joshia":[172,0,0.4471],"jovanie":[367,11,0.5005],"jusin":[48,0,0.0],"kalik":[191,0,0.4562],"keeyon":[83,0,0.0],"keishawn":[767,63,0.5395],"kenshawn":[75,0,0.0],"kuan":[24,0,0.0],"kue":[81,0,0.0],"kule":[95,0,0.0],"laguan":[26,0,0.0],"lennin":[283,6,0.482],"macus":[16,0,0.0],"masada":[6,5,0.0],"metthew":[21,0,0.0],"monchello":[6,0,0.0],"nareg":[146,0,0.4329],"nashaun":[302,0,0.496],"nathanuel":[200,0,0.4602],"nichoas":[16,0,0.0],"phat":[124,0,0.4187],"rayanthony":[41,0,0.0],"raza":[372,0,0.5141],"rushawn":[98,0,0.0],"ryshawn":[74,0,0.0],"sabri":[188,38,0.3917],"sasan":[51,0,0.0],"skipp":[6,0,0.0],"sou":[113,0,0.4106],"tavin":[1865,23,0.6472],"tevon":[1057,0,0.6048],"tranis":[6,0,0.0],"tyreke":[1433,0,0.6312],"uzoma":[125,8,0.3992],"va":[56,0,0.0],"yogesh":[51,0,0.0],"abdull":[5,0,0.0],"abdullatif":[54,0,0.0],"abhishek":[758,0,0.5759],"adekunle":[82,0,0.0],"afsheen":[15,122,0.3806],"aldan":[194,0,0.4576],"alexandru":[600,0,0.5556],"alexus":[243,18620,0.8441],"alterik":[5,0,0.0],"amine":[455,23,0.5101],"aneudi":[16,0,0.0],"antaeus":[81,0,0.0],"antavis":[15,0,0.0],"anuar":[322,0,0.5016],"ared":[10,0,0.0],"arnaud":[15,0,0.0],"avshalom":[5,0,0.0],"bandon":[73,0,0.0],"barndon":[26,0,0.0],"bassil":[52,0,0.0],"bean":[5,0,0.0],"benjain":[10,0,0.0],"bodean":[15,0,0.0],"bong":[10,0,0.0],"bricen":[967,0,0.5971],"cache":[971,475,0.4244],"calixtro":[10,0,0.0],"chanz":[248,0,0.4789],"chat":[5,0,0.0],"chijioke":[123,0,0.418],"connery":[145,0,0.4323],"courey":[25,0,0.0],"danl":[5,0,0.0],"demarr":[105,0,0.4042],"demorian":[26,0,0.0],"demoris":[5,0,0.0],"deontra":[135,18,0.3855],"dernell":[10,0,0.0],"desmone":[41,6,0.0],"diamon":[25,507,0.5196],"donrico":[10,0,0.0],"dshawn":[634,0,0.5604],"earin":[5,0,0.0],"elchanan":[83,0,0.0],"equan":[164,0,0.443],"esaul":[143,0,0.4311],"ezekeil":[174,0,0.4481],"ferrante":[5,0,0.0],"gabirel":[25,0,0.0],"galon":[5,0,0.0],"gatlin":[4251,40,0.7197],"gemar":[5,0,0.0],"geremiah":[567,0,0.5507],"ghais":[5,0,0.0],"giang":[63,12,0.0],"giovannie":[704,6,0.5654],"girish":[34,0,0.0],"glenston":[5,0,0.0],"halston":[851,626,0.3652],"hamish":[350,0,0.5088],"haseeb":[512,0,0.5419],"helaman":[227,0,0.4712],"hemal":[31,0,0.0],"idan":[545,0,0.5473],"iliyaas":[5,0,0.0],"jacobey":[163,0,0.4424],"jacolby":[1542,15,0.6323],"jaffer":[46,0,0.0],"jakim":[186,0,0.4539],"jakub":[3030,0,0.6963],"jamez":[641,0,0.5614],"janaka":[5,0,0.0],"jarmall":[17,0,0.0],"jarmen":[5,0,0.0],"jarrott":[5,0,0.0],"jasmond":[81,43,0.2735],"jayro":[624,0,0.559],"jermany":[134,300,0.3646],"jeryme":[10,0,0.0],"jeson":[62,0,0.0],"jitesh":[10,0,0.0],"johnnylee":[15,0,0.0],"johntae":[332,7,0.4956],"jonan":[257,0,0.482],"jonatham":[26,0,0.0],"jontrell":[192,0,0.4567],"joshuia":[33,0,0.0],"jovante":[430,0,0.5267],"jupiter":[609,1015,0.4013],"kaushik":[239,0,0.4757],"keahi":[315,30,0.4634],"kellam":[30,0,0.0],"kenly":[98,532,0.4728],"keston":[813,0,0.582],"kevlin":[5,0,0.0],"khaliq":[745,0,0.5744],"khalis":[37,105,0.3183],"kham":[86,6,0.0],"kwok":[5,0,0.0],"labyron":[23,0,0.0],"lao":[32,0,0.0],"latravius":[29,0,0.0],"lazaros":[10,0,0.0],"lecory":[5,0,0.0],"leevan":[5,0,0.0],"leri":[11,0,0.0],"lukasz":[688,0,0.5675],"lyron":[5,0,0.0],"marcques":[80,0,0.0],"marselo":[10,0,0.0],"maurece":[5,0,0.0],"mayco":[235,0,0.4742],"mekos":[10,0,0.0],"mital":[5,16,0.0],"moez":[5,0,0.0],"mubarak":[546,0,0.5474],"naif":[162,0,0.4419],"naresh":[80,0,0.0],"nashua":[79,0,0.0],"natthew":[49,0,0.0],"nhat":[51,0,0.0],"nhut":[16,0,0.0],"nichloas":[43,0,0.0],"nicholaas":[20,0,0.0],"nichollas":[79,0,0.0],"nickholas":[94,0,0.0],"nur":[200,613,0.4388],"onur":[194,0,0.4576],"pardeep":[53,0,0.0],"paymon":[57,0,0.0],"pradeep":[63,0,0.0],"pravin":[63,0,0.0],"quasim":[138,0,0.428],"quinnel":[5,0,0.0],"raanan":[21,0,0.0],"rahshad":[23,0,0.0],"rakan":[855,0,0.5864],"rakim":[1308,0,0.6233],"ranjeet":[10,0,0.0],"regory":[16,0,0.0],"rochard":[5,0,0.0],"rodrigue":[39,0,0.0],"rondre":[40,0,0.0],"rosalino":[18,0,0.0],"rustyn":[294,0,0.4937],"ryley":[3826,3302,0.4136],"sadane":[5,0,0.0],"sadiq":[664,0,0.5644],"sahid":[405,0,0.5215],"sammer":[39,0,0.0],"santwan":[21,0,0.0],"seitu":[5,0,0.0],"seumas":[5,0,0.0],"shaddy":[5,0,0.0],"shahan":[305,0,0.4969],"shaker":[32,0,0.0],"sheamus":[535,0,0.5457],"sheraz":[44,0,0.0],"sigfrido":[5,0,0.0],"sinan":[418,5,0.5191],"spyridon":[113,0,0.4106],"stepan":[254,0,0.481],"sudeep":[58,0,0.0],"taino":[111,0,0.4091],"taquan":[1253,0,0.6196],"tareek":[92,0,0.0],"tarvarus":[20,0,0.0],"tashaun":[715,36,0.5476],"tasheem":[119,0,0.4151],"teremy":[5,0,0.0],"termain":[11,0,0.0],"terrain":[5,0,0.0],"terrod":[16,0,0.0],"thomasjohn":[21,0,0.0],"tramal":[5,0,0.0],"tremone":[28,0,0.0],"trevelle":[209,0,0.464],"trevyn":[826,0,0.5834],"triandos":[5,0,0.0],"trieu":[15,0,0.0],"tyrail":[138,0,0.428],"ugochukwu":[288,0,0.4919],"vagas":[5,0,0.0],"varun":[2583,0,0.6824],"victorhugo":[126,0,0.4201],"virak":[25,0,0.0],"wakeel":[5,0,0.0],"wakil":[10,0,0.0],"walik":[10,0,0.0],"wen":[87,70,0.2434],"westin":[7015,21,0.7672],"willington":[11,0,0.0],"wladimir":[11,0,0.0],"xeng":[137,0,0.4273],"yia":[32,0,0.0],"yiannis":[377,0,0.5153],"zakariah":[880,93,0.5405],"zimbabwe":[5,0,0.0],"tyechia":[0,156,0.4386],"luisana":[0,597,0.5552],"bilan":[0,119,0.4151],"tocara":[0,68,0.0],"arriel":[0,324,0.5021],"ivorie":[0,444,0.5295],"cieara":[0,528,0.5445],"dasia":[0,5374,0.7461],"katiejo":[0,73,0.0],"shakkia":[0,23,0.0],"aurielle":[0,1044,0.6037],"britanny":[0,817,0.5824],"cocoa":[0,34,0.0],"ebelina":[0,11,0.0],"guerline":[0,55,0.0],"kalenna":[0,64,0.0],"khala":[0,281,0.4897],"auren":[88,40,0.2897],"crystalin":[0,31,0.0],"maricris":[0,33,0.0],"ngan":[0,219,0.4681],"odyssey":[33,706,0.5481],"radiance":[0,298,0.4948],"sivan":[83,629,0.504],"terrisha":[0,129,0.4221],"tristyn":[2222,2202,0.3662],"vanny":[16,49,0.0],"adaeze":[0,581,0.5528],"amandalee":[0,122,0.4173],"ansonia":[0,14,0.0],"arieal":[0,418,0.5242],"ariell":[5,884,0.5865],"chaisty":[0,25,0.0],"chalee":[0,145,0.4323],"chatney":[0,26,0.0],"jensine":[0,333,0.5045],"latoni":[0,31,0.0],"lluliana":[0,26,0.0],"lynsy":[0,41,0.0],"maram":[0,881,0.589],"parveen":[0,33,0.0],"shaqueena":[0,197,0.4589],"zeinab":[0,1266,0.6205],"adrielle":[0,1146,0.6118],"akera":[5,253,0.473],"astrin":[0,8,0.0],"austyn":[5115,4769,0.4135],"bailee":[232,16012,0.8301],"bayley":[435,2188,0.5704],"briannon":[0,130,0.4228],"darielle":[0,974,0.5977],"emilyanne":[0,258,0.4823],"iffany":[0,31,0.0],"jenniferlee":[0,24,0.0],"jentri":[0,348,0.5083],"kaitlan":[0,1119,0.6098],"kamea":[10,1064,0.6006],"karinn":[0,8,0.0],"kazia":[0,331,0.504],"krystyl":[0,88,0.0],"leshawna":[0,8,0.0],"lexis":[44,3308,0.6958],"lynze":[0,148,0.4341],"makenna":[8,33235,0.9041],"orielle":[0,49,0.0],"phalen":[21,18,0.0],"ramisha":[0,36,0.0],"reshawnda":[0,19,0.0],"shiara":[0,88,0.0],"shikha":[0,278,0.4888],"shyreeta":[0,8,0.0],"sok":[28,8,0.0],"sra":[0,27,0.0],"suhad":[0,8,0.0],"thuong":[7,37,0.0],"xica":[0,8,0.0],"yusra":[0,2613,0.6834],"zaynab":[0,2364,0.6747],"amandra":[0,23,0.0],"ambera":[0,46,0.0],"anaka":[0,275,0.4879],"areal":[0,124,0.4187],"ashey":[0,113,0.4106],"asuka":[0,109,0.4075],"belon":[0,15,0.0],"bobbiesue":[0,26,0.0],"briah":[0,782,0.5786],"caleena":[0,66,0.0],"celisse":[0,113,0.4106],"chrishanda":[0,13,0.0],"danara":[0,44,0.0],"danelia":[0,120,0.4158],"delorean":[297,46,0.4391],"emiliana":[0,3337,0.7047],"esmirna":[0,64,0.0],"jameisha":[0,482,0.5366],"jamiemarie":[0,24,0.0],"jande":[0,7,0.0],"jaquata":[0,7,0.0],"jaylin":[10286,9086,0.4553],"julliana":[0,353,0.5096],"kailah":[0,2240,0.67],"kayleena":[0,406,0.5217],"kyomi":[0,812,0.5819],"laquatta":[0,7,0.0],"lashinda":[0,7,0.0],"latreice":[0,7,0.0],"liora":[0,1386,0.6284],"maran":[0,22,0.0],"mariade":[0,39,0.0],"mckell":[13,422,0.5119],"meili":[0,394,0.5191],"mirlande":[0,19,0.0],"monay":[0,526,0.5442],"nathaly":[0,7951,0.7801],"nejla":[0,156,0.4386],"nikiea":[0,7,0.0],"nixzaliz":[0,7,0.0],"nyomi":[0,3922,0.7187],"raeven":[0,790,0.5795],"raffinee":[0,38,0.0],"rashae":[0,231,0.4727],"renecia":[0,50,0.0],"rupinder":[0,37,0.0],"sarahmarie":[0,176,0.4491],"sareeta":[0,7,0.0],"satoria":[0,134,0.4254],"say":[30,62,0.0],"senchal":[0,7,0.0],"shakayla":[0,1733,0.6478],"shamikka":[0,18,0.0],"shatonna":[0,29,0.0],"shikera":[0,51,0.0],"shnika":[0,7,0.0],"shontavia":[0,261,0.4833],"sophea":[5,344,0.5013],"sotheary":[0,20,0.0],"taccarra":[0,14,0.0],"tamiesha":[0,17,0.0],"tayra":[0,122,0.4173],"tikara":[0,18,0.0],"tineisha":[0,26,0.0],"tolulope":[38,152,0.3646],"trunetta":[0,7,0.0],"tyrea":[13,88,0.3493],"vallen":[232,62,0.3896],"wilnelia":[0,7,0.0],"xavia":[11,739,0.5666],"yamilka":[0,84,0.0],"zakeya":[0,184,0.453],"zandrea":[0,208,0.4636],"zaria":[0,11001,0.8083],"zohra":[0,424,0.5255],"abbagail":[0,872,0.5881],"abbygail":[0,3614,0.7116],"aireal":[0,252,0.4803],"alicja":[0,391,0.5184],"aliecia":[0,39,0.0],"allisia":[0,44,0.0],"amily":[0,304,0.4966],"areeg":[0,11,0.0],"areil":[0,299,0.4951],"aschley":[0,29,0.0],"ashleah":[0,178,0.4501],"asti":[0,67,0.0],"asuzena":[0,85,0.0],"atika":[0,74,0.0],"atrina":[0,18,0.0],"bethanee":[0,188,0.4548],"bethanny":[0,239,0.4757],"bhavini":[0,23,0.0],"brandylynn":[0,6,0.0],"brendalis":[0,16,0.0],"briahna":[0,1162,0.613],"brittanni":[0,150,0.4352],"cailen":[244,197,0.2926],"candrice":[0,11,0.0],"cassadra":[0,6,0.0],"cassandrea":[0,23,0.0],"chanique":[0,74,0.0],"chavy":[0,602,0.5559],"chezarae":[9,6,0.0],"corrisa":[0,60,0.0],"crystalee":[0,65,0.0],"cynequa":[0,12,0.0],"damber":[0,38,0.0],"daquita":[0,51,0.0],"deasha":[0,316,0.4999],"deshara":[0,126,0.4201],"dessire":[0,92,0.0],"dristin":[33,12,0.0],"eileena":[0,41,0.0],"emilyann":[0,581,0.5528],"farran":[0,74,0.0],"fiffany":[0,6,0.0],"hollen":[5,42,0.0],"ilianna":[0,1138,0.6112],"irazema":[0,16,0.0],"isabela":[0,12269,0.8178],"jakeline":[0,591,0.5543],"jalayna":[0,321,0.5013],"jennalyn":[0,493,0.5386],"jerae":[6,61,0.0],"jeriesha":[0,34,0.0],"jilliam":[0,102,0.4017],"jillion":[0,22,0.0],"julya":[0,163,0.4424],"kaeli":[0,3086,0.6979],"kamilia":[0,306,0.4971],"karenda":[0,35,0.0],"karianna":[0,478,0.5359],"kashmir":[1222,542,0.4498],"katiana":[0,1016,0.6014],"kaylia":[0,786,0.5791],"kaylor":[488,749,0.3745],"keiara":[0,1548,0.638],"keneka":[0,6,0.0],"kenzi":[38,3159,0.6926],"keyara":[0,1780,0.6501],"keyauna":[0,217,0.4673],"kindsey":[0,82,0.0],"krystil":[0,41,0.0],"kyiesha":[0,146,0.4329],"ladeidra":[0,49,0.0],"laena":[0,120,0.4158],"laprincess":[0,27,0.0],"latrika":[0,6,0.0],"litia":[0,36,0.0],"lyndse":[0,36,0.0],"maelyn":[0,2306,0.6726],"mahriah":[0,11,0.0],"mansi":[0,459,0.5324],"mariadelosangel":[0,28,0.0],"marlanna":[0,16,0.0],"marycarmen":[0,365,0.5125],"menika":[0,11,0.0],"mersedes":[0,75,0.0],"monyca":[0,12,0.0],"nakira":[0,418,0.5242],"naquanda":[0,11,0.0],"narrissa":[0,6,0.0],"nastashia":[0,119,0.4151],"nicolemarie":[0,101,0.4009],"nikkeya":[0,16,0.0],"nkiruka":[0,27,0.0],"nychole":[0,12,0.0],"olyvia":[0,2620,0.6837],"oreal":[0,23,0.0],"pinar":[0,17,0.0],"pretty":[0,103,0.4026],"quatesha":[0,36,0.0],"rabab":[8,153,0.4194],"raynisha":[0,222,0.4693],"rebecaa":[0,6,0.0],"retisha":[0,6,0.0],"risten":[0,12,0.0],"rittany":[0,44,0.0],"rosezanna":[0,6,0.0],"samanthan":[0,113,0.4106],"saysha":[0,135,0.4261],"sekena":[0,6,0.0],"shaguanda":[0,6,0.0],"shahira":[0,72,0.0],"shakeba":[0,6,0.0],"shakenia":[0,32,0.0],"shakerah":[0,29,0.0],"shakeva":[0,47,0.0],"shalissa":[0,89,0.0],"shameekia":[0,6,0.0],"shamkia":[0,6,0.0],"shaniya":[0,6513,0.7628],"shanquita":[0,105,0.4042],"sharnise":[0,119,0.4151],"shayda":[0,312,0.4988],"shequetta":[0,17,0.0],"shiana":[0,370,0.5136],"shimara":[0,6,0.0],"simran":[134,2840,0.6634],"sophonie":[0,166,0.444],"sparkel":[0,6,0.0],"stafanie":[0,37,0.0],"sunset":[0,106,0.4051],"suze":[0,11,0.0],"tahani":[0,703,0.5694],"takena":[0,11,0.0],"taquanna":[0,63,0.0],"taquia":[0,29,0.0],"tarna":[0,29,0.0],"tashaunda":[0,19,0.0],"teisa":[0,17,0.0],"teleah":[0,142,0.4305],"teniesha":[0,49,0.0],"tenisa":[0,19,0.0],"thrisha":[0,18,0.0],"thuytrang":[0,24,0.0],"tippany":[0,6,0.0],"tiquita":[0,11,0.0],"tocarro":[0,6,0.0],"tonielle":[0,6,0.0],"toyin":[0,18,0.0],"trashawn":[429,29,0.4985],"tyshanta":[0,6,0.0],"uniqua":[0,488,0.5377],"venika":[0,6,0.0],"venishia":[0,6,0.0],"yakema":[0,6,0.0],"yasaman":[0,108,0.4067],"yissel":[0,375,0.5148],"zaina":[0,2952,0.694],"zeba":[0,118,0.4144],"zunilda":[0,6,0.0],"aapri":[0,5,0.0],"aaronda":[0,5,0.0],"aeriel":[0,774,0.5777],"aicia":[0,47,0.0],"airel":[0,277,0.4885],"airial":[0,20,0.0],"airin":[5,31,0.0],"akeria":[0,305,0.4969],"akeyla":[0,344,0.5073],"alexzandra":[0,1336,0.6252],"amaka":[0,107,0.4059],"amandajo":[0,69,0.0],"ambee":[0,5,0.0],"amberle":[0,310,0.4983],"amerah":[0,423,0.5253],"amylia":[0,399,0.5202],"anastassia":[0,355,0.51],"andea":[0,5,0.0],"andreah":[0,443,0.5293],"angelise":[0,849,0.5858],"aniesha":[0,121,0.4166],"anitrea":[0,5,0.0],"anneelizabeth":[0,15,0.0],"aquisha":[0,38,0.0],"arthi":[0,85,0.0],"asheena":[0,29,0.0],"ashira":[0,590,0.5542],"atavia":[0,230,0.4723],"ataya":[0,88,0.0],"atheana":[0,17,0.0],"beonca":[0,151,0.4358],"berenis":[0,161,0.4414],"besa":[0,17,0.0],"bethony":[0,18,0.0],"bionka":[0,55,0.0],"bopha":[0,45,0.0],"briea":[0,163,0.4424],"briley":[1321,6531,0.6479],"brittanee":[0,664,0.5644],"brittian":[84,26,0.3118],"brystal":[0,762,0.5764],"cacie":[0,80,0.0],"cagney":[105,186,0.315],"caline":[0,10,0.0],"camerina":[0,23,0.0],"candiece":[0,5,0.0],"carlea":[0,311,0.4986],"casia":[0,231,0.4727],"casonja":[0,5,0.0],"cassee":[0,45,0.0],"cerrisa":[0,5,0.0],"chaia":[0,60,0.0],"chalyn":[0,71,0.0],"chantily":[0,5,0.0],"charmae":[0,20,0.0],"chasney":[0,27,0.0],"chatherine":[0,26,0.0],"chaunci":[0,5,0.0],"chelesea":[0,66,0.0],"chenia":[0,10,0.0],"chutney":[0,13,0.0],"ciri":[0,65,0.0],"cludia":[0,5,0.0],"codee":[256,195,0.3013],"corisha":[0,23,0.0],"cotie":[17,18,0.0],"courntey":[0,44,0.0],"crystyl":[0,10,0.0],"danasha":[0,273,0.4872],"daniesha":[0,232,0.4731],"dannae":[0,210,0.4644],"darea":[0,5,0.0],"darienne":[0,358,0.5108],"daylyn":[263,248,0.2788],"deonka":[0,34,0.0],"deshonia":[0,5,0.0],"deyana":[0,308,0.4977],"deyla":[0,63,0.0],"disiree":[0,27,0.0],"donniece":[0,10,0.0],"duaa":[0,634,0.5604],"dynita":[0,5,0.0],"ebelin":[0,364,0.5122],"eddica":[0,5,0.0],"edeline":[0,244,0.4775],"elissha":[0,5,0.0],"emelita":[0,10,0.0],"emilyjo":[0,22,0.0],"endy":[526,15,0.5315],"enika":[0,11,0.0],"erinmarie":[0,15,0.0],"erisha":[0,80,0.0],"esra":[26,595,0.5352],"fallin":[0,15,0.0],"fanessa":[0,12,0.0],"fraidy":[0,1077,0.6064],"frika":[0,5,0.0],"fritha":[0,5,0.0],"genica":[0,15,0.0],"grabriela":[0,37,0.0],"heang":[0,10,0.0],"henya":[0,150,0.4352],"idalmis":[0,10,0.0],"jahmelia":[0,5,0.0],"jailyn":[768,5032,0.653],"jamera":[0,395,0.5193],"jamileh":[0,17,0.0],"jannina":[0,16,0.0],"jarae":[62,211,0.3766],"jasimine":[0,383,0.5166],"jasmene":[0,101,0.4009],"jassmine":[0,486,0.5373],"jazmen":[5,1074,0.6038],"jekia":[0,26,0.0],"jenelee":[0,5,0.0],"jenesis":[318,5405,0.7098],"jessianne":[0,10,0.0],"jessical":[0,34,0.0],"joleah":[0,171,0.4466],"jonea":[0,120,0.4158],"jonilee":[0,5,0.0],"jontay":[152,15,0.4046],"julinda":[0,5,0.0],"kaala":[0,43,0.0],"kachelle":[0,5,0.0],"kaelynn":[0,4972,0.7393],"kaitlynn":[5,16373,0.8426],"kalynda":[0,32,0.0],"kameia":[0,16,0.0],"kamerin":[474,221,0.3877],"kamillia":[0,66,0.0],"kanan":[1613,11,0.6378],"kanoi":[0,5,0.0],"kaomi":[0,205,0.4624],"kasy":[0,55,0.0],"katerra":[0,240,0.476],"kateryna":[0,158,0.4397],"kattrina":[0,23,0.0],"kearra":[0,769,0.5772],"keeana":[0,195,0.458],"keelia":[0,162,0.4419],"kendyll":[24,1542,0.6292],"khira":[0,304,0.4966],"kieanna":[0,189,0.4553],"klaire":[0,1758,0.649],"koko":[0,87,0.0],"krisit":[0,5,0.0],"kristijo":[0,5,0.0],"kristyle":[0,15,0.0],"lacasha":[0,5,0.0],"lache":[0,109,0.4075],"lacondra":[0,5,0.0],"lacorya":[0,5,0.0],"laesha":[0,34,0.0],"lakai":[515,45,0.5055],"lakeema":[0,35,0.0],"lakemia":[0,5,0.0],"lannetta":[0,5,0.0],"laquala":[0,10,0.0],"laqueen":[0,10,0.0],"laquoia":[0,10,0.0],"lashaye":[0,163,0.4424],"lashenna":[0,19,0.0],"latay":[0,17,0.0],"latiea":[0,5,0.0],"lavesha":[0,22,0.0],"lavickie":[0,5,0.0],"leahmarie":[0,168,0.4451],"leizel":[0,5,0.0],"lequesha":[0,10,0.0],"lieu":[0,12,0.0],"lindzee":[0,97,0.0],"linsdey":[0,19,0.0],"liselle":[0,33,0.0],"loryanna":[0,5,0.0],"lyndsae":[0,5,0.0],"maber":[0,11,0.0],"maeghen":[0,32,0.0],"mahagany":[0,24,0.0],"maisee":[0,151,0.4358],"makyla":[0,2393,0.6758],"maliha":[0,1400,0.6292],"manique":[0,16,0.0],"maryemma":[0,22,0.0],"mayana":[0,198,0.4593],"meghana":[0,966,0.597],"meilani":[0,3472,0.7081],"merlina":[0,170,0.4461],"mikea":[0,224,0.47],"milea":[0,147,0.4335],"mimose":[0,5,0.0],"mirabel":[0,1022,0.6019],"moire":[0,11,0.0],"mtisha":[0,5,0.0],"mui":[0,5,0.0],"myphuong":[0,5,0.0],"naamah":[0,112,0.4098],"naara":[0,185,0.4534],"nachel":[0,5,0.0],"naderge":[0,10,0.0],"naia":[0,2091,0.6641],"nalia":[0,804,0.5811],"nanika":[0,5,0.0],"nasia":[0,479,0.5361],"nataile":[0,5,0.0],"neng":[78,5,0.0],"nerlande":[0,11,0.0],"niah":[0,1714,0.6468],"niaja":[0,183,0.4525],"niaya":[0,214,0.4661],"nicoya":[0,64,0.0],"nineveh":[0,42,0.0],"nosheen":[0,10,0.0],"nyeemah":[0,95,0.0],"onisha":[0,89,0.0],"pakou":[0,148,0.4341],"pany":[0,5,0.0],"phallen":[0,5,0.0],"phalyn":[0,40,0.0],"porschea":[0,139,0.4286],"prachi":[0,423,0.5253],"princes":[0,81,0.0],"quinlyn":[6,480,0.5307],"quinne":[0,139,0.4286],"quinnesha":[0,47,0.0],"rachon":[0,5,0.0],"raelynne":[0,782,0.5786],"raha":[0,321,0.5013],"rajeeyah":[0,10,0.0],"rasheba":[0,5,0.0],"rchel":[0,10,0.0],"renida":[0,5,0.0],"reya":[0,2684,0.6858],"rosheena":[0,36,0.0],"rychelle":[0,37,0.0],"sabiha":[0,307,0.4974],"sakeya":[0,5,0.0],"samiyah":[0,5125,0.7419],"sancia":[0,39,0.0],"santeria":[0,40,0.0],"saraha":[0,42,0.0],"sarahrose":[0,47,0.0],"saramarie":[0,91,0.0],"saranda":[0,93,0.0],"sararose":[0,42,0.0],"saree":[0,135,0.4261],"sea":[11,10,0.0],"seidina":[0,5,0.0],"sekia":[0,5,0.0],"sephanie":[0,35,0.0],"sequeena":[0,5,0.0],"shacarra":[0,74,0.0],"shafon":[0,5,0.0],"shaia":[6,93,0.0],"shailyn":[0,829,0.5837],"shakaria":[0,69,0.0],"shakeyta":[0,10,0.0],"shalynda":[0,17,0.0],"shameki":[0,5,0.0],"shamille":[0,25,0.0],"shamora":[0,55,0.0],"shaneal":[0,62,0.0],"shaquala":[0,355,0.51],"shaquanah":[0,13,0.0],"shaquela":[0,108,0.4067],"shareca":[0,10,0.0],"shariah":[0,964,0.5968],"shariyka":[0,5,0.0],"shatha":[0,153,0.4369],"shatiya":[0,50,0.0],"shaunise":[0,41,0.0],"shauntaye":[0,5,0.0],"shavy":[0,89,0.0],"shaylah":[0,959,0.5964],"shemaka":[0,5,0.0],"sheneil":[0,5,0.0],"shereika":[0,5,0.0],"shimira":[0,16,0.0],"shondreka":[0,34,0.0],"shoneka":[0,5,0.0],"shweta":[0,197,0.4589],"shylow":[0,5,0.0],"soha":[0,829,0.5837],"stanisha":[0,78,0.0],"starkeisha":[0,74,0.0],"starkesha":[0,35,0.0],"starshema":[0,12,0.0],"suhaila":[0,265,0.4846],"sumaira":[0,59,0.0],"sunitha":[0,5,0.0],"suong":[0,31,0.0],"syreena":[0,13,0.0],"tabytha":[0,491,0.5382],"tahitha":[0,5,0.0],"taiana":[0,80,0.0],"takarra":[0,47,0.0],"taliesha":[0,10,0.0],"taquanta":[0,5,0.0],"tar":[0,5,0.0],"tarneisha":[0,5,0.0],"tasharra":[0,78,0.0],"tasmin":[0,52,0.0],"tequela":[0,5,0.0],"teshana":[0,17,0.0],"teyana":[0,1132,0.6108],"thaisha":[0,15,0.0],"tiamarie":[0,134,0.4254],"tienna":[0,74,0.0],"tikela":[0,5,0.0],"tikeya":[0,43,0.0],"timaree":[0,10,0.0],"tisheena":[0,60,0.0],"toneisha":[0,176,0.4491],"toshana":[0,5,0.0],"tramisha":[0,5,0.0],"trishana":[0,53,0.0],"trishona":[0,5,0.0],"trusha":[0,5,0.0],"trysha":[0,27,0.0],"tykeia":[0,38,0.0],"tylia":[0,593,0.5546],"tyrika":[0,137,0.4273],"tzipporah":[0,379,0.5157],"valier":[0,5,0.0],"valon":[235,5,0.4661],"vaneshia":[0,53,0.0],"vanity":[0,1845,0.6532],"wanisha":[0,74,0.0],"yaasmiyn":[0,5,0.0],"yahayra":[0,204,0.4619],"yalda":[0,118,0.4144],"yanelis":[0,656,0.5634],"yavanna":[0,5,0.0],"yendi":[0,48,0.0],"yeny":[0,108,0.4067],"yomara":[0,192,0.4567],"yoselin":[0,6677,0.7649],"zekia":[0,54,0.0],"zenayda":[0,73,0.0],"zenida":[0,10,0.0],"eder":[3190,0,0.7008],"gemayel":[72,0,0.0],"kolt":[2944,0,0.6938],"veasna":[146,0,0.4329],"travanti":[81,0,0.0],"trystan":[4494,660,0.6474],"arya":[2281,27666,0.8271],"chaise":[1083,365,0.4728],"johnross":[72,0,0.0],"jaryd":[760,0,0.5762],"kellon":[316,0,0.4999],"asaad":[817,0,0.5824],"chachi":[9,0,0.0],"chezare":[15,5,0.0],"chukwudi":[198,0,0.4593],"fahim":[465,0,0.5335],"kohl":[1742,0,0.6482],"onesimus":[50,0,0.0],"ozzy":[3628,283,0.6665],"padraig":[795,0,0.5801],"seanpatrick":[245,0,0.4778],"yochanan":[282,0,0.49],"ceasare":[13,0,0.0],"joram":[280,0,0.4894],"kongmeng":[264,0,0.4843],"marteze":[90,0,0.0],"pierrie":[13,0,0.0],"syrus":[1989,0,0.6597],"zubair":[704,0,0.5695],"benjemin":[13,0,0.0],"bhavin":[211,0,0.4649],"blade":[2103,0,0.6646],"chayson":[210,0,0.4644],"damel":[69,0,0.0],"darneil":[18,0,0.0],"daviel":[373,0,0.5143],"dayvon":[1712,0,0.6467],"deney":[7,0,0.0],"devonta":[3130,36,0.6921],"estuardo":[495,0,0.5389],"gerrid":[22,0,0.0],"hoai":[35,6,0.0],"jareo":[14,0,0.0],"jarryd":[692,0,0.568],"jemarcus":[320,0,0.501],"keilon":[231,0,0.4727],"kellin":[1141,94,0.5713],"kerel":[35,0,0.0],"kha":[88,5,0.0],"khaleef":[96,0,0.0],"kolton":[16674,0,0.8444],"leonte":[243,0,0.4771],"markeese":[512,0,0.5419],"matthw":[18,0,0.0],"parin":[53,0,0.0],"pritesh":[57,0,0.0],"quinnton":[421,0,0.5249],"quintarius":[384,0,0.5169],"ramzey":[167,0,0.4445],"sahil":[3097,0,0.6982],"samario":[18,0,0.0],"sanket":[44,0,0.0],"sharmar":[7,0,0.0],"shayan":[2229,58,0.6548],"taurian":[55,0,0.0],"terrio":[21,0,0.0],"tirone":[24,0,0.0],"vuthy":[37,0,0.0],"abdurrahman":[1018,0,0.6015],"adebowale":[24,0,0.0],"adonijah":[470,26,0.5108],"akmal":[28,0,0.0],"anden":[710,0,0.5703],"antavious":[567,0,0.5507],"arius":[1071,42,0.5863],"artin":[502,0,0.5401],"besim":[32,0,0.0],"betzalel":[366,0,0.5127],"boback":[6,0,0.0],"burim":[6,0,0.0],"chais":[131,5,0.411],"chayse":[2258,870,0.5046],"chazaray":[6,0,0.0],"chinedu":[442,0,0.5291],"chistian":[219,0,0.4681],"coleton":[2982,0,0.6949],"crandon":[6,0,0.0],"custodio":[6,0,0.0],"dacian":[301,0,0.4957],"danti":[6,0,0.0],"deaunte":[368,0,0.5132],"demarques":[254,0,0.481],"deondrae":[253,0,0.4806],"dinh":[65,0,0.0],"drian":[11,0,0.0],"dzuy":[6,0,0.0],"feffrey":[6,0,0.0],"gaelan":[131,0,0.4235],"gerran":[11,0,0.0],"heng":[21,0,0.0],"herberth":[177,0,0.4496],"hoan":[43,0,0.0],"ishan":[2653,0,0.6847],"ismel":[11,0,0.0],"jaber":[143,0,0.4311],"jabri":[233,16,0.4484],"jah":[430,0,0.5267],"jakeb":[1170,0,0.6136],"jerrylee":[13,0,0.0],"johanan":[240,0,0.476],"johnjames":[34,0,0.0],"jorrel":[24,0,0.0],"josean":[307,0,0.4974],"joshya":[12,0,0.0],"justinian":[78,0,0.0],"justinn":[75,0,0.0],"kaan":[859,0,0.5868],"kayon":[340,6,0.499],"kelen":[189,25,0.4116],"kien":[517,0,0.5427],"kristafer":[43,0,0.0],"martavius":[804,0,0.5811],"maziar":[42,0,0.0],"mclain":[217,19,0.4364],"mecos":[11,0,0.0],"mehrdad":[6,0,0.0],"naheem":[485,0,0.5371],"nicholi":[384,0,0.5169],"nicolus":[99,0,0.0],"nilson":[344,0,0.5073],"oluwaseun":[272,141,0.3446],"qadir":[467,0,0.5339],"quillan":[373,0,0.5143],"rachad":[38,0,0.0],"ramez":[165,0,0.4435],"reis":[802,121,0.5153],"rushabh":[49,0,0.0],"sa":[25,48,0.0],"sanantonio":[6,0,0.0],"scan":[16,0,0.0],"sem":[214,0,0.4661],"shachar":[12,0,0.0],"shereef":[6,0,0.0],"souriya":[6,0,0.0],"stephano":[531,0,0.545],"stepheno":[6,0,0.0],"tauren":[230,26,0.4327],"tayon":[455,5,0.5268],"tell":[196,0,0.4585],"thach":[11,0,0.0],"thaer":[61,0,0.0],"tinothy":[6,0,0.0],"tristain":[364,11,0.4997],"tromaine":[17,0,0.0],"tyrique":[1898,0,0.6557],"umair":[571,0,0.5513],"viraj":[1792,0,0.6507],"wa":[48,0,0.0],"wahid":[119,0,0.4151],"yue":[86,131,0.2821],"zayne":[12197,203,0.8053],"aaronlee":[5,0,0.0],"abubakr":[737,0,0.5735],"acea":[77,5,0.0],"adeniyi":[32,0,0.0],"andes":[12,0,0.0],"ankoor":[5,0,0.0],"anre":[5,0,0.0],"anrew":[21,0,0.0],"antaun":[15,0,0.0],"anthny":[13,0,0.0],"antyone":[5,0,0.0],"apostolis":[5,0,0.0],"arinze":[196,0,0.4585],"balke":[21,0,0.0],"barris":[5,0,0.0],"bashawn":[44,0,0.0],"behnam":[34,0,0.0],"benjerman":[122,0,0.4173],"bernave":[18,0,0.0],"bhavesh":[105,0,0.4042],"blaize":[1840,264,0.5812],"brayn":[193,0,0.4571],"briston":[429,0,0.5265],"bryheem":[26,0,0.0],"carmeron":[166,0,0.444],"caylen":[357,663,0.3911],"cem":[108,0,0.4067],"chanh":[11,0,0.0],"chiedu":[5,0,0.0],"christopehr":[15,0,0.0],"cong":[48,0,0.0],"cordel":[440,0,0.5287],"damarr":[52,0,0.0],"danylo":[120,0,0.4158],"davonte":[4640,5,0.7326],"dejean":[198,0,0.4593],"deloren":[12,0,0.0],"demetrices":[5,0,0.0],"denerick":[10,0,0.0],"deontray":[346,0,0.5078],"deronte":[74,0,0.0],"deunta":[136,0,0.4267],"dezman":[171,0,0.4466],"dhaval":[94,0,0.0],"dometrius":[22,0,0.0],"domiano":[15,0,0.0],"dominck":[15,0,0.0],"dondrae":[16,0,0.0],"donshae":[13,27,0.0],"dustun":[15,0,0.0],"dzung":[10,0,0.0],"edmanuel":[17,0,0.0],"eliborio":[5,0,0.0],"elkanah":[52,0,0.0],"eng":[5,0,0.0],"erbey":[10,0,0.0],"ethaniel":[992,0,0.5993],"gallagher":[21,0,0.0],"gershom":[207,0,0.4632],"grantley":[170,0,0.4461],"halen":[1215,807,0.3973],"hawk":[970,0,0.5974],"huntington":[258,0,0.4823],"ivanhoe":[15,0,0.0],"jabori":[175,0,0.4486],"jabre":[131,10,0.3994],"jamesjoseph":[32,0,0.0],"jamson":[11,0,0.0],"jariel":[2135,39,0.6555],"jarvez":[10,0,0.0],"javel":[180,0,0.4511],"jerrian":[68,0,0.0],"jerson":[1225,0,0.6176],"jessejames":[579,0,0.5525],"jesselee":[77,0,0.0],"jildardo":[15,0,0.0],"joeanthony":[268,0,0.4856],"jonahan":[12,0,0.0],"jonathaon":[5,0,0.0],"josemiguel":[500,0,0.5398],"jostin":[793,0,0.5799],"joven":[269,0,0.486],"jurrell":[69,0,0.0],"jutin":[13,0,0.0],"karrell":[10,0,0.0],"kasheem":[107,0,0.4059],"kayson":[13880,277,0.814],"kensuke":[33,0,0.0],"kentavious":[749,0,0.5749],"kervins":[10,0,0.0],"keyth":[59,0,0.0],"khalief":[59,0,0.0],"kienan":[316,0,0.4999],"krisopher":[5,0,0.0],"kristepher":[5,0,0.0],"kristjan":[225,0,0.4704],"kyel":[284,5,0.4837],"lech":[5,0,0.0],"leyland":[292,0,0.4931],"lius":[5,0,0.0],"luu":[5,0,0.0],"maciej":[315,0,0.4997],"mahammad":[5,0,0.0],"marcelin":[5,0,0.0],"marcua":[20,0,0.0],"marcys":[10,0,0.0],"markdavid":[10,0,0.0],"markez":[298,0,0.4948],"masoud":[76,0,0.0],"michaeldavid":[50,0,0.0],"michaellee":[21,0,0.0],"mizael":[571,0,0.5513],"montese":[5,0,0.0],"mussa":[144,0,0.4317],"nedrick":[5,0,0.0],"nikunj":[28,0,0.0],"nissan":[88,5,0.0],"obryan":[301,0,0.4957],"odeh":[11,0,0.0],"olushola":[16,0,0.0],"patricik":[17,0,0.0],"pawan":[43,0,0.0],"petrit":[5,0,0.0],"po":[5,0,0.0],"prasad":[5,0,0.0],"quiton":[22,0,0.0],"radee":[5,0,0.0],"raheel":[256,74,0.3908],"randeep":[50,0,0.0],"raziel":[1509,46,0.6195],"reynol":[79,0,0.0],"roary":[59,5,0.0],"rodericus":[10,0,0.0],"santez":[85,0,0.0],"sarn":[5,0,0.0],"seath":[30,0,0.0],"segio":[42,0,0.0],"shakeel":[218,0,0.4677],"shakil":[172,5,0.4369],"shance":[10,0,0.0],"shashi":[5,0,0.0],"shloime":[582,0,0.553],"sohaib":[292,0,0.4931],"sudan":[10,0,0.0],"sudip":[5,0,0.0],"supreme":[537,14,0.5343],"taheem":[290,0,0.4925],"taher":[245,0,0.4778],"talen":[1960,44,0.6459],"taurance":[5,0,0.0],"tc":[64,0,0.0],"termayne":[10,0,0.0],"thamer":[18,0,0.0],"tiago":[3035,0,0.6964],"tomer":[444,0,0.5295],"tradd":[41,0,0.0],"tramond":[67,0,0.0],"traye":[103,0,0.4026],"trvis":[15,0,0.0],"victormanuel":[228,0,0.4716],"yuhanna":[5,0,0.0],"zedekiah":[704,0,0.5695],"mallori":[0,1566,0.639],"erienne":[0,133,0.4248],"tyger":[439,59,0.4755],"cigi":[0,92,0.0],"deisi":[0,574,0.5518],"deysi":[0,1675,0.6448],"shadava":[0,25,0.0],"marquite":[0,52,0.0],"kirbi":[0,191,0.4562],"kirbie":[0,212,0.4653],"yomayra":[0,156,0.4386],"malerie":[0,1246,0.6191],"mallary":[0,758,0.5759],"shley":[0,127,0.4208],"carime":[0,137,0.4273],"malory":[0,1385,0.6283],"shamair":[5,16,0.0],"audrina":[0,8549,0.7864],"mallery":[0,481,0.5364],"marili":[0,261,0.4833],"caitlan":[0,1047,0.604],"sorangel":[0,34,0.0],"teshawna":[0,54,0.0],"trysta":[0,354,0.5098],"britini":[0,276,0.4882],"jomayra":[0,75,0.0],"luisanna":[0,35,0.0],"marqutia":[0,12,0.0],"anaalicia":[0,201,0.4606],"elizaeth":[0,28,0.0],"jaclene":[0,89,0.0],"malori":[0,751,0.5751],"manar":[5,722,0.5684],"nishi":[0,247,0.4785],"shadavia":[0,110,0.4083],"sharquita":[0,41,0.0],"abony":[0,43,0.0],"anastasha":[0,240,0.476],"bjana":[0,9,0.0],"carling":[0,133,0.4248],"colbie":[373,3415,0.6452],"johnika":[0,107,0.4059],"kelcee":[0,763,0.5765],"marquieta":[0,16,0.0],"priyanka":[0,1783,0.6502],"stepfanie":[0,182,0.452],"takyra":[0,560,0.5496],"witney":[0,190,0.4558],"amberrose":[0,220,0.4685],"ashleyann":[0,315,0.4997],"asten":[46,8,0.0],"brittiney":[0,339,0.506],"caramie":[0,13,0.0],"chantha":[30,34,0.0],"deicy":[0,147,0.4335],"dominika":[0,638,0.561],"ekco":[0,8,0.0],"icole":[0,19,0.0],"kaleia":[0,1034,0.6029],"kaula":[0,204,0.4619],"kayela":[0,350,0.5088],"kaysee":[0,386,0.5173],"keiosha":[0,224,0.47],"loriana":[0,472,0.5348],"marquida":[0,29,0.0],"neelisha":[0,8,0.0],"ninja":[0,19,0.0],"rawan":[5,1380,0.626],"rosali":[0,282,0.49],"sabrian":[0,28,0.0],"shatarra":[0,114,0.4114],"shaterica":[0,174,0.4481],"takera":[0,286,0.4913],"tember":[0,27,0.0],"airika":[0,174,0.4481],"akiera":[0,237,0.4749],"angelicamaria":[0,24,0.0],"anishia":[0,38,0.0],"antisha":[0,46,0.0],"apphia":[0,225,0.4704],"ayeshah":[0,12,0.0],"biridiana":[0,533,0.5453],"brijette":[0,25,0.0],"chelcia":[0,20,0.0],"contesa":[0,7,0.0],"courtne":[0,81,0.0],"daicy":[0,52,0.0],"daizy":[0,765,0.5767],"ecko":[11,114,0.3825],"elea":[0,363,0.512],"evann":[436,336,0.3262],"gentri":[0,138,0.428],"idalis":[0,895,0.5904],"jacquia":[0,33,0.0],"janeshia":[0,162,0.4419],"jazmyne":[0,5319,0.7452],"jazzmen":[0,488,0.5377],"jermonica":[0,7,0.0],"jerricka":[0,217,0.4673],"jhoanna":[0,367,0.5129],"jiselle":[0,2497,0.6795],"joneisha":[0,164,0.443],"kaily":[0,2525,0.6805],"keoshia":[0,209,0.464],"kerbi":[0,47,0.0],"kerbie":[0,18,0.0],"kimbre":[0,36,0.0],"krystalynn":[0,244,0.4775],"mariquita":[0,18,0.0],"marqita":[0,28,0.0],"marquilla":[0,20,0.0],"mieisha":[0,56,0.0],"nami":[13,1016,0.5949],"omni":[91,327,0.4101],"rin":[74,377,0.4437],"rystal":[0,33,0.0],"sandrell":[0,7,0.0],"sarin":[11,123,0.3905],"sharoya":[0,12,0.0],"shelicia":[0,22,0.0],"shian":[6,419,0.5183],"shrina":[0,66,0.0],"shynika":[0,12,0.0],"stefaine":[0,12,0.0],"takea":[0,40,0.0],"tannesha":[0,7,0.0],"taydra":[0,31,0.0],"ternesha":[0,12,0.0],"tomyra":[0,7,0.0],"tra":[241,7,0.4654],"abrielle":[0,4483,0.7303],"ajita":[0,6,0.0],"akea":[0,43,0.0],"aleashia":[0,25,0.0],"aliece":[0,64,0.0],"alixis":[0,74,0.0],"ambreen":[0,110,0.4083],"anaiah":[18,3126,0.6955],"aneeka":[0,99,0.0],"annalicia":[0,844,0.5853],"ashleen":[0,586,0.5536],"breannon":[0,42,0.0],"bushra":[0,989,0.599],"camerin":[584,236,0.415],"cassanora":[0,11,0.0],"caylan":[154,246,0.3201],"ceji":[0,15,0.0],"chartese":[0,6,0.0],"charysse":[0,16,0.0],"chassy":[0,18,0.0],"chelci":[0,236,0.4746],"chiketa":[0,11,0.0],"chrishanna":[0,42,0.0],"christinemarie":[0,26,0.0],"chyra":[0,48,0.0],"clarra":[0,13,0.0],"clerissa":[0,30,0.0],"daissy":[0,143,0.4311],"dalenna":[0,16,0.0],"dannica":[0,444,0.5295],"deasia":[0,4891,0.7379],"delmi":[0,265,0.4846],"delsy":[0,102,0.4017],"denique":[0,34,0.0],"deshaunta":[0,6,0.0],"desieree":[0,6,0.0],"desteny":[0,1597,0.6407],"donesia":[0,21,0.0],"ebbony":[0,18,0.0],"echoe":[0,16,0.0],"elenoa":[0,57,0.0],"elya":[379,244,0.34],"emarie":[5,1441,0.6298],"emilea":[0,471,0.5346],"emilyrose":[0,296,0.4943],"estefani":[16,4396,0.7263],"faatima":[0,77,0.0],"falone":[0,6,0.0],"grenisha":[0,6,0.0],"jaie":[5,29,0.0],"jaklyn":[0,254,0.481],"jamaya":[0,2287,0.6719],"janesha":[0,519,0.543],"janess":[0,12,0.0],"jaquilla":[0,90,0.0],"jenece":[0,17,0.0],"jeopardy":[0,6,0.0],"jeria":[0,6,0.0],"jericka":[0,442,0.5291],"jonessa":[0,109,0.4075],"jontia":[0,29,0.0],"jozlyn":[0,1173,0.6139],"kamira":[0,935,0.5942],"karalea":[0,11,0.0],"kassidi":[0,1225,0.6176],"kayia":[0,128,0.4214],"kaylena":[0,607,0.5566],"kaytee":[0,406,0.5217],"kenithia":[0,6,0.0],"keystal":[0,17,0.0],"klisha":[0,6,0.0],"koketa":[0,6,0.0],"kyrstle":[0,32,0.0],"laquishia":[0,49,0.0],"laroya":[0,29,0.0],"letara":[0,16,0.0],"lidiana":[0,51,0.0],"luisiana":[0,12,0.0],"lyndzi":[0,59,0.0],"maghann":[0,6,0.0],"margita":[0,12,0.0],"markeysha":[0,58,0.0],"markida":[0,33,0.0],"mirelle":[0,186,0.4539],"natisa":[0,6,0.0],"neepa":[0,6,0.0],"neveen":[0,121,0.4166],"noura":[0,1134,0.6109],"oluchi":[0,197,0.4589],"parvaneh":[0,12,0.0],"pierra":[0,61,0.0],"queana":[0,11,0.0],"qunisha":[0,85,0.0],"raynesha":[0,216,0.4669],"rebeccajo":[0,6,0.0],"rihana":[0,689,0.5676],"rokeshia":[0,16,0.0],"rylie":[1193,22623,0.8315],"sanovia":[0,62,0.0],"sarahlee":[0,11,0.0],"saritha":[0,6,0.0],"savy":[0,64,0.0],"shakeeka":[0,14,0.0],"shakeira":[0,328,0.5032],"shanece":[0,357,0.5105],"shaqunna":[0,26,0.0],"shatira":[0,115,0.4121],"sheen":[15,11,0.0],"shekevia":[0,6,0.0],"shemieka":[0,6,0.0],"shereena":[0,58,0.0],"somaly":[0,75,0.0],"starisha":[0,11,0.0],"tacoya":[0,71,0.0],"taelor":[190,2235,0.6239],"takeiya":[0,6,0.0],"talesia":[0,23,0.0],"tanishea":[0,6,0.0],"tanitha":[0,6,0.0],"tikira":[0,11,0.0],"tranese":[0,29,0.0],"tyecha":[0,6,0.0],"tysheena":[0,99,0.0],"uneka":[0,6,0.0],"valbona":[0,74,0.0],"valerieann":[0,23,0.0],"vannary":[0,41,0.0],"vickiana":[0,38,0.0],"vicotria":[0,22,0.0],"yesemia":[0,14,0.0],"acadia":[0,1093,0.6077],"adesuwa":[0,155,0.4381],"adree":[0,31,0.0],"aira":[0,1095,0.6079],"alauna":[0,861,0.587],"allia":[0,390,0.5182],"allsion":[0,63,0.0],"allysha":[0,515,0.5424],"amanie":[5,181,0.4417],"amela":[0,455,0.5316],"anhthu":[0,135,0.4261],"aniqua":[0,102,0.4017],"anorea":[0,10,0.0],"antavia":[0,182,0.452],"arquita":[0,10,0.0],"ashala":[0,27,0.0],"ashalee":[0,23,0.0],"ashelee":[0,38,0.0],"ashlan":[68,1018,0.5691],"ashland":[166,680,0.4706],"ashlley":[0,104,0.4034],"ashlynne":[0,1624,0.6421],"avneet":[5,514,0.5378],"avrielle":[0,241,0.4764],"azania":[0,90,0.0],"balon":[0,5,0.0],"bernisha":[0,88,0.0],"betania":[0,371,0.5139],"bethanye":[0,5,0.0],"bilon":[0,5,0.0],"bla":[0,5,0.0],"bridjette":[0,11,0.0],"brinna":[0,430,0.5267],"cacee":[0,29,0.0],"caleah":[0,725,0.5721],"caleshia":[0,15,0.0],"calicia":[0,27,0.0],"canei":[0,25,0.0],"capria":[0,203,0.4615],"carissia":[0,15,0.0],"casina":[0,5,0.0],"chalsey":[0,76,0.0],"chanteal":[0,44,0.0],"chantiel":[0,5,0.0],"chasidi":[0,21,0.0],"chassi":[0,5,0.0],"chavelle":[0,37,0.0],"chavonna":[0,28,0.0],"chayna":[0,192,0.4567],"chelcey":[0,152,0.4364],"chelia":[0,12,0.0],"chelsae":[0,386,0.5173],"chidinma":[0,339,0.506],"chinda":[0,39,0.0],"chineka":[0,11,0.0],"chinelo":[5,131,0.411],"chiron":[140,5,0.4174],"chrishawna":[0,81,0.0],"christing":[0,5,0.0],"chrystalyn":[0,5,0.0],"cne":[0,16,0.0],"condace":[0,5,0.0],"cristelle":[0,46,0.0],"cyntoria":[0,40,0.0],"dalicia":[0,180,0.4511],"damaria":[69,466,0.4753],"danikka":[0,44,0.0],"dayleen":[0,442,0.5291],"dayonna":[0,780,0.5784],"deise":[0,10,0.0],"denaye":[0,43,0.0],"deveney":[0,102,0.4017],"dezera":[0,34,0.0],"dijana":[0,41,0.0],"dima":[79,397,0.4466],"diseree":[0,10,0.0],"domino":[21,155,0.3955],"donishia":[0,20,0.0],"ebru":[0,22,0.0],"eimy":[0,1169,0.6136],"eleah":[0,310,0.4983],"elixabeth":[0,11,0.0],"elizeth":[0,178,0.4501],"ellyse":[0,783,0.5788],"estefany":[5,5560,0.7484],"estephanie":[0,1839,0.6529],"fariha":[0,513,0.542],"fatiha":[0,278,0.4888],"fawnna":[0,5,0.0],"faylyn":[0,15,0.0],"geselle":[0,266,0.485],"glendalis":[0,12,0.0],"haruka":[0,466,0.5337],"hemali":[0,17,0.0],"isella":[0,269,0.486],"jackleen":[0,48,0.0],"jacoya":[0,132,0.4241],"jacqualynn":[0,71,0.0],"jaira":[0,532,0.5452],"jakira":[0,1337,0.6252],"jalia":[0,1600,0.6408],"jamaira":[0,94,0.0],"jamayra":[0,27,0.0],"jamii":[0,5,0.0],"janalle":[0,5,0.0],"jandery":[0,5,0.0],"janeisha":[0,352,0.5093],"jaqui":[23,17,0.0],"jazzlyn":[0,4200,0.7246],"jemekia":[0,5,0.0],"jenan":[0,315,0.4997],"jenneffer":[0,15,0.0],"jennieke":[0,5,0.0],"jezel":[0,168,0.4451],"jillan":[0,10,0.0],"joniece":[0,68,0.0],"juriana":[0,5,0.0],"kahala":[0,5,0.0],"kahlea":[0,308,0.4977],"kalolaine":[0,42,0.0],"kamaron":[205,10,0.4448],"kamya":[0,3627,0.7119],"kandus":[0,27,0.0],"karise":[0,23,0.0],"karleigh":[0,4985,0.7395],"karynne":[0,37,0.0],"karyssa":[0,921,0.5929],"katelynne":[0,1343,0.6256],"kathelyn":[0,244,0.4775],"kayln":[0,525,0.544],"keandrea":[0,322,0.5016],"keikilani":[0,5,0.0],"kenedra":[0,13,0.0],"keyandra":[0,205,0.4624],"khou":[0,30,0.0],"kimberyl":[0,5,0.0],"kla":[0,245,0.4778],"kourtny":[0,51,0.0],"kula":[0,10,0.0],"kyeesha":[0,10,0.0],"lachundra":[0,5,0.0],"lakeydra":[0,5,0.0],"lakyia":[0,97,0.0],"laneesha":[0,41,0.0],"lanishia":[0,15,0.0],"laqueda":[0,21,0.0],"laquesta":[0,5,0.0],"laritha":[0,5,0.0],"larrica":[0,5,0.0],"lathena":[0,5,0.0],"latieka":[0,10,0.0],"latira":[0,16,0.0],"laurica":[0,5,0.0],"laurne":[0,15,0.0],"layci":[0,108,0.4067],"leeat":[0,5,0.0],"lesieli":[0,114,0.4114],"lhea":[0,5,0.0],"liliann":[0,591,0.5543],"lindasy":[0,27,0.0],"lindsae":[0,17,0.0],"lonika":[0,5,0.0],"lorisha":[0,10,0.0],"lusana":[0,5,0.0],"mahsa":[0,323,0.5018],"malak":[272,3757,0.6724],"marguitta":[0,13,0.0],"mariajose":[0,2498,0.6795],"mariessa":[0,36,0.0],"marike":[0,5,0.0],"marquila":[0,23,0.0],"marqurita":[0,5,0.0],"mashaunda":[0,5,0.0],"meagin":[0,17,0.0],"megghan":[0,10,0.0],"megnan":[0,16,0.0],"meoshi":[0,5,0.0],"michaiah":[132,409,0.4133],"mickenzie":[44,640,0.5305],"miosoti":[0,15,0.0],"monquita":[0,5,0.0],"naiyma":[0,10,0.0],"najma":[0,864,0.5873],"nakieta":[0,17,0.0],"namrata":[0,169,0.4456],"nateesha":[0,15,0.0],"nayyirah":[0,16,0.0],"nazish":[0,15,0.0],"nekoda":[204,36,0.4046],"nequila":[0,5,0.0],"ni":[0,22,0.0],"nikkiya":[0,5,0.0],"nitaya":[0,15,0.0],"nivedita":[0,85,0.0],"nohea":[42,170,0.3731],"nyleen":[0,46,0.0],"olatokunbo":[0,15,0.0],"omika":[0,10,0.0],"oneisha":[0,251,0.4799],"ourtney":[0,5,0.0],"pahoua":[0,148,0.4341],"pavielle":[0,131,0.4235],"porchea":[0,116,0.4129],"prescious":[0,76,0.0],"pristina":[0,11,0.0],"quantavia":[0,78,0.0],"quanza":[0,5,0.0],"queneisha":[0,5,0.0],"queneshia":[0,5,0.0],"quiera":[0,114,0.4114],"quinnette":[0,5,0.0],"racqual":[0,5,0.0],"randelle":[0,22,0.0],"raquita":[0,36,0.0],"rasheika":[0,35,0.0],"raynie":[0,264,0.4843],"rayshonda":[0,55,0.0],"razan":[0,1200,0.6158],"rbecca":[0,5,0.0],"reghan":[0,895,0.5904],"reshaunda":[0,5,0.0],"ritika":[0,571,0.5513],"ronicka":[0,11,0.0],"rosheka":[0,11,0.0],"rozalin":[0,22,0.0],"rugayyah":[0,5,0.0],"saleha":[0,139,0.4286],"salethia":[0,5,0.0],"sama":[0,1625,0.6422],"samanthajo":[0,287,0.4916],"samiha":[0,531,0.545],"sammijo":[0,40,0.0],"sandricka":[0,5,0.0],"sanquenetta":[0,10,0.0],"santoya":[0,22,0.0],"saori":[0,722,0.5717],"sarahelizabeth":[0,260,0.483],"sarahjean":[0,39,0.0],"sayla":[0,815,0.5822],"schanel":[0,15,0.0],"seham":[0,148,0.4341],"selika":[0,10,0.0],"sequia":[0,25,0.0],"sereena":[0,278,0.4888],"shabrina":[0,43,0.0],"shaheedah":[0,5,0.0],"shakeyda":[0,5,0.0],"shamaila":[0,5,0.0],"shamakia":[0,5,0.0],"shamese":[0,15,0.0],"shamya":[0,2167,0.6672],"shanetria":[0,40,0.0],"shannae":[0,51,0.0],"shaquia":[0,165,0.4435],"shareeda":[0,10,0.0],"shareema":[0,22,0.0],"sharlin":[0,49,0.0],"shatari":[0,31,0.0],"shateema":[0,15,0.0],"shaterria":[0,145,0.4323],"shawneka":[0,5,0.0],"shenequia":[0,18,0.0],"sherifat":[0,5,0.0],"shertia":[0,5,0.0],"shiane":[0,435,0.5277],"shinae":[0,42,0.0],"shing":[5,5,0.0],"shpresa":[0,16,0.0],"shunterria":[0,5,0.0],"siara":[0,2056,0.6626],"siera":[0,2536,0.6808],"siovhan":[0,5,0.0],"solangel":[0,127,0.4208],"starnisha":[0,58,0.0],"stephaniemarie":[0,59,0.0],"stepphanie":[0,5,0.0],"sukhjit":[11,10,0.0],"sumayah":[0,540,0.5465],"sylver":[10,166,0.4236],"tachelle":[0,50,0.0],"takayla":[0,1048,0.6041],"tanayia":[0,80,0.0],"taneicia":[0,5,0.0],"taniece":[0,17,0.0],"tashanti":[0,115,0.4121],"taumi":[0,5,0.0],"tearria":[0,44,0.0],"tennesia":[0,5,0.0],"teyanna":[0,654,0.5631],"thomasita":[0,5,0.0],"tiarah":[0,467,0.5339],"tichelle":[0,33,0.0],"tikvah":[0,45,0.0],"timbre":[0,20,0.0],"tokina":[0,5,0.0],"tonnisha":[0,27,0.0],"trisca":[0,5,0.0],"tymeshia":[0,71,0.0],"valyn":[22,258,0.451],"vinisha":[0,106,0.4051],"yagaira":[0,24,0.0],"yanell":[0,50,0.0],"yasenia":[0,159,0.4403],"yedida":[0,5,0.0],"yemisi":[0,10,0.0],"yodit":[0,41,0.0],"yuna":[0,2792,0.6892],"yuvia":[0,484,0.537],"zania":[0,865,0.5874],"zaynah":[0,930,0.5937],"zeenat":[0,305,0.4969],"zshakira":[0,5,0.0],"zulaika":[0,10,0.0],"jonerik":[203,0,0.4615],"micheaux":[21,0,0.0],"olajuwon":[633,0,0.5603],"akeen":[244,0,0.4775],"jimmylee":[79,0,0.0],"tio":[12,0,0.0],"infant":[4206,3890,0.4061],"juanmiguel":[206,0,0.4628],"torean":[41,0,0.0],"jamesrobert":[76,0,0.0],"suleiman":[957,0,0.5962],"danish":[417,0,0.524],"daveon":[2630,16,0.6804],"tallon":[1080,0,0.6067],"ahkeem":[444,0,0.5295],"anteaus":[8,0,0.0],"arkeem":[213,0,0.4657],"christopoher":[13,0,0.0],"colbey":[523,28,0.5204],"derrance":[8,0,0.0],"hau":[109,34,0.3286],"ladonte":[170,0,0.4461],"perris":[174,128,0.2858],"zenaido":[35,0,0.0],"adnrew":[39,0,0.0],"airon":[204,5,0.4529],"bach":[74,0,0.0],"brancon":[7,0,0.0],"brendin":[711,0,0.5704],"carlosalberto":[46,0,0.0],"dasean":[1376,0,0.6277],"deontre":[802,0,0.5808],"devarius":[203,0,0.4615],"garred":[38,0,0.0],"gianmarco":[813,0,0.582],"hakop":[243,0,0.4771],"hiren":[123,0,0.418],"iam":[461,0,0.5327],"jamalle":[14,0,0.0],"jonquin":[7,0,0.0],"jovane":[74,0,0.0],"kodey":[684,11,0.5594],"lathon":[96,0,0.0],"martavious":[1316,0,0.6239],"miroslav":[147,0,0.4335],"nosson":[819,0,0.5827],"patrickjohn":[7,0,0.0],"qui":[23,0,0.0],"robertjohn":[45,0,0.0],"sheehan":[69,5,0.0],"tereance":[12,0,0.0],"trauis":[22,0,0.0],"vannak":[50,0,0.0],"yovany":[702,0,0.5693],"zacchary":[138,0,0.428],"aarik":[230,0,0.4723],"adamo":[16,0,0.0],"adrick":[240,0,0.476],"anan":[84,5,0.0],"arcus":[11,0,0.0],"arpit":[45,0,0.0],"audeliz":[6,0,0.0],"babajide":[44,0,0.0],"babyboy":[2246,0,0.6703],"benajamin":[16,0,0.0],"brighton":[2929,2078,0.4328],"brogan":[4124,867,0.6112],"callum":[13046,30,0.8214],"cammeron":[201,0,0.4606],"canh":[6,0,0.0],"chukwuma":[181,0,0.4515],"conall":[758,0,0.5759],"cozell":[6,0,0.0],"daevon":[985,0,0.5987],"dandrae":[61,0,0.0],"devaris":[127,0,0.4208],"dionis":[117,0,0.4136],"edder":[358,0,0.5108],"hardeep":[72,25,0.0],"hazael":[596,64,0.5092],"ianmichael":[64,0,0.0],"jacobs":[81,0,0.0],"jahad":[416,0,0.5238],"jamual":[34,0,0.0],"jasmany":[6,0,0.0],"jasonlee":[6,0,0.0],"jazmon":[36,225,0.4167],"jemuel":[123,0,0.418],"johah":[29,0,0.0],"jordie":[149,139,0.2545],"jorian":[390,32,0.4852],"kaler":[53,0,0.0],"kase":[4649,7,0.7325],"kerem":[628,7,0.5544],"keyvon":[674,0,0.5657],"larz":[171,0,0.4466],"like":[6,0,0.0],"mandrel":[6,0,0.0],"mtthew":[6,0,0.0],"mua":[6,0,0.0],"murtaza":[379,0,0.5157],"mycal":[141,0,0.4298],"nichoals":[74,0,0.0],"perseus":[1220,32,0.6037],"rayshad":[213,0,0.4657],"rubens":[159,0,0.4403],"sadarius":[158,0,0.4397],"sadrac":[149,0,0.4346],"savier":[264,0,0.4843],"seve":[221,0,0.4689],"shoaib":[210,0,0.4644],"sinh":[11,0,0.0],"teandre":[276,0,0.4882],"tuong":[6,5,0.0],"uziel":[2372,0,0.675],"xou":[11,0,0.0],"yazan":[1842,0,0.6531],"yosuke":[28,0,0.0],"yousuf":[1664,0,0.6442],"zeric":[121,0,0.4166],"acob":[5,0,0.0],"adma":[23,0,0.0],"alexio":[251,0,0.4799],"amauri":[2071,730,0.5098],"andew":[13,0,0.0],"andreco":[15,0,0.0],"androw":[5,0,0.0],"ares":[7120,263,0.7461],"arias":[318,50,0.4434],"bang":[5,0,0.0],"berj":[5,0,0.0],"boun":[5,0,0.0],"branigan":[31,39,0.0],"brysen":[3616,6,0.7106],"calib":[515,0,0.5424],"callahan":[4461,884,0.6223],"cameren":[1341,211,0.5514],"cartier":[2328,296,0.6067],"chandon":[325,0,0.5024],"chasse":[22,0,0.0],"coey":[5,5,0.0],"cortes":[27,0,0.0],"cutter":[1634,0,0.6427],"da":[186,116,0.3055],"damarion":[4817,0,0.7366],"dantavious":[160,0,0.4408],"dantwan":[22,0,0.0],"danzel":[608,0,0.5568],"daon":[16,0,0.0],"dayson":[906,0,0.5914],"deeric":[187,0,0.4544],"demarion":[3519,0,0.7093],"devel":[5,0,0.0],"diontre":[157,0,0.4392],"dipesh":[19,0,0.0],"dominio":[5,0,0.0],"doninic":[12,0,0.0],"dontrelle":[72,0,0.0],"dritan":[5,0,0.0],"dyland":[949,0,0.5955],"edoardo":[235,0,0.4742],"emmanuell":[107,0,0.4059],"england":[60,260,0.4071],"exiquio":[15,0,0.0],"eyan":[1319,0,0.624],"frantzy":[16,0,0.0],"fu":[10,0,0.0],"ghulam":[10,0,0.0],"giordano":[269,0,0.486],"hakeen":[68,0,0.0],"isarel":[15,0,0.0],"ivandejesus":[5,0,0.0],"jaboris":[28,0,0.0],"jacari":[2732,102,0.6656],"jadd":[65,0,0.0],"jamarian":[918,6,0.5893],"jareem":[41,0,0.0],"jarelle":[332,0,0.5042],"javonte":[3883,39,0.7116],"jayton":[916,0,0.5924],"jazz":[897,610,0.3783],"jecory":[38,0,0.0],"jermaul":[5,0,0.0],"jimson":[12,0,0.0],"johndaniel":[114,0,0.4114],"johnlee":[60,0,0.0],"jonanthony":[154,0,0.4375],"joneric":[99,0,0.0],"jorde":[5,0,0.0],"joses":[33,0,0.0],"joshuadavid":[57,0,0.0],"joshuajames":[93,0,0.0],"joshualee":[32,0,0.0],"jothan":[15,0,0.0],"kailen":[922,728,0.3596],"karo":[106,0,0.4051],"kendu":[10,0,0.0],"ker":[10,5,0.0],"kevork":[82,0,0.0],"keyron":[247,0,0.4785],"keyshawn":[4027,24,0.7172],"kolawole":[43,0,0.0],"koua":[63,0,0.0],"kristopfer":[5,0,0.0],"kristos":[43,0,0.0],"krsna":[10,0,0.0],"krystian":[1613,484,0.511],"kyrus":[134,0,0.4254],"ladarren":[160,0,0.4408],"landin":[2647,16,0.681],"lasedrick":[5,0,0.0],"lavarius":[133,0,0.4248],"lezer":[5,0,0.0],"luismiguel":[225,0,0.4704],"luong":[5,0,0.0],"marcquis":[134,0,0.4254],"markees":[147,0,0.4335],"markous":[10,0,0.0],"marquil":[53,0,0.0],"mcgregor":[103,0,0.4026],"michaeljoseph":[96,0,0.0],"mikiel":[63,0,0.0],"mony":[5,0,0.0],"ncholas":[5,0,0.0],"niral":[17,0,0.0],"noan":[76,0,0.0],"om":[2255,0,0.6706],"omead":[10,0,0.0],"osmin":[537,0,0.546],"pauljohn":[11,0,0.0],"pong":[21,0,0.0],"pooya":[5,0,0.0],"quienton":[20,0,0.0],"rachid":[81,0,0.0],"raciel":[71,0,0.0],"rahmin":[5,0,0.0],"ramir":[1057,0,0.6048],"rany":[21,10,0.0],"reko":[42,0,0.0],"reon":[204,0,0.4619],"rorey":[142,97,0.2826],"ruan":[75,0,0.0],"safwan":[893,0,0.5902],"saied":[46,0,0.0],"sao":[10,0,0.0],"saviel":[26,0,0.0],"seabrook":[5,0,0.0],"semisi":[205,0,0.4624],"shafiq":[80,0,0.0],"simote":[5,0,0.0],"stehpen":[5,0,0.0],"stryder":[720,0,0.5715],"stven":[5,0,0.0],"suneel":[10,0,0.0],"tabius":[78,0,0.0],"tanard":[5,0,0.0],"tannon":[235,0,0.4742],"tarif":[23,0,0.0],"teak":[62,0,0.0],"tej":[689,0,0.5676],"tiquan":[287,0,0.4916],"tovan":[5,0,0.0],"tovaris":[5,0,0.0],"tramone":[29,0,0.0],"treye":[46,0,0.0],"trustin":[598,0,0.5553],"turron":[5,0,0.0],"uchechukwu":[145,24,0.3823],"vinesh":[20,0,0.0],"wakeem":[29,0,0.0],"wang":[70,0,0.0],"wasim":[182,0,0.452],"wesner":[16,0,0.0],"yle":[17,0,0.0],"yobani":[773,0,0.5776],"yonathan":[1431,0,0.6311],"yovan":[116,0,0.4129],"yuta":[363,0,0.512],"zacharey":[446,0,0.5299],"zacheria":[34,0,0.0],"nastassja":[0,485,0.5371],"santanna":[105,847,0.53],"meghaan":[0,36,0.0],"laken":[2139,5982,0.576],"nasiya":[0,282,0.49],"prisma":[0,418,0.5242],"safira":[0,267,0.4853],"natassja":[0,271,0.4866],"kashonna":[0,36,0.0],"teneya":[0,44,0.0],"ashleymarie":[0,356,0.5103],"yentl":[0,51,0.0],"nairoby":[0,98,0.0],"ticara":[0,56,0.0],"annais":[0,383,0.5166],"ashlen":[13,1065,0.5992],"ecaterina":[0,10,0.0],"katelan":[0,376,0.515],"kaytlin":[0,3324,0.7043],"laqueita":[0,10,0.0],"leighana":[0,347,0.5081],"pagan":[0,50,0.0],"tyniesha":[0,114,0.4114],"chaley":[0,162,0.4419],"edlin":[14,289,0.4734],"joshlynn":[0,695,0.5684],"lucerito":[0,380,0.516],"lynnsie":[0,108,0.4067],"nalleli":[0,558,0.5493],"natassha":[0,20,0.0],"shavanna":[0,157,0.4392],"ting":[15,73,0.0],"akeema":[0,119,0.4151],"altaira":[0,13,0.0],"arrika":[0,19,0.0],"aysia":[0,2150,0.6665],"breauna":[0,1462,0.633],"careese":[0,19,0.0],"caylie":[0,1633,0.6426],"chaely":[0,8,0.0],"daisi":[0,187,0.4544],"delacey":[0,35,0.0],"dezeray":[0,404,0.5213],"feiga":[0,94,0.0],"jaelynn":[154,9228,0.7814],"jazzma":[0,57,0.0],"jennee":[0,18,0.0],"justyna":[0,372,0.5141],"kelvina":[0,46,0.0],"keylee":[0,1526,0.6367],"laqueisha":[0,128,0.4214],"marquetia":[0,8,0.0],"naome":[0,107,0.4059],"nasheena":[0,19,0.0],"nastacia":[0,136,0.4267],"natasja":[0,77,0.0],"navdeep":[147,125,0.2631],"philadelphia":[0,34,0.0],"quaneisha":[0,354,0.5098],"quenesha":[0,70,0.0],"rikia":[0,110,0.4083],"sophear":[10,8,0.0],"adaku":[0,7,0.0],"adreann":[0,7,0.0],"alyss":[0,406,0.5217],"analis":[0,599,0.5555],"anastashia":[0,313,0.4991],"arrielle":[0,333,0.5045],"breindy":[0,562,0.5499],"brittane":[0,226,0.4708],"caleigh":[0,5724,0.7515],"chary":[0,7,0.0],"cindel":[0,203,0.4615],"devonie":[0,24,0.0],"etoshia":[0,7,0.0],"evyn":[744,1047,0.3803],"halah":[0,145,0.4323],"heahter":[0,14,0.0],"janecia":[0,351,0.5091],"jannessa":[0,237,0.4749],"jaquella":[0,17,0.0],"jazzman":[24,241,0.4408],"jeseka":[0,7,0.0],"johnae":[0,724,0.5719],"kaelie":[0,736,0.5734],"kashondra":[0,7,0.0],"kayleigh":[7,34212,0.9067],"keanne":[0,22,0.0],"kejuana":[0,35,0.0],"klarisa":[0,247,0.4785],"lasey":[0,39,0.0],"lashala":[0,56,0.0],"layal":[0,768,0.5771],"lusiana":[0,30,0.0],"lynzy":[0,79,0.0],"madiha":[0,399,0.5202],"makena":[84,6503,0.754],"makenzi":[0,3612,0.7115],"malary":[0,123,0.418],"mallarie":[0,209,0.464],"maysoon":[0,125,0.4194],"megyn":[0,460,0.5326],"mervat":[0,12,0.0],"morganna":[0,126,0.4201],"nelsy":[0,268,0.4856],"noora":[0,864,0.5873],"pavi":[0,7,0.0],"shakieta":[0,12,0.0],"shaley":[0,696,0.5685],"shali":[0,93,0.0],"shaquira":[0,246,0.4782],"sharease":[0,12,0.0],"shateria":[0,243,0.4771],"shatiqua":[0,75,0.0],"shealene":[0,32,0.0],"siedah":[0,271,0.4866],"sigourney":[0,392,0.5187],"tashari":[0,78,0.0],"trakeila":[0,7,0.0],"traniece":[0,95,0.0],"tristia":[0,14,0.0],"vallene":[0,7,0.0],"zuleima":[0,709,0.5701],"ahslee":[0,31,0.0],"alanah":[0,4159,0.7238],"aleea":[0,602,0.5559],"amdanda":[0,18,0.0],"amilynn":[0,6,0.0],"anai":[0,2298,0.6723],"anjulie":[0,53,0.0],"annaleah":[0,1160,0.6129],"appollonia":[0,55,0.0],"aquia":[0,25,0.0],"ashla":[0,67,0.0],"asja":[0,362,0.5117],"baily":[417,1399,0.5021],"baylie":[26,3443,0.7027],"branna":[0,137,0.4273],"breyana":[0,1100,0.6083],"brittant":[0,25,0.0],"calais":[84,179,0.3294],"carneshia":[0,60,0.0],"carrielynn":[0,6,0.0],"casheena":[0,6,0.0],"cayley":[0,1206,0.6163],"chanielle":[0,16,0.0],"chantavia":[0,97,0.0],"charlicia":[0,26,0.0],"charquita":[0,33,0.0],"chasitty":[0,56,0.0],"chauntia":[0,32,0.0],"chelsay":[0,49,0.0],"chrsitine":[0,11,0.0],"cortne":[0,58,0.0],"crystan":[0,28,0.0],"daneal":[26,6,0.0],"danyail":[0,12,0.0],"darshini":[0,16,0.0],"daysy":[0,271,0.4866],"deaundrea":[6,33,0.0],"delyla":[0,667,0.5648],"derya":[0,173,0.4476],"glenesha":[0,6,0.0],"hadeel":[0,766,0.5768],"haneen":[0,1244,0.619],"hend":[0,68,0.0],"iresha":[0,53,0.0],"ivane":[0,27,0.0],"jacara":[0,417,0.524],"jacleen":[0,30,0.0],"janitra":[0,6,0.0],"jaquisha":[0,218,0.4677],"jasamine":[0,265,0.4846],"jazell":[0,405,0.5215],"jazman":[11,329,0.4899],"joceline":[0,1576,0.6395],"joselynn":[0,1402,0.6293],"judea":[145,468,0.4256],"kailie":[0,1318,0.624],"kamiya":[0,3272,0.703],"kanasha":[0,30,0.0],"kanethia":[0,11,0.0],"kathrynne":[0,90,0.0],"katybeth":[0,11,0.0],"kehly":[0,21,0.0],"kendl":[0,16,0.0],"kentoria":[0,39,0.0],"keomi":[0,88,0.0],"kevi":[10,11,0.0],"khadejah":[0,285,0.491],"kinjal":[0,87,0.0],"kortny":[0,82,0.0],"lakera":[0,98,0.0],"latris":[0,6,0.0],"lawra":[0,6,0.0],"laynie":[0,2107,0.6647],"lindzie":[0,144,0.4317],"linsee":[0,11,0.0],"mahnaz":[0,26,0.0],"mahoganie":[0,84,0.0],"malloree":[0,261,0.4833],"markea":[0,79,0.0],"marquitte":[0,6,0.0],"maysha":[0,11,0.0],"megaan":[0,6,0.0],"miketa":[0,11,0.0],"miren":[0,50,0.0],"morgaine":[0,175,0.4486],"norrisa":[0,11,0.0],"nupur":[0,110,0.4083],"olicia":[0,23,0.0],"perel":[0,846,0.5855],"phyllicia":[0,135,0.4261],"raechal":[0,86,0.0],"requita":[0,22,0.0],"reshika":[0,6,0.0],"rickell":[0,159,0.4403],"roxxanne":[0,47,0.0],"sachelle":[0,6,0.0],"saige":[1097,11476,0.7484],"samanthe":[0,24,0.0],"seda":[0,188,0.4548],"shadiyah":[0,86,0.0],"shameera":[0,6,0.0],"shanari":[0,17,0.0],"sharesse":[0,24,0.0],"shateia":[0,6,0.0],"shauntavia":[0,149,0.4346],"shaylen":[32,580,0.5282],"sheene":[0,13,0.0],"sheeva":[0,40,0.0],"shiquana":[0,11,0.0],"shirena":[0,11,0.0],"shoko":[0,30,0.0],"shylene":[0,35,0.0],"staisha":[0,82,0.0],"suly":[0,80,0.0],"syntyche":[0,6,0.0],"takiah":[0,107,0.4059],"taylar":[27,2507,0.6735],"thida":[0,23,0.0],"tiela":[0,28,0.0],"trakelia":[0,6,0.0],"tyeka":[0,6,0.0],"tylynn":[94,615,0.4945],"tymber":[41,566,0.519],"vanezza":[0,39,0.0],"victorian":[0,98,0.0],"yanelle":[0,127,0.4208],"yarden":[97,131,0.271],"aamina":[0,415,0.5236],"abrea":[0,189,0.4553],"adaliz":[0,357,0.5105],"adianez":[0,65,0.0],"adreinne":[0,15,0.0],"aerielle":[0,207,0.4632],"ahleah":[0,114,0.4114],"aigner":[0,242,0.4768],"aledra":[0,5,0.0],"alexious":[0,41,0.0],"alicai":[0,20,0.0],"alinna":[0,631,0.56],"amandah":[0,44,0.0],"amannda":[0,23,0.0],"amberia":[0,74,0.0],"amicia":[0,125,0.4194],"amnah":[0,132,0.4241],"amora":[0,8151,0.7822],"anaiz":[0,384,0.5169],"analiz":[0,759,0.576],"anastazia":[0,880,0.5889],"anay":[1238,768,0.4076],"andreamarie":[0,15,0.0],"andreea":[0,322,0.5016],"andrielle":[0,56,0.0],"angely":[0,2843,0.6908],"aprilann":[0,15,0.0],"aracelys":[0,82,0.0],"arneisha":[0,124,0.4187],"arneshia":[0,123,0.418],"arryn":[34,91,0.3053],"ashanna":[0,94,0.0],"ashiley":[0,11,0.0],"ashima":[0,87,0.0],"ashtyn":[1995,6359,0.5971],"aubyn":[0,37,0.0],"audia":[0,67,0.0],"audriana":[0,5266,0.7443],"avigayil":[0,633,0.5603],"bailie":[0,1643,0.6431],"bhavika":[0,110,0.4083],"biana":[0,211,0.4649],"breonne":[0,45,0.0],"briena":[0,132,0.4241],"brione":[11,54,0.0],"britainy":[0,101,0.4009],"britlyn":[0,137,0.4273],"cailey":[0,3841,0.7169],"candys":[0,5,0.0],"carlicia":[0,118,0.4144],"carressa":[0,19,0.0],"cecia":[0,143,0.4311],"ceilia":[0,11,0.0],"cerrissa":[0,10,0.0],"chakevia":[0,5,0.0],"chaniece":[0,132,0.4241],"chantail":[0,5,0.0],"chasitee":[0,64,0.0],"chassica":[0,5,0.0],"chelsye":[0,114,0.4114],"chinitta":[0,5,0.0],"chrisanthi":[0,5,0.0],"chrystan":[0,11,0.0],"conesha":[0,27,0.0],"crisel":[0,24,0.0],"cristyle":[0,5,0.0],"crystalrose":[0,32,0.0],"curtia":[0,10,0.0],"cylie":[0,479,0.5361],"danilla":[0,5,0.0],"daniqua":[0,186,0.4539],"dariana":[0,4136,0.7233],"dashonna":[0,61,0.0],"dayanna":[0,3804,0.716],"deniesha":[0,98,0.0],"deshayla":[0,233,0.4735],"desheena":[0,5,0.0],"deyanna":[0,315,0.4997],"dioselina":[0,75,0.0],"dnielle":[0,5,0.0],"dominiqua":[0,80,0.0],"dominoe":[0,5,0.0],"domique":[68,139,0.311],"doniesha":[0,160,0.4408],"doraliz":[0,5,0.0],"dunya":[0,526,0.5442],"edony":[0,5,0.0],"edrica":[0,11,0.0],"ekta":[0,112,0.4098],"eliesha":[0,11,0.0],"elky":[0,207,0.4632],"emalia":[0,249,0.4792],"emanuelle":[196,195,0.2599],"emille":[0,5,0.0],"erena":[0,30,0.0],"fadwa":[0,17,0.0],"fateemah":[0,5,0.0],"ferrari":[18,45,0.0],"genavieve":[0,842,0.5851],"genisha":[0,34,0.0],"ghenet":[0,5,0.0],"ginae":[0,5,0.0],"goldi":[0,11,0.0],"helissa":[0,5,0.0],"hira":[0,656,0.5634],"ibeth":[0,408,0.5221],"indian":[0,5,0.0],"jackielyn":[0,15,0.0],"jacqlene":[0,10,0.0],"jacquelline":[0,17,0.0],"jakela":[0,54,0.0],"janesa":[0,322,0.5016],"jaqlyn":[0,64,0.0],"jasime":[0,116,0.4129],"jasleen":[0,2143,0.6662],"jaslin":[0,744,0.5743],"jazzlynn":[0,1641,0.643],"jeeyoung":[0,5,0.0],"jennalynn":[0,196,0.4585],"jennamarie":[0,194,0.4576],"jennilynn":[0,17,0.0],"jesska":[0,23,0.0],"jesyca":[0,84,0.0],"jorgina":[0,64,0.0],"joshalyn":[0,184,0.453],"joylynne":[0,5,0.0],"kabao":[0,117,0.4136],"kaelee":[0,1173,0.6139],"kaeleen":[0,76,0.0],"kaesha":[0,97,0.0],"kahli":[117,462,0.4409],"kailea":[0,987,0.5989],"kameesha":[0,45,0.0],"kanako":[0,51,0.0],"kanise":[0,29,0.0],"karleena":[0,26,0.0],"karlise":[0,5,0.0],"karlissa":[0,86,0.0],"karmisha":[0,5,0.0],"karnesha":[0,43,0.0],"karnisha":[0,80,0.0],"kashandra":[0,5,0.0],"katlynn":[0,3975,0.7199],"kavina":[0,86,0.0],"kawona":[0,5,0.0],"kaylle":[0,5,0.0],"keather":[0,28,0.0],"keerthi":[0,252,0.4803],"kehley":[0,10,0.0],"keiah":[0,5,0.0],"keirra":[0,1471,0.6335],"kelbe":[0,5,0.0],"kenyel":[0,5,0.0],"keshandra":[0,11,0.0],"keshara":[0,145,0.4323],"ketherine":[0,5,0.0],"keyasha":[0,129,0.4221],"kindsay":[0,5,0.0],"kistina":[0,5,0.0],"kolbi":[318,832,0.4429],"krystallee":[0,5,0.0],"kwanzaa":[5,34,0.0],"kyleah":[0,923,0.593],"kyndel":[28,463,0.5075],"lachante":[0,18,0.0],"lachara":[0,5,0.0],"lakoya":[0,11,0.0],"laneeka":[0,10,0.0],"lashieka":[0,18,0.0],"latari":[0,5,0.0],"latayvia":[0,86,0.0],"lateela":[0,5,0.0],"layoya":[0,12,0.0],"lindzy":[0,205,0.4624],"lirije":[0,5,0.0],"lissy":[0,96,0.0],"lizmarie":[0,518,0.5429],"lynnisha":[0,11,0.0],"lynse":[0,16,0.0],"lyzbeth":[0,63,0.0],"maayan":[22,605,0.5398],"macayla":[0,2189,0.668],"maggen":[0,5,0.0],"maghen":[0,108,0.4067],"maheen":[6,632,0.5557],"mailin":[0,238,0.4753],"majken":[0,5,0.0],"malari":[0,35,0.0],"maloree":[0,300,0.4954],"manada":[0,5,0.0],"markeyda":[0,16,0.0],"marquitha":[0,5,0.0],"marshonda":[0,5,0.0],"mashea":[0,5,0.0],"mekenzie":[0,1095,0.6079],"merete":[0,12,0.0],"merette":[0,5,0.0],"miakka":[0,5,0.0],"mikaila":[0,2384,0.6755],"mikeisha":[0,186,0.4539],"mikhaila":[0,522,0.5435],"mirlene":[0,5,0.0],"molika":[0,5,0.0],"mykala":[0,1291,0.6222],"mykell":[798,258,0.457],"nachele":[0,5,0.0],"nadera":[0,20,0.0],"naheed":[0,11,0.0],"naina":[0,730,0.5727],"nataysha":[0,43,0.0],"nayomi":[0,1343,0.6256],"nirva":[0,18,0.0],"odaliz":[0,269,0.486],"olubukola":[0,11,0.0],"pavelle":[0,5,0.0],"pegan":[0,12,0.0],"peria":[0,5,0.0],"phillicia":[0,34,0.0],"quanessa":[0,5,0.0],"quintara":[0,103,0.4026],"raelena":[0,43,0.0],"rahwa":[0,34,0.0],"rashundra":[0,21,0.0],"ravae":[0,33,0.0],"rayelle":[0,392,0.5187],"rekia":[0,62,0.0],"revea":[0,5,0.0],"ricketa":[0,12,0.0],"rodneshia":[0,75,0.0],"rolisha":[0,18,0.0],"ronecia":[0,36,0.0],"ronniesha":[0,116,0.4129],"rosamarie":[0,45,0.0],"roshea":[0,10,0.0],"rossy":[0,588,0.5539],"ruchama":[0,305,0.4969],"sagine":[0,5,0.0],"salicia":[0,30,0.0],"salihah":[0,75,0.0],"sanquita":[0,10,0.0],"saraanne":[0,21,0.0],"sarrina":[0,10,0.0],"sashia":[0,100,0.4],"satomi":[0,63,0.0],"savanaha":[0,30,0.0],"shakoya":[0,96,0.0],"shamae":[0,12,0.0],"shameerah":[0,10,0.0],"shametrice":[0,5,0.0],"shamirah":[0,218,0.4677],"shandricka":[0,77,0.0],"shanecia":[0,92,0.0],"shanecka":[0,5,0.0],"shaquea":[0,10,0.0],"shaquera":[0,119,0.4151],"sharray":[0,5,0.0],"shatanna":[0,16,0.0],"shaunae":[0,71,0.0],"shavita":[0,18,0.0],"shaynah":[0,113,0.4106],"shaza":[0,51,0.0],"sheenamarie":[0,26,0.0],"sheneice":[0,28,0.0],"sherkita":[0,5,0.0],"sherrea":[0,5,0.0],"shiena":[0,10,0.0],"shimekia":[0,5,0.0],"shioban":[0,5,0.0],"shoniqua":[0,41,0.0],"shynell":[0,10,0.0],"socheata":[0,12,0.0],"sophany":[0,11,0.0],"stehpanie":[0,10,0.0],"stevanie":[0,26,0.0],"sureena":[0,10,0.0],"tabathe":[0,5,0.0],"tabrisha":[0,10,0.0],"taishia":[0,11,0.0],"talayia":[0,105,0.4042],"taneishia":[0,12,0.0],"tangenika":[0,5,0.0],"tanida":[0,5,0.0],"tavona":[0,10,0.0],"tayanna":[0,615,0.5578],"taysia":[0,526,0.5442],"telica":[0,5,0.0],"temitayo":[88,39,0.2916],"tenara":[0,5,0.0],"teneasha":[0,5,0.0],"teshara":[0,56,0.0],"thawann":[0,5,0.0],"tiere":[0,5,0.0],"tigre":[0,5,0.0],"tijana":[0,69,0.0],"tishonna":[0,5,0.0],"tiyona":[0,114,0.4114],"trenecia":[0,40,0.0],"tresta":[0,5,0.0],"triona":[0,22,0.0],"triska":[0,5,0.0],"tyasia":[0,2194,0.6682],"tylyn":[100,268,0.3737],"tyniece":[0,28,0.0],"tyrica":[0,64,0.0],"ulyssa":[0,221,0.4689],"valin":[133,5,0.4125],"vlora":[0,44,0.0],"wadia":[0,5,0.0],"xiao":[6,65,0.0],"yanderi":[0,13,0.0],"yarelis":[0,702,0.5693],"yarenys":[0,5,0.0],"yazmyn":[0,280,0.4894],"yitta":[0,328,0.5032],"yizza":[0,5,0.0],"yubia":[0,34,0.0],"yurika":[0,105,0.4042],"zenab":[0,198,0.4593],"zer":[0,17,0.0],"zissel":[0,315,0.4997],"zuleyma":[0,929,0.5936],"adric":[469,0,0.5342],"jahaziel":[1587,0,0.6401],"koda":[6133,574,0.6998],"anterrio":[116,0,0.4129],"lyden":[79,0,0.0],"coleby":[225,0,0.4704],"jeovany":[504,0,0.5405],"jojuan":[123,0,0.418],"juwon":[392,0,0.5187],"yao":[108,0,0.4067],"allex":[177,71,0.3418],"izaiah":[14453,10,0.8315],"johua":[35,0,0.0],"matthey":[15,0,0.0],"niccolo":[1020,0,0.6017],"quisto":[9,0,0.0],"ragene":[9,45,0.0],"rithy":[64,0,0.0],"chatham":[155,44,0.3581],"jawaan":[199,0,0.4598],"tranel":[8,0,0.0],"vicken":[21,0,0.0],"yoshua":[565,0,0.5504],"akhil":[1804,0,0.6512],"antvan":[7,0,0.0],"brandn":[38,0,0.0],"corell":[27,0,0.0],"devane":[53,0,0.0],"faraaz":[71,0,0.0],"franciscojavier":[123,0,0.418],"franics":[7,0,0.0],"frisco":[174,0,0.4481],"jamayel":[7,0,0.0],"jameon":[67,0,0.0],"jeconiah":[7,0,0.0],"jiovanni":[2521,0,0.6803],"johnathin":[159,0,0.4403],"jyles":[70,0,0.0],"kadin":[5046,179,0.7181],"kashiff":[7,0,0.0],"kyl":[81,0,0.0],"mikail":[1180,15,0.6077],"naguan":[13,0,0.0],"nikkolas":[505,0,0.5407],"omair":[328,0,0.5032],"pinchos":[369,0,0.5134],"quintavious":[855,0,0.5864],"rayson":[258,0,0.4823],"sarath":[46,20,0.0],"yashar":[133,0,0.4248],"yerachmiel":[233,0,0.4735],"yousif":[1677,0,0.6449],"ahbleza":[6,0,0.0],"austan":[197,0,0.4589],"avedis":[85,0,0.0],"aydin":[6340,205,0.7393],"aymen":[472,17,0.5192],"benhamin":[18,0,0.0],"braiden":[7591,152,0.7625],"brndon":[29,0,0.0],"calab":[360,0,0.5113],"calan":[940,20,0.584],"cardel":[22,0,0.0],"chans":[32,0,0.0],"chevalier":[27,0,0.0],"corrigan":[204,45,0.3926],"dash":[4082,81,0.7098],"davidmichael":[153,0,0.4369],"deangleo":[57,0,0.0],"deboris":[11,0,0.0],"denarius":[357,0,0.5105],"deniel":[115,0,0.4121],"deronn":[11,0,0.0],"devario":[123,0,0.418],"devion":[1859,26,0.646],"dezmon":[860,0,0.5869],"dontario":[66,0,0.0],"edwing":[162,0,0.4419],"farrakhan":[11,0,0.0],"homas":[20,0,0.0],"jacquez":[1714,0,0.6468],"jard":[6,0,0.0],"javion":[6797,11,0.7654],"jayant":[126,0,0.4201],"jaymichael":[6,0,0.0],"jeanmichel":[42,0,0.0],"jeremial":[6,0,0.0],"joas":[273,0,0.4872],"johhny":[11,0,0.0],"joseroberto":[24,0,0.0],"kavi":[866,33,0.5691],"kayvan":[139,0,0.4286],"kein":[95,0,0.0],"kento":[517,0,0.5427],"klein":[353,0,0.5096],"kourosh":[186,0,0.4539],"lamaris":[14,0,0.0],"larod":[16,0,0.0],"luisangel":[1376,0,0.6277],"montavis":[145,0,0.4323],"oluwafemi":[251,0,0.4799],"razi":[123,5,0.405],"riaz":[121,0,0.4166],"samori":[66,5,0.0],"schneider":[327,0,0.5029],"sophal":[37,0,0.0],"talor":[196,552,0.4242],"tashiem":[6,0,0.0],"trandon":[29,0,0.0],"trevoris":[22,0,0.0],"yann":[335,0,0.505],"yuan":[160,37,0.3727],"zavian":[2133,0,0.6658],"zong":[95,22,0.3359],"achary":[32,0,0.0],"alexnader":[36,0,0.0],"alixander":[280,0,0.4894],"ananth":[234,0,0.4738],"ancelmo":[51,0,0.0],"aneel":[20,0,0.0],"angad":[819,0,0.5827],"anmol":[461,318,0.3422],"avigdor":[478,0,0.5359],"ayaz":[308,0,0.4977],"bassem":[72,0,0.0],"berek":[5,0,0.0],"bernado":[15,0,0.0],"besnik":[102,0,0.4017],"blayze":[1221,90,0.5807],"bobbylee":[15,0,0.0],"braderick":[5,0,0.0],"braedon":[3980,0,0.72],"brandall":[31,0,0.0],"brayon":[279,0,0.4891],"brenen":[318,0,0.5005],"brentton":[182,0,0.452],"brocton":[15,0,0.0],"brye":[42,10,0.0],"carig":[5,0,0.0],"caros":[17,0,0.0],"casanova":[185,0,0.4534],"chien":[5,0,0.0],"coady":[189,0,0.4553],"cotey":[141,0,0.4298],"cristos":[41,0,0.0],"cuitlahuac":[22,0,0.0],"daimar":[10,0,0.0],"dalano":[17,0,0.0],"daryk":[42,0,0.0],"dashone":[46,0,0.0],"daud":[264,0,0.4843],"dawit":[553,0,0.5485],"deaaron":[304,0,0.4966],"deantonio":[39,0,0.0],"deantony":[5,0,0.0],"deantre":[212,0,0.4653],"dekoven":[5,0,0.0],"denardo":[17,0,0.0],"deris":[22,0,0.0],"derrious":[91,0,0.0],"dhiren":[90,0,0.0],"dontra":[46,0,0.0],"emin":[576,0,0.5521],"emmanel":[5,0,0.0],"eulises":[314,0,0.4994],"ezechiel":[185,0,0.4534],"fahed":[152,0,0.4364],"farshad":[17,0,0.0],"flynt":[118,0,0.4144],"furqan":[128,0,0.4214],"giovonni":[1449,0,0.6322],"grigor":[197,0,0.4589],"hafiz":[128,0,0.4214],"hillip":[10,0,0.0],"huynh":[22,0,0.0],"imanuel":[342,0,0.5068],"iokepa":[83,0,0.0],"izak":[1818,0,0.6519],"jacori":[1041,12,0.5976],"jagjit":[21,0,0.0],"jamarius":[1809,0,0.6515],"jamaur":[10,0,0.0],"jashaun":[1292,0,0.6223],"javius":[226,0,0.4708],"joason":[5,0,0.0],"joevon":[171,0,0.4466],"johusa":[5,0,0.0],"jonathin":[101,0,0.4009],"jonnathon":[52,0,0.0],"jontez":[134,0,0.4254],"joseth":[209,0,0.464],"josian":[364,0,0.5122],"josten":[279,0,0.4891],"jourdain":[169,36,0.3812],"jovannie":[333,11,0.4911],"kaimana":[979,154,0.5278],"kamyar":[17,0,0.0],"kasem":[94,0,0.0],"kass":[70,0,0.0],"katon":[40,0,0.0],"kerek":[32,0,0.0],"keyur":[21,0,0.0],"kharis":[5,276,0.481],"kidd":[62,0,0.0],"koray":[130,0,0.4228],"landyn":[11690,1531,0.7288],"laquin":[5,0,0.0],"larnelle":[5,0,0.0],"lavall":[5,0,0.0],"lecharles":[10,0,0.0],"lemichael":[32,0,0.0],"lequentin":[10,0,0.0],"ludwin":[187,0,0.4544],"manan":[309,0,0.498],"mandela":[172,0,0.4471],"marcelous":[48,0,0.0],"markeem":[147,0,0.4335],"marquelle":[267,84,0.3872],"martae":[60,0,0.0],"maurese":[10,0,0.0],"meldrick":[50,0,0.0],"mergeron":[5,0,0.0],"mohd":[87,0,0.0],"muhannad":[102,0,0.4017],"mukhtar":[144,0,0.4317],"musab":[852,0,0.5861],"nicos":[36,0,0.0],"nthan":[5,0,0.0],"oel":[5,0,0.0],"peirre":[24,0,0.0],"pejman":[5,0,0.0],"piere":[40,0,0.0],"quade":[1344,0,0.6257],"quanell":[67,0,0.0],"quintarus":[20,0,0.0],"radhames":[49,0,0.0],"rafik":[58,0,0.0],"rambo":[143,0,0.4311],"ratha":[50,13,0.0],"rathana":[51,13,0.0],"regal":[55,25,0.0],"remmington":[411,266,0.3437],"renauldo":[5,0,0.0],"renso":[64,0,0.0],"robel":[700,0,0.569],"ruchir":[10,0,0.0],"rusten":[42,0,0.0],"ryanlee":[20,0,0.0],"ryosuke":[125,0,0.4194],"saam":[75,0,0.0],"sabu":[5,0,0.0],"sahand":[65,0,0.0],"sayer":[396,11,0.5078],"sequan":[337,0,0.5055],"shamaar":[34,0,0.0],"shehzad":[65,0,0.0],"shiv":[2101,0,0.6645],"shlomie":[138,0,0.428],"skyy":[138,1840,0.6133],"somnang":[62,0,0.0],"soriya":[5,373,0.5087],"steel":[826,0,0.5834],"stosh":[22,0,0.0],"taku":[37,0,0.0],"tarrel":[49,0,0.0],"tatton":[5,0,0.0],"tavarous":[28,0,0.0],"tavarris":[16,0,0.0],"thony":[5,0,0.0],"torrean":[50,0,0.0],"travonne":[122,0,0.4173],"trevaris":[102,0,0.4017],"turmaine":[5,0,0.0],"vien":[16,0,0.0],"wassim":[284,0,0.4907],"xang":[24,0,0.0],"ya":[5,34,0.0],"sade":[113,9887,0.791],"shardae":[0,1404,0.6295],"sharde":[0,978,0.5981],"sharday":[0,797,0.5803],"charde":[0,568,0.5509],"chardae":[0,700,0.569],"tempestt":[0,643,0.5616],"ikea":[9,580,0.5456],"shardai":[0,293,0.4934],"lakin":[438,1899,0.5475],"shadae":[0,892,0.5901],"topacio":[0,152,0.4364],"yarenis":[0,35,0.0],"catelyn":[0,2294,0.6721],"charday":[0,215,0.4665],"seirra":[0,887,0.5896],"caitlynn":[0,4935,0.7387],"sharayah":[0,615,0.5578],"ceaira":[0,562,0.5499],"tanairi":[0,203,0.4615],"miceala":[0,16,0.0],"ceira":[0,354,0.5098],"chandni":[0,400,0.5204],"domnique":[71,138,0.3064],"kateland":[0,659,0.5638],"ahley":[0,53,0.0],"ally":[17,10141,0.8],"andreika":[0,40,0.0],"brettney":[0,121,0.4166],"brittay":[0,69,0.0],"shaday":[0,350,0.5088],"tareva":[0,85,0.0],"caila":[0,1262,0.6202],"charda":[0,123,0.418],"micaella":[0,353,0.5096],"monchel":[0,56,0.0],"rekeisha":[0,23,0.0],"catlyn":[0,607,0.5566],"cushena":[0,20,0.0],"doninique":[19,73,0.0],"montanna":[28,896,0.5752],"shardea":[0,49,0.0],"shardee":[0,51,0.0],"ashtin":[1539,1221,0.3837],"brooklin":[5,2026,0.6599],"caly":[0,145,0.4323],"chardai":[0,127,0.4208],"jehnna":[0,15,0.0],"laurren":[0,85,0.0],"shaneria":[0,35,0.0],"abrina":[0,180,0.4511],"ashten":[1360,1151,0.3683],"ayaka":[0,442,0.5291],"bridney":[0,182,0.452],"brihany":[0,49,0.0],"brittnei":[0,128,0.4214],"ceirra":[0,573,0.5516],"ceria":[0,104,0.4034],"ciearra":[0,247,0.4785],"colbi":[69,571,0.5007],"cyndal":[0,225,0.4704],"cyndel":[0,155,0.4381],"damonique":[0,215,0.4665],"danique":[0,134,0.4254],"diandria":[0,31,0.0],"janely":[0,2069,0.6632],"jesalyn":[0,341,0.5066],"kaeley":[0,821,0.5829],"kaytlyn":[0,2716,0.6868],"kenecia":[0,68,0.0],"lakyn":[127,2959,0.6692],"leshae":[0,94,0.0],"mareshah":[0,32,0.0],"nicaela":[0,15,0.0],"shavana":[0,57,0.0],"siearra":[0,251,0.4799],"stphanie":[0,40,0.0],"tashayla":[0,432,0.5271],"ashleyanne":[0,67,0.0],"brettany":[0,133,0.4248],"britiney":[0,92,0.0],"cerra":[0,171,0.4466],"chanay":[0,61,0.0],"channy":[15,33,0.0],"charleigh":[0,9113,0.7919],"chitara":[0,47,0.0],"davielle":[0,75,0.0],"domonigue":[0,8,0.0],"jillmarie":[0,8,0.0],"kaileigh":[0,2749,0.6878],"kaitlen":[0,768,0.5771],"khandi":[0,47,0.0],"kristalynn":[0,152,0.4364],"lillianna":[0,6417,0.7615],"lizzete":[0,103,0.4026],"mariavictoria":[0,222,0.4693],"meyosha":[0,8,0.0],"nathali":[0,618,0.5582],"navy":[694,4968,0.6586],"nkauj":[0,14,0.0],"rilee":[412,3303,0.6348],"shadai":[0,283,0.4904],"shawntaya":[0,24,0.0],"shetara":[0,112,0.4098],"shrena":[0,23,0.0],"shundrika":[0,19,0.0],"siarra":[0,723,0.5718],"sitha":[5,8,0.0],"taisia":[0,95,0.0],"tassia":[0,15,0.0],"tuongvi":[0,35,0.0],"yaneris":[0,20,0.0],"abrianna":[0,4249,0.7257],"ainslee":[0,1536,0.6373],"aleese":[0,240,0.476],"alondria":[0,118,0.4144],"ambermarie":[0,76,0.0],"anatasia":[0,123,0.418],"annaalicia":[0,25,0.0],"annaleigh":[0,2756,0.6881],"antasia":[0,382,0.5164],"arionne":[0,180,0.4511],"ashlyne":[0,424,0.5255],"brittinie":[0,69,0.0],"caitlen":[0,383,0.5166],"calysta":[0,499,0.5396],"camry":[125,1393,0.5839],"catelin":[0,370,0.5136],"charnee":[0,83,0.0],"cheetara":[0,81,0.0],"chelcy":[0,183,0.4525],"cheyla":[0,324,0.5021],"chinenye":[0,182,0.452],"crystalmarie":[0,62,0.0],"daytona":[244,724,0.4466],"deamber":[0,186,0.4539],"deleena":[0,17,0.0],"elessa":[0,7,0.0],"foua":[0,24,0.0],"gissela":[0,234,0.4738],"hitomi":[0,113,0.4106],"ieashia":[0,29,0.0],"ilaisaane":[0,101,0.4009],"indea":[0,77,0.0],"jackelyne":[0,423,0.5253],"jaquanna":[0,185,0.4534],"kailynn":[15,4654,0.7315],"kallista":[0,875,0.5884],"kamrin":[1219,450,0.4707],"katelynd":[0,274,0.4876],"kayshia":[0,42,0.0],"keundra":[0,195,0.458],"keystle":[0,7,0.0],"kriselda":[0,29,0.0],"kristylee":[0,7,0.0],"krysteena":[0,79,0.0],"lacandice":[0,22,0.0],"lacarla":[0,12,0.0],"laiken":[508,1863,0.5304],"laporscha":[0,107,0.4059],"laquiesha":[0,94,0.0],"lathisa":[0,7,0.0],"manna":[0,212,0.4653],"marlicia":[0,70,0.0],"maryia":[0,31,0.0],"meenakshi":[0,479,0.5361],"meggi":[0,7,0.0],"mekayla":[0,1665,0.6443],"michea":[0,30,0.0],"mickala":[0,305,0.4969],"monchell":[0,23,0.0],"nadeige":[0,19,0.0],"nakendra":[0,52,0.0],"nashae":[0,228,0.4716],"navia":[0,604,0.5562],"peony":[0,105,0.4042],"poua":[0,7,0.0],"quanette":[0,7,0.0],"roxsana":[0,55,0.0],"sanquetta":[0,7,0.0],"santania":[0,16,0.0],"sarahlynn":[0,125,0.4194],"satyra":[0,7,0.0],"savahna":[0,132,0.4241],"seairra":[0,222,0.4693],"shameria":[0,208,0.4636],"shamire":[10,12,0.0],"shaquoia":[0,72,0.0],"sheenna":[0,12,0.0],"sherkia":[0,7,0.0],"shiesha":[0,62,0.0],"shonteria":[0,71,0.0],"taija":[0,822,0.583],"teenamarie":[0,7,0.0],"tenell":[0,7,0.0],"teosha":[0,119,0.4151],"thary":[0,12,0.0],"thavy":[0,17,0.0],"tylicia":[0,93,0.0],"vanessamarie":[0,40,0.0],"vinyette":[0,7,0.0],"yentel":[0,7,0.0],"yulia":[0,576,0.5521],"aerika":[0,80,0.0],"airiel":[0,145,0.4323],"aleyna":[0,2740,0.6876],"aliese":[0,124,0.4187],"amarily":[0,6,0.0],"anamda":[0,6,0.0],"aoife":[0,2093,0.6642],"aryana":[0,7236,0.7719],"ashlay":[0,57,0.0],"bittany":[0,22,0.0],"breaunna":[0,636,0.5607],"bretney":[0,44,0.0],"brianca":[0,550,0.5481],"brytni":[0,141,0.4298],"bryttany":[0,235,0.4742],"camarie":[21,229,0.4393],"cartney":[0,29,0.0],"cassadie":[0,174,0.4481],"catya":[0,11,0.0],"chaela":[0,231,0.4727],"chandara":[41,6,0.0],"charlisse":[0,24,0.0],"charnae":[0,418,0.5242],"chastine":[0,36,0.0],"chasya":[0,110,0.4083],"chelcee":[0,238,0.4753],"ciaira":[0,171,0.4466],"coralia":[0,51,0.0],"cornesha":[0,211,0.4649],"corvetta":[0,11,0.0],"curtissa":[0,13,0.0],"cyara":[0,266,0.485],"deerica":[0,151,0.4358],"deshae":[50,185,0.3733],"diadra":[0,6,0.0],"diandrea":[0,30,0.0],"diera":[0,88,0.0],"domineque":[15,26,0.0],"emylee":[0,664,0.5644],"endya":[0,282,0.49],"girl":[0,596,0.555],"itzia":[0,562,0.5499],"jacquleen":[0,6,0.0],"jameria":[0,942,0.5948],"jamianne":[0,6,0.0],"janequa":[0,104,0.4034],"janiesha":[0,87,0.0],"janneth":[0,440,0.5287],"jaquitta":[0,60,0.0],"jarica":[0,148,0.4341],"jazzmon":[0,106,0.4051],"jehna":[0,17,0.0],"jenalea":[0,6,0.0],"jontel":[31,20,0.0],"justene":[0,158,0.4397],"kaithlyn":[0,383,0.5166],"kalla":[0,320,0.501],"kayde":[593,337,0.3786],"keeyana":[0,32,0.0],"keishawna":[0,81,0.0],"kellisha":[0,33,0.0],"kelse":[0,91,0.0],"keniesha":[0,94,0.0],"kestrel":[27,296,0.4599],"keyaira":[0,905,0.5913],"khrystina":[0,94,0.0],"krisheena":[0,6,0.0],"krystelle":[0,191,0.4562],"kyera":[0,599,0.5555],"kystal":[0,22,0.0],"lacourtney":[0,48,0.0],"leteshia":[0,18,0.0],"liani":[0,872,0.5881],"lieren":[0,16,0.0],"lilyanne":[0,1613,0.6415],"linsday":[0,6,0.0],"litany":[0,6,0.0],"luvia":[0,81,0.0],"lyly":[0,115,0.4121],"macall":[0,88,0.0],"maddison":[53,23348,0.8719],"madyson":[0,13293,0.8247],"margalit":[0,169,0.4456],"marichelle":[0,11,0.0],"marigny":[0,78,0.0],"marison":[0,16,0.0],"marleigh":[0,5844,0.7533],"marlenne":[0,462,0.5329],"marsheena":[0,6,0.0],"meleane":[0,95,0.0],"melindasue":[0,6,0.0],"micale":[15,6,0.0],"mirra":[0,369,0.5134],"moneika":[0,6,0.0],"nachole":[0,11,0.0],"nasya":[0,1039,0.6033],"nichel":[0,18,0.0],"nikoleta":[0,81,0.0],"njideka":[0,11,0.0],"noga":[0,231,0.4727],"porshea":[0,63,0.0],"quentisha":[0,6,0.0],"rachelmarie":[0,23,0.0],"reham":[0,378,0.5155],"safiyah":[0,769,0.5772],"sahira":[0,583,0.5531],"sanah":[0,400,0.5204],"sarde":[0,31,0.0],"savanha":[0,134,0.4254],"seqouia":[0,42,0.0],"shalie":[0,147,0.4335],"shamonique":[0,98,0.0],"shaneia":[0,25,0.0],"shanicqua":[0,75,0.0],"shanterica":[0,76,0.0],"sharenna":[0,6,0.0],"shatyra":[0,204,0.4619],"shaughnessy":[5,91,0.0],"shauri":[0,48,0.0],"shavannah":[0,43,0.0],"shekeya":[0,6,0.0],"shontaya":[0,6,0.0],"shreena":[0,81,0.0],"shunteria":[0,22,0.0],"sokhom":[13,12,0.0],"sumera":[0,22,0.0],"takindra":[0,6,0.0],"teagen":[723,839,0.3431],"tearia":[0,140,0.4292],"teaundra":[0,18,0.0],"tempess":[0,11,0.0],"theary":[0,12,0.0],"tibisay":[0,6,0.0],"uchechi":[0,97,0.0],"yoselyn":[0,1785,0.6503],"yukari":[0,180,0.4511],"aamanda":[0,10,0.0],"aarthi":[0,104,0.4034],"adaira":[0,210,0.4644],"adnrea":[0,5,0.0],"afaf":[0,52,0.0],"afnan":[180,625,0.4512],"ahsha":[0,169,0.4456],"alixandria":[0,572,0.5515],"allanna":[0,270,0.4863],"allesandra":[0,166,0.444],"almetra":[0,5,0.0],"alsion":[0,17,0.0],"alxis":[0,16,0.0],"alycen":[0,63,0.0],"ambr":[0,10,0.0],"ambreia":[0,51,0.0],"ambriel":[0,289,0.4922],"andice":[0,5,0.0],"angelamaria":[0,5,0.0],"anik":[399,17,0.5024],"anjani":[0,218,0.4677],"annaliisa":[0,5,0.0],"anniemarie":[0,11,0.0],"annya":[0,449,0.5304],"antonea":[0,71,0.0],"argiro":[0,5,0.0],"arifa":[0,33,0.0],"ashlely":[0,5,0.0],"asleigh":[0,12,0.0],"atheena":[0,252,0.4803],"atie":[0,5,0.0],"aubrei":[0,770,0.5773],"averie":[263,13041,0.8085],"bethlehem":[0,463,0.5331],"brenae":[0,555,0.5489],"bresha":[0,159,0.4403],"britnei":[0,45,0.0],"britteney":[0,82,0.0],"brytney":[0,103,0.4026],"bryttani":[0,205,0.4624],"cacia":[0,26,0.0],"caela":[0,462,0.5329],"caitland":[0,96,0.0],"candrea":[0,11,0.0],"candyse":[0,10,0.0],"chadae":[0,29,0.0],"chalea":[0,41,0.0],"chantile":[0,5,0.0],"chardee":[0,18,0.0],"chardonnay":[0,643,0.5616],"charisha":[0,5,0.0],"charnay":[0,164,0.443],"charta":[0,5,0.0],"chatara":[0,102,0.4017],"chatoya":[0,19,0.0],"chealsey":[0,128,0.4214],"chennell":[0,5,0.0],"cheslie":[0,34,0.0],"chikara":[0,12,0.0],"chisty":[0,5,0.0],"corianna":[0,360,0.5113],"corneisha":[0,128,0.4214],"cosima":[0,320,0.501],"crystella":[0,16,0.0],"cynthiaann":[0,5,0.0],"dakesha":[0,11,0.0],"dalesia":[0,5,0.0],"danecia":[0,64,0.0],"danniella":[0,200,0.4602],"dashelle":[0,33,0.0],"davalyn":[0,16,0.0],"deara":[0,209,0.464],"deeandra":[0,72,0.0],"dequana":[0,34,0.0],"desirai":[0,70,0.0],"dhara":[0,588,0.5539],"dhyana":[0,115,0.4121],"dnaielle":[0,10,0.0],"domenik":[263,5,0.4766],"dominee":[0,5,0.0],"dominek":[17,5,0.0],"dominquie":[5,5,0.0],"dommonique":[0,5,0.0],"domonque":[0,5,0.0],"doray":[0,5,0.0],"dulse":[0,253,0.4806],"dyamond":[10,1207,0.612],"dystany":[0,94,0.0],"ebany":[0,122,0.4173],"eleena":[0,478,0.5359],"elektra":[0,810,0.5817],"eliscia":[0,17,0.0],"elysabeth":[0,192,0.4567],"emmalynn":[0,4638,0.7333],"ernesha":[0,64,0.0],"estera":[0,109,0.4075],"evyan":[0,5,0.0],"fallynn":[0,83,0.0],"farryn":[0,265,0.4846],"filisha":[0,5,0.0],"fionnuala":[0,158,0.4397],"flicia":[0,5,0.0],"folasade":[0,419,0.5244],"garcelle":[0,28,0.0],"geniffer":[0,5,0.0],"gyna":[0,5,0.0],"halana":[0,171,0.4466],"halleh":[0,5,0.0],"hollylynn":[0,5,0.0],"ikeia":[0,51,0.0],"ineisha":[0,35,0.0],"ishah":[0,10,0.0],"isra":[17,1622,0.6362],"jahmila":[0,41,0.0],"jaisa":[0,268,0.4856],"jalissa":[0,3505,0.7089],"jamena":[0,5,0.0],"jamisa":[0,26,0.0],"janeika":[0,30,0.0],"janesse":[0,20,0.0],"jaquelynn":[0,268,0.4856],"jaquila":[0,59,0.0],"jashira":[0,61,0.0],"jasine":[0,5,0.0],"jassmin":[0,299,0.4951],"jatara":[0,185,0.4534],"jatavia":[0,443,0.5293],"jazmaine":[0,179,0.4506],"jeannea":[0,5,0.0],"jennylyn":[0,12,0.0],"jeresa":[0,5,0.0],"jerria":[0,10,0.0],"jillia":[0,12,0.0],"joangela":[0,5,0.0],"johniece":[0,62,0.0],"jomara":[0,35,0.0],"josclyn":[0,56,0.0],"jssica":[0,11,0.0],"juanesha":[0,16,0.0],"kadeidra":[0,163,0.4424],"kaelah":[0,550,0.5481],"kaeleigh":[0,1418,0.6303],"kaetlyn":[0,536,0.5458],"kahley":[0,126,0.4201],"kailene":[0,229,0.472],"kaitland":[0,218,0.4677],"kallan":[741,373,0.4053],"kalysta":[0,580,0.5527],"kametria":[0,23,0.0],"karitza":[0,39,0.0],"karlesha":[0,21,0.0],"kassandre":[0,30,0.0],"kayliegh":[0,370,0.5136],"keiandra":[0,125,0.4194],"keiry":[0,1999,0.6602],"kellsey":[0,439,0.5285],"kemeshia":[0,5,0.0],"kendelle":[5,198,0.4501],"kenndra":[0,135,0.4261],"keyundra":[0,64,0.0],"khaleah":[0,430,0.5267],"kiala":[0,218,0.4677],"kieonna":[0,41,0.0],"kiirsten":[0,5,0.0],"kinzi":[0,291,0.4928],"kristinejoy":[0,5,0.0],"krystalmarie":[0,5,0.0],"krysteen":[0,5,0.0],"kymber":[0,1246,0.6191],"lachasity":[0,12,0.0],"ladaisha":[0,336,0.5053],"ladanna":[0,5,0.0],"ladreka":[0,5,0.0],"lakeria":[0,259,0.4827],"laparis":[5,139,0.4167],"laporche":[0,133,0.4248],"laporchia":[0,74,0.0],"lapria":[0,11,0.0],"laquasia":[0,162,0.4419],"laquite":[0,5,0.0],"lasasha":[0,162,0.4419],"laudan":[0,5,0.0],"laurenmarie":[0,23,0.0],"laysa":[0,88,0.0],"leahanna":[0,119,0.4151],"lecole":[0,5,0.0],"leeandrea":[0,12,0.0],"lenamarie":[0,16,0.0],"leneisha":[0,16,0.0],"lierin":[0,33,0.0],"liliano":[0,5,0.0],"lindse":[0,10,0.0],"loreana":[0,15,0.0],"makinzie":[0,886,0.5895],"maleaha":[0,190,0.4558],"mallerie":[0,84,0.0],"margulia":[0,5,0.0],"marlanda":[0,5,0.0],"marleina":[0,27,0.0],"marquasha":[0,106,0.4051],"marquella":[0,33,0.0],"me":[0,5,0.0],"mecaela":[0,10,0.0],"meghean":[0,5,0.0],"mehwish":[0,72,0.0],"meral":[0,212,0.4653],"miasia":[0,583,0.5531],"mickaela":[0,508,0.5412],"mickayla":[0,1864,0.6541],"mikeala":[0,347,0.5081],"mikenna":[0,1049,0.6042],"mirissa":[0,222,0.4693],"momoko":[0,150,0.4352],"moneisha":[0,140,0.4292],"myhanh":[0,14,0.0],"mykah":[1073,1344,0.3763],"myrlande":[0,5,0.0],"nairy":[0,5,0.0],"nakeena":[0,5,0.0],"nakyia":[0,234,0.4738],"nanisha":[0,10,0.0],"narah":[0,96,0.0],"natally":[0,424,0.5255],"natilee":[0,533,0.5453],"ncole":[0,5,0.0],"neghan":[0,5,0.0],"neysha":[0,132,0.4241],"ngocanh":[0,5,0.0],"nichoal":[0,5,0.0],"norelle":[0,136,0.4267],"nyshia":[0,53,0.0],"nyya":[0,37,0.0],"omolara":[0,123,0.418],"otavia":[0,17,0.0],"porcsha":[0,24,0.0],"pratima":[0,10,0.0],"puaolena":[0,5,0.0],"quinnita":[0,5,0.0],"rackel":[0,5,0.0],"rajani":[0,5,0.0],"ramia":[0,225,0.4704],"raniesha":[0,50,0.0],"ream":[0,23,0.0],"rebella":[0,15,0.0],"reggina":[0,19,0.0],"ricquita":[0,5,0.0],"ristin":[0,5,0.0],"rosaelena":[0,63,0.0],"roselina":[0,181,0.4515],"rothana":[6,5,0.0],"sabrea":[0,142,0.4305],"sadae":[0,72,0.0],"sadiyya":[0,5,0.0],"sairah":[0,195,0.458],"salote":[0,57,0.0],"samantah":[0,45,0.0],"sarica":[0,5,0.0],"saroun":[0,5,0.0],"sateria":[0,17,0.0],"satia":[0,68,0.0],"savahanna":[0,71,0.0],"savhanna":[0,166,0.444],"savoeun":[0,5,0.0],"seaira":[0,440,0.5287],"seara":[0,168,0.4451],"searra":[0,388,0.5178],"selenne":[0,63,0.0],"serria":[0,165,0.4435],"shadaya":[0,128,0.4214],"shaelene":[0,33,0.0],"shaelynn":[0,1924,0.6568],"shahanna":[0,5,0.0],"shakevia":[0,125,0.4194],"shakka":[0,5,0.0],"shalyce":[0,39,0.0],"shanaz":[0,37,0.0],"shaneaka":[0,11,0.0],"shannice":[0,48,0.0],"shantail":[0,10,0.0],"shanterra":[0,36,0.0],"shantiel":[0,5,0.0],"shantivia":[0,10,0.0],"shantya":[0,5,0.0],"shaqwana":[0,47,0.0],"shardey":[0,32,0.0],"shardi":[0,16,0.0],"sharkia":[0,10,0.0],"sharne":[0,94,0.0],"shaterrica":[0,157,0.4392],"shatrice":[0,33,0.0],"shaunel":[0,5,0.0],"shavina":[0,11,0.0],"shavonte":[48,233,0.4061],"shawnesha":[0,5,0.0],"sheema":[0,35,0.0],"sheilamarie":[0,10,0.0],"sheleena":[0,5,0.0],"shenisha":[0,11,0.0],"sherquita":[0,5,0.0],"sheterica":[0,5,0.0],"shiketa":[0,5,0.0],"shundreka":[0,17,0.0],"shuntavia":[0,61,0.0],"sierria":[0,225,0.4704],"sila":[0,473,0.535],"sophanna":[7,10,0.0],"suad":[5,270,0.479],"suman":[10,63,0.0],"taeisha":[0,25,0.0],"tairra":[0,46,0.0],"takendra":[0,23,0.0],"takeria":[0,312,0.4988],"talayah":[0,987,0.5989],"taleasha":[0,15,0.0],"tamare":[12,10,0.0],"tamillia":[0,5,0.0],"tamoya":[0,10,0.0],"tanera":[0,23,0.0],"taquoya":[0,5,0.0],"tarha":[0,5,0.0],"tashelle":[0,43,0.0],"tasnim":[10,817,0.5764],"teegan":[1561,1964,0.3953],"tehila":[0,892,0.5901],"teiara":[0,121,0.4166],"tesla":[98,2588,0.6608],"thoa":[0,5,0.0],"thyda":[0,19,0.0],"tierica":[0,29,0.0],"trenea":[0,10,0.0],"tychelle":[0,90,0.0],"tyerra":[0,176,0.4491],"tyesa":[0,5,0.0],"tynica":[0,5,0.0],"tyshelle":[0,10,0.0],"vidhya":[0,29,0.0],"vonessa":[0,5,0.0],"wilisha":[0,5,0.0],"wynonna":[0,469,0.5342],"yareli":[0,10357,0.803],"yennifer":[0,510,0.5415],"zafirah":[0,183,0.4525],"zasha":[0,213,0.4657],"rishawn":[137,0,0.4273],"sopheak":[38,0,0.0],"xavion":[2641,0,0.6844],"ikeem":[365,0,0.5125],"amadeus":[1615,0,0.6416],"tel":[194,0,0.4576],"alandis":[85,0,0.0],"camdon":[1026,0,0.6022],"narin":[32,16,0.0],"princeston":[381,0,0.5162],"adler":[3483,381,0.6467],"brentin":[181,0,0.4515],"jamorris":[167,0,0.4445],"jorgeluis":[401,0,0.5206],"kyson":[9305,0,0.7937],"orry":[377,0,0.5153],"paden":[1766,198,0.5922],"sedale":[108,0,0.4067],"sophat":[22,0,0.0],"terrail":[40,0,0.0],"benjamim":[84,0,0.0],"britian":[82,10,0.0],"jamarkus":[611,0,0.5572],"johnathn":[34,0,0.0],"jorda":[27,0,0.0],"kerron":[230,0,0.4723],"ladaris":[19,0,0.0],"parth":[2122,0,0.6653],"quashawn":[699,5,0.5655],"sophan":[8,0,0.0],"stephanos":[113,0,0.4106],"davarius":[332,0,0.5042],"ein":[227,0,0.4712],"herson":[522,0,0.5435],"jerryd":[48,0,0.0],"josa":[7,0,0.0],"juanalberto":[45,0,0.0],"kristoher":[7,0,0.0],"ladarian":[372,0,0.5141],"lor":[38,0,0.0],"marcal":[38,0,0.0],"marucs":[7,0,0.0],"matan":[834,0,0.5842],"mattison":[222,2320,0.6216],"mattlock":[7,0,0.0],"maxmillian":[198,0,0.4593],"nickos":[7,0,0.0],"rahmell":[7,0,0.0],"rattana":[7,0,0.0],"rhen":[320,172,0.3502],"sambath":[22,0,0.0],"sophana":[14,5,0.0],"takahiro":[104,0,0.4034],"talan":[3948,51,0.7112],"tarel":[18,0,0.0],"trell":[85,0,0.0],"tymel":[172,0,0.4471],"tyreik":[569,0,0.551],"yonas":[409,0,0.5223],"zaccary":[234,0,0.4738],"aadil":[432,0,0.5271],"adamm":[6,0,0.0],"alexan":[18,0,0.0],"alexaner":[28,0,0.0],"alfredrick":[6,0,0.0],"bashan":[16,0,0.0],"bayan":[115,1063,0.5543],"brnadon":[53,0,0.0],"brya":[6,347,0.5009],"bryston":[1146,0,0.6118],"bryton":[2992,210,0.6551],"burak":[352,0,0.5093],"carsen":[3981,1101,0.5806],"chinedum":[86,0,0.0],"chisholm":[22,0,0.0],"damorris":[11,0,0.0],"deontrae":[199,0,0.4598],"derion":[1027,49,0.5787],"derrelle":[36,0,0.0],"dexton":[483,0,0.5368],"dontarius":[375,0,0.5148],"dunte":[23,0,0.0],"dustn":[21,0,0.0],"dward":[6,0,0.0],"edurdo":[6,0,0.0],"faizan":[794,0,0.58],"gevin":[96,0,0.0],"griffen":[1790,0,0.6506],"haider":[1005,0,0.6004],"henrick":[327,0,0.5029],"humza":[1298,0,0.6227],"isaia":[473,0,0.535],"jahmai":[308,0,0.4977],"jahvon":[622,0,0.5588],"jamicheal":[335,0,0.505],"jaquis":[247,10,0.4632],"javarius":[834,0,0.5842],"jimell":[6,0,0.0],"jonathandavid":[67,0,0.0],"jonovan":[263,0,0.484],"josecarlos":[349,0,0.5086],"josheua":[6,0,0.0],"kereem":[11,0,0.0],"kinard":[34,0,0.0],"kirstopher":[6,0,0.0],"kyland":[832,10,0.5781],"ladarious":[422,0,0.5251],"lamaar":[6,0,0.0],"larelle":[14,20,0.0],"markale":[160,0,0.4408],"martize":[25,0,0.0],"michaelvincent":[34,0,0.0],"mortez":[30,0,0.0],"moustafa":[351,0,0.5091],"nochum":[283,0,0.4904],"nygel":[520,0,0.5432],"onterrio":[36,0,0.0],"quashon":[151,0,0.4358],"sauel":[14,0,0.0],"shie":[6,5,0.0],"tamaine":[6,0,0.0],"tavian":[2062,0,0.6629],"taylon":[1188,178,0.5454],"vatche":[25,0,0.0],"waqas":[72,0,0.0],"wojciech":[59,0,0.0],"yedidya":[145,0,0.4323],"aamil":[34,0,0.0],"absalon":[33,0,0.0],"adal":[397,0,0.5198],"adian":[1194,0,0.6154],"akeim":[50,0,0.0],"alesander":[22,0,0.0],"alez":[23,0,0.0],"alin":[144,498,0.4356],"andrewjames":[134,0,0.4254],"angelino":[362,0,0.5117],"antown":[11,0,0.0],"aquino":[13,0,0.0],"arsalan":[652,0,0.5628],"aser":[168,0,0.4451],"atreyu":[2618,0,0.6836],"benjmain":[11,0,0.0],"brandenn":[5,0,0.0],"brandonlee":[227,0,0.4712],"brenin":[195,5,0.4487],"brentyn":[236,0,0.4746],"briam":[38,0,0.0],"brodey":[1176,0,0.6141],"brodi":[797,162,0.4956],"bryceson":[501,0,0.54],"camacho":[5,0,0.0],"cayman":[994,256,0.4925],"chamroeun":[5,0,0.0],"christopherlee":[32,0,0.0],"cobin":[195,0,0.458],"colwyn":[58,0,0.0],"connan":[5,0,0.0],"corday":[193,0,0.4571],"corion":[335,0,0.505],"cutler":[1003,0,0.6003],"cyler":[646,5,0.5584],"dandrell":[5,0,0.0],"dantavius":[36,0,0.0],"darean":[56,26,0.0],"dasmond":[39,0,0.0],"davier":[278,0,0.4888],"davit":[314,0,0.4994],"daytron":[33,0,0.0],"dearon":[21,0,0.0],"delontae":[177,0,0.4496],"demerius":[154,0,0.4375],"dequarius":[348,0,0.5083],"devarus":[36,0,0.0],"diaz":[80,0,0.0],"dinero":[504,0,0.5405],"distin":[5,0,0.0],"domminic":[33,0,0.0],"donovin":[794,0,0.58],"donvan":[12,0,0.0],"drey":[437,0,0.5281],"dyshaun":[68,0,0.0],"edrian":[356,0,0.5103],"ericberto":[79,0,0.0],"erkan":[5,0,0.0],"fredis":[189,0,0.4553],"fredo":[10,0,0.0],"gladimir":[12,0,0.0],"gullermo":[5,0,0.0],"harinder":[10,0,0.0],"her":[16,0,0.0],"hovsep":[33,0,0.0],"hugues":[10,0,0.0],"huriel":[277,0,0.4885],"husayn":[186,0,0.4539],"hykeem":[319,0,0.5008],"idelfonso":[5,0,0.0],"ioanis":[5,0,0.0],"iosif":[43,0,0.0],"jabarri":[325,0,0.5024],"jamarion":[7539,0,0.7755],"jamarrio":[12,0,0.0],"jamesedward":[40,0,0.0],"jardin":[5,7,0.0],"jarette":[35,0,0.0],"jarit":[5,0,0.0],"jashan":[296,5,0.4875],"jaymeson":[714,28,0.5524],"jayquan":[1716,0,0.6469],"jerrud":[11,0,0.0],"jhamal":[56,0,0.0],"jodan":[27,0,0.0],"joelouis":[5,0,0.0],"johnadam":[5,0,0.0],"johnanthan":[10,0,0.0],"johnphillip":[11,0,0.0],"joshuamichael":[54,0,0.0],"josjeph":[5,0,0.0],"juante":[5,0,0.0],"junho":[5,0,0.0],"jurel":[15,0,0.0],"justion":[10,0,0.0],"karter":[28187,4330,0.7823],"kashaun":[392,0,0.5187],"kees":[141,0,0.4298],"kenroy":[56,0,0.0],"keyo":[15,0,0.0],"khayyam":[10,0,0.0],"kiplin":[5,0,0.0],"ko":[75,10,0.0],"kota":[960,138,0.5317],"kvin":[10,0,0.0],"lauar":[5,0,0.0],"leeander":[5,0,0.0],"luiscarlos":[116,0,0.4129],"mahyar":[15,0,0.0],"marbin":[153,0,0.4369],"marquail":[177,0,0.4496],"marquarius":[166,0,0.444],"marquay":[213,0,0.4657],"martellis":[10,0,0.0],"martrel":[15,0,0.0],"maxamillion":[452,0,0.531],"mizraim":[113,0,0.4106],"mohanad":[180,0,0.4511],"moiz":[236,0,0.4746],"montrelle":[102,0,0.4017],"mycheal":[101,0,0.4009],"nail":[39,0,0.0],"nainoa":[599,0,0.5555],"nazir":[3758,0,0.715],"nickelous":[15,0,0.0],"obrain":[5,0,0.0],"olabode":[5,0,0.0],"paulanthony":[136,0,0.4267],"pranay":[470,0,0.5344],"quantarius":[118,0,0.4144],"quason":[28,0,0.0],"quentez":[76,0,0.0],"qushawn":[20,0,0.0],"ransen":[5,0,0.0],"rehman":[141,0,0.4298],"rith":[5,0,0.0],"rolandas":[5,0,0.0],"ruy":[24,0,0.0],"ryheem":[227,0,0.4712],"ryu":[1624,5,0.6404],"sadarian":[5,0,0.0],"sahib":[756,53,0.5435],"salam":[128,260,0.347],"samory":[26,0,0.0],"samuele":[248,0,0.4789],"saroeun":[10,0,0.0],"savvas":[84,0,0.0],"shankar":[80,0,0.0],"shawntez":[119,0,0.4151],"shayon":[102,7,0.3813],"shyler":[102,164,0.299],"skyeler":[115,122,0.2445],"stevyn":[16,0,0.0],"tarez":[110,0,0.4083],"tarique":[337,0,0.5055],"taureon":[10,0,0.0],"tawain":[10,0,0.0],"teppei":[5,0,0.0],"tequan":[407,0,0.5219],"thoeun":[10,0,0.0],"tiernan":[1452,195,0.5672],"travian":[331,0,0.504],"travonta":[119,0,0.4151],"trentin":[1300,0,0.6228],"trevion":[3178,0,0.7004],"trevonte":[606,0,0.5565],"turell":[11,0,0.0],"tylen":[1737,20,0.6416],"vibol":[5,0,0.0],"wissam":[250,0,0.4796],"zavion":[3167,0,0.7001],"zebariah":[5,0,0.0],"ziv":[236,5,0.4665],"myleka":[0,71,0.0],"chetara":[0,73,0.0],"elyana":[0,2051,0.6624],"aasha":[0,379,0.5157],"cayleigh":[0,2270,0.6712],"fiorela":[0,158,0.4397],"birttany":[0,51,0.0],"khandice":[0,34,0.0],"martika":[0,1077,0.6064],"shaquenta":[0,13,0.0],"sieara":[0,141,0.4298],"britanee":[0,129,0.4221],"britnay":[0,120,0.4158],"jatanna":[0,25,0.0],"oprah":[0,99,0.0],"quindara":[0,17,0.0],"sylwia":[0,119,0.4151],"brentney":[0,107,0.4059],"madisen":[0,5052,0.7407],"marlesa":[0,11,0.0],"tereva":[0,11,0.0],"ashleylynn":[0,34,0.0],"blyss":[0,189,0.4553],"brittanyann":[0,118,0.4144],"cymone":[0,506,0.5408],"derisha":[0,52,0.0],"diamonique":[0,984,0.5986],"eiliana":[0,71,0.0],"ellesse":[0,111,0.4091],"elliana":[0,25942,0.8828],"jianna":[0,4043,0.7213],"krystena":[0,92,0.0],"laporsche":[0,118,0.4144],"racel":[0,10,0.0],"rifky":[0,467,0.5339],"tiaria":[0,92,0.0],"brittannie":[0,63,0.0],"brittinee":[0,56,0.0],"cierria":[0,128,0.4214],"cyndle":[0,30,0.0],"darneisha":[0,184,0.453],"divinity":[0,1121,0.6099],"fiera":[0,28,0.0],"hayleigh":[0,5497,0.748],"janelly":[0,2427,0.677],"joselyne":[0,1153,0.6124],"kaliegh":[0,416,0.5238],"maricsa":[0,101,0.4009],"nayely":[0,2665,0.6851],"stefoni":[0,9,0.0],"temara":[0,61,0.0],"yanai":[42,99,0.3018],"aamber":[0,14,0.0],"abbigayle":[0,1324,0.6244],"alyxandria":[0,599,0.5555],"brittnea":[0,38,0.0],"calizza":[0,8,0.0],"cearra":[0,337,0.5055],"chiquitia":[0,8,0.0],"dierra":[0,438,0.5283],"elasha":[0,62,0.0],"emmaly":[0,620,0.5585],"faran":[6,24,0.0],"ferran":[127,18,0.3786],"jessicarose":[0,24,0.0],"karesse":[0,18,0.0],"kaylei":[0,2118,0.6652],"keairra":[0,413,0.5232],"keyera":[0,885,0.5894],"kristinamarie":[0,39,0.0],"latece":[0,21,0.0],"nakitta":[0,25,0.0],"navneet":[28,260,0.4441],"nieasha":[0,13,0.0],"ninoshka":[0,124,0.4187],"phylecia":[0,22,0.0],"rafaella":[0,757,0.5758],"roniesha":[0,178,0.4501],"sabella":[0,1297,0.6226],"sarissa":[0,108,0.4067],"shardell":[0,30,0.0],"sharnese":[0,82,0.0],"shyana":[0,264,0.4843],"siham":[0,746,0.5745],"sothea":[18,8,0.0],"tanairy":[0,117,0.4136],"whitnei":[0,31,0.0],"whittany":[0,129,0.4221],"zyanya":[0,580,0.5527],"abagael":[0,210,0.4644],"alianna":[0,5257,0.7441],"allise":[0,42,0.0],"amandamarie":[0,77,0.0],"analisha":[0,37,0.0],"ankita":[0,518,0.5429],"antania":[0,348,0.5083],"applonia":[0,7,0.0],"breahna":[0,521,0.5434],"briteny":[0,67,0.0],"britlany":[0,13,0.0],"brytani":[0,79,0.0],"cailee":[0,1759,0.6491],"callyn":[18,545,0.5325],"caylyn":[0,445,0.5297],"ceiara":[0,49,0.0],"chantall":[0,39,0.0],"chaquitta":[0,7,0.0],"cindal":[0,7,0.0],"cyndil":[0,7,0.0],"dahiana":[0,293,0.4934],"dameshia":[0,58,0.0],"dariela":[0,871,0.588],"dawnee":[0,12,0.0],"debony":[0,31,0.0],"dominice":[0,7,0.0],"endea":[0,30,0.0],"ericalynn":[0,7,0.0],"fantasha":[0,64,0.0],"fashionette":[0,28,0.0],"hiral":[0,89,0.0],"indica":[0,669,0.5651],"jakea":[0,25,0.0],"jamyla":[0,714,0.5707],"jaqua":[73,28,0.2897],"jaquala":[0,200,0.4602],"jesssica":[0,7,0.0],"kallyn":[0,439,0.5285],"kashayla":[0,209,0.464],"kateisha":[0,26,0.0],"kayelyn":[0,289,0.4922],"keora":[0,86,0.0],"keyunna":[0,174,0.4481],"kirti":[0,69,0.0],"krustal":[0,7,0.0],"kylynn":[82,1294,0.5903],"kyndle":[12,522,0.5332],"lashayna":[0,22,0.0],"leamber":[0,19,0.0],"linze":[0,17,0.0],"lionela":[0,17,0.0],"mallari":[0,21,0.0],"mariesha":[0,128,0.4214],"mavra":[0,7,0.0],"meahan":[0,7,0.0],"meghna":[0,679,0.5664],"merisha":[0,34,0.0],"michayla":[0,1399,0.6292],"monchelle":[0,17,0.0],"naquana":[0,19,0.0],"nataleigh":[0,1489,0.6346],"nehemie":[0,266,0.485],"olamide":[292,306,0.2842],"phalla":[0,7,0.0],"rodnesha":[0,225,0.4704],"samartha":[0,7,0.0],"samijo":[0,28,0.0],"sareth":[12,20,0.0],"shacole":[0,39,0.0],"shadea":[0,52,0.0],"shambria":[0,165,0.4435],"shande":[12,7,0.0],"shanquetta":[0,34,0.0],"shantice":[0,125,0.4194],"shardia":[0,7,0.0],"shellby":[0,496,0.5391],"shequana":[0,31,0.0],"sierrah":[0,1145,0.6118],"surie":[0,182,0.452],"tallia":[0,183,0.4525],"thuyvi":[0,28,0.0],"vikita":[0,7,0.0],"whiteny":[0,29,0.0],"whitny":[0,28,0.0],"yanely":[0,1634,0.6427],"aasiya":[0,270,0.4863],"aferdita":[0,6,0.0],"agela":[0,6,0.0],"alaia":[11,15356,0.8367],"alencia":[0,112,0.4098],"alexsia":[0,347,0.5081],"alyia":[0,520,0.5432],"alyxandra":[0,742,0.5741],"anayeli":[0,2565,0.6818],"annarosa":[0,28,0.0],"antrese":[0,6,0.0],"aquina":[0,6,0.0],"ashden":[339,16,0.4871],"ashlon":[5,68,0.0],"aubrianne":[0,164,0.443],"baley":[103,333,0.4032],"brithany":[0,764,0.5766],"britiny":[0,66,0.0],"brittine":[0,31,0.0],"brittoni":[0,28,0.0],"caci":[0,116,0.4129],"candiance":[0,6,0.0],"candic":[0,11,0.0],"cassye":[0,6,0.0],"cayse":[75,20,0.0],"cerria":[0,102,0.4017],"chany":[0,1265,0.6204],"chardell":[0,11,0.0],"chesnee":[0,223,0.4697],"cheyna":[0,124,0.4187],"cristalina":[0,12,0.0],"dakeisha":[0,18,0.0],"darria":[0,164,0.443],"destri":[5,26,0.0],"domeeka":[0,6,0.0],"elsi":[0,417,0.524],"emeli":[0,1385,0.6283],"emmaleigh":[0,2522,0.6803],"emmalie":[0,776,0.578],"felizia":[0,6,0.0],"generra":[0,41,0.0],"gisette":[0,6,0.0],"hailley":[0,455,0.5316],"haylea":[0,817,0.5824],"ireion":[0,6,0.0],"jaimielee":[0,6,0.0],"jaquice":[0,6,0.0],"jasmia":[0,89,0.0],"jazlynn":[0,7853,0.779],"julyana":[0,259,0.4827],"jussica":[0,6,0.0],"kace":[2967,31,0.6882],"kachet":[0,6,0.0],"kanae":[0,126,0.4201],"katiemarie":[0,28,0.0],"kaylla":[0,197,0.4589],"kelty":[0,144,0.4317],"kentrina":[0,6,0.0],"kharisma":[0,462,0.5329],"krisztina":[0,27,0.0],"krystalle":[0,74,0.0],"krystiana":[0,432,0.5271],"lajessica":[0,53,0.0],"lakrystal":[0,38,0.0],"lakyra":[0,322,0.5016],"lakyshia":[0,6,0.0],"lashaina":[0,18,0.0],"lizzieann":[0,52,0.0],"luscious":[0,6,0.0],"lutece":[0,17,0.0],"lyndzie":[0,138,0.428],"machaela":[0,419,0.5244],"madisyn":[5,17203,0.8469],"maesha":[0,11,0.0],"malaree":[0,33,0.0],"maribella":[0,799,0.5805],"marieclaire":[0,73,0.0],"markila":[0,12,0.0],"marnina":[0,6,0.0],"maryjoy":[0,39,0.0],"mayraalejandra":[0,53,0.0],"mayuri":[0,167,0.4445],"meilin":[0,331,0.504],"miche":[0,73,0.0],"mikiela":[0,12,0.0],"mirelys":[0,22,0.0],"najia":[0,268,0.4856],"nakitia":[0,6,0.0],"nieisha":[0,13,0.0],"pachia":[0,200,0.4602],"parissa":[0,92,0.0],"quintoria":[0,38,0.0],"racquell":[0,35,0.0],"raneesha":[0,19,0.0],"ryleigh":[429,34242,0.8968],"sammyjo":[0,24,0.0],"samon":[11,66,0.0],"sanisha":[0,23,0.0],"seini":[0,66,0.0],"seteria":[0,11,0.0],"shabre":[0,61,0.0],"shadara":[0,61,0.0],"shakeithia":[0,17,0.0],"shakirra":[0,138,0.428],"shantasia":[0,278,0.4888],"shaquida":[0,34,0.0],"shaquoya":[0,95,0.0],"shardaye":[0,17,0.0],"shataria":[0,78,0.0],"shaterika":[0,52,0.0],"sheira":[0,12,0.0],"shelbee":[0,602,0.5559],"sophorn":[0,11,0.0],"sovanna":[6,29,0.0],"tareena":[0,6,0.0],"tiasia":[0,455,0.5316],"tysheika":[0,12,0.0],"vannah":[0,155,0.4381],"veridiana":[0,17,0.0],"vonmarie":[0,6,0.0],"weslyn":[128,559,0.4617],"yareni":[0,631,0.56],"yasmen":[0,224,0.47],"yurie":[0,17,0.0],"zinab":[0,46,0.0],"zuly":[0,500,0.5398],"aber":[0,5,0.0],"abisola":[0,117,0.4136],"adaire":[0,50,0.0],"akeena":[0,29,0.0],"akendra":[0,5,0.0],"alahna":[0,1109,0.609],"aleca":[0,5,0.0],"aleysha":[0,575,0.5519],"aleza":[0,67,0.0],"aliciamarie":[0,12,0.0],"amirh":[0,5,0.0],"analy":[0,2186,0.6679],"anastaisa":[0,112,0.4098],"anays":[0,91,0.0],"andrietta":[0,5,0.0],"aneela":[0,24,0.0],"anelise":[0,537,0.546],"annelyse":[0,405,0.5215],"antea":[0,5,0.0],"araba":[0,10,0.0],"arlett":[0,1186,0.6148],"aryka":[0,167,0.4445],"ashaley":[0,49,0.0],"ashee":[0,5,0.0],"ashi":[0,23,0.0],"atalia":[0,922,0.5929],"athryn":[0,10,0.0],"attallah":[0,60,0.0],"aunya":[0,120,0.4158],"ayah":[5,4497,0.7299],"beeta":[0,26,0.0],"blimy":[0,884,0.5893],"brany":[0,36,0.0],"breanah":[0,216,0.4669],"breianne":[0,11,0.0],"breyanna":[0,1364,0.627],"britanni":[0,57,0.0],"britnye":[0,11,0.0],"brittanye":[0,41,0.0],"brittnae":[0,72,0.0],"brittneyann":[0,17,0.0],"bryttney":[0,62,0.0],"caitin":[0,21,0.0],"caitlain":[0,84,0.0],"cambrie":[0,2293,0.6721],"camrin":[1046,226,0.5106],"canace":[0,5,0.0],"caresha":[0,5,0.0],"cashara":[0,15,0.0],"cathylee":[0,5,0.0],"caydee":[0,216,0.4669],"caytlin":[0,282,0.49],"celisha":[0,5,0.0],"chada":[0,5,0.0],"chakelia":[0,5,0.0],"chalia":[0,18,0.0],"chamille":[0,74,0.0],"chania":[0,360,0.5113],"chaning":[13,14,0.0],"chantrel":[0,11,0.0],"chardey":[0,5,0.0],"chare":[0,5,0.0],"charnea":[0,24,0.0],"charney":[0,11,0.0],"charona":[0,5,0.0],"charrelle":[0,16,0.0],"charvon":[0,5,0.0],"chaurice":[0,5,0.0],"chave":[0,5,0.0],"chellsie":[0,70,0.0],"chentel":[0,15,0.0],"christalynn":[0,58,0.0],"christielee":[0,5,0.0],"cieria":[0,52,0.0],"cintya":[0,142,0.4305],"claryssa":[0,220,0.4685],"colesha":[0,5,0.0],"collete":[0,10,0.0],"coralito":[0,5,0.0],"cristia":[0,5,0.0],"cristyna":[0,5,0.0],"curtney":[0,5,0.0],"cyan":[376,1097,0.4719],"daelyn":[800,1598,0.4505],"daija":[0,3060,0.6971],"damira":[0,228,0.4716],"daneesha":[0,72,0.0],"daniellemarie":[0,16,0.0],"danit":[0,15,0.0],"darshelle":[0,5,0.0],"dely":[0,5,0.0],"deneishia":[0,5,0.0],"destyni":[0,1080,0.6067],"devinne":[0,174,0.4481],"dianita":[0,5,0.0],"diaundra":[0,5,0.0],"dieu":[0,22,0.0],"dinae":[0,15,0.0],"dineshia":[0,10,0.0],"dipali":[0,16,0.0],"donneisha":[0,83,0.0],"dyneshia":[0,75,0.0],"dyonna":[0,134,0.4254],"elani":[0,2163,0.667],"elziabeth":[0,12,0.0],"emmalea":[0,459,0.5324],"empress":[0,1668,0.6444],"ereca":[0,5,0.0],"erickia":[0,5,0.0],"eriel":[99,696,0.5078],"erikah":[0,306,0.4971],"evelise":[0,77,0.0],"fahm":[0,5,0.0],"fairen":[0,20,0.0],"fana":[0,12,0.0],"fauzia":[0,16,0.0],"ferin":[0,10,0.0],"ferren":[0,5,0.0],"finessa":[0,5,0.0],"fritzy":[0,10,0.0],"gaberielle":[0,11,0.0],"gabrille":[0,160,0.4408],"gaitlin":[0,28,0.0],"galathia":[0,5,0.0],"gerica":[0,132,0.4241],"giavonna":[0,1285,0.6218],"gissette":[0,15,0.0],"gresia":[0,89,0.0],"guiselle":[0,151,0.4358],"jaimelee":[0,20,0.0],"jakesha":[0,29,0.0],"jameice":[0,16,0.0],"jamilka":[0,5,0.0],"jandel":[269,5,0.4787],"janyll":[0,35,0.0],"jasmane":[0,81,0.0],"jatia":[0,113,0.4106],"jazel":[21,665,0.5499],"jennalea":[0,10,0.0],"jennarae":[0,37,0.0],"jennarose":[0,22,0.0],"jeorgina":[0,10,0.0],"jericha":[0,222,0.4693],"jeseca":[0,10,0.0],"jessena":[0,12,0.0],"jherica":[0,53,0.0],"jimmeka":[0,5,0.0],"jinette":[0,5,0.0],"josei":[0,5,0.0],"jossalyn":[0,352,0.5093],"journee":[172,16931,0.8381],"justinia":[0,5,0.0],"kaddie":[0,37,0.0],"kadeisha":[0,120,0.4158],"kadija":[0,598,0.5553],"kaelen":[726,340,0.4124],"kahea":[0,15,0.0],"kaitlynne":[0,929,0.5936],"kambrie":[0,1150,0.6121],"karlea":[0,248,0.4789],"karrine":[0,57,0.0],"karris":[0,180,0.4511],"kashea":[0,36,0.0],"katelen":[0,221,0.4689],"katielyn":[0,49,0.0],"katilin":[0,155,0.4381],"katlynd":[0,39,0.0],"keiera":[0,179,0.4506],"keley":[0,22,0.0],"kellsie":[0,521,0.5434],"kendia":[0,52,0.0],"kensi":[0,752,0.5752],"kenyeta":[0,10,0.0],"kerria":[0,180,0.4511],"keshondra":[0,22,0.0],"kevonna":[0,294,0.4937],"kewania":[0,5,0.0],"khandis":[0,5,0.0],"khandra":[0,5,0.0],"khushbu":[0,133,0.4248],"kirbee":[0,5,0.0],"korea":[0,298,0.4948],"krystalin":[0,33,0.0],"krystallyn":[0,10,0.0],"krystyne":[0,96,0.0],"kyllie":[0,204,0.4619],"kyre":[636,35,0.5359],"ladeidre":[0,5,0.0],"lakedria":[0,28,0.0],"lakreshia":[0,24,0.0],"lakrista":[0,57,0.0],"lamyra":[0,125,0.4194],"lariesha":[0,5,0.0],"lashari":[0,16,0.0],"laterika":[0,36,0.0],"latiana":[0,181,0.4515],"latiqua":[0,58,0.0],"latrea":[0,10,0.0],"laurenn":[0,11,0.0],"lemisha":[0,5,0.0],"lendsey":[0,22,0.0],"lesheena":[0,5,0.0],"lexanne":[0,5,0.0],"lindamaria":[0,5,0.0],"llanet":[0,5,0.0],"lonnisha":[0,30,0.0],"lunden":[248,351,0.3255],"lushus":[0,5,0.0],"mackenna":[8,3612,0.7102],"magean":[0,20,0.0],"maike":[5,5,0.0],"maily":[0,550,0.5481],"mailynn":[0,227,0.4712],"maisah":[0,17,0.0],"makda":[0,64,0.0],"makensie":[0,692,0.568],"malery":[0,39,0.0],"mally":[0,167,0.4445],"manijeh":[0,5,0.0],"manisa":[0,16,0.0],"mariagrazia":[0,5,0.0],"markiea":[0,11,0.0],"marlesha":[0,46,0.0],"marlynda":[0,5,0.0],"marnique":[0,15,0.0],"martrina":[0,5,0.0],"meagann":[0,10,0.0],"megam":[0,5,0.0],"melanieann":[0,10,0.0],"meli":[0,176,0.4491],"melorie":[0,10,0.0],"meradith":[0,41,0.0],"merav":[0,23,0.0],"merly":[0,242,0.4768],"mieasha":[0,17,0.0],"misato":[0,40,0.0],"morriah":[0,41,0.0],"mouna":[0,58,0.0],"mylisha":[0,42,0.0],"myrissa":[0,358,0.5108],"nabihah":[0,37,0.0],"nabilah":[0,93,0.0],"naquitta":[0,5,0.0],"nataley":[0,618,0.5582],"naura":[0,10,0.0],"nikaela":[0,73,0.0],"nikata":[0,5,0.0],"nikira":[0,105,0.4042],"nishika":[0,191,0.4562],"nissi":[0,588,0.5539],"padmini":[0,5,0.0],"perscilla":[0,5,0.0],"pharren":[0,5,0.0],"polixeni":[0,5,0.0],"presious":[0,43,0.0],"quasheema":[0,5,0.0],"raeana":[0,239,0.4757],"raedawn":[0,21,0.0],"raemona":[0,5,0.0],"raequel":[0,5,0.0],"rakeshia":[0,53,0.0],"raksmey":[0,5,0.0],"randalle":[0,5,0.0],"raneshia":[0,96,0.0],"raquisha":[0,5,0.0],"raycine":[0,5,0.0],"resheena":[0,11,0.0],"rianon":[0,5,0.0],"rickea":[0,26,0.0],"rodnisha":[0,69,0.0],"roneika":[0,5,0.0],"roshika":[0,10,0.0],"sacia":[0,11,0.0],"sadea":[0,5,0.0],"saki":[11,308,0.4835],"salonge":[0,5,0.0],"samamtha":[0,92,0.0],"saraelizabeth":[0,20,0.0],"shabreka":[0,70,0.0],"shabrika":[0,10,0.0],"shadera":[0,10,0.0],"shadora":[0,26,0.0],"shaguanna":[0,5,0.0],"shandreika":[0,5,0.0],"shanethia":[0,24,0.0],"shaneya":[0,60,0.0],"shannda":[0,13,0.0],"shantaria":[0,22,0.0],"shaquena":[0,11,0.0],"shaquette":[0,15,0.0],"shaquonda":[0,21,0.0],"shareva":[0,5,0.0],"sharmonique":[0,17,0.0],"sharniece":[0,144,0.4317],"shatarah":[0,5,0.0],"shataura":[0,5,0.0],"shaundrika":[0,5,0.0],"shauntaya":[0,5,0.0],"shawday":[0,10,0.0],"shekeria":[0,38,0.0],"shenina":[0,5,0.0],"sheyda":[0,23,0.0],"shqipe":[0,11,0.0],"shubha":[0,5,0.0],"shuntana":[0,5,0.0],"shyan":[35,826,0.5631],"sierre":[0,36,0.0],"simara":[0,150,0.4352],"sinath":[0,5,0.0],"siobhon":[0,5,0.0],"sonam":[118,481,0.4461],"soreya":[0,15,0.0],"sunde":[0,5,0.0],"syna":[0,89,0.0],"taciana":[0,5,0.0],"talese":[0,15,0.0],"talyn":[852,953,0.3439],"tarae":[10,109,0.3802],"tasheanna":[0,25,0.0],"tasma":[0,5,0.0],"tauri":[0,90,0.0],"tavera":[0,5,0.0],"taylour":[29,497,0.5142],"tchanavian":[0,5,0.0],"teeanna":[0,11,0.0],"teeara":[0,11,0.0],"teidra":[0,5,0.0],"teigan":[624,1514,0.4716],"tempesst":[0,5,0.0],"tempress":[0,18,0.0],"terricia":[0,5,0.0],"teshina":[0,5,0.0],"thaisa":[0,5,0.0],"theresamarie":[0,17,0.0],"tier":[0,5,0.0],"tiffaine":[0,5,0.0],"tinasha":[0,10,0.0],"tishena":[0,5,0.0],"tranice":[0,76,0.0],"valerieanne":[0,5,0.0],"veneshia":[0,10,0.0],"verenis":[0,68,0.0],"wanesha":[0,12,0.0],"whitne":[0,5,0.0],"whitnye":[0,5,0.0],"wittney":[0,29,0.0],"yanika":[0,22,0.0],"yaniris":[0,108,0.4067],"yanisha":[0,43,0.0],"yannet":[0,104,0.4034],"yareny":[0,34,0.0],"yecica":[0,48,0.0],"yenta":[0,16,0.0],"yita":[0,45,0.0],"yumaira":[0,5,0.0],"zahara":[0,3432,0.7071],"zerina":[0,203,0.4615],"cordero":[1795,9,0.648],"cordaro":[491,0,0.5382],"corderro":[248,0,0.4789],"cordaryl":[181,0,0.4515],"cordarryl":[157,0,0.4392],"cordelro":[60,0,0.0],"cordera":[134,0,0.4254],"payden":[1332,695,0.4346],"cordarro":[105,0,0.4042],"cordario":[41,0,0.0],"luisalfredo":[22,0,0.0],"dakoda":[3285,889,0.5699],"jahlil":[2417,0,0.6767],"marsalis":[262,0,0.4837],"khambrel":[69,0,0.0],"kylor":[491,5,0.5337],"demontre":[538,0,0.5462],"deveon":[697,0,0.5686],"jeancarlo":[943,0,0.5949],"sarith":[11,0,0.0],"bhavik":[187,0,0.4544],"chayce":[2128,328,0.5875],"cordairo":[32,0,0.0],"cordarrell":[80,0,0.0],"corderio":[24,0,0.0],"dyllan":[3290,493,0.6223],"jafet":[1396,0,0.629],"jareth":[1992,37,0.6494],"josimar":[97,0,0.0],"mauel":[15,0,0.0],"jerme":[14,0,0.0],"jian":[577,35,0.5255],"rahsean":[27,0,0.0],"tyeler":[267,27,0.4483],"angeldejesus":[100,0,0.4],"chrystian":[781,70,0.5378],"cordarrel":[62,0,0.0],"darail":[14,0,0.0],"decota":[36,5,0.0],"demontray":[141,0,0.4298],"henrry":[742,0,0.5741],"jammel":[35,0,0.0],"jhonatan":[1188,0,0.615],"jjesus":[202,0,0.4611],"josede":[92,0,0.0],"jovaun":[129,0,0.4221],"louden":[560,0,0.5496],"mykael":[537,126,0.4571],"navarre":[102,0,0.4017],"obryant":[31,0,0.0],"ratana":[14,0,0.0],"rayshard":[132,0,0.4241],"shaunt":[40,0,0.0],"sheriff":[102,0,0.4017],"taimak":[19,0,0.0],"treyor":[13,0,0.0],"zohaib":[507,0,0.541],"anthonyjames":[173,0,0.4476],"ayodeji":[277,0,0.4885],"ayrton":[821,0,0.5829],"bocephus":[101,0,0.4009],"codero":[7,0,0.0],"cordarius":[971,0,0.5974],"decorey":[130,0,0.4228],"devontae":[2958,0,0.6942],"hayato":[247,0,0.4785],"imothy":[15,0,0.0],"jahaad":[206,0,0.4628],"javaun":[309,0,0.498],"jeancarlos":[1296,0,0.6225],"kaashif":[12,0,0.0],"kamren":[4313,508,0.659],"kitrick":[7,0,0.0],"michaelray":[41,0,0.0],"rpbert":[19,0,0.0],"salar":[209,0,0.464],"socheat":[7,0,0.0],"talha":[988,0,0.599],"tavorris":[12,0,0.0],"tercel":[12,0,0.0],"travaughn":[163,0,0.4424],"umer":[380,0,0.516],"vitorio":[17,0,0.0],"williamjoseph":[19,0,0.0],"yvens":[42,0,0.0],"aleander":[14,0,0.0],"alexx":[402,217,0.3626],"antelmo":[56,0,0.0],"brendyn":[1399,0,0.6292],"calahan":[265,0,0.4846],"caylon":[252,12,0.4623],"chiem":[6,0,0.0],"chu":[13,0,0.0],"davaris":[130,0,0.4228],"davel":[17,0,0.0],"deaundrey":[17,0,0.0],"demarious":[398,0,0.52],"deundrae":[6,0,0.0],"deunte":[125,0,0.4194],"dontreal":[74,0,0.0],"dusitn":[16,0,0.0],"elier":[519,0,0.543],"enjamin":[16,0,0.0],"frandy":[182,0,0.452],"gerrin":[11,0,0.0],"ifeanyi":[160,0,0.4408],"jabaris":[34,0,0.0],"jaimen":[193,0,0.4571],"javonta":[866,0,0.5875],"jazmond":[17,10,0.0],"jeese":[12,0,0.0],"jerrelle":[74,0,0.0],"johnandrew":[48,0,0.0],"jonathanjames":[11,0,0.0],"joren":[357,0,0.5105],"josafat":[449,0,0.5304],"kamden":[12173,688,0.7779],"kashief":[29,0,0.0],"kashmere":[541,494,0.3152],"kasra":[361,0,0.5115],"kevinmichael":[33,0,0.0],"kiev":[74,0,0.0],"kordero":[20,0,0.0],"kyal":[71,0,0.0],"luisantonio":[223,0,0.4697],"luismanuel":[113,0,0.4106],"mackenzy":[119,1083,0.555],"marqual":[161,0,0.4414],"mats":[83,0,0.0],"mikaele":[153,0,0.4369],"mikale":[369,39,0.4722],"olajawon":[19,0,0.0],"phillipmichael":[12,0,0.0],"raemond":[26,0,0.0],"rajneesh":[6,0,0.0],"ramiz":[232,0,0.4731],"relando":[6,0,0.0],"romen":[451,0,0.5308],"rontez":[47,0,0.0],"saagar":[113,0,0.4106],"sayre":[99,93,0.2355],"siavash":[11,0,0.0],"sunjay":[49,0,0.0],"talbott":[6,0,0.0],"terrico":[35,0,0.0],"tha":[37,20,0.0],"thiago":[29347,28,0.8927],"trevaughn":[867,0,0.5876],"treyvon":[3946,0,0.7192],"xavian":[1862,0,0.654],"zackrey":[170,0,0.4461],"zakari":[2264,248,0.6129],"zaquan":[522,0,0.5435],"aalok":[15,0,0.0],"aamer":[41,0,0.0],"aaronjames":[100,0,0.4],"adeeb":[306,0,0.4971],"ahad":[836,0,0.5844],"ajmal":[63,0,0.0],"alic":[231,0,0.4727],"alxander":[40,0,0.0],"amechi":[11,0,0.0],"amro":[198,0,0.4593],"anderew":[10,0,0.0],"aneil":[35,0,0.0],"ankush":[163,0,0.4424],"anousone":[5,0,0.0],"arish":[310,0,0.4983],"armani":[14797,11495,0.4975],"aurash":[13,0,0.0],"born":[5,0,0.0],"bradnon":[11,0,0.0],"brayant":[287,0,0.4916],"brentan":[36,0,0.0],"briananthony":[5,0,0.0],"bryndan":[63,0,0.0],"cardero":[23,0,0.0],"cayton":[118,27,0.3518],"cchristopher":[5,0,0.0],"chadwic":[11,0,0.0],"chaseton":[339,0,0.506],"chasten":[332,5,0.498],"cordara":[29,0,0.0],"cordarell":[16,0,0.0],"corddaryl":[5,0,0.0],"corderall":[5,0,0.0],"corderra":[36,0,0.0],"cragi":[5,0,0.0],"damonte":[1665,0,0.6443],"danield":[5,0,0.0],"daniellee":[10,0,0.0],"darith":[10,0,0.0],"darreus":[15,0,0.0],"darshawn":[155,0,0.4381],"daveion":[634,0,0.5604],"davonn":[246,0,0.4782],"daygoro":[5,0,0.0],"dayshon":[233,0,0.4735],"deanta":[94,0,0.0],"demarcos":[58,0,0.0],"deremy":[5,0,0.0],"dimario":[32,0,0.0],"djavon":[5,0,0.0],"dmichael":[54,0,0.0],"donate":[15,0,0.0],"donathon":[15,0,0.0],"dontey":[16,0,0.0],"dusin":[5,0,0.0],"eletise":[5,0,0.0],"ericlee":[10,0,0.0],"euan":[457,0,0.532],"felty":[11,0,0.0],"gavyn":[5193,120,0.7282],"giovan":[359,0,0.511],"habeeb":[106,0,0.4051],"harron":[5,0,0.0],"hesston":[391,0,0.5184],"ivano":[5,0,0.0],"jadarius":[1470,0,0.6335],"jaes":[5,0,0.0],"jahmaal":[16,0,0.0],"jamarri":[667,0,0.5648],"jamesandrew":[21,0,0.0],"jamesryan":[23,0,0.0],"javario":[22,0,0.0],"jaziel":[7481,98,0.7659],"jefforey":[5,0,0.0],"jereal":[5,0,0.0],"jeremery":[5,0,0.0],"jerik":[204,0,0.4619],"jevaughn":[166,0,0.444],"jhonathon":[27,0,0.0],"jhony":[389,0,0.518],"jiten":[20,0,0.0],"jobey":[33,0,0.0],"johnedward":[62,0,0.0],"johnnyjoe":[5,0,0.0],"johnphilip":[28,0,0.0],"johnthon":[5,0,0.0],"johnwesley":[86,0,0.0],"jonchristopher":[10,0,0.0],"jonhathan":[5,0,0.0],"jontavius":[247,0,0.4785],"josecruz":[21,0,0.0],"josejuan":[262,0,0.4837],"josephandrew":[5,0,0.0],"joshuaa":[5,0,0.0],"jubril":[50,0,0.0],"justinlee":[38,0,0.0],"jyrell":[56,0,0.0],"kahiem":[5,0,0.0],"kanin":[390,0,0.5182],"kardell":[140,0,0.4292],"kazuya":[59,0,0.0],"keivan":[55,0,0.0],"kentavius":[185,0,0.4534],"kerven":[22,0,0.0],"keyton":[787,0,0.5792],"khalifa":[360,0,0.5113],"khaliyl":[18,0,0.0],"kial":[20,0,0.0],"klifton":[5,0,0.0],"ku":[33,6,0.0],"kyrell":[862,0,0.5871],"ladarion":[345,0,0.5076],"lashad":[23,0,0.0],"lavarus":[20,0,0.0],"lazarius":[168,0,0.4451],"leeanthony":[53,0,0.0],"leemichael":[11,0,0.0],"letrell":[207,0,0.4632],"lexander":[156,0,0.4386],"makana":[498,336,0.3489],"malcolmjamal":[10,0,0.0],"marcelles":[92,0,0.0],"markandrew":[34,0,0.0],"markquis":[36,0,0.0],"marqueis":[22,0,0.0],"michaelchristop":[5,0,0.0],"miqueas":[414,0,0.5234],"missael":[528,0,0.5445],"muammar":[5,0,0.0],"muhamad":[306,0,0.4971],"mustafah":[5,0,0.0],"nang":[53,0,0.0],"nazaret":[39,259,0.4301],"nevan":[1169,5,0.6113],"niket":[23,0,0.0],"nikolis":[122,0,0.4173],"nimit":[60,0,0.0],"nohe":[21,0,0.0],"nykolas":[313,0,0.4991],"orrey":[5,0,0.0],"ose":[5,0,0.0],"pedrum":[5,0,0.0],"prestin":[734,5,0.5698],"quame":[65,0,0.0],"quaron":[161,0,0.4414],"quintine":[5,0,0.0],"raffeal":[15,0,0.0],"rashade":[5,0,0.0],"rasheid":[10,0,0.0],"rikin":[10,0,0.0],"riordan":[285,0,0.491],"rishad":[62,0,0.0],"rishaun":[5,0,0.0],"robeto":[10,0,0.0],"rotimi":[15,0,0.0],"ryant":[52,0,0.0],"samiuela":[38,0,0.0],"saqib":[146,0,0.4329],"schylar":[111,232,0.343],"shahed":[10,143,0.4084],"shivam":[1532,0,0.6371],"shivan":[200,0,0.4602],"tadarius":[389,0,0.518],"takayuki":[50,0,0.0],"taven":[1689,52,0.6288],"terreal":[5,0,0.0],"thomasjames":[72,0,0.0],"trai":[277,0,0.4885],"trevante":[199,0,0.4598],"trovon":[16,0,0.0],"tyquon":[182,0,0.452],"uber":[36,0,0.0],"vannara":[16,0,0.0],"vinit":[21,0,0.0],"vondre":[17,0,0.0],"wasif":[134,0,0.4254],"yazeed":[439,0,0.5285],"yekusiel":[89,0,0.0],"yohannes":[419,0,0.5244],"yohsuke":[5,0,0.0],"yovanny":[422,0,0.5251],"zabdiel":[1399,0,0.6292],"zoilo":[15,0,0.0],"jaleesa":[6,3261,0.7015],"adilene":[7,6464,0.7614],"shakari":[17,301,0.4737],"cetera":[0,53,0.0],"sagan":[731,421,0.3885],"jalessa":[0,685,0.5671],"casara":[0,118,0.4144],"epiphany":[0,782,0.5786],"jyssica":[0,109,0.4075],"anam":[0,686,0.5673],"aylssa":[0,276,0.4882],"byanka":[0,279,0.4891],"condola":[0,12,0.0],"corsica":[0,86,0.0],"kalya":[0,265,0.4846],"sabel":[0,100,0.4],"shayeeda":[0,12,0.0],"allix":[0,136,0.4267],"jewels":[28,1198,0.6036],"kerah":[0,197,0.4589],"mishay":[0,33,0.0],"nohely":[0,886,0.5895],"tache":[0,70,0.0],"tawatha":[0,24,0.0],"yvanna":[0,466,0.5337],"zury":[0,776,0.578],"allante":[486,131,0.4396],"anyssa":[0,2082,0.6637],"chellsea":[0,141,0.4298],"chesna":[0,45,0.0],"kasarah":[0,111,0.4091],"keari":[17,362,0.4926],"kelsay":[0,223,0.4697],"kristara":[0,35,0.0],"labrittany":[0,105,0.4042],"lyneisha":[0,45,0.0],"rachyl":[0,191,0.4562],"raysha":[0,98,0.0],"sakira":[0,108,0.4067],"ashleynicole":[0,239,0.4757],"cassara":[0,131,0.4235],"cyerra":[0,296,0.4943],"enchantee":[0,9,0.0],"jahnee":[0,56,0.0],"jazzmyn":[0,1153,0.6124],"jonet":[0,78,0.0],"kayly":[0,430,0.5267],"kember":[0,237,0.4749],"kieara":[0,766,0.5768],"lauramarie":[0,14,0.0],"myasia":[0,1689,0.6455],"shaleigh":[0,368,0.5132],"shatori":[0,88,0.0],"tatyanna":[0,1972,0.659],"alaysha":[0,1817,0.6519],"allishia":[0,20,0.0],"alyssha":[0,75,0.0],"angeleena":[0,282,0.49],"angeliqua":[0,32,0.0],"anjelika":[0,351,0.5091],"ashleyelizabeth":[0,8,0.0],"caitriona":[0,261,0.4833],"chelea":[0,13,0.0],"chritine":[0,8,0.0],"dymond":[81,1871,0.6308],"fedra":[0,76,0.0],"francessca":[0,74,0.0],"helsea":[0,13,0.0],"hibah":[0,392,0.5187],"iriana":[0,617,0.5581],"izabela":[0,1798,0.651],"jarhonda":[0,14,0.0],"kensley":[320,8581,0.7615],"keyannah":[0,39,0.0],"khrystyna":[0,65,0.0],"lakeea":[0,8,0.0],"leroya":[0,8,0.0],"madilynn":[0,11106,0.8091],"madoka":[0,20,0.0],"malaysia":[0,10753,0.8063],"ninna":[0,61,0.0],"nna":[0,8,0.0],"rahila":[0,8,0.0],"saphire":[0,910,0.5918],"sashay":[0,101,0.4009],"shaneese":[0,90,0.0],"shanleigh":[0,30,0.0],"shaquaya":[0,96,0.0],"skie":[0,306,0.4971],"tahni":[0,45,0.0],"tierany":[0,161,0.4414],"tytiana":[0,1398,0.6291],"tytianna":[0,1035,0.603],"yanine":[0,26,0.0],"aliyyah":[0,234,0.4738],"angleica":[0,17,0.0],"annalyse":[0,1783,0.6502],"antiqua":[0,29,0.0],"aprillynn":[0,12,0.0],"ashleey":[0,18,0.0],"ashtan":[131,119,0.2513],"ayerim":[0,82,0.0],"ayssa":[0,177,0.4496],"breelyn":[0,1246,0.6191],"caelyn":[5,2396,0.6747],"caltlin":[0,7,0.0],"casady":[0,61,0.0],"casarah":[0,46,0.0],"cati":[0,44,0.0],"charne":[0,109,0.4075],"charrell":[0,19,0.0],"daquana":[0,100,0.4],"deaira":[0,582,0.553],"desarai":[0,73,0.0],"deshaundra":[0,21,0.0],"destina":[0,163,0.4424],"donmonique":[0,13,0.0],"elyssia":[0,540,0.5465],"enisa":[0,135,0.4261],"fahren":[0,28,0.0],"frankee":[0,285,0.491],"gerrica":[0,96,0.0],"janieka":[0,12,0.0],"jante":[41,14,0.0],"jaquesha":[0,130,0.4228],"jasmain":[0,82,0.0],"jazmina":[0,113,0.4106],"jenisse":[0,75,0.0],"jessielynn":[0,14,0.0],"jewelia":[0,442,0.5291],"joannamarie":[0,58,0.0],"juliaanne":[0,12,0.0],"kaicee":[0,129,0.4221],"kayelani":[0,55,0.0],"kaytlynn":[0,1285,0.6218],"keiarra":[0,360,0.5113],"kiani":[30,1265,0.608],"kinga":[0,207,0.4632],"krystalann":[0,24,0.0],"labrittney":[0,18,0.0],"lacrissa":[0,12,0.0],"lamaria":[0,446,0.5299],"laporshia":[0,83,0.0],"laquania":[0,7,0.0],"laquashia":[0,70,0.0],"laquay":[5,12,0.0],"lataura":[0,7,0.0],"lequinta":[0,7,0.0],"louren":[0,58,0.0],"maddi":[0,556,0.549],"marnesha":[0,84,0.0],"mckenzy":[35,1008,0.5834],"mikeshia":[0,59,0.0],"mishayla":[0,283,0.4904],"montinique":[0,43,0.0],"nesren":[0,7,0.0],"pariss":[5,210,0.4556],"paulisha":[0,46,0.0],"pessie":[0,29,0.0],"rashidat":[0,12,0.0],"rikkilee":[0,7,0.0],"sarda":[0,7,0.0],"sedona":[0,2248,0.6704],"sedra":[0,336,0.5053],"shabria":[0,395,0.5193],"shakarra":[0,29,0.0],"shalei":[0,49,0.0],"shaqita":[0,7,0.0],"shawda":[0,24,0.0],"sheida":[0,15,0.0],"shermia":[0,16,0.0],"skylee":[0,2564,0.6818],"tranette":[0,17,0.0],"tulsi":[0,565,0.5504],"yazmina":[0,96,0.0],"abibail":[0,6,0.0],"abir":[653,97,0.5006],"aelicia":[0,6,0.0],"aftyn":[0,237,0.4749],"ahnna":[0,229,0.472],"airam":[272,1019,0.4911],"alexsandria":[0,177,0.4496],"alexxis":[6,1197,0.613],"alissandra":[0,445,0.5297],"alleah":[0,420,0.5246],"allessandra":[0,230,0.4723],"alyissa":[0,482,0.5366],"amberann":[0,6,0.0],"amerika":[0,322,0.5016],"ammber":[0,12,0.0],"amra":[0,414,0.5234],"amyre":[22,98,0.3396],"angelian":[0,6,0.0],"arrianna":[0,1457,0.6327],"aubriana":[0,3336,0.7046],"baili":[0,333,0.5045],"bradleigh":[11,471,0.5244],"brelyn":[62,590,0.5093],"brenisha":[0,110,0.4083],"breya":[0,675,0.5659],"briannah":[0,1443,0.6319],"bristy":[0,16,0.0],"britane":[0,15,0.0],"caitlynne":[0,376,0.515],"calesha":[0,30,0.0],"cambry":[0,791,0.5796],"cartlin":[0,6,0.0],"catilin":[0,58,0.0],"chaniel":[10,17,0.0],"chauncie":[0,18,0.0],"chealsea":[0,225,0.4704],"corneshia":[0,80,0.0],"cyria":[0,32,0.0],"danicka":[0,180,0.4511],"danishia":[0,53,0.0],"dayami":[0,1226,0.6177],"deairra":[0,193,0.4571],"dequisha":[0,27,0.0],"desare":[0,88,0.0],"dessarae":[0,19,0.0],"devynn":[190,1095,0.5298],"diamonds":[0,108,0.4067],"diondria":[0,43,0.0],"dorisha":[0,11,0.0],"ebonii":[0,11,0.0],"ellysa":[0,184,0.453],"elyane":[0,6,0.0],"emaly":[0,504,0.5405],"emanda":[0,47,0.0],"emperatriz":[0,26,0.0],"enchante":[0,6,0.0],"estacia":[0,17,0.0],"estefanie":[0,531,0.545],"fachon":[0,6,0.0],"fierra":[0,45,0.0],"fransheska":[0,195,0.458],"gelisa":[0,129,0.4221],"gricell":[0,6,0.0],"hahna":[0,6,0.0],"halei":[0,375,0.5148],"hli":[0,33,0.0],"isabeau":[0,470,0.5344],"izabella":[0,30600,0.8971],"jacquee":[0,6,0.0],"jaleah":[0,3656,0.7126],"janicia":[0,214,0.4661],"janill":[0,23,0.0],"jareka":[0,6,0.0],"jeccica":[0,11,0.0],"jennesa":[0,29,0.0],"jesilyn":[0,87,0.0],"jonesha":[0,239,0.4757],"josmine":[0,6,0.0],"kadeshia":[0,161,0.4414],"kaelan":[1501,431,0.5106],"kaishonta":[0,6,0.0],"kalaya":[0,1447,0.6321],"kandyse":[0,24,0.0],"kaprisha":[0,38,0.0],"katelind":[0,69,0.0],"kathlina":[0,11,0.0],"kavya":[6,2071,0.6616],"kaylani":[0,10193,0.8017],"kaysea":[0,134,0.4254],"kelsye":[0,112,0.4098],"kenneisha":[0,63,0.0],"killashandra":[0,11,0.0],"kimiya":[0,345,0.5076],"krysha":[0,6,0.0],"kylin":[1997,1324,0.4235],"kyrah":[0,2439,0.6774],"lacandis":[0,6,0.0],"laeh":[0,6,0.0],"lamonique":[0,6,0.0],"laqresha":[0,6,0.0],"lashe":[0,66,0.0],"lauraanne":[0,24,0.0],"lauraashley":[0,40,0.0],"lynzey":[0,37,0.0],"maelena":[0,38,0.0],"mailan":[0,33,0.0],"malayna":[0,1367,0.6272],"mallorey":[0,64,0.0],"mariele":[0,40,0.0],"maryela":[0,105,0.4042],"merary":[0,522,0.5435],"misbah":[21,135,0.3796],"mitia":[0,6,0.0],"narelle":[0,28,0.0],"nasheema":[0,23,0.0],"natashua":[0,11,0.0],"natay":[7,11,0.0],"nattalie":[0,219,0.4681],"negan":[266,6,0.4762],"nishita":[0,135,0.4261],"nyala":[0,324,0.5021],"oyuki":[0,164,0.443],"panhia":[0,97,0.0],"pesha":[0,26,0.0],"phylea":[0,6,0.0],"phyllisha":[0,11,0.0],"preshus":[0,59,0.0],"quiara":[0,317,0.5002],"quierra":[0,168,0.4451],"racio":[0,6,0.0],"rakita":[0,42,0.0],"rayneisha":[0,139,0.4286],"rebecc":[0,6,0.0],"rikkia":[0,54,0.0],"rikkita":[0,6,0.0],"ronneshia":[0,28,0.0],"sacoya":[0,114,0.4114],"sahvanna":[0,164,0.443],"sakeithia":[0,6,0.0],"sanantha":[0,26,0.0],"sarne":[0,11,0.0],"savannha":[0,193,0.4571],"sesilia":[0,91,0.0],"shaenna":[0,6,0.0],"shakitta":[0,6,0.0],"shaleece":[0,6,0.0],"shamiqua":[0,39,0.0],"shaniquah":[0,47,0.0],"shantinique":[0,91,0.0],"shantique":[0,55,0.0],"shaquania":[0,21,0.0],"shaquasia":[0,208,0.4636],"shaquel":[73,78,0.2251],"shaquona":[0,47,0.0],"sharneice":[0,56,0.0],"sharnia":[0,6,0.0],"shatoyia":[0,13,0.0],"shontoria":[0,12,0.0],"shyeeda":[0,6,0.0],"shylia":[0,52,0.0],"sitara":[0,726,0.5722],"sovanny":[0,18,0.0],"spontaneous":[0,6,0.0],"starasia":[0,308,0.4977],"staysha":[0,92,0.0],"stepahanie":[0,6,0.0],"suleyka":[0,47,0.0],"sydny":[0,270,0.4863],"teera":[0,51,0.0],"tekara":[0,22,0.0],"tiahna":[0,484,0.537],"tiarrah":[0,68,0.0],"tinina":[0,6,0.0],"titianna":[0,139,0.4286],"trechelle":[0,21,0.0],"tzippora":[0,48,0.0],"vaneisha":[0,33,0.0],"vianka":[0,503,0.5403],"victorya":[0,573,0.5516],"wilmarie":[0,118,0.4144],"xinia":[0,6,0.0],"yanil":[0,66,0.0],"yanill":[0,22,0.0],"yuriria":[0,34,0.0],"abigial":[0,172,0.4471],"abrar":[543,532,0.3062],"adebisi":[0,10,0.0],"aleigh":[0,663,0.5643],"alexadra":[0,11,0.0],"aliena":[0,274,0.4876],"alize":[344,5279,0.7041],"allaina":[0,240,0.476],"allayna":[0,519,0.543],"allson":[0,5,0.0],"allye":[0,206,0.4628],"allysse":[0,5,0.0],"alyssabeth":[0,123,0.418],"amandarae":[0,12,0.0],"amanpreet":[34,125,0.3461],"amberlin":[0,221,0.4689],"ambry":[0,138,0.428],"amista":[0,5,0.0],"anabelli":[0,5,0.0],"anachristina":[0,45,0.0],"anacristina":[0,229,0.472],"angeleca":[0,5,0.0],"anjelique":[0,242,0.4768],"annee":[0,16,0.0],"anoush":[0,26,0.0],"antoinese":[0,5,0.0],"arezo":[0,17,0.0],"arilene":[0,27,0.0],"ariona":[0,949,0.5955],"ashara":[0,211,0.4649],"ashelly":[0,32,0.0],"ashleeann":[0,5,0.0],"ashlinn":[0,336,0.5053],"audreyrose":[0,17,0.0],"ayat":[23,1568,0.6311],"aymie":[0,5,0.0],"baneza":[0,77,0.0],"bayli":[0,1069,0.6058],"bhakti":[0,157,0.4392],"bioleta":[0,15,0.0],"bless":[476,310,0.3507],"briel":[0,712,0.5705],"brinley":[151,13004,0.8144],"brintney":[0,5,0.0],"brioni":[0,11,0.0],"britannia":[0,10,0.0],"brittnany":[0,22,0.0],"briyana":[0,797,0.5803],"brizeida":[0,336,0.5053],"bryonna":[0,892,0.5901],"brytnee":[0,63,0.0],"cairra":[0,40,0.0],"carmesia":[0,5,0.0],"carrianna":[0,15,0.0],"casidhe":[0,11,0.0],"cayli":[0,453,0.5312],"caylynn":[0,368,0.5132],"ceairra":[0,173,0.4476],"cecellia":[0,10,0.0],"celsey":[0,223,0.4697],"cesarina":[0,12,0.0],"chamira":[0,27,0.0],"chandee":[0,5,0.0],"chanley":[0,183,0.4525],"chantis":[0,5,0.0],"chantol":[0,18,0.0],"chaquilla":[0,5,0.0],"charnisha":[0,30,0.0],"chellsey":[0,52,0.0],"chelsei":[0,161,0.4414],"chennelle":[0,10,0.0],"cierrah":[0,283,0.4904],"cindell":[0,5,0.0],"concheta":[0,5,0.0],"cristianna":[0,89,0.0],"cyntrell":[0,5,0.0],"daidre":[0,5,0.0],"daneila":[0,5,0.0],"daneya":[0,79,0.0],"danielee":[0,5,0.0],"dannesha":[0,20,0.0],"dannyelle":[0,55,0.0],"darika":[0,67,0.0],"darrielle":[0,379,0.5157],"darshay":[0,83,0.0],"darylann":[0,19,0.0],"dashea":[0,84,0.0],"dayshia":[0,241,0.4764],"dejanae":[0,1106,0.6088],"denicka":[0,5,0.0],"dequesha":[0,11,0.0],"deresha":[0,25,0.0],"deshera":[0,18,0.0],"destane":[0,72,0.0],"dezarai":[0,93,0.0],"dezerea":[0,30,0.0],"diasha":[0,78,0.0],"dimonique":[0,68,0.0],"dineisha":[0,10,0.0],"dulcemaria":[0,723,0.5718],"dyeisha":[0,26,0.0],"elaheh":[0,26,0.0],"elainna":[0,272,0.4869],"eliazbeth":[0,15,0.0],"elishea":[0,10,0.0],"elizaberh":[0,5,0.0],"elzbieta":[0,31,0.0],"emilye":[0,39,0.0],"ewelina":[0,126,0.4201],"fatmah":[0,22,0.0],"gabreille":[0,67,0.0],"gabrelle":[0,235,0.4742],"garine":[0,5,0.0],"gifty":[0,48,0.0],"hadas":[0,173,0.4476],"haeli":[0,231,0.4727],"halla":[0,293,0.4934],"hanaa":[0,371,0.5139],"hayla":[0,462,0.5329],"ibette":[0,13,0.0],"indiya":[0,389,0.518],"iovanna":[0,5,0.0],"jadia":[0,277,0.4885],"jaiza":[0,17,0.0],"jakerra":[0,84,0.0],"jalea":[0,713,0.5706],"jalicia":[0,733,0.573],"jalyssa":[0,1686,0.6454],"jamaka":[0,31,0.0],"jamantha":[0,5,0.0],"jameia":[0,236,0.4746],"jamiesha":[0,121,0.4166],"jamilet":[0,852,0.5861],"janetra":[0,5,0.0],"jannete":[0,58,0.0],"jaquia":[0,70,0.0],"jasemine":[0,183,0.4525],"jashley":[0,84,0.0],"javonia":[0,5,0.0],"jazmene":[0,94,0.0],"jeneca":[0,18,0.0],"jenesse":[0,5,0.0],"jennaca":[0,10,0.0],"jessicaanne":[0,60,0.0],"jhanna":[0,25,0.0],"jieun":[0,18,0.0],"jme":[0,5,0.0],"jnay":[0,5,0.0],"joceyln":[0,41,0.0],"jomary":[0,44,0.0],"jonai":[5,147,0.422],"joneshia":[0,52,0.0],"joree":[0,39,0.0],"kadia":[0,160,0.4408],"kalecia":[0,88,0.0],"kalynne":[0,271,0.4866],"kalyssa":[0,844,0.5853],"kamaya":[0,1849,0.6534],"karely":[0,2595,0.6828],"katelyne":[0,549,0.5479],"kattia":[0,67,0.0],"kayala":[0,23,0.0],"kayleah":[0,652,0.5628],"kayler":[229,135,0.3222],"kaylina":[0,462,0.5329],"keaunna":[0,67,0.0],"keiasha":[0,85,0.0],"kendera":[0,5,0.0],"kendral":[0,10,0.0],"kendricka":[0,34,0.0],"kennice":[0,65,0.0],"kentrice":[0,22,0.0],"kenza":[0,826,0.5834],"kenzee":[0,472,0.5348],"keristen":[0,20,0.0],"kernisha":[0,10,0.0],"kevondra":[0,5,0.0],"keyshanna":[0,15,0.0],"khamiya":[0,214,0.4661],"khayla":[0,808,0.5815],"khrystyn":[0,26,0.0],"kiearra":[0,244,0.4775],"kinsie":[0,149,0.4346],"kionte":[233,16,0.4484],"kortnei":[0,41,0.0],"krislynn":[0,685,0.5671],"krystallynn":[0,12,0.0],"kurie":[0,5,0.0],"kurtisha":[0,27,0.0],"kyandra":[0,165,0.4435],"kyrra":[0,223,0.4697],"laangela":[0,5,0.0],"labresha":[0,117,0.4136],"lachae":[0,64,0.0],"lacoria":[0,27,0.0],"lacreisha":[0,16,0.0],"ladavia":[0,87,0.0],"laquail":[0,5,0.0],"laquarius":[42,5,0.0],"laqundra":[0,5,0.0],"larasha":[0,11,0.0],"lashaunte":[0,21,0.0],"lasheia":[0,5,0.0],"latai":[0,5,0.0],"latarah":[0,5,0.0],"latreka":[0,5,0.0],"laurenashley":[0,76,0.0],"lauron":[0,24,0.0],"lawhitney":[0,5,0.0],"letrese":[0,5,0.0],"lonisha":[0,61,0.0],"maegon":[0,10,0.0],"maikia":[0,15,0.0],"malorey":[0,47,0.0],"malysa":[0,11,0.0],"mareesha":[0,10,0.0],"mariaangelica":[0,11,0.0],"mariaha":[0,200,0.4602],"maricha":[0,5,0.0],"marieliz":[0,118,0.4144],"markeida":[0,5,0.0],"markette":[0,5,0.0],"marrianna":[0,25,0.0],"marsea":[0,5,0.0],"mckenzee":[0,817,0.5824],"meahgan":[0,16,0.0],"mehreen":[0,515,0.5424],"melek":[67,542,0.4957],"melis":[0,331,0.504],"melissaanne":[0,11,0.0],"merli":[0,19,0.0],"mie":[0,22,0.0],"mounia":[0,5,0.0],"myan":[114,139,0.2641],"mykita":[0,5,0.0],"mynesha":[0,34,0.0],"naami":[0,16,0.0],"nache":[0,15,0.0],"nadalie":[0,243,0.4771],"naema":[0,57,0.0],"nasasha":[0,15,0.0],"nashwa":[0,10,0.0],"natsumi":[0,268,0.4856],"nattaly":[0,114,0.4114],"nayelly":[0,488,0.5377],"newborn":[18,11,0.0],"nicoleann":[0,5,0.0],"nurul":[0,13,0.0],"percious":[0,5,0.0],"phylica":[0,11,0.0],"porsia":[0,5,0.0],"prerna":[0,73,0.0],"quanecia":[0,10,0.0],"quanique":[0,30,0.0],"quinci":[37,308,0.4531],"quinneshia":[0,5,0.0],"quinnisha":[0,43,0.0],"raelle":[0,413,0.5232],"raichelle":[0,12,0.0],"ralisha":[0,21,0.0],"ralyn":[0,175,0.4486],"remika":[0,5,0.0],"resheka":[0,5,0.0],"reylene":[0,105,0.4042],"rheaann":[0,5,0.0],"rickeeta":[0,5,0.0],"ritney":[0,5,0.0],"rittney":[0,15,0.0],"rodneisha":[0,174,0.4481],"rudee":[0,17,0.0],"sabriana":[0,28,0.0],"sadee":[0,858,0.5867],"saja":[0,982,0.5984],"saliha":[0,286,0.4913],"salita":[0,55,0.0],"samanthajean":[0,5,0.0],"sangeetha":[0,10,0.0],"sanitra":[0,5,0.0],"saniya":[0,6911,0.7679],"sannah":[0,10,0.0],"santanya":[0,5,0.0],"saquanna":[0,5,0.0],"sarahmae":[0,39,0.0],"sashe":[0,19,0.0],"sauannah":[0,5,0.0],"saudi":[0,16,0.0],"savena":[0,5,0.0],"sequioa":[0,52,0.0],"shadoe":[187,68,0.353],"shaelee":[0,458,0.5322],"shakala":[0,207,0.4632],"shakerria":[0,119,0.4151],"shakethia":[0,15,0.0],"shakora":[0,92,0.0],"shalanta":[0,5,0.0],"shalya":[0,27,0.0],"shanez":[0,5,0.0],"shanille":[0,15,0.0],"shannalee":[0,5,0.0],"shany":[0,85,0.0],"shanyce":[0,267,0.4853],"shaquavia":[0,95,0.0],"sharyce":[0,17,0.0],"shateara":[0,30,0.0],"shatila":[0,10,0.0],"shaunessy":[5,69,0.0],"shavontae":[5,94,0.0],"sheeneeka":[0,5,0.0],"shelan":[0,5,0.0],"shequanda":[0,5,0.0],"sheraya":[0,20,0.0],"shermona":[0,5,0.0],"sherokee":[0,5,0.0],"shetia":[0,11,0.0],"shiomara":[0,19,0.0],"shiran":[0,53,0.0],"shnita":[0,5,0.0],"shydia":[0,5,0.0],"shyenne":[0,593,0.5546],"shyesha":[0,21,0.0],"storey":[0,260,0.483],"sumana":[0,36,0.0],"taborah":[0,5,0.0],"tachara":[0,5,0.0],"tajia":[0,204,0.4619],"tamana":[0,99,0.0],"tammyra":[0,5,0.0],"tatiyana":[0,2145,0.6663],"teandrea":[0,33,0.0],"tiairra":[0,59,0.0],"tieria":[0,15,0.0],"tierrah":[0,103,0.4026],"tiffanymarie":[0,25,0.0],"tmara":[0,10,0.0],"tomacina":[0,5,0.0],"tonea":[0,65,0.0],"tonecia":[0,19,0.0],"totiana":[0,106,0.4051],"trashonda":[0,5,0.0],"travona":[0,10,0.0],"treisha":[0,5,0.0],"trystal":[0,5,0.0],"tshara":[0,10,0.0],"tyera":[0,153,0.4369],"tyquana":[0,45,0.0],"tyquisha":[0,96,0.0],"tyshae":[0,236,0.4746],"vashonda":[0,11,0.0],"vyvy":[0,42,0.0],"weatherly":[0,35,0.0],"whittni":[0,52,0.0],"wnedy":[0,5,0.0],"wynesha":[0,21,0.0],"yachi":[0,23,0.0],"yachira":[0,5,0.0],"yanelly":[0,834,0.5842],"yarely":[0,3924,0.7187],"yeshia":[5,82,0.0],"yessika":[0,103,0.4026],"yisenia":[0,5,0.0],"yocelyn":[0,924,0.5931],"zelenia":[0,26,0.0],"zisel":[0,39,0.0],"teyon":[190,0,0.4558],"cruise":[403,0,0.5211],"esai":[2368,0,0.6749],"karrington":[298,1420,0.5348],"olajide":[37,0,0.0],"aikeem":[95,0,0.0],"abisai":[1045,90,0.5625],"cote":[163,0,0.4424],"demitrious":[84,0,0.0],"denzell":[1309,0,0.6234],"keisuke":[171,0,0.4466],"quintavius":[430,0,0.5267],"rutger":[269,0,0.486],"takuya":[145,0,0.4323],"bryndon":[197,0,0.4589],"calbe":[9,0,0.0],"dearis":[98,0,0.0],"juliano":[942,0,0.5948],"kolten":[5770,0,0.7522],"kolya":[14,6,0.0],"quantavius":[282,0,0.49],"ramen":[15,0,0.0],"raquan":[1391,0,0.6287],"wigberto":[14,0,0.0],"abdelrahman":[649,0,0.5624],"andranik":[199,0,0.4598],"billyray":[46,0,0.0],"cadarius":[384,0,0.5169],"conlan":[905,0,0.5913],"daronte":[94,0,0.0],"jeanluc":[1037,0,0.6032],"johncarlos":[504,0,0.5405],"jovonte":[310,0,0.4983],"kayl":[210,24,0.4252],"kolter":[1460,0,0.6329],"markevius":[131,0,0.4235],"mavrick":[1620,0,0.6419],"treon":[254,0,0.481],"zamir":[3966,0,0.7197],"akshar":[594,0,0.5548],"ales":[7,0,0.0],"alexande":[314,0,0.4994],"aviad":[13,0,0.0],"boden":[4472,0,0.7301],"calon":[57,0,0.0],"christopherjame":[114,0,0.4114],"cordarrow":[7,0,0.0],"corde":[609,5,0.5531],"corderal":[19,0,0.0],"corderia":[7,0,0.0],"croix":[1120,16,0.6025],"dalonte":[271,0,0.4866],"daquann":[143,0,0.4311],"daquon":[497,0,0.5393],"davione":[251,11,0.4634],"dearius":[412,0,0.523],"jocoby":[7,0,0.0],"kahle":[115,0,0.4121],"kayleb":[2400,0,0.676],"kreigh":[14,0,0.0],"laderek":[20,0,0.0],"lederrick":[14,0,0.0],"maximillan":[57,0,0.0],"michaelandrew":[30,0,0.0],"naythan":[794,0,0.58],"quantae":[214,0,0.4661],"rashadd":[24,0,0.0],"styles":[674,7,0.5608],"tetsuya":[12,0,0.0],"thomaslee":[7,0,0.0],"timothyjames":[46,0,0.0],"torion":[226,0,0.4708],"travonte":[492,0,0.5384],"treveon":[1415,0,0.6302],"adderly":[11,0,0.0],"akiem":[100,0,0.4],"alante":[521,101,0.468],"alem":[231,0,0.4727],"aley":[6,33,0.0],"almonte":[11,0,0.0],"anhtony":[16,0,0.0],"anthnoy":[6,0,0.0],"antoniodejesus":[55,0,0.0],"autin":[11,0,0.0],"azeez":[127,0,0.4208],"baber":[6,0,0.0],"biron":[6,0,0.0],"cambron":[59,0,0.0],"chayanne":[394,223,0.3564],"chidozie":[80,0,0.0],"clayson":[220,0,0.4685],"coltin":[2558,0,0.6816],"corbyn":[3026,482,0.6116],"cordarian":[12,0,0.0],"cordarious":[127,0,0.4208],"cordelra":[6,0,0.0],"corderius":[79,0,0.0],"cougar":[206,0,0.4628],"daivon":[689,0,0.5676],"davonta":[1277,0,0.6212],"deadrian":[300,0,0.4954],"deantae":[276,0,0.4882],"dearies":[108,0,0.4067],"deauntae":[27,0,0.0],"deigo":[226,0,0.4708],"delonzo":[16,0,0.0],"demetirus":[6,0,0.0],"demicheal":[16,0,0.0],"dilon":[424,0,0.5255],"dontavian":[70,0,0.0],"dontrey":[82,0,0.0],"dyllon":[1267,0,0.6206],"gad":[122,0,0.4173],"gavon":[429,0,0.5265],"grabriel":[11,0,0.0],"hanzel":[309,0,0.498],"heri":[59,0,0.0],"hopeton":[16,0,0.0],"jacobb":[245,0,0.4778],"jairon":[469,0,0.5342],"jamesanthony":[55,0,0.0],"jameswilliam":[6,0,0.0],"jancarlo":[665,0,0.5646],"jarick":[87,0,0.0],"javari":[1291,0,0.6222],"jayron":[636,0,0.5607],"jeevan":[517,0,0.5427],"jeraldo":[63,0,0.0],"jereth":[52,0,0.0],"jeryd":[18,0,0.0],"johnattan":[91,0,0.0],"johntavious":[210,0,0.4644],"jonson":[16,0,0.0],"jontavious":[443,0,0.5293],"joseff":[102,0,0.4017],"josephanthony":[72,0,0.0],"josje":[6,0,0.0],"juanpedro":[11,0,0.0],"kagen":[524,17,0.5295],"kazuki":[381,0,0.5162],"kendrall":[11,0,0.0],"keshav":[1357,0,0.6265],"kilby":[6,0,0.0],"krystofer":[169,0,0.4456],"lafiamma":[6,0,0.0],"lamarquis":[49,0,0.0],"mateusz":[1146,0,0.6118],"michaeljay":[6,0,0.0],"nijel":[338,0,0.5058],"ontonio":[11,0,0.0],"pater":[17,0,0.0],"quinell":[28,0,0.0],"robertjames":[37,0,0.0],"romance":[100,0,0.4],"sajjad":[158,0,0.4397],"shakur":[1582,9,0.6367],"shunsuke":[75,0,0.0],"siraj":[611,0,0.5572],"soane":[25,0,0.0],"sosaia":[101,0,0.4009],"sufyan":[583,0,0.5531],"tarelle":[23,0,0.0],"tertius":[6,0,0.0],"trisco":[6,0,0.0],"tuvia":[238,0,0.4753],"tyres":[45,0,0.0],"tysheem":[154,0,0.4375],"uzziel":[639,0,0.5611],"verdale":[6,0,0.0],"viren":[255,0,0.4813],"williamrobert":[6,0,0.0],"wryan":[12,0,0.0],"xaver":[49,0,0.0],"zade":[1633,27,0.6335],"aadam":[354,0,0.5098],"adidas":[16,0,0.0],"akoni":[213,0,0.4657],"alajuwon":[13,0,0.0],"albano":[5,0,0.0],"alexandr":[481,301,0.3559],"alexjandro":[49,0,0.0],"alezander":[203,0,0.4615],"alijah":[13567,1435,0.7553],"amanuel":[640,0,0.5612],"andreq":[12,0,0.0],"andreu":[243,0,0.4771],"andrewjoseph":[32,0,0.0],"anees":[83,0,0.0],"angleo":[11,0,0.0],"apollos":[206,0,0.4628],"arslan":[333,0,0.5045],"asahel":[289,0,0.4922],"asriel":[168,12,0.421],"beandon":[5,0,0.0],"benjermin":[180,0,0.4511],"brodney":[5,0,0.0],"bryceton":[365,0,0.5125],"brynden":[277,0,0.4885],"bryse":[159,6,0.4274],"cajun":[33,0,0.0],"cassanova":[31,0,0.0],"cedrik":[170,0,0.4461],"chukwuka":[83,0,0.0],"codera":[5,0,0.0],"coderro":[5,0,0.0],"cordalro":[10,0,0.0],"corderial":[5,0,0.0],"corderick":[5,0,0.0],"damek":[62,0,0.0],"danson":[28,0,0.0],"danual":[5,0,0.0],"darko":[67,0,0.0],"daryan":[565,260,0.3995],"davidanthony":[58,0,0.0],"davidjames":[95,0,0.0],"davio":[27,0,0.0],"deaunta":[34,0,0.0],"dejarvis":[10,0,0.0],"delorian":[43,10,0.0],"demariae":[32,0,0.0],"deniro":[410,0,0.5226],"deontaye":[157,0,0.4392],"dequon":[172,0,0.4471],"deroderick":[5,0,0.0],"desjuan":[62,0,0.0],"devante":[8250,57,0.7785],"devian":[275,22,0.4579],"dhruv":[4279,0,0.7263],"dillin":[545,0,0.5473],"dontarious":[102,0,0.4017],"donterio":[26,0,0.0],"drakkar":[142,0,0.4305],"driton":[16,0,0.0],"edwon":[5,0,0.0],"eliakim":[224,0,0.47],"eljay":[137,0,0.4273],"emmaneul":[5,0,0.0],"eshawn":[167,0,0.4445],"esli":[150,435,0.4115],"farzin":[5,0,0.0],"fawaz":[326,0,0.5026],"fayaz":[25,0,0.0],"flamur":[24,0,0.0],"francsico":[5,0,0.0],"gerame":[5,0,0.0],"gerek":[15,0,0.0],"germey":[5,0,0.0],"gerrel":[21,0,0.0],"gerret":[5,0,0.0],"gurinder":[26,0,0.0],"gustauo":[5,0,0.0],"had":[5,0,0.0],"harshal":[86,0,0.0],"hernaldo":[10,0,0.0],"hiten":[10,0,0.0],"hovannes":[22,0,0.0],"hutton":[619,46,0.5255],"isaish":[86,0,0.0],"itamar":[300,16,0.4746],"jahid":[200,0,0.4602],"jamarious":[822,0,0.583],"jamire":[552,0,0.5484],"jaquez":[2144,0,0.6662],"jarael":[16,0,0.0],"jarrius":[165,0,0.4435],"jasiel":[2391,91,0.6541],"jaspal":[49,0,0.0],"jaston":[284,0,0.4907],"jatavious":[576,0,0.5521],"jauier":[5,0,0.0],"jeanbaptiste":[10,0,0.0],"jecorey":[36,0,0.0],"jerey":[5,0,0.0],"jeyson":[678,0,0.5662],"jireh":[1623,1195,0.3974],"jmar":[50,0,0.0],"joahua":[5,0,0.0],"johnvincent":[10,0,0.0],"jonattan":[41,0,0.0],"jonatthan":[10,0,0.0],"joncarlos":[201,0,0.4606],"jonmark":[10,0,0.0],"josealberto":[159,0,0.4403],"joseguadalupe":[152,0,0.4364],"josejavier":[26,0,0.0],"josephallen":[5,0,0.0],"joshusa":[10,0,0.0],"josphua":[5,0,0.0],"juandiego":[743,0,0.5742],"julain":[10,0,0.0],"jye":[74,0,0.0],"kalab":[463,0,0.5331],"karun":[16,0,0.0],"keaston":[286,0,0.4913],"keean":[424,0,0.5255],"keigan":[922,155,0.5192],"keinan":[194,0,0.4576],"kekai":[84,0,0.0],"kentron":[5,0,0.0],"keontae":[1177,27,0.6023],"keyvin":[82,0,0.0],"kjuan":[78,0,0.0],"kornelius":[51,0,0.0],"kortland":[145,0,0.4323],"korwin":[10,0,0.0],"kosuke":[46,0,0.0],"krunal":[43,0,0.0],"kruz":[2491,64,0.6644],"kweku":[81,0,0.0],"labradford":[81,0,0.0],"latavious":[202,0,0.4611],"latray":[31,0,0.0],"layth":[842,0,0.5851],"lebrandon":[26,0,0.0],"lequinton":[5,0,0.0],"lerenzo":[43,0,0.0],"lexington":[1011,1298,0.3781],"lisiate":[10,0,0.0],"maclean":[291,0,0.4928],"marcis":[44,0,0.0],"markdaniel":[10,0,0.0],"marquize":[149,0,0.4346],"masson":[319,0,0.5008],"matlock":[5,0,0.0],"matthiew":[45,0,0.0],"mattson":[120,0,0.4158],"mauricus":[5,0,0.0],"maximilien":[363,0,0.512],"maxwel":[267,0,0.4853],"merek":[368,0,0.5132],"michaelthomas":[27,0,0.0],"mickail":[5,0,0.0],"milad":[444,0,0.5295],"mohannad":[103,0,0.4026],"monterius":[96,0,0.0],"monterrius":[76,0,0.0],"mujtaba":[379,0,0.5157],"nathin":[231,0,0.4727],"neima":[5,101,0.386],"neptali":[15,0,0.0],"nereo":[21,0,0.0],"niegel":[29,0,0.0],"nikholas":[149,0,0.4346],"olujimi":[41,0,0.0],"pake":[46,0,0.0],"payman":[5,0,0.0],"peretz":[139,0,0.4286],"perrier":[5,0,0.0],"quantavis":[101,0,0.4009],"quinston":[26,0,0.0],"radame":[5,0,0.0],"raemon":[31,0,0.0],"rafferty":[269,0,0.486],"ralphell":[5,0,0.0],"raynal":[10,0,0.0],"ricado":[5,0,0.0],"riely":[177,182,0.2591],"robertcharles":[5,0,0.0],"rodricas":[5,0,0.0],"romin":[138,0,0.428],"rontavious":[174,0,0.4481],"rudis":[38,0,0.0],"rushton":[126,0,0.4201],"ryson":[293,0,0.4934],"sarom":[10,5,0.0],"seananthony":[36,0,0.0],"shakti":[11,200,0.4406],"shateek":[33,0,0.0],"shinji":[28,0,0.0],"shreyas":[1395,0,0.6289],"siam":[102,0,0.4017],"stefin":[11,0,0.0],"tallen":[575,0,0.5519],"tanvir":[266,7,0.4747],"tarquin":[66,0,0.0],"tavone":[66,0,0.0],"termell":[5,0,0.0],"thomasmichael":[11,0,0.0],"tinh":[15,0,0.0],"tison":[221,0,0.4689],"travys":[34,0,0.0],"trenard":[39,0,0.0],"tryell":[5,0,0.0],"tue":[11,0,0.0],"tycen":[607,0,0.5566],"tyrease":[213,0,0.4657],"tysin":[139,0,0.4286],"undrae":[5,0,0.0],"vachon":[15,0,0.0],"willfredo":[5,0,0.0],"windham":[37,0,0.0],"wrangler":[321,0,0.5013],"wrenn":[53,407,0.4712],"yinessa":[5,6,0.0],"yler":[5,0,0.0],"zacharay":[27,0,0.0],"zackari":[208,0,0.4636],"zackarie":[217,0,0.4673],"zackerie":[76,0,0.0],"zafir":[266,0,0.485],"zakry":[244,0,0.4775],"jalesa":[0,647,0.5622],"jalisha":[0,542,0.5468],"navil":[5,117,0.4002],"jalysa":[0,393,0.5189],"neiva":[0,124,0.4187],"satori":[47,484,0.4968],"yeraldin":[0,363,0.512],"lataja":[0,106,0.4051],"neyva":[0,48,0.0],"yurico":[0,45,0.0],"cyre":[26,39,0.0],"jalecia":[0,393,0.5189],"jeleesa":[0,57,0.0],"mushka":[0,481,0.5364],"anakaren":[0,999,0.5999],"anum":[0,607,0.5566],"jaleisa":[0,104,0.4034],"marycruz":[0,436,0.5279],"whitlee":[6,881,0.5856],"armisha":[0,16,0.0],"dejanee":[0,265,0.4846],"jerlisa":[0,116,0.4129],"kahlie":[0,122,0.4173],"khrystyne":[0,97,0.0],"jalise":[0,297,0.4946],"raesha":[0,78,0.0],"shauniece":[0,70,0.0],"brittley":[0,115,0.4121],"jaleesha":[0,51,0.0],"jalisia":[0,150,0.4352],"jelesa":[0,71,0.0],"whittley":[0,69,0.0],"genessis":[0,1207,0.6163],"jelicia":[0,131,0.4235],"jelisha":[0,74,0.0],"neiba":[0,23,0.0],"sagen":[25,23,0.0],"abriana":[0,2542,0.681],"chaunice":[0,70,0.0],"dafne":[0,3284,0.7033],"destanee":[0,835,0.5843],"destaney":[0,317,0.5002],"donneshia":[0,34,0.0],"jelessa":[0,32,0.0],"jolisha":[0,54,0.0],"kaylaann":[0,173,0.4476],"solida":[0,11,0.0],"alexarae":[0,97,0.0],"allyshia":[0,41,0.0],"apiffany":[0,24,0.0],"apiphany":[0,22,0.0],"britley":[0,175,0.4486],"cameryn":[808,2803,0.5523],"charniece":[0,92,0.0],"dashae":[5,249,0.4715],"decora":[0,21,0.0],"deleesa":[0,10,0.0],"jahlisa":[0,65,0.0],"jaleese":[0,33,0.0],"jalesha":[0,137,0.4273],"jalesia":[0,223,0.4697],"jenavieve":[0,975,0.5978],"jilisa":[0,30,0.0],"kairee":[389,180,0.3767],"kaylamarie":[0,334,0.5047],"kayloni":[0,745,0.5744],"lectoria":[0,10,0.0],"nikayla":[0,1213,0.6168],"parisha":[0,126,0.4201],"rachelanne":[0,85,0.0],"shyniece":[0,95,0.0],"aitlin":[0,9,0.0],"beanca":[0,61,0.0],"beunka":[0,26,0.0],"briaunna":[0,446,0.5299],"caileen":[0,139,0.4286],"calynn":[0,496,0.5391],"cheisea":[0,22,0.0],"cheslea":[0,45,0.0],"daleesa":[0,9,0.0],"danasia":[0,1376,0.6277],"darshae":[0,31,0.0],"janil":[0,41,0.0],"jessicka":[0,38,0.0],"kaloni":[17,643,0.5494],"kortne":[0,69,0.0],"layken":[290,1165,0.5065],"nataja":[0,55,0.0],"quanasia":[0,184,0.453],"shaquisha":[0,108,0.4067],"shinice":[0,32,0.0],"smanatha":[0,26,0.0],"somone":[0,54,0.0],"stephanny":[0,194,0.4576],"tyandra":[0,15,0.0],"tyreshia":[0,82,0.0],"aidel":[0,342,0.5068],"alixandrea":[0,100,0.4],"anasia":[0,915,0.5923],"anilu":[0,44,0.0],"anjelicia":[0,24,0.0],"arriana":[0,1573,0.6393],"aryel":[49,569,0.5139],"asami":[0,146,0.4329],"austi":[0,20,0.0],"biancha":[0,54,0.0],"breiana":[0,315,0.4997],"briceida":[0,455,0.5316],"brittlee":[0,18,0.0],"caileigh":[0,1167,0.6134],"carmeisha":[0,18,0.0],"cashae":[0,76,0.0],"chaneice":[0,19,0.0],"crislyn":[0,156,0.4386],"danira":[0,180,0.4511],"deleshia":[0,24,0.0],"ezinne":[0,186,0.4539],"franchessca":[0,8,0.0],"galisa":[0,18,0.0],"jaleesia":[0,17,0.0],"jaleshia":[0,44,0.0],"janki":[0,259,0.4827],"jaria":[0,147,0.4335],"jaynae":[0,42,0.0],"jericca":[0,68,0.0],"johnique":[0,51,0.0],"jynelle":[0,37,0.0],"kariana":[0,550,0.5481],"kayeloni":[0,22,0.0],"kendralyn":[0,23,0.0],"kilie":[0,258,0.4823],"kryston":[0,18,0.0],"kymbre":[0,20,0.0],"laerica":[0,33,0.0],"laquandria":[0,29,0.0],"latigra":[0,22,0.0],"lizmary":[0,174,0.4481],"mateja":[29,67,0.0],"mykeisha":[0,81,0.0],"nailea":[0,1332,0.6249],"neyba":[0,8,0.0],"piffany":[0,14,0.0],"polet":[0,47,0.0],"riesha":[0,15,0.0],"sachet":[0,46,0.0],"secily":[0,130,0.4228],"shanny":[0,24,0.0],"shernice":[0,22,0.0],"sinai":[240,2209,0.6114],"sydnei":[0,635,0.5606],"synquis":[0,26,0.0],"tesheena":[0,13,0.0],"adhley":[0,7,0.0],"alexandia":[0,17,0.0],"alezandra":[0,114,0.4114],"alician":[0,12,0.0],"alishya":[0,18,0.0],"allexandra":[0,25,0.0],"alyssandra":[0,840,0.5849],"anagabriela":[0,116,0.4129],"anahit":[0,378,0.5155],"andrieka":[0,7,0.0],"anteria":[0,54,0.0],"astasia":[0,50,0.0],"aubrianna":[0,4584,0.7322],"basia":[0,362,0.5117],"belgica":[0,12,0.0],"bianaca":[0,7,0.0],"blakelee":[33,1297,0.6093],"breawna":[0,198,0.4593],"breiann":[0,18,0.0],"bryttanie":[0,19,0.0],"caithlin":[0,20,0.0],"caitlinn":[0,133,0.4248],"callin":[127,7,0.4032],"catelynn":[0,822,0.583],"catey":[0,18,0.0],"cedrica":[0,69,0.0],"cedricka":[0,83,0.0],"chasmine":[0,108,0.4067],"chelce":[0,58,0.0],"chelcea":[0,67,0.0],"citlaly":[0,2812,0.6898],"crustal":[0,7,0.0],"crysany":[0,7,0.0],"cyera":[0,149,0.4346],"daly":[48,308,0.4415],"deaja":[0,433,0.5273],"deija":[0,475,0.5353],"deysy":[0,238,0.4753],"dezeree":[0,54,0.0],"diasy":[0,24,0.0],"estephany":[0,821,0.5829],"felycia":[0,19,0.0],"geovana":[0,271,0.4866],"gerika":[0,29,0.0],"harneet":[0,120,0.4158],"heydi":[0,680,0.5665],"holliann":[0,35,0.0],"jaena":[0,116,0.4129],"jakeshia":[0,12,0.0],"jazzy":[0,205,0.4624],"jellisa":[0,29,0.0],"jeraldin":[0,66,0.0],"jessico":[0,14,0.0],"jillesa":[0,7,0.0],"jordane":[7,160,0.4259],"juleesa":[0,24,0.0],"julicia":[0,145,0.4323],"kachiri":[0,18,0.0],"kailan":[569,512,0.3194],"kailei":[0,617,0.5581],"kaityln":[0,127,0.4208],"kamri":[0,1278,0.6213],"kamry":[23,963,0.5848],"katelinn":[0,163,0.4424],"kathlin":[0,12,0.0],"kayal":[0,155,0.4381],"keeanna":[0,69,0.0],"khrystin":[0,12,0.0],"kodee":[311,375,0.3101],"krisia":[0,17,0.0],"lessly":[0,636,0.5607],"lexey":[0,208,0.4636],"lynlea":[0,20,0.0],"lynnlee":[0,1016,0.6014],"marikate":[0,45,0.0],"nakayla":[0,1814,0.6517],"nikyta":[0,7,0.0],"oyuky":[0,59,0.0],"quateria":[0,17,0.0],"raevin":[0,128,0.4214],"roniece":[0,28,0.0],"samiria":[0,46,0.0],"sareen":[0,194,0.4576],"sesley":[0,23,0.0],"shamisha":[0,7,0.0],"shandice":[0,12,0.0],"shaneise":[0,15,0.0],"shaniese":[0,33,0.0],"shanovia":[0,36,0.0],"shaquayla":[0,114,0.4114],"sharnece":[0,17,0.0],"shaylea":[0,317,0.5002],"shetera":[0,7,0.0],"shieka":[0,13,0.0],"shynice":[0,61,0.0],"swetha":[0,311,0.4986],"syndey":[0,318,0.5005],"taleesa":[0,22,0.0],"tasmine":[0,69,0.0],"terreka":[0,12,0.0],"thanya":[0,261,0.4833],"tianca":[0,30,0.0],"tyshay":[0,207,0.4632],"zykia":[0,452,0.531],"aasia":[0,225,0.4704],"abbee":[0,164,0.443],"akaysha":[0,132,0.4241],"alaura":[0,1785,0.6503],"alaynna":[0,756,0.5757],"alexzandrea":[0,358,0.5108],"alle":[0,167,0.4445],"allyssia":[0,183,0.4525],"allyx":[0,42,0.0],"alsiha":[0,6,0.0],"alyese":[0,27,0.0],"alyssamarie":[0,319,0.5008],"ambrielle":[0,731,0.5728],"anjellica":[0,44,0.0],"annachristina":[0,6,0.0],"annai":[0,172,0.4471],"annalisha":[0,20,0.0],"anyea":[0,57,0.0],"aryanna":[0,9343,0.7941],"aryelle":[0,564,0.5503],"asata":[0,42,0.0],"aseel":[151,1163,0.552],"attache":[0,6,0.0],"ayriel":[0,157,0.4392],"azaria":[208,7148,0.7515],"baileigh":[0,2506,0.6798],"biaca":[0,6,0.0],"biance":[0,86,0.0],"bobbielee":[0,6,0.0],"brigina":[0,6,0.0],"cambrea":[0,172,0.4471],"camra":[0,11,0.0],"cashay":[0,141,0.4298],"cashea":[0,18,0.0],"cesley":[0,50,0.0],"ceslie":[0,48,0.0],"chaena":[0,6,0.0],"chanteria":[0,81,0.0],"charnele":[0,195,0.458],"charnesha":[0,23,0.0],"chenavia":[0,6,0.0],"chiamaka":[0,634,0.5604],"chinna":[0,38,0.0],"chrislynn":[0,466,0.5337],"chyanna":[0,318,0.5005],"danaysy":[0,6,0.0],"danyeil":[0,6,0.0],"daresha":[0,46,0.0],"dashay":[24,304,0.4664],"deahna":[0,33,0.0],"deaudra":[0,27,0.0],"deema":[0,623,0.5589],"demeisha":[0,68,0.0],"deserai":[0,69,0.0],"destenie":[0,207,0.4632],"destyne":[0,433,0.5273],"destynee":[0,779,0.5783],"dontavia":[11,118,0.3861],"ellyssa":[0,325,0.5024],"elyza":[0,1293,0.6223],"erka":[0,6,0.0],"fedaa":[0,6,0.0],"garbrielle":[0,12,0.0],"genisis":[0,839,0.5848],"haether":[0,6,0.0],"hitney":[0,6,0.0],"indsay":[0,6,0.0],"jackelynn":[0,121,0.4166],"jakayla":[0,6799,0.7665],"jaliesa":[0,18,0.0],"jaliza":[0,106,0.4051],"janelli":[0,283,0.4904],"jannelly":[0,101,0.4009],"janyl":[0,6,0.0],"jarika":[0,63,0.0],"jasmie":[0,38,0.0],"jasmynn":[0,320,0.501],"jazminne":[0,34,0.0],"jazsmine":[0,109,0.4075],"jelica":[0,13,0.0],"jelysa":[0,6,0.0],"jennay":[0,51,0.0],"jernae":[0,16,0.0],"jesyka":[0,94,0.0],"johneisha":[0,164,0.443],"joleesa":[0,29,0.0],"jsamine":[0,6,0.0],"julisha":[0,56,0.0],"jullisa":[0,139,0.4286],"kabria":[0,285,0.491],"kaeloni":[0,89,0.0],"kaiti":[0,11,0.0],"kaleshia":[0,32,0.0],"kapria":[0,34,0.0],"kashaundra":[0,6,0.0],"katavia":[0,33,0.0],"katerin":[0,1000,0.6],"katlyne":[0,269,0.486],"katlynne":[0,213,0.4657],"kawena":[15,176,0.4204],"keilyn":[236,1182,0.5254],"kelianne":[0,6,0.0],"kerena":[0,36,0.0],"ketara":[0,74,0.0],"keyerra":[0,293,0.4934],"keyoshia":[0,33,0.0],"kiaya":[0,852,0.5861],"kimaya":[0,1065,0.6055],"kimbria":[0,118,0.4144],"kirsy":[0,11,0.0],"kourtnei":[0,166,0.444],"kristamarie":[0,6,0.0],"lajoia":[0,6,0.0],"laquella":[0,6,0.0],"lashanae":[0,56,0.0],"leeor":[17,16,0.0],"leteisha":[0,18,0.0],"lismarie":[0,23,0.0],"lyndley":[0,17,0.0],"maianh":[0,29,0.0],"mami":[0,20,0.0],"mariaelizabeth":[0,34,0.0],"mariafernanda":[0,1137,0.6112],"mariyam":[0,324,0.5021],"markayla":[0,2231,0.6697],"markeeda":[0,6,0.0],"marquisia":[0,38,0.0],"mayah":[0,2910,0.6928],"mekala":[0,181,0.4515],"melandy":[0,6,0.0],"merecedes":[0,41,0.0],"michellemarie":[0,6,0.0],"mikhaela":[0,377,0.5153],"mitali":[0,117,0.4136],"naesha":[0,87,0.0],"noely":[0,683,0.5669],"padee":[0,22,0.0],"polette":[0,135,0.4261],"porshay":[0,42,0.0],"pria":[0,419,0.5244],"quinteria":[0,85,0.0],"quinterra":[0,46,0.0],"rachae":[0,18,0.0],"rafia":[0,105,0.4042],"raley":[0,378,0.5155],"rauchelle":[0,6,0.0],"razia":[0,108,0.4067],"reeba":[0,11,0.0],"rickeisha":[0,36,0.0],"rotem":[5,42,0.0],"russia":[0,104,0.4034],"saide":[0,135,0.4261],"samantaha":[0,6,0.0],"sammiejo":[0,6,0.0],"sataria":[0,6,0.0],"se":[6,12,0.0],"segen":[0,35,0.0],"selam":[0,205,0.4624],"semhar":[0,40,0.0],"sessily":[0,6,0.0],"shacarla":[0,11,0.0],"shacoria":[0,170,0.4461],"shalyse":[0,52,0.0],"shanata":[0,6,0.0],"shaneece":[0,98,0.0],"shaniquea":[0,27,0.0],"shaqualla":[0,41,0.0],"shaquasha":[0,78,0.0],"shaquinda":[0,6,0.0],"shawdae":[0,23,0.0],"shawneice":[0,19,0.0],"shawniqua":[0,50,0.0],"shayli":[0,353,0.5096],"shealee":[0,237,0.4749],"sheenika":[0,6,0.0],"shemira":[0,18,0.0],"shiori":[0,263,0.484],"shonterria":[0,25,0.0],"shylynn":[0,420,0.5246],"shynisha":[0,6,0.0],"sidrah":[0,362,0.5117],"stefaney":[0,19,0.0],"suleika":[0,147,0.4335],"taeler":[5,341,0.5005],"tailor":[161,970,0.5238],"tashee":[0,30,0.0],"tashyra":[0,163,0.4424],"tatiania":[0,17,0.0],"tattiana":[0,176,0.4491],"teasia":[0,706,0.5698],"tifanni":[0,11,0.0],"tifffany":[0,6,0.0],"timeshia":[0,58,0.0],"timmeka":[0,23,0.0],"tinaya":[0,109,0.4075],"travonna":[0,78,0.0],"trevonna":[0,27,0.0],"viveka":[0,102,0.4017],"wesleigh":[5,357,0.5047],"whitleigh":[0,219,0.4681],"whitnay":[0,6,0.0],"yenia":[0,37,0.0],"zehava":[0,139,0.4286],"aaliya":[0,1525,0.6367],"aariel":[0,223,0.4697],"abrigail":[0,26,0.0],"aishling":[0,33,0.0],"albani":[0,16,0.0],"aleksa":[62,540,0.4987],"alexanda":[0,22,0.0],"alexandira":[0,5,0.0],"alexann":[0,5,0.0],"alexica":[0,63,0.0],"alexiz":[249,265,0.2795],"alham":[5,5,0.0],"alheli":[0,99,0.0],"allory":[0,15,0.0],"alysan":[0,22,0.0],"alyshea":[0,33,0.0],"alyssamae":[0,65,0.0],"amberjo":[0,10,0.0],"amberrae":[0,5,0.0],"ameesha":[0,10,0.0],"amilyn":[0,27,0.0],"analyse":[0,701,0.5691],"anavictoria":[0,380,0.516],"andreca":[0,5,0.0],"angelis":[35,530,0.5163],"anikia":[0,5,0.0],"annahi":[0,325,0.5024],"annalena":[0,270,0.4863],"annaliesa":[0,87,0.0],"annastashia":[0,10,0.0],"annelie":[0,269,0.486],"annelizabeth":[0,15,0.0],"anngelica":[0,11,0.0],"annum":[0,21,0.0],"ansa":[0,34,0.0],"anslee":[0,1363,0.6269],"anusha":[0,1164,0.6132],"anyah":[0,1640,0.643],"aramie":[0,5,0.0],"asheli":[0,34,0.0],"asheton":[105,78,0.2596],"ashlae":[0,5,0.0],"assandra":[0,5,0.0],"atenas":[0,25,0.0],"auja":[0,42,0.0],"aury":[5,187,0.4448],"aylah":[0,2159,0.6669],"azusa":[0,32,0.0],"baleigh":[0,1889,0.6552],"basmah":[0,45,0.0],"baylea":[0,457,0.532],"beenish":[0,5,0.0],"bhumi":[0,210,0.4644],"biancia":[0,40,0.0],"biviana":[0,257,0.482],"breina":[0,51,0.0],"breyona":[0,495,0.5389],"britannica":[0,20,0.0],"britinee":[0,13,0.0],"brittainey":[0,11,0.0],"brittaini":[0,5,0.0],"brittary":[0,5,0.0],"britteni":[0,20,0.0],"brittiani":[0,12,0.0],"brittinay":[0,23,0.0],"bryttni":[0,57,0.0],"cahlin":[0,5,0.0],"cailah":[0,131,0.4235],"caity":[0,41,0.0],"caludia":[0,16,0.0],"cansas":[0,25,0.0],"carely":[0,152,0.4364],"cassarah":[0,5,0.0],"caysi":[0,10,0.0],"cecilly":[0,17,0.0],"cemone":[0,17,0.0],"cendi":[0,5,0.0],"cesalie":[0,12,0.0],"cessily":[0,24,0.0],"chaeli":[0,262,0.4837],"champale":[0,22,0.0],"champayne":[0,107,0.4059],"chandale":[0,5,0.0],"charlynda":[0,5,0.0],"charnai":[0,16,0.0],"charneice":[0,22,0.0],"charnique":[0,22,0.0],"chasey":[0,241,0.4764],"chaslyn":[0,164,0.443],"chassidi":[0,5,0.0],"chazlynn":[0,35,0.0],"chealse":[0,18,0.0],"chiemi":[0,5,0.0],"chquita":[0,5,0.0],"cienna":[0,2960,0.6943],"clairese":[0,22,0.0],"collena":[0,10,0.0],"cordae":[622,5,0.555],"cornesia":[0,10,0.0],"coua":[0,25,0.0],"cyla":[0,332,0.5042],"cynteria":[0,17,0.0],"dajanae":[0,684,0.567],"danaye":[0,67,0.0],"darnecia":[0,28,0.0],"dartisha":[0,5,0.0],"dayona":[0,246,0.4782],"dejonae":[0,38,0.0],"delysa":[0,5,0.0],"denequa":[0,21,0.0],"denysha":[0,22,0.0],"desari":[0,5,0.0],"desiraye":[0,111,0.4091],"devana":[0,24,0.0],"deyona":[0,100,0.4],"dionca":[0,16,0.0],"dnae":[0,57,0.0],"elaysha":[0,178,0.4501],"eleanna":[0,304,0.4966],"elian":[12815,103,0.8157],"emari":[1110,1140,0.3397],"erneshia":[0,17,0.0],"evamaria":[0,170,0.4461],"evemarie":[0,23,0.0],"fidelina":[0,11,0.0],"flormaria":[0,24,0.0],"fredeline":[0,5,0.0],"gabryelle":[0,557,0.5492],"gelissa":[0,30,0.0],"genai":[0,10,0.0],"ghazal":[0,307,0.4974],"gi":[0,5,0.0],"gissele":[0,566,0.5506],"hadia":[0,575,0.5519],"haeley":[0,397,0.5198],"haliegh":[0,400,0.5204],"hodan":[0,285,0.491],"honour":[109,257,0.36],"hripsime":[0,5,0.0],"ileanna":[0,343,0.5071],"inbar":[0,20,0.0],"inessa":[0,643,0.5616],"jacaranda":[0,5,0.0],"jacarra":[0,95,0.0],"jacobia":[5,15,0.0],"jacqueling":[0,5,0.0],"jacquitta":[0,11,0.0],"jadea":[0,349,0.5086],"jaicee":[0,825,0.5833],"jaila":[0,2597,0.6829],"jakiya":[0,1412,0.63],"jaleeza":[0,33,0.0],"jalese":[0,41,0.0],"jalita":[0,15,0.0],"jallisa":[0,33,0.0],"jalysia":[0,29,0.0],"jamece":[0,5,0.0],"jametria":[0,43,0.0],"janael":[0,5,0.0],"janani":[0,379,0.5157],"janeeka":[0,22,0.0],"janeesa":[0,53,0.0],"janesia":[0,92,0.0],"jaquell":[231,5,0.4645],"jaquilyn":[0,5,0.0],"jaquise":[202,40,0.398],"jaqulyn":[0,72,0.0],"jaqulynn":[0,5,0.0],"jarely":[0,944,0.595],"jasmeet":[64,207,0.3717],"jasminn":[0,46,0.0],"jasmire":[0,5,0.0],"jatoria":[0,251,0.4799],"jayana":[0,1213,0.6168],"jazminn":[0,112,0.4098],"jazzmyne":[0,529,0.5447],"jelina":[0,239,0.4757],"jelisia":[0,10,0.0],"jemelia":[0,5,0.0],"jeniva":[0,25,0.0],"jennaleigh":[0,11,0.0],"jennisa":[0,15,0.0],"jesmine":[0,55,0.0],"jesseica":[0,5,0.0],"jesselle":[0,236,0.4746],"jesslynn":[0,648,0.5623],"jherrica":[0,10,0.0],"jiyoung":[0,5,0.0],"jlisa":[0,31,0.0],"jnae":[0,208,0.4636],"johnee":[0,50,0.0],"johneshia":[0,55,0.0],"jonnique":[0,5,0.0],"jordynn":[99,5070,0.7285],"josseline":[0,618,0.5582],"juliea":[0,40,0.0],"jully":[0,60,0.0],"kaamilah":[0,10,0.0],"kaelani":[0,1205,0.6162],"kaelynne":[0,196,0.4585],"kailoni":[0,220,0.4685],"kaithlin":[0,5,0.0],"kalise":[0,854,0.5863],"kalyne":[0,37,0.0],"kambree":[0,1678,0.645],"kameryn":[814,2052,0.4951],"kamile":[0,245,0.4778],"kapricia":[0,5,0.0],"karolyne":[0,261,0.4833],"kascha":[0,23,0.0],"kashe":[78,40,0.2739],"katalyn":[0,62,0.0],"katelund":[0,5,0.0],"katrinamarie":[0,15,0.0],"kaylarae":[0,5,0.0],"kaylyne":[0,72,0.0],"kaytlen":[0,206,0.4628],"kaywin":[0,5,0.0],"kazoua":[0,63,0.0],"kealey":[0,381,0.5162],"keierra":[0,61,0.0],"kelecia":[0,5,0.0],"kelsei":[0,330,0.5037],"kendar":[0,5,0.0],"kennika":[0,5,0.0],"kennyetta":[0,15,0.0],"kerrisa":[0,5,0.0],"kesiah":[15,58,0.0],"khrystine":[0,23,0.0],"khushboo":[0,48,0.0],"kilani":[0,265,0.4846],"klee":[0,380,0.516],"kokeeta":[0,5,0.0],"kolbie":[425,1373,0.4971],"kristiena":[0,5,0.0],"krystalrose":[0,5,0.0],"kurstyn":[0,100,0.4],"kynna":[0,27,0.0],"kyrstan":[0,62,0.0],"kyrsti":[0,40,0.0],"kyrstie":[0,60,0.0],"labria":[0,437,0.5281],"labritney":[0,5,0.0],"lajoi":[0,11,0.0],"laquaya":[0,29,0.0],"laquel":[0,5,0.0],"laramee":[0,23,0.0],"laraya":[0,301,0.4957],"lashey":[0,16,0.0],"lashonte":[0,36,0.0],"laterrika":[0,20,0.0],"leighla":[0,884,0.5893],"libeth":[0,5,0.0],"lilibet":[0,134,0.4254],"lillyann":[0,2440,0.6775],"lindsea":[0,70,0.0],"linlee":[0,150,0.4352],"lital":[0,47,0.0],"lonniesha":[0,5,0.0],"lundon":[102,240,0.3557],"lynndsey":[0,5,0.0],"mabil":[0,5,0.0],"mainhia":[0,17,0.0],"makiya":[14,3017,0.6931],"malekia":[0,10,0.0],"mang":[150,72,0.3171],"maquisha":[0,10,0.0],"marbel":[0,15,0.0],"marchae":[0,41,0.0],"marielis":[0,310,0.4983],"marijana":[0,5,0.0],"marqueeta":[0,5,0.0],"marycaroline":[0,5,0.0],"marychristina":[0,5,0.0],"matisse":[346,215,0.3391],"mavia":[0,5,0.0],"mckel":[5,5,0.0],"mckensey":[0,246,0.4782],"meghon":[0,5,0.0],"meha":[0,178,0.4501],"melarie":[0,5,0.0],"melinna":[0,234,0.4738],"mesan":[0,5,0.0],"mikila":[0,37,0.0],"mikyla":[0,1099,0.6082],"mio":[104,333,0.4024],"mirielle":[0,529,0.5447],"monali":[0,10,0.0],"moncheri":[0,5,0.0],"montoria":[0,10,0.0],"mykeshia":[0,10,0.0],"myleah":[0,490,0.538],"nabile":[0,5,0.0],"najat":[0,166,0.444],"naporsha":[0,38,0.0],"naquesha":[0,32,0.0],"navpreet":[0,81,0.0],"nayelli":[0,1441,0.6317],"nayra":[0,463,0.5331],"neira":[0,136,0.4267],"niara":[0,1155,0.6125],"nitya":[10,1092,0.6029],"nozomi":[0,137,0.4273],"nyja":[0,202,0.4611],"pagen":[0,5,0.0],"phelisha":[0,10,0.0],"phyllisia":[0,10,0.0],"polett":[0,15,0.0],"prianka":[0,39,0.0],"pryscilla":[0,21,0.0],"qiara":[0,104,0.4034],"quincee":[31,324,0.4655],"quineshia":[0,53,0.0],"rachelleann":[0,5,0.0],"racquelle":[0,114,0.4114],"raenesha":[0,20,0.0],"rameisha":[0,5,0.0],"raylee":[94,4836,0.7245],"reginamarie":[0,5,0.0],"rhiann":[0,138,0.428],"rosanny":[0,18,0.0],"roshani":[0,45,0.0],"rosmery":[0,418,0.5242],"ryesha":[0,41,0.0],"sache":[0,62,0.0],"salida":[0,5,0.0],"samontha":[0,5,0.0],"saranna":[0,15,0.0],"sarsh":[0,5,0.0],"sashae":[0,39,0.0],"searia":[0,5,0.0],"seria":[0,23,0.0],"sesily":[0,20,0.0],"shadreka":[0,22,0.0],"shaeli":[0,56,0.0],"shailynn":[0,428,0.5263],"shakeara":[0,29,0.0],"shakiara":[0,93,0.0],"shakyia":[0,108,0.4067],"shakyla":[0,358,0.5108],"shalai":[0,19,0.0],"shaleesa":[0,17,0.0],"shandara":[0,5,0.0],"shanicia":[0,25,0.0],"shanieca":[0,5,0.0],"shanisa":[0,24,0.0],"shannee":[0,5,0.0],"shannia":[0,105,0.4042],"shantela":[0,5,0.0],"shantrail":[0,5,0.0],"shanyse":[0,5,0.0],"shaquesha":[0,57,0.0],"shaquise":[0,21,0.0],"shaquonna":[0,28,0.0],"sharikka":[0,5,0.0],"sharrita":[0,5,0.0],"shaska":[0,10,0.0],"shavia":[0,10,0.0],"shawntice":[0,10,0.0],"shayanna":[0,294,0.4937],"shayanne":[0,336,0.5053],"shellsea":[0,127,0.4208],"sheterrica":[0,5,0.0],"sheyann":[0,120,0.4158],"shilyn":[0,58,0.0],"shiniece":[0,11,0.0],"shivali":[0,208,0.4636],"shyneice":[0,10,0.0],"sieda":[0,20,0.0],"skylynn":[0,3202,0.7011],"sthepanie":[0,5,0.0],"suada":[0,15,0.0],"syra":[0,409,0.5223],"taahira":[0,61,0.0],"tabresha":[0,27,0.0],"tacoria":[0,24,0.0],"tahera":[0,23,0.0],"taijarae":[0,5,0.0],"takya":[0,201,0.4606],"taleisa":[0,5,0.0],"talsha":[0,5,0.0],"tanaja":[0,276,0.4882],"tangina":[0,44,0.0],"taquella":[0,5,0.0],"taquesha":[0,53,0.0],"tasheana":[0,50,0.0],"tatijana":[0,68,0.0],"tationa":[0,158,0.4397],"teahna":[0,5,0.0],"teanisha":[0,5,0.0],"tequella":[0,5,0.0],"tequoia":[0,11,0.0],"thuyvy":[0,5,0.0],"tiadra":[0,5,0.0],"tigra":[0,10,0.0],"titana":[0,25,0.0],"tramesha":[0,20,0.0],"tranecia":[0,15,0.0],"trasia":[0,5,0.0],"trinae":[0,48,0.0],"tsvia":[0,5,0.0],"typhani":[0,23,0.0],"tyranika":[0,5,0.0],"tysheia":[0,5,0.0],"urvi":[0,380,0.516],"vanessaanne":[0,5,0.0],"vantrice":[0,15,0.0],"vinesha":[0,18,0.0],"voctoria":[0,5,0.0],"whtiney":[0,5,0.0],"yanelys":[0,41,0.0],"yasmir":[0,5,0.0],"yeimi":[0,736,0.5734],"yenis":[0,20,0.0],"yerica":[0,5,0.0],"yescenia":[0,15,0.0],"yewande":[0,28,0.0],"ysatis":[0,24,0.0],"yunuen":[46,290,0.4361],"zennia":[0,65,0.0],"zuleica":[0,170,0.4461],"kadeem":[2620,0,0.6837],"kiefer":[1944,0,0.6577],"suave":[45,0,0.0],"elisaul":[23,0,0.0],"melquan":[259,0,0.4827],"alanmichael":[221,0,0.4689],"chaze":[206,0,0.4628],"seaver":[135,0,0.4261],"coltan":[796,0,0.5802],"satchel":[548,0,0.5478],"crue":[2258,53,0.6573],"nattiel":[10,0,0.0],"neiko":[771,0,0.5774],"yordano":[23,0,0.0],"amario":[139,0,0.4286],"axl":[4214,5,0.7242],"braylin":[3077,1611,0.4819],"brenson":[258,0,0.4823],"kushal":[512,0,0.5419],"xaviar":[626,0,0.5593],"anthonymichael":[79,0,0.0],"dragon":[154,0,0.4375],"gevork":[205,0,0.4624],"jamarquis":[127,0,0.4208],"ladarrion":[159,0,0.4403],"moussa":[1057,0,0.6048],"nciholas":[8,0,0.0],"niguel":[153,0,0.4369],"quadarius":[386,0,0.5173],"rathanak":[19,0,0.0],"rayquan":[1228,0,0.6178],"ryananthony":[25,0,0.0],"ryanjoseph":[29,0,0.0],"taimur":[134,0,0.4254],"alexandrer":[7,0,0.0],"allenmichael":[104,0,0.4034],"ashad":[406,0,0.5217],"axton":[5406,5,0.746],"benicio":[4260,0,0.7259],"camran":[295,18,0.4704],"chanze":[327,0,0.5029],"coulton":[139,0,0.4286],"daiquan":[778,0,0.5782],"davron":[37,0,0.0],"demondre":[343,0,0.5071],"elyas":[1926,0,0.6569],"estefan":[331,0,0.504],"farad":[14,0,0.0],"giovanie":[83,0,0.0],"harsh":[665,0,0.5646],"isaiha":[640,0,0.5612],"jabree":[341,70,0.4337],"jameer":[1667,0,0.6444],"jaquon":[720,0,0.5715],"jayshawn":[1750,0,0.6486],"jeovani":[378,0,0.5155],"jequan":[271,0,0.4866],"jhalil":[458,0,0.5322],"jhovany":[476,0,0.5355],"jiovani":[669,0,0.5651],"josejesus":[24,0,0.0],"justinray":[18,0,0.0],"keivon":[514,0,0.5422],"konnor":[5711,119,0.7378],"laquintin":[49,0,0.0],"logon":[81,0,0.0],"lung":[7,0,0.0],"maison":[4422,791,0.6306],"malakai":[16157,57,0.839],"marcale":[18,0,0.0],"markies":[85,0,0.0],"marquavis":[212,0,0.4653],"masood":[42,0,0.0],"michaael":[7,0,0.0],"michaelryan":[24,0,0.0],"minesh":[12,0,0.0],"parsa":[721,0,0.5716],"rendon":[84,0,0.0],"ricoh":[7,0,0.0],"ryanjames":[54,0,0.0],"shivang":[41,0,0.0],"stedmond":[12,0,0.0],"steffin":[29,0,0.0],"stefone":[53,0,0.0],"tatsuya":[104,0,0.4034],"traevon":[777,0,0.5781],"wisdom":[983,982,0.3295],"xavien":[1302,0,0.6229],"zaine":[1949,16,0.6533],"abdrew":[6,0,0.0],"adonte":[177,0,0.4496],"alonte":[462,6,0.5272],"asaph":[401,0,0.5206],"atit":[6,0,0.0],"bernando":[6,0,0.0],"bryin":[16,0,0.0],"brynt":[17,0,0.0],"christopherryan":[11,0,0.0],"cye":[78,0,0.0],"daeshawn":[846,5,0.5825],"daishawn":[555,0,0.5489],"darreon":[352,0,0.5093],"dayquan":[739,0,0.5737],"deantwan":[17,0,0.0],"decorian":[253,0,0.4806],"deep":[352,0,0.5093],"delmario":[11,0,0.0],"dequentin":[6,0,0.0],"detrail":[6,0,0.0],"devontay":[890,0,0.5899],"dsean":[337,0,0.5055],"edmar":[167,0,0.4445],"eriq":[742,0,0.5741],"glenton":[6,0,0.0],"hairo":[100,0,0.4],"hamdi":[134,396,0.4071],"imer":[269,0,0.486],"imir":[191,0,0.4562],"jamarus":[27,0,0.0],"jamisen":[385,199,0.3647],"jancarlos":[1148,0,0.612],"jayke":[361,0,0.5115],"jefte":[153,0,0.4369],"jeremiha":[50,0,0.0],"jesusantonio":[46,0,0.0],"jimenez":[16,0,0.0],"jino":[49,0,0.0],"jmarcus":[46,0,0.0],"joquin":[11,0,0.0],"kasean":[185,0,0.4534],"kendan":[272,0,0.4869],"keveon":[196,0,0.4585],"keyvan":[60,0,0.0],"konner":[5584,158,0.7311],"lacurtis":[6,0,0.0],"landell":[6,0,0.0],"ledarrius":[123,0,0.418],"marhsall":[6,0,0.0],"markeise":[165,0,0.4435],"markevis":[54,0,0.0],"markiest":[11,0,0.0],"marquavious":[707,0,0.5699],"marquavius":[327,0,0.5029],"marquiss":[11,0,0.0],"marquon":[204,0,0.4619],"marsean":[406,0,0.5217],"mashad":[6,0,0.0],"mikyle":[255,0,0.4813],"nathanie":[64,0,0.0],"netanel":[434,0,0.5275],"nicholsa":[6,0,0.0],"nicohlas":[40,0,0.0],"nicolis":[141,0,0.4298],"nikolus":[174,0,0.4481],"nikul":[6,0,0.0],"odarius":[82,0,0.0],"pearse":[204,0,0.4619],"pouya":[6,0,0.0],"qamar":[165,320,0.3544],"quindarius":[442,0,0.5291],"quintay":[6,0,0.0],"raeshaun":[147,0,0.4335],"rakin":[117,0,0.4136],"resean":[62,0,0.0],"rodrekus":[11,0,0.0],"rohith":[295,0,0.494],"ruairi":[271,6,0.4779],"rushi":[249,0,0.4792],"saber":[298,73,0.4128],"sanjeet":[11,0,0.0],"sevastian":[531,0,0.545],"sherick":[6,0,0.0],"shota":[306,0,0.4971],"shristopher":[6,0,0.0],"sidharth":[740,0,0.5738],"soheil":[6,0,0.0],"stedmen":[6,0,0.0],"stedmon":[31,0,0.0],"stephenmichael":[6,0,0.0],"stevenmichael":[23,0,0.0],"takuma":[154,0,0.4375],"tommylee":[46,0,0.0],"torrel":[11,0,0.0],"treyton":[3179,0,0.7005],"tunde":[6,0,0.0],"tyer":[6,0,0.0],"tyrez":[267,0,0.4853],"uladimir":[6,0,0.0],"zuhair":[322,0,0.5016],"aaronn":[22,0,0.0],"abdulmalik":[562,0,0.5499],"abrham":[131,0,0.4235],"admir":[216,0,0.4669],"aedan":[3831,43,0.7097],"alecander":[5,0,0.0],"aleksandrs":[5,0,0.0],"alexader":[25,0,0.0],"alexs":[34,0,0.0],"alik":[376,5,0.5094],"allanmichael":[22,0,0.0],"amier":[643,0,0.5616],"andersen":[921,311,0.4621],"andreau":[18,0,0.0],"andrewjohn":[42,0,0.0],"ardian":[166,0,0.444],"armone":[58,10,0.0],"atnhony":[10,0,0.0],"avrahom":[75,0,0.0],"ayoub":[1009,0,0.6008],"bemjamin":[5,0,0.0],"bradney":[5,0,0.0],"braian":[185,0,0.4534],"bredan":[20,0,0.0],"breion":[153,45,0.3549],"briceson":[213,0,0.4657],"broderic":[188,0,0.4548],"bry":[36,0,0.0],"calden":[97,0,0.0],"canton":[520,0,0.5432],"cario":[81,0,0.0],"chanthy":[5,0,0.0],"charbel":[666,0,0.5647],"chrishon":[241,0,0.4764],"chrispin":[10,0,0.0],"cordaris":[5,0,0.0],"cordez":[15,0,0.0],"cornelle":[16,0,0.0],"cristoffer":[5,0,0.0],"crystian":[363,0,0.512],"dacota":[491,188,0.4096],"dalante":[85,0,0.0],"danieljames":[33,0,0.0],"dantley":[5,0,0.0],"dareon":[433,7,0.5203],"darnee":[5,0,0.0],"darvon":[54,0,0.0],"daveed":[70,0,0.0],"davidjr":[11,0,0.0],"davontae":[1537,0,0.6373],"dayln":[89,6,0.0],"deantoine":[10,0,0.0],"delshaun":[46,0,0.0],"demontae":[703,0,0.5694],"deuntae":[116,0,0.4129],"devito":[5,0,0.0],"diminic":[5,0,0.0],"diquan":[388,0,0.5178],"dmetrius":[70,0,0.0],"donevan":[174,0,0.4481],"dontrae":[122,0,0.4173],"dor":[11,30,0.0],"efrayim":[47,0,0.0],"eliahu":[21,0,0.0],"emmanul":[5,0,0.0],"ericanthony":[5,0,0.0],"ericmichael":[11,0,0.0],"estavan":[10,0,0.0],"eton":[32,0,0.0],"evian":[578,273,0.398],"fawzi":[71,0,0.0],"fayez":[200,0,0.4602],"floriberto":[5,0,0.0],"gedeon":[158,0,0.4397],"gerin":[5,0,0.0],"giancarlos":[823,0,0.5831],"gregrory":[5,0,0.0],"guiliano":[17,0,0.0],"hamzeh":[139,0,0.4286],"harison":[63,0,0.0],"haroun":[352,0,0.5093],"havier":[85,0,0.0],"hikeem":[110,0,0.4083],"hyder":[140,0,0.4292],"jachob":[146,0,0.4329],"jaheem":[1214,0,0.6168],"jaimal":[5,0,0.0],"jameek":[125,0,0.4194],"jamesthomas":[20,0,0.0],"jamial":[5,0,0.0],"janorris":[25,0,0.0],"jaquane":[120,0,0.4158],"jaquann":[119,0,0.4151],"jaqwan":[277,0,0.4885],"jareal":[15,0,0.0],"jarreth":[50,0,0.0],"jarryl":[5,0,0.0],"jarvell":[29,0,0.0],"jastin":[238,14,0.4536],"jatavius":[282,0,0.49],"javi":[592,0,0.5545],"jeffreyjames":[5,0,0.0],"jehovah":[33,0,0.0],"jemere":[56,0,0.0],"jephte":[38,0,0.0],"jguadalupe":[89,0,0.0],"jheremy":[139,0,0.4286],"jhordan":[212,78,0.36],"joanthon":[5,0,0.0],"johnalbert":[5,0,0.0],"johncarlo":[284,0,0.4907],"johnmatthew":[83,0,0.0],"jonathna":[5,0,0.0],"jonross":[5,0,0.0],"joshawn":[141,0,0.4298],"jovin":[205,0,0.4624],"justinmichael":[46,0,0.0],"justinrobert":[5,0,0.0],"kalieb":[199,0,0.4598],"kandon":[186,0,0.4539],"karell":[109,0,0.4075],"kayshawn":[445,0,0.5297],"keiffer":[164,0,0.443],"keldrin":[5,0,0.0],"kendarius":[1031,0,0.6027],"kenderrick":[49,0,0.0],"kendol":[5,0,0.0],"kenenth":[5,0,0.0],"kevinchristophe":[5,0,0.0],"kobey":[597,0,0.5552],"kodiak":[762,0,0.5764],"ladarrian":[106,0,0.4051],"ladarris":[34,0,0.0],"laderius":[61,0,0.0],"laquain":[5,0,0.0],"latavis":[10,0,0.0],"lavander":[15,0,0.0],"lazerrick":[23,0,0.0],"leeric":[5,0,0.0],"louay":[108,0,0.4067],"luisjavier":[5,0,0.0],"maclain":[413,5,0.518],"majdi":[27,0,0.0],"marcese":[10,0,0.0],"marckus":[71,0,0.0],"marcoa":[5,0,0.0],"marguel":[5,0,0.0],"marioalberto":[44,0,0.0],"marquael":[5,0,0.0],"marquiese":[44,0,0.0],"marquiz":[125,0,0.4194],"matheus":[1623,0,0.6421],"mathue":[28,0,0.0],"matteson":[10,110,0.3812],"matthrew":[5,0,0.0],"michaelallen":[5,0,0.0],"mishal":[5,233,0.4653],"mobolaji":[5,0,0.0],"nakul":[200,0,0.4602],"naren":[209,0,0.464],"nechemia":[147,0,0.4335],"niccolas":[189,0,0.4553],"nickelas":[43,0,0.0],"nickoli":[283,0,0.4904],"nickson":[291,0,0.4928],"nitesh":[50,0,0.0],"ommar":[26,0,0.0],"ordan":[5,0,0.0],"parick":[5,0,0.0],"paydon":[120,0,0.4158],"punit":[22,0,0.0],"quatez":[36,0,0.0],"quentavious":[184,0,0.453],"quentrell":[50,0,0.0],"quinntin":[150,0,0.4352],"raesean":[78,0,0.0],"raffiel":[5,0,0.0],"rahkim":[92,0,0.0],"ramik":[5,0,0.0],"ramis":[20,0,0.0],"ramo":[11,0,0.0],"ranzino":[5,0,0.0],"rashodd":[5,0,0.0],"reshod":[5,0,0.0],"revin":[156,0,0.4386],"robere":[5,0,0.0],"robertanthony":[30,0,0.0],"ronreaco":[11,0,0.0],"samier":[127,0,0.4208],"samisoni":[39,0,0.0],"savonte":[47,0,0.0],"seanchristopher":[10,0,0.0],"serdar":[5,0,0.0],"shaquon":[124,13,0.3868],"shawhin":[5,0,0.0],"shinya":[27,16,0.0],"shong":[5,0,0.0],"shontavius":[5,0,0.0],"stefphon":[5,0,0.0],"taariq":[285,0,0.491],"taichi":[111,0,0.4091],"tanar":[11,0,0.0],"tariek":[17,0,0.0],"tavarious":[189,0,0.4553],"tawfiq":[102,0,0.4017],"templeton":[11,0,0.0],"ternell":[5,0,0.0],"timmithy":[5,0,0.0],"tramale":[10,0,0.0],"tramarcus":[5,0,0.0],"treavon":[230,0,0.4723],"trendell":[30,0,0.0],"treshawn":[1587,5,0.6384],"trevel":[89,0,0.0],"trevvor":[5,0,0.0],"trion":[5,0,0.0],"tykeem":[379,0,0.5157],"tyrun":[10,0,0.0],"tysheen":[49,0,0.0],"tyshun":[402,0,0.5208],"umesh":[5,0,0.0],"valor":[1332,167,0.5644],"venkat":[106,0,0.4051],"vondrell":[5,0,0.0],"westleigh":[5,0,0.0],"wiiliam":[25,0,0.0],"williammichael":[12,0,0.0],"xu":[5,0,0.0],"yassin":[1109,13,0.6029],"yoan":[495,0,0.5389],"yorel":[101,0,0.4009],"yunus":[1218,0,0.6171],"zacherey":[16,0,0.0],"zakkary":[1200,0,0.6158],"zavious":[11,0,0.0],"zerek":[265,0,0.4846],"zhi":[176,17,0.4168],"ziggy":[1378,257,0.5417],"zishan":[34,0,0.0],"jacqueli":[0,157,0.4392],"cassandr":[0,152,0.4364],"unnamed":[371,265,0.3271],"audreanna":[0,547,0.5476],"jacquely":[0,50,0.0],"audreana":[0,272,0.4869],"cree":[1089,1103,0.3362],"kiaira":[0,508,0.5412],"madelein":[0,192,0.4567],"reneasha":[0,34,0.0],"audreyanna":[0,418,0.5242],"meghin":[0,193,0.4571],"kearia":[0,286,0.4913],"miata":[0,175,0.4486],"airelle":[0,233,0.4735],"anastasi":[0,22,0.0],"datra":[0,74,0.0],"baillie":[0,409,0.5223],"francesc":[10,19,0.0],"anquette":[0,43,0.0],"anushka":[0,1689,0.6455],"shawnay":[0,64,0.0],"adasha":[0,127,0.4208],"adrionna":[0,910,0.5918],"kiarah":[0,1404,0.6295],"kiswana":[0,42,0.0],"kyerra":[0,346,0.5078],"audrieanna":[0,55,0.0],"dominiqu":[0,15,0.0],"kyaira":[0,393,0.5189],"mykayla":[0,2689,0.6859],"nicolett":[0,31,0.0],"annemari":[0,14,0.0],"audrionna":[0,94,0.0],"marteka":[0,58,0.0],"martica":[0,31,0.0],"mercades":[0,583,0.5531],"ong":[0,52,0.0],"bayleigh":[0,5111,0.7417],"kashay":[0,188,0.4548],"kassandr":[0,13,0.0],"farheen":[0,157,0.4392],"kevisha":[0,49,0.0],"kiaria":[0,167,0.4445],"talyssa":[0,90,0.0],"teylor":[45,346,0.4588],"alitza":[0,494,0.5387],"areial":[0,46,0.0],"audreyana":[0,257,0.482],"laurana":[0,166,0.444],"shalayna":[0,97,0.0],"tashianna":[0,171,0.4466],"adreena":[0,112,0.4098],"adriona":[0,290,0.4925],"allora":[0,493,0.5386],"brittlyn":[0,118,0.4144],"cesilie":[0,10,0.0],"devaney":[0,178,0.4501],"elaura":[0,85,0.0],"faatimah":[0,136,0.4267],"ivonna":[0,161,0.4414],"jarrica":[0,35,0.0],"jordain":[59,215,0.3826],"kaitlinn":[0,188,0.4548],"madeley":[0,39,0.0],"meylin":[0,529,0.5447],"navjot":[99,108,0.2417],"shaniequa":[0,25,0.0],"analyssa":[0,523,0.5437],"bahja":[0,164,0.443],"bernadet":[0,9,0.0],"bianna":[0,148,0.4341],"cabrielle":[0,21,0.0],"chalsie":[0,9,0.0],"citlalli":[0,2380,0.6753],"dejia":[0,228,0.4716],"erielle":[0,640,0.5612],"geneviev":[0,9,0.0],"jannika":[0,14,0.0],"jealisa":[0,9,0.0],"kalsey":[0,85,0.0],"keyairra":[0,138,0.428],"khloe":[20,48758,0.9373],"kiata":[0,9,0.0],"kylei":[0,1223,0.6175],"lanaye":[0,14,0.0],"oceanna":[0,469,0.5342],"osmara":[0,334,0.5047],"rakiya":[0,428,0.5263],"seslie":[0,19,0.0],"shalecia":[0,26,0.0],"stefanny":[0,244,0.4775],"taila":[0,282,0.49],"ahlia":[0,202,0.4611],"alejandria":[0,107,0.4059],"alexaundria":[0,57,0.0],"alexnadra":[0,8,0.0],"andreona":[0,8,0.0],"antoinet":[0,8,0.0],"ashonte":[0,108,0.4067],"audriauna":[0,47,0.0],"audriona":[0,14,0.0],"ayushi":[0,360,0.5113],"camrie":[0,494,0.5387],"cassondr":[0,8,0.0],"ceili":[0,288,0.4919],"constanc":[0,8,0.0],"cylee":[0,406,0.5217],"dejoire":[0,8,0.0],"desarea":[0,82,0.0],"devanee":[0,159,0.4403],"devoney":[0,18,0.0],"haileigh":[0,1828,0.6524],"jaleasa":[0,27,0.0],"jaleisha":[0,41,0.0],"jaquelyne":[0,218,0.4677],"jarissa":[0,190,0.4558],"jasmone":[0,18,0.0],"jaszmine":[0,102,0.4017],"javeria":[0,109,0.4075],"justien":[0,8,0.0],"kashae":[0,147,0.4335],"kassidie":[0,325,0.5024],"keyarra":[0,341,0.5066],"khiara":[0,521,0.5434],"laasia":[0,236,0.4746],"lacree":[0,24,0.0],"latianna":[0,26,0.0],"lisete":[0,8,0.0],"londyn":[519,26431,0.869],"lusero":[0,132,0.4241],"maguadalupe":[0,69,0.0],"marnika":[0,13,0.0],"minami":[0,232,0.4731],"nargis":[0,76,0.0],"quaneesha":[0,45,0.0],"romeshia":[0,13,0.0],"ronnice":[0,8,0.0],"sequila":[0,8,0.0],"shaqua":[0,28,0.0],"sharale":[0,8,0.0],"shatiera":[0,26,0.0],"shawnisha":[0,21,0.0],"shayana":[0,262,0.4837],"talysa":[0,20,0.0],"torianna":[0,491,0.5382],"vereniz":[0,13,0.0],"yui":[0,554,0.5487],"yulianna":[0,1372,0.6275],"akeelah":[0,1517,0.6362],"amiracle":[0,1834,0.6527],"anaelisa":[0,12,0.0],"anairis":[0,138,0.428],"analysa":[0,318,0.5005],"aneliese":[0,140,0.4292],"anjanae":[0,125,0.4194],"ansleigh":[0,1524,0.6366],"arelle":[0,20,0.0],"ariceli":[0,39,0.0],"asjah":[0,200,0.4602],"aszia":[0,17,0.0],"audreauna":[0,7,0.0],"audryanna":[0,131,0.4235],"avante":[796,38,0.5576],"avianna":[0,9180,0.7926],"blayke":[743,1730,0.4747],"breannah":[0,555,0.5489],"brttany":[0,12,0.0],"caneisha":[0,47,0.0],"cassendra":[0,7,0.0],"catilyn":[0,94,0.0],"caylah":[0,405,0.5215],"caytlyn":[0,157,0.4392],"centeria":[0,15,0.0],"chanavia":[0,7,0.0],"chazmin":[0,57,0.0],"courtany":[0,82,0.0],"dajah":[7,2013,0.6588],"dalissa":[0,134,0.4254],"daquisha":[0,65,0.0],"darianna":[0,1252,0.6195],"daviana":[0,822,0.583],"dequandra":[0,7,0.0],"devani":[0,469,0.5342],"dezare":[0,42,0.0],"dilara":[0,488,0.5377],"dominisha":[0,58,0.0],"fatia":[0,7,0.0],"fendi":[29,196,0.4098],"garielle":[0,80,0.0],"gracen":[1255,2212,0.4517],"hasmik":[0,64,0.0],"idaly":[0,984,0.5986],"jakera":[0,286,0.4913],"jamilette":[0,307,0.4974],"jasline":[0,428,0.5263],"jasmien":[0,27,0.0],"jazlin":[0,1183,0.6146],"jelana":[0,12,0.0],"jerryca":[0,7,0.0],"jilissa":[0,7,0.0],"johnesia":[0,29,0.0],"jylisa":[0,7,0.0],"kadey":[0,131,0.4235],"kaisy":[0,118,0.4144],"kanosha":[0,36,0.0],"kariss":[0,87,0.0],"karysa":[0,130,0.4228],"katriana":[0,208,0.4636],"katriena":[0,12,0.0],"kaydie":[0,138,0.428],"kaylana":[0,648,0.5623],"keaghlan":[0,7,0.0],"kerrian":[0,23,0.0],"kerstie":[0,69,0.0],"kiari":[233,927,0.4898],"kleigh":[0,305,0.4969],"kritzia":[0,14,0.0],"kt":[0,12,0.0],"kynesha":[0,67,0.0],"kyrstyn":[0,194,0.4576],"laporshe":[0,21,0.0],"laquavia":[0,13,0.0],"lashandria":[0,12,0.0],"lizvette":[0,70,0.0],"llesica":[0,14,0.0],"marrah":[0,90,0.0],"meleny":[0,524,0.5439],"mercedies":[0,102,0.4017],"mersadies":[0,429,0.5265],"miari":[0,61,0.0],"morgane":[0,208,0.4636],"morgyn":[0,910,0.5918],"nabiha":[0,637,0.5608],"neasha":[0,42,0.0],"nykeemah":[0,12,0.0],"olutosin":[0,7,0.0],"priscill":[0,7,0.0],"quintera":[0,40,0.0],"reatta":[0,13,0.0],"rici":[0,7,0.0],"riddhi":[0,641,0.5614],"roizy":[0,392,0.5187],"seantae":[0,13,0.0],"sehar":[0,204,0.4619],"shaasia":[0,116,0.4129],"shakendria":[0,13,0.0],"shayra":[0,182,0.452],"shelissa":[0,7,0.0],"teaire":[0,15,0.0],"terrencia":[0,25,0.0],"thalya":[0,143,0.4311],"thuytien":[0,39,0.0],"yasmene":[0,75,0.0],"zayna":[0,1956,0.6583],"abaigeal":[0,330,0.5037],"abigaile":[0,614,0.5576],"abree":[0,641,0.5614],"adreina":[0,11,0.0],"adreona":[0,106,0.4051],"adryana":[0,555,0.5489],"adylene":[0,367,0.5129],"aeriell":[0,31,0.0],"alara":[0,1742,0.6482],"alessandria":[0,209,0.464],"alexandrya":[0,374,0.5146],"alisea":[0,87,0.0],"alitzah":[0,31,0.0],"allexis":[0,402,0.5208],"allysson":[0,363,0.512],"alycea":[0,242,0.4768],"ambere":[0,13,0.0],"anahy":[0,1378,0.6278],"analeshia":[0,6,0.0],"annamari":[0,6,0.0],"annasophia":[0,551,0.5482],"antanika":[0,6,0.0],"antanisha":[0,102,0.4017],"ardriana":[0,6,0.0],"areana":[0,434,0.5275],"areille":[0,12,0.0],"ashayla":[0,365,0.5125],"ashleh":[0,11,0.0],"ashleyrose":[0,32,0.0],"ashlii":[0,6,0.0],"audrianne":[0,27,0.0],"bereniz":[0,56,0.0],"brianah":[0,413,0.5232],"briani":[0,210,0.4644],"brinae":[0,134,0.4254],"britan":[26,11,0.0],"brithney":[0,135,0.4261],"brittanylee":[0,11,0.0],"brooklyne":[0,733,0.573],"camaryn":[0,147,0.4335],"cayleen":[0,88,0.0],"cearia":[0,41,0.0],"cedrika":[0,28,0.0],"ceilidh":[0,107,0.4059],"celleste":[0,11,0.0],"cescily":[0,6,0.0],"cesilee":[0,11,0.0],"chantle":[0,11,0.0],"chardonae":[0,26,0.0],"charlesha":[0,41,0.0],"chihiro":[0,116,0.4129],"classy":[0,6,0.0],"cortlyn":[15,376,0.4985],"dalesha":[0,63,0.0],"darlicia":[0,6,0.0],"dasheena":[0,11,0.0],"daynisha":[0,17,0.0],"dequanna":[0,12,0.0],"desting":[0,16,0.0],"estephania":[0,481,0.5364],"fathima":[0,240,0.476],"fatme":[0,36,0.0],"fenisha":[0,12,0.0],"gabbrielle":[0,213,0.4657],"gagan":[62,6,0.0],"gesell":[0,6,0.0],"halea":[0,236,0.4746],"harli":[0,1273,0.621],"heleena":[0,83,0.0],"jacquisha":[0,22,0.0],"jalissia":[0,60,0.0],"jamaria":[42,1312,0.6069],"jannike":[0,6,0.0],"jayra":[0,91,0.0],"jazzalyn":[0,248,0.4789],"jelesia":[0,23,0.0],"jenevie":[0,179,0.4506],"jerricha":[0,6,0.0],"jerrisa":[0,6,0.0],"jessalin":[0,28,0.0],"jissel":[0,473,0.535],"joeana":[0,6,0.0],"joelisa":[0,36,0.0],"joise":[0,6,0.0],"joniqua":[0,89,0.0],"kaitlyne":[0,318,0.5005],"kambri":[0,1075,0.6063],"kamrie":[0,604,0.5562],"karneshia":[0,17,0.0],"kaylinn":[0,601,0.5558],"kaymie":[0,6,0.0],"keiundra":[0,6,0.0],"kelissa":[0,92,0.0],"kelseyann":[0,30,0.0],"kerea":[0,6,0.0],"kevona":[0,113,0.4106],"kheri":[0,6,0.0],"kierria":[0,73,0.0],"kirara":[0,6,0.0],"kiyara":[0,540,0.5465],"korianne":[0,29,0.0],"krissia":[0,116,0.4129],"kurstie":[0,45,0.0],"kursty":[0,19,0.0],"kwanisha":[0,41,0.0],"labrea":[0,201,0.4606],"ladiamond":[0,178,0.4501],"ladrea":[0,89,0.0],"lakan":[0,40,0.0],"lananh":[0,29,0.0],"laquela":[0,6,0.0],"laurenann":[0,6,0.0],"laurielle":[0,97,0.0],"leeya":[0,524,0.5439],"leilanie":[0,936,0.5943],"lezly":[0,543,0.547],"lindzi":[0,46,0.0],"lynnsay":[0,11,0.0],"lyzeth":[0,19,0.0],"macala":[0,155,0.4381],"mackinsey":[0,195,0.458],"madeleyn":[0,195,0.458],"madisson":[0,1718,0.647],"marely":[0,2841,0.6907],"mariadelosang":[0,153,0.4369],"mariaesther":[0,6,0.0],"marielys":[0,368,0.5132],"marissia":[0,64,0.0],"marneisha":[0,23,0.0],"mayeli":[0,986,0.5988],"maylen":[0,829,0.5837],"mecedes":[0,12,0.0],"mikaella":[0,661,0.564],"minisha":[0,6,0.0],"naasia":[0,153,0.4369],"nelisa":[0,11,0.0],"neoshia":[0,6,0.0],"nikkitta":[0,6,0.0],"nikohl":[0,11,0.0],"nohelia":[0,304,0.4966],"nykeema":[0,6,0.0],"quadasia":[0,84,0.0],"raela":[0,297,0.4946],"rodricka":[0,53,0.0],"saasha":[0,6,0.0],"sadey":[0,360,0.5113],"safire":[0,121,0.4166],"saher":[5,175,0.4385],"saloni":[0,407,0.5219],"samanthaann":[0,13,0.0],"samnatha":[0,53,0.0],"saquoya":[0,24,0.0],"sarahy":[0,936,0.5943],"sarine":[0,46,0.0],"saydee":[0,1581,0.6398],"schae":[0,101,0.4009],"seira":[0,124,0.4187],"senait":[0,39,0.0],"sequoria":[0,17,0.0],"seychelle":[0,29,0.0],"seymone":[0,65,0.0],"shaddai":[107,289,0.3792],"shamyia":[0,350,0.5088],"shandiin":[0,162,0.4419],"shaneah":[0,16,0.0],"shanerica":[0,18,0.0],"shanquella":[0,11,0.0],"shantall":[0,58,0.0],"shantiqua":[0,41,0.0],"shaquinna":[0,6,0.0],"sharitza":[0,6,0.0],"sharnea":[0,12,0.0],"shaunece":[0,11,0.0],"shauntice":[0,26,0.0],"shida":[0,6,0.0],"shyasia":[0,232,0.4731],"steffane":[0,6,0.0],"tagan":[54,63,0.2227],"taijah":[0,385,0.5171],"tajha":[0,75,0.0],"takeira":[0,107,0.4059],"takyla":[0,307,0.4974],"taler":[5,68,0.0],"tanzia":[0,20,0.0],"tashaya":[0,84,0.0],"tawnni":[0,22,0.0],"teaera":[0,12,0.0],"teghan":[59,356,0.4492],"tehya":[0,2051,0.6624],"tequilia":[0,6,0.0],"tessla":[0,216,0.4669],"tilia":[0,122,0.4173],"toshiana":[0,21,0.0],"trachell":[0,6,0.0],"trinesha":[0,26,0.0],"tyreisha":[0,76,0.0],"veonka":[0,6,0.0],"williesha":[0,11,0.0],"yania":[0,109,0.4075],"yenifer":[0,1153,0.6124],"yocelin":[0,1056,0.6047],"yojaira":[0,6,0.0],"yoshani":[0,6,0.0],"zelena":[0,384,0.5169],"aamira":[0,478,0.5359],"acasia":[0,126,0.4201],"adreonna":[0,176,0.4491],"adriaunna":[0,53,0.0],"adrieana":[0,121,0.4166],"agigail":[0,21,0.0],"airielle":[0,44,0.0],"akhila":[0,239,0.4757],"alair":[0,10,0.0],"alandrea":[0,47,0.0],"alaxandra":[0,21,0.0],"albana":[0,76,0.0],"aleesia":[0,520,0.5432],"aleria":[0,228,0.4716],"alexaray":[0,5,0.0],"alexendria":[0,15,0.0],"alexix":[5,36,0.0],"alexsys":[0,165,0.4435],"alexxa":[0,778,0.5782],"alish":[0,5,0.0],"alyssaann":[0,23,0.0],"amandaleigh":[0,5,0.0],"amarah":[0,2444,0.6776],"ambernicole":[0,23,0.0],"ambrosha":[0,10,0.0],"ameria":[0,748,0.5748],"anacaren":[0,126,0.4201],"anaid":[0,509,0.5413],"anaisa":[0,435,0.5277],"anaisabel":[0,125,0.4194],"anayancy":[0,27,0.0],"andrienna":[0,5,0.0],"anelisa":[0,52,0.0],"angeliqu":[0,5,0.0],"annakaren":[0,45,0.0],"annalaura":[0,81,0.0],"annaleise":[0,432,0.5271],"annali":[0,527,0.5444],"anneelise":[0,10,0.0],"anqunette":[0,23,0.0],"antinisha":[0,5,0.0],"antwoinette":[0,11,0.0],"anysha":[0,97,0.0],"aquilah":[0,32,0.0],"ardiana":[0,12,0.0],"areanna":[0,645,0.5619],"ariale":[0,5,0.0],"arionna":[0,2453,0.6779],"arkia":[0,16,0.0],"arkita":[0,5,0.0],"aryssa":[0,652,0.5628],"ashantae":[0,104,0.4034],"ashaunte":[0,91,0.0],"ashleymae":[0,28,0.0],"ashna":[0,645,0.5619],"ashney":[0,5,0.0],"ashya":[0,443,0.5293],"asian":[11,16,0.0],"aubreyanna":[0,377,0.5153],"audranna":[0,5,0.0],"audreona":[0,5,0.0],"audrienna":[0,19,0.0],"aula":[0,5,0.0],"aungelique":[0,24,0.0],"auriana":[0,706,0.5698],"ausia":[0,5,0.0],"averyl":[0,21,0.0],"avry":[504,562,0.3192],"ayrika":[0,47,0.0],"azmina":[0,67,0.0],"azsa":[0,5,0.0],"azurae":[0,10,0.0],"babie":[0,15,0.0],"bailea":[0,227,0.4712],"beaney":[0,5,0.0],"belky":[0,171,0.4466],"beunca":[0,17,0.0],"beyanka":[0,10,0.0],"binca":[0,5,0.0],"bisan":[0,43,0.0],"blakeney":[0,30,0.0],"braelynn":[202,9497,0.7807],"braina":[0,10,0.0],"brayanna":[0,59,0.0],"breeona":[0,145,0.4323],"brehanna":[0,176,0.4491],"breindel":[0,210,0.4644],"brelynn":[5,1022,0.5994],"breonia":[0,143,0.4311],"breyan":[20,10,0.0],"briannan":[0,10,0.0],"brieonna":[0,160,0.4408],"brier":[584,330,0.3784],"britanna":[0,5,0.0],"britnae":[0,5,0.0],"brittish":[0,69,0.0],"brittnii":[0,5,0.0],"brytanni":[0,10,0.0],"bryttnee":[0,10,0.0],"btittany":[0,5,0.0],"caily":[0,183,0.4525],"caneshia":[0,41,0.0],"carlecia":[0,27,0.0],"carlyann":[0,62,0.0],"caryssa":[0,198,0.4593],"cassandera":[0,10,0.0],"catlynn":[0,143,0.4311],"caylea":[0,148,0.4341],"challise":[0,5,0.0],"champaigne":[0,44,0.0],"chanet":[0,5,0.0],"chanity":[0,11,0.0],"chaquanna":[0,5,0.0],"charea":[0,11,0.0],"charnece":[0,5,0.0],"chassitty":[0,5,0.0],"chatavia":[0,10,0.0],"chavaughn":[0,10,0.0],"chealsie":[0,44,0.0],"chelseaann":[0,29,0.0],"chiaki":[0,22,0.0],"chrishell":[0,79,0.0],"christineanne":[0,5,0.0],"chyan":[0,128,0.4214],"ciarah":[0,260,0.483],"cierre":[0,26,0.0],"colicia":[0,5,0.0],"crstal":[0,5,0.0],"daidra":[0,5,0.0],"dajanee":[0,69,0.0],"dajia":[0,439,0.5285],"dalesa":[0,5,0.0],"dameisha":[0,88,0.0],"damielle":[0,5,0.0],"damilola":[48,194,0.3822],"danilee":[0,33,0.0],"dannea":[0,5,0.0],"darnae":[0,48,0.0],"dashanta":[0,15,0.0],"dassy":[0,10,0.0],"dearra":[0,458,0.5322],"deaundria":[0,45,0.0],"decara":[0,5,0.0],"dekia":[0,10,0.0],"deseria":[0,5,0.0],"deviny":[0,13,0.0],"dezire":[19,931,0.5836],"dezrae":[0,45,0.0],"disney":[5,157,0.4283],"doniqua":[0,78,0.0],"doresha":[0,10,0.0],"dornisha":[0,10,0.0],"dreanna":[0,321,0.5013],"dymon":[22,369,0.4893],"edid":[0,24,0.0],"ellee":[0,1401,0.6293],"ellory":[0,820,0.5828],"elsey":[0,126,0.4201],"emilija":[0,289,0.4922],"enya":[0,1238,0.6185],"eriana":[0,1266,0.6205],"ericamarie":[0,5,0.0],"eryne":[0,16,0.0],"esly":[19,398,0.5002],"esthefany":[0,198,0.4593],"ezmeralda":[0,489,0.5379],"falencia":[0,11,0.0],"fantashia":[0,120,0.4158],"feda":[0,5,0.0],"gavrielle":[0,169,0.4456],"genesys":[0,452,0.531],"giavonni":[115,263,0.3587],"giorgina":[0,68,0.0],"gislaine":[0,12,0.0],"glendalee":[0,5,0.0],"hadiyyah":[0,40,0.0],"haja":[0,208,0.4636],"hanin":[0,111,0.4091],"harleigh":[5,5131,0.7414],"heatherlynn":[0,5,0.0],"illyana":[0,677,0.5661],"illyssa":[0,20,0.0],"imunique":[0,284,0.4907],"irini":[0,69,0.0],"iriz":[0,11,0.0],"ishani":[0,1182,0.6145],"ishita":[0,595,0.5549],"ivannia":[0,121,0.4166],"jacinth":[16,12,0.0],"jacquell":[16,15,0.0],"jacquilla":[0,10,0.0],"jacynda":[0,149,0.4346],"jaia":[0,828,0.5836],"jaisha":[0,236,0.4746],"jakeitha":[0,5,0.0],"jakelin":[0,639,0.5611],"jakelle":[0,5,0.0],"jaketa":[0,5,0.0],"jalesse":[0,5,0.0],"jalishia":[0,20,0.0],"jalpa":[0,5,0.0],"jamanda":[0,46,0.0],"jamielle":[0,5,0.0],"janekia":[0,5,0.0],"janeli":[0,534,0.5455],"janishia":[0,16,0.0],"jaquese":[79,31,0.2932],"jasia":[6,565,0.5455],"jasilyn":[0,97,0.0],"jaszmin":[0,44,0.0],"javelyn":[0,5,0.0],"javoni":[324,26,0.471],"jaydeen":[179,77,0.3368],"jazmynn":[0,621,0.5586],"jazzi":[0,27,0.0],"jazzie":[0,133,0.4248],"jeesica":[0,5,0.0],"jenniferrose":[0,10,0.0],"jermani":[155,815,0.5019],"jermisha":[0,96,0.0],"jhanel":[0,10,0.0],"jhenna":[0,43,0.0],"johnnisha":[0,63,0.0],"joniesha":[0,17,0.0],"josephin":[0,5,0.0],"jossica":[0,5,0.0],"jourdyn":[136,804,0.5086],"jovoni":[101,5,0.386],"julessa":[0,10,0.0],"julieana":[0,410,0.5226],"julisia":[0,41,0.0],"julyssa":[0,945,0.5951],"juquana":[0,5,0.0],"kalianne":[0,97,0.0],"kallin":[176,24,0.405],"kamarin":[0,21,0.0],"kameran":[492,186,0.4109],"kanecia":[0,50,0.0],"karsen":[3390,1723,0.4918],"kashala":[0,27,0.0],"kassandrea":[0,5,0.0],"kassee":[0,18,0.0],"kassidee":[0,657,0.5635],"katerria":[0,54,0.0],"katianna":[0,201,0.4606],"katielee":[0,11,0.0],"katilynn":[0,390,0.5182],"katlan":[0,27,0.0],"kayesha":[0,10,0.0],"kaylanne":[0,5,0.0],"kazandra":[0,290,0.4925],"keamber":[0,130,0.4228],"keambra":[0,10,0.0],"keandria":[0,147,0.4335],"kearea":[0,5,0.0],"kearstyn":[0,253,0.4806],"keeara":[0,64,0.0],"keighley":[0,203,0.4615],"keilee":[0,516,0.5425],"keishanna":[0,20,0.0],"keiyana":[0,150,0.4352],"keiyonna":[0,29,0.0],"kenessa":[0,5,0.0],"kennedi":[15,15135,0.8353],"keontay":[363,5,0.5062],"keris":[0,51,0.0],"kerrissa":[0,15,0.0],"kerstein":[0,10,0.0],"keuna":[0,53,0.0],"keyunta":[10,5,0.0],"khrysta":[0,28,0.0],"khrysten":[0,29,0.0],"kipenie":[0,5,0.0],"kirstee":[0,32,0.0],"kirstein":[0,68,0.0],"kirstien":[0,26,0.0],"kishawna":[0,38,0.0],"koesha":[0,5,0.0],"koti":[0,5,0.0],"krishina":[0,5,0.0],"kristah":[0,16,0.0],"kristyan":[15,5,0.0],"kryslyn":[0,79,0.0],"krystalina":[0,10,0.0],"krystaline":[0,5,0.0],"krystalmae":[0,5,0.0],"kyliegh":[0,487,0.5375],"ladaysha":[0,161,0.4414],"laicee":[0,33,0.0],"lairen":[0,5,0.0],"lajasmine":[0,27,0.0],"lakeira":[0,40,0.0],"laricia":[0,10,0.0],"laricka":[0,5,0.0],"larken":[23,90,0.327],"lasara":[0,5,0.0],"lashyra":[0,37,0.0],"lataija":[0,44,0.0],"latajia":[0,15,0.0],"latalya":[0,13,0.0],"latrevia":[0,11,0.0],"laurynn":[0,662,0.5642],"lawrencia":[0,147,0.4335],"laynee":[0,1841,0.653],"leilana":[0,598,0.5553],"leilany":[0,4558,0.7318],"letrecia":[0,5,0.0],"letycia":[0,11,0.0],"liandra":[0,195,0.458],"lorely":[0,197,0.4589],"lorryn":[0,62,0.0],"lyandra":[0,31,0.0],"lylybell":[0,10,0.0],"lyneshia":[0,10,0.0],"lynnessa":[0,5,0.0],"lynnzee":[0,45,0.0],"madelane":[0,5,0.0],"madelline":[0,154,0.4375],"maigon":[0,5,0.0],"manali":[0,75,0.0],"manasa":[0,283,0.4904],"manita":[0,5,0.0],"marcisha":[0,11,0.0],"markiya":[0,200,0.4602],"marlenny":[0,5,0.0],"marquiesha":[0,30,0.0],"marquishia":[0,13,0.0],"marshawna":[0,31,0.0],"marshayla":[0,199,0.4598],"martyna":[0,286,0.4913],"maryna":[0,129,0.4221],"mashayla":[0,443,0.5293],"meganelizabeth":[0,12,0.0],"mercedees":[0,61,0.0],"mersadie":[0,245,0.4778],"mianca":[0,10,0.0],"myesia":[0,5,0.0],"mykale":[136,28,0.3673],"mykeia":[0,57,0.0],"naadia":[0,10,0.0],"nahomie":[0,25,0.0],"nakeria":[0,52,0.0],"nandy":[0,27,0.0],"narges":[0,21,0.0],"nashayla":[0,129,0.4221],"natalis":[0,5,0.0],"natelle":[0,5,0.0],"nateria":[0,12,0.0],"nilufer":[0,17,0.0],"nishelle":[0,33,0.0],"paj":[0,11,0.0],"porshae":[0,30,0.0],"quadreka":[0,5,0.0],"quanice":[0,5,0.0],"quanicia":[0,5,0.0],"quashanda":[0,5,0.0],"quineisha":[0,40,0.0],"rabekah":[0,50,0.0],"raelina":[0,16,0.0],"rahkia":[0,5,0.0],"raiana":[0,99,0.0],"ramsie":[0,128,0.4214],"ranjana":[0,5,0.0],"rathany":[0,5,0.0],"rayel":[6,74,0.0],"reagon":[0,25,0.0],"reniece":[0,5,0.0],"rhode":[14,5,0.0],"rikeisha":[0,5,0.0],"rikkie":[0,20,0.0],"rodrica":[0,13,0.0],"ronicia":[0,27,0.0],"roxette":[0,47,0.0],"roxxane":[0,5,0.0],"rucha":[0,96,0.0],"ruhi":[0,1244,0.619],"ryana":[0,361,0.5115],"ryeisha":[0,26,0.0],"sabha":[0,5,0.0],"sacora":[0,62,0.0],"sadara":[0,10,0.0],"sadiyah":[0,332,0.5042],"samanthalynn":[0,5,0.0],"samoan":[0,11,0.0],"samyia":[0,395,0.5193],"saniqua":[0,5,0.0],"sedricka":[0,16,0.0],"seher":[0,259,0.4827],"senja":[0,16,0.0],"sesalie":[0,5,0.0],"shacari":[0,10,0.0],"shadasia":[0,129,0.4221],"shailey":[0,408,0.5221],"shakota":[0,45,0.0],"shamichael":[10,5,0.0],"shamillia":[0,5,0.0],"shanquilla":[0,23,0.0],"shapree":[0,10,0.0],"shaquail":[0,25,0.0],"shaquay":[0,55,0.0],"shaquinn":[0,5,0.0],"sharnele":[0,5,0.0],"sharre":[0,5,0.0],"shaterrika":[0,10,0.0],"shatorya":[0,5,0.0],"shaunie":[0,92,0.0],"shaylonda":[0,5,0.0],"shealeigh":[0,141,0.4298],"sheiva":[0,5,0.0],"shekeia":[0,5,0.0],"shequira":[0,5,0.0],"shetarra":[0,5,0.0],"shonae":[0,10,0.0],"siarah":[0,288,0.4919],"solmarie":[0,26,0.0],"sonata":[0,53,0.0],"soniqua":[0,5,0.0],"sorcha":[0,258,0.4823],"sorsha":[0,63,0.0],"staciann":[0,5,0.0],"stanesha":[0,10,0.0],"steffy":[0,12,0.0],"sua":[0,187,0.4544],"sueling":[0,17,0.0],"suleyma":[0,369,0.5134],"sunna":[0,42,0.0],"suria":[0,61,0.0],"swayze":[223,855,0.4811],"tajai":[170,147,0.2683],"takiera":[0,123,0.418],"tashalee":[0,5,0.0],"tashawnna":[0,15,0.0],"tashel":[0,5,0.0],"tavonne":[16,5,0.0],"tavy":[0,5,0.0],"taylir":[0,59,0.0],"teionna":[0,54,0.0],"teliah":[0,84,0.0],"temetria":[0,5,0.0],"teneesha":[0,5,0.0],"ticarra":[0,5,0.0],"tieanna":[0,11,0.0],"tijera":[0,35,0.0],"tishauna":[0,29,0.0],"tommisha":[0,5,0.0],"tonae":[0,101,0.4009],"toneesha":[0,5,0.0],"toyana":[0,5,0.0],"traneshia":[0,13,0.0],"trinea":[0,5,0.0],"tuongvy":[0,10,0.0],"tuyetnhi":[0,10,0.0],"tyme":[44,73,0.2581],"ugochi":[0,107,0.4059],"vasha":[0,5,0.0],"victoriaann":[0,44,0.0],"vijaya":[0,5,0.0],"vikky":[0,5,0.0],"warda":[0,203,0.4615],"whittnie":[0,5,0.0],"yalisa":[0,20,0.0],"yanelli":[0,526,0.5442],"yasameen":[0,22,0.0],"zahraa":[0,1053,0.6045],"zaily":[0,98,0.0],"zamantha":[0,312,0.4988],"christop":[1082,0,0.6068],"khiry":[1156,7,0.6094],"tajh":[741,0,0.574],"kristoph":[63,0,0.0],"savion":[4890,17,0.7356],"tahj":[3827,131,0.6957],"quamaine":[359,0,0.511],"kwamane":[130,0,0.4228],"kwamaine":[149,0,0.4346],"rumeal":[73,0,0.0],"shaquille":[5726,387,0.7093],"diontay":[152,0,0.4364],"kadarius":[1082,0,0.6068],"axle":[1717,0,0.647],"johnatho":[12,0,0.0],"patryk":[1030,0,0.6026],"quamane":[45,0,0.0],"rakeen":[84,0,0.0],"cardarius":[138,0,0.428],"ethon":[272,0,0.4869],"kadeen":[93,0,0.0],"kwmane":[26,0,0.0],"nakeem":[191,0,0.4562],"sebastia":[11,0,0.0],"aksel":[2402,0,0.6761],"arkeen":[15,0,0.0],"coltyn":[1583,0,0.6399],"devarious":[70,0,0.0],"kemar":[594,0,0.5548],"kohei":[147,0,0.4335],"aleczander":[1260,0,0.6201],"bayardo":[27,0,0.0],"charvez":[102,0,0.4017],"cortlan":[110,0,0.4083],"darias":[60,0,0.0],"demetriu":[9,0,0.0],"devondre":[280,0,0.4894],"donterrius":[114,0,0.4114],"eduardoluis":[9,0,0.0],"haakim":[9,0,0.0],"khoury":[129,0,0.4221],"kristofe":[9,0,0.0],"romario":[1103,0,0.6085],"tomoki":[164,0,0.443],"yeeleng":[40,0,0.0],"zakariya":[2321,47,0.6615],"zakk":[525,0,0.544],"zakkery":[312,0,0.4988],"akheem":[44,0,0.0],"alax":[18,0,0.0],"alejandr":[8,0,0.0],"aresenio":[8,0,0.0],"bradyn":[4736,224,0.7057],"brehon":[19,0,0.0],"cael":[3652,13,0.7103],"cordarrius":[114,0,0.4114],"daguan":[15,0,0.0],"deangilo":[14,0,0.0],"dequinn":[20,0,0.0],"drashawn":[13,0,0.0],"francisc":[8,0,0.0],"harpal":[13,0,0.0],"jabarie":[236,0,0.4746],"jasean":[964,0,0.5968],"jeray":[67,0,0.0],"kalup":[74,0,0.0],"kolbe":[1743,58,0.6301],"maalik":[543,0,0.547],"matin":[314,0,0.4994],"mohmad":[23,0,0.0],"muneeb":[290,0,0.4925],"prinston":[96,0,0.0],"randyn":[56,0,0.0],"ryota":[185,0,0.4534],"salesi":[67,0,0.0],"shohei":[65,0,0.0],"stephaun":[132,0,0.4241],"tavion":[3047,13,0.6942],"todderick":[14,0,0.0],"tramar":[66,0,0.0],"yuuki":[186,16,0.4245],"zarek":[1027,0,0.6023],"alhassan":[258,0,0.4823],"bishoy":[106,0,0.4051],"brandale":[7,0,0.0],"broddrick":[7,0,0.0],"cayleb":[1026,0,0.6022],"caz":[155,0,0.4381],"chazman":[7,0,0.0],"chazmon":[13,0,0.0],"codylee":[72,0,0.0],"cor":[7,0,0.0],"daijon":[747,5,0.5714],"daquane":[161,0,0.4414],"dasmine":[36,51,0.0],"davante":[1401,0,0.6293],"deandrey":[7,0,0.0],"deontez":[109,0,0.4075],"deronta":[25,0,0.0],"dusean":[12,0,0.0],"ehtan":[142,0,0.4305],"eithan":[5112,0,0.7417],"estephen":[30,0,0.0],"eythan":[877,0,0.5886],"fracisco":[7,0,0.0],"gaige":[4408,127,0.7108],"jacop":[13,0,0.0],"jamesen":[192,5,0.4472],"javontae":[1614,0,0.6416],"jaymin":[594,0,0.5548],"jaymond":[109,0,0.4075],"jaymz":[352,0,0.5093],"jeovanni":[526,0,0.5442],"jermere":[23,0,0.0],"jobany":[265,0,0.4846],"joshuan":[270,0,0.4863],"kaniela":[28,0,0.0],"kealan":[338,0,0.5058],"keondre":[1543,0,0.6377],"kerrington":[178,816,0.4921],"kevion":[1085,5,0.6047],"khyree":[1865,34,0.644],"kwamain":[19,0,0.0],"kwamel":[22,0,0.0],"leangelo":[67,0,0.0],"markiese":[40,0,0.0],"montravious":[115,0,0.4121],"prateek":[228,0,0.4716],"roody":[22,0,0.0],"ryanchristopher":[45,0,0.0],"ryian":[56,92,0.2698],"saheed":[202,0,0.4611],"shawnmichael":[156,0,0.4386],"sirdarius":[7,0,0.0],"tyleek":[249,0,0.4792],"xavior":[1341,0,0.6255],"yama":[73,0,0.0],"yuuta":[7,0,0.0],"zekiel":[683,0,0.5669],"ackeem":[32,0,0.0],"amilio":[333,0,0.5045],"andry":[352,11,0.4965],"anshul":[375,0,0.5148],"antonion":[6,0,0.0],"antwaune":[6,0,0.0],"arsenial":[6,0,0.0],"ashkon":[58,0,0.0],"ashneel":[11,0,0.0],"audric":[514,0,0.5422],"becker":[502,0,0.5401],"bharath":[92,0,0.0],"bijon":[80,20,0.32],"bradin":[412,0,0.523],"camerron":[51,0,0.0],"careron":[6,0,0.0],"chalen":[31,0,0.0],"chisom":[214,518,0.4054],"cordon":[61,0,0.0],"courtez":[102,0,0.4017],"cristiano":[3745,0,0.7147],"daeshaun":[369,0,0.5134],"damarko":[106,0,0.4051],"dantavis":[11,0,0.0],"daryus":[336,0,0.5053],"dashiel":[430,0,0.5267],"datwan":[59,0,0.0],"davarious":[112,0,0.4098],"davionne":[169,68,0.3387],"deaundray":[16,0,0.0],"deniko":[19,0,0.0],"derly":[35,0,0.0],"desmin":[177,5,0.4396],"desmine":[38,0,0.0],"deyan":[53,0,0.0],"dijohn":[25,0,0.0],"dillian":[610,0,0.5571],"dimetri":[121,0,0.4166],"djaun":[6,0,0.0],"dquan":[224,0,0.47],"dre":[839,5,0.5818],"drevon":[751,0,0.5751],"eliab":[891,0,0.59],"eliecer":[28,0,0.0],"eoghan":[488,0,0.5377],"erix":[17,0,0.0],"farbod":[12,0,0.0],"georgemichael":[17,0,0.0],"gerick":[11,0,0.0],"gilchrist":[18,0,0.0],"gilmar":[133,0,0.4248],"guerrero":[12,0,0.0],"haniel":[446,10,0.5201],"harkeem":[6,0,0.0],"isiaha":[352,0,0.5093],"jacarri":[488,0,0.5377],"jahmere":[688,0,0.5675],"jakar":[54,0,0.0],"jamareo":[6,0,0.0],"jaquil":[189,0,0.4553],"jaz":[236,111,0.3455],"jerith":[16,0,0.0],"jerrome":[6,0,0.0],"jesee":[39,5,0.0],"jesusalberto":[30,0,0.0],"jesusmanuel":[70,0,0.0],"kashon":[257,0,0.482],"kayden":[70872,8052,0.8795],"kentavis":[32,0,0.0],"keshun":[637,7,0.5557],"khiree":[186,0,0.4539],"kieffer":[166,0,0.444],"kielan":[110,0,0.4083],"kiere":[46,0,0.0],"ladaniel":[32,0,0.0],"laderrius":[52,0,0.0],"lagregory":[21,0,0.0],"macgyver":[68,0,0.0],"malique":[1941,11,0.6544],"maninder":[17,0,0.0],"marcelius":[31,0,0.0],"markchristopher":[6,0,0.0],"marq":[93,0,0.0],"marquale":[24,0,0.0],"montarius":[127,0,0.4208],"narong":[6,0,0.0],"nieko":[316,0,0.4999],"nil":[122,145,0.2636],"onterio":[38,0,0.0],"pau":[417,18,0.5059],"pejmon":[6,0,0.0],"qualin":[58,0,0.0],"quarmaine":[6,0,0.0],"rahsheed":[12,0,0.0],"rhyne":[51,0,0.0],"robertmichael":[17,0,0.0],"robson":[124,0,0.4187],"rondarius":[205,0,0.4624],"rontavius":[51,0,0.0],"rury":[47,0,0.0],"ryin":[67,84,0.2424],"santario":[20,0,0.0],"sen":[43,0,0.0],"senator":[16,0,0.0],"shahbaz":[58,0,0.0],"soroosh":[6,0,0.0],"stephin":[6,0,0.0],"taiki":[212,0,0.4653],"taniela":[140,0,0.4292],"terray":[11,0,0.0],"thoedore":[28,0,0.0],"toryn":[454,390,0.3148],"trendon":[269,0,0.486],"tryston":[1328,10,0.6206],"tyerell":[38,0,0.0],"zarchary":[6,0,0.0],"zephan":[531,0,0.545],"aakeem":[16,0,0.0],"aaronmichael":[75,0,0.0],"adelfo":[69,0,0.0],"adetola":[10,0,0.0],"adit":[286,0,0.4913],"adonay":[534,0,0.5455],"adonus":[70,0,0.0],"ahamed":[63,0,0.0],"ahmar":[239,0,0.4757],"airik":[64,0,0.0],"alasdair":[497,0,0.5393],"alaxander":[20,0,0.0],"aldair":[1428,0,0.6309],"alessand":[5,0,0.0],"alexavier":[2228,0,0.6696],"allexander":[12,0,0.0],"andrade":[5,0,0.0],"anhtuan":[5,0,0.0],"antajuan":[5,0,0.0],"antonieo":[10,0,0.0],"araz":[20,0,0.0],"arnolfo":[5,0,0.0],"arseno":[5,0,0.0],"asiel":[811,6,0.5782],"aureo":[5,0,0.0],"basir":[177,0,0.4496],"betim":[5,0,0.0],"bradan":[441,0,0.5289],"braidon":[459,0,0.5324],"brandtly":[33,0,0.0],"brennden":[73,0,0.0],"brenndon":[26,0,0.0],"brodderick":[10,0,0.0],"brucelee":[5,0,0.0],"caanan":[24,0,0.0],"cai":[1381,481,0.4851],"caolan":[36,0,0.0],"cheenue":[5,0,0.0],"christopherpaul":[5,0,0.0],"colorado":[64,0,0.0],"corvell":[47,0,0.0],"cruze":[824,0,0.5832],"curron":[5,0,0.0],"daiguan":[5,0,0.0],"dajahn":[5,0,0.0],"damal":[5,0,0.0],"damarkus":[310,0,0.4983],"dametris":[10,0,0.0],"danner":[396,5,0.5141],"dantay":[30,0,0.0],"dareus":[52,0,0.0],"darrus":[15,0,0.0],"darryon":[111,0,0.4091],"davario":[11,0,0.0],"davidjohn":[17,0,0.0],"dayveon":[444,0,0.5295],"dearron":[12,0,0.0],"deavion":[370,193,0.3615],"deevon":[10,0,0.0],"delan":[180,0,0.4511],"delquan":[107,0,0.4059],"demontra":[58,0,0.0],"denico":[44,0,0.0],"dequann":[72,0,0.0],"derrien":[183,0,0.4525],"devance":[12,0,0.0],"devaron":[11,0,0.0],"devindra":[23,0,0.0],"dokken":[5,0,0.0],"domian":[5,0,0.0],"donjae":[10,0,0.0],"donnivan":[66,0,0.0],"dontrez":[125,0,0.4194],"doryan":[108,0,0.4067],"duskin":[5,0,0.0],"dvaughn":[93,0,0.0],"eathen":[352,0,0.5093],"eean":[85,0,0.0],"eissa":[148,0,0.4341],"elexander":[25,0,0.0],"eliran":[34,0,0.0],"estephan":[126,0,0.4201],"esteve":[28,0,0.0],"esvin":[418,0,0.5242],"ethyn":[1535,0,0.6372],"fazal":[23,0,0.0],"fernandeo":[5,0,0.0],"galloway":[10,0,0.0],"garek":[117,0,0.4136],"garik":[90,0,0.0],"garrik":[34,0,0.0],"geordon":[44,0,0.0],"giovann":[47,0,0.0],"graysen":[4252,783,0.6253],"hadden":[489,38,0.5051],"hamadi":[69,0,0.0],"henok":[318,0,0.5005],"ikeam":[5,0,0.0],"isarael":[5,0,0.0],"izac":[775,0,0.5779],"jader":[143,0,0.4311],"jahred":[131,0,0.4235],"jahrod":[17,0,0.0],"jaivon":[717,0,0.5711],"jamaile":[5,0,0.0],"jamespatrick":[53,0,0.0],"jantsen":[5,0,0.0],"javarious":[481,0,0.5364],"javarous":[39,0,0.0],"javarris":[15,0,0.0],"javien":[1702,0,0.6462],"javonnie":[128,10,0.397],"jaylan":[4665,824,0.6356],"jaysean":[683,0,0.5669],"jayshon":[493,0,0.5386],"jayvin":[1021,0,0.6018],"jeanmichael":[26,0,0.0],"jedrek":[233,0,0.4735],"jeong":[5,0,0.0],"jerwin":[11,0,0.0],"jeury":[143,0,0.4311],"jhovanny":[289,0,0.4922],"jiovany":[160,0,0.4408],"johncarl":[10,0,0.0],"johntrell":[57,0,0.0],"jomal":[17,0,0.0],"jonathyn":[277,0,0.4885],"jonluke":[139,0,0.4286],"josephpaul":[5,0,0.0],"joshula":[5,0,0.0],"justinpaul":[27,0,0.0],"kadarious":[71,0,0.0],"kahri":[77,55,0.2474],"kaileb":[782,0,0.5786],"kainen":[1275,0,0.6211],"kaison":[6621,11,0.7631],"kalip":[10,0,0.0],"kanavis":[14,0,0.0],"karch":[46,0,0.0],"kazi":[502,143,0.4373],"keair":[69,0,0.0],"keanthony":[193,0,0.4571],"keaten":[358,5,0.5049],"keijuan":[136,0,0.4267],"keiran":[1027,143,0.5386],"kemond":[74,0,0.0],"kemonte":[380,0,0.516],"kenderek":[5,0,0.0],"kersey":[19,52,0.0],"kertis":[11,0,0.0],"ketron":[27,0,0.0],"kevontae":[435,0,0.5277],"keylan":[987,55,0.5717],"khawaja":[10,0,0.0],"kheng":[5,0,0.0],"khory":[59,0,0.0],"khyri":[439,18,0.511],"kiare":[5,26,0.0],"kiry":[20,0,0.0],"knowledge":[2222,113,0.6411],"kobe":[21923,574,0.8482],"koltin":[820,0,0.5828],"korben":[2242,0,0.6701],"kuron":[156,0,0.4386],"lacalvin":[5,0,0.0],"ladarrin":[12,0,0.0],"ladre":[32,0,0.0],"lameek":[33,0,0.0],"lareco":[5,0,0.0],"luisenrique":[314,0,0.4994],"makai":[8667,310,0.7633],"malaki":[4624,5,0.7323],"mariques":[5,0,0.0],"markeece":[48,0,0.0],"markevious":[274,0,0.4876],"markius":[11,0,0.0],"marquece":[39,0,0.0],"marquees":[21,0,0.0],"marqueze":[128,0,0.4214],"marsenio":[5,0,0.0],"matthais":[68,0,0.0],"mattheq":[5,0,0.0],"mauriceo":[16,0,0.0],"maximili":[5,0,0.0],"maxmilian":[134,0,0.4254],"mchael":[5,0,0.0],"michealanthony":[5,0,0.0],"migual":[10,0,0.0],"mohmmad":[116,0,0.4129],"montero":[49,0,0.0],"mory":[124,0,0.4187],"mosiah":[756,0,0.5757],"mouhamad":[173,0,0.4476],"mykeal":[123,13,0.3859],"nayquan":[76,0,0.0],"neeko":[409,0,0.5223],"nesanel":[336,0,0.5053],"nha":[5,0,0.0],"nichalus":[10,0,0.0],"nickloas":[5,0,0.0],"nigil":[91,0,0.0],"nikalas":[98,0,0.0],"nikeem":[5,0,0.0],"nikoli":[657,0,0.5635],"nirmal":[32,0,0.0],"nithin":[368,0,0.5132],"norrell":[5,0,0.0],"octavus":[5,0,0.0],"olsen":[425,5,0.5206],"parmanand":[5,0,0.0],"quamain":[23,0,0.0],"quamir":[629,0,0.5597],"quandarius":[246,0,0.4782],"quavon":[479,0,0.5361],"quintavis":[112,0,0.4098],"quintyn":[427,0,0.5261],"qwenton":[10,0,0.0],"raashid":[10,0,0.0],"rajen":[5,0,0.0],"rammy":[10,0,0.0],"ramoan":[5,0,0.0],"ramsen":[5,0,0.0],"ranferi":[144,0,0.4317],"raytheon":[5,0,0.0],"remick":[25,0,0.0],"robins":[10,0,0.0],"roniel":[163,0,0.4424],"rupen":[5,0,0.0],"rusbel":[64,0,0.0],"saeid":[38,0,0.0],"savian":[374,0,0.5146],"sayeed":[119,0,0.4151],"shakiem":[37,0,0.0],"shanchez":[5,0,0.0],"shazad":[16,0,0.0],"sheel":[25,0,0.0],"shenard":[10,0,0.0],"shiya":[48,206,0.3901],"shyquan":[144,0,0.4317],"sinjin":[376,0,0.515],"sircharles":[118,0,0.4144],"ski":[5,124,0.4058],"skiler":[164,170,0.2569],"skyelar":[161,704,0.4781],"sohan":[903,0,0.5911],"sopath":[5,0,0.0],"staten":[28,0,0.0],"stiven":[258,0,0.4823],"sulayman":[681,0,0.5666],"taevon":[702,0,0.5693],"taiquan":[116,0,0.4129],"tamichael":[16,0,0.0],"tammer":[22,0,0.0],"taten":[578,0,0.5524],"thaison":[75,0,0.0],"tomario":[5,0,0.0],"tomoaki":[10,0,0.0],"tomoya":[74,0,0.0],"tramelle":[16,0,0.0],"travonn":[52,0,0.0],"trevour":[31,0,0.0],"tylin":[949,252,0.4867],"tyqwan":[65,0,0.0],"tyrale":[5,0,0.0],"tyreem":[19,0,0.0],"vinayak":[160,0,0.4408],"westyn":[2741,204,0.6458],"wilian":[230,0,0.4723],"wynston":[672,5,0.5619],"xavius":[248,0,0.4789],"xylon":[231,0,0.4727],"ye":[27,16,0.0],"yeriel":[384,0,0.5169],"yonel":[34,0,0.0],"yuto":[387,0,0.5175],"yuya":[83,0,0.0],"zacharee":[97,5,0.382],"zacheri":[21,0,0.0],"zachiary":[5,0,0.0],"zackaree":[29,0,0.0],"zackarey":[63,0,0.0],"zackeri":[30,0,0.0],"zacory":[66,0,0.0],"zaheer":[318,0,0.5005],"zek":[12,0,0.0],"isamar":[91,2390,0.654],"izamar":[7,625,0.5539],"tkeyah":[0,1022,0.6019],"lexus":[263,6558,0.7372],"shakiyla":[0,398,0.52],"suleima":[0,286,0.4913],"allanah":[0,917,0.5925],"ravensymone":[0,56,0.0],"tantania":[0,47,0.0],"ysamar":[0,42,0.0],"avianca":[0,28,0.0],"isamara":[0,51,0.0],"mersades":[0,248,0.4789],"breyonna":[0,862,0.5871],"jakkia":[8,16,0.0],"shawnic":[0,16,0.0],"staphany":[0,178,0.4501],"avonlea":[0,1364,0.627],"keondria":[0,102,0.4017],"noheli":[0,127,0.4208],"raiven":[0,426,0.5259],"branisha":[0,47,0.0],"issamar":[0,48,0.0],"matraca":[0,85,0.0],"shaniqwa":[0,64,0.0],"akayla":[0,1368,0.6272],"amairani":[0,1559,0.6386],"chenice":[0,37,0.0],"courtlyn":[16,846,0.5762],"delany":[0,1348,0.6259],"gennesis":[0,684,0.567],"latifha":[0,42,0.0],"teshima":[0,12,0.0],"alaysia":[0,5397,0.7464],"angellea":[0,29,0.0],"ismar":[99,11,0.3675],"jaid":[5,168,0.4347],"jordyne":[0,311,0.4986],"latiffa":[0,11,0.0],"moet":[0,136,0.4267],"noeli":[0,532,0.5452],"saya":[0,1246,0.6191],"shanasia":[0,184,0.453],"shantise":[0,26,0.0],"tahiri":[0,174,0.4481],"amairany":[0,1408,0.6297],"aysa":[20,322,0.4772],"breanca":[0,39,0.0],"brionca":[0,34,0.0],"briyanna":[0,747,0.5747],"izela":[0,143,0.4311],"jasminne":[0,123,0.418],"jermesha":[0,109,0.4075],"kiersti":[0,34,0.0],"kyrene":[0,103,0.4026],"mystee":[0,10,0.0],"preslie":[0,1731,0.6477],"reonna":[0,277,0.4885],"shaylie":[0,640,0.5612],"tahja":[15,233,0.4499],"zari":[20,1421,0.623],"alaynah":[0,1064,0.6054],"allannah":[0,223,0.4697],"alyvia":[0,5728,0.7516],"angellia":[0,14,0.0],"arlenne":[0,171,0.4466],"bryona":[0,181,0.4515],"cheniece":[0,9,0.0],"chinasa":[0,36,0.0],"danequa":[0,25,0.0],"dashanique":[0,96,0.0],"destony":[0,80,0.0],"emani":[440,6167,0.7131],"gionna":[0,941,0.5947],"jalessia":[0,14,0.0],"janasia":[0,1188,0.615],"kaisey":[0,184,0.453],"kaneeshia":[0,9,0.0],"kaniqua":[0,20,0.0],"keerica":[0,40,0.0],"kierstie":[0,15,0.0],"lashavia":[0,15,0.0],"latifia":[0,9,0.0],"lilit":[0,359,0.511],"linet":[0,74,0.0],"mariyah":[0,6479,0.7623],"marlet":[0,116,0.4129],"maycee":[0,2735,0.6874],"mikalah":[0,895,0.5904],"mileah":[0,424,0.5255],"preanna":[0,15,0.0],"quameisha":[0,16,0.0],"rayvin":[6,369,0.5066],"ronneisha":[0,74,0.0],"secoya":[0,26,0.0],"shalesa":[0,9,0.0],"shinea":[0,17,0.0],"shinead":[0,19,0.0],"sidnie":[0,312,0.4988],"tessah":[0,267,0.4853],"tierah":[0,54,0.0],"tyshanna":[0,41,0.0],"adelynn":[0,14328,0.8312],"adryanna":[0,716,0.571],"aiyanna":[0,4529,0.7312],"anacecilia":[0,57,0.0],"annalese":[0,364,0.5122],"aqsa":[0,657,0.5635],"bayle":[28,221,0.4253],"calyssa":[0,295,0.494],"celeny":[0,8,0.0],"chelbie":[0,109,0.4075],"chenea":[0,23,0.0],"darrica":[0,32,0.0],"dejane":[0,161,0.4414],"deveny":[0,55,0.0],"ebonnie":[0,28,0.0],"fion":[0,37,0.0],"genesha":[0,26,0.0],"imara":[0,665,0.5646],"israa":[0,650,0.5626],"jaboa":[0,15,0.0],"jacquelen":[0,8,0.0],"jamiya":[0,3337,0.7047],"jayd":[117,343,0.3971],"jerrah":[0,27,0.0],"jessenya":[0,140,0.4292],"jherika":[0,14,0.0],"johniqua":[0,60,0.0],"joneka":[0,18,0.0],"kaitlynd":[0,99,0.0],"karizma":[0,1279,0.6214],"kimora":[0,9667,0.7971],"kitiara":[0,94,0.0],"konesha":[0,8,0.0],"labree":[0,14,0.0],"ladacia":[0,13,0.0],"laikyn":[63,2000,0.6427],"laquitia":[0,18,0.0],"latiera":[0,25,0.0],"malakia":[60,8,0.0],"manouchka":[0,8,0.0],"marqueisha":[0,42,0.0],"mckelle":[0,58,0.0],"nahomi":[0,1812,0.6516],"naquasha":[0,13,0.0],"pahola":[0,193,0.4571],"preslee":[63,3574,0.6998],"quasha":[0,32,0.0],"ruvi":[0,75,0.0],"samanthalee":[0,14,0.0],"shanquia":[0,21,0.0],"shanteal":[0,8,0.0],"shanterrica":[0,45,0.0],"sharneka":[0,13,0.0],"shatasia":[0,71,0.0],"shaunteria":[0,8,0.0],"shayonna":[0,216,0.4669],"shentel":[0,8,0.0],"syerra":[0,410,0.5226],"takeyah":[0,189,0.4553],"talhia":[0,18,0.0],"tantanea":[0,8,0.0],"tyleshia":[0,18,0.0],"vilmarie":[0,15,0.0],"yamili":[0,89,0.0],"yuli":[5,370,0.5079],"zenani":[0,13,0.0],"abigayl":[0,345,0.5076],"ailea":[0,88,0.0],"ajanae":[0,827,0.5835],"alyzza":[0,262,0.4837],"amarachi":[0,739,0.5737],"analie":[0,575,0.5519],"angeleia":[0,7,0.0],"annaly":[0,564,0.5503],"annalyssa":[0,294,0.4937],"anniesha":[0,7,0.0],"asena":[0,72,0.0],"ashlynd":[0,241,0.4764],"aylissa":[0,288,0.4919],"azita":[0,35,0.0],"breeonna":[0,127,0.4208],"breshawn":[44,35,0.0],"breunna":[0,276,0.4882],"brianni":[0,315,0.4997],"briante":[5,89,0.0],"brichelle":[0,21,0.0],"britleigh":[0,18,0.0],"britttany":[0,7,0.0],"briyonna":[0,196,0.4585],"bryanda":[0,94,0.0],"brytanie":[0,7,0.0],"cailie":[0,219,0.4681],"callye":[0,7,0.0],"camee":[0,13,0.0],"canishia":[0,7,0.0],"carneisha":[0,39,0.0],"chantise":[0,7,0.0],"charlesia":[0,97,0.0],"cheynne":[0,249,0.4792],"chloee":[0,1857,0.6538],"daijah":[0,2321,0.6731],"davesha":[0,40,0.0],"dejanay":[0,201,0.4606],"delainey":[0,1933,0.6572],"denishea":[0,7,0.0],"devinee":[0,29,0.0],"erianna":[0,1264,0.6203],"fatmata":[0,303,0.4963],"gizel":[0,277,0.4885],"glennisha":[0,41,0.0],"heavenleigh":[0,497,0.5393],"hiliana":[0,265,0.4846],"iqra":[0,1690,0.6456],"itzamar":[0,133,0.4248],"jacquelle":[0,7,0.0],"jakarra":[0,47,0.0],"jaleena":[0,260,0.483],"jamarra":[0,30,0.0],"janiris":[0,24,0.0],"jasmere":[0,29,0.0],"javonni":[500,84,0.4737],"jaysha":[0,324,0.5021],"jelecia":[0,21,0.0],"jerikka":[0,7,0.0],"jerlisha":[0,7,0.0],"jesenya":[0,91,0.0],"jesstina":[0,18,0.0],"jimesha":[0,77,0.0],"jisel":[0,367,0.5129],"jocabed":[0,300,0.4954],"josalin":[0,138,0.428],"jourden":[201,84,0.3463],"jozie":[0,1291,0.6222],"julitza":[0,200,0.4602],"kaitlain":[0,30,0.0],"kanishia":[0,24,0.0],"kayelee":[0,365,0.5125],"keerstin":[0,89,0.0],"kelbi":[0,299,0.4951],"kierah":[0,392,0.5187],"kirandeep":[0,114,0.4114],"kiristen":[0,31,0.0],"konisha":[0,7,0.0],"kryssa":[0,64,0.0],"laquaysha":[0,19,0.0],"logann":[22,614,0.5413],"manami":[0,110,0.4083],"marshaye":[0,7,0.0],"mayan":[250,344,0.3213],"mayia":[0,79,0.0],"measha":[0,33,0.0],"mercedee":[0,21,0.0],"milira":[0,29,0.0],"monserrath":[0,1260,0.6201],"porchae":[0,7,0.0],"quantasia":[0,119,0.4151],"rayonna":[0,991,0.5992],"rickeshia":[0,18,0.0],"riya":[0,6133,0.7575],"sabrinna":[0,227,0.4712],"sakoya":[0,62,0.0],"samari":[675,1447,0.4537],"saryn":[0,268,0.4856],"selamawit":[0,22,0.0],"selyna":[0,138,0.428],"shailee":[0,500,0.5398],"shamarah":[0,33,0.0],"shanade":[0,26,0.0],"shaneiqua":[0,50,0.0],"shannay":[0,16,0.0],"shayle":[0,159,0.4403],"shinece":[0,7,0.0],"sinea":[0,21,0.0],"synetra":[0,7,0.0],"tachina":[0,65,0.0],"talyia":[0,77,0.0],"talysha":[0,25,0.0],"tasherra":[0,7,0.0],"taylormarie":[0,163,0.4424],"thomisha":[0,7,0.0],"tiler":[286,59,0.4208],"trupti":[0,7,0.0],"tyfani":[0,7,0.0],"tykeria":[0,639,0.5611],"tyricka":[0,12,0.0],"waynesha":[0,62,0.0],"yoo":[0,12,0.0],"yuridiana":[0,103,0.4026],"abreanna":[0,261,0.4833],"adilenne":[0,206,0.4628],"afifa":[0,123,0.418],"akiah":[0,151,0.4358],"alashia":[0,247,0.4785],"alasia":[0,1651,0.6435],"aleeshia":[0,6,0.0],"alexxus":[0,416,0.5238],"alyana":[0,2036,0.6618],"alyxis":[0,280,0.4894],"alyza":[0,1780,0.6501],"amandajean":[0,13,0.0],"amaria":[5,2800,0.6884],"amiya":[0,8557,0.7865],"amore":[262,1173,0.5161],"anahis":[0,238,0.4753],"analleli":[0,138,0.428],"analycia":[0,135,0.4261],"andriena":[0,6,0.0],"angelyna":[0,595,0.5549],"annay":[0,57,0.0],"antara":[0,200,0.4602],"aubria":[0,173,0.4476],"audryana":[0,105,0.4042],"avana":[0,480,0.5362],"avilene":[0,116,0.4129],"bana":[0,199,0.4598],"baotran":[0,16,0.0],"bekka":[0,100,0.4],"bethanni":[0,6,0.0],"blandy":[0,6,0.0],"breeahna":[0,6,0.0],"breionna":[0,74,0.0],"briseyda":[0,1729,0.6476],"brittana":[0,11,0.0],"brittanica":[0,6,0.0],"broghan":[104,21,0.3489],"brytany":[0,11,0.0],"cadey":[0,123,0.418],"caili":[0,81,0.0],"callandra":[0,6,0.0],"callison":[0,14,0.0],"caniesha":[0,16,0.0],"caritina":[0,17,0.0],"chalei":[0,6,0.0],"champaine":[0,25,0.0],"charlsea":[0,17,0.0],"chaylene":[0,27,0.0],"cheridan":[0,107,0.4059],"cheriece":[0,6,0.0],"danaca":[0,16,0.0],"daniah":[0,496,0.5391],"darshanna":[0,6,0.0],"davonya":[0,16,0.0],"deanca":[0,6,0.0],"deonsha":[0,6,0.0],"deyci":[0,69,0.0],"dimond":[0,230,0.4723],"donyae":[320,233,0.3174],"elexus":[0,1266,0.6205],"elianne":[0,215,0.4665],"emmarie":[0,2419,0.6767],"erial":[0,226,0.4708],"erianne":[0,38,0.0],"gelisha":[0,6,0.0],"giulianna":[0,1461,0.6329],"hassanah":[0,12,0.0],"haylei":[0,789,0.5794],"isamarie":[0,16,0.0],"ivona":[0,51,0.0],"jakeria":[0,688,0.5675],"janasha":[0,170,0.4461],"janeesha":[0,11,0.0],"jaquira":[0,37,0.0],"jazmeen":[0,162,0.4419],"jazmynne":[0,47,0.0],"jazzlin":[0,211,0.4649],"jenicia":[0,6,0.0],"jericah":[0,31,0.0],"jesa":[0,48,0.0],"jinan":[5,238,0.4673],"jourdin":[81,146,0.3031],"kadian":[69,87,0.2446],"kaetlin":[0,120,0.4158],"kaitlind":[0,16,0.0],"kaleesha":[0,27,0.0],"kamiah":[0,1733,0.6478],"kanessha":[0,6,0.0],"karolann":[0,6,0.0],"katylin":[0,29,0.0],"keiaira":[0,81,0.0],"kelvisha":[0,12,0.0],"kenysha":[0,38,0.0],"kerstine":[0,11,0.0],"keyonnia":[0,11,0.0],"khusbu":[0,37,0.0],"kianah":[0,305,0.4969],"kianie":[0,16,0.0],"kiasia":[0,390,0.5182],"kieria":[0,31,0.0],"kierrah":[0,217,0.4673],"kiyuana":[0,6,0.0],"korsica":[0,6,0.0],"kree":[567,517,0.3175],"krisina":[0,6,0.0],"kurston":[0,23,0.0],"kwanesha":[0,23,0.0],"kyarra":[0,219,0.4681],"kymia":[0,127,0.4208],"laketria":[0,6,0.0],"lakreisha":[0,6,0.0],"lamiya":[0,759,0.576],"lateafa":[0,6,0.0],"latefia":[0,6,0.0],"leny":[70,33,0.2736],"leondria":[0,45,0.0],"lesliann":[0,6,0.0],"liliam":[0,28,0.0],"luisita":[0,6,0.0],"luzero":[0,11,0.0],"lyndzee":[0,63,0.0],"lytia":[0,14,0.0],"madysen":[5,2696,0.685],"magdelin":[0,6,0.0],"maikou":[0,38,0.0],"makaya":[0,1012,0.601],"marcedez":[0,11,0.0],"markecia":[0,54,0.0],"markesa":[0,6,0.0],"maxiel":[6,18,0.0],"mayce":[22,456,0.5112],"mckena":[0,411,0.5228],"mellyssa":[0,6,0.0],"merena":[0,6,0.0],"miana":[0,649,0.5624],"mianna":[0,570,0.5512],"mikenzie":[0,1057,0.6048],"mishale":[0,6,0.0],"mishea":[0,6,0.0],"moncerrat":[0,366,0.5127],"myiah":[0,884,0.5893],"mykaela":[0,1116,0.6095],"nairi":[0,290,0.4925],"nardia":[0,23,0.0],"nayisha":[0,6,0.0],"niloofar":[0,11,0.0],"nytisha":[0,6,0.0],"omeshia":[0,12,0.0],"orlandria":[0,85,0.0],"pai":[0,6,0.0],"pelin":[0,54,0.0],"praise":[370,868,0.4337],"priscylla":[0,22,0.0],"quaneka":[0,15,0.0],"quaniece":[0,27,0.0],"rahma":[0,1450,0.6323],"ranique":[0,34,0.0],"rashaundra":[0,13,0.0],"reeanna":[0,61,0.0],"reniesha":[0,6,0.0],"riata":[0,137,0.4273],"rodnika":[0,35,0.0],"roniqua":[0,67,0.0],"ronnae":[0,119,0.4151],"rykia":[0,28,0.0],"safaa":[0,490,0.538],"sahrish":[0,6,0.0],"sameisha":[0,6,0.0],"samisha":[0,47,0.0],"santerica":[0,6,0.0],"saquoia":[0,70,0.0],"savonnah":[0,55,0.0],"shadaria":[0,43,0.0],"shadel":[0,6,0.0],"shaily":[0,188,0.4548],"shaketra":[0,6,0.0],"shakilah":[0,30,0.0],"shalani":[0,11,0.0],"shalethia":[0,12,0.0],"shamilla":[0,11,0.0],"shamirra":[0,23,0.0],"shanei":[0,6,0.0],"shaniah":[0,1928,0.657],"shantrece":[0,12,0.0],"shaqula":[0,6,0.0],"sharayne":[0,24,0.0],"shatice":[0,11,0.0],"shayley":[0,263,0.484],"shaylia":[0,31,0.0],"shaylynne":[0,72,0.0],"shealeen":[0,11,0.0],"shelbye":[0,39,0.0],"shelsey":[0,224,0.47],"shenaya":[0,73,0.0],"sheonta":[0,6,0.0],"shinique":[0,24,0.0],"shir":[0,190,0.4558],"shontoya":[0,6,0.0],"sirah":[0,34,0.0],"skila":[0,82,0.0],"skylier":[62,48,0.2301],"somaya":[0,990,0.5991],"steohanie":[0,6,0.0],"sumayya":[0,376,0.515],"tabria":[0,263,0.484],"tanechia":[0,6,0.0],"tanira":[0,24,0.0],"tashai":[0,71,0.0],"tathiana":[0,26,0.0],"tayonna":[0,433,0.5273],"tayshia":[0,40,0.0],"tekera":[0,19,0.0],"timmeshia":[0,6,0.0],"tonirose":[0,6,0.0],"toriann":[0,178,0.4501],"trishna":[0,95,0.0],"tylea":[0,202,0.4611],"tymira":[0,82,0.0],"tyshauna":[0,74,0.0],"wala":[0,6,0.0],"waynisha":[0,28,0.0],"winny":[0,72,0.0],"winta":[0,103,0.4026],"xochilth":[0,100,0.4],"yachet":[0,238,0.4753],"yanci":[0,203,0.4615],"yaqueline":[0,214,0.4661],"yazmeen":[0,489,0.5379],"yesania":[0,6,0.0],"yesenio":[0,6,0.0],"yesmeen":[0,39,0.0],"yesnia":[0,18,0.0],"yina":[0,97,0.0],"ymani":[0,264,0.4843],"yuritzy":[0,434,0.5275],"yzamar":[0,6,0.0],"zakiah":[233,459,0.3768],"zurisadai":[0,530,0.5449],"abagale":[0,374,0.5146],"abcde":[0,415,0.5236],"abilgail":[0,28,0.0],"abrey":[0,153,0.4369],"achaia":[0,62,0.0],"adaisha":[0,119,0.4151],"adalie":[0,2342,0.6739],"adalinda":[0,10,0.0],"addyson":[33,16738,0.8432],"aika":[0,264,0.4843],"ailen":[5,599,0.5516],"ailin":[5,1138,0.6089],"ailis":[0,228,0.4716],"akari":[723,1028,0.3808],"alaisa":[0,119,0.4151],"alarie":[0,13,0.0],"aleeya":[0,1222,0.6174],"alely":[0,11,0.0],"alexaundra":[0,15,0.0],"alexea":[0,213,0.4657],"alexeus":[0,5,0.0],"alexyss":[0,535,0.5457],"alieshia":[0,5,0.0],"alizah":[5,1372,0.6255],"alleson":[0,33,0.0],"aloria":[0,139,0.4286],"aloura":[0,340,0.5063],"alynna":[0,997,0.5997],"amri":[39,448,0.4945],"anabelen":[0,104,0.4034],"analecia":[0,39,0.0],"analucia":[0,826,0.5834],"analynn":[0,406,0.5217],"anbria":[0,10,0.0],"andelyn":[0,179,0.4506],"andricka":[0,5,0.0],"aneida":[0,10,0.0],"aniysa":[0,5,0.0],"anjalee":[0,160,0.4408],"annakay":[0,34,0.0],"annalysa":[0,205,0.4624],"anneth":[0,187,0.4544],"anquinetta":[0,5,0.0],"antwanett":[0,5,0.0],"aphton":[0,5,0.0],"arialle":[0,5,0.0],"arieanna":[0,1245,0.619],"arit":[0,11,0.0],"arniesha":[0,5,0.0],"aslyn":[0,412,0.523],"audreyonna":[0,5,0.0],"avantika":[0,358,0.5108],"avary":[114,1637,0.6064],"barisha":[0,5,0.0],"beaonca":[0,5,0.0],"besma":[0,10,0.0],"beyunka":[0,5,0.0],"binaca":[0,5,0.0],"bolivia":[0,5,0.0],"brandea":[0,5,0.0],"brennah":[0,523,0.5437],"breonca":[0,38,0.0],"breonda":[0,37,0.0],"brettnie":[0,5,0.0],"briannia":[0,69,0.0],"bricola":[0,5,0.0],"brieon":[0,5,0.0],"brihanna":[0,820,0.5828],"britlee":[0,69,0.0],"brittna":[0,5,0.0],"brytne":[0,10,0.0],"cadee":[0,421,0.5249],"caelan":[2426,659,0.5488],"cailynn":[0,1166,0.6133],"caitlynd":[0,22,0.0],"caitria":[0,10,0.0],"carleisha":[0,26,0.0],"catrin":[0,39,0.0],"cazandra":[0,54,0.0],"celenne":[0,5,0.0],"cesiley":[0,5,0.0],"chalie":[0,10,0.0],"chalis":[0,5,0.0],"champaign":[0,23,0.0],"chanai":[0,10,0.0],"chandrell":[0,10,0.0],"charneshia":[0,5,0.0],"charniqua":[0,29,0.0],"charvey":[0,5,0.0],"chasie":[0,28,0.0],"chatal":[0,5,0.0],"chelbe":[0,11,0.0],"chelsealynn":[0,5,0.0],"chelseamarie":[0,21,0.0],"chrishauna":[0,73,0.0],"corsha":[0,15,0.0],"crisol":[0,64,0.0],"curissa":[0,28,0.0],"cydnei":[0,53,0.0],"dajavette":[0,5,0.0],"daleisha":[0,20,0.0],"damina":[0,11,0.0],"dancia":[0,5,0.0],"daneca":[0,5,0.0],"danissa":[0,97,0.0],"daquesha":[0,10,0.0],"dashira":[0,28,0.0],"datrice":[0,5,0.0],"deaisha":[0,172,0.4471],"deashley":[0,24,0.0],"deeba":[0,41,0.0],"deisree":[0,5,0.0],"dejanaye":[0,5,0.0],"dejanique":[0,275,0.4879],"dekara":[0,10,0.0],"delauren":[0,5,0.0],"delissia":[0,5,0.0],"deniss":[5,82,0.0],"deosha":[0,64,0.0],"deshanae":[0,73,0.0],"desrae":[0,36,0.0],"destynie":[0,297,0.4946],"devanna":[0,37,0.0],"devondra":[0,35,0.0],"devynne":[0,116,0.4129],"dominicka":[0,5,0.0],"drianna":[0,140,0.4292],"dyasia":[0,172,0.4471],"dyisha":[0,5,0.0],"earlesha":[0,5,0.0],"edelyn":[0,461,0.5327],"eilis":[0,254,0.481],"eimly":[0,5,0.0],"elizandra":[0,52,0.0],"elizette":[0,63,0.0],"elsha":[0,35,0.0],"emilianne":[0,10,0.0],"emmali":[0,118,0.4144],"erandi":[0,377,0.5153],"ericanicole":[0,5,0.0],"estefanny":[0,176,0.4491],"esteffany":[0,46,0.0],"eternity":[0,2145,0.6663],"faneisha":[0,5,0.0],"genele":[0,5,0.0],"gerrika":[0,10,0.0],"giani":[333,249,0.3164],"gianinna":[0,22,0.0],"gianne":[0,81,0.0],"gipsy":[0,10,0.0],"giustina":[0,16,0.0],"gizzel":[0,36,0.0],"glenne":[0,5,0.0],"graci":[0,1524,0.6366],"hadar":[0,203,0.4615],"haillie":[0,367,0.5129],"hajra":[0,282,0.49],"hannahmarie":[0,207,0.4632],"harini":[0,605,0.5564],"harjot":[252,82,0.3808],"heathyr":[0,5,0.0],"hedieh":[0,5,0.0],"heidiann":[0,5,0.0],"hela":[0,94,0.0],"henchy":[0,221,0.4689],"ibon":[0,5,0.0],"icee":[0,10,0.0],"isamari":[0,37,0.0],"isley":[280,1117,0.503],"jabora":[0,5,0.0],"jabria":[0,1149,0.6121],"jaceline":[0,5,0.0],"jacora":[0,113,0.4106],"jahzeel":[194,47,0.3835],"jakyra":[0,1098,0.6081],"jalencia":[0,15,0.0],"jalexis":[0,237,0.4749],"jalyssia":[0,11,0.0],"jamarah":[0,47,0.0],"jamequa":[0,12,0.0],"jametrice":[0,5,0.0],"janelis":[0,345,0.5076],"janisse":[0,85,0.0],"janiya":[6,11001,0.8079],"jannely":[0,358,0.5108],"jaquinta":[0,5,0.0],"jasenia":[0,163,0.4424],"jaynice":[0,10,0.0],"jazamine":[0,11,0.0],"jazline":[0,258,0.4823],"jazzmene":[0,5,0.0],"jessca":[0,5,0.0],"jessican":[0,5,0.0],"jhasmine":[0,12,0.0],"jiovana":[0,10,0.0],"jiovanna":[0,160,0.4408],"joahnna":[0,10,0.0],"johneka":[0,10,0.0],"jolecia":[0,5,0.0],"jozlynn":[0,677,0.5661],"juhee":[0,21,0.0],"julica":[0,5,0.0],"kadeja":[0,268,0.4856],"kahyla":[0,11,0.0],"kaitlee":[0,35,0.0],"kaiyla":[0,165,0.4435],"kalleigh":[0,662,0.5642],"kaniya":[0,2479,0.6789],"kantrice":[0,5,0.0],"karanda":[0,10,0.0],"karnecia":[0,5,0.0],"karneisha":[0,27,0.0],"karsyn":[2729,8972,0.6239],"kashema":[0,5,0.0],"kassara":[0,5,0.0],"kasye":[0,5,0.0],"kateline":[0,118,0.4144],"kateryn":[0,149,0.4346],"kathleenann":[0,5,0.0],"katieanne":[0,10,0.0],"katriece":[0,5,0.0],"katylyn":[0,15,0.0],"kayelynn":[0,388,0.5178],"kaylaa":[0,35,0.0],"kayland":[18,57,0.0],"kaytlan":[0,87,0.0],"keaire":[26,15,0.0],"keayra":[0,72,0.0],"keeona":[0,27,0.0],"keirstyn":[0,369,0.5134],"keisey":[0,10,0.0],"kelah":[0,24,0.0],"kelisa":[0,25,0.0],"kelynn":[26,63,0.0],"kendrya":[0,5,0.0],"kentara":[0,26,0.0],"keyandrea":[0,5,0.0],"keyiana":[0,27,0.0],"kiandria":[0,61,0.0],"kiane":[0,46,0.0],"kiawna":[0,5,0.0],"kieley":[0,263,0.484],"kieren":[502,118,0.4522],"kimchi":[0,5,0.0],"kinza":[0,552,0.5484],"kinzy":[0,232,0.4731],"kiora":[0,272,0.4869],"kirstian":[0,20,0.0],"kiswanna":[0,5,0.0],"kitara":[0,151,0.4358],"klaryssa":[0,208,0.4636],"krishanna":[0,10,0.0],"krisstina":[0,11,0.0],"krystah":[0,10,0.0],"krystalynne":[0,5,0.0],"kyiana":[0,60,0.0],"kylena":[0,104,0.4034],"kylesha":[0,5,0.0],"kyly":[0,22,0.0],"kymberle":[0,5,0.0],"kymesha":[0,29,0.0],"lacci":[0,5,0.0],"ladara":[0,5,0.0],"ladreama":[0,5,0.0],"lakaysha":[0,27,0.0],"lakiah":[0,130,0.4228],"lakyndra":[0,5,0.0],"laporchea":[0,5,0.0],"laquaisha":[0,35,0.0],"latierra":[0,27,0.0],"latijera":[0,11,0.0],"lavia":[0,10,0.0],"laysha":[0,876,0.5885],"leagh":[0,5,0.0],"leidi":[0,136,0.4267],"lequitta":[0,5,0.0],"leydi":[0,508,0.5412],"lilyanna":[0,4934,0.7386],"lindly":[0,5,0.0],"lisbett":[0,11,0.0],"lonnesha":[0,5,0.0],"luserito":[0,5,0.0],"lyndze":[0,16,0.0],"lytina":[0,5,0.0],"maham":[0,322,0.5016],"mahogani":[0,308,0.4977],"maide":[0,5,0.0],"majd":[586,10,0.5457],"makella":[0,80,0.0],"malicka":[0,5,0.0],"malieka":[0,21,0.0],"marbeya":[0,5,0.0],"mareah":[0,32,0.0],"maressia":[0,5,0.0],"marizza":[0,39,0.0],"markki":[0,5,0.0],"marrisha":[0,15,0.0],"martavia":[0,135,0.4261],"marteeka":[0,5,0.0],"maryuri":[0,183,0.4525],"masey":[0,310,0.4983],"mashal":[10,123,0.3928],"mayu":[0,204,0.4619],"mckinsie":[0,16,0.0],"mechella":[0,5,0.0],"meganmarie":[0,10,0.0],"mekel":[139,16,0.3928],"melenaite":[0,10,0.0],"melyna":[0,265,0.4846],"mercadez":[0,152,0.4364],"michalla":[0,136,0.4267],"mikaya":[0,495,0.5389],"mikecia":[0,11,0.0],"minesha":[0,11,0.0],"mishalay":[0,5,0.0],"miyesha":[0,5,0.0],"mizuki":[11,335,0.4917],"mlynn":[0,37,0.0],"montisha":[0,16,0.0],"morgon":[101,42,0.3045],"mylin":[91,182,0.3248],"naika":[0,140,0.4292],"najirah":[0,5,0.0],"nalisa":[0,10,0.0],"nalley":[0,31,0.0],"narmeen":[0,103,0.4026],"ndia":[0,264,0.4843],"negeen":[0,15,0.0],"neidy":[0,197,0.4589],"nikaya":[0,165,0.4435],"nikolle":[0,40,0.0],"nkiru":[0,15,0.0],"oceania":[0,78,0.0],"olethea":[0,5,0.0],"olutoyin":[0,5,0.0],"olvia":[0,20,0.0],"oneyda":[0,48,0.0],"osheanna":[0,22,0.0],"paig":[0,5,0.0],"paislee":[0,10824,0.8069],"panyia":[0,5,0.0],"pardis":[0,5,0.0],"pashia":[0,13,0.0],"paullina":[0,5,0.0],"phalicia":[0,5,0.0],"phuonganh":[0,5,0.0],"phylisia":[0,5,0.0],"pomaikai":[0,10,0.0],"preana":[0,5,0.0],"preciosa":[0,150,0.4352],"precyous":[0,5,0.0],"preya":[0,35,0.0],"prianna":[0,21,0.0],"quanetra":[0,5,0.0],"quaniesha":[0,50,0.0],"quatia":[0,11,0.0],"quesha":[0,5,0.0],"quinshay":[0,10,0.0],"quintavia":[0,71,0.0],"quintesha":[0,12,0.0],"quintia":[0,10,0.0],"quortney":[0,5,0.0],"quynhnhu":[0,12,0.0],"rabeka":[0,35,0.0],"raeshelle":[0,15,0.0],"raigan":[0,933,0.594],"raima":[0,211,0.4649],"raniyah":[0,2127,0.6656],"rashieka":[0,5,0.0],"ravine":[0,5,0.0],"rayshawna":[0,21,0.0],"reegan":[351,1178,0.4907],"resham":[0,5,0.0],"riketa":[0,5,0.0],"roiza":[0,182,0.452],"ronea":[0,20,0.0],"roneesha":[0,15,0.0],"ronishia":[0,10,0.0],"ronneka":[0,22,0.0],"rontavia":[0,5,0.0],"rosandra":[0,5,0.0],"roshini":[0,75,0.0],"rynn":[34,355,0.4727],"sabriyah":[0,163,0.4424],"salyna":[0,33,0.0],"sameen":[10,137,0.404],"sanjana":[0,2180,0.6677],"santrell":[15,10,0.0],"sarahlyn":[0,17,0.0],"savannaha":[0,129,0.4221],"scottia":[0,5,0.0],"sefora":[0,267,0.4853],"senteria":[0,5,0.0],"shabina":[0,5,0.0],"shacourtney":[0,5,0.0],"shadrika":[0,11,0.0],"shaleigha":[0,10,0.0],"shaleshia":[0,5,0.0],"shalynne":[0,35,0.0],"shalyssa":[0,5,0.0],"shamanique":[0,5,0.0],"shamise":[0,5,0.0],"shanasha":[0,5,0.0],"shaneqwa":[0,22,0.0],"shanque":[0,11,0.0],"shanquel":[0,10,0.0],"shanquil":[0,5,0.0],"shantalle":[0,12,0.0],"shantania":[0,10,0.0],"shantanique":[0,61,0.0],"shantasha":[0,13,0.0],"shantavious":[0,35,0.0],"shanygne":[0,27,0.0],"shaquale":[0,5,0.0],"shaque":[0,12,0.0],"shaquin":[0,5,0.0],"sharnisha":[0,5,0.0],"shatell":[0,5,0.0],"shavae":[0,10,0.0],"shawntika":[0,5,0.0],"sheliza":[0,5,0.0],"shemera":[0,5,0.0],"shenai":[0,19,0.0],"sheriah":[0,58,0.0],"shevi":[0,5,0.0],"shirae":[0,5,0.0],"shoshone":[0,11,0.0],"shykia":[0,21,0.0],"shylee":[0,805,0.5812],"shyma":[0,5,0.0],"shyneka":[0,5,0.0],"shynese":[0,12,0.0],"sisilia":[0,45,0.0],"skilar":[50,406,0.4735],"sonum":[0,5,0.0],"soroya":[0,5,0.0],"stephanic":[0,5,0.0],"sthephanie":[0,17,0.0],"sugeily":[0,5,0.0],"sumara":[0,36,0.0],"sydnye":[0,59,0.0],"syntia":[0,10,0.0],"tabrea":[0,17,0.0],"tajanae":[0,479,0.5361],"takedra":[0,5,0.0],"takemia":[0,5,0.0],"takirah":[0,75,0.0],"talyah":[0,461,0.5327],"tamarae":[0,5,0.0],"tamyia":[0,321,0.5013],"tanavia":[0,10,0.0],"tanedra":[0,5,0.0],"taquisa":[0,5,0.0],"taquoia":[0,10,0.0],"tashanique":[0,28,0.0],"tasheeka":[0,5,0.0],"tavanna":[0,5,0.0],"taylin":[873,2661,0.5343],"taylre":[0,60,0.0],"tecola":[0,5,0.0],"teighlor":[0,293,0.4934],"tekira":[0,57,0.0],"tempsett":[0,5,0.0],"tendria":[0,5,0.0],"teoshia":[0,11,0.0],"terresha":[0,12,0.0],"terriana":[0,657,0.5635],"teysha":[0,13,0.0],"tiania":[0,15,0.0],"tiarre":[0,5,0.0],"tihara":[0,5,0.0],"timberlee":[0,143,0.4311],"timira":[0,63,0.0],"tkeya":[0,78,0.0],"totianna":[0,34,0.0],"traneisha":[0,22,0.0],"trinere":[0,5,0.0],"tristany":[0,31,0.0],"tuesdai":[0,5,0.0],"tyaira":[0,185,0.4534],"tyka":[0,5,0.0],"tylecia":[0,21,0.0],"tyleisha":[0,32,0.0],"tynieka":[0,5,0.0],"tyquesha":[0,42,0.0],"tyreesha":[0,66,0.0],"tysheema":[0,16,0.0],"vannia":[0,201,0.4606],"vantasia":[0,65,0.0],"verinica":[0,5,0.0],"victorianna":[0,37,0.0],"vonshae":[0,5,0.0],"whitli":[0,5,0.0],"xianna":[0,310,0.4983],"xiara":[0,327,0.5029],"yaned":[0,5,0.0],"yejide":[0,5,0.0],"yenty":[0,188,0.4548],"yisell":[0,74,0.0],"yleana":[0,26,0.0],"yolimar":[0,10,0.0],"yvana":[0,92,0.0],"zamara":[0,854,0.5863],"zanquisha":[0,5,0.0],"zavia":[6,251,0.4707],"ziena":[0,5,0.0],"zlata":[0,390,0.5182],"dajour":[657,23,0.5473],"derrike":[55,0,0.0],"saddam":[42,0,0.0],"takeem":[62,0,0.0],"bryer":[2215,297,0.5996],"damato":[21,0,0.0],"decker":[2725,119,0.6619],"demarea":[219,0,0.4681],"jiovanny":[449,0,0.5304],"pajtim":[13,0,0.0],"tevan":[291,0,0.4928],"arjenis":[25,0,0.0],"donatello":[470,0,0.5344],"okoye":[51,0,0.0],"vishaal":[87,0,0.0],"bryar":[1854,710,0.493],"hamad":[504,0,0.5405],"keyonte":[532,21,0.5277],"kiree":[161,16,0.409],"lakim":[41,0,0.0],"tasean":[242,5,0.4689],"dacoda":[544,116,0.4648],"dardan":[95,0,0.0],"dejour":[300,19,0.4709],"jordano":[56,0,0.0],"kanaan":[1144,0,0.6117],"michaelangel":[10,0,0.0],"nicoles":[103,0,0.4026],"quamel":[118,0,0.4144],"quentavius":[30,0,0.0],"raghib":[20,0,0.0],"triton":[1474,0,0.6337],"victoralfonso":[15,0,0.0],"xavious":[113,0,0.4106],"bogar":[34,0,0.0],"bryam":[73,0,0.0],"candon":[171,0,0.4466],"demarquez":[138,0,0.428],"djon":[99,0,0.0],"donterius":[99,0,0.0],"drae":[141,0,0.4298],"jaquawn":[159,0,0.4403],"joeangel":[343,0,0.5071],"jourdon":[144,16,0.3967],"kedeem":[14,0,0.0],"logun":[386,0,0.5173],"rameez":[36,0,0.0],"raushan":[33,0,0.0],"shavez":[39,0,0.0],"yony":[200,0,0.4602],"zacherie":[77,0,0.0],"abhinav":[1955,0,0.6582],"calvon":[53,0,0.0],"codye":[28,0,0.0],"courage":[257,62,0.4034],"damarious":[318,0,0.5005],"damontae":[628,0,0.5596],"danarius":[121,0,0.4166],"delontay":[36,0,0.0],"delvonte":[179,0,0.4506],"devvin":[50,0,0.0],"djavan":[20,0,0.0],"dravon":[120,0,0.4158],"faison":[44,0,0.0],"feng":[30,0,0.0],"giovanne":[113,0,0.4106],"hussam":[268,0,0.4856],"jahron":[151,0,0.4358],"jamier":[1304,0,0.6231],"jaquavis":[236,0,0.4746],"jermicheal":[21,0,0.0],"jonavan":[241,0,0.4764],"jyron":[162,0,0.4419],"keanu":[8264,225,0.7649],"maico":[155,0,0.4381],"narek":[645,0,0.5619],"oseas":[384,0,0.5169],"quinterius":[96,0,0.0],"rockeem":[19,0,0.0],"ryanmichael":[36,0,0.0],"teric":[54,0,0.0],"trevaun":[236,0,0.4746],"tyller":[142,46,0.3435],"ameya":[197,914,0.5011],"amman":[87,0,0.0],"amonte":[717,0,0.5711],"arjay":[317,0,0.5002],"assante":[33,0,0.0],"avonte":[501,0,0.54],"barkim":[7,0,0.0],"belisario":[7,0,0.0],"bilaal":[125,0,0.4194],"billal":[142,0,0.4305],"cayden":[40458,1864,0.8846],"ceon":[48,0,0.0],"chamberlain":[130,17,0.3833],"chritian":[7,0,0.0],"cortrell":[46,0,0.0],"dakeem":[26,0,0.0],"dandrew":[51,0,0.0],"deangalo":[7,0,0.0],"deantrae":[7,0,0.0],"dequane":[67,0,0.0],"deryan":[47,0,0.0],"devrick":[25,0,0.0],"dimarcus":[7,0,0.0],"divon":[64,0,0.0],"domineke":[14,0,0.0],"dylin":[633,134,0.4762],"dyquan":[191,0,0.4562],"erikk":[12,0,0.0],"evodio":[18,0,0.0],"farrad":[7,0,0.0],"farzan":[38,0,0.0],"gauge":[4794,0,0.7361],"gerik":[110,0,0.4083],"govanni":[260,0,0.483],"haaris":[267,0,0.4853],"haiden":[4174,1697,0.5359],"hiroaki":[20,0,0.0],"jakkar":[12,0,0.0],"jamarques":[90,0,0.0],"jamuel":[19,0,0.0],"jaquarius":[860,0,0.5869],"javious":[155,0,0.4381],"jayse":[2145,30,0.6583],"jibran":[386,0,0.5173],"johntavius":[83,0,0.0],"jquan":[572,0,0.5515],"juanangel":[186,0,0.4539],"keiton":[282,0,0.49],"kesean":[1226,0,0.6177],"keyontae":[467,13,0.5217],"khadeem":[94,0,0.0],"khiri":[17,0,0.0],"kishawn":[349,10,0.4968],"korde":[116,0,0.4129],"kushtrim":[7,0,0.0],"ladarrious":[77,0,0.0],"lamir":[476,0,0.5355],"lamontae":[299,0,0.4951],"mamadou":[1830,0,0.6525],"manbir":[17,0,0.0],"mayson":[4745,1149,0.6071],"monquez":[17,0,0.0],"mourad":[238,0,0.4753],"octavion":[189,0,0.4553],"penisimani":[25,0,0.0],"quentel":[24,0,0.0],"rakem":[26,0,0.0],"rakiem":[25,0,0.0],"sadam":[19,0,0.0],"sanny":[7,0,0.0],"sayyid":[152,0,0.4364],"shafer":[125,0,0.4194],"shail":[74,0,0.0],"shao":[7,0,0.0],"siddiq":[183,0,0.4525],"stryker":[1545,0,0.6378],"sukhdeep":[37,10,0.0],"tannar":[141,10,0.4069],"trayveon":[429,0,0.5265],"trevone":[256,0,0.4816],"tykee":[81,0,0.0],"xao":[27,0,0.0],"xeryus":[12,0,0.0],"yacob":[202,0,0.4611],"yacov":[29,0,0.0],"yader":[119,0,0.4151],"yazen":[379,0,0.5157],"aalap":[6,0,0.0],"abdulkarim":[206,0,0.4628],"adalid":[141,11,0.4048],"adammichael":[6,0,0.0],"adedeji":[65,0,0.0],"alkeem":[11,0,0.0],"amaan":[1049,0,0.6042],"amire":[803,102,0.5247],"artan":[55,0,0.0],"avetis":[66,0,0.0],"avimael":[35,0,0.0],"awais":[133,0,0.4248],"beyan":[6,0,0.0],"branddon":[21,0,0.0],"brandonmichael":[30,0,0.0],"brentlee":[808,132,0.5111],"breonte":[6,5,0.0],"caiden":[22859,521,0.8543],"caio":[687,0,0.5674],"cajuan":[11,0,0.0],"cavon":[198,0,0.4593],"cejay":[141,0,0.4298],"challen":[71,5,0.0],"chanler":[458,176,0.4048],"chayan":[27,5,0.0],"chayton":[1863,6,0.6522],"cornelieus":[6,0,0.0],"cortavius":[105,0,0.4042],"cru":[1448,34,0.6196],"curren":[624,0,0.559],"daeron":[90,0,0.0],"damarquis":[61,0,0.0],"darae":[6,12,0.0],"dauntae":[63,0,0.0],"dayvid":[34,0,0.0],"deangelio":[12,0,0.0],"demarian":[220,0,0.4685],"dereon":[1203,367,0.4898],"deuntray":[6,0,0.0],"dmarkus":[54,0,0.0],"domico":[6,0,0.0],"donquez":[27,0,0.0],"dshaun":[308,0,0.4977],"eichael":[6,0,0.0],"ellias":[450,0,0.5306],"eluzer":[280,0,0.4894],"etai":[197,0,0.4589],"eulices":[42,0,0.0],"geordi":[84,0,0.0],"gurjot":[178,6,0.4382],"hady":[176,39,0.3819],"haik":[101,0,0.4009],"hardik":[29,0,0.0],"hassani":[124,0,0.4187],"hovig":[11,0,0.0],"ingmar":[6,0,0.0],"jaasiel":[557,0,0.5492],"jaciel":[1006,5,0.598],"jacorian":[489,0,0.5379],"jaquavius":[384,0,0.5169],"jaraad":[29,0,0.0],"jario":[6,0,0.0],"jaykob":[1114,0,0.6094],"jermol":[6,0,0.0],"jerrail":[6,0,0.0],"jesstin":[71,0,0.0],"johngabriel":[69,0,0.0],"johnnyray":[42,0,0.0],"joquan":[172,0,0.4471],"josedaniel":[163,0,0.4424],"joseignacio":[11,0,0.0],"jovontae":[74,0,0.0],"juandedios":[257,0,0.482],"justain":[6,0,0.0],"kahari":[884,81,0.5468],"kahdeem":[6,0,0.0],"kaid":[470,0,0.5344],"kairy":[6,200,0.4493],"kaliym":[6,0,0.0],"kanden":[192,0,0.4567],"karston":[681,0,0.5666],"keeler":[38,0,0.0],"keeven":[66,0,0.0],"keevon":[275,0,0.4879],"kenechukwu":[318,0,0.5005],"kentez":[11,0,0.0],"kevinjohn":[6,0,0.0],"khairi":[506,10,0.532],"khayri":[289,0,0.4922],"khyrie":[717,78,0.5232],"kieon":[100,0,0.4],"kilo":[108,0,0.4067],"korbyn":[3399,748,0.593],"kordale":[43,0,0.0],"krishon":[71,0,0.0],"kwmaine":[14,0,0.0],"kyren":[3485,89,0.6929],"lamondre":[79,0,0.0],"laquavis":[12,0,0.0],"levonte":[243,0,0.4771],"loui":[141,0,0.4298],"mahad":[776,0,0.578],"mahlik":[288,0,0.4919],"masen":[3199,92,0.6838],"maxxwell":[254,0,0.481],"mckale":[198,6,0.4483],"mithun":[33,0,0.0],"narith":[11,0,0.0],"naseer":[486,0,0.5373],"navar":[36,0,0.0],"nayib":[227,0,0.4712],"nieman":[6,0,0.0],"nikkolaus":[6,0,0.0],"oluwatobi":[555,158,0.4442],"quandre":[115,0,0.4121],"quvondo":[6,0,0.0],"raghav":[1248,0,0.6192],"ralik":[42,0,0.0],"rannon":[21,0,0.0],"ravion":[47,12,0.0],"razmig":[6,0,0.0],"rielly":[196,263,0.305],"roddell":[11,0,0.0],"saiquan":[106,0,0.4051],"santangelo":[6,0,0.0],"senai":[136,176,0.2814],"shalik":[66,0,0.0],"shamario":[17,0,0.0],"shaquelle":[73,45,0.2564],"shaquil":[206,7,0.4504],"shayde":[88,55,0.2653],"shederick":[6,0,0.0],"shequan":[17,0,0.0],"shuji":[6,0,0.0],"siran":[6,0,0.0],"solomone":[33,0,0.0],"tacorey":[29,0,0.0],"takanori":[6,0,0.0],"tamarius":[196,0,0.4585],"tazz":[58,0,0.0],"tejash":[6,0,0.0],"tigran":[472,0,0.5348],"travan":[21,0,0.0],"trayvion":[487,0,0.5375],"treyon":[423,0,0.5253],"tyrence":[23,0,0.0],"vantrell":[11,0,0.0],"vincentmichael":[6,0,0.0],"vinchenzo":[38,0,0.0],"yidel":[278,0,0.4888],"yobany":[229,0,0.472],"yonaton":[11,0,0.0],"yonic":[53,0,0.0],"yossi":[525,0,0.544],"yovanni":[656,0,0.5634],"zaccheaus":[90,0,0.0],"zavhary":[6,0,0.0],"aasin":[52,0,0.0],"abdulah":[75,0,0.0],"abdulkareem":[244,0,0.4775],"abedallah":[16,0,0.0],"abraam":[67,0,0.0],"adir":[329,0,0.5034],"adonai":[1142,230,0.5223],"aldemar":[5,0,0.0],"alecsander":[245,0,0.4778],"alhakim":[5,0,0.0],"amaar":[449,0,0.5304],"anjelo":[153,0,0.4369],"anooj":[5,0,0.0],"antuwan":[5,0,0.0],"aodhan":[303,0,0.4963],"aquileo":[5,0,0.0],"arjan":[883,0,0.5892],"armoni":[1424,2175,0.4298],"arnardo":[5,0,0.0],"ashston":[20,0,0.0],"aukeem":[5,0,0.0],"austun":[49,0,0.0],"ayden":[87801,2428,0.9644],"bardia":[77,0,0.0],"ber":[15,0,0.0],"braedan":[955,0,0.596],"bransen":[872,0,0.5881],"braxston":[344,0,0.5073],"braylan":[1312,61,0.5997],"breyden":[1091,0,0.6076],"bronsen":[170,0,0.4461],"cailean":[68,17,0.0],"caison":[969,0,0.5973],"calieb":[65,0,0.0],"carell":[15,0,0.0],"ceth":[58,0,0.0],"chadman":[5,0,0.0],"charlesedward":[5,0,0.0],"chayane":[5,0,0.0],"conlin":[273,0,0.4872],"corderrius":[11,0,0.0],"cortavious":[244,0,0.4775],"cotter":[51,0,0.0],"courvoisier":[62,0,0.0],"cymon":[15,0,0.0],"daichi":[226,0,0.4708],"daiki":[107,0,0.4059],"dairon":[280,0,0.4894],"daishaun":[263,0,0.484],"damonta":[308,0,0.4977],"dantee":[5,0,0.0],"danziel":[5,0,0.0],"daquawn":[158,0,0.4397],"darone":[5,0,0.0],"davidallen":[5,0,0.0],"davod":[5,0,0.0],"delmarco":[10,0,0.0],"demanuel":[10,0,0.0],"demarkio":[5,0,0.0],"demarrius":[70,0,0.0],"denero":[25,0,0.0],"deng":[374,0,0.5146],"denzelle":[50,0,0.0],"deontea":[33,0,0.0],"dereginald":[5,0,0.0],"derez":[76,0,0.0],"derrice":[5,0,0.0],"dervon":[27,0,0.0],"detavius":[32,0,0.0],"deveion":[76,0,0.0],"deyonte":[137,0,0.4273],"dorron":[5,0,0.0],"drayon":[11,0,0.0],"drayson":[548,0,0.5478],"dujon":[5,0,0.0],"duntae":[5,0,0.0],"dustinjames":[5,0,0.0],"ericjames":[5,0,0.0],"essam":[134,0,0.4254],"estevon":[99,0,0.0],"everth":[33,0,0.0],"faruk":[55,0,0.0],"ferid":[5,0,0.0],"filmon":[17,0,0.0],"foday":[97,0,0.0],"frasier":[93,0,0.0],"garhett":[132,0,0.4241],"garrek":[5,0,0.0],"geremie":[5,0,0.0],"gillen":[5,0,0.0],"giordan":[114,14,0.3753],"govinda":[32,0,0.0],"graeson":[791,15,0.5704],"grantham":[221,0,0.4689],"haasan":[5,0,0.0],"haeden":[263,34,0.4379],"haruki":[331,0,0.504],"ifeanyichukwu":[161,0,0.4414],"iqbal":[35,0,0.0],"ishaan":[5196,0,0.7431],"isiaih":[187,0,0.4544],"issai":[91,0,0.0],"issaiah":[495,0,0.5389],"issak":[489,0,0.5379],"jacab":[10,0,0.0],"jacbo":[5,0,0.0],"jacobson":[35,0,0.0],"jacody":[80,0,0.0],"jadiel":[5339,0,0.7455],"jahir":[2748,0,0.6878],"jahquan":[296,0,0.4943],"jairen":[190,0,0.4558],"jakeob":[182,0,0.452],"jakson":[884,0,0.5893],"jameze":[5,0,0.0],"jarade":[5,0,0.0],"jardan":[5,0,0.0],"jarmaris":[5,0,0.0],"jarquez":[288,0,0.4919],"jarrison":[5,0,0.0],"jartavius":[12,0,0.0],"jaswinder":[5,0,0.0],"jemichael":[10,0,0.0],"jemil":[33,0,0.0],"jerail":[5,0,0.0],"jerrik":[101,0,0.4009],"jesy":[10,5,0.0],"jevonte":[443,0,0.5293],"jeziel":[554,0,0.5487],"jibrail":[31,0,0.0],"jimin":[81,42,0.2753],"jobani":[222,0,0.4693],"josefrancisco":[45,0,0.0],"joshuaaaron":[11,0,0.0],"jovahn":[173,0,0.4476],"juanramon":[13,0,0.0],"jumanne":[16,0,0.0],"kailas":[65,0,0.0],"kamen":[423,0,0.5253],"kawaun":[17,0,0.0],"keevis":[5,0,0.0],"keiland":[111,0,0.4091],"keiwan":[25,0,0.0],"kelden":[227,0,0.4712],"kenaniah":[52,0,0.0],"keneen":[10,0,0.0],"kenry":[75,0,0.0],"kenzel":[161,0,0.4414],"kevaughn":[328,0,0.5032],"kevinanthony":[5,0,0.0],"kevinmatthew":[5,0,0.0],"kevonn":[26,0,0.0],"kevrick":[5,0,0.0],"keyun":[55,0,0.0],"khaalid":[138,0,0.428],"khayman":[94,0,0.0],"khirey":[10,0,0.0],"kishore":[30,0,0.0],"kolbey":[237,22,0.4417],"kooper":[3793,352,0.6621],"kreighton":[78,0,0.0],"kurosh":[11,0,0.0],"kutter":[579,0,0.5525],"kwuan":[5,0,0.0],"kyosuke":[5,0,0.0],"kywan":[31,0,0.0],"labryant":[23,0,0.0],"laryan":[32,0,0.0],"lason":[131,0,0.4235],"latravious":[170,0,0.4461],"leomar":[186,0,0.4539],"luccas":[347,0,0.5081],"lui":[156,0,0.4386],"macaulay":[249,15,0.4568],"macolm":[18,0,0.0],"manjot":[141,95,0.2835],"marcangelo":[22,0,0.0],"mardochee":[46,0,0.0],"markail":[62,0,0.0],"markallen":[10,0,0.0],"markeys":[5,0,0.0],"martrail":[5,0,0.0],"martrez":[26,0,0.0],"marvins":[39,0,0.0],"micquel":[5,0,0.0],"montarious":[16,0,0.0],"montrae":[76,0,0.0],"mordechi":[5,0,0.0],"naadir":[22,0,0.0],"nahun":[127,0,0.4208],"naithan":[280,0,0.4894],"natanel":[251,0,0.4799],"nayan":[550,5,0.5439],"neilpatrick":[15,0,0.0],"neo":[2906,6,0.6914],"nijee":[63,0,0.0],"odai":[127,0,0.4208],"oladele":[5,0,0.0],"olajuwan":[12,0,0.0],"pabel":[22,0,0.0],"pesach":[129,0,0.4221],"presten":[600,0,0.5556],"queston":[10,0,0.0],"quinshawn":[44,0,0.0],"quinterrius":[117,0,0.4136],"quintrel":[20,0,0.0],"rabi":[12,0,0.0],"rabih":[30,0,0.0],"raevon":[122,11,0.3896],"rameel":[5,0,0.0],"raschad":[5,0,0.0],"rayshod":[26,0,0.0],"reiss":[199,64,0.3662],"riky":[35,0,0.0],"rilwan":[10,0,0.0],"rodick":[5,0,0.0],"roget":[5,0,0.0],"rohman":[10,0,0.0],"ryanpatrick":[5,0,0.0],"ryoma":[85,0,0.0],"saahil":[382,0,0.5164],"samuela":[42,45,0.0],"samuelle":[39,11,0.0],"sevin":[490,122,0.4462],"seyha":[5,0,0.0],"shaba":[5,0,0.0],"shahnawaz":[5,0,0.0],"shahriar":[21,0,0.0],"shameer":[133,0,0.4248],"shantanu":[69,0,0.0],"shintaro":[26,0,0.0],"sime":[5,0,0.0],"slate":[815,0,0.5822],"stanson":[5,0,0.0],"stavon":[29,0,0.0],"tahji":[157,0,0.4392],"taivon":[277,0,0.4885],"tajon":[315,0,0.4997],"tajudeen":[5,0,0.0],"tanveer":[148,37,0.3627],"taylen":[2065,1192,0.4454],"tayquan":[270,0,0.4863],"tiandre":[66,0,0.0],"tirelle":[5,0,0.0],"tradarius":[119,0,0.4151],"travante":[73,0,0.0],"travontae":[165,0,0.4435],"trevares":[5,0,0.0],"trevian":[452,0,0.531],"treyson":[1940,0,0.6576],"trillion":[143,0,0.4311],"tychicus":[28,0,0.0],"tyheim":[202,0,0.4611],"tykwan":[49,0,0.0],"tymar":[69,0,0.0],"tyriece":[49,0,0.0],"tyski":[5,0,0.0],"uzair":[625,0,0.5592],"vasken":[5,0,0.0],"vontez":[43,0,0.0],"waldy":[22,0,0.0],"wilver":[195,0,0.458],"xachary":[148,0,0.4341],"xander":[38928,68,0.9166],"xazier":[46,0,0.0],"yeshayahu":[31,0,0.0],"yishai":[413,0,0.5232],"yoshiki":[22,0,0.0],"zaccaria":[10,0,0.0],"zacery":[17,0,0.0],"zachaery":[10,0,0.0],"zaher":[10,0,0.0],"zakir":[584,0,0.5533],"zamar":[594,6,0.5501],"emilce":[0,64,0.0],"symba":[7,35,0.0],"liridona":[0,73,0.0],"trane":[0,54,0.0],"ariah":[76,11210,0.8051],"alaetra":[0,28,0.0],"emilse":[0,35,0.0],"maleny":[0,531,0.545],"beija":[0,40,0.0],"shelbylynn":[0,139,0.4286],"berlynn":[0,511,0.5417],"shykela":[0,27,0.0],"arantxa":[0,549,0.5479],"braelyn":[1302,10746,0.728],"deangelis":[0,13,0.0],"jeniqua":[0,13,0.0],"jodeci":[444,412,0.3042],"khalea":[0,407,0.5219],"marimar":[0,322,0.5016],"niza":[0,143,0.4311],"paije":[0,232,0.4731],"shakilya":[0,52,0.0],"tariah":[0,753,0.5754],"trany":[0,396,0.5195],"briawna":[0,115,0.4121],"malynn":[0,199,0.4598],"samanthamarie":[0,68,0.0],"taquasha":[0,45,0.0],"aranza":[0,3251,0.7024],"chelbi":[0,129,0.4221],"denasia":[0,715,0.5709],"maleni":[0,895,0.5904],"maritssa":[0,82,0.0],"miraya":[0,896,0.5905],"shelbea":[0,54,0.0],"sheraine":[0,16,0.0],"shyniqua":[0,11,0.0],"starleana":[0,11,0.0],"taqiyya":[0,11,0.0],"aireona":[0,212,0.4653],"aminat":[0,80,0.0],"calleigh":[0,2240,0.67],"chandani":[0,96,0.0],"emelin":[0,840,0.5849],"fatoumata":[0,2441,0.6775],"infantof":[57,67,0.2262],"karent":[0,16,0.0],"katherinne":[0,161,0.4414],"lashanique":[0,35,0.0],"lizbett":[0,109,0.4075],"monzerrat":[5,559,0.5454],"nariah":[0,3388,0.706],"shaniqa":[0,25,0.0],"shaquell":[40,49,0.0],"shyane":[0,316,0.4999],"taylee":[0,2091,0.6641],"tekeyah":[0,89,0.0],"avina":[0,390,0.5182],"azhia":[0,88,0.0],"brehana":[0,28,0.0],"breuna":[0,157,0.4392],"brylee":[491,10908,0.7764],"cashe":[58,68,0.2267],"chakayla":[0,59,0.0],"daeja":[0,745,0.5744],"giavanni":[112,316,0.3886],"ieishia":[0,9,0.0],"ishara":[0,83,0.0],"iyisha":[0,9,0.0],"kaele":[0,43,0.0],"mackenzee":[0,812,0.5819],"maddisen":[0,545,0.5473],"makiah":[498,2224,0.5613],"marangely":[0,32,0.0],"matracia":[0,9,0.0],"meckenzie":[0,179,0.4506],"miriya":[0,153,0.4369],"miryah":[0,71,0.0],"shakeelah":[0,28,0.0],"sierah":[0,203,0.4615],"taylorann":[0,276,0.4882],"teerica":[0,44,0.0],"tyniqua":[0,56,0.0],"aiza":[0,1879,0.6548],"annecia":[0,26,0.0],"astoria":[0,644,0.5618],"aubreanna":[0,457,0.532],"aubrielle":[0,4951,0.7389],"ayrian":[12,28,0.0],"biancca":[0,25,0.0],"cenedra":[0,45,0.0],"dalecia":[0,24,0.0],"dashayla":[0,207,0.4632],"deashia":[0,280,0.4894],"dejanira":[0,100,0.4],"dyneisha":[0,70,0.0],"elandra":[0,66,0.0],"fanci":[0,15,0.0],"frania":[0,25,0.0],"franshesca":[0,73,0.0],"frantasia":[0,47,0.0],"havanna":[0,619,0.5583],"iashia":[0,13,0.0],"jahne":[0,98,0.0],"jaquasia":[0,116,0.4129],"jisselle":[0,428,0.5263],"kaelea":[0,104,0.4034],"kahlee":[48,98,0.2906],"keasia":[0,1699,0.646],"keishara":[0,19,0.0],"kelce":[87,187,0.3327],"keyawna":[0,31,0.0],"knesha":[0,8,0.0],"korryn":[0,369,0.5134],"laikin":[5,63,0.0],"lariah":[0,1214,0.6168],"maisey":[0,1056,0.6047],"mauriah":[0,170,0.4461],"mekenna":[0,404,0.5213],"mirabella":[0,1254,0.6197],"mishaela":[0,33,0.0],"mytia":[0,18,0.0],"nichollette":[0,25,0.0],"nysha":[0,356,0.5103],"nzingha":[0,56,0.0],"polina":[0,1286,0.6218],"raeisha":[0,19,0.0],"raenisha":[0,20,0.0],"rubit":[0,19,0.0],"sacoria":[0,19,0.0],"shanecqua":[0,15,0.0],"shanikque":[0,8,0.0],"shardonnay":[0,26,0.0],"shawnece":[0,18,0.0],"shellbie":[0,57,0.0],"stevana":[0,69,0.0],"sundus":[0,612,0.5574],"tailer":[15,193,0.4302],"tanazia":[0,111,0.4091],"tatayana":[0,210,0.4644],"tenasia":[0,80,0.0],"tiaja":[0,140,0.4292],"zuzanna":[0,691,0.5679],"aeshia":[0,7,0.0],"amoni":[267,1413,0.5425],"anayely":[0,245,0.4778],"andriel":[181,31,0.3972],"aniyah":[5,30569,0.8969],"anneisha":[0,20,0.0],"antoinique":[0,25,0.0],"ariyana":[0,3372,0.7056],"aryonna":[0,623,0.5589],"atasia":[0,22,0.0],"aurianna":[0,723,0.5718],"brenesha":[0,37,0.0],"breshay":[0,104,0.4034],"brinesha":[0,29,0.0],"caitlyne":[0,86,0.0],"carys":[0,2295,0.6722],"charay":[0,18,0.0],"chazlyn":[0,110,0.4083],"cyrielle":[0,7,0.0],"darnishia":[0,7,0.0],"dashanae":[0,160,0.4408],"dashara":[0,35,0.0],"deericka":[0,49,0.0],"deiondra":[0,83,0.0],"dejana":[0,172,0.4471],"delyssa":[0,17,0.0],"demira":[0,84,0.0],"dessica":[0,7,0.0],"diasia":[0,178,0.4501],"dyamon":[0,64,0.0],"emina":[0,741,0.574],"emonie":[14,1025,0.5952],"esraa":[0,224,0.47],"gabrianna":[0,491,0.5382],"gimena":[0,524,0.5439],"haely":[0,226,0.4708],"jabrea":[0,310,0.4983],"jacquesha":[0,12,0.0],"jaquela":[0,41,0.0],"jasiman":[0,7,0.0],"jasmonique":[0,26,0.0],"jontavia":[0,74,0.0],"justinne":[0,13,0.0],"kariah":[0,509,0.5413],"katyann":[0,7,0.0],"kelbie":[0,281,0.4897],"keyri":[0,617,0.5581],"khelsea":[0,58,0.0],"kieyana":[0,18,0.0],"kloe":[0,3265,0.7028],"kristela":[0,7,0.0],"kyasha":[0,40,0.0],"kyasia":[0,796,0.5802],"kylar":[2017,1012,0.4636],"lacreesha":[0,13,0.0],"lamees":[0,511,0.5417],"lamira":[0,110,0.4083],"laprincia":[0,60,0.0],"laraven":[0,47,0.0],"latiara":[0,31,0.0],"laykin":[60,549,0.5021],"lillybeth":[0,76,0.0],"logen":[1308,168,0.5617],"lusine":[0,123,0.418],"mahwish":[0,12,0.0],"maliah":[0,5270,0.7444],"maricka":[0,12,0.0],"marishka":[0,87,0.0],"mercadies":[0,148,0.4341],"mikiah":[136,454,0.4264],"milani":[10,10575,0.8042],"miyoka":[0,7,0.0],"mor":[5,14,0.0],"mykelle":[5,109,0.3933],"nakela":[0,7,0.0],"nayara":[0,348,0.5083],"nikhita":[0,265,0.4846],"nykeshia":[0,13,0.0],"paizley":[0,1399,0.6292],"phantasia":[0,59,0.0],"quadira":[0,35,0.0],"raelin":[5,774,0.5746],"rakeia":[0,12,0.0],"rashayla":[0,18,0.0],"rayisha":[0,7,0.0],"reaghan":[0,1105,0.6087],"rhonesha":[0,7,0.0],"rumer":[0,69,0.0],"sabeena":[0,7,0.0],"shambre":[0,24,0.0],"shanesia":[0,14,0.0],"shanquell":[0,7,0.0],"shantora":[0,7,0.0],"sharniqua":[0,12,0.0],"shatae":[0,7,0.0],"shayann":[0,157,0.4392],"shikela":[0,14,0.0],"symmone":[0,22,0.0],"takala":[0,60,0.0],"tranessa":[0,7,0.0],"triscilla":[0,7,0.0],"tykera":[0,179,0.4506],"tyshana":[0,67,0.0],"uniquea":[0,19,0.0],"valancia":[0,7,0.0],"vasthi":[0,13,0.0],"wachovia":[0,7,0.0],"yexenia":[0,12,0.0],"zaakirah":[0,69,0.0],"adalisa":[0,6,0.0],"ailish":[0,647,0.5622],"akyra":[0,658,0.5636],"allexus":[0,212,0.4653],"alyncia":[0,16,0.0],"alyona":[0,307,0.4974],"amala":[0,310,0.4983],"amandine":[0,66,0.0],"ambriana":[0,73,0.0],"amunique":[0,114,0.4114],"anagabriel":[0,6,0.0],"anallely":[0,220,0.4685],"analysia":[0,241,0.4764],"andreniki":[0,14,0.0],"angelisha":[0,6,0.0],"annaelizabeth":[0,26,0.0],"annalysia":[0,191,0.4562],"annicia":[0,6,0.0],"antoiniece":[0,6,0.0],"arelly":[0,298,0.4948],"ariam":[62,468,0.4811],"arisbeth":[0,1711,0.6467],"arleth":[5,5680,0.7503],"arreanna":[0,21,0.0],"asli":[0,390,0.5182],"ayzia":[0,140,0.4292],"beonica":[0,12,0.0],"betzabeth":[0,372,0.5141],"brentnie":[0,6,0.0],"briania":[0,33,0.0],"bryelle":[0,622,0.5588],"bryttnii":[0,6,0.0],"carolyna":[0,178,0.4501],"caterin":[0,171,0.4466],"cellina":[0,20,0.0],"chayenne":[0,51,0.0],"chazmine":[0,35,0.0],"chealsy":[0,37,0.0],"cheyane":[0,174,0.4481],"cirsten":[0,42,0.0],"cynamon":[0,11,0.0],"dajanique":[0,204,0.4619],"dami":[0,11,0.0],"danashia":[0,158,0.4397],"daveisha":[0,6,0.0],"derekia":[0,6,0.0],"deshala":[0,33,0.0],"diamante":[643,257,0.4221],"elishah":[233,27,0.4328],"emeri":[127,2378,0.6453],"erandy":[0,372,0.5141],"felisity":[0,23,0.0],"gabrieal":[21,18,0.0],"gavriella":[0,376,0.515],"genecis":[0,234,0.4738],"hillaree":[0,19,0.0],"idali":[0,274,0.4876],"indiah":[0,198,0.4593],"izabelle":[0,4531,0.7312],"jamiqua":[0,6,0.0],"janada":[0,6,0.0],"janaea":[0,43,0.0],"janiera":[0,6,0.0],"jaquae":[93,6,0.0],"jaquayla":[0,107,0.4059],"jasminemarie":[0,93,0.0],"javae":[41,137,0.3464],"jaylen":[39984,5010,0.827],"jaymisha":[0,6,0.0],"jeanessa":[0,17,0.0],"jeaneth":[0,35,0.0],"jeovanna":[0,23,0.0],"jerricca":[0,6,0.0],"jolicia":[0,62,0.0],"jomanda":[0,27,0.0],"jonnisha":[0,26,0.0],"jordynne":[0,219,0.4681],"jorgia":[0,397,0.5198],"joslyne":[0,71,0.0],"joslynne":[0,145,0.4323],"juhi":[0,385,0.5171],"kaeyla":[0,17,0.0],"kamishia":[0,6,0.0],"kanwal":[0,40,0.0],"kaylinda":[0,16,0.0],"keali":[0,65,0.0],"kellsi":[0,18,0.0],"keneasha":[0,6,0.0],"keshay":[0,58,0.0],"kiaundra":[0,35,0.0],"kinzey":[0,447,0.5301],"kiyah":[0,2348,0.6741],"klorissa":[0,11,0.0],"krisana":[0,6,0.0],"kristilee":[0,6,0.0],"kylisha":[0,34,0.0],"kylyn":[141,391,0.4007],"lakiera":[0,35,0.0],"lanasia":[0,397,0.5198],"larresha":[0,17,0.0],"latericka":[0,6,0.0],"lativa":[0,6,0.0],"laurennicole":[0,6,0.0],"leen":[0,1657,0.6439],"leosha":[0,31,0.0],"lianette":[0,101,0.4009],"liany":[0,284,0.4907],"lyasia":[0,48,0.0],"lynasia":[0,76,0.0],"lynnesha":[0,11,0.0],"maisy":[0,3841,0.7169],"makelle":[0,147,0.4335],"makenzy":[0,1470,0.6335],"malaysha":[0,516,0.5425],"maleena":[0,901,0.5909],"maleigha":[0,1461,0.6329],"mareisha":[0,11,0.0],"marquessa":[0,18,0.0],"marshai":[0,49,0.0],"meital":[0,129,0.4221],"mercedi":[0,6,0.0],"miara":[0,227,0.4712],"miryea":[0,6,0.0],"misaki":[0,260,0.483],"monasia":[0,142,0.4305],"moniesha":[0,34,0.0],"moryah":[0,16,0.0],"mykea":[0,55,0.0],"mylia":[0,382,0.5164],"myracle":[0,1323,0.6243],"naquelle":[0,6,0.0],"natalija":[0,235,0.4742],"natazia":[0,25,0.0],"natsuki":[0,28,0.0],"neethu":[0,12,0.0],"nikala":[0,113,0.4106],"niloufar":[0,49,0.0],"parys":[5,313,0.4926],"quanteria":[0,58,0.0],"quartney":[0,35,0.0],"quatasia":[0,55,0.0],"raiesha":[0,6,0.0],"randisha":[0,17,0.0],"reniqua":[0,6,0.0],"rhya":[0,322,0.5016],"rhyanna":[0,340,0.5063],"rodrika":[0,6,0.0],"rubab":[0,48,0.0],"rukayat":[0,11,0.0],"rylea":[0,1090,0.6075],"ryli":[0,720,0.5715],"saarah":[0,241,0.4764],"saesha":[0,193,0.4571],"sandibel":[0,6,0.0],"santangela":[0,6,0.0],"satavia":[0,6,0.0],"saydi":[0,463,0.5331],"schelby":[0,32,0.0],"semetria":[0,6,0.0],"shabrie":[0,6,0.0],"shaima":[0,271,0.4866],"shakana":[0,6,0.0],"shamber":[0,6,0.0],"shamonte":[17,22,0.0],"shanaira":[0,11,0.0],"sharaea":[0,6,0.0],"sharana":[0,6,0.0],"sharmeta":[0,6,0.0],"shaunea":[0,6,0.0],"shavante":[0,32,0.0],"shelbylyn":[0,21,0.0],"shenade":[0,6,0.0],"sherayne":[0,6,0.0],"shykila":[0,18,0.0],"skylah":[0,2834,0.6905],"stephenee":[0,6,0.0],"sunaina":[0,130,0.4228],"sury":[0,1458,0.6328],"susel":[0,6,0.0],"syndal":[0,12,0.0],"synia":[0,420,0.5246],"taelar":[0,63,0.0],"taime":[0,11,0.0],"taleya":[0,289,0.4922],"tasheria":[0,6,0.0],"taylr":[0,80,0.0],"tayona":[0,154,0.4375],"tazmin":[5,18,0.0],"tearah":[0,63,0.0],"tearza":[0,30,0.0],"tiante":[5,16,0.0],"timeisha":[0,16,0.0],"tiniqua":[0,6,0.0],"tiy":[0,6,0.0],"tkia":[0,52,0.0],"traniqua":[0,20,0.0],"trier":[0,6,0.0],"trinicia":[0,6,0.0],"tylah":[0,637,0.5608],"tyquasia":[0,84,0.0],"tyteanna":[0,154,0.4375],"vidhi":[0,548,0.5478],"wayneisha":[0,50,0.0],"xiana":[0,379,0.5157],"xuxa":[0,29,0.0],"yaasmeen":[0,18,0.0],"yalissa":[0,134,0.4254],"yannette":[0,6,0.0],"yiesha":[0,6,0.0],"ysabella":[0,1969,0.6588],"yuritza":[0,339,0.506],"yurivia":[0,6,0.0],"zafiro":[0,89,0.0],"zitlali":[0,430,0.5267],"aaminah":[0,517,0.5427],"adely":[0,201,0.4606],"adesha":[0,5,0.0],"adriauna":[0,248,0.4789],"aireanna":[0,319,0.5008],"alainah":[0,514,0.5422],"aleatra":[0,5,0.0],"alexondra":[0,54,0.0],"aleyah":[0,2686,0.6858],"alleisha":[0,5,0.0],"allexa":[0,102,0.4017],"alnesha":[0,5,0.0],"amandarose":[0,15,0.0],"amane":[0,50,0.0],"amarpreet":[0,5,0.0],"amayrani":[0,740,0.5738],"ambir":[0,5,0.0],"ambrey":[0,51,0.0],"ambrie":[0,159,0.4403],"amneh":[0,33,0.0],"anaily":[0,83,0.0],"analuz":[0,67,0.0],"anarose":[0,79,0.0],"andraia":[0,10,0.0],"andrenika":[0,11,0.0],"andrenique":[0,12,0.0],"andriah":[0,15,0.0],"angelicamarie":[0,29,0.0],"angelissa":[0,70,0.0],"angelleah":[0,11,0.0],"angelyca":[0,26,0.0],"annam":[0,21,0.0],"anquetta":[0,5,0.0],"anslie":[0,255,0.4813],"antanique":[0,36,0.0],"antonae":[0,89,0.0],"antonesha":[0,52,0.0],"arianny":[0,1911,0.6563],"arielis":[0,339,0.506],"ariya":[30,6890,0.7647],"arooj":[0,32,0.0],"arpi":[0,170,0.4461],"arpine":[0,10,0.0],"arriona":[0,111,0.4091],"artasia":[0,199,0.4598],"aryal":[0,38,0.0],"ashanique":[0,17,0.0],"ashay":[29,27,0.0],"ashelyn":[0,290,0.4925],"ashilee":[0,5,0.0],"asianna":[0,382,0.5164],"assia":[0,70,0.0],"aubriel":[0,350,0.5088],"aundreya":[0,132,0.4241],"austria":[0,17,0.0],"ayja":[0,16,0.0],"ayomide":[638,471,0.3503],"azlyn":[0,908,0.5916],"bani":[0,270,0.4863],"batoul":[0,393,0.5189],"biyanca":[0,5,0.0],"blakney":[0,5,0.0],"brandais":[0,5,0.0],"brandisha":[0,5,0.0],"brayana":[0,55,0.0],"breahnna":[0,16,0.0],"brealyn":[0,184,0.453],"breannia":[0,49,0.0],"breaun":[5,16,0.0],"breegan":[0,11,0.0],"breiona":[0,88,0.0],"brekka":[0,5,0.0],"brindi":[0,11,0.0],"britnai":[0,5,0.0],"brookeann":[0,5,0.0],"brynesha":[0,15,0.0],"brytnie":[0,23,0.0],"calsey":[0,12,0.0],"calypso":[0,438,0.5283],"careena":[0,60,0.0],"carleshia":[0,11,0.0],"carlishia":[0,5,0.0],"catara":[0,23,0.0],"cerah":[0,38,0.0],"ceren":[0,52,0.0],"chaelyn":[0,75,0.0],"chalisse":[0,5,0.0],"chandace":[0,5,0.0],"charkita":[0,5,0.0],"charlyse":[0,55,0.0],"charnaye":[0,5,0.0],"charneka":[0,5,0.0],"charvae":[0,11,0.0],"chavonte":[0,5,0.0],"chazity":[0,56,0.0],"chelseay":[0,12,0.0],"chelsen":[0,5,0.0],"chequetta":[0,5,0.0],"cheyenn":[0,15,0.0],"chrishaunda":[0,5,0.0],"christyanna":[0,106,0.4051],"cidnee":[0,56,0.0],"connelly":[117,230,0.3368],"constandina":[0,5,0.0],"corutney":[0,5,0.0],"crea":[0,11,0.0],"curstin":[0,77,0.0],"dalanna":[0,15,0.0],"dameika":[0,5,0.0],"danesia":[0,26,0.0],"danniela":[0,154,0.4375],"danyela":[0,223,0.4697],"danysha":[0,36,0.0],"daritza":[0,159,0.4403],"darquisha":[0,5,0.0],"darricka":[0,46,0.0],"dashawnna":[0,20,0.0],"dashima":[0,5,0.0],"dasja":[0,77,0.0],"datia":[0,5,0.0],"davasha":[0,5,0.0],"dayane":[0,105,0.4042],"daynah":[0,58,0.0],"dazia":[0,331,0.504],"deangel":[0,33,0.0],"deirra":[0,16,0.0],"dekayla":[0,295,0.494],"delasha":[0,5,0.0],"denasha":[0,40,0.0],"deniecia":[0,5,0.0],"deprise":[0,22,0.0],"deshira":[0,22,0.0],"desteni":[0,192,0.4567],"destoni":[0,38,0.0],"deysha":[0,114,0.4114],"dilma":[0,26,0.0],"diya":[12,4959,0.7375],"donniesha":[0,34,0.0],"dylann":[381,890,0.4347],"dynasti":[0,495,0.5389],"eimile":[0,28,0.0],"ellaina":[0,624,0.559],"emali":[0,98,0.0],"emeralda":[0,5,0.0],"enesha":[0,5,0.0],"eritrea":[0,11,0.0],"estafania":[0,12,0.0],"estephani":[0,174,0.4481],"esthefania":[0,17,0.0],"esti":[0,207,0.4632],"eunika":[0,10,0.0],"eureeka":[0,5,0.0],"faleisha":[0,5,0.0],"faryal":[0,144,0.4317],"fatou":[0,1167,0.6134],"fatuma":[0,577,0.5522],"feleisha":[0,5,0.0],"flerida":[0,5,0.0],"floridalma":[0,59,0.0],"fontana":[0,10,0.0],"genesi":[0,174,0.4481],"genovieve":[0,5,0.0],"gerlisa":[0,5,0.0],"giorgia":[0,484,0.537],"haruna":[0,72,0.0],"heavan":[0,156,0.4386],"hennessy":[62,1531,0.6155],"hollin":[20,102,0.3489],"hui":[0,30,0.0],"ieysha":[0,5,0.0],"ifrah":[0,318,0.5005],"iishia":[0,5,0.0],"ilesha":[0,17,0.0],"ilianne":[0,5,0.0],"imesha":[0,10,0.0],"imoni":[0,563,0.5501],"imonie":[0,95,0.0],"infiniti":[0,444,0.5295],"ireal":[0,5,0.0],"ireon":[5,15,0.0],"irielle":[0,76,0.0],"isamary":[0,34,0.0],"isatou":[0,326,0.5026],"iya":[0,398,0.52],"iyeisha":[0,5,0.0],"iyeshia":[0,15,0.0],"iyshia":[0,5,0.0],"jaalah":[0,42,0.0],"jacquece":[0,5,0.0],"jadin":[1527,643,0.4696],"jaiden":[32838,8254,0.7374],"jakelyn":[0,365,0.5125],"jamikka":[0,5,0.0],"jamya":[0,5548,0.7488],"janacia":[0,22,0.0],"jasalyn":[0,202,0.4611],"jashauna":[0,45,0.0],"jasmarie":[0,217,0.4673],"jasmil":[0,5,0.0],"jassmyn":[0,38,0.0],"jaterra":[0,11,0.0],"javia":[0,270,0.4863],"jazimine":[0,16,0.0],"jazmone":[0,5,0.0],"jemi":[0,17,0.0],"jenessia":[0,5,0.0],"jericia":[0,5,0.0],"jerrisha":[0,17,0.0],"jete":[0,5,0.0],"jewelya":[0,29,0.0],"jiesha":[0,5,0.0],"jihae":[0,5,0.0],"jimisha":[0,26,0.0],"jimmesha":[0,12,0.0],"jing":[22,125,0.3686],"jocalyn":[0,55,0.0],"joelissa":[0,5,0.0],"johnai":[0,10,0.0],"johnise":[0,37,0.0],"jonnika":[0,10,0.0],"jordahn":[0,5,0.0],"jordian":[0,27,0.0],"joscelynn":[0,164,0.443],"julysa":[0,58,0.0],"kalai":[227,67,0.3812],"kallye":[0,5,0.0],"kamiesha":[0,17,0.0],"kanna":[0,264,0.4843],"karalin":[0,5,0.0],"kareli":[0,477,0.5357],"kariel":[35,77,0.2818],"karlei":[0,302,0.496],"kasumi":[0,109,0.4075],"kaylenn":[0,116,0.4129],"kd":[0,35,0.0],"kearria":[0,10,0.0],"kearstan":[0,5,0.0],"kelaiah":[0,268,0.4856],"kelana":[0,46,0.0],"kemari":[1505,522,0.4911],"kemeisha":[0,5,0.0],"kendriana":[0,22,0.0],"kenleigh":[0,2201,0.6685],"kenshia":[0,5,0.0],"kensy":[0,172,0.4471],"kentavia":[0,35,0.0],"kerris":[0,49,0.0],"kerstan":[0,33,0.0],"keynu":[0,5,0.0],"keyonah":[0,53,0.0],"khadeejah":[0,239,0.4757],"khaila":[0,443,0.5293],"khelsey":[0,25,0.0],"khirsten":[0,10,0.0],"khyra":[0,440,0.5287],"kiandrea":[0,18,0.0],"kiarrah":[0,205,0.4624],"kierica":[0,5,0.0],"kiniesha":[0,5,0.0],"kionne":[39,15,0.0],"klair":[0,201,0.4606],"kneisha":[0,5,0.0],"kriti":[0,501,0.54],"krystell":[0,46,0.0],"kubra":[0,27,0.0],"kursti":[0,5,0.0],"kwaniqua":[0,5,0.0],"kymeshia":[0,5,0.0],"kyrsta":[0,5,0.0],"kyshana":[0,5,0.0],"ladashia":[0,79,0.0],"ladasia":[0,239,0.4757],"laeisha":[0,10,0.0],"lakken":[0,25,0.0],"lapresha":[0,11,0.0],"larecia":[0,5,0.0],"larriesha":[0,5,0.0],"lashanay":[0,10,0.0],"lashley":[0,5,0.0],"latazia":[0,43,0.0],"lateaka":[0,5,0.0],"latevia":[0,5,0.0],"laurenne":[0,15,0.0],"leaira":[0,200,0.4602],"leaundra":[0,22,0.0],"leighia":[0,5,0.0],"leily":[0,171,0.4466],"lexxus":[0,229,0.472],"lianabel":[0,5,0.0],"liara":[0,721,0.5716],"lizbette":[0,39,0.0],"lizvet":[0,62,0.0],"londan":[0,162,0.4419],"loriell":[0,5,0.0],"macauley":[254,30,0.4388],"mahlia":[0,597,0.5552],"makara":[0,212,0.4653],"makinzee":[0,197,0.4589],"malikka":[0,10,0.0],"malira":[0,5,0.0],"manveer":[231,10,0.4566],"maricza":[0,36,0.0],"marielos":[0,10,0.0],"mariss":[0,10,0.0],"marquinta":[0,5,0.0],"marysabel":[0,5,0.0],"mauresha":[0,39,0.0],"mayline":[0,121,0.4166],"mayuko":[0,26,0.0],"mckinzi":[0,116,0.4129],"mckinzy":[0,139,0.4286],"mekensie":[0,5,0.0],"melayna":[0,530,0.5449],"memoree":[0,26,0.0],"mercedas":[0,5,0.0],"mersadees":[0,5,0.0],"mersadez":[0,97,0.0],"meyanna":[0,5,0.0],"meygan":[0,125,0.4194],"michellele":[0,5,0.0],"miciah":[285,245,0.293],"mikalia":[0,88,0.0],"milesha":[0,10,0.0],"mirage":[5,127,0.408],"miraha":[0,5,0.0],"mirandah":[0,56,0.0],"mirsha":[0,10,0.0],"mollyanne":[0,26,0.0],"montesha":[0,12,0.0],"monyae":[5,58,0.0],"muniza":[0,5,0.0],"murissa":[0,10,0.0],"myana":[0,547,0.5476],"mychaela":[0,362,0.5117],"myshell":[0,20,0.0],"naeisha":[0,5,0.0],"nagwa":[0,10,0.0],"nahid":[12,23,0.0],"nakeyta":[0,5,0.0],"nakirah":[0,27,0.0],"nakota":[235,143,0.3205],"nanea":[0,224,0.47],"nanor":[0,5,0.0],"nansy":[0,11,0.0],"narasha":[0,5,0.0],"niajah":[0,159,0.4403],"nimmy":[0,5,0.0],"nkao":[0,5,0.0],"nyashia":[0,256,0.4816],"nygeria":[0,171,0.4466],"nyjah":[803,624,0.355],"parise":[0,5,0.0],"patrycja":[0,227,0.4712],"phoung":[0,5,0.0],"pracilla":[0,5,0.0],"purity":[0,350,0.5088],"quala":[0,10,0.0],"qualesha":[0,5,0.0],"quamesha":[0,68,0.0],"quaniqua":[0,26,0.0],"quantesha":[0,11,0.0],"quashana":[0,16,0.0],"quayshawn":[172,5,0.4369],"queenasia":[0,16,0.0],"quineka":[0,5,0.0],"quintesa":[0,5,0.0],"qunesha":[0,26,0.0],"qwanisha":[0,23,0.0],"rachelleanne":[0,5,0.0],"raevyn":[0,890,0.5899],"ragini":[0,21,0.0],"rakell":[0,55,0.0],"rakelle":[0,21,0.0],"randesha":[0,5,0.0],"rashael":[0,10,0.0],"rashondra":[0,5,0.0],"raveena":[0,324,0.5021],"ravene":[0,13,0.0],"ravensimone":[0,11,0.0],"rayneshia":[0,12,0.0],"rayshawnda":[0,5,0.0],"rebeccaann":[0,16,0.0],"reginae":[0,826,0.5834],"reiley":[324,618,0.3902],"reshana":[0,5,0.0],"rheann":[0,55,0.0],"rictoria":[0,5,0.0],"rileigh":[50,3807,0.708],"robinique":[0,13,0.0],"rodneka":[0,11,0.0],"ronshay":[0,5,0.0],"rosmeri":[0,75,0.0],"rukmini":[0,46,0.0],"sahana":[0,2768,0.6884],"sajeda":[0,5,0.0],"sakiya":[0,238,0.4753],"samsara":[0,52,0.0],"schanelle":[0,5,0.0],"shacoyia":[0,11,0.0],"shaden":[305,248,0.3025],"shadiamond":[0,373,0.5143],"shadira":[0,5,0.0],"shadricka":[0,16,0.0],"shaelie":[0,47,0.0],"shailene":[0,256,0.4816],"shakeyra":[0,34,0.0],"shakiva":[0,5,0.0],"shakiyah":[0,277,0.4885],"shakria":[0,5,0.0],"shaliqua":[0,5,0.0],"shambreka":[0,16,0.0],"shameya":[0,21,0.0],"shamill":[0,5,0.0],"shanaria":[0,39,0.0],"shandella":[0,5,0.0],"shanekqa":[0,5,0.0],"shaneqa":[0,10,0.0],"shanequea":[0,5,0.0],"shanli":[0,5,0.0],"shantle":[0,5,0.0],"shaqulia":[0,10,0.0],"shaqwanna":[0,5,0.0],"sharielle":[0,5,0.0],"sharly":[0,5,0.0],"sharmae":[0,5,0.0],"shateya":[0,5,0.0],"shaunay":[0,5,0.0],"shauniqua":[0,19,0.0],"shavera":[0,5,0.0],"shayleigh":[0,782,0.5786],"shayvon":[5,28,0.0],"shellbe":[0,5,0.0],"shelsie":[0,88,0.0],"shennel":[0,5,0.0],"shenoah":[0,13,0.0],"shequanna":[0,5,0.0],"sheriden":[0,64,0.0],"shikeyla":[0,5,0.0],"shnea":[0,5,0.0],"shykeria":[0,80,0.0],"shytavia":[0,15,0.0],"siani":[0,1125,0.6102],"sinnamon":[0,5,0.0],"sohaila":[0,16,0.0],"stamatina":[0,5,0.0],"stephanni":[0,5,0.0],"suhaylah":[0,322,0.5016],"sukhmani":[0,251,0.4799],"sulia":[0,5,0.0],"sumaiya":[0,572,0.5515],"sundas":[0,31,0.0],"synthea":[0,10,0.0],"taaj":[84,5,0.0],"tais":[0,409,0.5223],"takerra":[0,61,0.0],"talaina":[0,10,0.0],"taliya":[0,1080,0.6067],"tamiah":[0,799,0.5805],"tandice":[0,5,0.0],"taneah":[0,68,0.0],"taneiqua":[0,5,0.0],"taneria":[0,15,0.0],"taneysha":[0,5,0.0],"taquasia":[0,44,0.0],"tareyn":[0,5,0.0],"tationna":[0,152,0.4364],"tayelor":[0,170,0.4461],"tayja":[0,172,0.4471],"taylah":[0,659,0.5638],"tayllor":[0,131,0.4235],"te":[0,10,0.0],"teiarra":[0,5,0.0],"temima":[0,251,0.4799],"terrae":[0,15,0.0],"terrianna":[0,387,0.5175],"tianamarie":[0,10,0.0],"tiericka":[0,5,0.0],"tiesa":[0,5,0.0],"tikyra":[0,5,0.0],"tirah":[0,30,0.0],"tishay":[0,5,0.0],"tkara":[0,5,0.0],"tkayah":[0,5,0.0],"tonnesha":[0,11,0.0],"tonysha":[0,18,0.0],"torianne":[0,78,0.0],"tornisha":[0,5,0.0],"trayana":[0,45,0.0],"trishanna":[0,15,0.0],"trysten":[1410,285,0.5372],"tyanah":[0,53,0.0],"tychell":[0,10,0.0],"tyiana":[0,160,0.4408],"tynae":[0,57,0.0],"tynasha":[0,28,0.0],"tyneeka":[0,5,0.0],"tynequa":[0,37,0.0],"typhanie":[0,15,0.0],"tyshekia":[0,5,0.0],"uniquia":[0,25,0.0],"vaitiare":[0,5,0.0],"vananh":[0,10,0.0],"vandrea":[0,5,0.0],"vaniecia":[0,5,0.0],"vashni":[0,5,0.0],"verneisha":[0,5,0.0],"victorialynn":[0,22,0.0],"vineisha":[0,5,0.0],"virdiana":[0,15,0.0],"vonisha":[0,5,0.0],"vyctoria":[0,163,0.4424],"wakana":[0,25,0.0],"whitlie":[0,5,0.0],"wilesha":[0,5,0.0],"willesha":[0,22,0.0],"wilnesha":[0,20,0.0],"wyteria":[0,5,0.0],"xanadu":[0,10,0.0],"xitlaly":[0,1896,0.6556],"yakelin":[0,554,0.5487],"yameli":[0,162,0.4419],"yaribel":[0,51,0.0],"yarima":[0,66,0.0],"yarin":[31,33,0.0],"yasamine":[0,28,0.0],"yemaya":[0,461,0.5327],"yomari":[0,24,0.0],"yudit":[0,62,0.0],"yuritzi":[0,817,0.5824],"zahirah":[0,305,0.4969],"zaineb":[0,250,0.4796],"zoee":[0,2103,0.6646],"zorayda":[0,5,0.0],"zuhal":[0,41,0.0],"quayshaun":[150,0,0.4352],"dillen":[691,56,0.5316],"irbin":[116,0,0.4129],"quashaun":[186,0,0.4539],"diamonte":[486,32,0.5093],"demontez":[195,0,0.458],"novian":[80,0,0.0],"dreshawn":[722,0,0.5717],"tevyn":[288,5,0.485],"daequan":[792,0,0.5797],"dillyn":[412,222,0.3642],"jaxson":[66136,134,0.9623],"liridon":[44,0,0.0],"riyadh":[58,0,0.0],"aeryk":[53,0,0.0],"dylen":[1032,22,0.5919],"jaskaran":[354,0,0.5098],"travarius":[103,0,0.4026],"daqwan":[227,0,0.4712],"davontay":[570,0,0.5512],"denzal":[64,0,0.0],"divante":[159,0,0.4403],"kohle":[90,0,0.0],"quaysean":[11,0,0.0],"ahmir":[3650,5,0.7116],"armaan":[3324,0,0.7043],"brydon":[534,0,0.5455],"christiano":[833,0,0.5841],"coddy":[22,0,0.0],"cortlin":[135,0,0.4261],"dajohn":[324,0,0.5021],"eathon":[81,0,0.0],"jacorie":[142,0,0.4305],"jahleel":[1315,0,0.6238],"jeovanny":[431,0,0.5269],"kiandre":[277,0,0.4885],"kivon":[76,0,0.0],"kvon":[414,0,0.5234],"sanad":[848,0,0.5857],"tannor":[362,0,0.5117],"tayshawn":[1309,0,0.6234],"tyriq":[1757,0,0.649],"awet":[9,0,0.0],"brodee":[713,15,0.5606],"dasheem":[24,0,0.0],"davyd":[128,0,0.4214],"dawuan":[47,0,0.0],"deandray":[9,0,0.0],"dezmen":[373,0,0.5143],"dhahran":[9,0,0.0],"dontravius":[20,0,0.0],"ishmil":[19,0,0.0],"jakoby":[1674,0,0.6448],"jardon":[32,0,0.0],"jarquis":[79,0,0.0],"kshawn":[293,0,0.4934],"quayshun":[14,0,0.0],"shauntez":[30,0,0.0],"shayquan":[53,0,0.0],"taje":[125,99,0.2623],"terique":[68,0,0.0],"tieler":[199,35,0.403],"traivon":[253,0,0.4806],"traquan":[328,0,0.5032],"travez":[81,0,0.0],"allonte":[13,0,0.0],"anthonee":[208,0,0.4636],"antoneo":[69,0,0.0],"bairon":[319,0,0.5008],"dametri":[103,0,0.4026],"daniyal":[794,0,0.58],"deandres":[8,0,0.0],"demarqus":[63,0,0.0],"divonte":[84,0,0.0],"jabreel":[111,0,0.4091],"jaiquan":[427,0,0.5261],"javeon":[1657,0,0.6439],"jonluc":[57,0,0.0],"juquan":[191,0,0.4562],"khori":[147,678,0.4794],"khyre":[186,0,0.4539],"kordarius":[20,0,0.0],"mainor":[135,0,0.4261],"marcquise":[38,0,0.0],"nagee":[79,0,0.0],"ofir":[46,5,0.0],"osmany":[160,0,0.4408],"owais":[393,0,0.5189],"roberson":[13,0,0.0],"saajan":[95,0,0.0],"sedarius":[35,0,0.0],"stevieray":[20,0,0.0],"theren":[8,0,0.0],"torien":[83,0,0.0],"treshon":[440,0,0.5287],"tywuan":[50,0,0.0],"veton":[8,0,0.0],"vonte":[141,0,0.4298],"yariel":[1952,10,0.6552],"amardeep":[17,0,0.0],"ammad":[12,0,0.0],"amritpal":[85,0,0.0],"arlandis":[12,0,0.0],"brelan":[78,0,0.0],"chiraag":[13,0,0.0],"christoff":[55,0,0.0],"collan":[124,0,0.4187],"courtlin":[51,13,0.0],"daejon":[354,0,0.5098],"dajoun":[46,0,0.0],"dalten":[363,0,0.512],"damere":[291,0,0.4928],"darquis":[12,0,0.0],"davaun":[142,0,0.4305],"deionte":[284,0,0.4907],"dellon":[34,0,0.0],"denziel":[18,0,0.0],"deontai":[49,0,0.0],"dewuan":[7,0,0.0],"dmonte":[148,0,0.4341],"domineek":[7,0,0.0],"donterious":[45,0,0.0],"dontravious":[101,0,0.4009],"dreu":[59,24,0.0],"dvonte":[443,0,0.5293],"dyllin":[146,0,0.4329],"elber":[112,0,0.4098],"felipedejesus":[19,0,0.0],"gevon":[101,0,0.4009],"ghazi":[245,0,0.4778],"gionni":[1858,133,0.6157],"herber":[59,0,0.0],"jakwan":[143,0,0.4311],"jalin":[1787,471,0.5308],"jaquinn":[45,0,0.0],"jarvous":[7,0,0.0],"javante":[623,0,0.5589],"jazper":[321,0,0.5013],"jermarkus":[7,0,0.0],"josea":[7,0,0.0],"kanyon":[1335,113,0.5828],"keavon":[77,0,0.0],"kendrik":[363,0,0.512],"kentarius":[72,0,0.0],"kentrall":[12,0,0.0],"kevonte":[723,0,0.5718],"lavontae":[448,0,0.5303],"leodan":[251,0,0.4799],"leviathan":[821,0,0.5829],"luisfernando":[312,0,0.4988],"malick":[604,0,0.5562],"marcelis":[113,0,0.4106],"ontarius":[13,0,0.0],"osaze":[132,0,0.4241],"quadre":[192,0,0.4567],"quest":[1009,54,0.5746],"quintero":[7,0,0.0],"rahmir":[707,0,0.5699],"ramonte":[69,0,0.0],"rayden":[6270,367,0.7221],"sender":[177,0,0.4496],"seph":[18,0,0.0],"shakiel":[44,0,0.0],"shue":[12,0,0.0],"tavaughn":[109,0,0.4075],"timothie":[17,0,0.0],"trequan":[846,0,0.5855],"tymir":[1564,0,0.6388],"vitaly":[219,5,0.4596],"zacharry":[22,0,0.0],"abad":[93,0,0.0],"abanoub":[191,0,0.4562],"afzal":[14,0,0.0],"ahmer":[43,0,0.0],"akeel":[114,0,0.4114],"akihiro":[37,0,0.0],"alam":[348,0,0.5083],"alexender":[46,0,0.0],"anirudh":[1520,0,0.6364],"arber":[396,0,0.5195],"armonte":[220,0,0.4685],"axcel":[369,0,0.5134],"aziel":[6742,61,0.7597],"bralin":[110,0,0.4083],"brallan":[335,0,0.505],"brynton":[16,0,0.0],"cardae":[46,0,0.0],"cartavious":[57,0,0.0],"cartell":[19,0,0.0],"caylor":[103,95,0.2389],"cheenou":[31,0,0.0],"cherod":[6,0,0.0],"chidiebere":[81,0,0.0],"chord":[72,0,0.0],"christyan":[298,5,0.4881],"cohl":[213,0,0.4657],"corteze":[6,0,0.0],"daishon":[166,0,0.444],"damarrius":[45,0,0.0],"daronn":[6,0,0.0],"darryus":[22,0,0.0],"dawlton":[19,0,0.0],"dechane":[6,0,0.0],"demarcio":[11,0,0.0],"demontrez":[79,0,0.0],"deshad":[18,0,0.0],"devendra":[26,0,0.0],"dijoun":[6,0,0.0],"donoven":[390,0,0.5182],"dreon":[170,0,0.4461],"drexler":[82,0,0.0],"edberg":[6,0,0.0],"ery":[6,0,0.0],"eshan":[1193,0,0.6153],"estefano":[153,0,0.4369],"gagandeep":[129,51,0.3233],"geovanne":[11,0,0.0],"geremias":[42,0,0.0],"hadyn":[548,487,0.3193],"hazim":[134,0,0.4254],"imar":[27,16,0.0],"indio":[137,0,0.4273],"itai":[523,0,0.5437],"jabaree":[124,0,0.4187],"jacoblee":[6,0,0.0],"jagger":[7967,210,0.7624],"jahiro":[19,0,0.0],"jahod":[41,0,0.0],"jaimz":[11,0,0.0],"jakab":[6,0,0.0],"jalik":[228,0,0.4716],"jarques":[24,0,0.0],"javahn":[21,0,0.0],"javontay":[334,0,0.5047],"jelan":[73,0,0.0],"jeroen":[6,0,0.0],"joanthony":[127,0,0.4208],"jonryan":[6,0,0.0],"jozeph":[112,0,0.4098],"jullien":[300,0,0.4954],"kailon":[284,7,0.4809],"kainalu":[652,0,0.5628],"kaliff":[11,0,0.0],"kamani":[708,1119,0.3995],"kameren":[637,83,0.5056],"kashad":[26,0,0.0],"kaston":[383,0,0.5166],"kaylib":[131,0,0.4235],"kedarius":[211,0,0.4649],"keilen":[255,31,0.438],"kelvan":[6,0,0.0],"kenndrick":[17,0,0.0],"kerion":[60,0,0.0],"keshan":[62,0,0.0],"keval":[106,0,0.4051],"kevaun":[51,0,0.0],"khrystopher":[42,0,0.0],"koal":[244,0,0.4775],"koltan":[252,0,0.4803],"kullen":[776,0,0.578],"kyohei":[6,0,0.0],"kyser":[403,0,0.5211],"mahendra":[21,0,0.0],"malachai":[1430,0,0.6311],"manmeet":[41,77,0.2704],"marcuss":[16,0,0.0],"mccauley":[94,21,0.3369],"michoel":[221,0,0.4689],"mohmed":[95,0,0.0],"mosese":[67,0,0.0],"naquon":[17,0,0.0],"nethaniel":[254,0,0.481],"nikoll":[6,0,0.0],"nycholas":[201,0,0.4606],"nyeem":[349,0,0.5086],"oday":[149,0,0.4346],"oisin":[491,0,0.5382],"oladapo":[11,0,0.0],"quinterious":[101,0,0.4009],"rafat":[40,0,0.0],"raishawn":[45,0,0.0],"raistlin":[381,0,0.5162],"reaksmey":[6,0,0.0],"richi":[22,0,0.0],"riker":[1208,0,0.6164],"schaefer":[68,0,0.0],"sepehr":[50,0,0.0],"sevak":[64,0,0.0],"shabaz":[24,0,0.0],"shakeal":[45,0,0.0],"shaleek":[38,0,0.0],"shaquile":[120,7,0.3976],"shaquill":[155,17,0.4029],"stevenray":[16,0,0.0],"suhaib":[493,0,0.5386],"tandre":[150,0,0.4352],"taveon":[743,0,0.5742],"terion":[219,0,0.4681],"terrone":[6,0,0.0],"tomohiro":[35,0,0.0],"tradell":[13,0,0.0],"travien":[41,0,0.0],"trayton":[873,0,0.5882],"trei":[154,0,0.4375],"trevonne":[297,0,0.4946],"tydell":[21,0,0.0],"xxavier":[156,0,0.4386],"zared":[147,0,0.4335],"zareh":[22,0,0.0],"zarius":[320,0,0.501],"aarick":[28,0,0.0],"abdou":[306,0,0.4971],"aijalon":[102,95,0.2376],"akwasi":[35,0,0.0],"aleq":[5,0,0.0],"alper":[78,0,0.0],"altavious":[10,0,0.0],"amanjit":[5,0,0.0],"amjed":[33,0,0.0],"argeniz":[10,0,0.0],"arnav":[3542,0,0.7098],"aroon":[16,0,0.0],"ashdon":[253,0,0.4806],"athen":[671,0,0.5653],"avory":[362,497,0.3395],"bacari":[49,0,0.0],"bartosz":[226,0,0.4708],"bastian":[2393,0,0.6758],"blaike":[181,205,0.2747],"braylen":[12880,777,0.78],"bretten":[21,0,0.0],"cadarrius":[44,0,0.0],"caige":[379,0,0.5157],"calub":[167,0,0.4445],"capree":[5,49,0.0],"celerino":[10,0,0.0],"chadi":[43,0,0.0],"chazton":[15,0,0.0],"chesky":[455,0,0.5316],"chezaray":[5,0,0.0],"coen":[4372,17,0.7257],"creigh":[5,0,0.0],"dagen":[362,27,0.482],"daisean":[169,0,0.4456],"daquain":[47,0,0.0],"darco":[5,0,0.0],"daries":[40,0,0.0],"darries":[5,0,0.0],"dartez":[5,0,0.0],"davieon":[324,0,0.5021],"daysean":[138,0,0.428],"deantwon":[5,0,0.0],"deaudre":[15,0,0.0],"decarius":[16,0,0.0],"decorius":[23,0,0.0],"delanta":[5,0,0.0],"demaurio":[5,0,0.0],"demir":[1277,0,0.6212],"demontay":[214,0,0.4661],"demontreal":[5,0,0.0],"denzale":[32,0,0.0],"dequavius":[82,0,0.0],"devahn":[17,0,0.0],"diovanni":[75,0,0.0],"do":[11,0,0.0],"dominike":[15,0,0.0],"donminique":[5,0,0.0],"donnavin":[73,0,0.0],"donterrious":[33,0,0.0],"dovber":[173,0,0.4476],"draylon":[219,0,0.4681],"dresean":[170,0,0.4461],"dvontae":[113,0,0.4106],"dylanmichael":[10,0,0.0],"eduar":[314,0,0.4994],"eliyah":[739,1388,0.4343],"elizeo":[146,0,0.4329],"emanuell":[65,0,0.0],"ender":[1764,19,0.6433],"esaias":[804,0,0.5811],"fedel":[5,0,0.0],"franchesco":[51,0,0.0],"furious":[143,0,0.4311],"gautham":[447,0,0.5301],"geren":[15,0,0.0],"heladio":[22,0,0.0],"hermelindo":[11,0,0.0],"herney":[5,0,0.0],"hervin":[53,0,0.0],"hezron":[39,0,0.0],"hildebrando":[5,0,0.0],"hiroto":[191,0,0.4562],"hovanes":[63,0,0.0],"hussan":[50,0,0.0],"iann":[572,0,0.5515],"irvyn":[17,0,0.0],"issacc":[74,0,0.0],"jacobee":[59,0,0.0],"jacub":[184,0,0.453],"jadarious":[137,0,0.4273],"jaevon":[512,0,0.5419],"jaheed":[29,0,0.0],"jahmad":[116,0,0.4129],"jaiver":[21,0,0.0],"jakaris":[5,0,0.0],"jamad":[23,0,0.0],"jamani":[402,319,0.3187],"jamarlon":[54,0,0.0],"jamonta":[84,0,0.0],"janak":[15,0,0.0],"jaquar":[11,0,0.0],"jarico":[5,0,0.0],"jarodd":[10,0,0.0],"jarquise":[22,0,0.0],"jarran":[5,0,0.0],"jasheem":[10,0,0.0],"jasiah":[8985,638,0.7438],"jaskarn":[43,0,0.0],"jaushua":[11,0,0.0],"javorius":[15,0,0.0],"jawaski":[5,0,0.0],"jeison":[473,0,0.535],"jesseray":[22,0,0.0],"jhamari":[240,0,0.476],"jjuan":[36,0,0.0],"joevany":[29,0,0.0],"johnluke":[609,0,0.5569],"johntay":[80,0,0.0],"jonrobert":[5,0,0.0],"jonwesley":[5,0,0.0],"jordany":[532,0,0.5452],"jorgan":[11,0,0.0],"joseeduardo":[70,0,0.0],"josephdaniel":[15,0,0.0],"josse":[10,0,0.0],"juanfrancisco":[30,0,0.0],"jumarcus":[5,0,0.0],"karandeep":[67,0,0.0],"kasson":[111,0,0.4091],"kaushal":[119,0,0.4151],"kavonte":[229,0,0.472],"kayel":[18,0,0.0],"keano":[333,0,0.5045],"keaon":[31,0,0.0],"kedwin":[22,0,0.0],"keelen":[198,0,0.4593],"keisean":[180,0,0.4511],"keiston":[182,0,0.452],"keiyon":[154,0,0.4375],"kendrew":[109,0,0.4075],"kenjiro":[32,0,0.0],"kesler":[303,0,0.4963],"kevonne":[43,6,0.0],"keyone":[21,0,0.0],"keywan":[52,0,0.0],"khadir":[212,0,0.4653],"khairy":[5,0,0.0],"khallid":[87,0,0.0],"kirklin":[97,0,0.0],"kisan":[5,0,0.0],"kousuke":[5,0,0.0],"krystoffer":[5,0,0.0],"ksean":[65,0,0.0],"kupono":[62,0,0.0],"kuwan":[5,0,0.0],"kwamayne":[5,0,0.0],"kwashawn":[5,0,0.0],"kyale":[23,0,0.0],"kylealexander":[5,0,0.0],"kyrel":[106,0,0.4051],"kyshawn":[482,0,0.5366],"ladamian":[47,0,0.0],"lafrederick":[5,0,0.0],"laterrius":[20,0,0.0],"latevin":[11,0,0.0],"latreal":[16,0,0.0],"lavante":[180,0,0.4511],"ledaniel":[5,0,0.0],"ledarion":[17,0,0.0],"lekendric":[5,0,0.0],"londen":[262,435,0.3549],"mackay":[276,21,0.4596],"maclane":[180,0,0.4511],"makale":[205,0,0.4624],"mani":[115,10,0.3858],"manraj":[454,8,0.5237],"manvir":[226,23,0.435],"manzell":[5,0,0.0],"maor":[124,0,0.4187],"marcuse":[5,0,0.0],"meshulem":[127,0,0.4208],"micajah":[95,0,0.0],"miraj":[166,20,0.4051],"moshood":[16,0,0.0],"mykola":[15,0,0.0],"naftuli":[639,0,0.5611],"nahjee":[38,0,0.0],"nain":[289,5,0.4853],"namir":[869,0,0.5878],"nassir":[965,0,0.5969],"natnael":[375,0,0.5148],"necko":[5,0,0.0],"nekko":[45,0,0.0],"nielsen":[11,0,0.0],"nikil":[30,0,0.0],"nisson":[20,0,0.0],"ohad":[15,0,0.0],"oshae":[242,0,0.4768],"packard":[5,0,0.0],"quacy":[5,0,0.0],"quamere":[104,0,0.4034],"quantrel":[19,0,0.0],"quashan":[5,0,0.0],"quavious":[15,0,0.0],"quitin":[5,0,0.0],"raith":[46,0,0.0],"rajkumar":[5,0,0.0],"rakee":[5,0,0.0],"rally":[101,17,0.3547],"raylin":[529,1329,0.4677],"ritchy":[5,0,0.0],"roderiquez":[5,0,0.0],"roee":[67,0,0.0],"rohail":[106,0,0.4051],"roneal":[5,0,0.0],"sabastien":[93,0,0.0],"sachary":[5,5,0.0],"salazar":[5,0,0.0],"saliym":[5,0,0.0],"savon":[1700,66,0.6251],"sayquan":[44,0,0.0],"seandell":[15,0,0.0],"sergey":[478,0,0.5359],"shaad":[10,0,0.0],"shakeil":[55,0,0.0],"shakell":[29,10,0.0],"shaking":[5,0,0.0],"shareek":[5,0,0.0],"sheikh":[405,15,0.5059],"shequille":[30,0,0.0],"sherome":[5,0,0.0],"shou":[10,0,0.0],"sopaul":[5,0,0.0],"steeven":[30,0,0.0],"stepheon":[5,0,0.0],"szymon":[423,0,0.5253],"taishawn":[113,0,0.4106],"tajee":[80,34,0.2887],"takari":[335,98,0.408],"tarrius":[5,0,0.0],"tashad":[16,0,0.0],"taylan":[877,351,0.4412],"terae":[5,5,0.0],"terryon":[284,0,0.4907],"tervin":[5,0,0.0],"tevaughn":[56,0,0.0],"the":[5,0,0.0],"therrin":[5,0,0.0],"tobia":[5,0,0.0],"toshiki":[5,0,0.0],"traig":[5,0,0.0],"travail":[15,0,0.0],"trayshawn":[249,0,0.4792],"tremonte":[20,0,0.0],"trestin":[189,0,0.4553],"tresvon":[5,0,0.0],"trunell":[5,0,0.0],"tylere":[27,0,0.0],"tylerjames":[122,0,0.4173],"tymere":[577,0,0.5522],"tyreak":[142,0,0.4305],"tyrico":[22,0,0.0],"tyrike":[46,0,0.0],"vaibhav":[577,0,0.5522],"valdir":[5,0,0.0],"ventrell":[5,0,0.0],"vignesh":[257,0,0.482],"waqar":[5,0,0.0],"xzavia":[26,65,0.0],"yacoub":[264,0,0.4843],"yamir":[802,0,0.5808],"yehonatan":[89,0,0.0],"yeison":[622,0,0.5588],"yianni":[455,0,0.5316],"yousuke":[5,0,0.0],"zeek":[283,0,0.4904],"zeev":[102,0,0.4017],"zein":[426,0,0.5259],"akeiba":[0,60,0.0],"elantra":[0,123,0.418],"iniki":[7,45,0.0],"yoseline":[0,809,0.5816],"anaiza":[0,193,0.4571],"josselin":[0,852,0.5861],"caleesha":[0,17,0.0],"lucely":[0,88,0.0],"nautica":[55,2229,0.6556],"shivangi":[0,149,0.4346],"miyisha":[0,14,0.0],"paiton":[165,1199,0.5511],"payten":[631,3330,0.6049],"shabrea":[0,114,0.4114],"laritza":[0,307,0.4974],"nayirah":[0,19,0.0],"doriana":[0,161,0.4414],"jameliah":[0,28,0.0],"kalifa":[5,81,0.0],"scout":[1960,4871,0.5469],"silken":[0,12,0.0],"yamily":[0,54,0.0],"alanie":[0,886,0.5895],"angelik":[0,204,0.4619],"cashala":[0,11,0.0],"jacoria":[0,145,0.4323],"luceli":[0,16,0.0],"oneshia":[0,52,0.0],"santasia":[0,132,0.4241],"tehilla":[0,575,0.5519],"tynasia":[0,284,0.4907],"zandalee":[0,33,0.0],"alayah":[0,11464,0.8119],"bryauna":[0,109,0.4075],"cailley":[0,54,0.0],"darianne":[0,180,0.4511],"haly":[0,117,0.4136],"jailene":[0,3126,0.699],"jameesha":[0,28,0.0],"keyah":[0,101,0.4009],"malayshia":[0,418,0.5242],"peighton":[93,2717,0.6669],"sakile":[0,23,0.0],"shakaya":[0,58,0.0],"shakiela":[0,22,0.0],"shaunique":[0,10,0.0],"symonne":[0,49,0.0],"yosselin":[0,524,0.5439],"ashani":[0,332,0.5042],"carsyn":[1894,4272,0.5252],"cheltzie":[0,15,0.0],"cortisha":[0,26,0.0],"dariane":[0,126,0.4201],"ghadeer":[0,96,0.0],"imaan":[120,778,0.5117],"ingri":[0,128,0.4214],"jamirah":[0,662,0.5642],"kenzy":[51,911,0.565],"maiah":[0,1053,0.6045],"malaisha":[0,130,0.4228],"malasia":[0,738,0.5736],"marissah":[0,110,0.4083],"meridian":[0,390,0.5182],"patricka":[0,18,0.0],"priscilia":[0,9,0.0],"shaleese":[0,16,0.0],"shinese":[0,9,0.0],"taloria":[0,16,0.0],"tiosha":[0,22,0.0],"treonna":[0,121,0.4166],"valkyrie":[0,1211,0.6166],"wynisha":[0,9,0.0],"zariah":[137,13462,0.8184],"akacia":[0,144,0.4317],"alantra":[0,64,0.0],"amarra":[0,444,0.5295],"aneisa":[0,121,0.4166],"ashanty":[0,592,0.5545],"ashonti":[0,230,0.4723],"bradee":[33,84,0.297],"briesha":[0,42,0.0],"cambree":[0,2272,0.6713],"camery":[0,56,0.0],"chezney":[0,167,0.4445],"desia":[0,131,0.4235],"diamone":[0,96,0.0],"elaini":[0,33,0.0],"emoni":[215,2826,0.6474],"evania":[0,234,0.4738],"evgenia":[0,78,0.0],"jakala":[0,258,0.4823],"jakeira":[0,195,0.458],"janiah":[0,4556,0.7317],"jazmarie":[0,292,0.4931],"kawehi":[0,92,0.0],"keirstan":[0,118,0.4144],"kelseigh":[0,73,0.0],"keyaria":[0,62,0.0],"kiersty":[0,8,0.0],"kourtlyn":[0,388,0.5178],"kyeria":[0,18,0.0],"leanza":[0,91,0.0],"liya":[0,2209,0.6688],"macenzie":[0,329,0.5034],"mackensey":[0,119,0.4151],"makenzee":[0,983,0.5985],"mehak":[0,381,0.5162],"montasia":[0,183,0.4525],"nashalie":[0,76,0.0],"ndea":[0,190,0.4558],"raeesah":[0,28,0.0],"semira":[0,599,0.5555],"shanequah":[0,8,0.0],"shatifah":[0,8,0.0],"taire":[0,8,0.0],"trystin":[803,283,0.4489],"xitlali":[0,2773,0.6886],"adriannah":[0,283,0.4904],"aeryn":[29,1150,0.5992],"aglae":[0,7,0.0],"akebia":[0,7,0.0],"alexanndra":[0,7,0.0],"amyra":[0,2734,0.6874],"anaissa":[0,116,0.4129],"andrekia":[0,7,0.0],"antwanisha":[0,17,0.0],"arielmarie":[0,7,0.0],"aryanne":[0,61,0.0],"atiana":[0,623,0.5589],"ayannah":[0,705,0.5696],"aziah":[907,854,0.3343],"azlynn":[0,1292,0.6223],"breasia":[0,1378,0.6278],"brene":[0,40,0.0],"breosha":[0,57,0.0],"brinlee":[0,2736,0.6874],"bronti":[0,14,0.0],"brynisha":[0,7,0.0],"burgandi":[0,22,0.0],"caeleigh":[0,226,0.4708],"camree":[0,299,0.4951],"cassietta":[0,7,0.0],"ceasia":[0,118,0.4144],"celsie":[0,56,0.0],"cesiah":[0,72,0.0],"chabeli":[0,95,0.0],"chabely":[0,63,0.0],"chancee":[0,7,0.0],"cheyeanne":[0,145,0.4323],"chiane":[0,56,0.0],"chyane":[0,95,0.0],"coryna":[0,17,0.0],"daisa":[0,224,0.47],"daisia":[0,437,0.5281],"daizha":[0,170,0.4461],"danaisha":[0,202,0.4611],"dariann":[0,141,0.4298],"dayanira":[0,215,0.4665],"deerika":[0,14,0.0],"donasia":[0,189,0.4553],"drewcilla":[0,20,0.0],"elenia":[0,37,0.0],"endesha":[0,12,0.0],"esbeidy":[0,279,0.4891],"fantazia":[0,29,0.0],"hikaru":[162,18,0.4059],"hillarey":[0,7,0.0],"inayah":[0,1080,0.6067],"jacquilynn":[0,19,0.0],"jashae":[0,84,0.0],"jashonda":[0,7,0.0],"jatasia":[0,72,0.0],"jayanna":[0,1218,0.6171],"jaynesha":[0,17,0.0],"jayonna":[0,1024,0.6021],"jazmane":[0,31,0.0],"jazmun":[0,12,0.0],"johnnesha":[0,19,0.0],"jyra":[0,115,0.4121],"kaitlon":[0,7,0.0],"kaitylyn":[0,41,0.0],"katlen":[0,75,0.0],"kauri":[26,124,0.3598],"kelcea":[0,7,0.0],"keyanah":[0,117,0.4136],"kiairra":[0,22,0.0],"kurissa":[0,7,0.0],"lacorsha":[0,7,0.0],"laniya":[0,3136,0.6993],"lannah":[0,229,0.472],"libni":[0,305,0.4969],"lundyn":[6,956,0.5929],"mackayla":[0,1296,0.6225],"mariem":[0,215,0.4665],"mashala":[0,22,0.0],"mayci":[0,740,0.5738],"mckaylee":[0,581,0.5528],"merve":[0,101,0.4009],"mirka":[0,529,0.5447],"monaye":[0,65,0.0],"monserat":[0,404,0.5213],"morina":[0,7,0.0],"mykela":[0,208,0.4636],"mylynn":[0,164,0.443],"najae":[83,578,0.4932],"niana":[0,285,0.491],"paiten":[15,409,0.5069],"raichel":[0,46,0.0],"ravneet":[7,195,0.4451],"rayah":[0,1325,0.6244],"rikayla":[0,83,0.0],"rodericka":[0,25,0.0],"safari":[129,354,0.3934],"selen":[0,160,0.4408],"sevana":[0,148,0.4341],"shakelah":[0,7,0.0],"shakella":[0,7,0.0],"shaqueen":[0,26,0.0],"sharnaye":[0,7,0.0],"shekerra":[0,7,0.0],"shiasia":[0,93,0.0],"shoniece":[0,7,0.0],"simisola":[0,123,0.418],"slone":[62,37,0.0],"sruti":[0,110,0.4083],"taiyana":[0,112,0.4098],"tanjanique":[0,7,0.0],"tatania":[0,7,0.0],"teirney":[0,7,0.0],"tiaundra":[0,7,0.0],"tikeyah":[0,7,0.0],"titanna":[0,43,0.0],"tkeyha":[0,20,0.0],"trenay":[0,26,0.0],"tymeisha":[0,41,0.0],"tyquasha":[0,55,0.0],"uniqueka":[0,17,0.0],"victorea":[0,21,0.0],"zahrah":[0,395,0.5193],"zohal":[0,132,0.4241],"abrie":[0,324,0.5021],"agape":[41,112,0.3199],"ahjah":[0,54,0.0],"aidaliz":[0,25,0.0],"aileena":[0,132,0.4241],"aisia":[0,83,0.0],"aissatou":[0,909,0.5917],"akieba":[0,6,0.0],"aleli":[0,161,0.4414],"alexaundrea":[0,6,0.0],"alleena":[0,47,0.0],"alleigh":[0,628,0.5596],"allicyn":[0,46,0.0],"amirra":[0,457,0.532],"amnesty":[0,13,0.0],"anayssa":[0,6,0.0],"andjoua":[0,6,0.0],"anjanie":[0,6,0.0],"anjanique":[0,13,0.0],"annarae":[0,92,0.0],"antinique":[0,32,0.0],"antonise":[0,26,0.0],"anyae":[0,210,0.4644],"anye":[0,124,0.4187],"aracele":[0,6,0.0],"araly":[0,121,0.4166],"ardita":[0,29,0.0],"arrian":[86,27,0.3125],"arriell":[0,6,0.0],"ashari":[0,656,0.5634],"aspyn":[107,3649,0.6946],"averee":[51,1127,0.5876],"awa":[0,842,0.5851],"azya":[0,238,0.4753],"betzabe":[0,216,0.4669],"bisma":[0,254,0.481],"blayr":[0,19,0.0],"breckyn":[314,889,0.4553],"breshae":[0,67,0.0],"breshey":[0,20,0.0],"briahnna":[0,178,0.4501],"brisia":[0,321,0.5013],"briuna":[0,50,0.0],"briyona":[0,47,0.0],"bryttnie":[0,11,0.0],"camary":[0,63,0.0],"caprise":[0,11,0.0],"carlyssa":[0,33,0.0],"carryn":[0,22,0.0],"cassiana":[0,61,0.0],"caya":[0,192,0.4567],"chalyse":[0,13,0.0],"chardonay":[0,80,0.0],"chelssie":[0,6,0.0],"chelzie":[0,6,0.0],"cionna":[0,156,0.4386],"claraliz":[0,6,0.0],"daejah":[0,471,0.5346],"daijanae":[0,111,0.4091],"dajae":[0,171,0.4466],"dajane":[0,67,0.0],"dajonae":[0,29,0.0],"dayja":[0,537,0.546],"daylee":[6,447,0.5242],"daysia":[0,720,0.5715],"dazmine":[0,18,0.0],"deira":[0,73,0.0],"demie":[0,61,0.0],"demmi":[0,69,0.0],"desarey":[0,29,0.0],"deshanay":[0,6,0.0],"devki":[0,13,0.0],"dinahlee":[0,20,0.0],"dysheka":[0,6,0.0],"ednesha":[0,6,0.0],"edricka":[0,11,0.0],"elainie":[0,39,0.0],"emmalouise":[0,12,0.0],"fatumata":[0,226,0.4708],"franchezca":[0,6,0.0],"genavie":[0,152,0.4364],"hakeema":[0,6,0.0],"hasna":[0,260,0.483],"hayly":[0,92,0.0],"hoshi":[0,6,0.0],"iriel":[0,119,0.4151],"jahnay":[0,179,0.4506],"jakendra":[0,11,0.0],"jamaika":[0,26,0.0],"jamerica":[0,89,0.0],"janais":[0,29,0.0],"janitta":[0,6,0.0],"jaquandra":[0,13,0.0],"jarisa":[0,6,0.0],"jaslyne":[0,202,0.4611],"jassel":[0,28,0.0],"jeimy":[0,799,0.5805],"jensyn":[266,758,0.4457],"jermeisha":[0,29,0.0],"jessah":[0,148,0.4341],"jessilynn":[0,110,0.4083],"jezenia":[0,6,0.0],"jochelle":[0,6,0.0],"jolesa":[0,6,0.0],"josely":[0,77,0.0],"joshalynn":[0,39,0.0],"jullianne":[0,16,0.0],"kaelene":[0,72,0.0],"kamree":[0,496,0.5391],"kamyia":[0,430,0.5267],"kanica":[0,6,0.0],"kar":[0,6,0.0],"karelia":[0,11,0.0],"karielle":[0,183,0.4525],"kathiana":[0,17,0.0],"katrianna":[0,69,0.0],"kavona":[0,12,0.0],"kaytelyn":[0,80,0.0],"kayton":[173,167,0.2576],"keerra":[0,11,0.0],"keishona":[0,22,0.0],"kenesia":[0,6,0.0],"keoisha":[0,15,0.0],"kerrah":[0,21,0.0],"keyante":[147,6,0.4198],"keyasia":[0,474,0.5352],"kianni":[0,285,0.491],"kyeana":[0,6,0.0],"lachay":[0,6,0.0],"ladeja":[0,279,0.4891],"laporschia":[0,6,0.0],"latajah":[0,85,0.0],"leshe":[0,6,0.0],"linoshka":[0,6,0.0],"lissandra":[0,330,0.5037],"lorynn":[0,151,0.4358],"lyan":[582,108,0.4789],"madason":[0,183,0.4525],"maiquel":[0,6,0.0],"makaylee":[0,1476,0.6338],"makell":[337,149,0.3726],"maley":[0,187,0.4544],"maraih":[0,11,0.0],"mariame":[0,329,0.5034],"markevia":[0,57,0.0],"marlenee":[0,11,0.0],"marquasia":[0,121,0.4166],"marshala":[0,25,0.0],"matison":[0,351,0.5091],"matlyn":[0,46,0.0],"maycie":[0,1454,0.6325],"mayelin":[0,143,0.4311],"meryem":[0,596,0.555],"mkayla":[0,454,0.5314],"mkenzie":[0,245,0.4778],"moncerat":[0,56,0.0],"moorea":[0,164,0.443],"mykenzie":[0,1163,0.6131],"mystical":[0,29,0.0],"naija":[0,411,0.5228],"nakyra":[0,264,0.4843],"nashai":[0,21,0.0],"nathia":[0,6,0.0],"natiana":[0,11,0.0],"niamani":[0,70,0.0],"niela":[0,67,0.0],"nyshea":[0,16,0.0],"oliviah":[0,707,0.5699],"omunique":[0,154,0.4375],"oniesha":[0,31,0.0],"phillisha":[0,11,0.0],"preet":[148,88,0.2976],"presila":[0,6,0.0],"quadasha":[0,28,0.0],"quanasha":[0,11,0.0],"quasia":[0,51,0.0],"quatavia":[0,24,0.0],"rakiah":[0,59,0.0],"raniqua":[0,17,0.0],"raquele":[0,6,0.0],"reyann":[0,86,0.0],"romeisha":[0,6,0.0],"roynesha":[0,6,0.0],"rynesha":[0,44,0.0],"sabrin":[0,360,0.5113],"samreen":[0,247,0.4785],"scharron":[0,6,0.0],"seidy":[0,344,0.5073],"seraiah":[11,364,0.4997],"shadiya":[0,36,0.0],"shahd":[0,726,0.5722],"shakaila":[0,23,0.0],"shamoria":[0,12,0.0],"shaniesha":[0,22,0.0],"shannequa":[0,6,0.0],"shanniece":[0,6,0.0],"shantiana":[0,16,0.0],"shanyka":[0,6,0.0],"shaqunda":[0,30,0.0],"sharnequa":[0,6,0.0],"shartavia":[0,21,0.0],"shaunese":[0,17,0.0],"shauney":[0,6,0.0],"shawneece":[0,6,0.0],"shayona":[0,82,0.0],"sherraine":[0,6,0.0],"shnequa":[0,6,0.0],"shykeyla":[0,6,0.0],"shynise":[0,6,0.0],"silka":[0,63,0.0],"soumya":[0,266,0.485],"subira":[0,6,0.0],"taela":[0,135,0.4261],"talisia":[0,22,0.0],"tanajah":[0,300,0.4954],"tanaysha":[0,142,0.4305],"tanija":[0,315,0.4997],"tashanae":[0,13,0.0],"teiah":[0,11,0.0],"teilor":[0,17,0.0],"tieraney":[0,40,0.0],"timmesha":[0,27,0.0],"toynelle":[0,6,0.0],"treya":[0,65,0.0],"tyneika":[0,6,0.0],"tyrissa":[0,16,0.0],"xotchil":[0,27,0.0],"yarissa":[0,189,0.4553],"yeimy":[0,716,0.571],"zowie":[0,806,0.5813],"abisag":[0,16,0.0],"addrianna":[0,16,0.0],"adedoyin":[5,17,0.0],"adeva":[0,5,0.0],"adileni":[0,62,0.0],"aeriana":[0,409,0.5223],"afreen":[0,276,0.4882],"ailey":[0,944,0.595],"akiela":[0,16,0.0],"alainey":[0,29,0.0],"alaney":[0,81,0.0],"alaxandria":[0,10,0.0],"alayshia":[0,657,0.5635],"aleandra":[0,5,0.0],"alyxandrea":[0,48,0.0],"amariz":[0,178,0.4501],"ambernique":[0,10,0.0],"analisia":[0,228,0.4716],"anapatricia":[0,46,0.0],"anareli":[0,71,0.0],"andresha":[0,26,0.0],"anhelica":[0,71,0.0],"annjelica":[0,5,0.0],"antaneisha":[0,15,0.0],"antorria":[0,5,0.0],"antwanae":[0,10,0.0],"apriel":[0,5,0.0],"aquasia":[0,31,0.0],"aralyn":[0,973,0.5976],"arieana":[0,791,0.5796],"arlaina":[0,10,0.0],"asiana":[0,420,0.5246],"asyah":[29,247,0.4369],"aubreana":[0,235,0.4742],"audrieana":[0,5,0.0],"avriel":[79,130,0.2886],"ayahna":[0,98,0.0],"azha":[0,75,0.0],"berenisse":[0,21,0.0],"berklee":[27,1191,0.6034],"bernesha":[0,5,0.0],"biancamarie":[0,10,0.0],"blessy":[0,22,0.0],"brailee":[0,697,0.5686],"braya":[0,577,0.5522],"breale":[0,47,0.0],"breeaunna":[0,5,0.0],"breisha":[0,15,0.0],"brenika":[0,5,0.0],"breonka":[0,15,0.0],"breyonia":[0,15,0.0],"brianica":[0,23,0.0],"brinisha":[0,16,0.0],"brittanii":[0,5,0.0],"brittyn":[0,521,0.5434],"brynley":[0,3227,0.7018],"burgandie":[0,5,0.0],"busra":[0,40,0.0],"cailtin":[0,5,0.0],"caitline":[0,16,0.0],"calea":[0,214,0.4661],"camaria":[0,225,0.4704],"cambridge":[80,77,0.2238],"carlese":[0,5,0.0],"carlesia":[0,22,0.0],"casea":[0,5,0.0],"cassina":[0,5,0.0],"catria":[0,5,0.0],"caylene":[0,20,0.0],"caytie":[0,5,0.0],"cearah":[0,10,0.0],"chakyra":[0,54,0.0],"chamelle":[0,5,0.0],"chantice":[0,22,0.0],"chantoria":[0,5,0.0],"chaquan":[26,5,0.0],"charaine":[0,5,0.0],"chasadie":[0,15,0.0],"chauntrice":[0,5,0.0],"chellsee":[0,5,0.0],"christyana":[0,247,0.4785],"cirena":[0,11,0.0],"clarencia":[0,5,0.0],"connar":[637,31,0.5387],"coraima":[0,605,0.5564],"cortlynn":[0,176,0.4491],"coryann":[0,5,0.0],"crisma":[0,10,0.0],"damera":[0,5,0.0],"damishia":[0,5,0.0],"danayah":[0,139,0.4286],"danyea":[0,5,0.0],"dareese":[0,5,0.0],"darlesha":[0,10,0.0],"darniesha":[0,10,0.0],"darrean":[16,18,0.0],"dashawnda":[0,10,0.0],"dashaya":[0,21,0.0],"davionna":[0,488,0.5377],"dayanne":[0,210,0.4644],"deambra":[0,16,0.0],"dearia":[0,193,0.4571],"debriana":[0,55,0.0],"deissy":[0,80,0.0],"dejanai":[0,50,0.0],"dejarae":[0,16,0.0],"dejha":[0,112,0.4098],"dejona":[0,18,0.0],"dennishia":[0,5,0.0],"deserey":[0,28,0.0],"desiri":[0,10,0.0],"destinea":[0,10,0.0],"devyne":[55,121,0.3088],"dharti":[0,12,0.0],"diamondnique":[0,34,0.0],"dianamarie":[0,5,0.0],"dijonnae":[0,19,0.0],"dnisha":[0,10,0.0],"dominesha":[0,16,0.0],"donnae":[0,85,0.0],"dorielle":[0,5,0.0],"dorsha":[0,5,0.0],"dreonna":[0,86,0.0],"dusharme":[0,5,0.0],"dynalee":[0,5,0.0],"dyona":[0,10,0.0],"efua":[0,11,0.0],"elenna":[0,361,0.5115],"elexcia":[0,30,0.0],"elisama":[0,61,0.0],"ellexis":[0,54,0.0],"ellisia":[0,17,0.0],"emmalyne":[0,331,0.504],"equasha":[0,5,0.0],"equasia":[0,5,0.0],"ericah":[0,84,0.0],"eriqa":[0,24,0.0],"esbeidi":[0,20,0.0],"esenia":[0,16,0.0],"esprit":[0,10,0.0],"fantaisa":[0,5,0.0],"faria":[0,202,0.4611],"gaolee":[0,5,0.0],"getsemani":[12,612,0.5483],"gizem":[0,19,0.0],"hadja":[0,179,0.4506],"haelee":[0,196,0.4585],"haille":[0,323,0.5018],"hennessey":[0,383,0.5166],"ikeyia":[0,10,0.0],"ilce":[0,44,0.0],"ilirida":[0,5,0.0],"imaani":[0,28,0.0],"indhira":[0,5,0.0],"iraiz":[0,16,0.0],"ismerai":[0,240,0.476],"jacklynne":[0,33,0.0],"jaelin":[1252,918,0.385],"jaileen":[0,984,0.5986],"jakiyah":[0,1465,0.6332],"jamiece":[0,16,0.0],"jamileth":[0,893,0.5902],"janellie":[0,281,0.4897],"janikqua":[0,5,0.0],"jannalyn":[0,10,0.0],"jantel":[0,5,0.0],"jaquasha":[0,71,0.0],"jaresha":[0,5,0.0],"jarina":[0,11,0.0],"jashona":[0,10,0.0],"javaria":[0,94,0.0],"jawonna":[0,5,0.0],"jazmenn":[0,5,0.0],"jeinny":[0,15,0.0],"jelyssa":[0,21,0.0],"jenavie":[0,264,0.4843],"jenera":[0,5,0.0],"jennavieve":[0,484,0.537],"jerneshia":[0,5,0.0],"jezelle":[0,406,0.5217],"jhoselin":[0,127,0.4208],"jianni":[327,293,0.2946],"jizelle":[0,1072,0.606],"johnnice":[0,5,0.0],"jolysa":[0,5,0.0],"jomana":[0,64,0.0],"jontelle":[0,5,0.0],"jordania":[0,11,0.0],"jorri":[0,10,0.0],"josceline":[0,84,0.0],"josselyne":[0,165,0.4435],"juliandra":[0,5,0.0],"kadejah":[0,407,0.5219],"kadera":[0,5,0.0],"kaeisha":[0,5,0.0],"kahdijah":[0,60,0.0],"kaitelyn":[0,113,0.4106],"kambry":[0,569,0.551],"kamilya":[0,102,0.4017],"kasiah":[152,274,0.3382],"kassady":[0,294,0.4937],"kataryna":[0,143,0.4311],"katlain":[0,5,0.0],"kavonna":[0,35,0.0],"kaytlynne":[0,64,0.0],"keahna":[0,14,0.0],"keiuna":[0,5,0.0],"kenasia":[0,180,0.4511],"keonie":[0,5,0.0],"kerianna":[0,134,0.4254],"kevonda":[0,5,0.0],"keyani":[0,438,0.5283],"keyira":[0,102,0.4017],"khyati":[0,11,0.0],"kiahna":[0,455,0.5316],"kiamber":[0,39,0.0],"kiava":[0,10,0.0],"kirisa":[0,5,0.0],"kirsey":[0,5,0.0],"kirstey":[0,5,0.0],"klarrisa":[0,11,0.0],"kortlynn":[0,108,0.4067],"krystalee":[0,22,0.0],"kyani":[0,287,0.4916],"kycia":[0,5,0.0],"kylara":[0,17,0.0],"kymisha":[0,10,0.0],"kynzie":[0,773,0.5776],"kyosha":[0,10,0.0],"kyresha":[0,5,0.0],"kyrin":[2012,154,0.6197],"ladaja":[0,126,0.4201],"lahana":[0,31,0.0],"lakeiya":[0,25,0.0],"lakerria":[0,41,0.0],"laqusha":[0,5,0.0],"latease":[0,5,0.0],"latefah":[0,5,0.0],"leira":[0,413,0.5232],"letavia":[0,16,0.0],"lexandra":[0,144,0.4317],"liliya":[0,586,0.5536],"lillyanne":[0,1033,0.6028],"linly":[0,5,0.0],"lisbel":[0,17,0.0],"lydiah":[0,307,0.4974],"lyndzey":[0,16,0.0],"lynh":[0,10,0.0],"madigan":[0,964,0.5968],"mahaliah":[0,5,0.0],"mahira":[0,746,0.5745],"makaylah":[0,3153,0.6997],"makinsey":[0,310,0.4983],"malaak":[0,319,0.5008],"malachia":[11,20,0.0],"maleesa":[0,5,0.0],"mariaann":[0,5,0.0],"marieli":[0,269,0.486],"marithza":[0,82,0.0],"markena":[0,5,0.0],"marlika":[0,5,0.0],"marniqua":[0,5,0.0],"marquina":[0,5,0.0],"marriana":[0,79,0.0],"marteisha":[0,5,0.0],"martiqua":[0,10,0.0],"marvi":[0,15,0.0],"marymichael":[0,24,0.0],"mckennah":[0,527,0.5444],"megna":[0,16,0.0],"mehek":[0,140,0.4292],"mekaela":[0,105,0.4042],"mekaila":[0,137,0.4273],"melodia":[0,26,0.0],"meyana":[0,18,0.0],"michaelah":[0,223,0.4697],"michaila":[0,292,0.4931],"mikali":[0,27,0.0],"minelly":[0,32,0.0],"minji":[0,51,0.0],"mirayah":[0,95,0.0],"mirina":[0,12,0.0],"mirisa":[0,30,0.0],"miyana":[0,627,0.5595],"miyonna":[0,278,0.4888],"monteria":[0,27,0.0],"morisa":[0,5,0.0],"mynisha":[0,13,0.0],"myrka":[0,525,0.544],"naajia":[0,10,0.0],"nabeela":[0,45,0.0],"naela":[0,99,0.0],"nahomy":[0,1418,0.6303],"nahrain":[0,5,0.0],"naraly":[0,312,0.4988],"nashell":[0,20,0.0],"nateal":[0,5,0.0],"natifah":[0,10,0.0],"nayab":[0,70,0.0],"nicala":[0,18,0.0],"nicoleanne":[0,33,0.0],"niesa":[0,21,0.0],"nikolina":[0,439,0.5285],"nilufar":[0,10,0.0],"nimra":[0,199,0.4598],"ninah":[0,217,0.4673],"niosha":[0,5,0.0],"nneoma":[0,233,0.4735],"nyaisha":[0,123,0.418],"nylah":[0,13141,0.8237],"octayvia":[0,84,0.0],"oluremi":[5,5,0.0],"oluwabukola":[0,5,0.0],"oluwadamilola":[175,279,0.3266],"oshai":[28,10,0.0],"paisha":[0,5,0.0],"parita":[0,5,0.0],"peyten":[131,508,0.4461],"purva":[0,64,0.0],"qadira":[0,57,0.0],"quaneeka":[0,5,0.0],"quantasha":[0,5,0.0],"quiesha":[0,12,0.0],"raana":[0,5,0.0],"raianna":[0,116,0.4129],"rakiesha":[0,5,0.0],"raneem":[0,702,0.5693],"raneen":[0,159,0.4403],"raphaella":[0,354,0.5098],"rasheedat":[0,5,0.0],"ravina":[0,105,0.4042],"raychele":[0,10,0.0],"reahna":[0,10,0.0],"reality":[0,271,0.4866],"reiana":[0,79,0.0],"renasha":[0,5,0.0],"rhealyn":[0,63,0.0],"rickayla":[0,173,0.4476],"rickel":[0,37,0.0],"rikkilynn":[0,5,0.0],"rizelle":[0,5,0.0],"rodnecia":[0,10,0.0],"ronekia":[0,5,0.0],"roseli":[0,44,0.0],"royelle":[0,133,0.4248],"ruchy":[0,524,0.5439],"rumana":[0,15,0.0],"safiah":[0,5,0.0],"sahiba":[0,144,0.4317],"sajni":[0,34,0.0],"samanntha":[0,21,0.0],"samita":[0,5,0.0],"saraih":[0,170,0.4461],"sasharae":[0,5,0.0],"sayler":[54,806,0.55],"sekayi":[0,5,0.0],"seleny":[0,90,0.0],"senetria":[0,5,0.0],"sequoyia":[0,5,0.0],"shadeja":[0,50,0.0],"shadey":[0,16,0.0],"shakaira":[0,25,0.0],"shakalia":[0,5,0.0],"shakeah":[0,5,0.0],"shakeidra":[0,5,0.0],"shakierra":[0,32,0.0],"shalante":[0,5,0.0],"shalease":[0,16,0.0],"shalisia":[0,5,0.0],"shanail":[0,5,0.0],"shanarra":[0,5,0.0],"shanbria":[0,10,0.0],"shandera":[0,5,0.0],"shaneesa":[0,5,0.0],"shanesa":[0,5,0.0],"shanesse":[0,5,0.0],"shaniquwa":[0,5,0.0],"shanissa":[0,12,0.0],"shaquaila":[0,5,0.0],"shaquane":[5,5,0.0],"shaqueda":[0,5,0.0],"sharail":[0,5,0.0],"sharinna":[0,5,0.0],"shariyah":[0,495,0.5389],"shatay":[0,5,0.0],"shatiah":[0,5,0.0],"shatoni":[0,5,0.0],"shavion":[0,5,0.0],"sheaira":[0,5,0.0],"shealy":[0,34,0.0],"shlomit":[0,5,0.0],"shynece":[0,11,0.0],"shyteria":[0,66,0.0],"sofi":[0,684,0.567],"soliel":[0,86,0.0],"soriah":[0,437,0.5281],"stephanieanne":[0,10,0.0],"stevani":[0,5,0.0],"sumedha":[0,169,0.4456],"supreet":[0,35,0.0],"sydnea":[0,12,0.0],"syera":[0,43,0.0],"taelyr":[0,92,0.0],"tahmina":[0,66,0.0],"tahtiana":[0,110,0.4083],"taitiana":[0,27,0.0],"taiyanna":[0,15,0.0],"takiara":[0,20,0.0],"talyor":[0,5,0.0],"tanaiya":[0,167,0.4445],"taniyah":[0,4201,0.7247],"taquira":[0,38,0.0],"tashiya":[0,99,0.0],"tashyana":[0,10,0.0],"tasnia":[0,217,0.4673],"tatayanna":[0,23,0.0],"tattianna":[0,83,0.0],"taylie":[0,372,0.5141],"taylorrae":[0,22,0.0],"taytum":[552,3619,0.6282],"teaerra":[0,5,0.0],"teann":[0,5,0.0],"tejah":[0,97,0.0],"tekeria":[0,23,0.0],"tequana":[0,5,0.0],"tequira":[0,5,0.0],"terianna":[0,92,0.0],"terriona":[0,386,0.5173],"thomesha":[0,33,0.0],"tiaunna":[0,80,0.0],"tiffanique":[0,11,0.0],"tirrany":[0,5,0.0],"tiuana":[0,5,0.0],"tomeisha":[0,15,0.0],"torilyn":[0,30,0.0],"trelisa":[0,5,0.0],"treneisha":[0,5,0.0],"treona":[0,47,0.0],"treshell":[0,5,0.0],"treyana":[0,71,0.0],"treyonna":[0,33,0.0],"tuyetnhung":[0,5,0.0],"tyecia":[0,5,0.0],"tykeya":[0,43,0.0],"tykeyah":[0,46,0.0],"tykiesha":[0,5,0.0],"tykira":[0,299,0.4951],"tymiesha":[0,5,0.0],"tyquanna":[0,5,0.0],"tyranesha":[0,10,0.0],"uniquewa":[0,5,0.0],"uroosa":[0,16,0.0],"vannida":[0,23,0.0],"xena":[0,3331,0.7045],"yadria":[0,5,0.0],"yaiza":[0,463,0.5331],"yanae":[0,50,0.0],"yanais":[0,10,0.0],"yanellie":[0,69,0.0],"yared":[684,87,0.5123],"yarimar":[0,129,0.4221],"yarixa":[0,172,0.4471],"yazzmine":[0,18,0.0],"yomaly":[0,10,0.0],"yosselyn":[0,206,0.4628],"yousra":[0,308,0.4977],"yudi":[0,26,0.0],"zamora":[0,1369,0.6273],"zarai":[0,352,0.5093],"zea":[0,292,0.4931],"zerena":[0,45,0.0],"ziara":[0,517,0.5427],"zoyla":[0,15,0.0],"zykeia":[0,21,0.0],"devanta":[229,0,0.472],"dvante":[201,0,0.4606],"jevante":[160,0,0.4408],"devaunte":[130,0,0.4228],"anfernee":[1287,0,0.6219],"jaquavious":[832,0,0.584],"trevonn":[224,0,0.47],"davanta":[86,0,0.0],"devantae":[168,0,0.4451],"devontre":[166,0,0.444],"detavious":[88,0,0.0],"dvonta":[48,0,0.0],"jovonta":[79,0,0.0],"kage":[1518,0,0.6363],"tresean":[644,0,0.5618],"delvante":[29,0,0.0],"dequante":[126,0,0.4201],"kaiden":[51057,1582,0.9159],"kohlton":[408,0,0.5221],"levante":[71,0,0.0],"tavonte":[138,0,0.428],"delvonta":[38,0,0.0],"devonti":[18,0,0.0],"keagen":[1047,22,0.5933],"kendrae":[11,0,0.0],"patryck":[74,0,0.0],"zakarie":[196,0,0.4585],"daray":[66,0,0.0],"demitre":[51,0,0.0],"devontai":[35,0,0.0],"devontaye":[64,0,0.0],"devontea":[47,0,0.0],"esgardo":[39,0,0.0],"jakeel":[71,0,0.0],"jaquill":[40,0,0.0],"liban":[440,0,0.5287],"qadry":[34,0,0.0],"quadry":[67,0,0.0],"treshaun":[868,5,0.5848],"cage":[997,0,0.5997],"chaquille":[22,5,0.0],"daion":[247,0,0.4785],"dequavious":[122,0,0.4173],"devontez":[39,0,0.0],"dimarco":[98,0,0.0],"dimitric":[24,0,0.0],"ibrahima":[1053,0,0.6045],"jaelen":[1390,217,0.5546],"jahlani":[319,269,0.3005],"johntavis":[21,0,0.0],"kevante":[98,0,0.0],"levonta":[19,0,0.0],"quadree":[60,0,0.0],"raeshon":[48,0,0.0],"ruslan":[590,0,0.5542],"soham":[1048,0,0.6041],"yashua":[335,0,0.505],"zackeriah":[97,0,0.0],"brennin":[207,0,0.4632],"damante":[99,0,0.0],"danzelle":[13,0,0.0],"daryon":[166,0,0.444],"demaria":[59,382,0.4581],"dequanta":[22,0,0.0],"dyllen":[180,0,0.4511],"ezana":[578,0,0.5524],"grae":[160,157,0.2525],"jaguar":[68,0,0.0],"jonhatan":[75,0,0.0],"kaleel":[542,0,0.5468],"kasen":[10778,118,0.7987],"konor":[302,0,0.496],"kourtland":[132,0,0.4241],"kron":[175,0,0.4486],"lathen":[416,0,0.5238],"makoa":[1288,0,0.622],"malike":[166,0,0.444],"maxamillian":[175,0,0.4486],"mergim":[25,0,0.0],"montelle":[18,0,0.0],"nequan":[34,0,0.0],"rajbir":[30,0,0.0],"saquon":[25,0,0.0],"shariq":[104,0,0.4034],"shaydon":[152,0,0.4364],"shuhei":[29,0,0.0],"suede":[281,84,0.3945],"tiberius":[1262,0,0.6202],"tiree":[39,0,0.0],"trez":[39,0,0.0],"zacheus":[33,0,0.0],"akiel":[130,0,0.4228],"alontae":[218,0,0.4677],"alyxander":[189,0,0.4553],"bodee":[683,5,0.5634],"braedyn":[2282,291,0.6049],"braydan":[1171,10,0.6092],"caulin":[174,0,0.4481],"coner":[124,0,0.4187],"dacotah":[76,32,0.2862],"dakim":[17,0,0.0],"daltyn":[320,0,0.501],"dalvyn":[12,0,0.0],"damontre":[155,0,0.4381],"dantre":[65,0,0.0],"darnay":[24,0,0.0],"darrein":[28,7,0.0],"delino":[7,0,0.0],"demarquise":[33,0,0.0],"denerio":[7,0,0.0],"deqwan":[48,0,0.0],"deundrea":[7,0,0.0],"devontia":[12,0,0.0],"dezjuan":[22,0,0.0],"dieon":[51,0,0.0],"dilyn":[310,230,0.3137],"dimitre":[18,0,0.0],"dmitry":[609,0,0.5569],"dokota":[55,0,0.0],"domonik":[114,0,0.4114],"dovonte":[12,0,0.0],"drequan":[520,0,0.5432],"dreyon":[47,0,0.0],"duchein":[7,0,0.0],"edem":[103,0,0.4026],"garette":[38,0,0.0],"grason":[380,0,0.516],"hever":[136,0,0.4267],"hovhannes":[73,0,0.0],"jamaree":[814,5,0.5791],"jaquille":[140,0,0.4292],"jaredd":[7,0,0.0],"jevonta":[24,0,0.0],"jevontae":[41,0,0.0],"jodice":[7,0,0.0],"kadir":[508,0,0.5412],"kainan":[877,0,0.5886],"kalep":[67,0,0.0],"karapet":[23,0,0.0],"keylin":[315,1126,0.4936],"luisfelipe":[63,0,0.0],"mahamadou":[391,0,0.5184],"marcquez":[25,0,0.0],"miquan":[129,0,0.4221],"moyses":[137,0,0.4273],"osten":[187,0,0.4544],"quasean":[76,0,0.0],"quinzel":[12,42,0.0],"ridwan":[670,37,0.5401],"roper":[607,8,0.5505],"rykeem":[34,0,0.0],"samaad":[203,0,0.4615],"shaqueal":[44,0,0.0],"shayden":[960,289,0.476],"tadarrius":[69,0,0.0],"teshaun":[208,0,0.4636],"tevaris":[12,0,0.0],"trelon":[116,0,0.4129],"treylon":[302,0,0.496],"troyal":[7,0,0.0],"wanya":[484,17,0.5216],"yancarlos":[186,0,0.4539],"yeltsin":[43,0,0.0],"yusif":[398,0,0.52],"zakhary":[31,0,0.0],"zechary":[25,0,0.0],"adarrius":[97,0,0.0],"adhemar":[36,0,0.0],"adilson":[73,0,0.0],"adrein":[56,0,0.0],"aerick":[49,0,0.0],"aerik":[84,0,0.0],"agassi":[6,0,0.0],"aleks":[464,0,0.5333],"almir":[418,0,0.5242],"amadou":[1177,0,0.6142],"antonin":[105,0,0.4042],"aqib":[198,0,0.4593],"ariston":[389,0,0.518],"armany":[208,0,0.4636],"armeen":[55,5,0.0],"azzam":[184,0,0.453],"berny":[67,0,0.0],"broxton":[296,0,0.4943],"bryent":[32,0,0.0],"bryor":[238,0,0.4753],"casson":[68,0,0.0],"caymen":[280,18,0.465],"chrishaun":[281,5,0.4827],"codyallen":[6,0,0.0],"codyjames":[23,0,0.0],"dahlton":[115,0,0.4121],"daire":[248,11,0.4622],"dajion":[110,0,0.4083],"dakkota":[41,6,0.0],"dallyn":[214,32,0.416],"daltin":[198,0,0.4593],"damontez":[55,0,0.0],"dantrel":[19,0,0.0],"dariyon":[181,10,0.4323],"darrias":[11,0,0.0],"dasmon":[6,0,0.0],"davantae":[28,0,0.0],"davious":[32,0,0.0],"davontaye":[6,0,0.0],"daymen":[63,0,0.0],"dayshaun":[375,0,0.5148],"deavonte":[24,0,0.0],"demetree":[26,0,0.0],"demitric":[6,0,0.0],"demitrie":[16,0,0.0],"denarious":[6,0,0.0],"deontee":[6,0,0.0],"deshawnte":[12,0,0.0],"detarius":[19,0,0.0],"devente":[12,0,0.0],"devontee":[20,0,0.0],"devunta":[6,0,0.0],"deyvon":[56,0,0.0],"dillinger":[409,0,0.5223],"dmetri":[22,0,0.0],"donquarius":[39,0,0.0],"donterrio":[28,0,0.0],"earron":[11,0,0.0],"elante":[35,0,0.0],"erran":[6,0,0.0],"faraj":[40,0,0.0],"fazon":[11,0,0.0],"frankel":[6,0,0.0],"ginno":[6,0,0.0],"harsimran":[32,94,0.3134],"ihab":[23,0,0.0],"inmar":[47,0,0.0],"isain":[11,0,0.0],"jadarian":[286,0,0.4913],"jager":[601,0,0.5558],"jahkeem":[311,0,0.4986],"jahrell":[210,0,0.4644],"jajaun":[22,0,0.0],"jaquail":[98,0,0.0],"jarez":[17,0,0.0],"jarrelle":[11,0,0.0],"jarvus":[11,0,0.0],"javaunte":[6,0,0.0],"javohn":[125,0,0.4194],"jeanluke":[12,0,0.0],"jerez":[12,0,0.0],"johnfrancis":[11,0,0.0],"joncarlo":[248,0,0.4789],"jordanmichael":[11,0,0.0],"josealfredo":[170,0,0.4461],"jovonni":[276,0,0.4882],"juwann":[66,0,0.0],"juwaun":[146,0,0.4329],"jvante":[11,0,0.0],"kaivon":[313,0,0.4991],"kamonte":[88,0,0.0],"kasaun":[78,0,0.0],"kaylob":[315,0,0.4997],"keeghan":[354,84,0.427],"keontre":[111,0,0.4091],"kujuan":[6,0,0.0],"kumail":[42,0,0.0],"laquavious":[38,0,0.0],"leibish":[212,0,0.4653],"leonta":[25,0,0.0],"maaz":[715,0,0.5709],"macen":[940,5,0.5919],"mackinley":[356,418,0.312],"madhav":[608,0,0.5568],"maged":[22,0,0.0],"maleik":[405,0,0.5215],"mchale":[33,0,0.0],"mounir":[125,0,0.4194],"nagi":[118,5,0.401],"nathyn":[418,0,0.5242],"nickalis":[39,0,0.0],"nigell":[6,0,0.0],"ossama":[23,0,0.0],"ottmar":[13,0,0.0],"ousman":[351,0,0.5091],"patrickjames":[23,0,0.0],"peirce":[94,0,0.0],"peris":[6,22,0.0],"perrish":[6,0,0.0],"qualon":[24,0,0.0],"quaran":[81,0,0.0],"quashun":[38,0,0.0],"quatavius":[32,0,0.0],"queshawn":[53,0,0.0],"quindale":[12,0,0.0],"quraan":[12,0,0.0],"raid":[22,0,0.0],"rawle":[11,0,0.0],"reily":[536,361,0.3529],"reinier":[39,0,0.0],"reny":[11,6,0.0],"riggs":[2657,5,0.6838],"rohun":[37,0,0.0],"ruvim":[642,0,0.5615],"sabastion":[263,0,0.484],"savan":[109,0,0.4075],"savio":[231,0,0.4727],"sebastin":[92,0,0.0],"shaqville":[21,0,0.0],"sheldan":[22,0,0.0],"sidi":[102,0,0.4017],"sivad":[18,0,0.0],"tadhg":[580,0,0.5527],"tallan":[163,0,0.4424],"tannen":[190,0,0.4558],"tenzin":[1590,1217,0.3906],"tervon":[21,0,0.0],"tredarius":[134,0,0.4254],"tryce":[177,0,0.4496],"tyquawn":[17,0,0.0],"ulisis":[12,0,0.0],"vinicius":[385,0,0.5171],"wilkens":[30,0,0.0],"yahir":[12124,50,0.8137],"yanni":[764,271,0.4451],"yasuhiro":[6,0,0.0],"zacari":[807,188,0.4863],"zacorey":[43,0,0.0],"zakkariah":[6,0,0.0],"zakory":[28,0,0.0],"zohair":[196,0,0.4585],"abdoul":[569,0,0.551],"abdoulaye":[912,0,0.592],"adeem":[11,0,0.0],"adulfo":[5,0,0.0],"afif":[20,0,0.0],"akeam":[5,0,0.0],"akinola":[20,0,0.0],"alejadro":[5,0,0.0],"alekzander":[1141,0,0.6115],"alexxander":[263,0,0.484],"alsexander":[5,0,0.0],"alvi":[80,0,0.0],"anwan":[5,0,0.0],"arieh":[99,0,0.0],"ashot":[111,0,0.4091],"aveon":[484,20,0.519],"ayush":[2027,0,0.6614],"bacarri":[5,0,0.0],"balil":[13,0,0.0],"balin":[421,0,0.5249],"benzel":[5,0,0.0],"bevon":[17,0,0.0],"bhargav":[271,0,0.4866],"bismarck":[38,0,0.0],"bodey":[598,0,0.5553],"braxten":[1815,5,0.6502],"brelin":[40,0,0.0],"brennyn":[134,144,0.2532],"brentten":[5,0,0.0],"brodric":[101,0,0.4009],"caelin":[334,430,0.3245],"cebastian":[205,0,0.4624],"channen":[16,0,0.0],"cheikh":[492,0,0.5384],"christianjames":[146,0,0.4329],"chueyee":[27,0,0.0],"courtlan":[28,0,0.0],"curtez":[76,0,0.0],"daesean":[247,0,0.4785],"dakwan":[82,0,0.0],"dali":[51,153,0.3464],"damitri":[38,0,0.0],"danieljoseph":[21,0,0.0],"dantel":[5,0,0.0],"dareece":[5,0,0.0],"darquan":[28,0,0.0],"darryan":[15,19,0.0],"davantay":[5,0,0.0],"davarian":[34,0,0.0],"davarus":[5,0,0.0],"daveyon":[241,0,0.4764],"davyon":[325,0,0.5024],"dawann":[5,0,0.0],"dayjon":[48,0,0.0],"daymian":[656,0,0.5634],"deaton":[51,0,0.0],"dechaun":[5,0,0.0],"decoda":[88,0,0.0],"decody":[5,0,0.0],"deiontae":[103,0,0.4026],"deivi":[71,0,0.0],"dejhon":[18,0,0.0],"dekevious":[10,0,0.0],"demaree":[76,11,0.0],"demontrae":[69,0,0.0],"deneco":[5,0,0.0],"denoris":[5,0,0.0],"deontavious":[28,0,0.0],"derious":[37,0,0.0],"deryn":[33,201,0.407],"deshaunte":[5,0,0.0],"deshonte":[5,6,0.0],"desmend":[10,0,0.0],"destyn":[436,169,0.4009],"desuan":[5,0,0.0],"devanti":[5,0,0.0],"devaughnte":[10,0,0.0],"devonnte":[5,0,0.0],"dezmin":[273,0,0.4872],"diedrich":[32,0,0.0],"dikembe":[31,0,0.0],"dilpreet":[38,37,0.0],"dilynn":[40,498,0.5056],"diven":[5,0,0.0],"divontae":[5,0,0.0],"domnic":[100,0,0.4],"dondrey":[5,0,0.0],"donquell":[11,0,0.0],"dontevious":[11,0,0.0],"dorrien":[106,0,0.4051],"dremon":[5,0,0.0],"dreshun":[33,0,0.0],"dryden":[456,0,0.5318],"dshon":[44,0,0.0],"dulan":[5,0,0.0],"dyonte":[30,0,0.0],"edinson":[255,0,0.4813],"edrees":[76,0,0.0],"elijahjuan":[27,0,0.0],"elijan":[119,0,0.4151],"elison":[91,11,0.3584],"emonte":[140,0,0.4292],"estiven":[272,0,0.4869],"eswin":[92,0,0.0],"fabiano":[84,0,0.0],"gaje":[137,0,0.4273],"gelacio":[27,0,0.0],"gevonte":[20,0,0.0],"gevorg":[103,0,0.4026],"gilead":[90,0,0.0],"gradon":[50,0,0.0],"guage":[103,0,0.4026],"gurjeet":[5,0,0.0],"haben":[51,21,0.0],"harshil":[250,0,0.4796],"hassaan":[121,0,0.4166],"haziel":[1383,5,0.6262],"helal":[10,0,0.0],"ikechi":[41,0,0.0],"iosefa":[89,0,0.0],"isayah":[781,0,0.5785],"izacc":[109,0,0.4075],"jabrill":[29,0,0.0],"jackob":[122,0,0.4173],"jadarrius":[350,0,0.5088],"jadell":[23,0,0.0],"jaequan":[232,0,0.4731],"jahmall":[5,0,0.0],"jahmari":[1357,0,0.6265],"jaimon":[78,0,0.0],"jakiel":[11,0,0.0],"jaliyl":[11,0,0.0],"jamair":[152,0,0.4364],"jamauri":[1009,11,0.5952],"jamique":[15,0,0.0],"jaquale":[10,0,0.0],"javarian":[84,0,0.0],"javonti":[5,0,0.0],"jawaad":[47,0,0.0],"jaydan":[3205,585,0.6053],"jayon":[933,0,0.594],"jaythan":[930,0,0.5937],"jeries":[5,0,0.0],"jmari":[257,0,0.482],"joesef":[10,0,0.0],"johnchristian":[45,0,0.0],"johnmorgan":[5,0,0.0],"jomari":[365,59,0.4524],"joniel":[675,0,0.5659],"jooyoung":[5,0,0.0],"josephjohn":[5,0,0.0],"joston":[21,0,0.0],"josuel":[143,0,0.4311],"jouan":[5,0,0.0],"jvonte":[45,0,0.0],"kadar":[170,0,0.4461],"kaegan":[400,207,0.3668],"kahleel":[277,0,0.4885],"kalyb":[175,0,0.4486],"kashun":[33,0,0.0],"kaulin":[83,0,0.0],"kaylub":[179,0,0.4506],"kazz":[36,0,0.0],"keeland":[61,0,0.0],"kenai":[2013,68,0.642],"keondrick":[67,0,0.0],"kevinjoseph":[15,0,0.0],"kevonta":[170,0,0.4461],"keyandre":[198,0,0.4593],"khabir":[40,0,0.0],"kharon":[236,0,0.4746],"kievon":[11,0,0.0],"kollen":[106,0,0.4051],"kray":[16,0,0.0],"kresten":[5,0,0.0],"kunaal":[65,0,0.0],"kyer":[17,0,0.0],"kyril":[28,0,0.0],"ladavid":[5,0,0.0],"ladonta":[22,0,0.0],"lamarion":[1137,0,0.6112],"lamarious":[38,0,0.0],"lamarus":[5,0,0.0],"lamicheal":[20,0,0.0],"larobert":[5,0,0.0],"lathomas":[5,0,0.0],"lawaun":[5,0,0.0],"ldarius":[5,0,0.0],"leovigildo":[5,0,0.0],"levontae":[26,0,0.0],"lujack":[5,0,0.0],"macauly":[5,0,0.0],"malcohm":[5,0,0.0],"maliki":[1160,0,0.6129],"malkolm":[16,0,0.0],"marqavious":[30,0,0.0],"martes":[5,0,0.0],"martwon":[5,0,0.0],"matrix":[115,0,0.4121],"md":[500,0,0.5398],"moices":[26,0,0.0],"momin":[312,0,0.4988],"morgun":[49,0,0.0],"mubeen":[39,0,0.0],"mustafaa":[32,0,0.0],"nafiz":[10,0,0.0],"naiym":[5,0,0.0],"narcisco":[5,0,0.0],"nealon":[18,0,0.0],"neelesh":[51,0,0.0],"neon":[75,7,0.0],"nikolay":[492,0,0.5384],"nissim":[272,0,0.4869],"niv":[91,26,0.3217],"noach":[362,0,0.5117],"oluseun":[5,0,0.0],"ostin":[441,0,0.5289],"ozan":[318,0,0.5005],"padriac":[5,0,0.0],"patrizio":[5,0,0.0],"phazon":[5,0,0.0],"philmon":[5,0,0.0],"qua":[10,0,0.0],"quadell":[10,0,0.0],"quatavious":[66,0,0.0],"quintarious":[60,0,0.0],"rafee":[5,0,0.0],"rahquan":[11,0,0.0],"rameek":[35,0,0.0],"randolfo":[5,0,0.0],"ravaughn":[29,0,0.0],"rephael":[70,0,0.0],"reymon":[58,0,0.0],"rishabh":[977,0,0.598],"roberth":[147,0,0.4335],"rodarius":[151,0,0.4358],"rokeem":[5,0,0.0],"rondarious":[15,0,0.0],"ryean":[5,0,0.0],"schafer":[64,0,0.0],"seandouglas":[5,0,0.0],"shadman":[146,0,0.4329],"shaikh":[41,0,0.0],"shamare":[18,0,0.0],"shaquiel":[51,5,0.0],"shaquielle":[38,0,0.0],"silvanus":[36,0,0.0],"simranjit":[14,70,0.0],"stanislav":[297,0,0.4946],"steffano":[20,0,0.0],"sumair":[13,0,0.0],"tadeh":[21,0,0.0],"takeru":[89,0,0.0],"talik":[270,0,0.4863],"talis":[94,16,0.3489],"tarion":[50,0,0.0],"tejon":[171,0,0.4466],"terriell":[5,0,0.0],"tesean":[131,0,0.4235],"timothyjohn":[5,0,0.0],"tishaun":[52,0,0.0],"toray":[5,0,0.0],"travaun":[5,0,0.0],"travionne":[5,0,0.0],"tremar":[65,0,0.0],"trenon":[11,0,0.0],"trentyn":[611,0,0.5572],"tresten":[134,0,0.4254],"trevius":[34,0,0.0],"trucker":[15,0,0.0],"tyliek":[105,0,0.4042],"tyquann":[23,0,0.0],"tyquin":[5,0,0.0],"tyreef":[5,0,0.0],"tyrian":[238,6,0.4657],"tyrrel":[10,0,0.0],"tyvan":[43,0,0.0],"tyvone":[25,0,0.0],"tyvonne":[10,0,0.0],"usamah":[42,0,0.0],"usef":[5,0,0.0],"vontavious":[48,0,0.0],"vontavius":[10,0,0.0],"yahshua":[331,0,0.504],"yorick":[49,0,0.0],"yosuf":[38,0,0.0],"zachriah":[10,0,0.0],"zakaree":[82,0,0.0],"zavien":[995,0,0.5996],"zeph":[107,0,0.4059],"zohrab":[5,0,0.0],"zyair":[2707,142,0.6565],"rosangelica":[0,150,0.4352],"zhane":[395,1943,0.5599],"koraima":[0,236,0.4746],"kadesia":[0,91,0.0],"solmayra":[0,34,0.0],"yarelyn":[0,39,0.0],"yoandra":[0,32,0.0],"dijonnaise":[0,28,0.0],"itzayana":[0,4335,0.7274],"cadedra":[0,55,0.0],"dijonna":[0,24,0.0],"emaleigh":[0,1115,0.6095],"infinity":[15,1000,0.5924],"yaritsa":[0,116,0.4129],"corayma":[0,75,0.0],"shaianne":[0,454,0.5314],"atianna":[0,198,0.4593],"hydeia":[0,214,0.4661],"mikhayla":[0,371,0.5139],"solmaira":[0,15,0.0],"diamonde":[0,37,0.0],"kadeeja":[0,48,0.0],"kadeesha":[0,49,0.0],"karenna":[0,337,0.5055],"mistica":[0,25,0.0],"shaiann":[0,331,0.504],"yariza":[0,60,0.0],"justyce":[668,2459,0.5497],"katarena":[0,45,0.0],"korayma":[0,122,0.4173],"aniqa":[0,89,0.0],"braylee":[82,6675,0.7567],"jhane":[0,275,0.4879],"mikaylah":[0,1515,0.6361],"shakeyah":[0,12,0.0],"strange":[0,17,0.0],"taiylor":[0,272,0.4869],"tajae":[198,282,0.315],"tatiyanna":[0,501,0.54],"yesmin":[0,150,0.4352],"antwanique":[0,45,0.0],"cadesha":[0,40,0.0],"fonisha":[0,11,0.0],"itsel":[0,197,0.4589],"jessicamae":[0,16,0.0],"khadijha":[0,50,0.0],"mckaila":[0,246,0.4782],"tahler":[0,11,0.0],"taylyn":[45,918,0.5688],"timaya":[0,230,0.4723],"yarelin":[0,192,0.4567],"ariyanna":[0,2808,0.6897],"briunna":[0,115,0.4121],"caisey":[0,44,0.0],"devanne":[0,30,0.0],"dijonae":[0,24,0.0],"dyandra":[0,30,0.0],"hailea":[0,328,0.5032],"jayln":[425,232,0.3645],"mykaila":[0,420,0.5246],"nekaybaw":[0,23,0.0],"presli":[0,483,0.5368],"shaqueria":[0,33,0.0],"tianah":[0,255,0.4813],"tyreeka":[0,15,0.0],"yaricza":[0,45,0.0],"aislin":[0,1311,0.6235],"allea":[0,126,0.4201],"alleshia":[0,14,0.0],"alyssah":[0,696,0.5685],"amaranta":[0,138,0.428],"anaysa":[0,19,0.0],"arayna":[0,279,0.4891],"ariauna":[0,400,0.5204],"briell":[0,250,0.4796],"briya":[0,290,0.4925],"chandlar":[61,111,0.2885],"chavely":[0,38,0.0],"coriana":[0,283,0.4904],"dajanay":[0,139,0.4286],"danaysha":[0,194,0.4576],"daryen":[38,14,0.0],"dashai":[0,38,0.0],"deionna":[0,97,0.0],"emylie":[0,172,0.4471],"geonna":[0,255,0.4813],"ilish":[0,9,0.0],"jadelynn":[0,1184,0.6147],"jaleigh":[0,915,0.5923],"jaritsa":[0,9,0.0],"jaylah":[0,10492,0.8042],"kadeidre":[0,21,0.0],"kadidra":[0,17,0.0],"kadiedra":[0,22,0.0],"kamyra":[0,846,0.5855],"katriona":[0,93,0.0],"kellsy":[0,14,0.0],"kynara":[0,9,0.0],"madilyne":[0,327,0.5029],"madisan":[0,193,0.4571],"majestic":[214,277,0.3036],"mikhala":[0,127,0.4208],"nahja":[0,58,0.0],"najha":[0,33,0.0],"nayelie":[0,528,0.5445],"queenisha":[0,9,0.0],"sharvae":[0,9,0.0],"tailyr":[0,15,0.0],"tateanna":[0,74,0.0],"vendela":[0,64,0.0],"weronika":[0,298,0.4948],"aashna":[0,697,0.5686],"adaly":[0,940,0.5946],"ajanee":[0,116,0.4129],"alaini":[0,25,0.0],"alainie":[0,13,0.0],"anysa":[0,207,0.4632],"ariyan":[559,392,0.3501],"asyia":[0,79,0.0],"autiana":[0,48,0.0],"bashirah":[0,13,0.0],"batool":[0,378,0.5155],"breesha":[0,14,0.0],"breonica":[0,47,0.0],"brierra":[0,34,0.0],"cadeshia":[0,18,0.0],"chianna":[0,117,0.4136],"corryne":[0,13,0.0],"cyanna":[0,418,0.5242],"dalaney":[0,625,0.5592],"danetria":[0,8,0.0],"daquasia":[0,13,0.0],"darriane":[0,14,0.0],"demy":[0,67,0.0],"diani":[0,175,0.4486],"elexius":[0,71,0.0],"erycka":[0,13,0.0],"gabrialle":[0,28,0.0],"gayane":[0,63,0.0],"heavenlee":[0,814,0.5821],"hikari":[5,269,0.4787],"imanni":[0,104,0.4034],"indasia":[0,8,0.0],"isel":[0,279,0.4891],"itiana":[0,8,0.0],"jabrina":[0,13,0.0],"jailynn":[44,2267,0.66],"jenitza":[0,24,0.0],"jimmia":[0,36,0.0],"justise":[66,264,0.403],"kabrea":[0,61,0.0],"kadijha":[0,23,0.0],"kasea":[0,13,0.0],"kaylean":[0,92,0.0],"kedisha":[0,8,0.0],"kennady":[0,1830,0.6525],"kevanna":[0,15,0.0],"krystianna":[0,104,0.4034],"maleeha":[0,287,0.4916],"marrina":[0,45,0.0],"mayim":[0,48,0.0],"meher":[12,805,0.5739],"mikayle":[5,55,0.0],"montaya":[0,44,0.0],"nakiyah":[0,1229,0.6179],"norhan":[0,61,0.0],"paeton":[86,441,0.4555],"paityn":[29,6200,0.7554],"quayla":[0,27,0.0],"quintasia":[0,206,0.4628],"qwanesha":[0,8,0.0],"salia":[0,165,0.4435],"sapir":[0,76,0.0],"saydie":[0,598,0.5553],"seleni":[0,145,0.4323],"shilynn":[0,180,0.4511],"silina":[0,8,0.0],"silk":[0,8,0.0],"suleica":[0,8,0.0],"trionna":[0,25,0.0],"vayda":[0,2739,0.6875],"yamaya":[0,8,0.0],"yaricsa":[0,13,0.0],"yarisa":[0,67,0.0],"yasmaine":[0,20,0.0],"zhana":[0,159,0.4403],"adaobi":[0,41,0.0],"adira":[0,1732,0.6477],"aleeyah":[0,1490,0.6346],"alexah":[0,540,0.5465],"alexanne":[0,32,0.0],"alexsus":[0,99,0.0],"ambrianna":[0,48,0.0],"andreyna":[0,13,0.0],"aniza":[0,134,0.4254],"arizbeth":[0,1313,0.6237],"ashae":[0,36,0.0],"avrianna":[0,255,0.4813],"benecia":[0,25,0.0],"breckin":[1237,162,0.5563],"briella":[0,14201,0.8305],"brihana":[0,261,0.4833],"bryah":[0,201,0.4606],"bryahna":[0,63,0.0],"chariah":[0,112,0.4098],"chasmin":[0,12,0.0],"crysania":[0,7,0.0],"dajonna":[0,25,0.0],"danely":[0,542,0.5468],"dariyan":[24,23,0.0],"darrisha":[0,20,0.0],"davianna":[0,731,0.5728],"dianey":[0,221,0.4689],"dimesha":[0,12,0.0],"doraly":[0,12,0.0],"dua":[0,1253,0.6196],"eliya":[178,799,0.489],"emillee":[0,89,0.0],"emmelia":[0,558,0.5493],"euniqua":[0,22,0.0],"gabriana":[0,355,0.51],"gabriellia":[0,71,0.0],"haeleigh":[0,146,0.4329],"hayoung":[0,18,0.0],"ikeria":[0,57,0.0],"ironesha":[0,24,0.0],"jahnae":[0,490,0.538],"jakema":[0,13,0.0],"jameese":[0,7,0.0],"jarelis":[0,100,0.4],"jasmynne":[0,37,0.0],"jermeshia":[0,7,0.0],"kadeejah":[0,46,0.0],"kadejia":[0,25,0.0],"kadezia":[0,15,0.0],"kaitie":[0,17,0.0],"kalyna":[0,243,0.4771],"krissinda":[0,7,0.0],"kyira":[0,109,0.4075],"lajerrica":[0,12,0.0],"lisvet":[0,103,0.4026],"loghan":[558,609,0.3201],"mahum":[0,190,0.4558],"majerle":[0,22,0.0],"maleea":[0,240,0.476],"marisah":[0,110,0.4083],"marishia":[0,7,0.0],"mckinna":[0,318,0.5005],"montavia":[0,53,0.0],"nashali":[0,132,0.4241],"persephanie":[0,188,0.4548],"philesha":[0,7,0.0],"reyana":[0,320,0.501],"rodnesia":[0,7,0.0],"sakari":[264,624,0.4144],"samaira":[0,1566,0.639],"sereen":[0,485,0.5371],"shaianna":[0,45,0.0],"shakel":[28,16,0.0],"shanythia":[0,12,0.0],"shenille":[0,7,0.0],"siarrah":[0,40,0.0],"stevanna":[0,27,0.0],"stevonna":[0,12,0.0],"sukaina":[0,149,0.4346],"tateyana":[0,59,0.0],"tayvia":[0,144,0.4317],"teaghan":[76,1056,0.5698],"verenisse":[0,22,0.0],"wajiha":[0,110,0.4083],"abbigael":[0,162,0.4419],"abbygale":[0,814,0.5821],"acia":[0,6,0.0],"addisen":[6,1203,0.6134],"ahmani":[95,513,0.4698],"airianna":[0,543,0.547],"akeira":[0,262,0.4837],"aleczandria":[0,12,0.0],"aliceia":[0,28,0.0],"amaia":[0,4951,0.7389],"amiah":[0,4681,0.7341],"amreen":[0,357,0.5105],"anara":[0,385,0.5171],"anastasiya":[0,575,0.5519],"andranique":[0,11,0.0],"angenique":[0,6,0.0],"anndi":[0,6,0.0],"anyssia":[0,37,0.0],"armesha":[0,16,0.0],"ashantie":[0,52,0.0],"ashe":[336,192,0.3465],"ashelle":[0,6,0.0],"autumnn":[0,37,0.0],"aymara":[0,132,0.4241],"bansari":[0,17,0.0],"beca":[0,11,0.0],"blakelyn":[0,1318,0.624],"blessed":[191,251,0.3005],"braley":[11,311,0.4844],"breania":[0,19,0.0],"briara":[0,54,0.0],"briasha":[0,30,0.0],"briasia":[0,712,0.5705],"brylie":[5,2132,0.6644],"brynja":[0,143,0.4311],"cabria":[0,108,0.4067],"cadyn":[1048,407,0.4556],"camari":[1566,1091,0.4037],"capresha":[0,29,0.0],"catarena":[0,6,0.0],"celin":[0,55,0.0],"celsea":[0,29,0.0],"celyna":[0,61,0.0],"chabelli":[0,6,0.0],"chances":[0,16,0.0],"chanille":[0,12,0.0],"chrishonna":[0,12,0.0],"creosha":[0,6,0.0],"daje":[0,87,0.0],"daquanna":[0,18,0.0],"darresha":[0,11,0.0],"daylynn":[40,378,0.4741],"deaisa":[0,74,0.0],"dejonnae":[0,6,0.0],"delandria":[0,16,0.0],"denashia":[0,50,0.0],"deyadira":[0,6,0.0],"dezerey":[0,6,0.0],"dijone":[0,6,0.0],"dinalee":[0,6,0.0],"dominicia":[0,6,0.0],"domynique":[0,6,0.0],"dontrice":[0,6,0.0],"ehlana":[0,57,0.0],"elainey":[0,45,0.0],"elissabeth":[0,6,0.0],"emelly":[0,404,0.5213],"enny":[0,12,0.0],"esmerald":[0,11,0.0],"essance":[0,170,0.4461],"estafani":[0,45,0.0],"fahtima":[0,6,0.0],"falysha":[0,6,0.0],"feven":[0,200,0.4602],"gabiela":[0,6,0.0],"grettel":[0,1049,0.6042],"gurleen":[0,599,0.5555],"haliey":[0,255,0.4813],"hallye":[0,41,0.0],"hayliegh":[0,45,0.0],"heily":[0,713,0.5706],"houda":[0,112,0.4098],"ilanna":[0,92,0.0],"indonesia":[0,83,0.0],"ioana":[0,86,0.0],"israh":[0,37,0.0],"itianna":[0,6,0.0],"izamary":[0,31,0.0],"jacia":[0,98,0.0],"jahmia":[0,117,0.4136],"jakeena":[0,11,0.0],"jakora":[0,11,0.0],"jalacia":[0,69,0.0],"jaliah":[6,1148,0.6093],"jandell":[22,6,0.0],"jaqualyn":[96,11,0.3642],"jaquavia":[0,47,0.0],"jaquoya":[0,6,0.0],"jazmia":[0,46,0.0],"jeovana":[0,11,0.0],"jermia":[0,222,0.4693],"jlynn":[64,804,0.5444],"jocely":[0,31,0.0],"jonnesha":[0,16,0.0],"jonnica":[0,6,0.0],"juaniqua":[0,6,0.0],"jynessa":[0,33,0.0],"kadasia":[0,117,0.4136],"kadeedra":[0,15,0.0],"kadejha":[0,12,0.0],"kadetra":[0,6,0.0],"kadiesha":[0,24,0.0],"kadyn":[3254,1429,0.5101],"kaho":[0,108,0.4067],"kaitee":[0,6,0.0],"kaliya":[0,1039,0.6033],"kashari":[0,61,0.0],"kassity":[0,140,0.4292],"kateleen":[0,164,0.443],"kazzandra":[0,65,0.0],"kearah":[0,202,0.4611],"kebria":[0,6,0.0],"kedesha":[0,17,0.0],"keighla":[0,12,0.0],"keilly":[0,599,0.5555],"kelsia":[0,17,0.0],"kenlee":[64,2155,0.6499],"keshayla":[0,68,0.0],"keyry":[0,95,0.0],"khadedra":[0,25,0.0],"khadisha":[0,29,0.0],"khadjah":[0,37,0.0],"khaya":[0,243,0.4771],"kiabeth":[0,44,0.0],"kianne":[0,41,0.0],"kiersta":[0,22,0.0],"kitzia":[0,438,0.5283],"koressa":[0,6,0.0],"koryne":[0,6,0.0],"kulsum":[0,53,0.0],"kyneshia":[0,6,0.0],"lakiara":[0,6,0.0],"lasharee":[0,6,0.0],"lauraelizabeth":[0,6,0.0],"leeda":[0,22,0.0],"login":[126,11,0.393],"lynsea":[0,6,0.0],"maecy":[0,235,0.4742],"mahima":[0,473,0.535],"mahin":[164,16,0.411],"mahtab":[0,11,0.0],"makalia":[0,372,0.5141],"malasha":[0,95,0.0],"malayia":[0,479,0.5361],"markisa":[0,6,0.0],"markysha":[0,6,0.0],"marleyna":[0,56,0.0],"mckala":[0,230,0.4723],"mckyla":[0,137,0.4273],"megana":[0,36,0.0],"michalea":[0,45,0.0],"mishka":[0,738,0.5736],"myanna":[0,652,0.5628],"mynika":[0,6,0.0],"mystica":[0,41,0.0],"naje":[37,111,0.3255],"nakaya":[0,270,0.4863],"nateya":[0,6,0.0],"nayiri":[0,12,0.0],"nielah":[0,21,0.0],"nikalette":[0,6,0.0],"nilofar":[0,12,0.0],"nimah":[0,147,0.4335],"nishat":[0,167,0.4445],"oshia":[0,11,0.0],"ottavia":[0,38,0.0],"paiden":[137,127,0.2513],"phatima":[0,21,0.0],"princesa":[0,357,0.5105],"priscyla":[0,6,0.0],"priyal":[0,137,0.4273],"qualisha":[0,6,0.0],"quamisha":[0,6,0.0],"quannisha":[0,6,0.0],"quantashia":[0,6,0.0],"quinasia":[0,36,0.0],"rashara":[0,6,0.0],"ravenne":[0,61,0.0],"reaven":[0,6,0.0],"relina":[0,17,0.0],"rhyann":[0,488,0.5377],"rhylee":[257,2418,0.6196],"riho":[0,17,0.0],"sabrah":[0,13,0.0],"santerria":[0,6,0.0],"savona":[0,22,0.0],"seanice":[0,17,0.0],"shaakirah":[0,11,0.0],"shakya":[0,179,0.4506],"shaquandria":[0,6,0.0],"shaude":[0,6,0.0],"shikari":[0,6,0.0],"shynequa":[0,6,0.0],"skai":[76,988,0.5621],"stranje":[0,6,0.0],"suvanna":[0,11,0.0],"symphonie":[0,159,0.4403],"tahlor":[0,80,0.0],"tajmah":[0,11,0.0],"tariana":[0,171,0.4466],"taylynn":[0,1357,0.6265],"telor":[0,11,0.0],"teylar":[0,16,0.0],"tiffaniamber":[0,28,0.0],"timnesha":[0,6,0.0],"trami":[0,6,0.0],"tribeca":[0,6,0.0],"tyarra":[0,63,0.0],"urooj":[0,31,0.0],"vandela":[0,6,0.0],"walaa":[0,76,0.0],"xana":[0,156,0.4386],"yani":[111,315,0.3889],"yanise":[0,31,0.0],"yarixsa":[0,6,0.0],"yaslin":[0,633,0.5603],"yasmyn":[0,148,0.4341],"yavonna":[0,6,0.0],"yeira":[0,254,0.481],"ynhi":[0,6,0.0],"zakira":[0,463,0.5331],"zitlaly":[0,564,0.5503],"zoha":[0,1057,0.6048],"zori":[0,760,0.5762],"abrille":[0,10,0.0],"achante":[0,35,0.0],"adar":[106,52,0.295],"adaria":[0,117,0.4136],"adiam":[0,18,0.0],"aerianna":[0,378,0.5155],"ahja":[0,107,0.4059],"ahtyana":[0,5,0.0],"airi":[0,364,0.5122],"akaya":[0,124,0.4187],"akirah":[0,504,0.5405],"alah":[0,10,0.0],"alanta":[0,82,0.0],"alaundra":[0,10,0.0],"aleeah":[0,1485,0.6343],"aleise":[0,39,0.0],"aleksis":[5,68,0.0],"alexe":[0,15,0.0],"alexsondra":[0,5,0.0],"alexuss":[0,10,0.0],"alexya":[0,482,0.5366],"alexyz":[0,29,0.0],"alishah":[6,66,0.0],"alsatia":[0,17,0.0],"alyessa":[0,5,0.0],"alyssarae":[0,5,0.0],"amaree":[989,800,0.3596],"amba":[0,10,0.0],"analidia":[0,5,0.0],"andreena":[0,10,0.0],"aneissa":[0,49,0.0],"annajo":[0,29,0.0],"annysa":[0,10,0.0],"antanesha":[0,45,0.0],"antwanesha":[0,10,0.0],"anyia":[0,887,0.5896],"aquira":[0,44,0.0],"areen":[5,221,0.4604],"arlenis":[0,65,0.0],"arlenys":[0,43,0.0],"ashantis":[0,16,0.0],"ashawna":[0,107,0.4059],"ashleyrae":[0,5,0.0],"ashmi":[0,81,0.0],"asialyn":[0,31,0.0],"aslynn":[0,319,0.5008],"asmara":[0,167,0.4445],"atyana":[0,37,0.0],"aunyae":[0,38,0.0],"avrie":[10,1048,0.5992],"bailley":[0,71,0.0],"banisha":[0,5,0.0],"banna":[0,10,0.0],"batul":[0,81,0.0],"bellamy":[2634,3401,0.4261],"berea":[0,74,0.0],"biaunca":[0,5,0.0],"bonique":[0,5,0.0],"bonnibel":[0,44,0.0],"branesha":[0,25,0.0],"brayla":[0,609,0.5569],"brecia":[0,5,0.0],"brecklyn":[0,740,0.5738],"breeauna":[0,55,0.0],"breeya":[0,53,0.0],"brekia":[0,5,0.0],"brenea":[0,10,0.0],"breyanne":[0,17,0.0],"brianka":[0,5,0.0],"brianny":[0,794,0.58],"briceyda":[0,224,0.47],"brilee":[23,1321,0.615],"brishae":[0,22,0.0],"brookelle":[0,93,0.0],"bryiana":[0,5,0.0],"cadijah":[0,17,0.0],"calia":[0,1090,0.6075],"callissa":[0,5,0.0],"camylle":[0,75,0.0],"cariana":[0,188,0.4548],"cassadi":[0,108,0.4067],"catiana":[0,41,0.0],"cebrina":[0,31,0.0],"chaila":[0,18,0.0],"chalissa":[0,5,0.0],"chamarra":[0,5,0.0],"chantai":[0,5,0.0],"chantasia":[0,21,0.0],"charlecia":[0,10,0.0],"charmia":[0,5,0.0],"chaviva":[0,51,0.0],"chaylin":[0,34,0.0],"chelseaanne":[0,10,0.0],"cheyana":[0,48,0.0],"chicora":[0,5,0.0],"chidera":[233,527,0.3995],"ciaria":[0,11,0.0],"cieana":[0,5,0.0],"cierah":[0,107,0.4059],"ciomara":[0,29,0.0],"clinesha":[0,10,0.0],"corea":[0,22,0.0],"cortasia":[0,75,0.0],"cyann":[0,298,0.4948],"dabrielle":[0,5,0.0],"dache":[0,23,0.0],"daeisha":[0,5,0.0],"dajana":[0,178,0.4501],"daliza":[0,102,0.4017],"damionna":[0,5,0.0],"danielly":[0,76,0.0],"daniely":[0,38,0.0],"daniza":[0,5,0.0],"danyka":[0,234,0.4738],"daonna":[0,18,0.0],"darein":[16,5,0.0],"darionna":[0,244,0.4775],"darleny":[0,210,0.4644],"darmesha":[0,10,0.0],"darriana":[0,153,0.4369],"darsy":[0,10,0.0],"dashanay":[0,41,0.0],"daundra":[0,5,0.0],"deanesha":[0,5,0.0],"defne":[0,626,0.5593],"deici":[0,35,0.0],"dejai":[0,75,0.0],"dejenae":[0,16,0.0],"denaja":[0,147,0.4335],"deneesha":[0,5,0.0],"desyre":[0,126,0.4201],"diala":[0,248,0.4789],"dolce":[0,170,0.4461],"dyanira":[0,5,0.0],"dyemond":[0,50,0.0],"edisha":[0,5,0.0],"eesha":[0,985,0.5987],"elaisha":[0,98,0.0],"elide":[0,119,0.4151],"elitania":[0,10,0.0],"ellary":[0,362,0.5117],"emaan":[125,1275,0.573],"eshani":[0,164,0.443],"eshawna":[0,5,0.0],"esmaralda":[0,11,0.0],"esthefani":[0,28,0.0],"estivalis":[0,5,0.0],"esty":[0,893,0.5902],"eurasia":[0,5,0.0],"farihah":[0,11,0.0],"fatimat":[0,5,0.0],"frumie":[0,16,0.0],"gabreilla":[0,56,0.0],"gabryel":[424,182,0.3894],"galilea":[0,8862,0.7895],"genessi":[0,5,0.0],"gentrie":[0,71,0.0],"gesica":[0,5,0.0],"gracee":[0,1476,0.6338],"gretell":[0,23,0.0],"guiliana":[0,522,0.5435],"haidyn":[688,2184,0.526],"haillee":[0,95,0.0],"harlei":[0,436,0.5279],"heavin":[0,129,0.4221],"heavyn":[0,888,0.5897],"heydy":[0,179,0.4506],"heyley":[0,21,0.0],"hydia":[0,154,0.4375],"ilcia":[0,5,0.0],"ilian":[263,45,0.425],"illissa":[0,5,0.0],"indasha":[0,5,0.0],"inikki":[0,5,0.0],"ireri":[0,48,0.0],"isatu":[0,184,0.453],"itzamara":[0,279,0.4891],"ivi":[0,116,0.4129],"ivyanne":[0,18,0.0],"jadae":[0,179,0.4506],"jadian":[131,16,0.3863],"jakevia":[0,52,0.0],"jalah":[5,597,0.5513],"jalaya":[0,1866,0.6542],"jaleea":[0,103,0.4026],"jalilah":[0,237,0.4749],"jaline":[0,102,0.4017],"janeah":[0,191,0.4562],"janelys":[0,281,0.4897],"janessia":[0,10,0.0],"japrice":[0,5,0.0],"jaterica":[0,5,0.0],"jatisha":[0,5,0.0],"javiera":[0,68,0.0],"jayvonna":[0,5,0.0],"jazalyn":[0,401,0.5206],"jazzae":[0,5,0.0],"jenessy":[0,58,0.0],"jermecia":[0,52,0.0],"jernisha":[0,16,0.0],"jessuly":[0,18,0.0],"jezika":[0,15,0.0],"jibria":[0,5,0.0],"jisell":[0,99,0.0],"johnnae":[0,195,0.458],"johvanna":[0,5,0.0],"jonecia":[0,23,0.0],"josaphine":[0,192,0.4567],"journi":[41,4712,0.729],"juliamarie":[0,36,0.0],"justeena":[0,10,0.0],"kadajah":[0,76,0.0],"kadasha":[0,35,0.0],"kadjah":[0,16,0.0],"kaella":[0,12,0.0],"kajun":[5,5,0.0],"kaline":[0,27,0.0],"kamariah":[0,277,0.4885],"kamaryn":[0,124,0.4187],"kambre":[0,61,0.0],"karalyne":[0,114,0.4114],"kareesha":[0,5,0.0],"karelly":[0,166,0.444],"kathrynanne":[0,5,0.0],"katiera":[0,16,0.0],"katleyn":[0,25,0.0],"kayline":[0,129,0.4221],"kayshla":[0,57,0.0],"keatyn":[120,213,0.3227],"kelseyanne":[0,5,0.0],"keniqua":[0,5,0.0],"kenzey":[0,186,0.4539],"keshae":[0,39,0.0],"keshera":[0,5,0.0],"kesleigh":[0,112,0.4098],"keyahna":[0,46,0.0],"keyania":[0,5,0.0],"keyoni":[17,183,0.4211],"keyshawna":[0,109,0.4075],"keyshla":[0,109,0.4075],"khadejia":[0,11,0.0],"khylee":[0,1003,0.6003],"kianta":[0,5,0.0],"kiaunna":[0,31,0.0],"kimmesha":[0,5,0.0],"kirian":[20,10,0.0],"kristella":[0,36,0.0],"kritika":[0,213,0.4657],"ksandra":[0,5,0.0],"kyersten":[0,11,0.0],"kyonia":[0,10,0.0],"kyrston":[0,20,0.0],"labreshia":[0,10,0.0],"labreya":[0,5,0.0],"lajae":[0,18,0.0],"lakala":[0,16,0.0],"lakeetha":[0,5,0.0],"laraib":[0,51,0.0],"laurenelizabeth":[0,5,0.0],"leetal":[0,5,0.0],"leishla":[0,5,0.0],"leonisha":[0,5,0.0],"leslei":[0,52,0.0],"lilya":[0,570,0.5512],"lineth":[0,166,0.444],"linhchi":[0,5,0.0],"lisvette":[0,5,0.0],"loriah":[0,76,0.0],"lyliana":[0,432,0.5271],"lyndsea":[0,22,0.0],"lyubov":[0,26,0.0],"machela":[0,11,0.0],"mackenize":[0,333,0.5045],"maday":[0,118,0.4144],"madesyn":[0,158,0.4397],"magdelyn":[0,203,0.4615],"mahek":[0,384,0.5169],"majesty":[694,2448,0.5449],"makalah":[0,656,0.5634],"makaylia":[0,216,0.4669],"malaney":[0,79,0.0],"malenie":[0,85,0.0],"malonie":[0,131,0.4235],"malyka":[0,38,0.0],"manee":[0,5,0.0],"mapuana":[0,5,0.0],"marayah":[0,368,0.5132],"markira":[0,20,0.0],"marlenie":[0,28,0.0],"marliz":[0,15,0.0],"marneshia":[0,5,0.0],"maryka":[0,5,0.0],"matalyn":[0,348,0.5083],"matiah":[0,5,0.0],"maurielle":[0,35,0.0],"mazal":[0,205,0.4624],"mckaela":[0,299,0.4951],"mckendra":[0,53,0.0],"mckenze":[0,74,0.0],"mckenzey":[0,173,0.4476],"mckinze":[0,68,0.0],"medha":[0,916,0.5924],"meshae":[0,5,0.0],"micaila":[0,144,0.4317],"micalah":[0,135,0.4261],"mikalyn":[0,251,0.4799],"milee":[0,456,0.5318],"mirriah":[0,5,0.0],"moena":[0,16,0.0],"monissa":[0,5,0.0],"monyka":[0,5,0.0],"morayo":[0,154,0.4375],"mursal":[17,50,0.0],"mykenna":[0,350,0.5088],"mylah":[0,6056,0.7564],"myquisha":[0,5,0.0],"mytisha":[0,5,0.0],"nadezhda":[0,285,0.491],"nadin":[0,36,0.0],"nakera":[0,30,0.0],"nakiyha":[0,5,0.0],"nashley":[0,454,0.5314],"natani":[0,10,0.0],"ndeye":[0,497,0.5393],"nicolete":[0,5,0.0],"nimsi":[0,152,0.4364],"noran":[0,48,0.0],"noria":[0,73,0.0],"nysia":[0,70,0.0],"oreana":[0,23,0.0],"paayal":[0,10,0.0],"paulyna":[0,5,0.0],"pristine":[0,75,0.0],"qadeera":[0,5,0.0],"quadirah":[0,21,0.0],"quameshia":[0,12,0.0],"quanaisha":[0,5,0.0],"quanishia":[0,5,0.0],"quashay":[0,10,0.0],"quinterria":[0,16,0.0],"radwa":[0,32,0.0],"rahnasia":[0,5,0.0],"raivyn":[0,168,0.4451],"rajae":[42,22,0.0],"rajdeep":[41,11,0.0],"ramata":[0,174,0.4481],"rasheeka":[0,5,0.0],"ravien":[0,5,0.0],"raymesha":[0,5,0.0],"raynah":[0,299,0.4951],"raziya":[0,407,0.5219],"reaiah":[0,10,0.0],"reginique":[0,5,0.0],"reyonna":[0,99,0.0],"richia":[0,5,0.0],"rosaangelica":[0,10,0.0],"rukhsar":[0,12,0.0],"sabira":[0,50,0.0],"sabreea":[0,5,0.0],"sadavia":[0,5,0.0],"sadonia":[0,5,0.0],"saleen":[0,911,0.5919],"samalia":[0,5,0.0],"samanthea":[0,5,0.0],"saoirse":[0,3842,0.7169],"saryna":[0,120,0.4158],"savaughn":[145,5,0.4207],"seandrea":[0,5,0.0],"seleina":[0,10,0.0],"shacaria":[0,5,0.0],"shacorra":[0,10,0.0],"shadale":[0,10,0.0],"shadarria":[0,10,0.0],"shadasha":[0,20,0.0],"shadayah":[0,5,0.0],"shaiya":[0,48,0.0],"shakyrah":[0,53,0.0],"shalayah":[0,111,0.4091],"shanobia":[0,5,0.0],"shanterri":[0,5,0.0],"shantesha":[0,5,0.0],"shantiece":[0,5,0.0],"shaparis":[0,25,0.0],"shapria":[0,5,0.0],"shaqualia":[0,16,0.0],"shaquelia":[0,5,0.0],"shaquez":[28,5,0.0],"shaqura":[0,11,0.0],"shatorria":[0,22,0.0],"shatory":[0,5,0.0],"shauntoria":[0,5,0.0],"shaynelle":[0,5,0.0],"shebria":[0,5,0.0],"shekeila":[0,5,0.0],"sheyanna":[0,55,0.0],"shikema":[0,5,0.0],"shinesha":[0,5,0.0],"shivana":[0,10,0.0],"shontice":[0,11,0.0],"shraddha":[0,314,0.4994],"shruthi":[0,485,0.5371],"shydae":[0,20,0.0],"shynesha":[0,5,0.0],"sivana":[0,27,0.0],"sokhna":[0,296,0.4943],"sokoya":[0,5,0.0],"solymar":[0,231,0.4727],"somara":[0,111,0.4091],"sophi":[0,528,0.5445],"soria":[0,5,0.0],"steevie":[0,10,0.0],"stevona":[0,11,0.0],"symphany":[0,265,0.4846],"syndney":[0,24,0.0],"taalor":[0,5,0.0],"taeshia":[0,5,0.0],"taihlor":[0,5,0.0],"taite":[129,115,0.2524],"takeara":[0,5,0.0],"takierra":[0,18,0.0],"talissia":[0,5,0.0],"talore":[0,38,0.0],"talynn":[10,706,0.563],"tamai":[0,16,0.0],"tamanna":[0,192,0.4567],"tamariah":[0,21,0.0],"tameya":[0,190,0.4558],"tanaysia":[0,149,0.4346],"tanekqua":[0,5,0.0],"tasina":[0,5,0.0],"tateana":[0,39,0.0],"tatyona":[0,36,0.0],"taylorlynn":[0,10,0.0],"tayzia":[0,23,0.0],"teiana":[0,69,0.0],"teiona":[0,44,0.0],"tenaja":[0,29,0.0],"teriana":[0,245,0.4778],"terranisha":[0,16,0.0],"tes":[0,5,0.0],"tiannah":[0,234,0.4738],"tilar":[13,20,0.0],"timari":[27,60,0.0],"tommesha":[0,5,0.0],"torye":[0,5,0.0],"trayonna":[0,64,0.0],"tribecca":[0,5,0.0],"twaniqua":[0,5,0.0],"tyauna":[0,154,0.4375],"tyeishia":[0,5,0.0],"tyieshia":[0,5,0.0],"tykerria":[0,176,0.4491],"tyleia":[0,10,0.0],"tylie":[0,499,0.5396],"tylo":[46,13,0.0],"tyriana":[0,272,0.4869],"tyshonna":[0,37,0.0],"valentia":[0,15,0.0],"vanida":[0,35,0.0],"verenize":[0,15,0.0],"victoriya":[0,95,0.0],"wendoly":[0,53,0.0],"wintana":[0,10,0.0],"xitlalic":[0,296,0.4943],"xzandria":[0,80,0.0],"yanelie":[0,82,0.0],"yareliz":[0,218,0.4677],"yarithza":[0,104,0.4034],"yaritssa":[0,5,0.0],"yassmin":[0,139,0.4286],"yazmen":[0,71,0.0],"yeraldi":[0,187,0.4544],"yiselle":[0,141,0.4298],"yizel":[0,188,0.4548],"yosemite":[0,5,0.0],"zaakiyah":[0,5,0.0],"zakkiyah":[0,16,0.0],"zareena":[0,93,0.0],"deyonta":[42,0,0.0],"sayvon":[239,0,0.4757],"sevon":[215,6,0.4561],"tamarick":[63,0,0.0],"deiondre":[433,0,0.5273],"tavist":[26,0,0.0],"tayton":[1094,27,0.5952],"jailen":[1389,299,0.5311],"jorman":[52,0,0.0],"swade":[168,0,0.4451],"treyvion":[661,0,0.564],"yordi":[594,0,0.5548],"deamonte":[159,0,0.4403],"deontrey":[97,0,0.0],"faizon":[275,0,0.4879],"jaeger":[821,0,0.5829],"tonatiuh":[304,0,0.4966],"aquille":[17,0,0.0],"damarea":[155,10,0.4166],"dequawn":[59,0,0.0],"shaqille":[16,0,0.0],"daegan":[898,48,0.565],"dejoun":[21,0,0.0],"fischer":[2093,19,0.659],"jakobi":[2546,45,0.6708],"jayland":[341,0,0.5066],"jesu":[19,0,0.0],"kamin":[63,0,0.0],"kazim":[159,0,0.4403],"legend":[23909,947,0.8456],"lucino":[36,0,0.0],"aydan":[6049,448,0.71],"davontai":[17,0,0.0],"jaggar":[231,0,0.4727],"maleak":[208,0,0.4636],"markece":[29,0,0.0],"rider":[1262,0,0.6202],"saivon":[198,0,0.4593],"saveon":[194,0,0.4576],"shanquille":[9,0,0.0],"trejon":[319,0,0.5008],"treyshawn":[371,0,0.5139],"tylique":[95,0,0.0],"yonny":[26,0,0.0],"yordy":[308,0,0.4977],"cequan":[29,0,0.0],"crae":[8,0,0.0],"dartavious":[53,0,0.0],"davionte":[101,0,0.4009],"demari":[2704,267,0.6322],"dequandre":[71,0,0.0],"drazen":[40,0,0.0],"dyian":[8,0,0.0],"jahmir":[3343,0,0.7048],"jahson":[319,0,0.5008],"jayven":[2086,0,0.6639],"jervonte":[56,0,0.0],"jheryl":[8,0,0.0],"jobanny":[62,0,0.0],"jocques":[13,0,0.0],"johel":[41,0,0.0],"juwuan":[153,0,0.4369],"keian":[362,0,0.5117],"koleton":[342,0,0.5068],"kuran":[67,0,0.0],"manav":[739,0,0.5737],"mccord":[14,0,0.0],"nahom":[948,0,0.5954],"quadarrius":[23,0,0.0],"rahem":[33,0,0.0],"savonn":[15,0,0.0],"shaiquan":[45,0,0.0],"tavante":[30,0,0.0],"trevarius":[56,0,0.0],"trevonta":[60,0,0.0],"uzziah":[1068,7,0.6023],"yuepheng":[64,0,0.0],"yunior":[343,0,0.5071],"zavon":[241,0,0.4764],"abdelaziz":[125,0,0.4194],"arkel":[64,0,0.0],"avondre":[152,0,0.4364],"avontae":[260,0,0.483],"azmi":[12,0,0.0],"berk":[250,0,0.4796],"blaid":[7,0,0.0],"blayde":[290,0,0.4925],"cayson":[6068,48,0.7514],"cedarius":[89,0,0.0],"ceejay":[303,0,0.4963],"celvin":[110,0,0.4083],"chanceler":[128,0,0.4214],"cogan":[59,0,0.0],"conar":[48,0,0.0],"dakodah":[59,44,0.2306],"dakotta":[56,33,0.0],"deaires":[15,0,0.0],"dejonte":[55,0,0.0],"dekoda":[56,11,0.0],"dentrell":[29,0,0.0],"deshaune":[19,0,0.0],"diavonte":[19,0,0.0],"evonte":[68,0,0.0],"geovannie":[152,0,0.4364],"geovonni":[224,0,0.47],"gerber":[88,0,0.0],"ivann":[220,0,0.4685],"jaafar":[61,0,0.0],"jabrell":[35,0,0.0],"jaelan":[273,39,0.4365],"jaquante":[43,0,0.0],"jarik":[54,0,0.0],"jassiel":[832,5,0.5811],"jassiem":[24,0,0.0],"jatarius":[58,0,0.0],"jermonte":[40,0,0.0],"josiel":[571,0,0.5513],"juwaan":[47,0,0.0],"kadarrius":[162,0,0.4419],"kani":[640,249,0.4246],"kyleanthony":[19,0,0.0],"kyrillos":[247,0,0.4785],"ladarrien":[12,0,0.0],"ladontae":[7,0,0.0],"laquante":[12,0,0.0],"laronte":[12,0,0.0],"latre":[33,0,0.0],"leontae":[139,0,0.4286],"milek":[24,0,0.0],"naasir":[367,0,0.5129],"nihal":[783,226,0.4662],"raiden":[11933,442,0.7893],"ravonte":[7,0,0.0],"ruger":[2244,12,0.6671],"rylen":[3281,766,0.5849],"samaj":[362,18,0.4915],"sayid":[244,0,0.4775],"shaqueil":[7,0,0.0],"shatique":[12,0,0.0],"shiquan":[120,0,0.4158],"takoda":[1745,129,0.6095],"tevante":[18,0,0.0],"theoren":[110,0,0.4083],"tomoyuki":[7,0,0.0],"trashaun":[127,0,0.4208],"treshun":[127,0,0.4208],"tupac":[86,0,0.0],"tykim":[23,0,0.0],"tyquil":[17,0,0.0],"vontae":[87,0,0.0],"yochanon":[39,0,0.0],"zarian":[369,28,0.4831],"ajahn":[6,0,0.0],"akaash":[128,0,0.4214],"alann":[113,0,0.4106],"alecxander":[182,0,0.452],"ardarius":[40,0,0.0],"areeb":[413,0,0.5232],"askari":[267,0,0.4853],"bowdy":[146,0,0.4329],"bralon":[132,0,0.4241],"brandonjames":[21,0,0.0],"byren":[62,0,0.0],"christhian":[52,0,0.0],"crishawn":[39,0,0.0],"crystopher":[24,0,0.0],"daelon":[280,0,0.4894],"dainon":[11,0,0.0],"dairius":[18,0,0.0],"dairus":[6,0,0.0],"damyan":[384,0,0.5169],"daquante":[36,0,0.0],"daquarius":[277,0,0.4885],"dazmon":[20,0,0.0],"deamontae":[21,0,0.0],"defonta":[6,0,0.0],"dejion":[87,0,0.0],"delvaughn":[6,0,0.0],"delvontae":[11,0,0.0],"demante":[24,0,0.0],"derontae":[6,0,0.0],"desmand":[11,0,0.0],"devien":[17,0,0.0],"devondrick":[11,0,0.0],"deyontae":[16,0,0.0],"diop":[6,0,0.0],"dmitrius":[34,0,0.0],"drakar":[6,0,0.0],"dylyn":[90,36,0.3001],"efosa":[78,0,0.0],"eliav":[149,0,0.4346],"fray":[11,0,0.0],"garison":[130,0,0.4228],"geoffory":[6,0,0.0],"germon":[6,0,0.0],"giovante":[42,0,0.0],"haniff":[6,0,0.0],"hrag":[22,0,0.0],"iyan":[347,0,0.5081],"jahbari":[173,0,0.4476],"jakeil":[18,0,0.0],"jakin":[268,0,0.4856],"jakori":[582,10,0.5451],"jaleek":[38,0,0.0],"jamontae":[231,0,0.4727],"jamore":[13,0,0.0],"jaqueal":[6,0,0.0],"jaurice":[34,0,0.0],"jayanth":[142,0,0.4305],"jedarius":[12,0,0.0],"jephthe":[12,0,0.0],"jhavon":[29,0,0.0],"jhovani":[138,0,0.428],"joerell":[12,0,0.0],"johntel":[6,0,0.0],"jontavis":[36,0,0.0],"jovanta":[11,0,0.0],"jsean":[292,0,0.4931],"kameel":[47,0,0.0],"kentravious":[154,0,0.4375],"kenzell":[60,0,0.0],"kevron":[66,0,0.0],"keyontay":[77,0,0.0],"khaleeq":[36,0,0.0],"khalifah":[44,0,0.0],"kincaid":[447,0,0.5301],"kiondre":[107,0,0.4059],"kj":[217,0,0.4673],"krey":[16,0,0.0],"kwante":[18,0,0.0],"kyrian":[401,5,0.5153],"lateek":[6,0,0.0],"lavail":[12,0,0.0],"lavontay":[113,0,0.4106],"lucca":[7128,743,0.7057],"maksim":[2623,0,0.6838],"mclane":[127,15,0.385],"monterrious":[18,0,0.0],"mouhamed":[890,0,0.5899],"myquan":[77,0,0.0],"nazeer":[308,0,0.4977],"niam":[1672,0,0.6446],"niaz":[6,0,0.0],"nieco":[6,0,0.0],"oshawn":[28,0,0.0],"ossiel":[111,0,0.4091],"papa":[258,0,0.4823],"quatrell":[17,0,0.0],"quaylon":[62,0,0.0],"quindarrius":[69,0,0.0],"quon":[6,0,0.0],"quontez":[12,0,0.0],"rahmeek":[62,0,0.0],"raliek":[12,0,0.0],"rasaun":[54,0,0.0],"rashamel":[6,0,0.0],"reynel":[42,0,0.0],"rien":[96,29,0.3221],"rikesh":[6,0,0.0],"romil":[40,0,0.0],"ryler":[549,6,0.5429],"saevon":[17,0,0.0],"salmaan":[257,0,0.482],"sanil":[37,0,0.0],"sawan":[6,0,0.0],"shacorey":[11,0,0.0],"shahrukh":[64,0,0.0],"shahzaib":[211,0,0.4649],"shams":[99,300,0.3911],"shaqulle":[6,0,0.0],"shemuel":[127,0,0.4208],"sterlyn":[29,0,0.0],"taquil":[6,0,0.0],"tarrik":[6,0,0.0],"thair":[12,0,0.0],"trais":[6,0,0.0],"trayshon":[13,0,0.0],"trevontae":[154,0,0.4375],"trevyon":[140,0,0.4292],"treyvaughn":[46,0,0.0],"treyveon":[376,0,0.515],"tyjae":[230,200,0.2817],"tyjon":[299,0,0.4951],"vladislav":[629,0,0.5597],"yakeem":[6,0,0.0],"yordan":[222,0,0.4693],"abdullahi":[1802,0,0.6512],"abhimanyu":[279,0,0.4891],"aboubacar":[465,0,0.5335],"adedamola":[160,0,0.4408],"adorian":[140,0,0.4292],"akul":[210,0,0.4644],"aldren":[21,0,0.0],"alexandrew":[49,0,0.0],"andrewmichael":[10,0,0.0],"aqil":[74,0,0.0],"arbin":[29,0,0.0],"arri":[33,58,0.0],"artem":[1048,0,0.6041],"astley":[5,0,0.0],"austinjames":[37,0,0.0],"austinn":[28,0,0.0],"avish":[133,0,0.4248],"ayyub":[430,0,0.5267],"balam":[74,0,0.0],"bartlomiej":[81,0,0.0],"bladen":[872,0,0.5881],"bodi":[899,0,0.5908],"brahm":[333,0,0.5045],"breven":[146,0,0.4329],"broden":[1602,0,0.6409],"brylon":[596,0,0.555],"cadin":[644,16,0.5502],"caelen":[536,67,0.4943],"caimen":[41,0,0.0],"carder":[390,0,0.5182],"cayne":[445,0,0.5297],"cergio":[33,0,0.0],"chandlor":[95,0,0.0],"chansler":[5,0,0.0],"charlesjoseph":[5,0,0.0],"chavas":[5,0,0.0],"chibuzo":[16,0,0.0],"cirino":[5,0,0.0],"coleson":[2477,0,0.6788],"coyote":[135,5,0.4139],"daeshon":[178,0,0.4501],"daiquon":[54,0,0.0],"dairen":[11,0,0.0],"dairo":[37,0,0.0],"daleon":[110,0,0.4083],"dalontae":[65,0,0.0],"dalven":[10,0,0.0],"damarian":[389,0,0.518],"damier":[384,0,0.5169],"daonte":[30,0,0.0],"daquin":[21,0,0.0],"daundre":[146,0,0.4329],"davarous":[5,0,0.0],"davaunte":[5,0,0.0],"daviante":[18,0,0.0],"davyn":[604,74,0.5044],"dawid":[375,0,0.5148],"dayquon":[35,0,0.0],"dayshun":[34,0,0.0],"dazhon":[35,0,0.0],"dcarlos":[21,0,0.0],"dearrius":[60,0,0.0],"decario":[10,0,0.0],"dedrek":[5,0,0.0],"dejuante":[12,0,0.0],"demariea":[5,0,0.0],"demaro":[5,0,0.0],"demarque":[5,0,0.0],"deontia":[5,0,0.0],"dequarious":[20,0,0.0],"dequindre":[17,0,0.0],"derreon":[129,0,0.4221],"desten":[74,0,0.0],"detravion":[72,0,0.0],"detravious":[24,0,0.0],"deuntay":[22,0,0.0],"devantre":[10,0,0.0],"devaugh":[5,0,0.0],"devontray":[18,0,0.0],"devunte":[5,0,0.0],"devyon":[83,0,0.0],"dhameer":[10,0,0.0],"dillonger":[5,0,0.0],"dilson":[27,0,0.0],"dimante":[10,0,0.0],"dimonte":[10,0,0.0],"donovyn":[241,0,0.4764],"dontrea":[5,0,0.0],"dulton":[5,0,0.0],"dymere":[56,0,0.0],"ellijah":[573,0,0.5516],"ernestor":[5,0,0.0],"eshon":[10,0,0.0],"exequiel":[54,0,0.0],"ezequel":[23,0,0.0],"faizal":[5,0,0.0],"fathi":[36,15,0.0],"fatih":[114,0,0.4114],"faysal":[205,0,0.4624],"fidelmar":[10,0,0.0],"fillip":[27,0,0.0],"finnian":[3086,0,0.6979],"fisnik":[10,0,0.0],"franciscus":[5,0,0.0],"gaberiel":[572,0,0.5515],"gadge":[159,0,0.4403],"garric":[10,0,0.0],"geancarlo":[21,0,0.0],"geordy":[27,0,0.0],"gervon":[21,0,0.0],"greysen":[2754,249,0.6378],"gunar":[43,0,0.0],"haroldo":[21,0,0.0],"haroutun":[5,0,0.0],"harutun":[16,0,0.0],"harutyun":[70,0,0.0],"haydin":[457,300,0.3476],"heli":[15,130,0.3876],"heyden":[246,0,0.4782],"holdan":[73,0,0.0],"holdyn":[673,53,0.5304],"hoscar":[5,0,0.0],"ii":[5,0,0.0],"izik":[656,0,0.5634],"jacquille":[11,0,0.0],"jadel":[46,0,0.0],"jaecob":[141,0,0.4298],"jaedon":[2136,33,0.6571],"jaelon":[673,0,0.5656],"jahlen":[92,0,0.0],"jairius":[55,0,0.0],"jaishawn":[211,0,0.4649],"jakil":[21,0,0.0],"jaloni":[232,304,0.3096],"jamarie":[638,113,0.4886],"jamarrius":[83,0,0.0],"jaqueze":[20,0,0.0],"jaronte":[5,0,0.0],"jashad":[86,0,0.0],"javeed":[10,0,0.0],"javelle":[118,0,0.4144],"jawvan":[5,0,0.0],"jaymen":[239,0,0.4757],"jayveon":[1410,0,0.6298],"jayvion":[3584,0,0.7109],"jayvonte":[49,0,0.0],"jelen":[18,10,0.0],"jensy":[59,49,0.2222],"jeriko":[172,0,0.4471],"jeshawn":[86,0,0.0],"jivan":[192,0,0.4567],"johnray":[15,0,0.0],"jonathanmichael":[25,0,0.0],"jonavon":[126,0,0.4201],"joshuaalexander":[5,0,0.0],"jouse":[5,0,0.0],"jovantae":[19,0,0.0],"jovel":[33,0,0.0],"justinryan":[23,0,0.0],"juvonte":[10,0,0.0],"kadell":[11,0,0.0],"kaelob":[175,0,0.4486],"kahlif":[38,0,0.0],"kahron":[171,0,0.4466],"kaiman":[22,0,0.0],"kaio":[407,0,0.5219],"kaje":[34,0,0.0],"kaman":[29,0,0.0],"karnel":[5,0,0.0],"katron":[33,0,0.0],"kavy":[5,0,0.0],"kawayne":[5,0,0.0],"kaysean":[58,0,0.0],"keiandre":[119,0,0.4151],"keishi":[10,0,0.0],"kentre":[21,0,0.0],"keyjuan":[58,0,0.0],"khalin":[157,6,0.4262],"khrystian":[115,15,0.374],"kongpheng":[52,0,0.0],"korban":[583,0,0.5531],"kouki":[22,0,0.0],"krenar":[5,0,0.0],"krisstopher":[10,0,0.0],"kwanze":[5,0,0.0],"kwaun":[5,0,0.0],"kyante":[17,5,0.0],"kymon":[37,0,0.0],"kyrollos":[65,0,0.0],"ladaruis":[10,0,0.0],"latrel":[92,0,0.0],"leandrae":[5,0,0.0],"lequon":[5,0,0.0],"llovani":[5,0,0.0],"machenzie":[5,32,0.0],"mackenson":[10,0,0.0],"magno":[28,0,0.0],"makin":[16,0,0.0],"malquan":[5,0,0.0],"maricio":[15,0,0.0],"markeil":[35,0,0.0],"markjoseph":[43,0,0.0],"markkus":[5,0,0.0],"marqis":[5,0,0.0],"marquarious":[10,0,0.0],"martaz":[10,0,0.0],"martique":[5,0,0.0],"mathu":[11,0,0.0],"mattan":[51,0,0.0],"mayank":[243,0,0.4771],"mckade":[331,0,0.504],"melaku":[5,0,0.0],"miccah":[42,6,0.0],"mikhal":[37,5,0.0],"moctezuma":[17,0,0.0],"monish":[68,0,0.0],"montanez":[5,0,0.0],"myshawn":[147,0,0.4335],"nafee":[5,0,0.0],"najm":[67,0,0.0],"nassor":[5,0,0.0],"nigee":[5,0,0.0],"nijal":[38,0,0.0],"nishanth":[208,0,0.4636],"nong":[5,0,0.0],"nuchem":[251,0,0.4799],"nyquan":[147,0,0.4335],"obaid":[15,0,0.0],"oluwasegun":[17,0,0.0],"omare":[88,0,0.0],"omran":[166,0,0.444],"osmel":[132,0,0.4241],"oumar":[722,0,0.5717],"ousmane":[681,0,0.5666],"paarth":[189,0,0.4553],"paulin":[15,0,0.0],"paxson":[433,0,0.5273],"pookela":[76,0,0.0],"quamine":[5,0,0.0],"quanterrius":[14,0,0.0],"quantre":[10,0,0.0],"quanzie":[5,0,0.0],"quavius":[5,0,0.0],"quayshon":[10,0,0.0],"quentarius":[25,0,0.0],"raijon":[64,0,0.0],"rakeim":[34,0,0.0],"ramces":[104,0,0.4034],"rayen":[115,167,0.2902],"refael":[320,0,0.501],"requan":[74,0,0.0],"rifat":[56,0,0.0],"riggin":[691,5,0.5644],"rikky":[5,0,0.0],"romalis":[5,0,0.0],"saavon":[5,0,0.0],"sadik":[115,0,0.4121],"samin":[129,0,0.4221],"samiul":[47,0,0.0],"samvel":[199,0,0.4598],"savone":[22,0,0.0],"serguio":[5,0,0.0],"shaborn":[16,0,0.0],"shahil":[74,0,0.0],"shahzeb":[50,0,0.0],"shakeim":[48,0,0.0],"shakor":[22,0,0.0],"shaliek":[16,0,0.0],"shaqil":[5,0,0.0],"shaquawn":[17,0,0.0],"shaqueel":[5,0,0.0],"shaquor":[5,0,0.0],"shashank":[336,0,0.5053],"shotaro":[23,0,0.0],"sirjames":[21,0,0.0],"sklyer":[27,5,0.0],"stevonte":[10,0,0.0],"styler":[5,0,0.0],"suhas":[355,0,0.51],"sukhraj":[91,0,0.0],"suleman":[243,0,0.4771],"tahjee":[32,0,0.0],"taishi":[54,0,0.0],"taliesin":[242,0,0.4768],"tamim":[630,0,0.5599],"tanor":[61,0,0.0],"taquarius":[17,0,0.0],"taquon":[21,0,0.0],"tavan":[32,0,0.0],"teriq":[59,0,0.0],"teris":[5,0,0.0],"tevion":[191,0,0.4562],"tevonte":[36,0,0.0],"thurgood":[5,0,0.0],"tishon":[35,0,0.0],"tiyon":[269,0,0.486],"trashon":[34,0,0.0],"traveion":[65,0,0.0],"traylor":[11,0,0.0],"tremal":[5,0,0.0],"trentan":[135,0,0.4261],"trevious":[81,0,0.0],"treyce":[309,0,0.498],"trimayne":[5,0,0.0],"tyde":[181,0,0.4515],"tylre":[15,0,0.0],"tyquane":[19,0,0.0],"tyreque":[90,0,0.0],"ugonna":[177,47,0.3714],"usiel":[259,0,0.4827],"vadal":[5,0,0.0],"vadell":[5,0,0.0],"vadim":[533,0,0.5453],"vamsi":[74,0,0.0],"victorious":[97,92,0.2337],"vineeth":[83,0,0.0],"xzavior":[458,0,0.5322],"yotam":[147,0,0.4335],"yousaf":[227,0,0.4712],"yuvraj":[1198,0,0.6157],"zacaria":[27,134,0.3673],"zafar":[139,0,0.4286],"zahcary":[5,0,0.0],"zaul":[254,0,0.481],"zayn":[11732,98,0.8078],"ziaire":[803,79,0.5363],"ziare":[534,84,0.4823],"zoheb":[5,0,0.0],"ajee":[35,301,0.4526],"alliyah":[0,2995,0.6953],"taliyah":[0,8695,0.7879],"jaliyah":[0,11946,0.8154],"kaliyah":[5,12146,0.8166],"mileena":[0,1997,0.6601],"shaliyah":[0,696,0.5685],"itati":[0,423,0.5253],"liyah":[0,2160,0.6669],"imalay":[0,41,0.0],"maliyah":[0,14888,0.8346],"mccaela":[0,20,0.0],"alyiah":[0,1034,0.6029],"audresha":[0,19,0.0],"ragine":[0,57,0.0],"aaleyah":[0,1419,0.6304],"jurnee":[12,4430,0.7275],"khaina":[0,18,0.0],"marymar":[0,35,0.0],"michalia":[0,46,0.0],"dazhane":[0,154,0.4375],"jadzia":[0,633,0.5603],"keanda":[0,17,0.0],"alliah":[0,623,0.5589],"limayri":[0,16,0.0],"shardasia":[0,23,0.0],"aaliah":[0,1030,0.6026],"aaliyha":[0,439,0.5285],"dezhane":[0,110,0.4083],"kenyah":[0,415,0.5236],"khadidra":[0,15,0.0],"kitana":[0,1627,0.6423],"alyah":[0,1419,0.6304],"azhane":[0,155,0.4381],"sinclaire":[0,221,0.4689],"zanah":[0,31,0.0],"zhanae":[0,124,0.4187],"aalayah":[0,1222,0.6174],"alleyah":[0,327,0.5029],"harlea":[0,121,0.4166],"khadesha":[0,25,0.0],"khadeshia":[0,13,0.0],"mahnoor":[0,953,0.5958],"tyissha":[0,13,0.0],"aalyiah":[0,807,0.5814],"cadeidra":[0,12,0.0],"kache":[111,57,0.2941],"kadedria":[0,12,0.0],"kashyra":[0,39,0.0],"khadajah":[0,26,0.0],"najai":[46,163,0.3619],"allayah":[0,395,0.5193],"dariah":[0,544,0.5471],"eriona":[0,190,0.4558],"iridian":[7,581,0.5473],"itzell":[0,296,0.4943],"keiauna":[0,16,0.0],"kennedie":[0,1371,0.6274],"khadesia":[0,25,0.0],"lelaina":[0,136,0.4267],"lismary":[0,70,0.0],"aalyah":[0,730,0.5727],"ahliyah":[0,283,0.4904],"aijah":[0,358,0.5108],"ajane":[0,99,0.0],"alaila":[0,577,0.5522],"allyah":[0,307,0.4974],"amonie":[0,359,0.511],"arnasia":[0,54,0.0],"aspin":[0,87,0.0],"aurieona":[0,10,0.0],"brailey":[5,1164,0.6109],"cadeja":[0,20,0.0],"cadejah":[0,10,0.0],"cadesia":[0,15,0.0],"dairian":[0,10,0.0],"damini":[0,46,0.0],"itcel":[0,40,0.0],"ithzel":[0,151,0.4358],"jashawna":[0,88,0.0],"jhanae":[0,162,0.4419],"kadeija":[0,10,0.0],"katriel":[31,403,0.4898],"katyra":[0,62,0.0],"khadjiah":[0,10,0.0],"khaliyah":[0,1553,0.6382],"legacy":[2462,5341,0.5328],"mycala":[0,87,0.0],"rajene":[0,22,0.0],"rhegan":[0,280,0.4894],"riviera":[0,115,0.4121],"thandi":[0,41,0.0],"xylia":[0,521,0.5434],"zhanee":[0,23,0.0],"aalliyah":[0,169,0.4456],"aimme":[0,26,0.0],"aneri":[0,205,0.4624],"aniessa":[0,50,0.0],"areona":[0,184,0.453],"berenize":[0,99,0.0],"biranna":[0,9,0.0],"breasha":[0,54,0.0],"brionnah":[0,35,0.0],"chaveli":[0,17,0.0],"chaylee":[0,199,0.4598],"cyanne":[0,279,0.4891],"deshanique":[0,15,0.0],"draven":[7545,253,0.7531],"emone":[5,55,0.0],"genises":[0,40,0.0],"hadleigh":[0,4265,0.726],"imane":[0,268,0.4856],"ixcel":[0,20,0.0],"ixel":[0,86,0.0],"jakerria":[0,163,0.4424],"jocee":[0,255,0.4813],"johnay":[0,152,0.4364],"justiss":[18,147,0.3951],"kadeijah":[0,15,0.0],"khianna":[0,166,0.444],"kirsi":[0,110,0.4083],"kymberlyn":[0,97,0.0],"latayshia":[0,9,0.0],"lexes":[0,36,0.0],"leyah":[0,1233,0.6182],"makailah":[0,547,0.5476],"michealla":[0,54,0.0],"neriah":[85,3289,0.6879],"quentasia":[0,50,0.0],"reianna":[0,102,0.4017],"synclaire":[0,35,0.0],"yannery":[0,9,0.0],"zahna":[0,19,0.0],"ziana":[0,567,0.5507],"aaliyan":[34,123,0.3441],"akiyah":[0,510,0.5415],"aleiyah":[0,564,0.5503],"alexies":[0,41,0.0],"alundra":[0,23,0.0],"anadela":[0,8,0.0],"aniah":[0,3225,0.7017],"annyssa":[0,54,0.0],"aoi":[36,199,0.4016],"ashawnti":[0,143,0.4311],"avarie":[0,1658,0.6439],"averey":[206,464,0.3914],"chermeka":[0,8,0.0],"christinejoy":[0,26,0.0],"citlally":[0,573,0.5516],"davika":[0,23,0.0],"dhalia":[0,289,0.4922],"dimon":[10,49,0.0],"djenne":[0,18,0.0],"eniola":[39,345,0.4644],"enma":[0,189,0.4553],"icis":[0,183,0.4525],"imana":[0,44,0.0],"jaedyn":[2097,2590,0.4057],"jamiyah":[0,3677,0.7131],"jilliana":[0,265,0.4846],"kadashia":[0,26,0.0],"kahdejah":[0,8,0.0],"kamalani":[6,294,0.4855],"karolin":[0,15,0.0],"keunna":[0,24,0.0],"khadeidra":[0,13,0.0],"khadijia":[0,8,0.0],"khya":[0,354,0.5098],"kierney":[0,35,0.0],"kyrsha":[0,13,0.0],"lexee":[0,414,0.5234],"makenze":[0,187,0.4544],"mattilyn":[0,650,0.5626],"nabria":[0,93,0.0],"noehly":[0,8,0.0],"qadirah":[0,40,0.0],"raegene":[0,22,0.0],"rimsha":[0,107,0.4059],"shainah":[0,24,0.0],"shawntasia":[0,13,0.0],"shaydie":[0,13,0.0],"shriya":[0,1876,0.6546],"skyann":[0,156,0.4386],"starquasia":[0,14,0.0],"tayloranne":[0,79,0.0],"tiffanyamber":[0,38,0.0],"titeanna":[0,13,0.0],"travisha":[0,8,0.0],"tyranisha":[0,14,0.0],"viktorya":[0,95,0.0],"zayla":[0,3694,0.7135],"aalia":[0,686,0.5673],"alaiyah":[0,1983,0.6595],"alayla":[0,1688,0.6455],"aleiah":[0,779,0.5783],"aliayah":[0,239,0.4757],"alixx":[0,7,0.0],"allandra":[0,17,0.0],"annalia":[0,1412,0.63],"apoorva":[0,151,0.4358],"ariahna":[0,374,0.5146],"ashiana":[0,54,0.0],"asiyah":[156,1663,0.5961],"aslin":[0,190,0.4558],"ayrin":[0,65,0.0],"brialle":[0,14,0.0],"brooklen":[0,272,0.4869],"caliyah":[0,1941,0.6576],"cambre":[0,126,0.4201],"ciena":[0,352,0.5093],"dabria":[0,191,0.4562],"daizhane":[0,20,0.0],"danieka":[0,7,0.0],"dareka":[0,7,0.0],"daviona":[0,279,0.4891],"driana":[0,105,0.4042],"dynasia":[0,190,0.4558],"elaney":[0,34,0.0],"ellexus":[0,17,0.0],"gabryella":[0,745,0.5744],"hadil":[0,25,0.0],"hadlee":[24,4950,0.7358],"hania":[0,891,0.59],"hannalee":[0,81,0.0],"hiilani":[0,124,0.4187],"indika":[0,60,0.0],"iyanah":[0,569,0.551],"jalexus":[0,107,0.4059],"jashay":[0,86,0.0],"jasimen":[0,12,0.0],"jeda":[0,169,0.4456],"kadejiah":[0,7,0.0],"katyana":[0,64,0.0],"keiri":[0,187,0.4544],"kemani":[497,651,0.347],"kenadi":[0,1558,0.6385],"kenady":[0,543,0.547],"kenedi":[0,1013,0.6011],"kerigan":[0,452,0.531],"keshawnna":[0,36,0.0],"khadeijah":[0,7,0.0],"khadejha":[0,7,0.0],"kimmika":[0,7,0.0],"kyndl":[0,7,0.0],"layan":[0,2896,0.6924],"limairy":[0,7,0.0],"lynnzie":[0,90,0.0],"macaila":[0,151,0.4358],"mahayla":[0,912,0.592],"mahrukh":[0,82,0.0],"makaylyn":[0,216,0.4669],"malibu":[0,147,0.4335],"markeyla":[0,38,0.0],"mashiya":[0,29,0.0],"mayerlin":[0,55,0.0],"mckinlee":[0,1540,0.6375],"mickaila":[0,23,0.0],"mikeyla":[0,380,0.516],"moona":[0,25,0.0],"nashaly":[0,384,0.5169],"nasira":[0,324,0.5021],"nazifa":[0,161,0.4414],"nazirah":[0,140,0.4292],"nikeria":[0,156,0.4386],"nkemdilim":[0,7,0.0],"quanesia":[0,7,0.0],"rajanee":[0,68,0.0],"rajeen":[0,7,0.0],"raquelin":[0,24,0.0],"raygene":[0,12,0.0],"reannah":[0,158,0.4397],"rhaven":[0,33,0.0],"rielle":[0,581,0.5528],"rilie":[0,252,0.4803],"samirra":[0,31,0.0],"shailah":[0,171,0.4466],"shakiria":[0,43,0.0],"shantonia":[0,7,0.0],"shardasha":[0,7,0.0],"shawnteria":[0,7,0.0],"solena":[0,95,0.0],"synclair":[0,17,0.0],"taqueria":[0,18,0.0],"teshauna":[0,21,0.0],"tianni":[0,160,0.4408],"tooba":[0,45,0.0],"treyanna":[0,43,0.0],"tyteana":[0,37,0.0],"yanibel":[0,7,0.0],"aala":[0,139,0.4286],"aaleeyah":[0,152,0.4364],"aariona":[0,248,0.4789],"abreia":[0,6,0.0],"acura":[0,26,0.0],"adesola":[0,40,0.0],"adijah":[0,6,0.0],"adja":[0,216,0.4669],"adyson":[34,4089,0.7171],"ahsia":[0,12,0.0],"aireana":[0,206,0.4628],"ajae":[21,30,0.0],"aje":[0,11,0.0],"ajena":[0,6,0.0],"ajha":[0,27,0.0],"aleja":[0,175,0.4486],"alexismarie":[0,75,0.0],"alicya":[0,169,0.4456],"alissah":[0,150,0.4352],"alizia":[0,146,0.4329],"amaly":[0,95,0.0],"ambresha":[0,11,0.0],"amely":[0,374,0.5146],"analeigh":[0,1714,0.6468],"anaruth":[0,6,0.0],"anely":[0,398,0.52],"anijah":[0,1375,0.6277],"anney":[0,27,0.0],"anycia":[0,34,0.0],"arabian":[0,6,0.0],"arali":[0,61,0.0],"aricela":[0,130,0.4228],"asmita":[0,52,0.0],"astride":[0,6,0.0],"aubin":[56,11,0.0],"aubreyana":[0,299,0.4951],"bintou":[0,577,0.5522],"breshia":[0,6,0.0],"brhea":[0,6,0.0],"briannica":[0,6,0.0],"brinsley":[0,177,0.4496],"bristal":[0,286,0.4913],"brittanynicole":[0,6,0.0],"careli":[0,80,0.0],"casidee":[0,89,0.0],"celeena":[0,18,0.0],"chadijah":[0,6,0.0],"chandini":[0,34,0.0],"chardonnae":[0,26,0.0],"chely":[0,37,0.0],"cherakee":[0,11,0.0],"cheyan":[0,132,0.4241],"damiesha":[0,6,0.0],"danaja":[0,251,0.4799],"darrika":[0,6,0.0],"deajah":[0,394,0.5191],"delainie":[0,89,0.0],"doha":[5,153,0.4258],"drenisha":[0,6,0.0],"dysha":[0,6,0.0],"egla":[0,6,0.0],"elexsis":[0,24,0.0],"elided":[0,6,0.0],"ellianna":[0,5756,0.752],"emerie":[15,6331,0.7587],"emiri":[20,83,0.3244],"emmarose":[0,939,0.5945],"erionna":[0,425,0.5257],"estreya":[0,200,0.4602],"fahmida":[0,84,0.0],"faviana":[0,40,0.0],"fushia":[0,6,0.0],"gavi":[50,22,0.0],"gensis":[0,23,0.0],"gianella":[0,1061,0.6051],"hailei":[0,288,0.4919],"hawraa":[0,90,0.0],"icsel":[0,6,0.0],"imanee":[0,47,0.0],"inari":[23,529,0.5255],"issel":[0,11,0.0],"itxel":[0,130,0.4228],"jacelin":[0,24,0.0],"jaesha":[0,51,0.0],"jahnia":[0,256,0.4816],"jaidan":[1064,580,0.4163],"jakaya":[0,220,0.4685],"jalitza":[0,53,0.0],"jalyne":[10,147,0.4112],"jamalyn":[0,6,0.0],"jamay":[0,6,0.0],"jamescia":[0,6,0.0],"jameya":[0,197,0.4589],"jashana":[0,6,0.0],"jaycey":[0,65,0.0],"jayona":[0,291,0.4928],"jazelyn":[0,184,0.453],"joandaly":[0,6,0.0],"jobana":[0,30,0.0],"johnecia":[0,11,0.0],"joscelin":[0,243,0.4771],"joselina":[0,55,0.0],"kailla":[0,11,0.0],"kamiyah":[0,5116,0.7418],"kanysha":[0,12,0.0],"kasidee":[0,253,0.4806],"kately":[0,92,0.0],"kealohilani":[0,115,0.4121],"kededra":[0,6,0.0],"keeleigh":[0,420,0.5246],"keishauna":[0,38,0.0],"kenadee":[0,1861,0.6539],"kendallyn":[0,202,0.4611],"kendrika":[0,6,0.0],"kennysha":[0,6,0.0],"kersty":[0,6,0.0],"kevinisha":[0,11,0.0],"keyli":[0,1483,0.6342],"khadeisha":[0,6,0.0],"lanaisha":[0,46,0.0],"laniyah":[0,3625,0.7119],"llaneli":[0,6,0.0],"lynaya":[0,13,0.0],"machala":[0,52,0.0],"mackenze":[0,82,0.0],"maicee":[0,186,0.4539],"makahla":[0,107,0.4059],"mallely":[0,19,0.0],"malley":[0,203,0.4615],"markaila":[0,39,0.0],"maythe":[0,99,0.0],"mccayla":[0,93,0.0],"mckinnley":[72,494,0.4805],"mckinzee":[0,202,0.4611],"medinah":[0,18,0.0],"mehvish":[0,17,0.0],"meshayla":[0,29,0.0],"mikahla":[0,82,0.0],"mikena":[0,65,0.0],"mikkayla":[0,57,0.0],"mikylah":[0,186,0.4539],"minori":[0,75,0.0],"nakeira":[0,28,0.0],"naloni":[0,144,0.4317],"nashely":[0,38,0.0],"nayali":[0,120,0.4158],"ogechukwu":[6,51,0.0],"orlandra":[0,14,0.0],"pader":[0,17,0.0],"payeng":[0,6,0.0],"prabhjot":[133,23,0.374],"presleigh":[0,2041,0.662],"quadijah":[0,6,0.0],"quneisha":[0,6,0.0],"raegine":[0,6,0.0],"rahaf":[0,831,0.5839],"railyn":[6,867,0.5842],"rakiyah":[0,470,0.5344],"rayshelle":[0,11,0.0],"ruchelle":[0,6,0.0],"ryneisha":[0,20,0.0],"rynisha":[0,11,0.0],"sagal":[0,255,0.4813],"santara":[0,14,0.0],"sarahgrace":[0,201,0.4606],"seattle":[5,127,0.408],"shadijah":[0,6,0.0],"shaelin":[0,287,0.4916],"shaian":[0,42,0.0],"shaunyce":[0,6,0.0],"shykira":[0,56,0.0],"skyllar":[0,220,0.4685],"sukhpreet":[6,33,0.0],"tajanay":[0,109,0.4075],"taknisha":[0,6,0.0],"talaysia":[0,422,0.5251],"tazhane":[0,46,0.0],"teaona":[0,18,0.0],"teni":[0,6,0.0],"terranesha":[0,6,0.0],"tiajah":[0,114,0.4114],"tiari":[0,75,0.0],"tilynn":[0,11,0.0],"treauna":[0,12,0.0],"treazure":[0,572,0.5515],"tybria":[0,39,0.0],"tyja":[0,96,0.0],"tynecia":[0,33,0.0],"tyranny":[0,22,0.0],"tyrra":[0,11,0.0],"tyyonna":[0,65,0.0],"xandrea":[0,68,0.0],"yannira":[0,6,0.0],"zanea":[0,24,0.0],"zhanna":[0,131,0.4235],"aailyah":[0,222,0.4693],"aaliayah":[0,129,0.4221],"aalijah":[294,149,0.3513],"aamna":[0,244,0.4775],"aariana":[0,487,0.5375],"abbrielle":[0,83,0.0],"abigayil":[0,27,0.0],"afrah":[0,275,0.4879],"ailed":[0,314,0.4994],"ajea":[0,12,0.0],"ajhane":[0,5,0.0],"akara":[0,42,0.0],"akeiya":[0,5,0.0],"akelah":[0,64,0.0],"alaycia":[0,198,0.4593],"alaynie":[0,18,0.0],"alecxia":[0,5,0.0],"aleni":[0,205,0.4624],"alenka":[0,16,0.0],"alexcis":[11,215,0.4479],"alexuis":[0,35,0.0],"alexxandra":[0,57,0.0],"alexzia":[0,175,0.4486],"alinah":[0,663,0.5643],"alissya":[0,33,0.0],"alixe":[0,5,0.0],"alleya":[0,62,0.0],"alyanna":[0,1917,0.6565],"amiyah":[0,18156,0.8518],"ammarah":[0,63,0.0],"amythest":[0,24,0.0],"anaeli":[0,278,0.4888],"anastatia":[0,18,0.0],"anaysha":[0,184,0.453],"andrelle":[0,11,0.0],"andressa":[0,51,0.0],"anike":[0,20,0.0],"aniyyah":[0,23,0.0],"anjli":[0,11,0.0],"annagrace":[0,785,0.579],"annasha":[0,5,0.0],"annastassia":[0,5,0.0],"antiana":[0,38,0.0],"antolina":[0,5,0.0],"apriljoy":[0,5,0.0],"aquasha":[0,5,0.0],"aquiel":[0,5,0.0],"ariannah":[0,957,0.5962],"ariena":[0,28,0.0],"arisbet":[0,53,0.0],"ariza":[0,633,0.5603],"ashane":[0,5,0.0],"ashura":[0,5,0.0],"asjia":[0,73,0.0],"astou":[0,116,0.4129],"atziri":[0,651,0.5627],"aude":[0,5,0.0],"aureanna":[0,10,0.0],"aveena":[0,133,0.4248],"ayante":[0,5,0.0],"ayriana":[0,339,0.506],"balie":[0,55,0.0],"begum":[0,5,0.0],"betsua":[0,23,0.0],"bilqis":[0,15,0.0],"bintu":[0,58,0.0],"bisola":[0,5,0.0],"blancaestela":[0,5,0.0],"breonah":[0,30,0.0],"breshauna":[0,38,0.0],"breshawna":[0,24,0.0],"brijet":[0,5,0.0],"brittanymarie":[0,5,0.0],"briyit":[0,13,0.0],"brynnan":[0,165,0.4435],"cadeisha":[0,5,0.0],"cadisha":[0,5,0.0],"callaway":[551,488,0.32],"camiesha":[0,5,0.0],"carrigan":[10,1214,0.6125],"cassedy":[0,39,0.0],"cassidey":[0,74,0.0],"chadsity":[0,43,0.0],"chamari":[0,89,0.0],"champane":[0,10,0.0],"chapelle":[0,5,0.0],"chardanay":[0,10,0.0],"chasidee":[0,28,0.0],"cheryllynne":[0,5,0.0],"ciona":[0,36,0.0],"cirra":[0,5,0.0],"cordeshia":[0,5,0.0],"correena":[0,5,0.0],"courtneyann":[0,11,0.0],"curtesha":[0,5,0.0],"daijha":[0,247,0.4785],"daimond":[0,5,0.0],"dajha":[0,149,0.4346],"daliana":[0,288,0.4919],"daneeka":[0,11,0.0],"dantasia":[0,16,0.0],"daquanda":[0,5,0.0],"daquasha":[0,18,0.0],"dariean":[0,5,0.0],"darshea":[0,5,0.0],"daryian":[6,11,0.0],"debrisha":[0,5,0.0],"deeva":[0,13,0.0],"deiona":[0,82,0.0],"derria":[0,13,0.0],"deshonta":[0,11,0.0],"deslyn":[0,134,0.4254],"desmonique":[0,22,0.0],"desray":[0,10,0.0],"destainy":[0,5,0.0],"destene":[0,23,0.0],"destinay":[0,17,0.0],"destney":[0,15,0.0],"devonae":[0,5,0.0],"dezarey":[0,27,0.0],"diaja":[0,52,0.0],"dianelly":[0,90,0.0],"djanae":[0,5,0.0],"dneisha":[0,5,0.0],"dystanie":[0,15,0.0],"dystiny":[0,59,0.0],"elibeth":[0,52,0.0],"elidet":[0,5,0.0],"elideth":[0,46,0.0],"emilymarie":[0,52,0.0],"emmerie":[0,322,0.5016],"essense":[0,82,0.0],"fatmeh":[0,21,0.0],"fergie":[0,142,0.4305],"freyja":[0,3499,0.7088],"gaberille":[0,5,0.0],"gadeer":[0,5,0.0],"gailynn":[0,5,0.0],"gaonou":[0,51,0.0],"gracyn":[189,4054,0.6932],"halyn":[0,368,0.5132],"hitzel":[0,11,0.0],"imalai":[0,5,0.0],"imira":[0,10,0.0],"isenia":[0,18,0.0],"issabella":[0,1767,0.6494],"itia":[0,5,0.0],"itzayanna":[0,221,0.4689],"itzhel":[0,19,0.0],"ixsel":[0,5,0.0],"jacquanna":[0,5,0.0],"jaelah":[0,906,0.5914],"jaelle":[0,652,0.5628],"jahaan":[233,5,0.4653],"jahnice":[0,28,0.0],"jahnique":[0,13,0.0],"jaiana":[0,424,0.5255],"jaidah":[0,933,0.594],"jakeyla":[0,27,0.0],"jalanna":[0,5,0.0],"jalayah":[0,2124,0.6654],"jaliya":[0,648,0.5623],"jamayka":[0,16,0.0],"jamecca":[0,5,0.0],"jamiera":[0,44,0.0],"jamiracle":[0,442,0.5291],"janelie":[0,66,0.0],"janerica":[0,5,0.0],"jaquashia":[0,15,0.0],"jarnae":[0,16,0.0],"jaskiran":[0,50,0.0],"jataya":[0,111,0.4091],"jaunna":[0,5,0.0],"jaylaan":[0,5,0.0],"jayline":[5,1092,0.6053],"jaylynne":[0,374,0.5146],"jazmere":[0,56,0.0],"jazzia":[0,5,0.0],"jealousy":[0,21,0.0],"jeannicole":[0,5,0.0],"jebria":[0,15,0.0],"jelitza":[0,91,0.0],"jernika":[0,5,0.0],"jessicanicole":[0,5,0.0],"jessinia":[0,28,0.0],"jhanee":[0,16,0.0],"jla":[0,233,0.4735],"johnasia":[0,121,0.4166],"johnniqua":[0,5,0.0],"jonicia":[0,11,0.0],"jontaya":[0,5,0.0],"jordayn":[0,97,0.0],"jozelyn":[0,363,0.512],"jozi":[0,221,0.4689],"kaaliyah":[0,413,0.5232],"kaavya":[0,471,0.5346],"kadence":[1603,11487,0.7226],"kadetria":[0,5,0.0],"kadezha":[0,5,0.0],"kaidy":[0,32,0.0],"kailia":[0,229,0.472],"kaitly":[0,15,0.0],"kalean":[0,5,0.0],"kaliesha":[0,10,0.0],"kanasia":[0,122,0.4173],"kanissa":[0,5,0.0],"kapresha":[0,11,0.0],"karalina":[0,175,0.4486],"karenza":[0,17,0.0],"karys":[0,503,0.5403],"kasmine":[0,10,0.0],"kassadi":[0,204,0.4619],"katalena":[0,203,0.4615],"katerena":[0,5,0.0],"kathrynann":[0,5,0.0],"kavia":[0,48,0.0],"kayah":[0,490,0.538],"kayelin":[0,47,0.0],"keaundria":[0,13,0.0],"keausha":[0,17,0.0],"kedeshia":[0,5,0.0],"keirah":[0,414,0.5234],"kelcei":[0,5,0.0],"kelise":[0,661,0.564],"kenedy":[20,608,0.5418],"kenteria":[0,21,0.0],"keshaunna":[0,5,0.0],"keshawnda":[0,10,0.0],"keshunna":[0,17,0.0],"kevianna":[0,44,0.0],"keyarah":[0,271,0.4866],"keyerah":[0,10,0.0],"keyeria":[0,27,0.0],"keyondria":[0,15,0.0],"keyuanna":[0,5,0.0],"keyvonna":[0,15,0.0],"khadijiah":[0,5,0.0],"khadisah":[0,5,0.0],"khaira":[0,100,0.4],"khalyn":[5,43,0.0],"khea":[0,5,0.0],"khila":[0,129,0.4221],"kiannah":[0,361,0.5115],"kieli":[0,72,0.0],"kinsasha":[0,5,0.0],"klyn":[0,120,0.4158],"krea":[0,5,0.0],"kyairra":[0,5,0.0],"kyndrah":[0,10,0.0],"laderrica":[0,13,0.0],"laderricka":[0,46,0.0],"lailoni":[0,346,0.5078],"lapatra":[0,5,0.0],"laquincia":[0,10,0.0],"latroyia":[0,5,0.0],"lauriane":[0,5,0.0],"lavanya":[0,251,0.4799],"layni":[0,504,0.5405],"leani":[0,254,0.481],"leeyah":[0,383,0.5166],"levonna":[0,5,0.0],"lexxi":[0,273,0.4872],"lezah":[0,16,0.0],"lillyanna":[0,3316,0.7041],"liyana":[0,1449,0.6322],"loveleen":[0,48,0.0],"macye":[0,21,0.0],"maegann":[0,12,0.0],"maidson":[0,5,0.0],"maille":[0,189,0.4553],"mairani":[0,59,0.0],"mairany":[0,164,0.443],"makaley":[0,121,0.4166],"makalyn":[0,371,0.5139],"makeila":[0,250,0.4796],"makenzey":[0,169,0.4456],"makiyah":[25,3486,0.704],"malayah":[0,4142,0.7234],"malica":[0,10,0.0],"malijah":[55,99,0.2813],"maliya":[0,2487,0.6791],"malkah":[0,27,0.0],"manasi":[0,187,0.4544],"maraina":[0,26,0.0],"margoth":[0,10,0.0],"mariadelos":[0,5,0.0],"markeyia":[0,10,0.0],"marriam":[0,11,0.0],"maryama":[0,582,0.553],"mashae":[0,10,0.0],"matilyn":[0,936,0.5943],"mattelyn":[0,146,0.4329],"mayanna":[0,92,0.0],"mayghan":[0,5,0.0],"mayisha":[0,5,0.0],"mcayla":[0,17,0.0],"mckynzie":[0,599,0.5555],"mekalah":[0,24,0.0],"merzedes":[0,5,0.0],"mickenna":[0,51,0.0],"mijah":[0,41,0.0],"mikaelyn":[0,90,0.0],"mikaylee":[0,307,0.4974],"mikeyia":[0,10,0.0],"millena":[0,148,0.4341],"miquisha":[0,5,0.0],"mirca":[0,71,0.0],"molleigh":[0,161,0.4414],"monasha":[0,16,0.0],"mychell":[0,5,0.0],"mykalia":[0,33,0.0],"mykeria":[0,121,0.4166],"myresha":[0,17,0.0],"myrisa":[0,15,0.0],"najea":[0,19,0.0],"nakeyah":[0,22,0.0],"narumi":[0,45,0.0],"nashelly":[0,10,0.0],"nataliah":[0,416,0.5238],"navya":[0,2023,0.6612],"naysa":[0,536,0.5458],"nazik":[0,5,0.0],"nene":[0,190,0.4558],"neshay":[0,10,0.0],"nethania":[0,26,0.0],"nichaela":[0,18,0.0],"niemah":[0,86,0.0],"nijae":[15,184,0.4251],"nikkei":[0,5,0.0],"nikoletta":[0,186,0.4539],"noehmi":[0,28,0.0],"nouchee":[0,16,0.0],"nourhan":[0,46,0.0],"noy":[17,22,0.0],"nyasa":[0,10,0.0],"nykeria":[0,462,0.5329],"nylasia":[0,54,0.0],"onyae":[0,15,0.0],"paying":[0,25,0.0],"paytin":[36,552,0.52],"prenisha":[0,5,0.0],"qierra":[0,5,0.0],"quadeshia":[0,5,0.0],"quiandra":[0,5,0.0],"raeleigh":[0,2295,0.6722],"raeonna":[0,133,0.4248],"raevan":[0,31,0.0],"raghad":[0,381,0.5162],"rajvi":[0,80,0.0],"rakira":[0,35,0.0],"raksha":[0,138,0.428],"ranecia":[0,5,0.0],"raquia":[0,5,0.0],"rasmine":[0,5,0.0],"ravynn":[0,100,0.4],"raygine":[0,5,0.0],"rayjean":[0,16,0.0],"raylina":[0,20,0.0],"regen":[6,10,0.0],"reika":[0,155,0.4381],"richae":[0,10,0.0],"rickki":[0,5,0.0],"ridhi":[0,524,0.5439],"rilea":[0,80,0.0],"rinesha":[0,5,0.0],"rochelly":[0,5,0.0],"roksana":[0,46,0.0],"ronniece":[0,5,0.0],"rosaleigh":[0,973,0.5976],"rykki":[0,5,0.0],"saachi":[0,533,0.5453],"sabrie":[0,117,0.4136],"sabriena":[0,5,0.0],"sacorya":[0,5,0.0],"sacoyia":[0,5,0.0],"sadiah":[0,49,0.0],"salone":[0,5,0.0],"sanai":[25,4076,0.7182],"sashalee":[0,5,0.0],"sassy":[0,10,0.0],"sereniti":[0,991,0.5992],"seriah":[0,469,0.5342],"serinity":[0,1177,0.6142],"sevanna":[0,187,0.4544],"shabriana":[0,5,0.0],"shadan":[0,11,0.0],"shakoria":[0,5,0.0],"shaliah":[0,105,0.4042],"shalonte":[0,5,0.0],"shamaiya":[0,58,0.0],"shambrea":[0,5,0.0],"shampagne":[0,5,0.0],"shampayne":[0,19,0.0],"shanqua":[0,5,0.0],"shanqual":[0,5,0.0],"shanterika":[0,5,0.0],"shaonna":[0,10,0.0],"shaquara":[0,12,0.0],"shaquerra":[0,5,0.0],"shaquria":[0,10,0.0],"shatierra":[0,5,0.0],"shaunacy":[0,5,0.0],"shawnessy":[0,23,0.0],"shawntale":[0,5,0.0],"shelbyjo":[0,5,0.0],"sheldyn":[11,12,0.0],"shelsy":[0,466,0.5337],"shine":[255,252,0.2721],"shontasia":[0,13,0.0],"sierrea":[0,5,0.0],"sigal":[0,31,0.0],"simy":[0,21,0.0],"sionna":[0,62,0.0],"skylan":[299,462,0.3499],"sofiya":[0,1144,0.6117],"stefanni":[0,5,0.0],"sulamita":[0,247,0.4785],"sumire":[0,114,0.4114],"summerlin":[0,33,0.0],"sunasia":[0,5,0.0],"surayyah":[0,15,0.0],"suriya":[10,240,0.4604],"symona":[0,5,0.0],"symphanie":[0,139,0.4286],"tailar":[0,20,0.0],"tailynn":[0,907,0.5915],"tajanique":[0,59,0.0],"takaya":[5,78,0.0],"takeidra":[0,5,0.0],"takevia":[0,16,0.0],"taqiyyah":[0,5,0.0],"taranique":[0,5,0.0],"tasharia":[0,34,0.0],"tasja":[0,39,0.0],"tayshawna":[0,10,0.0],"teairah":[0,18,0.0],"teandria":[0,5,0.0],"telaya":[0,5,0.0],"temera":[0,31,0.0],"terrineka":[0,5,0.0],"terrionna":[0,248,0.4789],"teyler":[0,18,0.0],"tiandria":[0,5,0.0],"tiaona":[0,5,0.0],"tiaya":[0,5,0.0],"tierani":[0,5,0.0],"tihani":[0,24,0.0],"tijah":[5,89,0.0],"tikera":[0,5,0.0],"tityana":[0,79,0.0],"tkiyah":[0,32,0.0],"tomesia":[0,5,0.0],"topanga":[0,770,0.5773],"trashell":[0,5,0.0],"tremesha":[0,5,0.0],"tyani":[0,45,0.0],"tyhira":[0,10,0.0],"tykea":[0,5,0.0],"tyonia":[0,40,0.0],"tyquita":[0,5,0.0],"vianet":[0,44,0.0],"victoriamarie":[0,18,0.0],"vyctorya":[0,5,0.0],"wesli":[0,22,0.0],"yae":[0,5,0.0],"yaneisha":[0,5,0.0],"yaneliz":[0,341,0.5066],"yanice":[0,73,0.0],"yanisa":[0,62,0.0],"yanneth":[0,5,0.0],"yarisma":[0,5,0.0],"yasmein":[0,5,0.0],"yazmyne":[0,162,0.4419],"ylana":[0,22,0.0],"yoceline":[0,112,0.4098],"yoseli":[0,29,0.0],"ysabelle":[0,506,0.5408],"ytzel":[0,235,0.4742],"zaena":[0,15,0.0],"zaniah":[0,1730,0.6476],"zaya":[58,2359,0.6604],"zeila":[0,67,0.0],"zeyna":[0,128,0.4214],"zhanaya":[0,5,0.0],"zhanea":[0,5,0.0],"zhania":[0,79,0.0],"zianna":[0,667,0.5648],"zierra":[0,144,0.4317],"ziyadah":[0,5,0.0],"zurisaday":[0,42,0.0],"shyheim":[966,0,0.597],"romello":[2253,0,0.6706],"trayvond":[79,0,0.0],"raekwon":[2278,6,0.67],"roemello":[257,0,0.482],"larenz":[536,0,0.5458],"shyheem":[326,0,0.5026],"romelo":[1080,0,0.6067],"shyhiem":[158,0,0.4397],"trayvone":[50,0,0.0],"andoni":[236,0,0.4746],"jocqui":[41,0,0.0],"shaheim":[214,0,0.4661],"trajan":[787,0,0.5792],"shemar":[2366,6,0.6733],"datrell":[69,0,0.0],"jaeden":[5245,881,0.6485],"kiwane":[47,0,0.0],"tayte":[488,132,0.4396],"abdirahman":[2139,0,0.666],"derice":[18,0,0.0],"dontonio":[11,0,0.0],"iquan":[25,0,0.0],"jadan":[1184,343,0.4937],"tomaz":[62,0,0.0],"treyvond":[19,0,0.0],"aleksei":[444,12,0.5178],"dawood":[335,0,0.505],"dijion":[35,0,0.0],"jagar":[67,0,0.0],"juandaniel":[152,0,0.4364],"kacper":[1091,0,0.6076],"miklo":[491,0,0.5382],"raequan":[516,0,0.5425],"shaheer":[434,0,0.5275],"amante":[246,0,0.4782],"brayson":[3101,0,0.6983],"brevin":[1107,0,0.6088],"derien":[56,0,0.0],"jakhari":[1029,20,0.5926],"jarious":[109,0,0.4075],"javontai":[9,0,0.0],"kenyari":[9,10,0.0],"kewin":[19,0,0.0],"khachik":[16,0,0.0],"khaleed":[246,0,0.4782],"laredo":[19,5,0.0],"maliq":[779,0,0.5783],"tyquez":[258,0,0.4823],"voshon":[80,0,0.0],"adonys":[247,0,0.4785],"braison":[277,0,0.4885],"chigozie":[143,6,0.4171],"damichael":[98,0,0.0],"eliazer":[119,0,0.4151],"fredys":[26,0,0.0],"furkan":[140,0,0.4292],"geovanie":[85,0,0.0],"greydon":[344,0,0.5073],"gurdeep":[22,0,0.0],"harim":[120,0,0.4158],"hirsh":[8,0,0.0],"huner":[8,0,0.0],"jalean":[28,0,0.0],"jevone":[8,0,0.0],"kadan":[489,7,0.5315],"kaeden":[5049,158,0.7208],"kais":[391,0,0.5184],"kanen":[595,0,0.5549],"kaydon":[1381,80,0.5983],"shaquann":[13,0,0.0],"takim":[8,0,0.0],"trevond":[22,0,0.0],"tyreon":[288,0,0.4919],"abdoulie":[125,0,0.4194],"alishan":[25,0,0.0],"allec":[21,0,0.0],"armend":[64,0,0.0],"bara":[17,0,0.0],"brylan":[1227,77,0.5863],"chaison":[35,0,0.0],"dalvon":[22,0,0.0],"damontay":[157,0,0.4392],"danzig":[91,0,0.0],"darshon":[7,0,0.0],"demetrey":[7,0,0.0],"derryk":[41,0,0.0],"dmitriy":[570,0,0.5512],"drevonte":[7,0,0.0],"elyjah":[1908,0,0.6561],"eyob":[251,0,0.4799],"hakeim":[34,0,0.0],"hassam":[26,0,0.0],"hernesto":[29,0,0.0],"holdon":[49,0,0.0],"izayah":[4178,0,0.7242],"izrael":[1186,10,0.6104],"jakai":[3534,206,0.6752],"jakell":[186,6,0.4424],"janzen":[78,0,0.0],"jaylend":[95,0,0.0],"jhett":[1592,22,0.6328],"johansen":[23,0,0.0],"juleon":[76,0,0.0],"keemo":[7,0,0.0],"keiondre":[127,0,0.4208],"keionte":[79,0,0.0],"kendarious":[219,0,0.4681],"kharee":[83,0,0.0],"koltyn":[1088,5,0.6049],"kweisi":[49,0,0.0],"kyandre":[61,0,0.0],"lagarius":[7,0,0.0],"lamontay":[46,0,0.0],"luiggi":[13,0,0.0],"makay":[35,42,0.0],"markele":[7,0,0.0],"mikolaj":[237,0,0.4749],"najahwan":[7,0,0.0],"naoto":[49,0,0.0],"naquille":[7,0,0.0],"niamke":[7,0,0.0],"pheonix":[558,431,0.338],"rage":[123,0,0.418],"ramello":[253,0,0.4806],"raunel":[64,0,0.0],"raymen":[38,0,0.0],"reshaud":[12,0,0.0],"riyan":[1059,680,0.3946],"sabastain":[55,0,0.0],"shakeer":[24,0,0.0],"shyiem":[13,0,0.0],"shykeem":[86,0,0.0],"tahmid":[318,0,0.5005],"tavonta":[12,0,0.0],"teyvon":[19,0,0.0],"trevionne":[64,0,0.0],"tyelor":[51,0,0.0],"xzavius":[7,0,0.0],"yonis":[416,0,0.5238],"yorman":[22,0,0.0],"adarian":[245,0,0.4778],"adoni":[155,0,0.4381],"aimal":[6,0,0.0],"alula":[34,47,0.0],"amere":[1088,145,0.5455],"andersson":[134,0,0.4254],"aravind":[165,0,0.4435],"artyom":[252,0,0.4803],"atef":[17,0,0.0],"beniamin":[33,0,0.0],"brashawn":[34,0,0.0],"braydin":[1083,11,0.6017],"caeden":[2151,29,0.6588],"cavonte":[11,0,0.0],"chaitanya":[166,0,0.444],"chinou":[11,0,0.0],"coal":[169,0,0.4456],"coalton":[145,0,0.4323],"coel":[22,0,0.0],"creedence":[435,135,0.4206],"dalonta":[22,0,0.0],"davondre":[48,0,0.0],"deaire":[205,5,0.4534],"deijon":[16,0,0.0],"deiontre":[48,0,0.0],"dekel":[22,0,0.0],"deshaud":[6,0,0.0],"deterrius":[23,0,0.0],"deveraux":[34,5,0.0],"deyshawn":[46,0,0.0],"dio":[227,0,0.4712],"diony":[24,0,0.0],"donchevell":[6,0,0.0],"dovan":[6,0,0.0],"dreshaun":[249,0,0.4792],"elajuwon":[6,0,0.0],"hulises":[41,0,0.0],"imaad":[227,0,0.4712],"jabrail":[12,0,0.0],"jacquon":[21,0,0.0],"jahrel":[74,0,0.0],"jahvaughn":[6,0,0.0],"jaimin":[141,0,0.4298],"jak":[520,0,0.5432],"jakeith":[43,0,0.0],"jakel":[320,11,0.4872],"jamesdean":[22,0,0.0],"japaul":[11,0,0.0],"jaquaris":[28,0,0.0],"jatavis":[85,0,0.0],"jaydin":[3134,1129,0.5337],"jayr":[123,0,0.418],"jayston":[226,0,0.4708],"jeet":[224,0,0.47],"jeffon":[11,0,0.0],"jeru":[26,0,0.0],"jonquez":[28,0,0.0],"jostein":[6,0,0.0],"jwaun":[23,0,0.0],"kajon":[26,0,0.0],"kanard":[44,0,0.0],"kavaughn":[98,0,0.0],"kayman":[183,21,0.4144],"keeshawn":[204,0,0.4619],"kejon":[64,0,0.0],"kentrelle":[16,0,0.0],"keondrae":[22,0,0.0],"kiano":[144,0,0.4317],"kwentin":[24,0,0.0],"laderious":[12,0,0.0],"latrae":[6,0,0.0],"mahamed":[404,0,0.5213],"maleke":[201,0,0.4606],"marcusanthony":[11,0,0.0],"mardarius":[32,0,0.0],"marthony":[6,0,0.0],"melquisedec":[130,0,0.4228],"muzammil":[192,0,0.4567],"mylik":[113,0,0.4106],"nafees":[42,0,0.0],"navindra":[6,0,0.0],"nickales":[17,0,0.0],"nicodemo":[24,0,0.0],"niem":[14,0,0.0],"oluwaseyi":[232,90,0.3614],"patrell":[16,0,0.0],"phabian":[54,0,0.0],"rahmad":[6,0,0.0],"ramelo":[171,0,0.4466],"ranbir":[184,0,0.453],"raymart":[12,0,0.0],"richer":[20,0,0.0],"rolman":[11,0,0.0],"rylin":[1028,1736,0.4323],"sanjit":[134,0,0.4254],"schaeffer":[18,0,0.0],"sergi":[108,0,0.4067],"seyvon":[11,0,0.0],"shacquille":[6,0,0.0],"shaqwan":[24,0,0.0],"shiheem":[75,0,0.0],"sufian":[189,0,0.4553],"talique":[17,0,0.0],"teshon":[50,0,0.0],"tlyer":[6,0,0.0],"trajon":[71,0,0.0],"tranard":[11,0,0.0],"travond":[6,0,0.0],"trejuan":[62,0,0.0],"trequon":[46,0,0.0],"treyvian":[37,0,0.0],"truston":[41,0,0.0],"tyland":[175,0,0.4486],"tylek":[115,0,0.4121],"tylik":[385,0,0.5171],"vraj":[391,0,0.5184],"wolfe":[485,0,0.5371],"zaahir":[287,0,0.4916],"zakeri":[6,0,0.0],"zimri":[191,41,0.3895],"zyaire":[7720,702,0.7196],"aarren":[5,0,0.0],"abdelkarim":[32,0,0.0],"abdulrahim":[147,0,0.4335],"abdurahman":[465,0,0.5335],"abidan":[23,0,0.0],"abilio":[5,0,0.0],"abriam":[5,0,0.0],"afolabi":[25,0,0.0],"alac":[11,0,0.0],"alandre":[18,0,0.0],"anfrenee":[23,0,0.0],"antarious":[10,0,0.0],"antarius":[28,0,0.0],"aquanis":[5,0,0.0],"archit":[218,0,0.4677],"arlind":[199,0,0.4598],"arnon":[10,0,0.0],"ashar":[548,0,0.5478],"austinmichael":[33,0,0.0],"azfar":[5,0,0.0],"azrael":[2762,339,0.622],"baggio":[12,0,0.0],"baylon":[374,0,0.5146],"bayshawn":[5,0,0.0],"bogart":[33,0,0.0],"bohdi":[658,12,0.5551],"braven":[1009,31,0.5854],"braxtin":[522,5,0.5392],"braxtyn":[2012,344,0.576],"brazos":[347,15,0.4905],"breyer":[197,42,0.3921],"broady":[89,0,0.0],"browning":[69,0,0.0],"bruin":[612,0,0.5574],"cainen":[510,0,0.5415],"caius":[2074,0,0.6634],"callaghan":[333,57,0.4425],"camon":[50,0,0.0],"canden":[233,0,0.4735],"cevon":[34,0,0.0],"chananya":[96,0,0.0],"chanceller":[23,0,0.0],"chancler":[18,0,0.0],"chikezie":[22,0,0.0],"cjay":[63,0,0.0],"colston":[1167,0,0.6134],"creshawn":[10,0,0.0],"cristain":[35,0,0.0],"cristyan":[29,0,0.0],"dahlin":[5,0,0.0],"dahquan":[5,0,0.0],"dailen":[440,5,0.5237],"daltan":[10,0,0.0],"dametre":[5,0,0.0],"damontray":[14,0,0.0],"daquel":[5,0,0.0],"daquinn":[5,0,0.0],"dareion":[109,0,0.4075],"darieus":[18,0,0.0],"davidpaul":[5,0,0.0],"dayonte":[5,0,0.0],"dayvion":[796,0,0.5802],"daz":[23,0,0.0],"dazon":[39,0,0.0],"deantay":[18,0,0.0],"deionta":[57,0,0.0],"dekari":[650,0,0.5626],"dekwan":[34,0,0.0],"demaurea":[5,0,0.0],"demitry":[47,0,0.0],"deonate":[17,0,0.0],"dequone":[5,0,0.0],"deshion":[5,0,0.0],"deterrio":[5,0,0.0],"devohn":[46,0,0.0],"devven":[5,0,0.0],"dezon":[10,0,0.0],"diamonta":[5,0,0.0],"diaquan":[5,0,0.0],"diontaye":[5,0,0.0],"diquon":[5,0,0.0],"djibril":[293,0,0.4934],"dmarius":[66,0,0.0],"dorrion":[22,0,0.0],"dron":[10,0,0.0],"dyondre":[5,0,0.0],"eastin":[521,10,0.5348],"ebrima":[260,0,0.483],"edgareduardo":[5,0,0.0],"eghosa":[45,0,0.0],"elonte":[16,0,0.0],"eluid":[10,0,0.0],"emran":[502,0,0.5401],"forrestt":[13,0,0.0],"garitt":[5,0,0.0],"garratt":[5,0,0.0],"genki":[5,0,0.0],"geremia":[10,0,0.0],"gibril":[72,0,0.0],"guner":[22,0,0.0],"gurveer":[188,0,0.4548],"gwydion":[5,0,0.0],"habram":[28,0,0.0],"hafeez":[17,0,0.0],"harmandeep":[10,0,0.0],"harut":[55,0,0.0],"hawken":[279,0,0.4891],"infinite":[73,0,0.0],"inri":[116,0,0.4129],"isias":[27,0,0.0],"jaalen":[34,0,0.0],"jacorius":[38,0,0.0],"jacquane":[5,0,0.0],"jahkim":[11,0,0.0],"jahziel":[1086,15,0.6001],"jaideep":[66,0,0.0],"jakeal":[5,0,0.0],"jalaal":[10,0,0.0],"jamarkis":[66,0,0.0],"jamerio":[20,0,0.0],"jamhal":[5,0,0.0],"janarius":[24,0,0.0],"janusz":[5,0,0.0],"jaquai":[38,0,0.0],"jaquari":[204,0,0.4619],"jaquarious":[176,0,0.4491],"jaquelle":[29,0,0.0],"jaquinton":[29,0,0.0],"jaric":[49,0,0.0],"jarol":[56,0,0.0],"jarrian":[5,0,0.0],"jarvais":[5,0,0.0],"jarvius":[12,0,0.0],"jawane":[5,0,0.0],"jaydn":[689,377,0.3914],"jayquon":[65,0,0.0],"jedaiah":[233,0,0.4735],"jehovany":[5,0,0.0],"jehremy":[5,0,0.0],"jermarius":[40,0,0.0],"jerrion":[313,0,0.4991],"jerrison":[16,0,0.0],"jervaughn":[5,0,0.0],"jessus":[31,0,0.0],"jesualdo":[5,0,0.0],"jhalen":[72,0,0.0],"jhamel":[5,0,0.0],"jlyn":[110,164,0.2918],"johnscott":[5,0,0.0],"jonethan":[22,0,0.0],"josephpatrick":[5,0,0.0],"josephthomas":[5,0,0.0],"joshuarobert":[5,0,0.0],"josia":[144,5,0.4201],"kadesh":[25,0,0.0],"kaeleb":[635,0,0.5606],"kaif":[37,0,0.0],"kaito":[1164,0,0.6132],"kaliel":[127,0,0.4208],"kalop":[10,0,0.0],"kamahl":[5,0,0.0],"kassan":[45,0,0.0],"keawe":[143,0,0.4311],"keiontae":[77,0,0.0],"kemet":[174,12,0.4246],"kenden":[354,0,0.5098],"kez":[10,0,0.0],"khafre":[10,0,0.0],"khare":[5,0,0.0],"kiegan":[160,5,0.4301],"kire":[153,5,0.4258],"kohler":[143,0,0.4311],"koki":[176,0,0.4491],"kollyn":[181,83,0.3321],"kor":[5,0,0.0],"koven":[177,0,0.4496],"kreshnik":[5,0,0.0],"kyalo":[5,0,0.0],"kylil":[89,0,0.0],"kyvon":[166,0,0.444],"ladontay":[5,0,0.0],"lakoda":[173,94,0.3144],"laphonso":[5,0,0.0],"leondro":[144,0,0.4317],"lidio":[5,0,0.0],"luai":[34,0,0.0],"ludwing":[22,0,0.0],"luisdavid":[86,0,0.0],"madsen":[152,5,0.4252],"majeed":[83,0,0.0],"malic":[133,0,0.4248],"malichi":[516,0,0.5425],"maliik":[93,0,0.0],"marcquel":[12,0,0.0],"markal":[44,0,0.0],"markeal":[34,0,0.0],"markiel":[28,0,0.0],"markkevin":[5,0,0.0],"marquess":[28,0,0.0],"marquille":[5,0,0.0],"martwan":[5,0,0.0],"mateus":[948,0,0.5954],"matisyahu":[69,0,0.0],"maulik":[15,0,0.0],"maverik":[1143,10,0.6071],"mccade":[99,0,0.0],"mccarthy":[59,0,0.0],"megale":[5,0,0.0],"mian":[74,35,0.2766],"mikaeel":[350,0,0.5088],"moath":[36,0,0.0],"mohmmed":[34,0,0.0],"monquel":[5,0,0.0],"mouhamadou":[431,0,0.5269],"mr":[5,0,0.0],"muaz":[394,0,0.5191],"muhsin":[611,0,0.5572],"mylz":[95,0,0.0],"naiem":[58,0,0.0],"najam":[5,0,0.0],"najir":[113,0,0.4106],"nauman":[22,0,0.0],"naweed":[20,0,0.0],"nesly":[5,64,0.0],"nikolaas":[17,0,0.0],"nisan":[21,0,0.0],"nocona":[11,6,0.0],"normando":[10,0,0.0],"obeth":[48,0,0.0],"oshaye":[10,0,0.0],"otavious":[5,0,0.0],"ozair":[92,0,0.0],"parham":[10,0,0.0],"paxon":[463,0,0.5331],"phenix":[479,343,0.3397],"quamell":[10,0,0.0],"quanzell":[5,0,0.0],"quavion":[255,0,0.4813],"quazi":[5,0,0.0],"rafeek":[5,0,0.0],"raiquan":[89,0,0.0],"rajuan":[20,0,0.0],"ramiel":[161,0,0.4414],"randarius":[49,0,0.0],"raushaun":[5,0,0.0],"rayvone":[16,0,0.0],"reign":[3662,7300,0.5381],"rickeem":[5,0,0.0],"rieley":[111,203,0.3229],"rogel":[10,0,0.0],"rontarius":[5,0,0.0],"rontavis":[5,0,0.0],"ryanmatthew":[5,0,0.0],"samee":[36,0,0.0],"sealtiel":[5,0,0.0],"serafim":[20,0,0.0],"seton":[45,10,0.0],"sevaughn":[17,0,0.0],"sevrin":[93,0,0.0],"shaiheem":[11,0,0.0],"shaikeem":[5,0,0.0],"shakar":[10,0,0.0],"shakeen":[10,0,0.0],"shameik":[5,0,0.0],"shamek":[5,0,0.0],"shamiek":[5,0,0.0],"shaquillie":[5,0,0.0],"shareif":[5,0,0.0],"shaunmichael":[10,0,0.0],"shawndre":[22,0,0.0],"shymel":[5,0,0.0],"shymere":[16,0,0.0],"simba":[156,0,0.4386],"skylur":[76,58,0.2413],"slader":[89,0,0.0],"slaton":[140,0,0.4292],"straton":[47,0,0.0],"subin":[10,6,0.0],"taequan":[146,0,0.4329],"tahjae":[121,122,0.2395],"tahje":[77,43,0.2668],"taijon":[155,0,0.4381],"tamaz":[14,0,0.0],"tamell":[5,0,0.0],"tashun":[57,0,0.0],"thanhphong":[5,0,0.0],"tharen":[43,0,0.0],"thyler":[10,0,0.0],"timofey":[494,0,0.5387],"torrion":[154,0,0.4375],"touger":[47,0,0.0],"trayvonne":[31,0,0.0],"trejan":[90,0,0.0],"tren":[10,0,0.0],"treve":[5,0,0.0],"trevien":[11,0,0.0],"treyven":[129,0,0.4221],"treyvone":[64,0,0.0],"tyjay":[113,0,0.4106],"tykese":[53,0,0.0],"tylier":[5,0,0.0],"uver":[5,0,0.0],"vasiliy":[76,0,0.0],"vikesh":[5,0,0.0],"vitaliy":[423,0,0.5253],"vontarius":[5,0,0.0],"vontrel":[5,0,0.0],"wakeen":[5,0,0.0],"walsh":[20,0,0.0],"westan":[42,0,0.0],"windale":[5,0,0.0],"wuilmer":[16,0,0.0],"xaviel":[82,0,0.0],"yazid":[380,0,0.516],"yngwie":[5,0,0.0],"yohanan":[111,10,0.3821],"yomar":[356,0,0.5103],"you":[10,0,0.0],"yutaro":[44,0,0.0],"zahn":[28,0,0.0],"zaron":[193,0,0.4571],"zavius":[22,0,0.0],"yamilex":[0,1258,0.6199],"irania":[0,208,0.4636],"natori":[6,377,0.5085],"iridiana":[0,154,0.4375],"yomira":[0,124,0.4187],"jamilex":[0,348,0.5083],"ismenia":[0,49,0.0],"kennadi":[0,2138,0.666],"deianeira":[0,49,0.0],"dazha":[0,115,0.4121],"dajai":[0,120,0.4158],"jaidyn":[3408,5759,0.4978],"maty":[0,142,0.4305],"adasia":[0,229,0.472],"dazja":[0,60,0.0],"adeja":[0,123,0.418],"alanis":[0,3321,0.7043],"allyiah":[0,166,0.444],"jharline":[0,25,0.0],"rajanae":[0,160,0.4408],"shieda":[0,14,0.0],"yamiles":[0,43,0.0],"dajsha":[0,100,0.4],"dayzha":[0,76,0.0],"deijah":[0,283,0.4904],"kennadie":[0,724,0.5719],"adahli":[0,23,0.0],"assyria":[0,117,0.4136],"azul":[299,4378,0.6871],"daijia":[0,40,0.0],"deianira":[0,36,0.0],"jamyia":[0,711,0.5704],"kenadie":[0,1725,0.6474],"malashia":[0,104,0.4034],"sarabi":[0,262,0.4837],"akeylah":[0,140,0.4292],"allyna":[0,225,0.4704],"dayanera":[0,20,0.0],"dezha":[0,41,0.0],"janiyah":[0,13253,0.8245],"lanikki":[0,11,0.0],"mayzie":[0,1013,0.6011],"reyanne":[0,85,0.0],"tapanga":[0,549,0.5479],"tyleah":[0,623,0.5589],"yilda":[0,33,0.0],"ananya":[5,3958,0.7187],"anuhea":[0,508,0.5412],"dainara":[0,10,0.0],"dazsha":[0,33,0.0],"healy":[0,38,0.0],"jashayla":[0,201,0.4606],"mahalah":[0,54,0.0],"maiyah":[0,545,0.5473],"maiyer":[0,10,0.0],"makinna":[0,350,0.5088],"ramsha":[0,120,0.4158],"rionna":[0,173,0.4476],"tyashia":[0,95,0.0],"tykiera":[0,63,0.0],"unkown":[49,42,0.0],"ykeisha":[0,10,0.0],"abbygayle":[0,451,0.5308],"aitana":[0,8361,0.7845],"aubreigh":[0,1505,0.6355],"bralyn":[521,331,0.3584],"brilynn":[12,1062,0.5994],"brookelynne":[0,265,0.4846],"courtlynn":[0,410,0.5226],"daesia":[0,65,0.0],"daishia":[0,96,0.0],"dalanie":[0,319,0.5008],"dontasia":[0,127,0.4208],"emanie":[0,187,0.4544],"jahnai":[16,109,0.3657],"jakiera":[0,157,0.4392],"janaysia":[0,155,0.4381],"johnea":[0,20,0.0],"kierstynn":[0,107,0.4059],"koryna":[0,27,0.0],"kristanna":[0,52,0.0],"kristlyn":[0,60,0.0],"ladajah":[0,76,0.0],"lexxis":[0,41,0.0],"mikeila":[0,178,0.4501],"nadeja":[0,35,0.0],"nikitha":[0,290,0.4925],"noelly":[0,184,0.453],"rajane":[0,9,0.0],"shalexis":[0,16,0.0],"shaniyah":[0,3031,0.6963],"shanyia":[0,498,0.5394],"syvanna":[0,87,0.0],"tanijah":[0,455,0.5316],"tymara":[0,64,0.0],"widline":[0,9,0.0],"zanae":[0,303,0.4963],"aanchal":[0,72,0.0],"abagayle":[0,346,0.5078],"abreana":[0,44,0.0],"adaijah":[0,82,0.0],"aishwarya":[0,899,0.5908],"akasia":[0,88,0.0],"alayjah":[0,770,0.5773],"alazia":[0,227,0.4712],"alexiana":[0,495,0.5389],"aliciana":[0,432,0.5271],"anacarolina":[0,121,0.4166],"areeba":[0,398,0.52],"ashantee":[0,128,0.4214],"ayanah":[0,494,0.5387],"chloey":[0,1206,0.6163],"christasia":[0,136,0.4267],"corteney":[0,8,0.0],"deshai":[0,22,0.0],"harmonee":[0,1393,0.6288],"hokulani":[0,131,0.4235],"hydea":[0,13,0.0],"idalys":[0,158,0.4397],"imperia":[0,13,0.0],"jamaiya":[0,274,0.4876],"jerelly":[0,8,0.0],"jeslynn":[0,264,0.4843],"kadiatou":[0,582,0.553],"kaiana":[0,233,0.4735],"keairah":[0,56,0.0],"keiyanna":[0,48,0.0],"kellsea":[0,13,0.0],"kemira":[0,24,0.0],"kenae":[0,62,0.0],"kourteney":[0,17,0.0],"layah":[0,1306,0.6232],"lejla":[0,854,0.5863],"llasmin":[0,47,0.0],"macyn":[142,914,0.5234],"maicie":[0,130,0.4228],"maitlyn":[0,101,0.4009],"marcayla":[0,143,0.4311],"meryssa":[0,23,0.0],"mikailah":[0,161,0.4414],"morelia":[0,751,0.5751],"morrigan":[0,1075,0.6063],"nautika":[0,226,0.4708],"nayah":[0,610,0.5571],"oasis":[65,282,0.4129],"raeneisha":[0,8,0.0],"roshae":[0,8,0.0],"rubicelia":[0,8,0.0],"sadeja":[0,14,0.0],"seryna":[0,201,0.4606],"tatyania":[0,37,0.0],"tramanh":[0,24,0.0],"tyrielle":[0,72,0.0],"yarelly":[0,238,0.4753],"zharia":[0,1007,0.6006],"airicka":[0,13,0.0],"ajanique":[0,28,0.0],"akaila":[0,71,0.0],"alaiya":[0,2810,0.6897],"alexanna":[0,27,0.0],"aliyha":[0,249,0.4792],"alizay":[10,1033,0.5979],"allondra":[0,40,0.0],"alorah":[0,602,0.5559],"alysabeth":[0,73,0.0],"alyxa":[0,32,0.0],"amaal":[0,197,0.4589],"amulya":[0,383,0.5166],"anaja":[0,225,0.4704],"analea":[0,379,0.5157],"ashaya":[0,112,0.4098],"aujanae":[0,188,0.4548],"avionna":[0,898,0.5907],"balee":[0,24,0.0],"breandra":[0,7,0.0],"cailon":[0,7,0.0],"carlianne":[0,12,0.0],"ceandra":[0,12,0.0],"chambre":[0,7,0.0],"chassiti":[0,7,0.0],"dainera":[0,7,0.0],"daizsa":[0,15,0.0],"dajanea":[0,13,0.0],"dajiah":[0,75,0.0],"dakayla":[0,495,0.5389],"damecia":[0,17,0.0],"daziah":[0,194,0.4576],"dejae":[0,70,0.0],"desja":[0,26,0.0],"dezhanae":[0,7,0.0],"dezree":[0,7,0.0],"drewann":[0,7,0.0],"emonee":[0,194,0.4576],"falicity":[0,168,0.4451],"gabryela":[0,168,0.4451],"gissella":[0,83,0.0],"ilyanna":[0,458,0.5322],"ivonn":[0,7,0.0],"izabell":[0,1287,0.6219],"jacquelinne":[0,68,0.0],"jahnelle":[0,47,0.0],"jamilett":[0,127,0.4208],"jaqueisha":[0,7,0.0],"jaslene":[0,3125,0.699],"jaylinn":[28,735,0.5553],"jocilynn":[0,78,0.0],"kabresha":[0,7,0.0],"kamalei":[30,117,0.345],"kamrey":[0,57,0.0],"kasidi":[0,79,0.0],"katelee":[0,113,0.4106],"keiarah":[0,105,0.4042],"kenedee":[0,199,0.4598],"kennadee":[0,562,0.5499],"khaliya":[0,477,0.5357],"krishuna":[0,7,0.0],"ladaijah":[0,45,0.0],"maddyson":[0,979,0.5982],"maeson":[685,302,0.4156],"majenta":[0,7,0.0],"makensey":[0,126,0.4201],"malavika":[0,69,0.0],"mattisen":[0,91,0.0],"mckall":[0,12,0.0],"melaniece":[0,7,0.0],"meleena":[0,210,0.4644],"mellina":[0,108,0.4067],"mireida":[0,12,0.0],"mylika":[0,7,0.0],"nickayla":[0,205,0.4624],"nimrah":[0,39,0.0],"odeth":[0,63,0.0],"railey":[48,755,0.5462],"rayleigh":[82,2850,0.674],"reshay":[0,14,0.0],"ruchika":[0,39,0.0],"saranya":[0,182,0.452],"scarleth":[0,696,0.5685],"selenna":[0,36,0.0],"shantierra":[0,7,0.0],"shayenne":[0,24,0.0],"shifa":[0,308,0.4977],"skylyn":[0,1143,0.6116],"sruthi":[0,387,0.5175],"tacorra":[0,7,0.0],"tajanea":[0,18,0.0],"tru":[3290,2266,0.4435],"tyshai":[0,25,0.0],"tytana":[0,24,0.0],"yarida":[0,7,0.0],"yocelyne":[0,24,0.0],"aanisah":[0,39,0.0],"abbagayle":[0,112,0.4098],"abigahil":[0,42,0.0],"abreona":[0,6,0.0],"afsana":[0,114,0.4114],"ahjanae":[0,136,0.4267],"ahlana":[0,251,0.4799],"airiana":[0,572,0.5515],"aisley":[0,1050,0.6042],"ajanay":[0,136,0.4267],"aleighsha":[0,11,0.0],"aleiya":[0,451,0.5308],"aliaha":[0,34,0.0],"alija":[125,49,0.3219],"alizae":[5,1208,0.6142],"alliya":[0,224,0.47],"alyra":[0,327,0.5029],"alyric":[12,349,0.4945],"alysandra":[0,238,0.4753],"alysea":[0,55,0.0],"amalea":[0,80,0.0],"amya":[0,10218,0.8019],"anari":[102,1006,0.5529],"anayansi":[0,89,0.0],"angeliz":[0,456,0.5318],"aniecia":[0,32,0.0],"annanicole":[0,25,0.0],"anthonique":[0,16,0.0],"archelle":[0,6,0.0],"areonna":[0,212,0.4653],"ariely":[0,310,0.4983],"arkeria":[0,12,0.0],"arlandria":[0,22,0.0],"arsema":[0,679,0.5664],"arushi":[0,643,0.5616],"ashni":[0,78,0.0],"astri":[0,62,0.0],"atalya":[0,132,0.4241],"ayzha":[0,34,0.0],"bashira":[0,6,0.0],"baylin":[284,250,0.2901],"braneisha":[0,6,0.0],"braylyn":[554,724,0.352],"brealynn":[0,286,0.4913],"brieona":[0,38,0.0],"brookelin":[0,79,0.0],"bryannah":[0,248,0.4789],"caelainn":[0,6,0.0],"ciandra":[0,48,0.0],"colline":[0,6,0.0],"cylena":[0,6,0.0],"daejha":[0,23,0.0],"dailynn":[15,421,0.5097],"daisja":[0,100,0.4],"daiza":[0,65,0.0],"dajaha":[0,16,0.0],"dajonique":[0,6,0.0],"dashel":[678,6,0.562],"dasiah":[53,168,0.3564],"dayjah":[0,275,0.4879],"delexus":[0,12,0.0],"demiana":[0,205,0.4624],"deyja":[0,63,0.0],"deztiny":[0,241,0.4764],"dymin":[0,73,0.0],"edriana":[0,46,0.0],"elexas":[0,16,0.0],"emmalena":[0,100,0.4],"erini":[0,20,0.0],"evey":[0,857,0.5866],"eyanna":[0,204,0.4619],"forever":[84,572,0.4912],"galaxy":[42,365,0.4681],"garbielle":[0,6,0.0],"gizela":[0,27,0.0],"gohar":[0,40,0.0],"gracelynn":[0,12550,0.8197],"graycen":[618,774,0.3496],"hajira":[0,124,0.4187],"hareem":[0,420,0.5246],"hilal":[74,61,0.2335],"illyanna":[0,226,0.4708],"imahni":[0,38,0.0],"imanie":[0,174,0.4481],"infantgirl":[0,30,0.0],"ionna":[0,264,0.4843],"jahasia":[0,28,0.0],"jailah":[0,1234,0.6183],"jakya":[0,470,0.5344],"jaleigha":[0,497,0.5393],"jamiria":[0,91,0.0],"jamoni":[276,169,0.3285],"janayia":[0,145,0.4323],"janiecia":[0,28,0.0],"jasi":[58,32,0.0],"jazymne":[0,6,0.0],"jesikah":[0,18,0.0],"jesly":[0,267,0.4853],"jewelisa":[0,39,0.0],"jiya":[0,2196,0.6683],"jonteria":[0,6,0.0],"jorgi":[0,6,0.0],"jorgie":[0,47,0.0],"joselinne":[0,78,0.0],"jovannah":[0,55,0.0],"jozelle":[0,16,0.0],"kaayla":[0,6,0.0],"kaisee":[0,24,0.0],"karagan":[0,142,0.4305],"karrigan":[0,510,0.5415],"kashley":[0,23,0.0],"kayisha":[0,6,0.0],"keajah":[0,93,0.0],"kechelle":[0,6,0.0],"keishonna":[0,12,0.0],"kendalynn":[0,423,0.5253],"kennedee":[0,412,0.523],"kes":[5,33,0.0],"kess":[0,63,0.0],"kevelyn":[0,16,0.0],"kierin":[37,17,0.0],"kirstynn":[0,11,0.0],"krishma":[0,19,0.0],"kristyanna":[0,68,0.0],"kyauna":[0,44,0.0],"landri":[5,1026,0.5997],"leeba":[0,432,0.5271],"lielle":[0,550,0.5481],"lilandra":[0,26,0.0],"lilinoe":[0,220,0.4685],"lillibeth":[0,27,0.0],"linesha":[0,6,0.0],"luwam":[0,52,0.0],"lyudmila":[0,27,0.0],"macalah":[0,40,0.0],"maclaine":[19,114,0.3641],"maimouna":[0,581,0.5528],"mairah":[0,18,0.0],"makennah":[0,698,0.5688],"makhala":[0,48,0.0],"makyia":[0,439,0.5285],"maray":[0,11,0.0],"mariaceleste":[0,62,0.0],"marionna":[0,482,0.5366],"maysen":[604,709,0.3368],"mckae":[0,6,0.0],"mekkah":[10,16,0.0],"mekyla":[0,29,0.0],"michalah":[0,32,0.0],"micia":[0,6,0.0],"mikaelah":[0,197,0.4589],"miyu":[0,233,0.4735],"moriya":[0,115,0.4121],"mykelti":[37,90,0.2982],"mykyla":[0,23,0.0],"naquasia":[0,6,0.0],"nataliya":[0,727,0.5723],"natallia":[0,174,0.4481],"neily":[0,71,0.0],"nikera":[0,52,0.0],"nikyah":[0,133,0.4248],"norelis":[0,11,0.0],"nyaja":[0,129,0.4221],"nytia":[0,28,0.0],"oksanna":[0,12,0.0],"quadaisha":[0,16,0.0],"quanae":[0,30,0.0],"quanshae":[0,6,0.0],"quanshay":[0,6,0.0],"quashawna":[0,14,0.0],"raeghan":[0,491,0.5382],"raia":[0,377,0.5153],"rashanique":[0,6,0.0],"rashaya":[0,6,0.0],"rehema":[0,188,0.4548],"reven":[68,6,0.0],"rhiley":[285,901,0.4671],"sajada":[0,44,0.0],"saphyre":[0,131,0.4235],"sehrish":[0,140,0.4292],"seinna":[0,16,0.0],"serenah":[0,152,0.4364],"shadaja":[0,35,0.0],"shaelah":[0,28,0.0],"shaelynne":[0,38,0.0],"shaliya":[0,57,0.0],"shambrika":[0,6,0.0],"shaynell":[0,6,0.0],"shekayla":[0,6,0.0],"shynia":[0,139,0.4286],"skylin":[53,927,0.5659],"tahiry":[0,601,0.5558],"tajanee":[0,59,0.0],"talandra":[0,6,0.0],"tamiyah":[0,1292,0.6223],"tanayah":[0,190,0.4558],"tearney":[0,11,0.0],"temira":[0,11,0.0],"teriona":[0,31,0.0],"thiana":[0,145,0.4323],"thyme":[6,58,0.0],"tiamara":[0,17,0.0],"tianee":[0,6,0.0],"tianie":[0,6,0.0],"timberlyn":[0,179,0.4506],"tommia":[0,38,0.0],"tupou":[5,12,0.0],"tybresha":[0,6,0.0],"tychina":[0,11,0.0],"tyliah":[0,437,0.5281],"tyshara":[0,26,0.0],"tysheanna":[0,12,0.0],"tysheria":[0,43,0.0],"tyshira":[0,23,0.0],"vontese":[0,11,0.0],"xiola":[0,34,0.0],"yanela":[0,13,0.0],"yaremi":[0,216,0.4669],"yassmine":[0,122,0.4173],"yuliya":[0,62,0.0],"yulma":[0,26,0.0],"yveline":[0,6,0.0],"zahria":[0,967,0.5971],"zanovia":[0,246,0.4782],"zarahi":[0,278,0.4888],"zarria":[0,604,0.5562],"aailiyah":[0,15,0.0],"aasiyah":[0,628,0.5596],"abagaile":[0,15,0.0],"abbigal":[0,158,0.4397],"abgail":[0,29,0.0],"adalhi":[0,5,0.0],"adalida":[0,239,0.4757],"adaya":[0,1130,0.6106],"addisyn":[0,9967,0.7997],"adeeba":[0,32,0.0],"adjua":[0,5,0.0],"adrianny":[0,36,0.0],"aeja":[0,48,0.0],"aericka":[0,5,0.0],"ahniyah":[0,321,0.5013],"ahyana":[0,86,0.0],"aijha":[0,5,0.0],"aireka":[0,5,0.0],"aivan":[98,5,0.383],"aivy":[0,325,0.5024],"aiya":[0,647,0.5622],"ajahnae":[0,111,0.4091],"ajsha":[0,5,0.0],"akena":[0,10,0.0],"akshara":[0,1907,0.6561],"alabama":[0,306,0.4971],"alajah":[0,687,0.5674],"alantis":[0,147,0.4335],"alayha":[0,232,0.4731],"alayia":[0,673,0.5656],"alekzandra":[0,5,0.0],"alexxandria":[0,15,0.0],"aleyia":[0,58,0.0],"aleysia":[0,121,0.4166],"aliccia":[0,5,0.0],"alicianna":[0,186,0.4539],"aliera":[0,37,0.0],"aliyiah":[0,57,0.0],"amaiya":[0,1913,0.6563],"amalya":[0,383,0.5166],"amarie":[485,2414,0.5766],"amberlynne":[0,10,0.0],"ambreanna":[0,5,0.0],"amelya":[0,740,0.5738],"amila":[0,1092,0.6076],"amilya":[0,838,0.5846],"amonnie":[0,11,0.0],"anaiya":[0,2193,0.6682],"anakarina":[0,34,0.0],"analisse":[0,340,0.5063],"andranae":[0,11,0.0],"aneicia":[0,5,0.0],"anfal":[0,84,0.0],"aniella":[0,177,0.4496],"anjelyka":[0,5,0.0],"annaleisa":[0,5,0.0],"annalisse":[0,263,0.484],"annalyce":[0,147,0.4335],"annikka":[0,40,0.0],"antesha":[0,5,0.0],"antionna":[0,10,0.0],"antoinesha":[0,5,0.0],"antonay":[0,10,0.0],"antonela":[0,278,0.4888],"anza":[0,23,0.0],"aquaisha":[0,5,0.0],"aquinnah":[0,112,0.4098],"araxi":[0,10,0.0],"arianah":[0,926,0.5933],"arielys":[0,330,0.5037],"arienna":[0,116,0.4129],"arieona":[0,195,0.458],"arieonna":[0,340,0.5063],"arilyn":[0,419,0.5244],"armanee":[0,39,0.0],"armonie":[235,702,0.4453],"arora":[0,296,0.4943],"arria":[0,339,0.506],"asherah":[0,123,0.418],"ashunte":[0,39,0.0],"asna":[0,88,0.0],"aspynn":[0,256,0.4816],"astaria":[0,83,0.0],"atiyana":[0,67,0.0],"atzimba":[0,10,0.0],"aubryana":[0,311,0.4986],"autunm":[0,13,0.0],"auzhane":[0,22,0.0],"ayaan":[8238,229,0.7643],"ayea":[0,5,0.0],"ayeh":[0,10,0.0],"azjah":[0,74,0.0],"bailye":[0,5,0.0],"bali":[42,198,0.3927],"bhavana":[0,109,0.4075],"bhavya":[92,345,0.4169],"brailyn":[388,1061,0.4629],"breaira":[0,10,0.0],"breeyana":[0,11,0.0],"breneshia":[0,5,0.0],"brescia":[0,5,0.0],"briandra":[0,5,0.0],"briannie":[0,67,0.0],"bricelyn":[0,67,0.0],"brionica":[0,5,0.0],"brishon":[0,5,0.0],"brynlee":[21,20940,0.8634],"calianne":[0,82,0.0],"carigan":[0,86,0.0],"carizma":[0,108,0.4067],"caseylynn":[0,5,0.0],"cassiday":[0,11,0.0],"caysee":[0,17,0.0],"celess":[0,5,0.0],"celinna":[0,5,0.0],"chambria":[0,15,0.0],"chinwendu":[0,16,0.0],"chizoba":[0,14,0.0],"chrishona":[0,5,0.0],"christasha":[0,5,0.0],"chumani":[0,11,0.0],"chyeanne":[0,15,0.0],"chynah":[0,144,0.4317],"claritsa":[0,5,0.0],"corvina":[0,5,0.0],"cyana":[0,226,0.4708],"daeshia":[0,20,0.0],"daesy":[0,5,0.0],"daianera":[0,5,0.0],"daijiah":[0,5,0.0],"daishae":[0,5,0.0],"daizia":[0,19,0.0],"dajauna":[0,10,0.0],"dajee":[0,10,0.0],"dakira":[0,57,0.0],"dally":[0,316,0.4999],"danaysia":[0,171,0.4466],"darbey":[0,25,0.0],"daryann":[0,5,0.0],"dashley":[0,215,0.4665],"dashonte":[0,5,0.0],"dasjah":[0,13,0.0],"dasya":[0,48,0.0],"dawneisha":[0,5,0.0],"dayanaira":[0,10,0.0],"daynesha":[0,11,0.0],"dayzah":[0,11,0.0],"dayzhane":[0,10,0.0],"dazjah":[0,33,0.0],"debanhi":[0,926,0.5933],"dejahna":[0,10,0.0],"dejahnique":[0,5,0.0],"dejaneira":[0,5,0.0],"dejanna":[0,28,0.0],"dejhanae":[0,5,0.0],"delenn":[0,84,0.0],"deliana":[0,144,0.4317],"demaya":[0,284,0.4907],"denaisha":[0,67,0.0],"denaysha":[0,37,0.0],"desitny":[0,5,0.0],"destinae":[0,73,0.0],"destinei":[0,15,0.0],"destinnie":[0,5,0.0],"deysia":[0,10,0.0],"dezarea":[0,27,0.0],"dezia":[0,14,0.0],"dresha":[0,5,0.0],"duha":[0,186,0.4539],"dymone":[0,38,0.0],"dystinee":[0,17,0.0],"ece":[0,87,0.0],"eleny":[0,326,0.5026],"eliani":[0,552,0.5484],"elisabethe":[0,5,0.0],"elivia":[0,398,0.52],"ellina":[0,264,0.4843],"emauni":[0,17,0.0],"emmely":[0,474,0.5352],"engie":[0,31,0.0],"eniya":[0,506,0.5408],"eriqua":[0,10,0.0],"erisa":[0,63,0.0],"ezabella":[0,434,0.5275],"fadumo":[0,295,0.494],"faina":[0,40,0.0],"fiama":[0,11,0.0],"fizza":[0,121,0.4166],"francely":[0,136,0.4267],"gabbriella":[0,303,0.4963],"gabirelle":[0,5,0.0],"gaozong":[0,16,0.0],"gavy":[0,5,0.0],"graciana":[0,324,0.5021],"haliee":[0,31,0.0],"halleigh":[0,332,0.5042],"hedit":[0,5,0.0],"hisela":[0,5,0.0],"husna":[0,709,0.5701],"ilham":[22,255,0.4497],"illianna":[0,455,0.5316],"ilsy":[0,15,0.0],"inaya":[0,3102,0.6983],"irys":[0,199,0.4598],"ismari":[0,54,0.0],"issis":[0,159,0.4403],"iyannah":[0,452,0.531],"iyauna":[0,75,0.0],"jaaliyah":[0,401,0.5206],"jabriah":[0,33,0.0],"jacayla":[0,108,0.4067],"jacelynn":[0,934,0.5941],"jadaya":[0,179,0.4506],"jaeleen":[0,300,0.4954],"jahana":[0,15,0.0],"jakyla":[0,925,0.5932],"jamayca":[0,5,0.0],"jamyah":[0,1126,0.6103],"janaysha":[0,116,0.4129],"janeeva":[0,10,0.0],"janela":[0,5,0.0],"jaselle":[0,461,0.5327],"jasneet":[0,74,0.0],"jazleen":[0,1269,0.6207],"jazzmaine":[0,5,0.0],"jeanelly":[0,32,0.0],"jedidah":[0,69,0.0],"jeidy":[0,303,0.4963],"jenyce":[0,15,0.0],"jesmarie":[0,45,0.0],"jhada":[0,78,0.0],"jhanelle":[0,16,0.0],"jhonae":[0,5,0.0],"jhori":[0,24,0.0],"jihyun":[0,5,0.0],"johneice":[0,5,0.0],"johnnay":[0,85,0.0],"johnneisha":[0,5,0.0],"joiya":[0,37,0.0],"joselynne":[0,132,0.4241],"joylin":[0,43,0.0],"joynae":[0,5,0.0],"juleanna":[0,34,0.0],"julizza":[0,62,0.0],"kadaja":[0,52,0.0],"kaelei":[0,106,0.4051],"kahlyn":[0,174,0.4481],"kaianna":[0,122,0.4173],"kajah":[0,81,0.0],"kajia":[0,10,0.0],"kaleea":[0,92,0.0],"kaliann":[0,183,0.4525],"kalijah":[278,67,0.409],"kamill":[0,69,0.0],"kapree":[15,82,0.0],"karigan":[0,320,0.501],"kashmira":[0,5,0.0],"katanna":[0,60,0.0],"katline":[0,27,0.0],"kawthar":[0,226,0.4708],"kayhla":[0,31,0.0],"kaylar":[0,10,0.0],"kaysia":[0,176,0.4491],"kaytelynn":[0,86,0.0],"kaziah":[73,520,0.4863],"kcee":[0,5,0.0],"keambria":[0,27,0.0],"keanua":[0,5,0.0],"keeaira":[0,10,0.0],"keisy":[0,743,0.5742],"kemiya":[0,311,0.4986],"kendrianna":[0,28,0.0],"kendrica":[0,5,0.0],"kenedie":[0,144,0.4317],"kennah":[0,410,0.5226],"kennidy":[0,417,0.524],"kenyara":[0,5,0.0],"kerica":[0,5,0.0],"kethia":[0,5,0.0],"keyshana":[0,5,0.0],"khadiyah":[0,5,0.0],"khalya":[0,10,0.0],"khiya":[0,317,0.5002],"kiaraliz":[0,94,0.0],"kichelle":[0,5,0.0],"kienna":[0,87,0.0],"kieryn":[61,195,0.3669],"kinara":[0,39,0.0],"kindyl":[0,46,0.0],"kionia":[0,5,0.0],"koralee":[0,194,0.4576],"korilyn":[0,5,0.0],"kripa":[0,151,0.4358],"kulsoom":[0,60,0.0],"kyala":[0,46,0.0],"kyanah":[0,41,0.0],"kyashia":[0,17,0.0],"kymani":[4236,1061,0.5956],"kymara":[0,60,0.0],"kymbra":[0,10,0.0],"lacei":[0,10,0.0],"ladayja":[0,5,0.0],"ladijah":[0,5,0.0],"lakeyn":[0,170,0.4461],"lakotah":[0,10,0.0],"laniah":[0,831,0.5839],"laquil":[0,5,0.0],"lataysia":[0,41,0.0],"lency":[0,29,0.0],"lenecia":[0,5,0.0],"leslian":[0,27,0.0],"lexius":[0,37,0.0],"leysha":[0,81,0.0],"lillyana":[0,3431,0.7071],"logyn":[208,379,0.3575],"lyrik":[841,1259,0.3983],"lyvia":[0,650,0.5626],"mackinzi":[0,26,0.0],"madasyn":[0,397,0.5198],"maddelyn":[0,733,0.573],"madicyn":[0,145,0.4323],"maekayla":[0,102,0.4017],"mahaila":[0,130,0.4228],"mahoghany":[0,11,0.0],"mainou":[0,5,0.0],"maizy":[0,1495,0.6349],"makayela":[0,75,0.0],"makayli":[0,114,0.4114],"makyra":[0,327,0.5029],"malaja":[0,48,0.0],"malu":[5,247,0.4708],"malvika":[0,69,0.0],"marandia":[0,5,0.0],"mareli":[0,1130,0.6106],"marhia":[0,5,0.0],"mariaalejandra":[0,10,0.0],"maricrus":[0,5,0.0],"marielisa":[0,10,0.0],"marista":[0,5,0.0],"markala":[0,120,0.4158],"marleisha":[0,5,0.0],"marlyna":[0,10,0.0],"marlyssa":[0,16,0.0],"martiana":[0,50,0.0],"maryhannah":[0,5,0.0],"masuma":[0,10,0.0],"masyn":[1452,705,0.4488],"matalin":[0,50,0.0],"mathea":[0,151,0.4358],"mckaye":[0,5,0.0],"mckaylie":[0,84,0.0],"mckaylyn":[0,24,0.0],"mckenize":[0,239,0.4757],"mckynna":[0,152,0.4364],"mekela":[0,5,0.0],"mellisha":[0,5,0.0],"meztli":[0,324,0.5021],"michelleanne":[0,5,0.0],"mickinzie":[0,5,0.0],"mikalee":[0,21,0.0],"mikalya":[0,52,0.0],"mikenzi":[0,195,0.458],"mirannda":[0,11,0.0],"mistic":[0,5,0.0],"mkenna":[0,25,0.0],"moncerrath":[0,90,0.0],"monye":[0,26,0.0],"morgayne":[0,5,0.0],"mychala":[0,28,0.0],"mykiah":[0,263,0.484],"mylana":[0,10,0.0],"mylasia":[0,191,0.4562],"myleigh":[0,1182,0.6145],"myneisha":[0,5,0.0],"mysia":[0,12,0.0],"nabia":[0,15,0.0],"nahjae":[0,66,0.0],"naijah":[0,218,0.4677],"najera":[0,5,0.0],"nalah":[0,970,0.5974],"nalijah":[0,24,0.0],"nanako":[0,73,0.0],"natajah":[0,89,0.0],"natajia":[0,27,0.0],"nathale":[0,10,0.0],"ndya":[0,16,0.0],"nechuma":[0,159,0.4403],"nekayla":[0,91,0.0],"nesita":[0,5,0.0],"niaimani":[0,15,0.0],"nialah":[0,174,0.4481],"nikhaule":[0,5,0.0],"niome":[0,42,0.0],"nohelly":[0,5,0.0],"nusrat":[0,212,0.4653],"nyeka":[0,5,0.0],"odaly":[0,77,0.0],"ogochukwu":[0,5,0.0],"omeisha":[0,5,0.0],"pada":[0,5,0.0],"paradice":[0,11,0.0],"prutha":[0,11,0.0],"quanise":[0,5,0.0],"qubilah":[0,5,0.0],"quentavia":[0,5,0.0],"queren":[0,5,0.0],"quinsha":[0,10,0.0],"quintashia":[0,5,0.0],"raelea":[0,77,0.0],"raianne":[0,20,0.0],"raija":[0,16,0.0],"randeisha":[0,5,0.0],"raquael":[0,5,0.0],"raychael":[0,5,0.0],"razhane":[0,5,0.0],"rejine":[0,5,0.0],"reshae":[0,5,0.0],"rheanon":[0,5,0.0],"rhiannen":[0,11,0.0],"rikako":[0,10,0.0],"rokia":[0,116,0.4129],"ronnay":[0,5,0.0],"rosaliz":[0,11,0.0],"roselyne":[0,239,0.4757],"ruchita":[0,5,0.0],"ryce":[42,10,0.0],"ryenn":[0,235,0.4742],"ryenne":[0,227,0.4712],"sabrinah":[0,39,0.0],"saje":[50,139,0.3348],"samaiya":[0,518,0.5429],"samyria":[0,100,0.4],"selana":[0,20,0.0],"seneque":[0,5,0.0],"shabri":[0,10,0.0],"shabriel":[0,5,0.0],"shabrittany":[0,5,0.0],"shaderrica":[0,11,0.0],"shadiqua":[0,5,0.0],"shahirah":[0,5,0.0],"shaiana":[0,16,0.0],"shailin":[0,16,0.0],"shalayla":[0,28,0.0],"shalyric":[0,5,0.0],"shamariah":[0,79,0.0],"shaolin":[5,62,0.0],"shaquashia":[0,11,0.0],"shaquirra":[0,5,0.0],"shatiana":[0,11,0.0],"shaydee":[0,24,0.0],"shealan":[0,5,0.0],"sheily":[0,618,0.5582],"shiho":[0,10,0.0],"shinaya":[0,11,0.0],"shushan":[0,5,0.0],"shye":[15,72,0.0],"sicely":[0,13,0.0],"sidnei":[0,24,0.0],"silvya":[0,10,0.0],"simrat":[0,185,0.4534],"sitlaly":[0,121,0.4166],"skyra":[0,123,0.418],"sravya":[0,233,0.4735],"startasia":[0,5,0.0],"stuti":[0,285,0.491],"suejin":[0,5,0.0],"summerlee":[0,13,0.0],"summerlyn":[0,247,0.4785],"suset":[0,19,0.0],"sydia":[0,10,0.0],"symira":[0,71,0.0],"symphoni":[0,185,0.4534],"syvannah":[0,51,0.0],"tachiana":[0,5,0.0],"tadesha":[0,5,0.0],"taelour":[0,5,0.0],"taelyn":[238,2196,0.611],"taeylor":[0,21,0.0],"taitianna":[0,5,0.0],"takeyra":[0,10,0.0],"talasha":[0,11,0.0],"tambresha":[0,5,0.0],"tamiera":[0,48,0.0],"tanajia":[0,23,0.0],"tandis":[0,5,0.0],"tasfia":[0,153,0.4369],"tashaye":[0,11,0.0],"tashiona":[0,5,0.0],"tashiyana":[0,5,0.0],"tatiara":[0,10,0.0],"tayia":[0,170,0.4461],"tayisha":[0,5,0.0],"taytiana":[0,15,0.0],"teaunna":[0,31,0.0],"tenyce":[0,5,0.0],"teshira":[0,5,0.0],"thanhtruc":[0,5,0.0],"thatiana":[0,68,0.0],"timyra":[0,53,0.0],"tiphanee":[0,5,0.0],"tiquisha":[0,5,0.0],"tishayla":[0,5,0.0],"tonasia":[0,29,0.0],"torei":[0,5,0.0],"tranasia":[0,5,0.0],"trayanna":[0,20,0.0],"trezure":[0,239,0.4757],"trinty":[0,137,0.4273],"tunyia":[0,5,0.0],"tymera":[0,19,0.0],"tyshiana":[0,17,0.0],"tyshianna":[0,14,0.0],"umber":[0,5,0.0],"vivana":[0,22,0.0],"wykeria":[0,5,0.0],"xela":[0,343,0.5071],"xenya":[0,5,0.0],"xitlalli":[0,420,0.5246],"xochithl":[0,5,0.0],"yamilez":[0,23,0.0],"yanissa":[0,68,0.0],"yarelli":[0,251,0.4799],"yarisamar":[0,5,0.0],"yarlin":[0,107,0.4059],"yasleen":[0,59,0.0],"yrania":[0,5,0.0],"yridiana":[0,5,0.0],"yuly":[0,33,0.0],"yumna":[0,475,0.5353],"zaakira":[0,13,0.0],"zakirah":[0,235,0.4742],"zariya":[0,1898,0.6557],"daekwon":[220,0,0.4685],"monteco":[24,0,0.0],"natrone":[35,0,0.0],"kaelon":[302,0,0.496],"gajuan":[21,0,0.0],"natron":[47,0,0.0],"saadiq":[453,0,0.5312],"airion":[37,0,0.0],"anguel":[213,0,0.4657],"dakwon":[89,0,0.0],"jamiroquan":[13,0,0.0],"trevahn":[24,0,0.0],"ashawn":[261,0,0.4833],"mekhi":[12174,113,0.8104],"raquon":[73,0,0.0],"ahmari":[1329,461,0.483],"daelin":[410,56,0.4695],"izack":[416,0,0.5238],"quendarius":[59,0,0.0],"raekwan":[68,0,0.0],"raykwon":[93,0,0.0],"rushil":[525,0,0.544],"deiontay":[22,0,0.0],"dravin":[476,0,0.5355],"dyran":[15,0,0.0],"jahshua":[130,0,0.4228],"jaqwon":[103,0,0.4026],"mckennon":[93,0,0.0],"meilech":[294,0,0.4937],"quindarious":[55,0,0.0],"raequon":[67,0,0.0],"raeqwon":[74,0,0.0],"rakwon":[90,0,0.0],"sohil":[122,0,0.4173],"sohum":[565,0,0.5504],"wyat":[199,0,0.4598],"arkeith":[14,0,0.0],"ausitn":[30,0,0.0],"avrey":[278,381,0.3259],"chicago":[110,42,0.3158],"demauria":[9,11,0.0],"flabio":[31,0,0.0],"jallen":[59,0,0.0],"kewaun":[56,0,0.0],"keyondre":[357,0,0.5105],"kiyan":[1959,28,0.6503],"markael":[43,0,0.0],"mckinnon":[139,16,0.3928],"notorious":[74,0,0.0],"reakwon":[73,0,0.0],"shahiem":[71,0,0.0],"trivon":[15,0,0.0],"alvonte":[33,0,0.0],"cahlil":[239,0,0.4757],"conagher":[52,0,0.0],"daquwan":[8,0,0.0],"deeshawn":[13,0,0.0],"elishua":[89,0,0.0],"eneas":[24,0,0.0],"foxx":[278,0,0.4888],"gurtej":[68,0,0.0],"jailon":[274,0,0.4876],"jawun":[48,0,0.0],"jemmerio":[8,0,0.0],"josearmando":[148,0,0.4341],"juanya":[63,0,0.0],"kadrian":[435,11,0.5168],"kavion":[1364,0,0.627],"keimon":[150,0,0.4352],"khaleb":[1013,0,0.6011],"khaliel":[168,0,0.4451],"kordel":[117,0,0.4136],"mccartney":[119,313,0.3819],"navon":[284,0,0.4907],"rafid":[60,0,0.0],"rayquon":[70,0,0.0],"ryver":[812,623,0.3573],"siddarth":[410,0,0.5226],"temarcus":[8,0,0.0],"tuff":[873,0,0.5882],"aeneas":[463,0,0.5331],"aerion":[127,24,0.3665],"alonta":[18,0,0.0],"aquill":[7,0,0.0],"balal":[17,0,0.0],"brayam":[279,0,0.4891],"braydn":[424,0,0.5255],"breyton":[196,0,0.4585],"caelon":[37,0,0.0],"christiandaniel":[7,0,0.0],"cruzito":[468,0,0.534],"cupertino":[7,0,0.0],"dailon":[210,0,0.4644],"darquez":[12,0,0.0],"demani":[571,174,0.4403],"devonaire":[24,0,0.0],"dreshon":[111,0,0.4091],"dyvon":[40,0,0.0],"finnegan":[12441,93,0.8135],"gramm":[7,0,0.0],"hasnain":[284,0,0.4907],"jakwon":[265,0,0.4846],"jamarea":[87,34,0.2995],"jaterrius":[77,0,0.0],"karanvir":[84,0,0.0],"kci":[24,0,0.0],"keaun":[76,0,0.0],"kemontae":[159,0,0.4403],"keymon":[169,0,0.4456],"khader":[23,0,0.0],"khahlil":[7,0,0.0],"khamari":[2319,603,0.5501],"kijon":[38,0,0.0],"koi":[773,585,0.3567],"kongmong":[7,0,0.0],"kwinton":[67,0,0.0],"kyjuan":[482,0,0.5366],"marqel":[23,0,0.0],"montravius":[7,0,0.0],"mufasa":[13,0,0.0],"param":[448,0,0.5303],"quentyn":[232,0,0.4731],"quinnten":[89,0,0.0],"quontavious":[20,0,0.0],"rackwon":[15,0,0.0],"raynathan":[7,0,0.0],"rayvaughn":[35,0,0.0],"rishab":[634,0,0.5604],"roshane":[23,0,0.0],"sanquan":[7,0,0.0],"souleymane":[427,0,0.5261],"toufic":[7,0,0.0],"treivon":[12,0,0.0],"treymon":[55,0,0.0],"trisden":[35,0,0.0],"tykel":[123,0,0.418],"vlad":[527,0,0.5444],"aeon":[165,76,0.3262],"ahkeel":[6,0,0.0],"aleksey":[559,10,0.5413],"amandip":[6,0,0.0],"areg":[198,0,0.4593],"ariq":[95,0,0.0],"aryon":[177,32,0.393],"austintyler":[11,0,0.0],"benyam":[25,0,0.0],"bradlie":[11,67,0.0],"brandton":[6,0,0.0],"calep":[11,0,0.0],"cane":[331,0,0.504],"casin":[128,0,0.4214],"chimeng":[20,0,0.0],"chrisshawn":[39,0,0.0],"connel":[6,0,0.0],"cormick":[146,0,0.4329],"crew":[11153,61,0.8055],"cyree":[130,0,0.4228],"dahmir":[234,0,0.4738],"daizhon":[11,0,0.0],"damitrius":[6,0,0.0],"daquez":[27,0,0.0],"daqwon":[49,0,0.0],"darquise":[6,0,0.0],"dartavius":[17,0,0.0],"deangello":[11,0,0.0],"deavan":[18,0,0.0],"deione":[6,0,0.0],"deontrez":[30,0,0.0],"derex":[21,0,0.0],"drayven":[434,0,0.5275],"dreyson":[427,0,0.5261],"dylanger":[26,0,0.0],"elijahwon":[18,0,0.0],"erny":[6,0,0.0],"geric":[17,0,0.0],"gurkirat":[78,24,0.3072],"humzah":[166,0,0.444],"iliya":[184,46,0.3779],"inoke":[35,0,0.0],"isaha":[53,0,0.0],"issaih":[117,0,0.4136],"jacarius":[101,0,0.4009],"jahdiel":[742,0,0.5741],"jahmon":[36,0,0.0],"jaidon":[1411,65,0.6059],"jailin":[207,315,0.328],"jakorey":[186,0,0.4539],"jamieon":[80,0,0.0],"jaquain":[34,0,0.0],"jaxom":[17,0,0.0],"jaylun":[165,0,0.4435],"jayshaun":[640,0,0.5612],"jedrick":[125,0,0.4194],"jihaad":[74,0,0.0],"johntell":[6,0,0.0],"jonnatan":[66,0,0.0],"joshuadaniel":[11,0,0.0],"jovonie":[17,0,0.0],"juanye":[57,0,0.0],"juawan":[17,0,0.0],"kadon":[709,0,0.5701],"kaevon":[259,0,0.4827],"kahlen":[67,267,0.4035],"kairo":[9637,261,0.778],"kairon":[303,0,0.4963],"kasten":[221,0,0.4689],"kavious":[33,0,0.0],"kaynen":[371,0,0.5139],"kealon":[26,0,0.0],"keegen":[299,0,0.4951],"kendarrius":[136,0,0.4267],"khaleem":[85,0,0.0],"khalique":[48,0,0.0],"khylil":[32,0,0.0],"kihry":[6,0,0.0],"kirklen":[11,0,0.0],"kishaun":[141,0,0.4298],"krishnan":[16,0,0.0],"kysean":[90,0,0.0],"laderrion":[22,0,0.0],"lamontre":[33,0,0.0],"latique":[6,0,0.0],"laxavier":[11,0,0.0],"maddox":[45438,1759,0.8999],"mahonri":[95,0,0.0],"makil":[11,0,0.0],"maleck":[6,0,0.0],"marcandrew":[6,0,0.0],"marquiez":[16,0,0.0],"martinjr":[31,0,0.0],"mattheus":[214,0,0.4661],"matthewryan":[16,0,0.0],"mccabe":[105,0,0.4042],"meric":[171,0,0.4466],"monterious":[38,0,0.0],"moustapha":[384,0,0.5169],"quadeer":[6,0,0.0],"quantay":[71,0,0.0],"raider":[575,0,0.5519],"ramario":[12,0,0.0],"rece":[513,5,0.5376],"sayan":[283,0,0.4904],"shafin":[66,0,0.0],"shayaan":[761,0,0.5763],"shyon":[46,0,0.0],"smit":[48,0,0.0],"sutter":[519,48,0.5041],"taahir":[82,0,0.0],"tahari":[96,226,0.352],"tahjai":[70,28,0.0],"tahmir":[245,0,0.4778],"tahsin":[115,19,0.3651],"tavien":[392,0,0.5187],"tedarius":[34,0,0.0],"thoren":[295,0,0.494],"trayquan":[90,0,0.0],"treigh":[20,0,0.0],"trevez":[11,0,0.0],"treylan":[144,0,0.4317],"treyvonn":[38,0,0.0],"tydre":[24,0,0.0],"tyeshawn":[11,0,0.0],"tyghe":[6,0,0.0],"tylr":[6,0,0.0],"tyquavious":[170,0,0.4461],"wahab":[73,0,0.0],"zakrey":[6,0,0.0],"zeid":[91,0,0.0],"zelig":[181,0,0.4515],"aanand":[10,0,0.0],"abishai":[316,26,0.4683],"adones":[5,0,0.0],"adoniz":[15,0,0.0],"aimen":[61,41,0.2402],"ammanuel":[59,0,0.0],"amran":[75,322,0.4216],"anakin":[5410,44,0.7413],"arkell":[36,0,0.0],"arquimedes":[5,0,0.0],"arsh":[721,5,0.5682],"aryk":[35,0,0.0],"aryton":[5,0,0.0],"asan":[107,0,0.4059],"asanti":[56,249,0.4056],"audiel":[90,0,0.0],"austinlee":[15,0,0.0],"awad":[147,0,0.4335],"axell":[1049,0,0.6042],"benardo":[5,0,0.0],"braelin":[376,247,0.3373],"breighton":[58,0,0.0],"brenard":[5,0,0.0],"brenndan":[56,0,0.0],"brenyn":[113,37,0.3279],"brexton":[1352,0,0.6262],"brijesh":[13,0,0.0],"cadell":[90,0,0.0],"caedon":[410,0,0.5226],"caelum":[830,0,0.5838],"caid":[174,0,0.4481],"cerjio":[5,0,0.0],"chakotay":[11,0,0.0],"chayden":[327,6,0.4954],"chrisean":[169,8,0.4293],"cillian":[3486,6,0.7074],"coulson":[460,0,0.5326],"cristien":[21,0,0.0],"cristofher":[100,0,0.4],"daanish":[104,0,0.4034],"daemond":[25,0,0.0],"dakuan":[5,0,0.0],"dalshawn":[5,0,0.0],"damell":[5,0,0.0],"damerius":[35,0,0.0],"damondre":[71,0,0.0],"damoni":[1474,454,0.5023],"danterrius":[5,0,0.0],"daqwane":[5,0,0.0],"darieon":[53,0,0.0],"daronta":[5,0,0.0],"dashane":[10,5,0.0],"datavion":[32,0,0.0],"datwon":[10,0,0.0],"davontea":[5,0,0.0],"daxx":[405,0,0.5215],"deleno":[5,0,0.0],"demontrey":[25,0,0.0],"detrez":[5,0,0.0],"dominiq":[319,5,0.4944],"donavyn":[549,0,0.5479],"dravion":[5,0,0.0],"drean":[21,0,0.0],"dreion":[5,0,0.0],"drevion":[238,0,0.4753],"dreyton":[327,0,0.5029],"dundre":[5,0,0.0],"dushane":[5,0,0.0],"dustion":[5,0,0.0],"dyllian":[5,0,0.0],"ecequiel":[5,0,0.0],"edwen":[80,0,0.0],"elijuah":[45,0,0.0],"emannuel":[61,0,0.0],"esain":[5,0,0.0],"esiah":[390,0,0.5182],"espen":[686,133,0.488],"fabyan":[86,0,0.0],"forestt":[10,0,0.0],"gabel":[22,0,0.0],"gaquan":[5,0,0.0],"garrhett":[19,0,0.0],"gequan":[10,0,0.0],"govanny":[55,0,0.0],"graeham":[5,0,0.0],"graye":[16,17,0.0],"griffon":[231,0,0.4727],"gurjit":[10,0,0.0],"hassiem":[5,0,0.0],"holten":[388,0,0.5178],"idean":[5,0,0.0],"ikee":[5,0,0.0],"ipolito":[5,0,0.0],"isaic":[193,0,0.4571],"isaya":[58,0,0.0],"ismaeel":[439,0,0.5285],"issah":[66,0,0.0],"izael":[1350,0,0.6261],"jacquil":[5,0,0.0],"jahdai":[71,112,0.2769],"jahon":[172,0,0.4471],"jaire":[1107,35,0.5928],"jakarius":[80,0,0.0],"jakevious":[88,0,0.0],"jalenn":[10,0,0.0],"jalonnie":[36,5,0.0],"jamerius":[121,0,0.4166],"jamesdavid":[53,0,0.0],"jamiere":[321,0,0.5013],"jamonie":[53,6,0.0],"jaquavien":[5,0,0.0],"jaronn":[10,0,0.0],"jarquavious":[73,0,0.0],"jasim":[314,0,0.4994],"jatory":[15,0,0.0],"jax":[24110,211,0.8696],"jaymel":[18,0,0.0],"jaysin":[248,0,0.4789],"jayvaughn":[42,0,0.0],"jayvier":[275,0,0.4879],"jeiel":[23,0,0.0],"jemerrio":[5,0,0.0],"jevaun":[91,0,0.0],"jhair":[168,0,0.4451],"jhari":[38,0,0.0],"jocsan":[230,0,0.4723],"jonadab":[21,0,0.0],"jordell":[84,0,0.0],"josmar":[683,0,0.5669],"joyner":[158,0,0.4397],"joziah":[5140,5,0.7416],"jvaughn":[29,0,0.0],"kabe":[83,0,0.0],"kadarian":[22,0,0.0],"kaenan":[150,0,0.4352],"kahiau":[242,0,0.4768],"kahlan":[75,1474,0.6071],"kahlill":[5,0,0.0],"kahlin":[70,11,0.0],"kahner":[104,0,0.4034],"kaige":[449,5,0.5256],"kaishawn":[79,0,0.0],"kajana":[5,0,0.0],"kammeron":[16,0,0.0],"kaymon":[88,0,0.0],"keantay":[5,0,0.0],"kedarrius":[35,0,0.0],"keitaro":[40,0,0.0],"kenderius":[17,0,0.0],"kerrell":[5,0,0.0],"kerrion":[140,18,0.3896],"keundre":[45,0,0.0],"keyion":[115,0,0.4121],"khailil":[10,0,0.0],"khalial":[5,0,0.0],"khaliek":[5,0,0.0],"khameron":[175,0,0.4486],"kincade":[216,0,0.4669],"kinston":[176,0,0.4491],"kiontae":[11,0,0.0],"kishen":[16,0,0.0],"krayton":[87,0,0.0],"kwadjo":[11,0,0.0],"ladamien":[80,0,0.0],"laquez":[20,0,0.0],"laqwan":[15,0,0.0],"larez":[5,0,0.0],"lauden":[10,0,0.0],"lestat":[514,0,0.5422],"luisdaniel":[68,0,0.0],"macaleb":[34,0,0.0],"maleko":[90,0,0.0],"malyk":[396,0,0.5195],"mamoudou":[96,0,0.0],"manas":[320,0,0.501],"manaure":[5,0,0.0],"markevus":[5,0,0.0],"markquan":[5,0,0.0],"markquise":[10,0,0.0],"markwilliam":[5,0,0.0],"marlik":[31,0,0.0],"masataka":[5,0,0.0],"matthewjoseph":[18,0,0.0],"mattingly":[53,309,0.4368],"mccray":[54,0,0.0],"mcquade":[5,0,0.0],"merick":[183,0,0.4525],"michaelpatrick":[5,0,0.0],"mickale":[35,0,0.0],"mikequan":[5,0,0.0],"musaab":[57,0,0.0],"naoya":[17,0,0.0],"narquise":[5,0,0.0],"nasheed":[60,0,0.0],"nathanyl":[103,0,0.4026],"neris":[5,0,0.0],"nisarg":[10,0,0.0],"nishawn":[69,0,0.0],"numair":[83,0,0.0],"obet":[26,0,0.0],"oladipupo":[5,0,0.0],"omarie":[206,12,0.4419],"philly":[5,0,0.0],"prabhdeep":[18,0,0.0],"quamayne":[10,0,0.0],"quaveon":[22,0,0.0],"qusai":[238,0,0.4753],"raad":[196,0,0.4585],"rahmi":[15,0,0.0],"rajaun":[17,0,0.0],"rayhan":[832,67,0.5467],"rayjohn":[19,0,0.0],"rayjon":[149,0,0.4346],"raynier":[22,0,0.0],"raz":[48,0,0.0],"reace":[89,37,0.2967],"rhaheem":[5,0,0.0],"rjay":[99,0,0.0],"romellow":[10,0,0.0],"roneil":[5,0,0.0],"ryheim":[16,0,0.0],"sadler":[182,38,0.3876],"sameh":[43,0,0.0],"sarang":[66,65,0.2133],"sathya":[40,6,0.0],"schuylar":[18,28,0.0],"serigne":[242,0,0.4768],"shabab":[17,0,0.0],"shadarius":[25,0,0.0],"shaqur":[13,0,0.0],"sharath":[11,0,0.0],"shatiek":[5,0,0.0],"shauntavious":[5,0,0.0],"shayd":[26,5,0.0],"shaymus":[80,0,0.0],"shmar":[26,0,0.0],"shundarius":[10,0,0.0],"shykeim":[30,0,0.0],"simmeon":[12,0,0.0],"sirus":[339,0,0.506],"sneh":[36,5,0.0],"stafan":[5,0,0.0],"taalib":[22,0,0.0],"taaron":[10,0,0.0],"tadarious":[10,0,0.0],"taevion":[544,0,0.5471],"takota":[405,33,0.4885],"takuto":[58,0,0.0],"tannim":[5,0,0.0],"taton":[15,0,0.0],"tayden":[2938,170,0.6603],"taylorjames":[5,0,0.0],"tayshon":[219,0,0.4681],"tayvion":[1347,0,0.6259],"teion":[146,0,0.4329],"teondre":[66,0,0.0],"terico":[5,0,0.0],"tevarus":[5,0,0.0],"tevell":[5,0,0.0],"thain":[5,0,0.0],"tielor":[10,0,0.0],"tjaden":[44,0,0.0],"traiveon":[5,0,0.0],"trekwan":[5,0,0.0],"trennon":[70,0,0.0],"treron":[21,0,0.0],"trevione":[70,0,0.0],"trevohn":[16,0,0.0],"treyshaun":[131,0,0.4235],"treyvonne":[69,0,0.0],"tyberius":[365,0,0.5125],"tyleik":[34,0,0.0],"tyleke":[10,0,0.0],"tymier":[176,0,0.4491],"tyreco":[5,0,0.0],"tyreice":[15,0,0.0],"tysheed":[5,0,0.0],"wanyae":[10,0,0.0],"wezley":[15,0,0.0],"wiatt":[105,0,0.4042],"wilberth":[85,0,0.0],"williamjohn":[5,0,0.0],"xaivier":[148,0,0.4341],"xzavion":[1147,0,0.6119],"yassine":[476,0,0.5355],"zackhary":[15,0,0.0],"zayquan":[191,0,0.4562],"zecheriah":[25,0,0.0],"zeppelin":[1381,274,0.5372],"zhen":[88,22,0.3266],"zyon":[4071,713,0.6263],"moesha":[0,1067,0.6056],"monifah":[0,135,0.4261],"moeshia":[0,52,0.0],"maribi":[0,28,0.0],"rebeccalynn":[0,60,0.0],"accacia":[0,26,0.0],"marivi":[0,37,0.0],"zoria":[0,408,0.5221],"moeisha":[0,48,0.0],"jailine":[0,405,0.5215],"ashtynn":[26,344,0.4775],"ahtziri":[0,1177,0.6142],"madissen":[0,174,0.4481],"meleigha":[0,30,0.0],"athziri":[0,536,0.5458],"caeley":[0,423,0.5253],"lazaria":[0,514,0.5422],"sidea":[0,13,0.0],"taegan":[391,1098,0.4679],"alaijah":[5,723,0.5685],"savasia":[0,12,0.0],"alazae":[0,345,0.5076],"ambriehl":[0,17,0.0],"catera":[0,397,0.5198],"jahniece":[0,23,0.0],"jaiya":[0,760,0.5762],"khailah":[0,23,0.0],"mariby":[0,11,0.0],"shayma":[0,165,0.4435],"yulemni":[0,11,0.0],"daasia":[0,10,0.0],"daliyah":[0,1230,0.618],"dezirea":[0,68,0.0],"havannah":[0,381,0.5162],"hayven":[252,1400,0.5454],"jalexia":[0,148,0.4341],"jamiles":[0,10,0.0],"jaquelinne":[0,159,0.4403],"jarlene":[0,26,0.0],"jaydah":[0,1492,0.6348],"kajol":[0,66,0.0],"marivy":[0,10,0.0],"miangel":[0,989,0.599],"shanautica":[0,86,0.0],"xaria":[0,962,0.5966],"akashia":[0,19,0.0],"alanys":[0,436,0.5279],"anaisha":[0,847,0.5856],"ashanae":[0,25,0.0],"bayly":[12,51,0.0],"breighanna":[0,37,0.0],"bryanah":[0,118,0.4144],"chaneyra":[0,9,0.0],"chaselyn":[0,173,0.4476],"daelynn":[64,920,0.5597],"danajah":[0,260,0.483],"hydiea":[0,9,0.0],"irian":[0,15,0.0],"janeliz":[0,223,0.4697],"jayah":[0,630,0.5599],"jomira":[0,9,0.0],"kainat":[0,156,0.4386],"kestra":[0,23,0.0],"kindred":[157,134,0.2659],"kinsleigh":[0,2212,0.669],"lakiyah":[0,305,0.4969],"makayle":[0,154,0.4375],"nayana":[0,617,0.5581],"paighton":[0,373,0.5143],"riona":[0,567,0.5507],"shainia":[0,9,0.0],"shanaia":[0,77,0.0],"shanyah":[0,448,0.5303],"skyanne":[0,102,0.4017],"skylie":[0,768,0.5771],"timmia":[0,89,0.0],"tyshera":[0,25,0.0],"yannely":[0,77,0.0],"zanaya":[0,673,0.5656],"zykeria":[0,902,0.591],"akaisha":[0,64,0.0],"alannis":[0,228,0.4716],"alaysa":[0,72,0.0],"alizea":[0,284,0.4907],"amayrany":[0,106,0.4051],"anayah":[0,3381,0.7058],"azelin":[0,41,0.0],"bruchy":[0,569,0.551],"caoimhe":[0,331,0.504],"caragan":[0,54,0.0],"cyrah":[0,238,0.4753],"daejia":[0,15,0.0],"daizah":[0,44,0.0],"dannya":[0,76,0.0],"desteney":[0,46,0.0],"diabolique":[7,14,0.0],"eyana":[0,294,0.4937],"ivanka":[0,1265,0.6204],"journie":[11,2579,0.6798],"kadelyn":[0,62,0.0],"kaijah":[0,140,0.4292],"kaniyah":[0,2311,0.6728],"karington":[0,158,0.4397],"keele":[0,14,0.0],"keshuna":[0,30,0.0],"kitanna":[0,35,0.0],"kiyla":[0,285,0.491],"lakeyah":[0,13,0.0],"leeasia":[0,160,0.4408],"lekha":[0,113,0.4106],"lyrics":[0,55,0.0],"madisun":[0,236,0.4746],"madylin":[0,616,0.5579],"makaylin":[0,355,0.51],"makynna":[0,455,0.5316],"mareya":[0,75,0.0],"mazzy":[5,899,0.588],"mckaylah":[0,260,0.483],"mckinzey":[0,177,0.4496],"mikinzie":[0,73,0.0],"neve":[0,1557,0.6385],"odali":[0,40,0.0],"orlandrea":[0,8,0.0],"saffire":[0,64,0.0],"salimata":[0,187,0.4544],"sarayah":[0,625,0.5592],"sayge":[127,512,0.4496],"shaeley":[0,63,0.0],"shantazia":[0,14,0.0],"shinia":[0,18,0.0],"sindel":[0,45,0.0],"aarianna":[0,219,0.4681],"aarionna":[0,147,0.4335],"adaiah":[94,451,0.4529],"aided":[0,7,0.0],"ailani":[5,6084,0.7563],"aizha":[0,7,0.0],"akeyah":[0,13,0.0],"alaze":[0,84,0.0],"alexxys":[0,37,0.0],"alisya":[0,52,0.0],"amarissa":[0,590,0.5542],"anapaula":[0,570,0.5512],"anniston":[0,3520,0.7093],"arisbel":[0,110,0.4083],"arrionna":[0,154,0.4375],"arshdeep":[138,21,0.3821],"aulani":[0,998,0.5998],"baylei":[0,469,0.5342],"bhavani":[0,23,0.0],"caitie":[0,28,0.0],"camrey":[0,49,0.0],"caprial":[0,12,0.0],"casiana":[0,12,0.0],"chanaya":[0,54,0.0],"chaniah":[0,59,0.0],"chaniya":[0,671,0.5653],"daizja":[0,14,0.0],"dajanai":[0,37,0.0],"daniya":[0,1579,0.6397],"dazah":[0,21,0.0],"dejonna":[0,7,0.0],"dija":[0,7,0.0],"edyn":[113,1193,0.5693],"elley":[0,361,0.5115],"erian":[174,159,0.2636],"eylin":[0,250,0.4796],"gitanjali":[0,40,0.0],"haidy":[0,203,0.4615],"hanen":[0,15,0.0],"imagine":[0,136,0.4267],"irelyn":[0,1561,0.6387],"jadeann":[0,17,0.0],"jadey":[0,63,0.0],"janaisha":[0,163,0.4424],"janautica":[0,71,0.0],"jaqualla":[0,12,0.0],"jareli":[0,234,0.4738],"jazlyne":[0,512,0.5419],"jhayla":[0,124,0.4187],"jinal":[0,19,0.0],"joelly":[0,176,0.4491],"joesha":[0,18,0.0],"jonnah":[33,29,0.0],"kaiyah":[0,1197,0.6156],"kalianna":[0,429,0.5265],"karagen":[0,12,0.0],"kattya":[0,37,0.0],"katylynn":[0,12,0.0],"keerthana":[0,338,0.5058],"keimani":[39,163,0.3721],"kenberly":[0,12,0.0],"kennede":[0,141,0.4298],"kessandra":[0,18,0.0],"keymani":[109,173,0.3006],"kinsee":[0,22,0.0],"kloey":[0,1646,0.6433],"krynn":[0,7,0.0],"kyliah":[0,459,0.5324],"kynlee":[0,6085,0.7569],"kyrianna":[0,95,0.0],"kyshawna":[0,7,0.0],"lamiracle":[0,211,0.4649],"laneah":[0,109,0.4075],"lydiana":[0,113,0.4106],"maciah":[198,141,0.2956],"measia":[0,56,0.0],"monyea":[0,13,0.0],"nermeen":[0,51,0.0],"niomie":[0,71,0.0],"nyanna":[0,348,0.5083],"nyazia":[0,70,0.0],"nydasia":[0,7,0.0],"ollivia":[0,24,0.0],"quetzalli":[0,811,0.5818],"reniya":[0,343,0.5071],"ronasia":[0,97,0.0],"shalexus":[0,14,0.0],"sharanya":[0,344,0.5073],"shaylinn":[0,78,0.0],"shelbyann":[0,12,0.0],"sheniah":[0,71,0.0],"sianni":[0,446,0.5299],"soyoung":[0,7,0.0],"tailore":[0,7,0.0],"tatyiana":[0,47,0.0],"tiandrea":[0,7,0.0],"tramia":[0,36,0.0],"vanely":[0,29,0.0],"yamini":[0,56,0.0],"zairia":[0,13,0.0],"zakeria":[5,214,0.4574],"zalena":[0,103,0.4026],"zaneb":[0,15,0.0],"zarea":[0,84,0.0],"zoei":[0,973,0.5976],"zoeie":[0,66,0.0],"aashka":[0,164,0.443],"abryanna":[0,270,0.4863],"adaja":[0,100,0.4],"adalynn":[0,32506,0.9024],"adayshia":[0,19,0.0],"aissata":[0,541,0.5466],"aitiana":[0,92,0.0],"akeyia":[0,17,0.0],"alesi":[0,81,0.0],"alexendra":[0,13,0.0],"aloni":[0,738,0.5736],"ambriah":[0,34,0.0],"anapaola":[0,141,0.4298],"anastasya":[0,181,0.4515],"angelli":[0,377,0.5153],"anitza":[0,31,0.0],"antoneisha":[0,6,0.0],"aroosa":[0,6,0.0],"ashauna":[0,84,0.0],"ashleyn":[0,53,0.0],"asonte":[10,6,0.0],"autymn":[0,394,0.5191],"averyanna":[0,191,0.4562],"axa":[0,26,0.0],"ayiana":[0,686,0.5673],"aysiah":[0,193,0.4571],"baeleigh":[0,138,0.428],"bailyn":[15,281,0.4692],"banelly":[0,26,0.0],"benesha":[0,6,0.0],"breaanna":[0,6,0.0],"breonnah":[0,6,0.0],"breyah":[0,181,0.4515],"breyunna":[0,6,0.0],"briaja":[0,25,0.0],"brileigh":[0,965,0.5969],"brittanae":[0,6,0.0],"brynae":[0,33,0.0],"chanya":[0,187,0.4544],"charielle":[0,17,0.0],"cianni":[0,511,0.5417],"cyrenna":[0,6,0.0],"dajahnae":[0,63,0.0],"dajua":[0,6,0.0],"danelly":[0,485,0.5371],"dariya":[0,439,0.5285],"deazia":[0,62,0.0],"dejahne":[0,6,0.0],"dejsha":[0,11,0.0],"dekira":[0,21,0.0],"delainy":[0,153,0.4369],"deshawnna":[0,13,0.0],"desiraee":[0,6,0.0],"deyra":[0,87,0.0],"diajah":[0,29,0.0],"distiny":[0,23,0.0],"dnasia":[0,95,0.0],"elexys":[0,58,0.0],"elleanna":[0,413,0.5232],"emira":[0,431,0.5269],"emmarae":[0,397,0.5198],"emonni":[0,123,0.418],"emonnie":[0,140,0.4292],"eneyda":[0,23,0.0],"fareeha":[0,149,0.4346],"farjana":[0,6,0.0],"fatimata":[0,313,0.4991],"fredreka":[0,6,0.0],"gentiana":[0,17,0.0],"hafsah":[0,636,0.5607],"hannahmae":[0,26,0.0],"helayna":[0,357,0.5105],"hevyn":[0,39,0.0],"hilla":[0,11,0.0],"idette":[0,6,0.0],"ishanae":[0,6,0.0],"ixayana":[0,27,0.0],"jaelee":[0,479,0.5361],"jahyra":[0,91,0.0],"jailenne":[0,49,0.0],"jailyne":[0,974,0.5977],"jamayah":[0,250,0.4796],"janavia":[0,121,0.4166],"jazsmin":[0,108,0.4067],"jazzmun":[0,6,0.0],"jela":[0,68,0.0],"jesslin":[0,59,0.0],"jhoselyn":[0,231,0.4727],"jonasia":[0,208,0.4636],"joshelyn":[0,57,0.0],"kaleigha":[0,982,0.5984],"kaleya":[0,413,0.5232],"kalifornia":[0,13,0.0],"kaniah":[0,501,0.54],"karyme":[0,2134,0.6658],"kasady":[0,22,0.0],"kashanti":[0,51,0.0],"katin":[20,6,0.0],"katravia":[0,6,0.0],"kaymen":[227,13,0.4503],"kenara":[0,11,0.0],"kennecia":[0,6,0.0],"kennedey":[0,70,0.0],"keragan":[0,18,0.0],"keriana":[0,158,0.4397],"keshira":[0,6,0.0],"keshundra":[0,13,0.0],"kethry":[0,6,0.0],"kevana":[0,17,0.0],"khiala":[0,6,0.0],"kieya":[0,47,0.0],"kimana":[0,50,0.0],"kinnedy":[0,83,0.0],"komalpreet":[0,23,0.0],"kynnedi":[0,1374,0.6276],"ladaija":[0,61,0.0],"larkyn":[0,424,0.5255],"lebrea":[0,6,0.0],"leisly":[0,38,0.0],"lexas":[0,29,0.0],"lyrick":[179,150,0.2739],"macady":[0,36,0.0],"mackensi":[0,94,0.0],"mackinze":[0,143,0.4311],"maddilyn":[0,1326,0.6245],"maeci":[0,137,0.4273],"mahak":[0,51,0.0],"maimuna":[0,293,0.4934],"maisen":[325,86,0.4134],"makalya":[0,301,0.4957],"makaylie":[0,283,0.4904],"makenah":[0,290,0.4925],"makensy":[0,51,0.0],"makinley":[0,1826,0.6523],"malya":[0,276,0.4882],"mama":[0,60,0.0],"maquela":[0,18,0.0],"mariahann":[0,6,0.0],"marlenn":[0,11,0.0],"mateya":[0,97,0.0],"maykayla":[0,132,0.4241],"mckaley":[0,21,0.0],"mckenah":[0,53,0.0],"menley":[0,13,0.0],"mersaydes":[0,39,0.0],"mickia":[0,13,0.0],"mikayela":[0,86,0.0],"mikeria":[0,138,0.428],"mikkala":[0,12,0.0],"miku":[0,136,0.4267],"mohagany":[0,17,0.0],"mylashia":[0,16,0.0],"mylesha":[0,17,0.0],"nadasia":[0,11,0.0],"nakyla":[0,425,0.5257],"nanami":[0,288,0.4919],"naudica":[0,17,0.0],"niharika":[0,392,0.5187],"nikyla":[0,150,0.4352],"nyara":[0,219,0.4681],"nylia":[0,299,0.4951],"nyquasha":[0,6,0.0],"oumou":[0,724,0.5719],"rahja":[7,6,0.0],"rayauna":[0,28,0.0],"rhyannon":[0,36,0.0],"rhylie":[0,602,0.5559],"royesha":[0,6,0.0],"sabreana":[0,6,0.0],"sabrinamarie":[0,11,0.0],"saharah":[0,156,0.4386],"saharra":[0,140,0.4292],"samary":[0,224,0.47],"sariya":[0,1656,0.6438],"scotlyn":[0,1229,0.6179],"selenamarie":[0,6,0.0],"shaiasia":[0,6,0.0],"shakuria":[0,15,0.0],"shamani":[0,52,0.0],"shamiyah":[0,709,0.5701],"shanil":[0,6,0.0],"shauntasia":[0,12,0.0],"sheniya":[0,100,0.4],"shiyan":[0,30,0.0],"shylar":[0,43,0.0],"silia":[0,18,0.0],"sindhura":[0,11,0.0],"sireen":[0,257,0.482],"solei":[0,793,0.5799],"srishti":[0,357,0.5105],"sumaiyah":[0,324,0.5021],"sydea":[0,6,0.0],"syleena":[0,117,0.4136],"talah":[0,120,0.4158],"talasia":[0,241,0.4764],"taleigha":[0,377,0.5153],"taley":[0,11,0.0],"taliana":[0,261,0.4833],"talyr":[0,6,0.0],"taranisha":[0,6,0.0],"tasmia":[0,109,0.4075],"tayah":[0,1333,0.625],"teianna":[0,32,0.0],"tekayla":[0,59,0.0],"thaiz":[0,54,0.0],"tiegan":[88,305,0.4027],"tiereny":[0,6,0.0],"timea":[0,156,0.4386],"tonii":[0,22,0.0],"tyrecia":[0,6,0.0],"uneek":[0,6,0.0],"vibiana":[0,17,0.0],"victorria":[0,11,0.0],"vonnesha":[0,6,0.0],"wafaa":[0,76,0.0],"yaireth":[0,31,0.0],"yariela":[0,108,0.4067],"yesli":[0,224,0.47],"yeslin":[0,241,0.4764],"yesly":[0,369,0.5134],"yeymi":[0,34,0.0],"zanisha":[0,6,0.0],"zaniya":[0,3454,0.7077],"zlaty":[0,180,0.4511],"zoriah":[0,672,0.5655],"zorria":[0,40,0.0],"abbiegail":[0,249,0.4792],"abrial":[0,121,0.4166],"abygale":[0,361,0.5115],"adacia":[0,5,0.0],"adiya":[0,242,0.4768],"aelish":[0,38,0.0],"ahlexus":[0,13,0.0],"ahzhane":[0,5,0.0],"aisatou":[0,33,0.0],"aisleen":[0,66,0.0],"aisya":[0,5,0.0],"akeera":[0,20,0.0],"akilia":[0,5,0.0],"akshaya":[0,585,0.5534],"alainnah":[0,26,0.0],"alanni":[0,861,0.587],"alaza":[0,21,0.0],"alazay":[0,311,0.4986],"albria":[0,5,0.0],"aleasia":[0,38,0.0],"aleeka":[0,5,0.0],"aleksi":[90,28,0.316],"alexandreia":[0,5,0.0],"alexee":[0,87,0.0],"alexicia":[0,22,0.0],"alexisa":[0,10,0.0],"alexondria":[0,24,0.0],"alexous":[0,5,0.0],"alexusia":[0,5,0.0],"alexxia":[0,116,0.4129],"alissabeth":[0,10,0.0],"alivea":[0,333,0.5045],"allexandria":[0,5,0.0],"alliyiah":[0,5,0.0],"almendra":[0,139,0.4286],"alyrica":[0,150,0.4352],"amarelis":[0,49,0.0],"ameilia":[0,282,0.49],"ameriah":[0,295,0.494],"amoi":[0,25,0.0],"amonee":[0,31,0.0],"amorie":[48,372,0.4647],"amyia":[0,909,0.5917],"anacia":[0,5,0.0],"anajah":[0,316,0.4999],"analese":[0,177,0.4496],"analiesa":[0,5,0.0],"aneli":[0,267,0.4853],"angeleana":[0,18,0.0],"angelly":[0,577,0.5522],"anley":[0,5,0.0],"annastazia":[0,61,0.0],"annaya":[0,332,0.5042],"antoniya":[0,52,0.0],"antonnia":[0,5,0.0],"arantza":[0,1163,0.6131],"arcely":[0,22,0.0],"arikka":[0,10,0.0],"arjeta":[0,5,0.0],"arnae":[0,5,0.0],"asana":[0,62,0.0],"asyria":[0,70,0.0],"attiya":[0,10,0.0],"aulora":[0,182,0.452],"aviya":[0,404,0.5213],"avree":[11,535,0.5364],"ayauna":[0,68,0.0],"azja":[0,35,0.0],"baelee":[0,58,0.0],"berina":[0,25,0.0],"biyanka":[0,5,0.0],"blakelynn":[0,1039,0.6033],"bralen":[348,5,0.5023],"brandessa":[0,5,0.0],"brealle":[0,10,0.0],"breneisha":[0,10,0.0],"breondra":[0,5,0.0],"breshonna":[0,10,0.0],"briele":[0,106,0.4051],"brijae":[0,19,0.0],"brittiana":[0,5,0.0],"briyah":[0,261,0.4833],"bryia":[0,5,0.0],"caetlin":[0,24,0.0],"caitylyn":[0,5,0.0],"caterra":[0,82,0.0],"celsi":[0,5,0.0],"chabria":[0,5,0.0],"chapel":[135,249,0.3352],"charizma":[0,173,0.4476],"charmecia":[0,10,0.0],"cheyeene":[0,5,0.0],"cheylee":[0,26,0.0],"cheylin":[0,5,0.0],"cheylynn":[0,57,0.0],"chyenna":[0,5,0.0],"cire":[295,172,0.3372],"cristalyn":[0,5,0.0],"cyarra":[0,35,0.0],"daejanae":[0,36,0.0],"daezha":[0,16,0.0],"daijanay":[0,5,0.0],"dainna":[0,5,0.0],"daisya":[0,10,0.0],"dajshia":[0,5,0.0],"dajza":[0,5,0.0],"dakera":[0,10,0.0],"dallys":[0,120,0.4158],"dameria":[0,52,0.0],"danazia":[0,32,0.0],"danyah":[0,222,0.4693],"darbee":[0,5,0.0],"darlenis":[0,5,0.0],"darriona":[0,144,0.4317],"dasjia":[0,5,0.0],"dawndria":[0,5,0.0],"dayesha":[0,5,0.0],"dayza":[0,26,0.0],"deajia":[0,24,0.0],"deiah":[0,5,0.0],"dejania":[0,5,0.0],"demiah":[0,271,0.4866],"derriana":[0,143,0.4311],"destinique":[0,5,0.0],"destinni":[0,10,0.0],"destinye":[0,37,0.0],"deyjah":[0,104,0.4034],"dianalaura":[0,10,0.0],"diany":[0,83,0.0],"dominae":[0,15,0.0],"dshae":[0,5,0.0],"dymonique":[0,25,0.0],"eavan":[6,176,0.4371],"ecstasy":[0,10,0.0],"eleyna":[0,575,0.5519],"emem":[0,5,0.0],"emmani":[0,141,0.4298],"emorie":[0,956,0.5961],"empriss":[0,53,0.0],"enissa":[0,5,0.0],"evee":[0,646,0.562],"fabiha":[0,119,0.4151],"fiza":[0,431,0.5269],"freidy":[0,66,0.0],"gamila":[0,56,0.0],"ganae":[0,5,0.0],"geneses":[0,22,0.0],"ginelie":[0,12,0.0],"gineva":[0,5,0.0],"giordana":[0,140,0.4292],"haelie":[0,75,0.0],"hailly":[0,91,0.0],"hannaha":[0,23,0.0],"hannia":[0,695,0.5684],"humaira":[0,314,0.4994],"icesis":[0,134,0.4254],"ifunanya":[0,68,0.0],"ijanae":[0,91,0.0],"isayana":[0,15,0.0],"isobella":[0,238,0.4753],"jabreia":[0,31,0.0],"jacenda":[0,10,0.0],"jackueline":[0,5,0.0],"jaelynne":[0,383,0.5166],"jahlia":[0,260,0.483],"jahnasia":[0,85,0.0],"jahnel":[0,11,0.0],"jaicey":[0,117,0.4136],"jakaila":[0,230,0.4723],"jakaria":[0,194,0.4576],"jakoria":[0,11,0.0],"jaley":[0,400,0.5204],"jalica":[0,5,0.0],"jameera":[0,16,0.0],"jamerial":[0,5,0.0],"jamylex":[0,5,0.0],"jaquelene":[0,5,0.0],"jaquelline":[0,12,0.0],"jaricka":[0,5,0.0],"jaterrica":[0,11,0.0],"jaylia":[0,226,0.4708],"jazzmond":[0,5,0.0],"jeliah":[0,21,0.0],"jendaya":[0,79,0.0],"jhoseline":[0,35,0.0],"jicela":[0,5,0.0],"jillissa":[0,5,0.0],"joci":[0,103,0.4026],"joeisha":[0,10,0.0],"johnicia":[0,5,0.0],"jonaye":[0,20,0.0],"josaline":[0,54,0.0],"josilin":[0,58,0.0],"josilynn":[0,254,0.481],"judaea":[5,138,0.416],"jullianna":[0,174,0.4481],"jumanah":[0,86,0.0],"kadaysha":[0,16,0.0],"kaelia":[0,5,0.0],"kahrin":[0,5,0.0],"kailye":[0,31,0.0],"kalifah":[0,5,0.0],"kalkidan":[0,163,0.4424],"kamery":[0,20,0.0],"kandys":[0,5,0.0],"kanijah":[0,271,0.4866],"karynna":[0,51,0.0],"kayja":[0,37,0.0],"kaylanie":[0,709,0.5701],"kayleeann":[0,262,0.4837],"keaja":[0,72,0.0],"keiairra":[0,5,0.0],"keighly":[0,64,0.0],"keilin":[52,191,0.375],"kelesha":[0,5,0.0],"kenzley":[0,1762,0.6492],"kessiah":[60,58,0.2107],"kevionna":[0,98,0.0],"keyle":[0,106,0.4051],"khylah":[0,73,0.0],"khylie":[0,679,0.5664],"kiahra":[0,35,0.0],"kiaralee":[0,22,0.0],"kieandra":[0,5,0.0],"kiralyn":[0,50,0.0],"kishonna":[0,5,0.0],"kiyanah":[0,50,0.0],"kiyani":[0,139,0.4286],"kloie":[0,1086,0.6072],"krishunna":[0,5,0.0],"krislin":[0,28,0.0],"kyarah":[0,222,0.4693],"kylii":[0,61,0.0],"kylla":[0,47,0.0],"kyneisha":[0,5,0.0],"ladejah":[0,25,0.0],"lamisa":[0,15,0.0],"larimar":[0,108,0.4067],"latae":[0,5,0.0],"lazhane":[0,5,0.0],"lexys":[0,69,0.0],"lileana":[0,43,0.0],"lizel":[0,13,0.0],"llareli":[0,15,0.0],"lynnaya":[0,32,0.0],"mackena":[0,109,0.4075],"mackenzey":[0,170,0.4461],"mackenzye":[0,140,0.4292],"maddisyn":[0,1219,0.6172],"madeeha":[0,90,0.0],"madellyne":[0,5,0.0],"madeson":[0,20,0.0],"mahely":[0,10,0.0],"mahli":[0,113,0.4106],"mahreen":[0,204,0.4619],"mailani":[0,626,0.5593],"makali":[0,39,0.0],"makina":[0,90,0.0],"makinze":[0,164,0.443],"makira":[0,193,0.4571],"manahil":[0,364,0.5122],"maneesha":[0,5,0.0],"marelle":[0,5,0.0],"mariaelisa":[0,10,0.0],"marijah":[0,104,0.4034],"marinah":[0,34,0.0],"mariona":[0,272,0.4869],"markaya":[0,42,0.0],"markiah":[0,62,0.0],"marnay":[0,15,0.0],"masooma":[0,10,0.0],"mataia":[0,13,0.0],"matisen":[0,23,0.0],"mattalyn":[0,208,0.4636],"mattlyn":[0,10,0.0],"mauriana":[0,217,0.4673],"mazey":[0,215,0.4665],"mckailey":[0,33,0.0],"mckensi":[0,139,0.4286],"mecayla":[0,5,0.0],"meilyn":[0,254,0.481],"mekenzi":[0,49,0.0],"melike":[0,29,0.0],"meltem":[0,10,0.0],"metzli":[6,435,0.5217],"micheyla":[0,14,0.0],"miette":[0,247,0.4785],"mihika":[0,659,0.5638],"mikera":[0,50,0.0],"millenia":[0,86,0.0],"mirakle":[0,326,0.5026],"mircle":[0,21,0.0],"miriana":[0,134,0.4254],"mizani":[0,70,0.0],"moshay":[0,5,0.0],"mycha":[0,18,0.0],"nadasha":[0,5,0.0],"nakaila":[0,73,0.0],"nakevia":[0,5,0.0],"nakiera":[0,15,0.0],"nardos":[0,258,0.4823],"naydeen":[0,89,0.0],"naylah":[0,634,0.5604],"nazaneen":[0,17,0.0],"nerea":[0,115,0.4121],"nieve":[0,186,0.4539],"nikaila":[0,21,0.0],"nikyra":[0,43,0.0],"niyana":[0,401,0.5206],"niyati":[0,356,0.5103],"nooreen":[0,10,0.0],"nwamaka":[0,5,0.0],"nyaisa":[0,48,0.0],"nyderah":[0,5,0.0],"nyomie":[0,226,0.4708],"nyosha":[0,5,0.0],"obianuju":[0,28,0.0],"odessey":[0,25,0.0],"oesha":[0,5,0.0],"olabisi":[0,5,0.0],"oladis":[0,5,0.0],"olexus":[0,5,0.0],"oluwayemisi":[0,5,0.0],"opeyemi":[19,30,0.0],"oyinkansola":[0,103,0.4026],"paetyn":[11,1080,0.6014],"paytan":[7,170,0.4318],"promyse":[0,584,0.5533],"quatashia":[0,5,0.0],"queanna":[0,11,0.0],"quetzali":[0,410,0.5226],"ranim":[0,27,0.0],"rayonia":[0,5,0.0],"reauna":[0,35,0.0],"reigan":[0,305,0.4969],"reilley":[107,180,0.3083],"renad":[0,299,0.4951],"rickiesha":[0,5,0.0],"rija":[0,28,0.0],"rishika":[0,587,0.5537],"ronnia":[0,19,0.0],"ruqayya":[0,169,0.4456],"rwan":[0,25,0.0],"rylynn":[114,2977,0.6723],"sabia":[0,10,0.0],"saga":[0,161,0.4414],"saleste":[0,10,0.0],"samaris":[0,28,0.0],"samiera":[0,5,0.0],"sanaya":[0,1810,0.6515],"sanjida":[0,38,0.0],"sanjna":[0,140,0.4292],"saphira":[0,2230,0.6697],"saraly":[0,16,0.0],"sarea":[0,91,0.0],"saturn":[42,89,0.2877],"semaja":[22,163,0.3995],"sewit":[0,5,0.0],"seydi":[0,41,0.0],"shadaisha":[0,23,0.0],"shaista":[0,15,0.0],"shanayah":[0,76,0.0],"shanelly":[0,41,0.0],"shayln":[0,16,0.0],"shengyeng":[0,5,0.0],"shilee":[0,60,0.0],"shreeya":[0,578,0.5524],"shyda":[0,5,0.0],"shyleen":[0,30,0.0],"shylyn":[0,65,0.0],"simranpreet":[0,29,0.0],"simrin":[0,120,0.4158],"simrun":[0,29,0.0],"smriti":[0,220,0.4685],"sohini":[0,46,0.0],"somia":[0,21,0.0],"sreya":[0,260,0.483],"suhani":[0,958,0.5963],"sukhman":[88,75,0.2389],"taarna":[0,5,0.0],"taejah":[0,102,0.4017],"tahreem":[0,31,0.0],"tailyn":[38,769,0.554],"taitlyn":[0,51,0.0],"tajane":[0,29,0.0],"tajiana":[0,44,0.0],"talayna":[0,33,0.0],"tamaiya":[0,82,0.0],"tamani":[0,143,0.4311],"tamarea":[0,10,0.0],"tamija":[14,26,0.0],"tamyah":[0,391,0.5184],"tanaija":[0,59,0.0],"tanyah":[0,321,0.5013],"tasi":[30,82,0.3001],"tavaria":[0,118,0.4144],"taylorjo":[0,11,0.0],"teeana":[0,5,0.0],"tehillah":[0,200,0.4602],"tenaj":[0,43,0.0],"teoni":[0,15,0.0],"teyah":[0,352,0.5093],"thaina":[0,31,0.0],"timiya":[0,183,0.4525],"tochi":[21,55,0.0],"topazio":[0,5,0.0],"trania":[0,26,0.0],"trynity":[0,412,0.523],"trystyn":[217,80,0.3613],"tyah":[0,90,0.0],"tyaja":[0,31,0.0],"tyannia":[0,5,0.0],"tyhecia":[0,5,0.0],"tyheisha":[0,5,0.0],"tyianna":[0,100,0.4],"tyionna":[0,49,0.0],"tykerra":[0,11,0.0],"tyliyah":[0,521,0.5434],"tymeria":[0,24,0.0],"tynique":[0,16,0.0],"tyshawnna":[0,5,0.0],"tzippy":[0,241,0.4764],"usra":[0,11,0.0],"valerya":[0,134,0.4254],"vyvian":[0,36,0.0],"wellsley":[0,15,0.0],"yailin":[0,926,0.5933],"yamiletz":[0,5,0.0],"yarah":[0,334,0.5047],"yasmyne":[0,48,0.0],"yazil":[0,5,0.0],"yenitza":[0,16,0.0],"yensi":[0,40,0.0],"yessenya":[0,5,0.0],"yianna":[0,102,0.4017],"zabria":[0,62,0.0],"zahrea":[0,10,0.0],"zamaria":[0,857,0.5866],"zaniyah":[0,7096,0.7702],"zareya":[0,85,0.0],"zariyah":[0,7118,0.7705],"zatoria":[0,27,0.0],"zeanna":[0,194,0.4576],"zenah":[0,15,0.0],"zhanel":[0,5,0.0],"zhanelle":[0,5,0.0],"zikia":[0,39,0.0],"zineb":[0,103,0.4026],"zuleyca":[0,13,0.0],"zyesha":[0,10,0.0],"quindon":[114,0,0.4114],"keyshaun":[703,0,0.5694],"jaekwon":[154,0,0.4375],"andruw":[518,0,0.5429],"keyshon":[339,0,0.506],"keshone":[21,0,0.0],"kolyn":[188,0,0.4548],"jashun":[308,0,0.4977],"jervontae":[12,0,0.0],"jyair":[269,0,0.486],"kirklan":[41,0,0.0],"maddux":[3717,254,0.6737],"tayson":[1064,0,0.6054],"caeleb":[463,0,0.5331],"dmorea":[30,0,0.0],"joseandres":[71,0,0.0],"kyshaun":[224,0,0.47],"rohin":[393,0,0.5189],"ayub":[1549,0,0.638],"izaya":[1075,0,0.6063],"jachai":[358,10,0.4992],"karanveer":[150,0,0.4352],"meliek":[21,0,0.0],"taekwon":[39,0,0.0],"aniket":[331,0,0.504],"cayde":[1545,0,0.6378],"guled":[110,0,0.4083],"jaylind":[27,0,0.0],"kalel":[4216,15,0.7227],"keaundre":[122,0,0.4173],"khalen":[197,5,0.4497],"kinser":[108,0,0.4067],"kirklyn":[24,54,0.0],"makani":[355,134,0.3905],"samarth":[1411,0,0.6299],"trase":[76,0,0.0],"trelyn":[165,0,0.4435],"tydarius":[291,0,0.4928],"abhiram":[1266,0,0.6205],"alema":[21,5,0.0],"alioune":[170,0,0.4461],"daelan":[390,0,0.5182],"delsin":[213,0,0.4657],"drayvon":[19,0,0.0],"gryphon":[635,0,0.5606],"ilijah":[573,0,0.5516],"jaaziel":[511,10,0.5329],"jakobe":[4757,0,0.7355],"javarri":[79,0,0.0],"jiair":[52,0,0.0],"jonpatrick":[14,0,0.0],"jontarius":[14,0,0.0],"jordanlee":[18,0,0.0],"jshawn":[337,0,0.5055],"jumanji":[8,0,0.0],"krischan":[43,0,0.0],"kurdt":[18,0,0.0],"macoy":[529,0,0.5447],"manases":[223,0,0.4697],"melieck":[8,0,0.0],"omkar":[344,0,0.5073],"quadarious":[19,0,0.0],"raeqwan":[14,0,0.0],"raquawn":[8,0,0.0],"riese":[64,44,0.241],"riku":[470,0,0.5344],"shubham":[303,0,0.4963],"tracer":[169,0,0.4456],"tustin":[29,0,0.0],"tylil":[43,0,0.0],"vasu":[57,0,0.0],"yuriy":[202,0,0.4611],"amaru":[926,29,0.5779],"amogh":[700,0,0.569],"antravious":[45,0,0.0],"breydon":[593,0,0.5546],"capone":[223,0,0.4697],"cheemeng":[46,0,0.0],"cheick":[195,0,0.458],"chibueze":[172,0,0.4471],"christopherjose":[22,0,0.0],"cobe":[836,0,0.5844],"dannion":[18,0,0.0],"delorenzo":[7,0,0.0],"efe":[358,0,0.5108],"elisiah":[27,0,0.0],"elohim":[252,0,0.4803],"elvir":[38,0,0.0],"gerzon":[17,0,0.0],"jaramiah":[92,0,0.0],"jerray":[17,0,0.0],"jhonattan":[7,0,0.0],"jie":[86,18,0.3336],"josaiah":[428,0,0.5263],"kaimen":[135,0,0.4261],"kaleal":[60,0,0.0],"keagon":[215,0,0.4665],"keeshaun":[38,0,0.0],"kethan":[170,0,0.4461],"keygan":[397,11,0.5081],"khalim":[7,0,0.0],"kinnon":[18,0,0.0],"kwenton":[7,0,0.0],"kywon":[28,0,0.0],"layn":[123,0,0.418],"loic":[477,0,0.5357],"makel":[745,48,0.5448],"makhi":[4039,52,0.7132],"mamoon":[18,0,0.0],"markiece":[7,0,0.0],"merik":[334,0,0.5047],"nayeem":[30,0,0.0],"nygil":[24,0,0.0],"ohagi":[7,0,0.0],"ohaji":[45,0,0.0],"olalekan":[24,0,0.0],"raqwan":[13,0,0.0],"shaefer":[7,0,0.0],"shallah":[18,0,0.0],"sohrob":[15,0,0.0],"stefaun":[7,0,0.0],"stetsen":[60,0,0.0],"tshawn":[24,0,0.0],"wyett":[350,0,0.5088],"zyan":[1636,325,0.5494],"aalim":[61,0,0.0],"abdulahi":[494,0,0.5387],"adithya":[635,0,0.5606],"airic":[32,0,0.0],"akeil":[35,0,0.0],"alakai":[820,0,0.5828],"alexandor":[16,0,0.0],"alp":[434,0,0.5275],"andro":[59,0,0.0],"arath":[1130,0,0.6106],"areon":[87,45,0.2795],"asaiah":[1743,110,0.6148],"ausar":[285,0,0.491],"awan":[29,0,0.0],"bannon":[197,0,0.4589],"benett":[318,0,0.5005],"blayton":[298,0,0.4948],"borna":[119,0,0.4151],"caileb":[237,0,0.4749],"caleel":[106,0,0.4051],"chanston":[64,0,0.0],"christiananthon":[12,0,0.0],"christianmichae":[11,0,0.0],"clayten":[257,0,0.482],"daequon":[52,0,0.0],"daeton":[233,0,0.4735],"danterius":[6,0,0.0],"dathon":[17,0,0.0],"dequantae":[12,0,0.0],"dequinton":[19,0,0.0],"deronne":[6,0,0.0],"devean":[199,0,0.4598],"devlen":[23,0,0.0],"devun":[69,0,0.0],"deyton":[274,0,0.4876],"dmon":[21,0,0.0],"driston":[24,0,0.0],"eann":[123,0,0.418],"elijahjames":[140,0,0.4292],"handsome":[117,0,0.4136],"hristo":[24,0,0.0],"iasiah":[68,7,0.0],"isahia":[122,0,0.4173],"jadavian":[18,0,0.0],"jaedin":[417,123,0.422],"jagr":[25,0,0.0],"jahni":[91,164,0.3095],"jahshawn":[54,0,0.0],"jahsiah":[967,0,0.5971],"jailan":[148,32,0.3709],"jaishon":[180,0,0.4511],"jakyle":[98,0,0.0],"jamary":[21,5,0.0],"jaquaun":[11,0,0.0],"jaquaveon":[65,0,0.0],"jaquavion":[473,0,0.535],"jauquan":[6,0,0.0],"javarron":[6,0,0.0],"jayvone":[30,0,0.0],"jazon":[242,0,0.4768],"jeanchristophe":[6,0,0.0],"jeloni":[17,0,0.0],"jerian":[67,0,0.0],"jeudy":[28,0,0.0],"jhoan":[606,0,0.5565],"jocquez":[12,0,0.0],"joemichael":[18,0,0.0],"jomarcus":[6,0,0.0],"joseenrique":[42,0,0.0],"joshaun":[56,0,0.0],"jshon":[101,0,0.4009],"junpei":[11,0,0.0],"justinjames":[11,0,0.0],"kamaree":[372,192,0.3629],"keeyan":[54,0,0.0],"keijon":[6,0,0.0],"keunte":[14,0,0.0],"kevinkhang":[6,0,0.0],"keywon":[95,0,0.0],"khalyl":[80,0,0.0],"kidus":[836,0,0.5844],"kierian":[52,0,0.0],"kilan":[138,0,0.428],"kimoni":[362,260,0.3252],"kohen":[7256,137,0.7594],"kohlby":[28,0,0.0],"kuba":[119,0,0.4151],"laakea":[199,10,0.4418],"lakwan":[6,0,0.0],"luisandres":[11,0,0.0],"maclin":[406,11,0.5102],"maksymilian":[468,0,0.534],"malec":[21,0,0.0],"matei":[268,0,0.4856],"matthewjames":[73,0,0.0],"mccormick":[86,0,0.0],"mihail":[180,0,0.4511],"mykol":[35,0,0.0],"nazier":[616,0,0.5579],"nicquan":[11,0,0.0],"odarrius":[6,0,0.0],"ohajee":[6,0,0.0],"oshane":[61,0,0.0],"perrion":[191,0,0.4562],"quandarious":[16,0,0.0],"quavonte":[6,0,0.0],"raequawn":[6,0,0.0],"rafay":[286,0,0.4913],"rahmere":[50,0,0.0],"raishaun":[22,0,0.0],"reef":[1234,56,0.5951],"robertjr":[6,0,0.0],"ryden":[1797,43,0.6377],"ryotaro":[37,0,0.0],"sabbir":[6,0,0.0],"saequan":[6,0,0.0],"seiya":[102,0,0.4017],"sethe":[32,0,0.0],"shrey":[729,0,0.5725],"shyheed":[17,0,0.0],"slayden":[270,0,0.4863],"tajaun":[22,0,0.0],"takai":[420,48,0.4793],"tamerick":[6,0,0.0],"tayveon":[596,0,0.555],"teancum":[224,0,0.47],"thailer":[33,6,0.0],"travarious":[41,0,0.0],"trayshaun":[21,0,0.0],"trayson":[486,0,0.5373],"trenden":[93,0,0.0],"trevail":[6,0,0.0],"treysean":[75,0,0.0],"tysheim":[6,0,0.0],"warsame":[40,0,0.0],"wonya":[6,0,0.0],"xzavious":[30,0,0.0],"youssouf":[253,0,0.4806],"zackeria":[6,0,0.0],"aaris":[92,77,0.2426],"abdalrahman":[219,0,0.4681],"adrik":[526,0,0.5442],"aengus":[201,0,0.4606],"aidian":[146,0,0.4329],"akem":[5,0,0.0],"allonzo":[5,0,0.0],"almin":[104,0,0.4034],"anatoliy":[55,0,0.0],"andreis":[46,0,0.0],"anthonyjoseph":[50,0,0.0],"arham":[2006,0,0.6605],"arquan":[5,0,0.0],"asean":[51,0,0.0],"augustas":[47,0,0.0],"austinjohn":[11,0,0.0],"avidan":[63,0,0.0],"avishai":[266,0,0.485],"baden":[393,0,0.5189],"banyan":[363,0,0.512],"bar":[27,23,0.0],"bauer":[814,6,0.5785],"blayden":[728,0,0.5724],"brandol":[105,0,0.4042],"brashad":[5,0,0.0],"brejon":[5,0,0.0],"brosnan":[20,0,0.0],"buchanan":[87,0,0.0],"cardon":[61,0,0.0],"carlosjr":[5,0,0.0],"cengiz":[5,0,0.0],"charlz":[5,0,0.0],"chaske":[66,0,0.0],"chaysen":[124,0,0.4187],"chidubem":[356,0,0.5103],"christianjoseph":[22,0,0.0],"coi":[65,101,0.2702],"cylas":[969,0,0.5973],"daekwan":[5,0,0.0],"dagon":[184,0,0.453],"damare":[118,0,0.4144],"damarques":[24,0,0.0],"damire":[87,0,0.0],"dantez":[27,0,0.0],"daquian":[5,0,0.0],"datrion":[10,0,0.0],"davidchristophe":[5,0,0.0],"dayten":[261,0,0.4833],"delsean":[5,0,0.0],"demarrea":[11,0,0.0],"demauri":[412,0,0.523],"deshawndre":[5,0,0.0],"devontrae":[5,0,0.0],"diago":[392,0,0.5187],"dlyan":[16,0,0.0],"dmarko":[5,0,0.0],"doniven":[111,0,0.4091],"drayke":[358,0,0.5108],"drekwon":[10,0,0.0],"duvid":[342,0,0.5068],"dwyer":[5,0,0.0],"dyante":[15,0,0.0],"edvard":[10,0,0.0],"elek":[228,0,0.4716],"eliezar":[29,0,0.0],"ephron":[10,0,0.0],"ezquiel":[5,0,0.0],"fadel":[210,0,0.4644],"faizaan":[184,0,0.453],"fawad":[39,0,0.0],"feroz":[15,0,0.0],"ferras":[5,0,0.0],"gaber":[5,0,0.0],"garrad":[5,0,0.0],"gianncarlo":[54,0,0.0],"godson":[114,0,0.4114],"gokul":[82,0,0.0],"gristian":[5,0,0.0],"gurvinder":[17,0,0.0],"haidar":[298,0,0.4948],"heberth":[5,0,0.0],"herik":[17,0,0.0],"huzaifa":[452,0,0.531],"hytham":[5,0,0.0],"ibraham":[66,0,0.0],"inderjit":[22,0,0.0],"isaack":[136,0,0.4267],"ishmam":[5,0,0.0],"isileli":[57,0,0.0],"itzhak":[45,0,0.0],"izaiha":[282,0,0.49],"izhar":[52,0,0.0],"izzat":[11,0,0.0],"jacobdaniel":[5,0,0.0],"jadarien":[52,0,0.0],"jaegar":[99,0,0.0],"jahmeek":[65,0,0.0],"jahmeel":[21,0,0.0],"jahmeer":[227,0,0.4712],"jaivion":[457,0,0.532],"jakarie":[178,0,0.4501],"jaken":[102,0,0.4017],"jaleal":[184,0,0.453],"jamarqus":[31,0,0.0],"jametrius":[27,0,0.0],"jaquavian":[110,0,0.4083],"jaquaylon":[34,0,0.0],"jaquest":[5,0,0.0],"jarryn":[59,0,0.0],"jaskirat":[107,49,0.3009],"javarrius":[17,0,0.0],"jave":[5,0,0.0],"jaymere":[180,0,0.4511],"jehiel":[190,0,0.4558],"jelon":[22,0,0.0],"jerricho":[43,0,0.0],"jessten":[5,0,0.0],"jevontay":[5,0,0.0],"jiar":[5,0,0.0],"jimari":[63,0,0.0],"jimique":[5,0,0.0],"jlen":[88,0,0.0],"joaopedro":[232,0,0.4731],"jodarius":[5,0,0.0],"jonaton":[15,0,0.0],"jordanchristoph":[5,0,0.0],"juanmarcos":[12,0,0.0],"juanyae":[5,0,0.0],"julyan":[400,0,0.5204],"justinanthony":[5,0,0.0],"juwahn":[5,0,0.0],"jylan":[95,0,0.0],"kadden":[163,0,0.4424],"kahleb":[144,0,0.4317],"kaizer":[1215,5,0.6147],"kalaeb":[10,0,0.0],"kaleil":[32,0,0.0],"kaliph":[10,0,0.0],"kamarri":[253,111,0.356],"kardarius":[11,0,0.0],"kasai":[627,11,0.5513],"keaunte":[18,0,0.0],"keison":[136,0,0.4267],"kendred":[16,0,0.0],"kendron":[5,0,0.0],"kenichiro":[10,0,0.0],"kentravius":[10,0,0.0],"keonne":[22,0,0.0],"keymonte":[20,0,0.0],"keysean":[241,0,0.4764],"khadarius":[5,0,0.0],"khallil":[5,0,0.0],"khamal":[30,0,0.0],"khylan":[695,11,0.5609],"kieler":[64,0,0.0],"kiheem":[5,0,0.0],"kione":[37,0,0.0],"kiren":[196,33,0.404],"kisean":[63,0,0.0],"kiyle":[11,0,0.0],"koen":[4719,15,0.7327],"kyheem":[92,0,0.0],"kyreem":[69,0,0.0],"ladante":[16,0,0.0],"laim":[63,0,0.0],"lascelles":[5,0,0.0],"latrez":[36,0,0.0],"laurenz":[28,0,0.0],"leeandre":[78,0,0.0],"leequan":[5,0,0.0],"leondrae":[16,0,0.0],"loai":[62,0,0.0],"loki":[1918,88,0.6315],"ludovic":[49,0,0.0],"macallister":[271,0,0.4866],"mahki":[1010,0,0.6009],"makyle":[137,0,0.4273],"malaquias":[144,0,0.4317],"maliak":[11,0,0.0],"markest":[5,0,0.0],"markryan":[5,0,0.0],"marqua":[10,0,0.0],"marquian":[5,0,0.0],"matheo":[2104,0,0.6646],"melad":[11,0,0.0],"melique":[30,0,0.0],"miguelangelo":[10,0,0.0],"mikias":[119,0,0.4151],"mohamedali":[80,0,0.0],"mondarius":[24,0,0.0],"monir":[5,0,0.0],"montico":[5,0,0.0],"munajj":[5,0,0.0],"nadarius":[31,0,0.0],"nasier":[409,0,0.5223],"naum":[17,0,0.0],"nebiyu":[50,0,0.0],"nikalus":[40,0,0.0],"niquan":[79,0,0.0],"nyckolas":[5,0,0.0],"obasi":[5,0,0.0],"oscardaniel":[5,0,0.0],"otman":[5,0,0.0],"parmveer":[10,0,0.0],"pavin":[5,0,0.0],"pavlo":[43,0,0.0],"plinio":[5,0,0.0],"pono":[25,0,0.0],"prestyn":[831,308,0.446],"prithvi":[374,0,0.5146],"priyank":[5,0,0.0],"pujan":[42,0,0.0],"quaadir":[10,0,0.0],"quadier":[5,0,0.0],"quadri":[25,0,0.0],"qualen":[10,0,0.0],"qualyn":[67,0,0.0],"quandarrius":[5,0,0.0],"quanterious":[12,0,0.0],"quanterius":[15,0,0.0],"quanterrious":[10,0,0.0],"quantravious":[16,0,0.0],"quendarious":[5,0,0.0],"quevon":[40,0,0.0],"quinden":[16,0,0.0],"raaziq":[5,0,0.0],"radwan":[138,0,0.428],"rajvir":[179,0,0.4506],"rakwan":[13,0,0.0],"ranen":[113,0,0.4106],"ravy":[11,0,0.0],"rayquann":[5,0,0.0],"rayqwan":[11,0,0.0],"rayshaud":[21,0,0.0],"rayyan":[2997,242,0.6496],"rhyse":[226,96,0.352],"robenson":[10,0,0.0],"ryhan":[27,5,0.0],"rylon":[344,0,0.5073],"sachiel":[10,0,0.0],"sahr":[44,0,0.0],"saifullah":[110,0,0.4083],"samuael":[5,0,0.0],"sarim":[344,0,0.5073],"saurav":[203,0,0.4615],"seandre":[5,0,0.0],"seantyler":[5,0,0.0],"semaje":[130,26,0.3655],"semir":[271,0,0.4866],"shammond":[67,0,0.0],"shaquone":[5,0,0.0],"shaylor":[10,0,0.0],"shiheim":[10,0,0.0],"shjon":[74,0,0.0],"shray":[192,0,0.4567],"shumel":[5,0,0.0],"shyhem":[5,0,0.0],"slaten":[22,0,0.0],"srikar":[488,0,0.5377],"stafon":[5,0,0.0],"stephun":[5,0,0.0],"suriel":[64,0,0.0],"syris":[351,0,0.5091],"taggert":[143,0,0.4311],"taige":[104,78,0.2583],"tairik":[5,0,0.0],"taliq":[44,0,0.0],"tangelo":[5,0,0.0],"taric":[5,0,0.0],"tavario":[5,0,0.0],"taymon":[16,0,0.0],"teonte":[15,0,0.0],"terreon":[103,0,0.4026],"themba":[5,0,0.0],"thierno":[391,0,0.5184],"thristan":[30,0,0.0],"tieran":[22,6,0.0],"tijon":[47,0,0.0],"tomasi":[71,0,0.0],"tovias":[5,0,0.0],"trajuan":[5,0,0.0],"tremarcus":[10,0,0.0],"treton":[50,0,0.0],"treveion":[55,0,0.0],"tristion":[44,0,0.0],"tyanthony":[52,0,0.0],"tyberious":[63,0,0.0],"tydarrius":[24,0,0.0],"tykwon":[79,0,0.0],"tymeek":[22,0,0.0],"tyquell":[33,0,0.0],"tyvez":[5,0,0.0],"tyvion":[107,0,0.4059],"vikramjit":[5,0,0.0],"wanye":[22,0,0.0],"whyatt":[352,0,0.5093],"wyland":[305,0,0.4969],"yavuz":[77,0,0.0],"yida":[311,0,0.4986],"yoani":[12,7,0.0],"yohanes":[54,0,0.0],"yulian":[602,0,0.5559],"zaccari":[30,0,0.0],"zaeem":[339,0,0.506],"zamian":[16,0,0.0],"zarif":[169,0,0.4456],"zarin":[117,120,0.2405],"zildjian":[31,0,0.0],"zishe":[21,0,0.0],"zyler":[1393,0,0.6288],"erykah":[0,1548,0.638],"yuliza":[0,580,0.5527],"ajaysia":[0,43,0.0],"keja":[0,57,0.0],"reganne":[0,225,0.4704],"allure":[5,563,0.546],"taeya":[0,368,0.5132],"luzclarita":[0,41,0.0],"dzyre":[0,55,0.0],"areisy":[0,21,0.0],"halia":[0,1027,0.6023],"jonbenet":[0,20,0.0],"tyjah":[58,180,0.3595],"zalma":[0,89,0.0],"syanne":[0,234,0.4738],"ahtziry":[0,287,0.4916],"derykah":[0,27,0.0],"emony":[0,130,0.4228],"janvi":[0,458,0.5322],"jullissa":[0,55,0.0],"keileigh":[0,211,0.4649],"taeja":[0,127,0.4208],"yaileen":[0,281,0.4897],"zyria":[0,399,0.5202],"ajla":[0,811,0.5818],"amarri":[394,331,0.3109],"arianda":[0,22,0.0],"elaysia":[0,355,0.51],"markeria":[0,88,0.0],"nykira":[0,208,0.4636],"yailene":[0,120,0.4158],"alayzia":[0,335,0.505],"alitzel":[0,1026,0.6022],"annaclaire":[0,443,0.5293],"ayline":[0,445,0.5297],"brenley":[27,1007,0.5872],"damiya":[0,901,0.5909],"dessiah":[77,17,0.0],"majesti":[0,258,0.4823],"maleya":[0,541,0.5466],"nashaya":[0,56,0.0],"niha":[0,42,0.0],"reilee":[0,21,0.0],"saumya":[5,244,0.4696],"taitum":[102,469,0.4528],"taleea":[0,50,0.0],"yailyn":[0,332,0.5042],"zarriah":[0,448,0.5303],"abbagale":[0,139,0.4286],"adaysha":[0,61,0.0],"ahlexis":[0,24,0.0],"alaja":[0,197,0.4589],"armanie":[61,192,0.3647],"chidimma":[0,46,0.0],"dayzia":[0,48,0.0],"delaynie":[0,376,0.515],"desjambra":[0,9,0.0],"dounia":[0,43,0.0],"fey":[0,135,0.4261],"genessy":[0,56,0.0],"hima":[0,32,0.0],"janayah":[0,739,0.5737],"jeselle":[0,213,0.4657],"jonnay":[0,29,0.0],"kenidee":[0,307,0.4974],"keniya":[0,683,0.5669],"kyannah":[0,62,0.0],"ninti":[0,27,0.0],"nybria":[0,14,0.0],"rakayla":[0,240,0.476],"sheridyn":[0,87,0.0],"sira":[0,241,0.4764],"sirenna":[0,20,0.0],"talazia":[0,15,0.0],"taneja":[0,52,0.0],"thaila":[0,108,0.4067],"ulissa":[0,28,0.0],"wardah":[0,42,0.0],"yacine":[118,86,0.2672],"zakeea":[0,9,0.0],"zarya":[0,643,0.5616],"zeana":[0,32,0.0],"abbeygail":[0,66,0.0],"adiba":[0,175,0.4486],"ajaycia":[0,8,0.0],"ajenae":[0,8,0.0],"anarely":[0,118,0.4144],"aylen":[110,1224,0.5735],"callia":[0,566,0.5506],"daila":[0,739,0.5737],"dejone":[0,8,0.0],"denajah":[0,121,0.4166],"desyree":[0,32,0.0],"imanii":[0,125,0.4194],"jakiah":[90,456,0.4572],"jannat":[0,1392,0.6287],"janyah":[0,1152,0.6123],"kadison":[6,22,0.0],"kambrea":[0,84,0.0],"kassadee":[0,76,0.0],"kayliana":[0,1064,0.6054],"keiasia":[0,208,0.4636],"khady":[0,250,0.4796],"kyliee":[0,722,0.5717],"kynedi":[0,305,0.4969],"ladaria":[0,26,0.0],"lesliee":[0,8,0.0],"macalla":[0,8,0.0],"madden":[7279,1383,0.6618],"mahkayla":[0,186,0.4539],"makalla":[0,24,0.0],"micahla":[0,40,0.0],"mirabelle":[0,1527,0.6368],"myangel":[0,483,0.5368],"mycayla":[0,20,0.0],"myonna":[0,441,0.5289],"risako":[0,31,0.0],"rumor":[0,104,0.4034],"sayeh":[0,18,0.0],"shamyah":[0,261,0.4833],"taiyah":[0,37,0.0],"taleigh":[0,111,0.4091],"talliyah":[0,44,0.0],"tavianna":[0,58,0.0],"tyreana":[0,55,0.0],"tyzhane":[0,20,0.0],"vivika":[0,212,0.4653],"yulitza":[0,204,0.4619],"yulizza":[0,8,0.0],"zakyia":[0,152,0.4364],"aaleah":[0,345,0.5076],"aaleigha":[0,183,0.4525],"adajah":[0,77,0.0],"ahnika":[0,248,0.4789],"ajanai":[0,24,0.0],"akeda":[0,7,0.0],"alayzha":[0,74,0.0],"alesea":[0,12,0.0],"alizee":[0,543,0.547],"allahna":[0,110,0.4083],"alneisha":[0,7,0.0],"alyze":[0,134,0.4254],"ariatna":[0,133,0.4248],"arykah":[0,31,0.0],"aryona":[0,162,0.4419],"aunye":[0,27,0.0],"ayrianna":[0,337,0.5055],"baile":[0,13,0.0],"bailei":[0,280,0.4894],"baillee":[0,13,0.0],"belanna":[0,118,0.4144],"bibianna":[0,50,0.0],"caelie":[0,100,0.4],"calyx":[169,45,0.3681],"caoilinn":[0,46,0.0],"ciarrah":[0,81,0.0],"citlalic":[0,127,0.4208],"edona":[0,80,0.0],"essynce":[0,267,0.4853],"evynn":[5,310,0.4917],"ganessa":[0,12,0.0],"ganna":[0,34,0.0],"harleyann":[0,57,0.0],"heven":[0,40,0.0],"icess":[0,108,0.4067],"ikram":[43,328,0.4543],"jaianna":[0,324,0.5021],"jaileene":[0,12,0.0],"jaleyah":[0,593,0.5546],"janyia":[0,781,0.5785],"jarena":[0,7,0.0],"jasira":[0,262,0.4837],"jateria":[0,31,0.0],"jatori":[10,19,0.0],"jaylenne":[0,243,0.4771],"jaynah":[0,35,0.0],"jirah":[60,262,0.4081],"kealee":[0,55,0.0],"kealie":[0,83,0.0],"kensington":[161,2889,0.6601],"keviana":[0,70,0.0],"kialey":[0,45,0.0],"kinslee":[0,5069,0.741],"kinzee":[0,266,0.485],"kortlyn":[0,277,0.4885],"lanaysia":[0,68,0.0],"machayla":[0,33,0.0],"madailein":[0,163,0.4424],"madilynne":[0,551,0.5482],"makya":[93,1104,0.5678],"makynzie":[0,862,0.5871],"maniya":[0,576,0.5521],"marialaura":[0,12,0.0],"marivelle":[0,7,0.0],"marixza":[0,12,0.0],"martasia":[0,136,0.4267],"matlin":[0,7,0.0],"maykala":[0,37,0.0],"mayli":[0,573,0.5516],"maylis":[0,18,0.0],"mckalyn":[0,23,0.0],"mechaela":[0,7,0.0],"mekaylah":[0,97,0.0],"milah":[0,2757,0.6881],"minah":[0,281,0.4897],"nastaja":[0,7,0.0],"nataija":[0,24,0.0],"natea":[0,26,0.0],"netania":[0,12,0.0],"neyla":[0,480,0.5362],"noshin":[0,34,0.0],"nyjae":[0,188,0.4548],"oliwia":[0,281,0.4897],"oshiana":[0,7,0.0],"regin":[0,7,0.0],"rejoice":[0,190,0.4558],"reygan":[5,394,0.5137],"richlyn":[0,24,0.0],"rmani":[101,264,0.3707],"sahian":[0,72,0.0],"shaely":[0,145,0.4323],"shahadah":[0,43,0.0],"simren":[0,69,0.0],"sukanya":[0,75,0.0],"sydeny":[0,12,0.0],"tahnia":[0,41,0.0],"tamiria":[0,17,0.0],"terykah":[0,7,0.0],"torah":[0,290,0.4925],"tyjanae":[0,163,0.4424],"tytiauna":[0,17,0.0],"vaidehi":[0,248,0.4789],"vianny":[0,166,0.444],"yasmean":[0,26,0.0],"zadia":[0,106,0.4051],"zauria":[0,81,0.0],"zikeya":[0,7,0.0],"aalexis":[0,20,0.0],"aalexus":[0,6,0.0],"aaya":[0,58,0.0],"adriahna":[0,74,0.0],"adriyana":[0,169,0.4456],"aireonna":[0,179,0.4506],"akala":[0,34,0.0],"akire":[0,80,0.0],"akirra":[0,71,0.0],"akyia":[0,81,0.0],"akylah":[0,201,0.4606],"alaija":[0,229,0.472],"alany":[0,769,0.5772],"alayza":[0,295,0.494],"aleayah":[0,124,0.4187],"alecsandra":[0,16,0.0],"alijha":[48,11,0.0],"alizandra":[0,70,0.0],"alkeria":[0,6,0.0],"allaura":[0,37,0.0],"allisandra":[0,53,0.0],"alysiana":[0,69,0.0],"ambrasia":[0,6,0.0],"anacarina":[0,6,0.0],"anaia":[0,751,0.5751],"anea":[0,89,0.0],"anevay":[0,405,0.5215],"angelamae":[0,11,0.0],"anjae":[0,6,0.0],"antoneshia":[0,6,0.0],"aquaria":[0,11,0.0],"areyana":[0,155,0.4381],"areyanna":[0,134,0.4254],"arkayla":[0,6,0.0],"armanii":[216,408,0.3655],"armonee":[6,125,0.4041],"arnela":[0,43,0.0],"arryanna":[0,166,0.444],"ashka":[0,32,0.0],"asija":[0,34,0.0],"astha":[0,97,0.0],"athziry":[0,370,0.5136],"aunesty":[0,308,0.4977],"aviona":[0,393,0.5189],"axia":[0,11,0.0],"ayliah":[0,60,0.0],"aylyn":[0,112,0.4098],"baileyann":[0,48,0.0],"bassheva":[0,104,0.4034],"bellanira":[0,6,0.0],"belsy":[0,13,0.0],"braily":[5,43,0.0],"brenlee":[0,672,0.5655],"brezhane":[0,6,0.0],"briajah":[0,12,0.0],"bristen":[15,22,0.0],"bryley":[67,339,0.4356],"caelynn":[0,593,0.5546],"camrynn":[36,663,0.5396],"caragh":[0,78,0.0],"caryna":[0,6,0.0],"casadi":[0,11,0.0],"cedriana":[0,32,0.0],"cendra":[0,11,0.0],"chaslynn":[0,34,0.0],"chesnie":[0,169,0.4456],"chylee":[0,40,0.0],"coralis":[0,25,0.0],"cossette":[0,46,0.0],"dahja":[0,29,0.0],"daijsha":[0,12,0.0],"daisjah":[0,15,0.0],"dajona":[0,12,0.0],"danaisa":[0,30,0.0],"darinesha":[0,6,0.0],"dawnte":[5,6,0.0],"daylie":[0,17,0.0],"deajane":[0,6,0.0],"dejiah":[0,36,0.0],"demri":[0,124,0.4187],"denira":[0,17,0.0],"deonshay":[0,6,0.0],"desirrae":[0,6,0.0],"deza":[0,6,0.0],"dezerai":[0,6,0.0],"deziah":[5,232,0.4649],"dezyre":[0,177,0.4496],"diangela":[0,6,0.0],"diyana":[0,139,0.4286],"dmia":[0,57,0.0],"eleeza":[0,6,0.0],"emalea":[0,118,0.4144],"emmamarie":[0,208,0.4636],"fahima":[0,201,0.4606],"gemise":[0,6,0.0],"genessee":[0,11,0.0],"halayna":[0,178,0.4501],"hamna":[0,153,0.4369],"haniya":[0,1152,0.6123],"hannahlee":[0,38,0.0],"hatice":[0,72,0.0],"havyn":[65,1126,0.5816],"himani":[0,253,0.4806],"hinako":[0,40,0.0],"humna":[0,101,0.4009],"immani":[0,18,0.0],"jadeyn":[43,692,0.5397],"jamaia":[0,69,0.0],"jaquaisha":[0,6,0.0],"jashala":[0,6,0.0],"jeilene":[0,16,0.0],"jenascia":[0,81,0.0],"jenesha":[0,6,0.0],"jeniah":[0,505,0.5407],"jermiya":[0,142,0.4305],"jerykah":[0,6,0.0],"joclynn":[0,161,0.4414],"joria":[0,11,0.0],"justess":[0,17,0.0],"jyasia":[0,96,0.0],"kadaisha":[0,37,0.0],"kaetlynn":[0,16,0.0],"kahler":[53,6,0.0],"kaliana":[0,885,0.5894],"kamaile":[0,210,0.4644],"kasity":[0,28,0.0],"kassidey":[0,28,0.0],"katasia":[0,11,0.0],"kaylae":[0,6,0.0],"kaylissa":[0,39,0.0],"keaisha":[0,66,0.0],"keniyah":[0,760,0.5762],"kennidi":[0,353,0.5096],"kerly":[0,134,0.4254],"keyleigh":[0,208,0.4636],"khadijat":[0,27,0.0],"kiaja":[0,64,0.0],"kijah":[0,49,0.0],"kirrah":[0,82,0.0],"klarrissa":[0,6,0.0],"kristyana":[0,115,0.4121],"kyiah":[0,434,0.5275],"kyondra":[0,6,0.0],"lachyna":[0,14,0.0],"ladazia":[0,6,0.0],"ladestiny":[0,32,0.0],"lamari":[422,216,0.371],"lamiyah":[0,878,0.5887],"lanautica":[0,49,0.0],"lanyia":[0,267,0.4853],"laurnea":[0,6,0.0],"llulisa":[0,13,0.0],"lujain":[0,504,0.5405],"lydea":[0,59,0.0],"macenzi":[0,6,0.0],"mackynzie":[0,383,0.5166],"maelin":[0,296,0.4943],"maitlin":[0,11,0.0],"makalee":[0,53,0.0],"maricelis":[0,6,0.0],"maripaz":[0,110,0.4083],"maryiah":[0,216,0.4669],"mauryn":[0,6,0.0],"mckaylan":[0,6,0.0],"meccah":[5,6,0.0],"melanny":[0,953,0.5958],"meyah":[0,523,0.5437],"micaelah":[0,17,0.0],"micailah":[0,13,0.0],"mikayli":[0,40,0.0],"mikiyah":[0,460,0.5326],"momina":[0,254,0.481],"myckala":[0,6,0.0],"mykalah":[0,145,0.4323],"myreya":[0,6,0.0],"nadjah":[0,22,0.0],"naiomy":[0,80,0.0],"nautia":[0,81,0.0],"nevine":[0,6,0.0],"neya":[0,282,0.49],"nijha":[0,43,0.0],"niveen":[0,46,0.0],"norely":[0,91,0.0],"nyjia":[0,28,0.0],"odalyz":[0,17,0.0],"olivya":[0,417,0.524],"onyekachi":[92,16,0.3464],"psalms":[116,120,0.2413],"raigen":[0,350,0.5088],"sarenity":[0,669,0.5651],"shaleya":[0,38,0.0],"shalma":[0,18,0.0],"shamiracle":[0,99,0.0],"sharnyce":[0,6,0.0],"shivonni":[0,6,0.0],"shyia":[0,63,0.0],"sidny":[0,57,0.0],"sieanna":[0,350,0.5088],"skylynne":[0,140,0.4292],"sowmya":[0,80,0.0],"surabhi":[0,189,0.4553],"syrah":[0,149,0.4346],"syriah":[0,752,0.5752],"tadasia":[0,12,0.0],"taijha":[0,19,0.0],"takerria":[0,23,0.0],"talexis":[0,6,0.0],"taraneka":[0,6,0.0],"temiloluwa":[147,239,0.3203],"teniola":[10,184,0.434],"teriah":[0,84,0.0],"tesneem":[0,94,0.0],"tesslyn":[0,82,0.0],"teuila":[0,98,0.0],"tiayana":[0,28,0.0],"titilope":[0,6,0.0],"tiyah":[0,89,0.0],"toriona":[0,30,0.0],"tykeira":[0,40,0.0],"tytiona":[0,58,0.0],"vaniah":[0,80,0.0],"veronyca":[0,6,0.0],"vibha":[0,582,0.553],"yelisa":[0,6,0.0],"yuneisy":[0,21,0.0],"zantasia":[0,6,0.0],"zosia":[0,476,0.5355],"zuha":[0,134,0.4254],"zyasia":[0,619,0.5583],"aalaiyah":[0,104,0.4034],"aalyssa":[0,115,0.4121],"abbegale":[0,82,0.0],"abbegayle":[0,73,0.0],"abreya":[0,5,0.0],"abriele":[0,5,0.0],"abriona":[0,20,0.0],"abrionna":[0,54,0.0],"abryana":[0,188,0.4548],"abygayle":[0,147,0.4335],"adejah":[0,30,0.0],"adekemi":[0,5,0.0],"adeli":[0,80,0.0],"adelisa":[0,211,0.4649],"adiah":[0,169,0.4456],"adianna":[0,278,0.4888],"adrianah":[0,245,0.4778],"ahmira":[0,176,0.4491],"ahyanna":[0,53,0.0],"aiah":[0,23,0.0],"ajacia":[0,5,0.0],"ajasia":[0,10,0.0],"ajua":[0,5,0.0],"alajia":[0,67,0.0],"alayiah":[0,704,0.5695],"aleksia":[0,223,0.4697],"alenis":[0,20,0.0],"alero":[0,5,0.0],"alexiah":[0,475,0.5353],"alexisia":[0,15,0.0],"alexisnicole":[0,5,0.0],"alexxes":[0,5,0.0],"aliciya":[0,20,0.0],"alyaa":[0,56,0.0],"alyicia":[0,5,0.0],"alysah":[0,169,0.4456],"alyxus":[0,5,0.0],"amarae":[0,50,0.0],"amare":[6091,380,0.7174],"ameris":[72,355,0.4374],"anagha":[0,690,0.5678],"analeah":[0,1541,0.6376],"analysse":[0,110,0.4083],"anayanci":[0,20,0.0],"andrenae":[0,5,0.0],"anee":[0,10,0.0],"anelly":[0,121,0.4166],"aneya":[0,249,0.4792],"anija":[0,330,0.5037],"anneleise":[0,40,0.0],"anniqua":[0,5,0.0],"anniyah":[0,812,0.5819],"anokhi":[0,112,0.4098],"anoosha":[0,30,0.0],"anushree":[0,121,0.4166],"apria":[0,16,0.0],"arayah":[0,1493,0.6348],"ardyn":[80,381,0.4403],"areya":[0,360,0.5113],"ariaunna":[0,126,0.4201],"arlyssa":[0,10,0.0],"armari":[115,45,0.3168],"arriyanna":[0,69,0.0],"asacia":[0,5,0.0],"ashai":[94,36,0.3057],"ashelynn":[0,94,0.0],"aubryn":[0,493,0.5386],"aulii":[0,42,0.0],"aunica":[0,114,0.4114],"autavia":[0,5,0.0],"aviendha":[0,205,0.4624],"avri":[36,555,0.5206],"ayleah":[0,74,0.0],"ayrial":[0,5,0.0],"azalya":[0,126,0.4201],"azsha":[0,5,0.0],"azza":[0,56,0.0],"baeli":[0,60,0.0],"baraa":[175,38,0.3826],"baye":[0,56,0.0],"beautiful":[0,1087,0.6072],"bianney":[0,87,0.0],"blessin":[25,512,0.5206],"braylynn":[178,1570,0.5825],"brayonna":[0,15,0.0],"breaja":[0,36,0.0],"breshai":[0,5,0.0],"breshuna":[0,5,0.0],"breze":[0,5,0.0],"brianamarie":[0,5,0.0],"brunna":[0,5,0.0],"bryleigh":[0,4584,0.7322],"bryssa":[0,203,0.4615],"caliya":[0,214,0.4661],"caprece":[0,5,0.0],"carmecia":[0,5,0.0],"catelynne":[0,5,0.0],"cateria":[0,32,0.0],"cathlina":[0,5,0.0],"chamique":[0,27,0.0],"chantrea":[0,5,0.0],"chasia":[0,5,0.0],"chastain":[5,5,0.0],"cheniya":[0,34,0.0],"chesni":[0,82,0.0],"chian":[0,5,0.0],"chrishea":[0,5,0.0],"christabella":[0,215,0.4665],"chyene":[0,5,0.0],"ciprianna":[0,5,0.0],"colee":[0,51,0.0],"curteria":[0,5,0.0],"cydny":[0,5,0.0],"cyenna":[0,115,0.4121],"cytlaly":[0,55,0.0],"daana":[0,92,0.0],"dailee":[0,192,0.4567],"daiona":[0,40,0.0],"dalyla":[0,597,0.5552],"danela":[0,12,0.0],"danye":[41,12,0.0],"dawnica":[0,5,0.0],"daycee":[0,52,0.0],"daysie":[0,113,0.4106],"dazhanae":[0,12,0.0],"deasja":[0,5,0.0],"deaysia":[0,65,0.0],"deepthi":[0,18,0.0],"dehja":[0,12,0.0],"dejhana":[0,5,0.0],"dekendra":[0,5,0.0],"demeria":[0,56,0.0],"denautica":[0,5,0.0],"deshuna":[0,5,0.0],"desseray":[0,10,0.0],"destinymarie":[0,21,0.0],"devrie":[0,16,0.0],"dezja":[0,11,0.0],"diba":[0,43,0.0],"dnesha":[0,5,0.0],"donnasia":[0,17,0.0],"dylanie":[0,107,0.4059],"dynah":[0,51,0.0],"elasia":[0,195,0.458],"elim":[316,200,0.3322],"elisbeth":[0,5,0.0],"ellayna":[0,237,0.4749],"elleana":[0,488,0.5377],"elliette":[0,1724,0.6473],"ellyson":[0,475,0.5353],"emelyne":[0,31,0.0],"emerly":[0,334,0.5047],"emillia":[0,341,0.5066],"emmoni":[0,10,0.0],"emori":[143,1251,0.5643],"eniyah":[0,865,0.5874],"eunji":[0,5,0.0],"evoni":[0,62,0.0],"faithlyn":[0,409,0.5223],"fantaysia":[0,5,0.0],"fatouma":[0,33,0.0],"florisel":[0,5,0.0],"gabryell":[0,5,0.0],"garima":[0,90,0.0],"gayathri":[0,133,0.4248],"gelila":[0,352,0.5093],"genesy":[0,45,0.0],"gessell":[0,5,0.0],"gianny":[225,255,0.2849],"gicell":[0,12,0.0],"giselly":[0,18,0.0],"govanna":[0,5,0.0],"griscelda":[0,5,0.0],"guisel":[0,5,0.0],"gwendalynn":[0,281,0.4897],"gyllian":[0,29,0.0],"hadasa":[0,527,0.5444],"haiven":[28,329,0.4705],"hajer":[0,149,0.4346],"halaina":[0,144,0.4317],"haleyann":[0,36,0.0],"haliyah":[0,145,0.4323],"hannahelizabeth":[0,5,0.0],"havan":[0,21,0.0],"healey":[0,5,0.0],"henessy":[0,162,0.4419],"ijah":[11,57,0.0],"ilani":[0,645,0.5619],"ilany":[0,85,0.0],"ilayda":[0,132,0.4241],"ilhan":[158,412,0.3984],"imany":[0,11,0.0],"indyah":[0,127,0.4208],"isbel":[0,22,0.0],"ishrat":[0,57,0.0],"iyahna":[0,165,0.4435],"jadaisha":[0,31,0.0],"jadesha":[0,5,0.0],"jahnaya":[0,120,0.4158],"jahnea":[0,46,0.0],"jahniya":[0,571,0.5513],"jahnya":[0,241,0.4764],"jakeela":[0,10,0.0],"jakelia":[0,5,0.0],"jakirah":[0,154,0.4375],"jakyia":[0,273,0.4872],"jalliyah":[0,54,0.0],"jameah":[0,189,0.4553],"jameece":[0,5,0.0],"jameira":[0,35,0.0],"janazia":[0,61,0.0],"japria":[0,5,0.0],"jashonna":[0,33,0.0],"jawaher":[0,22,0.0],"jaydyn":[1053,707,0.3884],"jaylea":[0,276,0.4882],"jayli":[0,543,0.547],"jaylie":[0,1008,0.6007],"jazilyn":[0,191,0.4562],"jazzminn":[0,5,0.0],"jenevy":[0,55,0.0],"jeniya":[0,403,0.5211],"jeryka":[0,5,0.0],"jhade":[0,193,0.4571],"jhena":[0,5,0.0],"jkayla":[0,103,0.4026],"johany":[50,100,0.2901],"joshanae":[0,5,0.0],"jozy":[19,107,0.3567],"juliessa":[0,33,0.0],"julissia":[0,48,0.0],"julyanna":[0,146,0.4329],"junae":[0,20,0.0],"kaede":[70,242,0.3869],"kaelly":[0,52,0.0],"kaiah":[0,939,0.5945],"kailynne":[0,240,0.476],"kainani":[0,32,0.0],"kaiyanna":[0,11,0.0],"kalayna":[0,66,0.0],"kaleyah":[0,561,0.5498],"kalyani":[0,343,0.5071],"kanah":[0,17,0.0],"kanaya":[0,244,0.4775],"kaneidra":[0,5,0.0],"kayonia":[0,5,0.0],"keann":[0,10,0.0],"keiani":[0,59,0.0],"keiann":[0,5,0.0],"kenidy":[0,106,0.4051],"kennay":[0,5,0.0],"keondrea":[0,5,0.0],"keshante":[0,5,0.0],"keshawndra":[0,5,0.0],"keyairah":[0,53,0.0],"keyiona":[0,10,0.0],"keylie":[0,299,0.4951],"keyshauna":[0,18,0.0],"khadra":[0,72,0.0],"khailyn":[0,57,0.0],"khaley":[0,22,0.0],"khamia":[0,87,0.0],"khaylah":[0,25,0.0],"khiabet":[0,23,0.0],"khrissa":[0,5,0.0],"khristiana":[0,31,0.0],"kiajah":[0,46,0.0],"kielee":[0,150,0.4352],"kiriana":[0,79,0.0],"kirina":[0,5,0.0],"kiyami":[0,5,0.0],"kourtne":[0,5,0.0],"krishell":[0,5,0.0],"kriya":[0,133,0.4248],"kyela":[0,58,0.0],"kymberleigh":[0,21,0.0],"kymberlynn":[0,56,0.0],"kynadee":[0,308,0.4977],"laelle":[0,167,0.4445],"laiba":[0,740,0.5738],"lakelyn":[37,2546,0.6726],"lakwanzaa":[0,5,0.0],"lamiah":[0,351,0.5091],"lamis":[0,147,0.4335],"laneya":[0,137,0.4273],"latayia":[0,5,0.0],"latela":[0,5,0.0],"laterrian":[65,5,0.0],"lebria":[0,5,0.0],"lemia":[0,26,0.0],"leyana":[0,396,0.5195],"lidiya":[0,134,0.4254],"lilee":[0,940,0.5946],"loranna":[0,34,0.0],"macailyn":[0,10,0.0],"macheala":[0,10,0.0],"maddalyn":[0,614,0.5576],"maddeline":[0,173,0.4476],"madellyn":[0,70,0.0],"magdali":[0,5,0.0],"maider":[0,5,0.0],"mailinh":[0,24,0.0],"maiti":[0,5,0.0],"maitte":[0,71,0.0],"makaelah":[0,103,0.4026],"makaia":[0,376,0.515],"makaliah":[0,50,0.0],"makylah":[0,543,0.547],"malaia":[0,394,0.5191],"marasia":[0,68,0.0],"marenna":[0,15,0.0],"marje":[0,5,0.0],"markasia":[0,66,0.0],"marlaysia":[0,217,0.4673],"mathison":[6,5,0.0],"maylea":[0,312,0.4988],"mckalee":[0,10,0.0],"mckayle":[0,22,0.0],"mckaylin":[0,75,0.0],"mekiah":[71,110,0.2744],"melly":[0,67,0.0],"menna":[0,214,0.4661],"merima":[0,17,0.0],"meshay":[0,5,0.0],"mguadalupe":[0,5,0.0],"mhairi":[0,5,0.0],"micaylah":[0,79,0.0],"michaia":[0,5,0.0],"mickalla":[0,5,0.0],"mierra":[0,11,0.0],"mieya":[0,5,0.0],"mikalla":[0,16,0.0],"mikaylin":[0,58,0.0],"mikelia":[0,5,0.0],"millennia":[0,59,0.0],"minahil":[0,341,0.5066],"minha":[0,776,0.578],"miricle":[0,55,0.0],"monira":[0,10,0.0],"morghann":[0,11,0.0],"mykaylah":[0,98,0.0],"mykenzi":[0,157,0.4392],"nadaja":[0,10,0.0],"najila":[0,5,0.0],"nakala":[0,36,0.0],"nanaama":[0,30,0.0],"natalynn":[0,497,0.5393],"naterria":[0,11,0.0],"natyia":[0,23,0.0],"naytasha":[0,5,0.0],"nevaeh":[427,96603,0.993],"nikkolette":[0,10,0.0],"nirel":[13,73,0.0],"niyanna":[0,310,0.4983],"niyla":[0,563,0.5501],"nydaisha":[0,5,0.0],"nyelle":[0,535,0.5457],"nyiah":[0,258,0.4823],"nyjai":[0,69,0.0],"nykerria":[0,80,0.0],"olliyah":[0,10,0.0],"omnia":[0,80,0.0],"ontaria":[0,5,0.0],"onyinyechi":[0,147,0.4335],"oonagh":[0,74,0.0],"orionna":[0,23,0.0],"osheana":[0,11,0.0],"paigelyn":[0,27,0.0],"pashence":[0,42,0.0],"patriciaanne":[0,5,0.0],"pavlina":[0,10,0.0],"paxtyn":[462,454,0.2988],"quashanna":[0,5,0.0],"quenia":[0,21,0.0],"raeli":[0,123,0.418],"raimey":[0,40,0.0],"ramani":[0,216,0.4669],"ranjani":[0,10,0.0],"rayvan":[0,18,0.0],"rechy":[0,146,0.4329],"remie":[16,529,0.5312],"rhealynn":[0,171,0.4466],"ridha":[42,49,0.0],"riel":[95,28,0.3228],"rielley":[0,5,0.0],"rodaisha":[0,5,0.0],"rodneysha":[0,5,0.0],"rokhaya":[0,134,0.4254],"ronyae":[0,17,0.0],"rosabella":[0,1167,0.6134],"ruqaiyah":[0,67,0.0],"sabriyya":[0,17,0.0],"sabryn":[0,164,0.443],"sadaya":[0,48,0.0],"sahvannah":[0,73,0.0],"saidi":[11,81,0.0],"saija":[0,46,0.0],"saliyah":[0,524,0.5439],"salsabil":[0,79,0.0],"samrah":[0,44,0.0],"saned":[6,5,0.0],"saniyah":[0,7122,0.7705],"santavia":[0,5,0.0],"sarahjoy":[0,10,0.0],"sarri":[0,5,0.0],"sati":[0,12,0.0],"satyn":[0,5,0.0],"semiyah":[0,148,0.4341],"serach":[0,5,0.0],"sereana":[0,10,0.0],"serissa":[0,5,0.0],"sevina":[0,23,0.0],"shahreen":[0,15,0.0],"shaili":[0,154,0.4375],"shalaka":[0,5,0.0],"shamsa":[0,30,0.0],"shanaiya":[0,90,0.0],"shaneshia":[0,5,0.0],"shantaja":[0,10,0.0],"shantwana":[0,5,0.0],"shaquarius":[0,5,0.0],"shardonay":[0,5,0.0],"sharik":[0,15,0.0],"shaynia":[0,22,0.0],"shaynie":[0,10,0.0],"shealin":[0,27,0.0],"sheccid":[0,430,0.5267],"sianne":[0,95,0.0],"sicilia":[0,320,0.501],"sierramarie":[0,5,0.0],"simron":[0,5,0.0],"skyleigh":[0,663,0.5643],"skylinn":[0,137,0.4273],"somya":[0,169,0.4456],"soumaya":[0,69,0.0],"stav":[19,21,0.0],"stevena":[0,5,0.0],"subria":[0,5,0.0],"summerlynn":[0,119,0.4151],"sumra":[0,5,0.0],"sunia":[6,12,0.0],"suvilla":[0,5,0.0],"syan":[57,103,0.2838],"syedah":[0,5,0.0],"syenna":[0,172,0.4471],"taahirah":[0,18,0.0],"taegen":[73,154,0.3197],"taeyah":[0,5,0.0],"taiah":[0,34,0.0],"taijae":[11,18,0.0],"tailah":[0,33,0.0],"tajea":[0,16,0.0],"takyia":[0,85,0.0],"talani":[0,268,0.4856],"taleyah":[0,370,0.5136],"talijah":[0,45,0.0],"tameera":[0,5,0.0],"tamron":[18,5,0.0],"tanah":[0,23,0.0],"tanaijah":[0,41,0.0],"tanautica":[0,14,0.0],"taneyah":[0,50,0.0],"tanjanae":[0,5,0.0],"taonna":[0,5,0.0],"taraja":[0,34,0.0],"tashya":[0,94,0.0],"tatem":[293,353,0.3071],"tatiyonna":[0,5,0.0],"tatumn":[5,367,0.5072],"tayjah":[0,104,0.4034],"teangela":[0,5,0.0],"teiya":[0,16,0.0],"teliyah":[0,213,0.4657],"terraneisha":[0,5,0.0],"thomara":[0,5,0.0],"tiala":[0,5,0.0],"tieranee":[0,5,0.0],"tiereney":[0,5,0.0],"timya":[0,383,0.5166],"tishae":[0,5,0.0],"tishera":[0,5,0.0],"tmia":[0,28,0.0],"tnia":[0,61,0.0],"tomea":[0,5,0.0],"totiyana":[0,5,0.0],"trakia":[0,5,0.0],"tresor":[20,10,0.0],"tyaisa":[0,26,0.0],"tynea":[0,17,0.0],"tyquashia":[0,16,0.0],"tytionna":[0,94,0.0],"tytiyana":[0,51,0.0],"vaishnavi":[0,936,0.5943],"xenna":[0,22,0.0],"xoe":[0,547,0.5476],"yamely":[0,56,0.0],"yenesis":[0,67,0.0],"yennhi":[0,15,0.0],"yerimar":[0,5,0.0],"yesel":[0,5,0.0],"yisela":[0,38,0.0],"yolisma":[0,5,0.0],"yosmely":[0,10,0.0],"yosseline":[0,40,0.0],"zahiyah":[0,15,0.0],"zainub":[0,40,0.0],"zakera":[0,21,0.0],"zakyra":[0,323,0.5018],"zanib":[0,50,0.0],"zarena":[0,29,0.0],"zarrin":[0,5,0.0],"zeidy":[0,131,0.4235],"zenzele":[0,11,0.0],"zhanasia":[0,5,0.0],"ziona":[0,576,0.5521],"zsofia":[0,142,0.4305],"zulmarie":[0,5,0.0],"zykerria":[0,259,0.4827],"cross":[1297,0,0.6226],"zeandre":[55,0,0.0],"livan":[282,0,0.49],"djimon":[255,11,0.4649],"kross":[1373,42,0.6114],"tanyon":[151,0,0.4358],"aayush":[1452,0,0.6324],"keeshon":[26,0,0.0],"corgan":[131,0,0.4235],"kristion":[176,5,0.4391],"makaveli":[136,0,0.4267],"mehki":[1503,0,0.6354],"tajay":[77,10,0.0],"brayten":[185,0,0.4534],"nanya":[16,0,0.0],"veer":[2672,0,0.6854],"versace":[20,6,0.0],"asbiel":[9,0,0.0],"brevan":[228,0,0.4716],"coltrane":[339,0,0.506],"daytwon":[9,0,0.0],"jamiroquai":[29,0,0.0],"kaedon":[659,0,0.5638],"rahat":[56,5,0.0],"reise":[122,119,0.2412],"taiga":[341,11,0.4934],"tsubasa":[39,0,0.0],"tyrec":[58,0,0.0],"wylan":[305,0,0.4969],"zequan":[26,0,0.0],"adarious":[29,0,0.0],"aldahir":[290,0,0.4925],"aldolfo":[18,0,0.0],"arhum":[224,0,0.47],"azende":[27,0,0.0],"boubacar":[501,0,0.54],"burhan":[262,0,0.4837],"daviontae":[36,0,0.0],"daymien":[433,0,0.5273],"draco":[1328,0,0.6246],"isiaah":[60,0,0.0],"izek":[447,0,0.5301],"izic":[177,0,0.4496],"jemarius":[13,0,0.0],"jlon":[67,0,0.0],"joeb":[41,0,0.0],"kailash":[327,0,0.5029],"kayn":[262,0,0.4837],"keishun":[35,0,0.0],"kobee":[260,47,0.4213],"kyzer":[1848,0,0.6533],"maquan":[13,0,0.0],"matayo":[73,0,0.0],"mukund":[166,0,0.444],"nathanyal":[134,0,0.4254],"nathanyel":[245,0,0.4778],"sarek":[13,0,0.0],"tayshaun":[1312,10,0.6195],"trew":[153,16,0.4034],"tyreck":[73,0,0.0],"veniamin":[89,0,0.0],"yaman":[323,0,0.5018],"adetayo":[17,0,0.0],"akshat":[414,0,0.5234],"alexsi":[7,0,0.0],"alondre":[28,0,0.0],"amitai":[179,0,0.4506],"ardit":[102,0,0.4017],"asadullah":[26,0,0.0],"asbel":[19,0,0.0],"babacar":[219,0,0.4681],"basit":[53,0,0.0],"blaik":[34,0,0.0],"braelon":[467,0,0.5339],"brevon":[96,0,0.0],"chevie":[17,75,0.0],"chibuike":[122,0,0.4173],"chrishun":[74,0,0.0],"cuinn":[76,0,0.0],"daelen":[328,0,0.5032],"datavious":[27,0,0.0],"davontre":[46,0,0.0],"dequavion":[130,0,0.4228],"dohnovan":[38,0,0.0],"domanik":[289,0,0.4922],"dontavion":[101,0,0.4009],"dontevius":[7,0,0.0],"endi":[107,25,0.3438],"hanad":[407,0,0.5219],"isack":[185,0,0.4534],"jahjuan":[7,0,0.0],"jahlon":[115,0,0.4121],"jakobie":[600,0,0.5556],"jaland":[24,0,0.0],"jalien":[76,5,0.0],"jaquarrius":[24,0,0.0],"jeferson":[413,0,0.5232],"jenry":[57,0,0.0],"jerwan":[7,0,0.0],"jewan":[17,0,0.0],"jontyler":[7,0,0.0],"jordaan":[25,0,0.0],"kaveon":[392,0,0.5187],"kayshaun":[95,0,0.0],"keyonis":[7,0,0.0],"keyshone":[7,0,0.0],"keyston":[108,0,0.4067],"kyden":[1610,23,0.6335],"lamontez":[42,0,0.0],"lexton":[448,0,0.5303],"macintyre":[75,0,0.0],"mataeo":[108,0,0.4067],"meelad":[14,0,0.0],"mekell":[30,0,0.0],"mikai":[739,15,0.564],"mohammadali":[83,0,0.0],"sakib":[65,0,0.0],"shakuan":[12,0,0.0],"shermar":[93,0,0.0],"tejan":[41,0,0.0],"trasean":[72,0,0.0],"tyrei":[22,0,0.0],"yafet":[429,0,0.5265],"yossef":[169,0,0.4456],"aaditya":[681,0,0.5666],"abass":[109,0,0.4075],"abdulhakeem":[72,0,0.0],"abhi":[291,0,0.4928],"abhijit":[47,0,0.0],"abraheem":[22,0,0.0],"adony":[21,0,0.0],"ahmaud":[311,0,0.4986],"aidyn":[4197,817,0.6195],"alaye":[11,5,0.0],"alecxis":[75,0,0.0],"aleister":[611,0,0.5572],"aljaquan":[6,0,0.0],"alontay":[11,0,0.0],"ameir":[806,0,0.5813],"ashaun":[187,0,0.4544],"avroham":[38,0,0.0],"brackston":[42,0,0.0],"brayde":[37,0,0.0],"breylin":[190,78,0.3443],"bryler":[276,0,0.4882],"calil":[213,0,0.4657],"celio":[67,0,0.0],"christianpaul":[13,0,0.0],"corleone":[175,0,0.4486],"corran":[160,0,0.4408],"cortaz":[12,0,0.0],"cylus":[869,0,0.5878],"cyron":[40,0,0.0],"dahndray":[13,0,0.0],"daivion":[303,0,0.4963],"dariun":[17,0,0.0],"daytwan":[6,0,0.0],"deagan":[1000,0,0.6],"deallen":[11,0,0.0],"deegan":[3379,12,0.7036],"deerick":[16,0,0.0],"dekwon":[11,0,0.0],"delijah":[47,42,0.0],"demoni":[404,140,0.4063],"demorea":[12,0,0.0],"denilson":[713,0,0.5706],"dezmund":[54,0,0.0],"diamontae":[23,0,0.0],"dilraj":[91,0,0.0],"drevin":[103,0,0.4026],"drevonn":[6,0,0.0],"dupri":[26,0,0.0],"eagan":[435,0,0.5277],"easten":[616,0,0.5579],"elhadj":[209,0,0.464],"elijahwan":[6,0,0.0],"eshaan":[1057,0,0.6048],"giulian":[217,0,0.4673],"harmeet":[6,11,0.0],"hasaun":[11,0,0.0],"issey":[17,0,0.0],"jacksen":[608,0,0.5568],"jaedan":[488,83,0.4712],"jahkai":[674,5,0.5622],"jahree":[71,0,0.0],"jakhai":[408,5,0.5169],"jakota":[145,0,0.4323],"jalun":[25,0,0.0],"jamesmatthew":[16,0,0.0],"jasir":[1679,0,0.645],"jasiri":[181,71,0.345],"jaykwon":[78,0,0.0],"jayqwan":[11,0,0.0],"jerimyah":[300,0,0.4954],"josaphat":[16,0,0.0],"joseluiz":[6,0,0.0],"jovell":[6,0,0.0],"kaemon":[336,0,0.5053],"kainon":[124,0,0.4187],"keeron":[11,0,0.0],"kemoni":[380,420,0.3048],"kemonta":[45,0,0.0],"kevondre":[21,0,0.0],"kevontay":[75,0,0.0],"khalel":[281,0,0.4897],"khalill":[6,0,0.0],"kirubel":[239,0,0.4757],"koleman":[240,0,0.476],"kyris":[83,0,0.0],"latrevious":[21,0,0.0],"levid":[6,0,0.0],"lorcan":[252,0,0.4803],"maguire":[577,108,0.4777],"mailk":[6,0,0.0],"malikai":[1954,5,0.6567],"malyke":[22,0,0.0],"manase":[53,0,0.0],"markeice":[16,0,0.0],"markeon":[6,0,0.0],"marquavion":[163,0,0.4424],"marqueese":[6,0,0.0],"martarius":[12,0,0.0],"martay":[16,0,0.0],"masiah":[1142,122,0.5605],"metin":[35,0,0.0],"molique":[6,0,0.0],"nation":[401,68,0.4568],"nyjee":[12,0,0.0],"osirus":[69,0,0.0],"oussama":[6,0,0.0],"quinterrious":[12,0,0.0],"ryuichi":[11,0,0.0],"saabir":[160,0,0.4408],"sadonte":[6,0,0.0],"savante":[17,0,0.0],"scyler":[12,5,0.0],"senad":[36,0,0.0],"shravan":[337,0,0.5055],"sota":[199,0,0.4598],"tabish":[16,0,0.0],"taejon":[184,0,0.453],"thorsen":[55,0,0.0],"thristen":[6,0,0.0],"traequan":[6,0,0.0],"traeton":[161,0,0.4414],"trekwon":[11,0,0.0],"treylin":[149,0,0.4346],"treyquan":[43,0,0.0],"trinten":[112,0,0.4098],"tryson":[126,0,0.4201],"trystian":[167,0,0.4445],"tyaire":[328,5,0.4969],"tyquail":[16,0,0.0],"tyquarius":[112,0,0.4098],"tyreq":[39,0,0.0],"valeriy":[21,0,0.0],"vanden":[154,0,0.4375],"vershaun":[6,0,0.0],"vitor":[158,0,0.4397],"xane":[515,0,0.5424],"xian":[356,87,0.4253],"xsavier":[74,0,0.0],"zalen":[464,0,0.5333],"zandre":[37,0,0.0],"zaveon":[304,0,0.4966],"zuhayr":[204,0,0.4619],"zurich":[134,0,0.4254],"aatif":[10,0,0.0],"abdi":[334,10,0.4926],"abdirashid":[40,0,0.0],"abdulazeez":[35,0,0.0],"abdulhadi":[207,0,0.4632],"ahmadou":[175,0,0.4486],"aisea":[122,0,0.4173],"akashdeep":[65,0,0.0],"aleric":[197,0,0.4589],"alieu":[225,0,0.4704],"alyjah":[333,50,0.4492],"amaad":[72,0,0.0],"amisadai":[5,134,0.4132],"ammaar":[239,0,0.4757],"amram":[127,0,0.4208],"amron":[92,0,0.0],"andarius":[29,0,0.0],"anferne":[5,0,0.0],"aniruddha":[26,0,0.0],"anthonyjohn":[36,0,0.0],"antonyio":[16,0,0.0],"arbaz":[25,0,0.0],"armanni":[76,44,0.2634],"armante":[15,0,0.0],"arshawn":[113,0,0.4106],"arzel":[10,0,0.0],"asah":[148,0,0.4341],"aseante":[5,0,0.0],"aukai":[93,0,0.0],"azaan":[1208,0,0.6164],"badr":[271,0,0.4866],"bailen":[96,0,0.0],"balraj":[62,0,0.0],"bane":[1021,0,0.6018],"bowin":[37,0,0.0],"branco":[10,0,0.0],"brandonray":[5,0,0.0],"brantson":[54,0,0.0],"brevyn":[206,11,0.4436],"breylon":[320,0,0.501],"bricker":[20,0,0.0],"brik":[44,0,0.0],"brodin":[132,0,0.4241],"byrce":[17,0,0.0],"cadan":[322,0,0.5016],"cahill":[16,0,0.0],"cainin":[20,0,0.0],"camdyn":[3808,2794,0.4406],"cassian":[2256,14,0.6671],"caysen":[2248,54,0.6566],"ceandre":[5,0,0.0],"chandan":[54,0,0.0],"channce":[22,0,0.0],"chardarius":[5,0,0.0],"chiemeka":[32,0,0.0],"chinonso":[108,0,0.4067],"chukwuebuka":[159,0,0.4403],"cianan":[30,0,0.0],"cohlton":[10,0,0.0],"coreon":[89,0,0.0],"corwynn":[5,0,0.0],"cove":[1050,372,0.4656],"cyris":[346,0,0.5078],"daanyal":[16,0,0.0],"dadrien":[31,0,0.0],"daejohn":[29,0,0.0],"daijour":[5,0,0.0],"dailan":[150,0,0.4352],"daiton":[173,0,0.4476],"daiyaan":[26,0,0.0],"dakotajames":[5,0,0.0],"damarquez":[5,0,0.0],"damontra":[15,0,0.0],"dashown":[5,0,0.0],"datreon":[5,0,0.0],"davares":[5,0,0.0],"daviyon":[253,0,0.4806],"deago":[92,0,0.0],"deaquan":[13,0,0.0],"delaun":[5,0,0.0],"demetrion":[92,0,0.0],"denarrius":[5,0,0.0],"desjon":[5,0,0.0],"deviontae":[5,0,0.0],"devontra":[5,0,0.0],"devren":[22,0,0.0],"deyante":[5,0,0.0],"dhruva":[684,0,0.567],"dodger":[145,0,0.4323],"domunique":[5,0,0.0],"dquarious":[5,0,0.0],"dremond":[11,0,0.0],"dymir":[149,0,0.4346],"eammon":[11,0,0.0],"ederick":[5,0,0.0],"eliajah":[52,0,0.0],"elijaha":[38,0,0.0],"elijawon":[5,0,0.0],"elioenai":[71,0,0.0],"emrys":[1151,309,0.4989],"erivan":[5,0,0.0],"evrett":[189,0,0.4553],"farrukh":[5,0,0.0],"fatai":[5,0,0.0],"gabrail":[5,0,0.0],"garak":[5,0,0.0],"garius":[5,0,0.0],"garyon":[12,0,0.0],"gavynn":[223,0,0.4697],"geffen":[31,12,0.0],"genuine":[37,5,0.0],"griffyn":[450,58,0.4794],"hansley":[11,0,0.0],"hasib":[51,0,0.0],"haydan":[298,97,0.3918],"huascar":[5,0,0.0],"hunner":[428,0,0.5263],"imraan":[256,0,0.4816],"jabraylon":[52,0,0.0],"jackhenry":[41,0,0.0],"jadarrian":[21,0,0.0],"jahaun":[52,0,0.0],"jahquel":[29,0,0.0],"jakendrick":[31,0,0.0],"jakory":[124,0,0.4187],"jameir":[692,0,0.568],"jamik":[10,0,0.0],"jamori":[241,0,0.4764],"jamyl":[15,0,0.0],"jaqualin":[82,0,0.0],"jartavious":[74,0,0.0],"jasonanthony":[5,0,0.0],"javeion":[253,0,0.4806],"javierjr":[5,0,0.0],"jawone":[21,0,0.0],"jaxton":[10617,0,0.8052],"jaxx":[3085,32,0.6916],"jaziah":[1328,954,0.3909],"jenri":[24,0,0.0],"jesua":[107,0,0.4059],"jevion":[45,0,0.0],"jhared":[69,0,0.0],"joangel":[204,0,0.4619],"johnnel":[10,0,0.0],"johnnyangel":[10,0,0.0],"johntez":[22,0,0.0],"jonis":[51,0,0.0],"josealejandro":[39,0,0.0],"joshuajoseph":[5,0,0.0],"julen":[338,0,0.5058],"juniel":[238,0,0.4753],"jyaire":[592,0,0.5545],"kahmari":[437,135,0.4213],"kalvyn":[126,0,0.4201],"kamdon":[546,0,0.5474],"kardale":[5,0,0.0],"kayd":[192,0,0.4567],"kaylum":[149,0,0.4346],"keaghan":[304,95,0.3963],"keiwon":[10,0,0.0],"kejohn":[5,0,0.0],"kelsen":[119,0,0.4151],"kelvonte":[11,0,0.0],"kenet":[23,0,0.0],"kenterious":[5,0,0.0],"kepler":[416,6,0.5176],"keson":[36,0,0.0],"keylen":[329,255,0.3117],"keynen":[22,0,0.0],"keyuntae":[11,0,0.0],"khizar":[174,0,0.4481],"kinan":[339,0,0.506],"kintrell":[5,0,0.0],"kirill":[475,0,0.5353],"koalii":[22,0,0.0],"kohlten":[22,0,0.0],"kolade":[13,0,0.0],"kortlin":[10,0,0.0],"kreed":[1218,5,0.615],"kriztian":[5,0,0.0],"kurtlin":[5,0,0.0],"kyuss":[92,0,0.0],"lakedrick":[5,0,0.0],"lamontray":[5,0,0.0],"larion":[10,0,0.0],"lavarious":[24,0,0.0],"lawrenzo":[16,0,0.0],"leontre":[5,0,0.0],"lliam":[484,0,0.537],"lorrenzo":[10,0,0.0],"luisandro":[10,0,0.0],"luiseduardo":[45,0,0.0],"luismario":[63,0,0.0],"macrae":[165,0,0.4435],"mahari":[294,366,0.3127],"makade":[31,0,0.0],"malikk":[37,0,0.0],"mallik":[24,0,0.0],"mamady":[60,0,0.0],"markeas":[5,0,0.0],"markease":[10,0,0.0],"marquas":[5,0,0.0],"masaya":[22,0,0.0],"mathiew":[10,0,0.0],"mattheau":[21,0,0.0],"maui":[249,121,0.3457],"maximus":[33403,17,0.9043],"mckail":[5,0,0.0],"mckane":[17,0,0.0],"mckyle":[62,0,0.0],"mekal":[17,0,0.0],"michiah":[66,88,0.25],"miguelito":[40,0,0.0],"mikee":[5,0,0.0],"mit":[46,0,0.0],"mobeen":[21,0,0.0],"mohammedali":[82,0,0.0],"mykail":[59,0,0.0],"myke":[68,0,0.0],"naftula":[172,0,0.4471],"nas":[233,0,0.4735],"nasean":[162,0,0.4419],"nasif":[62,0,0.0],"nathnael":[61,0,0.0],"naul":[5,0,0.0],"naven":[122,0,0.4173],"nazaire":[216,0,0.4669],"nishad":[36,0,0.0],"nnanna":[5,0,0.0],"nygee":[10,0,0.0],"nyheim":[126,0,0.4201],"nyjel":[33,0,0.0],"nykee":[10,0,0.0],"nykeem":[92,0,0.0],"nyshawn":[201,0,0.4606],"obada":[32,0,0.0],"octavien":[23,0,0.0],"orbelin":[27,0,0.0],"orhan":[385,0,0.5171],"owyn":[759,78,0.5301],"peniel":[163,166,0.254],"phinehas":[531,0,0.545],"poojan":[5,0,0.0],"quantrez":[5,0,0.0],"quaterius":[5,0,0.0],"quaterrius":[5,0,0.0],"quesean":[5,0,0.0],"raejon":[58,0,0.0],"raquane":[5,0,0.0],"remmy":[619,290,0.4029],"ripken":[403,0,0.5211],"ritter":[122,0,0.4173],"roey":[99,0,0.0],"romelio":[45,0,0.0],"ryanchristian":[5,0,0.0],"ryou":[5,0,0.0],"saban":[145,0,0.4323],"saben":[103,0,0.4026],"sadique":[5,0,0.0],"sailor":[646,3396,0.606],"salatiel":[39,0,0.0],"samba":[167,0,0.4445],"satnam":[5,0,0.0],"sayon":[56,0,0.0],"seger":[181,0,0.4515],"set":[27,0,0.0],"shadarian":[5,0,0.0],"shakwon":[10,0,0.0],"shamori":[5,0,0.0],"shanquan":[5,0,0.0],"shehab":[70,0,0.0],"sidarth":[22,0,0.0],"stephvon":[5,0,0.0],"tairon":[17,0,0.0],"taishon":[11,0,0.0],"taiyo":[298,0,0.4948],"takwon":[11,0,0.0],"taleek":[12,0,0.0],"tamaj":[103,0,0.4026],"taqee":[10,0,0.0],"tazman":[10,0,0.0],"terriek":[5,0,0.0],"thristian":[17,0,0.0],"tiano":[16,0,0.0],"tilor":[10,0,0.0],"timone":[5,0,0.0],"tirzo":[12,0,0.0],"tiyler":[16,0,0.0],"tobijah":[16,0,0.0],"tracen":[521,0,0.5434],"tradarrius":[16,0,0.0],"traevion":[114,0,0.4114],"trayc":[5,0,0.0],"trayvis":[10,0,0.0],"treanthony":[20,0,0.0],"trentavious":[5,0,0.0],"trevhon":[5,0,0.0],"trevorjames":[5,0,0.0],"tsai":[10,0,0.0],"tyion":[364,0,0.5122],"tyjai":[116,92,0.2586],"tyji":[5,0,0.0],"tykell":[38,0,0.0],"tymetrius":[5,0,0.0],"tyrion":[741,7,0.5694],"tyrius":[11,0,0.0],"ulysis":[22,0,0.0],"vedant":[1287,0,0.6219],"vincenzio":[5,0,0.0],"vishan":[60,0,0.0],"whitten":[473,22,0.515],"wilhem":[10,0,0.0],"witt":[300,0,0.4954],"wykeem":[5,0,0.0],"wyle":[5,0,0.0],"xayvion":[455,0,0.5316],"yengkong":[45,0,0.0],"yukon":[22,0,0.0],"yunis":[406,0,0.5217],"zacharius":[148,0,0.4341],"zadarius":[48,0,0.0],"zaylan":[466,0,0.5337],"zebidiah":[5,0,0.0],"zhaire":[333,0,0.5045],"zian":[838,152,0.5071],"ziar":[15,0,0.0],"zohar":[110,191,0.3146],"naidelyn":[0,723,0.5718],"ariyon":[285,178,0.3282],"adamaris":[0,3173,0.7003],"adamari":[0,2011,0.6607],"inaara":[0,115,0.4121],"syann":[0,239,0.4757],"aeris":[71,1797,0.6294],"arieon":[139,66,0.3135],"aurion":[42,30,0.0],"rosicela":[0,24,0.0],"beyonce":[0,1970,0.6589],"kinlee":[0,2609,0.6833],"taiz":[0,98,0.0],"damya":[0,1441,0.6317],"landrie":[0,1091,0.6076],"makyah":[43,770,0.5512],"mulan":[5,671,0.5618],"adamary":[0,674,0.5657],"ariyah":[0,10276,0.8024],"areyon":[15,33,0.0],"bg":[0,55,0.0],"irelynn":[0,1698,0.646],"rosisela":[0,14,0.0],"gesselle":[0,96,0.0],"kenli":[0,601,0.5558],"aniston":[24,2525,0.6749],"aryah":[0,2062,0.6629],"damaya":[0,541,0.5466],"emyle":[0,29,0.0],"kamrynn":[40,920,0.5716],"miyanna":[0,515,0.5424],"naydelin":[0,1099,0.6082],"sariyah":[0,6026,0.756],"taea":[0,52,0.0],"anabeth":[0,202,0.4611],"arreon":[16,24,0.0],"daleah":[0,343,0.5071],"deliyah":[0,338,0.5058],"janaiya":[0,565,0.5504],"jewelianna":[0,122,0.4173],"mahlet":[0,226,0.4708],"mekhia":[0,247,0.4785],"nyela":[0,287,0.4916],"adamarys":[0,206,0.4628],"aniaya":[0,329,0.5034],"arryana":[0,140,0.4292],"clodagh":[0,200,0.4602],"demya":[0,767,0.577],"emya":[0,511,0.5417],"gyselle":[0,188,0.4548],"iyanla":[0,245,0.4778],"jaeline":[0,69,0.0],"makinzy":[0,183,0.4525],"tahjanae":[0,78,0.0],"taleaha":[0,37,0.0],"taye":[571,48,0.515],"tyrianna":[0,267,0.4853],"zainah":[0,258,0.4823],"aastha":[0,266,0.485],"alliana":[0,749,0.5749],"amyah":[0,3253,0.7025],"anaiyah":[0,1585,0.64],"areion":[10,31,0.0],"atiyya":[0,9,0.0],"avianne":[0,83,0.0],"breashia":[0,30,0.0],"cailan":[174,71,0.3394],"cieanna":[0,75,0.0],"dejanelle":[0,21,0.0],"elizabethmarie":[0,34,0.0],"emmah":[0,951,0.5956],"faduma":[0,246,0.4782],"hedaya":[0,91,0.0],"jabreena":[0,9,0.0],"janyla":[0,2171,0.6673],"jeweliana":[0,299,0.4951],"juliya":[0,200,0.4602],"kynsie":[0,97,0.0],"makendra":[0,94,0.0],"malan":[5,200,0.4511],"mirela":[0,162,0.4419],"naibe":[0,22,0.0],"nekaya":[0,9,0.0],"nysa":[0,373,0.5143],"rahneisha":[0,9,0.0],"rosaicela":[0,16,0.0],"sabriah":[0,87,0.0],"shahad":[5,264,0.4769],"sitlali":[0,139,0.4286],"tayha":[0,15,0.0],"teliea":[0,9,0.0],"tigerlily":[0,349,0.5086],"tyreanna":[0,87,0.0],"yalimar":[0,9,0.0],"yareth":[375,249,0.336],"zakeia":[0,9,0.0],"zamia":[0,350,0.5088],"aaniyah":[0,1378,0.6278],"aleycia":[0,33,0.0],"amarii":[757,556,0.3596],"antanasia":[0,74,0.0],"ariyonna":[0,534,0.5455],"ashyia":[0,141,0.4298],"betzaira":[0,89,0.0],"caetlyn":[0,21,0.0],"dahlila":[0,293,0.4934],"desjah":[0,13,0.0],"diavian":[5,175,0.4385],"eanna":[0,41,0.0],"giannie":[0,141,0.4298],"haddy":[5,167,0.4341],"hailyn":[0,533,0.5453],"harkiran":[0,20,0.0],"inara":[0,2341,0.6739],"izzabella":[0,2469,0.6785],"jacaria":[0,79,0.0],"jadasia":[0,82,0.0],"jeilyn":[0,385,0.5171],"jissell":[0,74,0.0],"juelle":[21,95,0.3381],"jylene":[0,23,0.0],"kada":[0,133,0.4248],"kadijatu":[0,58,0.0],"kamiryn":[0,63,0.0],"kilea":[0,79,0.0],"landree":[11,907,0.5855],"lasette":[0,8,0.0],"leahna":[0,226,0.4708],"makeyla":[0,377,0.5153],"makilah":[0,150,0.4352],"maniyah":[0,691,0.5679],"maysun":[5,96,0.381],"melat":[0,242,0.4768],"meraiah":[0,38,0.0],"mikara":[0,20,0.0],"montera":[0,8,0.0],"muskaan":[0,320,0.501],"myja":[0,21,0.0],"naliyah":[0,1262,0.6202],"nayarit":[0,14,0.0],"patzy":[0,40,0.0],"peytan":[0,287,0.4916],"rylyn":[205,674,0.4515],"samariah":[0,339,0.506],"tamaia":[0,35,0.0],"taviana":[0,118,0.4144],"tayiah":[0,39,0.0],"tazaria":[0,92,0.0],"tresure":[0,59,0.0],"yatziri":[0,1390,0.6286],"ysabela":[0,129,0.4221],"zakya":[0,199,0.4598],"zamya":[0,1185,0.6147],"zikeria":[0,88,0.0],"zyanna":[0,774,0.5777],"addalyn":[0,3002,0.6955],"alayja":[0,365,0.5125],"aleksandria":[0,34,0.0],"aliaya":[0,30,0.0],"allysan":[0,18,0.0],"alonnie":[0,166,0.444],"anabeli":[0,7,0.0],"atziry":[0,506,0.5408],"autym":[0,74,0.0],"averianna":[0,225,0.4704],"azana":[0,186,0.4539],"brilyn":[60,363,0.4508],"ceana":[0,294,0.4937],"cianne":[0,46,0.0],"dayshawna":[0,22,0.0],"dazza":[0,7,0.0],"deasiah":[0,89,0.0],"deaveon":[69,30,0.0],"dkayla":[0,54,0.0],"eleesa":[0,23,0.0],"emahni":[0,50,0.0],"emaya":[0,350,0.5088],"emersen":[126,1002,0.5423],"emrie":[5,1616,0.64],"etana":[0,137,0.4273],"fatim":[0,93,0.0],"fryda":[0,137,0.4273],"gargi":[0,190,0.4558],"giavana":[0,519,0.543],"gilian":[0,14,0.0],"haeven":[16,161,0.409],"hannahrose":[0,61,0.0],"isys":[0,324,0.5021],"jahnell":[0,24,0.0],"jahnessa":[0,111,0.4091],"jaidin":[317,189,0.3388],"jailee":[0,769,0.5772],"jakyah":[0,289,0.4922],"jakyria":[0,90,0.0],"jaleya":[0,315,0.4997],"jamaicia":[0,7,0.0],"jaymesha":[0,7,0.0],"jeidi":[0,87,0.0],"jmya":[0,225,0.4704],"jolesha":[0,7,0.0],"jolyssa":[0,124,0.4187],"jurnie":[0,264,0.4843],"kailly":[0,89,0.0],"kalasia":[0,104,0.4034],"kalayah":[0,1313,0.6237],"kamyiah":[0,366,0.5127],"kanija":[0,108,0.4067],"kassedy":[0,21,0.0],"kiuna":[0,7,0.0],"kloee":[0,710,0.5703],"koyasha":[0,7,0.0],"kriselle":[0,23,0.0],"kynnedy":[0,488,0.5377],"kytzia":[0,83,0.0],"ladaesha":[0,12,0.0],"lanaja":[0,58,0.0],"lelandra":[0,7,0.0],"madysson":[0,48,0.0],"makalynn":[0,152,0.4364],"makinzi":[0,195,0.458],"maleisha":[0,7,0.0],"mauren":[0,26,0.0],"meshalia":[0,7,0.0],"myaisha":[0,28,0.0],"nyteria":[0,18,0.0],"onesty":[0,181,0.4515],"pacey":[696,306,0.4169],"phajja":[0,7,0.0],"quynn":[0,235,0.4742],"ramisa":[0,85,0.0],"reeya":[0,256,0.4816],"rosaysela":[0,7,0.0],"rylei":[68,1277,0.5941],"samyah":[0,789,0.5794],"selest":[0,29,0.0],"sevannah":[0,98,0.0],"shameah":[0,7,0.0],"sheylin":[0,164,0.443],"shylin":[0,115,0.4121],"skyelyn":[0,116,0.4129],"sonje":[0,7,0.0],"soteria":[0,63,0.0],"tahya":[0,53,0.0],"tatelyn":[0,82,0.0],"tatym":[10,288,0.4782],"tatyonna":[0,20,0.0],"tautiana":[0,7,0.0],"taytem":[16,205,0.4349],"teaonna":[0,14,0.0],"timiyah":[0,202,0.4611],"trayona":[0,7,0.0],"tyania":[0,18,0.0],"tyriel":[0,33,0.0],"tyteonna":[0,20,0.0],"urmi":[0,46,0.0],"vyktoria":[0,31,0.0],"yailine":[0,72,0.0],"yekaterina":[0,90,0.0],"zenya":[0,185,0.4534],"zianne":[0,75,0.0],"aajah":[0,29,0.0],"aayana":[0,159,0.4403],"abbigaile":[0,91,0.0],"abbygael":[0,70,0.0],"abida":[0,56,0.0],"adaija":[0,34,0.0],"addysen":[0,1121,0.6099],"adelin":[0,741,0.574],"adrinna":[0,35,0.0],"ahava":[0,408,0.5221],"ahjanay":[0,17,0.0],"ahniya":[0,347,0.5081],"ahriana":[0,176,0.4491],"aiana":[0,221,0.4689],"aianna":[0,85,0.0],"ailynn":[0,607,0.5566],"ainsleigh":[0,607,0.5566],"aleccia":[0,6,0.0],"alecsa":[0,11,0.0],"alexandriah":[0,21,0.0],"alisi":[0,94,0.0],"aliz":[0,292,0.4931],"alizette":[0,21,0.0],"allyssah":[0,11,0.0],"alye":[0,6,0.0],"alyzah":[0,380,0.516],"amariana":[0,1053,0.6045],"anae":[0,97,0.0],"analys":[0,76,0.0],"anayelli":[0,66,0.0],"angellique":[0,6,0.0],"anikah":[0,141,0.4298],"annagail":[0,30,0.0],"annalisia":[0,201,0.4606],"annalycia":[0,91,0.0],"annslee":[0,513,0.542],"anuoluwapo":[0,99,0.0],"anwyn":[0,100,0.4],"anyla":[0,2663,0.6851],"ariagna":[0,17,0.0],"arione":[0,6,0.0],"aryiah":[0,669,0.5651],"asianae":[0,82,0.0],"astraea":[0,586,0.5536],"ataja":[0,6,0.0],"automn":[0,6,0.0],"ayanni":[0,175,0.4486],"ayari":[0,394,0.5191],"ayrion":[6,6,0.0],"bailly":[0,20,0.0],"breahanna":[0,6,0.0],"breelynn":[0,510,0.5415],"brenay":[0,38,0.0],"brylea":[0,233,0.4735],"caiya":[0,433,0.5273],"catriana":[0,6,0.0],"cedria":[0,38,0.0],"celyn":[0,12,0.0],"cerys":[0,214,0.4661],"chaniyah":[0,303,0.4963],"christiona":[0,108,0.4067],"cionne":[0,6,0.0],"cyani":[0,78,0.0],"cyonna":[0,33,0.0],"daimarely":[0,6,0.0],"damiah":[0,400,0.5204],"damiyah":[0,1164,0.6132],"dariona":[0,155,0.4381],"darnasia":[0,27,0.0],"demeri":[0,6,0.0],"devonee":[0,17,0.0],"eily":[0,424,0.5255],"elyanna":[0,1076,0.6064],"embrya":[0,11,0.0],"emera":[0,107,0.4059],"emersyn":[291,20123,0.8497],"envyi":[0,6,0.0],"eriyana":[0,178,0.4501],"esabella":[0,714,0.5707],"esmerlda":[0,6,0.0],"fartun":[0,179,0.4506],"fredasia":[0,6,0.0],"giamarie":[0,61,0.0],"haleah":[0,41,0.0],"hannahjo":[0,6,0.0],"haylin":[0,379,0.5157],"huntyr":[26,53,0.0],"ibtisam":[0,208,0.4636],"isaly":[0,169,0.4456],"itaty":[0,39,0.0],"jache":[0,6,0.0],"jaedah":[0,147,0.4335],"jahla":[0,53,0.0],"jailinne":[0,6,0.0],"jakaiya":[0,162,0.4419],"jakirra":[0,31,0.0],"jalaysia":[0,520,0.5432],"jaleia":[0,287,0.4916],"jamiaya":[0,68,0.0],"janaisa":[0,73,0.0],"janaja":[0,25,0.0],"jashelle":[0,6,0.0],"jassmen":[0,6,0.0],"jaylean":[0,325,0.5024],"jayleigh":[0,1512,0.6359],"jayley":[0,297,0.4946],"jaylisa":[0,29,0.0],"jazlynne":[0,345,0.5076],"jemya":[0,109,0.4075],"jerriana":[0,6,0.0],"jewlia":[0,32,0.0],"johniesha":[0,6,0.0],"jordyan":[23,77,0.308],"kaidyn":[2671,1309,0.4832],"kallysta":[0,53,0.0],"kanea":[0,6,0.0],"kassadie":[0,100,0.4],"katalyna":[0,623,0.5589],"keaundrea":[0,6,0.0],"kemya":[0,605,0.5564],"kenijah":[0,113,0.4106],"kenlie":[0,585,0.5534],"kentasia":[0,25,0.0],"keonni":[0,16,0.0],"korianna":[0,113,0.4106],"kyila":[0,26,0.0],"kynadi":[0,272,0.4869],"kytana":[0,11,0.0],"laurn":[0,21,0.0],"lexsis":[0,6,0.0],"lilja":[0,261,0.4833],"lillee":[0,1070,0.6059],"lyndzy":[0,6,0.0],"lyta":[0,11,0.0],"maat":[0,186,0.4539],"macaylah":[0,47,0.0],"madlynn":[0,171,0.4466],"maikayla":[0,64,0.0],"majda":[0,11,0.0],"makaylla":[0,57,0.0],"makensi":[0,52,0.0],"malyah":[0,294,0.4937],"marren":[0,114,0.4114],"mehar":[41,564,0.5186],"mercedeez":[0,20,0.0],"miquesha":[0,6,0.0],"mishaal":[0,77,0.0],"mishaila":[0,6,0.0],"naadirah":[0,11,0.0],"nadalee":[0,126,0.4201],"natae":[0,19,0.0],"nataysia":[0,28,0.0],"nathalya":[0,238,0.4753],"nave":[0,6,0.0],"nayia":[0,31,0.0],"nazhae":[0,6,0.0],"nieya":[0,17,0.0],"nin":[0,6,0.0],"nygia":[0,6,0.0],"nykera":[0,43,0.0],"nyrobi":[0,138,0.428],"olesya":[0,113,0.4106],"oliviagrace":[0,222,0.4693],"oyindamola":[5,89,0.0],"paria":[0,6,0.0],"peta":[0,6,0.0],"rafa":[121,67,0.2927],"raiah":[0,66,0.0],"raiya":[0,663,0.5643],"rajaa":[0,17,0.0],"rasika":[0,32,0.0],"raymi":[19,16,0.0],"raynique":[0,11,0.0],"roesha":[0,6,0.0],"rreon":[0,6,0.0],"ryia":[0,54,0.0],"saharrah":[0,21,0.0],"samhita":[0,401,0.5206],"samiksha":[0,174,0.4481],"sarenna":[0,46,0.0],"sasia":[0,6,0.0],"seila":[0,74,0.0],"shacori":[0,6,0.0],"shadya":[0,6,0.0],"shaileen":[0,29,0.0],"shamael":[0,6,0.0],"shayane":[0,6,0.0],"siane":[0,23,0.0],"siann":[0,52,0.0],"siany":[0,51,0.0],"soline":[0,36,0.0],"sriya":[0,622,0.5588],"surbhi":[0,27,0.0],"taaliyah":[0,269,0.486],"tahjanay":[0,6,0.0],"tayzha":[0,20,0.0],"teaja":[0,33,0.0],"terrielle":[0,17,0.0],"tremia":[0,21,0.0],"tsion":[37,349,0.4677],"tyleesha":[0,6,0.0],"tyyana":[0,29,0.0],"ulani":[0,604,0.5562],"vrinda":[0,311,0.4986],"vrunda":[0,6,0.0],"waad":[0,52,0.0],"wiktoria":[0,292,0.4931],"yakeline":[0,44,0.0],"yanis":[621,134,0.4734],"yaretzi":[0,13185,0.824],"yarisel":[0,38,0.0],"yenni":[0,77,0.0],"yerika":[0,11,0.0],"ylianna":[0,89,0.0],"yoaly":[0,12,0.0],"yovanka":[0,28,0.0],"zaharia":[0,84,0.0],"zarrea":[0,14,0.0],"zaryah":[0,954,0.5959],"ziane":[0,13,0.0],"zionna":[0,766,0.5768],"zitlally":[0,54,0.0],"zoelle":[0,655,0.5632],"zoia":[0,6,0.0],"zyann":[0,217,0.4673],"zyanne":[0,104,0.4034],"zykira":[0,264,0.4843],"zykiria":[0,88,0.0],"zyra":[0,1066,0.6056],"aanya":[0,3607,0.7114],"aanyah":[0,78,0.0],"aareon":[33,10,0.0],"aarohi":[0,953,0.5958],"abriya":[0,29,0.0],"adalys":[0,40,0.0],"adeleine":[0,435,0.5277],"adilen":[0,91,0.0],"adisson":[5,103,0.3879],"adisyn":[0,1126,0.6103],"adiva":[0,130,0.4228],"adysen":[0,802,0.5808],"affinity":[0,36,0.0],"ahmia":[0,157,0.4392],"ahmya":[0,613,0.5575],"aideth":[0,10,0.0],"ailiyah":[0,10,0.0],"airyanna":[0,276,0.4882],"aisja":[0,5,0.0],"aiyah":[0,224,0.47],"aiyanah":[0,367,0.5129],"ajada":[0,53,0.0],"ajanea":[0,12,0.0],"ajaya":[0,155,0.4381],"ajayla":[0,228,0.4716],"akya":[0,127,0.4208],"alaxis":[0,5,0.0],"aldijana":[0,10,0.0],"aleaya":[0,129,0.4221],"alexamarie":[0,34,0.0],"alexanra":[0,5,0.0],"alexianna":[0,301,0.4957],"aleysa":[0,90,0.0],"aliha":[0,251,0.4799],"allasia":[0,5,0.0],"allese":[0,5,0.0],"allexia":[0,40,0.0],"allyana":[0,443,0.5293],"alonah":[0,356,0.5103],"altoria":[0,5,0.0],"alyisa":[0,26,0.0],"alyssarose":[0,5,0.0],"amadea":[0,130,0.4228],"amayah":[0,5326,0.7453],"ammaarah":[0,10,0.0],"ammara":[0,182,0.452],"amori":[360,609,0.3754],"amyrah":[0,913,0.5921],"anaijah":[0,170,0.4461],"analeise":[0,161,0.4414],"anastaysia":[0,26,0.0],"anaston":[0,63,0.0],"anatalia":[0,71,0.0],"anautica":[0,27,0.0],"anelis":[0,183,0.4525],"angelisse":[0,209,0.464],"anias":[356,31,0.4761],"annakate":[0,346,0.5078],"annakathryn":[0,5,0.0],"annavictoria":[0,55,0.0],"anniah":[0,274,0.4876],"antanae":[0,36,0.0],"antanea":[0,5,0.0],"antianna":[0,5,0.0],"antonese":[0,5,0.0],"anwen":[0,179,0.4506],"ariday":[0,147,0.4335],"arikah":[0,5,0.0],"arleni":[0,42,0.0],"arreona":[0,10,0.0],"arryon":[0,5,0.0],"ashianna":[0,5,0.0],"ashyah":[0,93,0.0],"atheer":[0,26,0.0],"aubren":[11,30,0.0],"aubriauna":[0,65,0.0],"aubryanna":[0,297,0.4946],"aureon":[0,10,0.0],"aylia":[0,34,0.0],"azari":[751,1683,0.4683],"azelyn":[0,78,0.0],"bansri":[0,5,0.0],"betzayda":[0,138,0.428],"bijou":[0,292,0.4931],"braelee":[0,333,0.5045],"bralynn":[121,554,0.4644],"branae":[0,69,0.0],"breayna":[0,5,0.0],"brenia":[0,16,0.0],"brenicia":[0,5,0.0],"briannalee":[0,5,0.0],"brishauna":[0,5,0.0],"brityn":[0,143,0.4311],"brooklan":[0,31,0.0],"bryenna":[0,5,0.0],"brynnen":[7,15,0.0],"caely":[0,56,0.0],"caile":[0,11,0.0],"caityln":[0,5,0.0],"calantha":[0,5,0.0],"callisto":[25,77,0.3033],"camiryn":[0,27,0.0],"camiya":[0,618,0.5582],"caniyah":[0,288,0.4919],"cansu":[0,5,0.0],"cante":[0,5,0.0],"cecy":[0,42,0.0],"celestte":[0,12,0.0],"cerenity":[0,1376,0.6277],"chandley":[0,11,0.0],"chandlyr":[0,13,0.0],"chardanae":[0,10,0.0],"charlae":[0,5,0.0],"charlize":[0,5617,0.7499],"chassady":[0,10,0.0],"chelyn":[0,5,0.0],"chinaza":[0,88,0.0],"chineme":[0,5,0.0],"chloemarie":[0,68,0.0],"christionna":[0,112,0.4098],"ciboney":[0,5,0.0],"corah":[0,422,0.5251],"coreyana":[0,18,0.0],"cortavia":[0,5,0.0],"coryana":[0,10,0.0],"coryne":[0,11,0.0],"cyaira":[0,25,0.0],"dailene":[0,24,0.0],"daisymarie":[0,5,0.0],"daniyah":[0,1662,0.6441],"dashiah":[0,5,0.0],"dayani":[0,715,0.5709],"dayasia":[0,10,0.0],"daycia":[0,17,0.0],"dazhia":[0,10,0.0],"deeksha":[0,296,0.4943],"dejaa":[0,5,0.0],"delaysia":[0,57,0.0],"delya":[0,5,0.0],"demiya":[0,331,0.504],"deovion":[71,43,0.2562],"derrianna":[0,46,0.0],"desriee":[0,5,0.0],"dessence":[0,30,0.0],"destinyann":[0,5,0.0],"deundria":[0,5,0.0],"deyani":[0,121,0.4166],"dezere":[0,5,0.0],"dezyrae":[0,69,0.0],"dhani":[244,97,0.3625],"dhanya":[0,282,0.49],"diamani":[0,21,0.0],"dianely":[0,117,0.4136],"dianelys":[0,135,0.4261],"dianny":[0,50,0.0],"dieudonne":[41,5,0.0],"dmya":[0,343,0.5071],"draya":[0,904,0.5912],"dshayla":[0,5,0.0],"dykeria":[0,5,0.0],"dylane":[0,5,0.0],"dyman":[0,16,0.0],"dystini":[0,5,0.0],"eilise":[0,5,0.0],"einav":[0,5,0.0],"eireann":[0,33,0.0],"ekko":[59,57,0.21],"elizza":[0,52,0.0],"ellerie":[0,547,0.5476],"eloni":[0,183,0.4525],"emiya":[0,378,0.5155],"emylia":[0,310,0.4983],"enessa":[0,57,0.0],"eriyonna":[0,88,0.0],"esmeraida":[0,5,0.0],"evalise":[0,185,0.4534],"eveny":[0,206,0.4628],"evianna":[0,828,0.5836],"eyona":[0,16,0.0],"ezrah":[2509,505,0.5792],"fayza":[0,23,0.0],"gabreial":[0,5,0.0],"gillianne":[0,38,0.0],"goretty":[0,10,0.0],"graceson":[507,23,0.5212],"graycee":[0,560,0.5496],"gyra":[0,5,0.0],"hadiah":[0,5,0.0],"haedyn":[223,357,0.3402],"haleyjo":[0,5,0.0],"hannahgrace":[0,197,0.4589],"harmani":[0,318,0.5005],"havanah":[0,93,0.0],"helem":[0,101,0.4009],"helenna":[0,53,0.0],"hennesey":[0,15,0.0],"hevin":[0,89,0.0],"hibba":[0,202,0.4611],"hibo":[0,90,0.0],"hinal":[0,5,0.0],"idil":[0,169,0.4456],"ikera":[0,11,0.0],"ilenia":[0,15,0.0],"ilina":[0,190,0.4558],"iliyah":[0,337,0.5055],"ilyn":[0,61,0.0],"inanna":[0,142,0.4305],"isabeth":[0,5,0.0],"isiss":[0,39,0.0],"island":[92,631,0.4991],"italya":[0,59,0.0],"ivee":[0,567,0.5507],"ivian":[0,5,0.0],"izamara":[0,5,0.0],"izaria":[0,39,0.0],"izumi":[0,147,0.4335],"jadynn":[34,547,0.5205],"jaelyne":[0,184,0.453],"jahliyah":[0,243,0.4771],"jahnavi":[0,477,0.5357],"jaionna":[0,375,0.5148],"jakalyn":[0,79,0.0],"jakashia":[0,5,0.0],"jakiara":[0,16,0.0],"jalasia":[0,192,0.4567],"jalice":[0,23,0.0],"jamyiah":[0,414,0.5234],"jamyrah":[0,215,0.4665],"janashia":[0,83,0.0],"janayla":[0,250,0.4796],"janelyn":[0,43,0.0],"janila":[0,199,0.4598],"jannai":[0,10,0.0],"jannatul":[0,239,0.4757],"jaraya":[0,46,0.0],"jashia":[0,57,0.0],"jasslyn":[0,180,0.4511],"jaterria":[0,25,0.0],"jatyra":[0,30,0.0],"jazemine":[0,10,0.0],"jazlen":[0,89,0.0],"jazzarae":[0,5,0.0],"jedah":[0,5,0.0],"jelynn":[0,10,0.0],"jenisis":[0,175,0.4486],"jenyssa":[0,5,0.0],"jermeria":[0,54,0.0],"jescenia":[0,5,0.0],"jessamarie":[0,5,0.0],"jewelee":[0,15,0.0],"jewelyn":[0,5,0.0],"jhai":[49,10,0.0],"jira":[0,5,0.0],"joelys":[0,105,0.4042],"jya":[0,85,0.0],"jykeria":[0,38,0.0],"jyla":[0,108,0.4067],"kadriana":[0,12,0.0],"kahliyah":[0,229,0.472],"kailyne":[0,49,0.0],"kalaina":[0,35,0.0],"kamaiya":[0,240,0.476],"kamdyn":[3688,2094,0.4799],"kamyah":[0,996,0.5997],"kamyron":[53,5,0.0],"karelis":[0,29,0.0],"karolyna":[0,163,0.4424],"karrena":[0,11,0.0],"katonna":[0,5,0.0],"katyanna":[0,10,0.0],"kaytlinn":[0,22,0.0],"kealyn":[0,45,0.0],"kendalle":[0,15,0.0],"kendyle":[0,39,0.0],"kenshayla":[0,5,0.0],"ketzia":[0,144,0.4317],"keysi":[0,335,0.505],"khadidja":[0,46,0.0],"khaia":[0,95,0.0],"khamya":[0,322,0.5016],"kharma":[0,521,0.5434],"khyana":[0,11,0.0],"khyia":[0,42,0.0],"kinleigh":[0,2109,0.6648],"kioni":[12,194,0.4358],"kirie":[5,46,0.0],"kirya":[0,11,0.0],"kiyra":[0,93,0.0],"konnar":[144,5,0.4201],"kouri":[0,45,0.0],"kristasia":[0,29,0.0],"kymoni":[246,131,0.3362],"kyndahl":[0,105,0.4042],"labiba":[0,50,0.0],"ladajia":[0,16,0.0],"lanija":[0,59,0.0],"laxmi":[0,57,0.0],"ledeja":[0,5,0.0],"legaci":[131,984,0.5379],"leiani":[0,412,0.523],"leili":[0,117,0.4136],"lexxie":[0,134,0.4254],"lijah":[200,10,0.4423],"lillieanna":[0,129,0.4221],"linay":[0,5,0.0],"linaya":[0,64,0.0],"loganne":[0,44,0.0],"lotanna":[48,5,0.0],"lydya":[0,5,0.0],"lynneah":[0,39,0.0],"maaria":[0,29,0.0],"maariyah":[0,15,0.0],"mackala":[0,5,0.0],"mackinzy":[0,20,0.0],"maclay":[0,11,0.0],"madasin":[0,43,0.0],"madchen":[0,17,0.0],"madelinne":[0,26,0.0],"madisin":[0,110,0.4083],"madisynn":[0,430,0.5267],"madylan":[0,58,0.0],"madysyn":[0,171,0.4466],"maggee":[0,28,0.0],"maho":[0,15,0.0],"maina":[0,5,0.0],"maitreyi":[0,45,0.0],"maizey":[0,659,0.5638],"makaelyn":[0,159,0.4403],"makailyn":[0,262,0.4837],"makaiyla":[0,28,0.0],"makaleigh":[0,102,0.4017],"makayia":[0,90,0.0],"makaylea":[0,11,0.0],"malajah":[0,235,0.4742],"maliea":[0,99,0.0],"malikiya":[0,5,0.0],"manaal":[0,326,0.5026],"mariadelrosari":[0,32,0.0],"mariangely":[0,52,0.0],"marianny":[0,181,0.4515],"markera":[0,5,0.0],"marquala":[0,11,0.0],"marshaya":[0,11,0.0],"martajah":[0,15,0.0],"mashaya":[0,11,0.0],"matalynn":[0,65,0.0],"matelyn":[0,101,0.4009],"matilynn":[0,211,0.4649],"matney":[0,5,0.0],"maven":[480,1149,0.4531],"mckella":[0,16,0.0],"meanna":[0,15,0.0],"meila":[0,596,0.555],"mekena":[0,14,0.0],"mekenzy":[0,5,0.0],"mekiya":[0,56,0.0],"michaelin":[0,5,0.0],"mikailyn":[0,10,0.0],"mikalynn":[0,34,0.0],"mikya":[0,206,0.4628],"mikyra":[0,44,0.0],"milaya":[0,344,0.5073],"miliani":[0,612,0.5574],"miquella":[0,5,0.0],"mixtli":[0,67,0.0],"momoka":[0,170,0.4461],"monah":[0,5,0.0],"morrighan":[0,37,0.0],"mycaela":[0,10,0.0],"myelle":[0,270,0.4863],"myha":[0,79,0.0],"mykira":[0,87,0.0],"mylasha":[0,5,0.0],"myleena":[0,29,0.0],"myleesha":[0,5,0.0],"mystikal":[17,5,0.0],"naba":[0,256,0.4816],"nadelyn":[0,97,0.0],"nahima":[0,121,0.4166],"nakiria":[0,5,0.0],"nakyah":[0,291,0.4928],"nashanti":[0,75,0.0],"nastazia":[0,5,0.0],"natayah":[0,66,0.0],"natayla":[0,69,0.0],"natiyah":[0,37,0.0],"nautyca":[0,5,0.0],"naydeline":[0,85,0.0],"naydine":[0,55,0.0],"naylea":[0,563,0.5501],"neeharika":[0,56,0.0],"nianna":[0,119,0.4151],"nicara":[0,5,0.0],"nikara":[0,5,0.0],"nikiyah":[0,197,0.4589],"no":[6,12,0.0],"noname":[11,5,0.0],"norea":[0,21,0.0],"nykeya":[0,5,0.0],"nyria":[0,10,0.0],"ondreya":[0,5,0.0],"oreanna":[0,11,0.0],"picabo":[0,5,0.0],"prerana":[0,63,0.0],"pryia":[0,10,0.0],"purnima":[0,5,0.0],"qwynn":[0,46,0.0],"raea":[0,130,0.4228],"raliyah":[0,112,0.4098],"ramaya":[0,252,0.4803],"ramla":[0,264,0.4843],"rayvn":[0,144,0.4317],"rayya":[0,199,0.4598],"reigna":[0,389,0.518],"renaya":[0,67,0.0],"rhiane":[0,5,0.0],"riayn":[0,27,0.0],"rienna":[0,10,0.0],"rifa":[0,10,0.0],"rim":[0,107,0.4059],"rinnah":[0,145,0.4323],"riyah":[0,795,0.5801],"rodjanae":[0,16,0.0],"rosemery":[0,40,0.0],"rutu":[0,10,0.0],"ryonna":[0,85,0.0],"safiatou":[0,137,0.4273],"salamasina":[0,17,0.0],"samaa":[0,169,0.4456],"samarian":[0,5,0.0],"samayah":[0,513,0.542],"samrawit":[0,49,0.0],"sarait":[0,5,0.0],"searria":[0,24,0.0],"sejla":[0,118,0.4144],"semra":[0,53,0.0],"serenitie":[0,216,0.4669],"serrah":[0,10,0.0],"shadejah":[0,5,0.0],"shaeleigh":[0,183,0.4525],"shailynne":[0,5,0.0],"shakyah":[0,53,0.0],"shantanae":[0,5,0.0],"shanyra":[0,34,0.0],"sharyah":[0,61,0.0],"shauntiana":[0,5,0.0],"shazaria":[0,10,0.0],"shealey":[0,10,0.0],"shemari":[11,5,0.0],"shemariah":[0,34,0.0],"sheny":[0,47,0.0],"shiley":[0,43,0.0],"shiyann":[0,5,0.0],"shiza":[0,176,0.4491],"sienne":[0,11,0.0],"simra":[0,340,0.5063],"sireena":[0,17,0.0],"siriah":[0,81,0.0],"skilyn":[0,73,0.0],"skylyr":[0,37,0.0],"sophee":[0,380,0.516],"sorayah":[0,246,0.4782],"stazia":[0,5,0.0],"sucely":[0,60,0.0],"syanna":[0,272,0.4869],"sylvannah":[0,5,0.0],"synae":[0,28,0.0],"syona":[0,84,0.0],"taeh":[0,5,0.0],"tahis":[0,14,0.0],"tahjanee":[0,5,0.0],"tahtianna":[0,10,0.0],"tahtyana":[0,10,0.0],"tajahnae":[0,41,0.0],"tajianna":[0,5,0.0],"talayshia":[0,26,0.0],"talee":[0,10,0.0],"taleiah":[0,42,0.0],"tameyah":[0,76,0.0],"tanaejah":[0,18,0.0],"tatiayana":[0,5,0.0],"tatom":[0,5,0.0],"tatsiana":[0,5,0.0],"taylea":[0,32,0.0],"tayli":[0,112,0.4098],"taziah":[0,66,0.0],"teerra":[0,5,0.0],"tehreem":[0,53,0.0],"temani":[10,10,0.0],"tenneh":[0,5,0.0],"terani":[0,5,0.0],"teyha":[0,20,0.0],"thaliah":[0,43,0.0],"theanna":[0,5,0.0],"thienkim":[0,38,0.0],"tiamia":[0,5,0.0],"tikeria":[0,5,0.0],"titiyana":[0,5,0.0],"toriah":[0,37,0.0],"trinnity":[0,185,0.4534],"tristynn":[0,62,0.0],"tsianina":[0,5,0.0],"tsianna":[0,5,0.0],"tuba":[0,43,0.0],"tyahna":[0,34,0.0],"tykara":[0,18,0.0],"tykiana":[0,5,0.0],"tykiara":[0,15,0.0],"tymberlyn":[0,5,0.0],"tynashia":[0,19,0.0],"tyreonna":[0,80,0.0],"tyronesha":[0,5,0.0],"tyshe":[0,5,0.0],"tysheera":[0,5,0.0],"tysheonna":[0,5,0.0],"tyvonna":[0,5,0.0],"vonica":[0,5,0.0],"wajeeha":[0,31,0.0],"wanjiku":[0,5,0.0],"wisper":[0,5,0.0],"yalexis":[0,10,0.0],"yanneli":[0,61,0.0],"yaresi":[0,10,0.0],"yaretzy":[0,2726,0.6871],"yena":[0,296,0.4943],"yerania":[0,67,0.0],"yerenia":[0,5,0.0],"yitzel":[0,186,0.4539],"yumira":[0,5,0.0],"yzabel":[0,56,0.0],"zahia":[0,48,0.0],"zaide":[192,105,0.3197],"zaidy":[0,129,0.4221],"zakeyah":[0,5,0.0],"zakeyia":[0,5,0.0],"zanya":[0,611,0.5572],"zaray":[0,81,0.0],"zareah":[0,69,0.0],"zavannah":[0,170,0.4461],"zawadi":[0,246,0.4782],"zaylie":[0,837,0.5845],"zhoe":[0,164,0.443],"ziah":[312,874,0.4531],"zobia":[0,28,0.0],"zuria":[0,482,0.5366],"zykiah":[0,18,0.0],"zynab":[0,5,0.0],"zyshonne":[101,0,0.4009],"dawsen":[505,31,0.5143],"andhy":[21,0,0.0],"danyael":[69,0,0.0],"jaxen":[5523,44,0.7432],"mcgwire":[97,0,0.0],"rishav":[265,0,0.4846],"nasheem":[43,0,0.0],"nomar":[595,0,0.5549],"aeden":[1145,7,0.6086],"bb":[55,0,0.0],"brey":[60,0,0.0],"castor":[366,0,0.5127],"colbe":[113,6,0.3942],"daevion":[563,0,0.5501],"abdulwahab":[197,0,0.4589],"cristion":[43,0,0.0],"daiveon":[198,0,0.4593],"dameyune":[10,0,0.0],"eisley":[20,2280,0.6665],"huntter":[53,0,0.0],"junathean":[10,0,0.0],"ronin":[9670,204,0.7824],"sahaj":[431,0,0.5269],"saketh":[455,0,0.5316],"tenzing":[59,21,0.0],"caspian":[3553,5,0.7092],"caydon":[666,0,0.5647],"caymon":[47,0,0.0],"dejahn":[14,0,0.0],"imanol":[1237,0,0.6185],"isaiahs":[171,0,0.4466],"jhamir":[279,0,0.4891],"jordanny":[99,0,0.0],"justinthomas":[9,0,0.0],"matao":[30,0,0.0],"osmani":[94,0,0.0],"rushon":[16,0,0.0],"saveion":[53,0,0.0],"syeed":[66,0,0.0],"tahjay":[76,0,0.0],"terriq":[9,0,0.0],"tyquise":[33,0,0.0],"zidane":[648,0,0.5623],"zyshawn":[152,0,0.4364],"abishek":[50,0,0.0],"affan":[552,0,0.5484],"ahmere":[234,0,0.4738],"bode":[4410,0,0.7289],"camiron":[8,0,0.0],"cyruss":[94,0,0.0],"dawsyn":[562,1080,0.423],"deundray":[8,0,0.0],"fintan":[419,0,0.5244],"harkirat":[38,18,0.0],"izaia":[90,0,0.0],"jasaun":[209,0,0.464],"javyn":[246,0,0.4782],"jayvian":[1281,0,0.6215],"jerquan":[40,0,0.0],"jimon":[8,0,0.0],"keivonte":[8,0,0.0],"keondric":[8,0,0.0],"kevian":[57,0,0.0],"kieshawn":[40,0,0.0],"koben":[165,0,0.4435],"lochlan":[4413,113,0.7129],"mackinnon":[95,0,0.0],"nahim":[114,0,0.4114],"owain":[144,0,0.4317],"reice":[112,7,0.3907],"rejon":[19,0,0.0],"shikeem":[24,0,0.0],"stellan":[1390,17,0.6221],"subhan":[784,0,0.5789],"syler":[756,26,0.5594],"taden":[350,0,0.5088],"thibault":[29,0,0.0],"zabian":[200,0,0.4602],"zakar":[104,0,0.4034],"zarion":[455,0,0.5316],"zyshon":[19,0,0.0],"adreyan":[97,0,0.0],"adrianpaul":[7,0,0.0],"aidin":[732,12,0.5651],"amarion":[4272,44,0.7196],"anuraag":[57,0,0.0],"avyon":[168,0,0.4451],"bayden":[313,6,0.4913],"brailon":[78,0,0.0],"broedy":[69,0,0.0],"camaren":[54,5,0.0],"chaden":[130,0,0.4228],"chimaobi":[79,0,0.0],"daeveon":[210,0,0.4644],"daizon":[32,0,0.0],"dakoata":[25,0,0.0],"damyen":[151,0,0.4358],"dauson":[42,0,0.0],"fernan":[18,0,0.0],"finian":[540,0,0.5465],"gaten":[13,0,0.0],"godswill":[52,0,0.0],"hayk":[396,0,0.5195],"hersch":[12,0,0.0],"izeah":[334,0,0.5047],"izick":[239,0,0.4757],"izzac":[196,0,0.4585],"jadden":[306,28,0.4624],"jahfari":[71,0,0.0],"jahlin":[25,0,0.0],"jahsun":[18,0,0.0],"jaicob":[169,0,0.4456],"jameslee":[25,0,0.0],"jash":[167,0,0.4445],"jatavion":[325,0,0.5024],"jehonadab":[7,0,0.0],"jeshurun":[111,0,0.4091],"jkobe":[68,0,0.0],"joequan":[13,0,0.0],"jonathanjoseph":[7,0,0.0],"junathaen":[7,0,0.0],"kaeron":[7,0,0.0],"kaleab":[244,0,0.4775],"kavante":[12,0,0.0],"koebe":[12,0,0.0],"lamere":[138,0,0.428],"latavian":[50,0,0.0],"luisdiego":[7,0,0.0],"makari":[1556,209,0.5725],"makhai":[944,0,0.595],"marik":[282,0,0.49],"matai":[460,0,0.5326],"mataio":[114,0,0.4114],"mccrae":[208,5,0.4547],"meeko":[167,0,0.4445],"mekhai":[524,0,0.5439],"merrik":[304,5,0.4899],"nasiir":[122,0,0.4173],"nikoles":[12,0,0.0],"nolyn":[783,164,0.4922],"not":[12,0,0.0],"quadere":[12,0,0.0],"ramaj":[132,0,0.4241],"ricquan":[24,0,0.0],"rivaldo":[232,0,0.4731],"ryshon":[7,0,0.0],"samay":[402,41,0.4803],"samih":[47,0,0.0],"saransh":[34,0,0.0],"savien":[170,0,0.4461],"savione":[12,0,0.0],"seif":[260,0,0.483],"shahir":[132,0,0.4241],"shanden":[39,0,0.0],"shykim":[13,0,0.0],"staphon":[7,0,0.0],"stian":[19,0,0.0],"tadan":[114,0,0.4114],"taeshawn":[336,0,0.5053],"tahlik":[14,0,0.0],"tayten":[582,94,0.4873],"tiarnan":[26,0,0.0],"tirek":[22,0,0.0],"treyden":[548,0,0.5478],"treyvor":[31,0,0.0],"tydrick":[60,0,0.0],"tyius":[7,0,0.0],"tymeir":[164,0,0.443],"xzavian":[414,0,0.5234],"xzayvier":[339,0,0.506],"yaroslav":[257,0,0.482],"zevin":[236,0,0.4746],"abd":[17,0,0.0],"abdulraheem":[168,0,0.4451],"aboubakar":[71,0,0.0],"abrahem":[41,0,0.0],"adesh":[23,0,0.0],"adreon":[35,0,0.0],"airick":[21,0,0.0],"alejondro":[6,0,0.0],"amahd":[109,0,0.4075],"amith":[29,0,0.0],"ansh":[2175,0,0.6675],"anterius":[11,0,0.0],"arsalaan":[11,0,0.0],"arth":[194,0,0.4576],"axavier":[155,0,0.4381],"bosco":[394,0,0.5191],"braidan":[137,0,0.4273],"braidy":[6,17,0.0],"braidyn":[594,83,0.4967],"brawley":[53,0,0.0],"brinden":[97,0,0.0],"briyon":[34,0,0.0],"bronze":[108,5,0.3924],"calebe":[17,0,0.0],"caleob":[6,0,0.0],"cannan":[271,0,0.4866],"cartel":[134,0,0.4254],"cathal":[40,0,0.0],"chasyn":[144,0,0.4317],"chiedozie":[46,0,0.0],"coedy":[6,0,0.0],"colbin":[94,0,0.0],"corron":[33,0,0.0],"daeon":[25,0,0.0],"daison":[138,0,0.428],"dalston":[30,0,0.0],"danesh":[12,0,0.0],"danyaal":[17,0,0.0],"daquavious":[42,0,0.0],"darsh":[988,0,0.599],"deklan":[2427,0,0.677],"demarkas":[6,0,0.0],"deondrey":[18,0,0.0],"dezhon":[21,0,0.0],"elec":[6,0,0.0],"eliaz":[471,0,0.5346],"emilliano":[241,0,0.4764],"emrah":[119,5,0.4018],"ethin":[300,0,0.4954],"evren":[1047,136,0.5439],"eyon":[54,0,0.0],"fode":[42,0,0.0],"garit":[19,0,0.0],"gayge":[6,0,0.0],"giezi":[60,0,0.0],"graeden":[72,0,0.0],"granite":[98,0,0.0],"gurvir":[61,0,0.0],"harmanpreet":[6,7,0.0],"ibrahem":[79,0,0.0],"inaki":[262,0,0.4837],"isiash":[6,0,0.0],"jadakiss":[88,13,0.3493],"jahki":[443,0,0.5293],"jaisean":[173,0,0.4476],"jamarquez":[33,0,0.0],"jaqaun":[6,0,0.0],"jaqual":[17,0,0.0],"jaquandre":[6,0,0.0],"jaromir":[6,0,0.0],"jaxsen":[1904,6,0.6541],"jeylon":[6,0,0.0],"jiaire":[171,0,0.4466],"jondarius":[20,0,0.0],"jorgeantonio":[6,0,0.0],"joshuaanthony":[6,0,0.0],"jshaun":[179,0,0.4506],"julani":[30,82,0.3001],"juriel":[95,0,0.0],"kaelub":[26,0,0.0],"kailer":[743,37,0.551],"kamoni":[268,507,0.378],"kannan":[328,0,0.5032],"kaysen":[5865,421,0.7088],"ke":[25,0,0.0],"keen":[185,0,0.4534],"keghan":[83,0,0.0],"kenston":[195,0,0.458],"keyshun":[140,0,0.4292],"khadim":[232,0,0.4731],"kieston":[6,0,0.0],"kievan":[6,0,0.0],"kmari":[280,166,0.3327],"kolvin":[23,0,0.0],"konar":[6,0,0.0],"konstantino":[6,0,0.0],"kyrese":[387,0,0.5175],"kyshon":[92,0,0.0],"ladavion":[123,0,0.418],"latrey":[17,0,0.0],"luisgerardo":[11,0,0.0],"maccoy":[102,0,0.4017],"makail":[144,0,0.4317],"marique":[6,0,0.0],"markevion":[111,0,0.4091],"marqez":[27,0,0.0],"martravious":[29,0,0.0],"marvion":[141,0,0.4298],"million":[403,76,0.451],"momodou":[108,0,0.4067],"moosa":[277,0,0.4885],"munib":[11,0,0.0],"nahsir":[112,0,0.4098],"nakari":[184,133,0.2903],"nashiem":[19,0,0.0],"nimai":[88,0,0.0],"ojani":[102,0,0.4017],"ostyn":[30,0,0.0],"oz":[643,0,0.5616],"pape":[128,0,0.4214],"quadrell":[13,0,0.0],"quayvon":[53,0,0.0],"quishawn":[23,0,0.0],"qwinton":[21,0,0.0],"ralique":[6,0,0.0],"raqwon":[6,0,0.0],"raunak":[181,11,0.4305],"raykwan":[6,0,0.0],"raymonte":[11,0,0.0],"rohil":[86,0,0.0],"royel":[99,33,0.3181],"ryshaun":[6,0,0.0],"sachit":[70,0,0.0],"samuelu":[17,0,0.0],"sathvik":[601,0,0.5558],"shemarr":[11,0,0.0],"sire":[1594,0,0.6405],"skylr":[11,16,0.0],"tagen":[166,99,0.3036],"tahiem":[18,0,0.0],"taivion":[61,0,0.0],"taliek":[44,0,0.0],"tayvian":[242,0,0.4768],"timberland":[44,0,0.0],"tiriq":[6,0,0.0],"tralyn":[28,0,0.0],"traveyon":[6,0,0.0],"treyvan":[38,0,0.0],"tyequan":[6,0,0.0],"tyheed":[19,0,0.0],"tyreeq":[12,0,0.0],"tyshone":[11,0,0.0],"tytan":[1022,0,0.6019],"tziah":[38,12,0.0],"yonni":[11,0,0.0],"zakai":[3520,18,0.7061],"zerik":[42,0,0.0],"zymir":[1746,5,0.6468],"abdifatah":[278,0,0.4888],"abeal":[5,0,0.0],"adain":[341,0,0.5066],"adriam":[5,0,0.0],"aeson":[732,0,0.5729],"agha":[11,0,0.0],"aidon":[532,0,0.5452],"aireon":[75,5,0.0],"ajith":[46,0,0.0],"alaster":[125,0,0.4194],"aldyn":[75,31,0.2866],"aliou":[176,0,0.4491],"alique":[5,12,0.0],"allston":[11,0,0.0],"amarius":[408,0,0.5221],"amistad":[5,0,0.0],"amontae":[225,0,0.4704],"anatoly":[35,0,0.0],"andress":[10,0,0.0],"anferny":[18,0,0.0],"aquavious":[16,0,0.0],"arashdeep":[10,0,0.0],"arinzechukwu":[62,0,0.0],"arsal":[141,0,0.4298],"asmir":[31,0,0.0],"averion":[11,0,0.0],"ayuub":[154,0,0.4375],"azaiah":[1614,143,0.5961],"azarias":[385,0,0.5171],"azrien":[5,0,0.0],"bastien":[287,0,0.4916],"biruk":[177,0,0.4496],"branen":[5,0,0.0],"branten":[24,0,0.0],"breshaun":[17,0,0.0],"brindon":[26,0,0.0],"brylen":[638,50,0.5263],"calvary":[94,131,0.2739],"calvyn":[105,0,0.4042],"calyb":[64,0,0.0],"carden":[413,37,0.487],"carlosjavier":[5,0,0.0],"cervante":[10,0,0.0],"chibuikem":[135,0,0.4261],"chrisanthony":[17,0,0.0],"christianjohn":[17,0,0.0],"chuefeng":[5,0,0.0],"clavon":[5,0,0.0],"cope":[130,0,0.4228],"corneilous":[10,0,0.0],"corvon":[33,0,0.0],"cyrell":[10,0,0.0],"daandre":[5,0,0.0],"daikwon":[5,0,0.0],"daishun":[15,0,0.0],"dajhon":[32,0,0.0],"dajoure":[5,0,0.0],"dallton":[5,0,0.0],"damarte":[5,0,0.0],"damius":[31,0,0.0],"damonie":[262,93,0.3764],"danquan":[10,0,0.0],"daquion":[11,0,0.0],"darionte":[20,0,0.0],"darnez":[17,0,0.0],"darzell":[5,0,0.0],"dayqwan":[5,0,0.0],"dazion":[50,0,0.0],"dearious":[5,0,0.0],"deashawn":[31,0,0.0],"delmonta":[5,0,0.0],"demandre":[5,0,0.0],"demartez":[5,0,0.0],"demontrell":[10,0,0.0],"denzyl":[5,0,0.0],"deondric":[10,0,0.0],"dequantez":[5,0,0.0],"dequay":[5,0,0.0],"dilin":[24,0,0.0],"dimaggio":[56,0,0.0],"dimitrie":[18,0,0.0],"dmari":[704,0,0.5695],"dontarrius":[5,0,0.0],"dulio":[5,0,0.0],"dylanthomas":[5,0,0.0],"edenilson":[122,0,0.4173],"ediel":[436,0,0.5279],"edras":[149,0,0.4346],"elhadji":[172,0,0.4471],"elijsha":[37,0,0.0],"elisjah":[5,0,0.0],"eliuth":[26,0,0.0],"engelberto":[5,0,0.0],"ezequil":[5,0,0.0],"favion":[22,0,0.0],"finbar":[148,0,0.4341],"gavinn":[129,0,0.4221],"geon":[41,0,0.0],"geonte":[5,0,0.0],"geramiah":[52,0,0.0],"giomar":[157,0,0.4392],"giovonnie":[107,0,0.4059],"graison":[421,36,0.4901],"gurpal":[5,0,0.0],"hadrien":[23,0,0.0],"hamaad":[5,0,0.0],"harkaran":[17,0,0.0],"haseem":[12,0,0.0],"hashir":[439,0,0.5285],"heru":[246,0,0.4782],"ifrain":[10,0,0.0],"ihsaan":[80,5,0.0],"iker":[18096,7,0.8512],"imtiaz":[30,0,0.0],"infboy":[5,0,0.0],"iseah":[148,0,0.4341],"iszac":[11,0,0.0],"itiel":[61,0,0.0],"izeyah":[298,0,0.4948],"jabare":[20,0,0.0],"jabrien":[16,0,0.0],"jacan":[15,0,0.0],"jacorious":[10,0,0.0],"jaemin":[57,0,0.0],"jaen":[39,0,0.0],"jaffet":[26,0,0.0],"jagmeet":[10,0,0.0],"jahkari":[400,0,0.5204],"jahquell":[11,0,0.0],"jaiven":[475,0,0.5353],"jaiveon":[289,0,0.4922],"jakevis":[5,0,0.0],"jalique":[31,0,0.0],"jamahd":[5,0,0.0],"jamarien":[166,0,0.444],"jamikal":[24,0,0.0],"janathean":[5,0,0.0],"jaqualon":[40,0,0.0],"jaquaze":[5,0,0.0],"jaquori":[29,0,0.0],"jarrit":[10,0,0.0],"jasaan":[65,0,0.0],"jaser":[103,0,0.4026],"jasontyler":[5,0,0.0],"jasraj":[183,0,0.4525],"jathen":[157,0,0.4392],"jaustin":[10,0,0.0],"javionte":[5,0,0.0],"jawarren":[5,0,0.0],"jaykub":[83,0,0.0],"jaylyne":[5,112,0.396],"jaymison":[290,0,0.4925],"jayvonn":[45,0,0.0],"jayzon":[231,0,0.4727],"jcorey":[5,0,0.0],"jebreel":[5,0,0.0],"jemari":[319,0,0.5008],"jemarion":[132,0,0.4241],"jeramyah":[249,0,0.4792],"jermari":[276,0,0.4882],"jeshon":[10,0,0.0],"jestyn":[5,0,0.0],"johnathyn":[88,0,0.0],"johnethan":[16,0,0.0],"jontre":[12,0,0.0],"jorddy":[16,0,0.0],"joshuaray":[5,0,0.0],"josif":[10,0,0.0],"jovaan":[5,0,0.0],"juanandres":[47,0,0.0],"juanjesus":[80,0,0.0],"judiah":[58,0,0.0],"jumari":[42,0,0.0],"jwon":[5,0,0.0],"jymon":[5,0,0.0],"kabren":[26,0,0.0],"kaleeb":[21,0,0.0],"kalobe":[24,0,0.0],"kalven":[129,0,0.4221],"kamaren":[27,0,0.0],"kamarion":[2555,6,0.6801],"kamarius":[91,0,0.0],"kasaan":[76,0,0.0],"kathan":[198,0,0.4593],"keashawn":[16,0,0.0],"kejaun":[15,0,0.0],"kentrez":[28,0,0.0],"kenyen":[239,0,0.4757],"keontaye":[30,0,0.0],"ketrell":[23,0,0.0],"keyen":[74,0,0.0],"khail":[37,0,0.0],"khole":[84,763,0.5275],"khyren":[330,0,0.5037],"kidane":[10,0,0.0],"kobei":[5,0,0.0],"kode":[58,0,0.0],"kohlman":[25,0,0.0],"kornell":[21,0,0.0],"kouhei":[5,0,0.0],"kunj":[64,0,0.0],"kvaughn":[21,0,0.0],"kylepatrick":[10,0,0.0],"kyrek":[5,0,0.0],"kyrique":[23,0,0.0],"labib":[78,0,0.0],"lamiek":[5,0,0.0],"latief":[5,0,0.0],"lavontre":[15,0,0.0],"layke":[158,60,0.339],"lenyn":[22,21,0.0],"leontay":[10,0,0.0],"lucais":[5,0,0.0],"lucciano":[563,0,0.5501],"luisalejandro":[11,0,0.0],"luk":[10,0,0.0],"macallan":[424,5,0.5204],"macguire":[71,0,0.0],"makaio":[1269,0,0.6207],"makye":[390,0,0.5182],"malchijah":[5,0,0.0],"manjinder":[5,0,0.0],"marctavious":[5,0,0.0],"marqies":[5,0,0.0],"marterius":[5,0,0.0],"marvens":[437,0,0.5281],"matas":[131,0,0.4235],"matthewdavid":[5,0,0.0],"maveric":[518,0,0.5429],"maximum":[91,0,0.0],"maxmillion":[15,0,0.0],"mcguire":[180,0,0.4511],"medin":[5,0,0.0],"meki":[40,0,0.0],"mikhi":[230,0,0.4723],"mikial":[17,0,0.0],"milind":[69,0,0.0],"mohamadou":[74,0,0.0],"momen":[88,0,0.0],"mustaf":[125,0,0.4194],"mutasim":[103,0,0.4026],"muzzammil":[48,0,0.0],"mykhal":[15,0,0.0],"mylek":[5,0,0.0],"mytchell":[5,0,0.0],"nadiv":[5,0,0.0],"nakhi":[166,0,0.444],"nasear":[16,0,0.0],"nashoba":[62,0,0.0],"navonte":[10,0,0.0],"nawaf":[301,0,0.4957],"nazr":[5,0,0.0],"nickon":[10,0,0.0],"nyshaun":[84,0,0.0],"omaree":[161,0,0.4414],"omon":[5,0,0.0],"patrickjoseph":[5,0,0.0],"peregrine":[286,128,0.3616],"pharoh":[44,0,0.0],"praxedis":[5,0,0.0],"quameek":[5,0,0.0],"quamon":[5,0,0.0],"quatravious":[5,0,0.0],"queshaun":[5,0,0.0],"quess":[16,0,0.0],"quillon":[10,0,0.0],"quinnshawn":[5,0,0.0],"quintavion":[39,0,0.0],"qujuan":[5,0,0.0],"rahi":[52,176,0.364],"raihan":[280,25,0.4561],"ramsin":[5,0,0.0],"ranvir":[211,0,0.4649],"reide":[15,0,0.0],"reion":[5,0,0.0],"richon":[11,0,0.0],"rithvik":[763,0,0.5765],"rizal":[10,0,0.0],"robertocarlos":[30,0,0.0],"rolston":[5,0,0.0],"roquan":[21,0,0.0],"saahir":[239,0,0.4757],"saim":[232,0,0.4731],"sakai":[423,90,0.4469],"samael":[488,0,0.5377],"sanderson":[13,0,0.0],"sanel":[79,0,0.0],"sarmad":[16,0,0.0],"savior":[668,20,0.551],"sayvion":[319,0,0.5008],"sethan":[39,0,0.0],"shakwan":[5,0,0.0],"sharmarke":[91,0,0.0],"shashwat":[116,0,0.4129],"sheharyar":[5,0,0.0],"shehryar":[23,0,0.0],"shmaya":[75,0,0.0],"simion":[31,0,0.0],"siraaj":[5,0,0.0],"sirmichael":[62,0,0.0],"somtochukwu":[128,26,0.3636],"stefhon":[5,0,0.0],"suchir":[55,0,0.0],"sylis":[980,0,0.5982],"sylus":[1178,0,0.6142],"tahron":[17,0,0.0],"taisean":[43,0,0.0],"taiven":[132,0,0.4241],"tajmalik":[5,0,0.0],"tallin":[84,0,0.0],"tamarik":[5,0,0.0],"tavier":[48,0,0.0],"tayo":[218,0,0.4677],"terrik":[29,0,0.0],"tetsu":[5,0,0.0],"tilon":[5,0,0.0],"timetrius":[5,0,0.0],"timothe":[15,0,0.0],"tirik":[5,0,0.0],"travione":[15,0,0.0],"travontay":[5,0,0.0],"trendarius":[5,0,0.0],"treyten":[123,0,0.418],"treyvin":[129,0,0.4221],"trooper":[153,0,0.4369],"tyas":[20,0,0.0],"tyhiem":[36,0,0.0],"tylur":[5,0,0.0],"tymari":[83,0,0.0],"tymeer":[67,0,0.0],"tymire":[94,0,0.0],"tymonte":[5,0,0.0],"tyreike":[5,0,0.0],"tyruss":[5,0,0.0],"tyvell":[39,0,0.0],"ulisess":[10,0,0.0],"ulizes":[15,0,0.0],"utkarsh":[43,0,0.0],"williamjames":[11,0,0.0],"yackov":[5,0,0.0],"yaniel":[610,0,0.5571],"yerucham":[10,0,0.0],"zahkee":[5,0,0.0],"zaim":[211,0,0.4649],"zayvon":[187,0,0.4544],"zykeem":[112,0,0.4098],"zyquan":[307,0,0.4974],"verania":[0,249,0.4792],"litzy":[6,7160,0.7704],"trinitee":[0,1543,0.6377],"ezri":[208,1011,0.5119],"diavion":[15,99,0.3573],"deavian":[0,56,0.0],"syncere":[2962,652,0.5832],"berania":[0,62,0.0],"felecity":[0,84,0.0],"makaiya":[0,518,0.5429],"muskan":[0,341,0.5066],"ukari":[0,16,0.0],"aaryanna":[0,207,0.4632],"aneliz":[0,344,0.5073],"maniah":[0,236,0.4746],"odera":[18,14,0.0],"shykemmia":[0,14,0.0],"zya":[0,1199,0.6158],"deavionne":[0,19,0.0],"lakeeva":[0,13,0.0],"landrey":[40,404,0.4818],"raniya":[0,1565,0.6389],"xitlally":[0,154,0.4375],"zyonna":[0,612,0.5574],"chayil":[0,87,0.0],"notnamed":[722,643,0.3317],"yaxeni":[0,115,0.4121],"aakilah":[0,18,0.0],"alera":[0,291,0.4928],"ariyona":[0,180,0.4511],"carington":[0,23,0.0],"citalli":[0,32,0.0],"delylah":[0,1586,0.6401],"dhamar":[0,71,0.0],"feliciti":[0,58,0.0],"jailynne":[0,100,0.4],"jicel":[0,11,0.0],"maame":[0,176,0.4491],"mckinnah":[0,11,0.0],"milenia":[0,33,0.0],"nabeeha":[0,278,0.4888],"symia":[0,167,0.4445],"tatianya":[0,33,0.0],"ziasia":[0,111,0.4091],"ziya":[63,1727,0.6277],"zyaira":[0,341,0.5066],"acelynn":[0,1212,0.6167],"asijah":[0,55,0.0],"denijah":[0,73,0.0],"ezrie":[0,139,0.4286],"faithlynn":[0,562,0.5499],"gicelle":[0,53,0.0],"imaya":[0,188,0.4548],"iyania":[0,124,0.4187],"jemini":[48,90,0.2791],"jhania":[0,72,0.0],"jurney":[5,238,0.4673],"kamirah":[0,382,0.5164],"koriana":[0,102,0.4017],"maanasa":[0,88,0.0],"maraiah":[0,21,0.0],"pantera":[0,97,0.0],"saragrace":[0,71,0.0],"shayal":[0,10,0.0],"siddhi":[0,379,0.5157],"sole":[0,542,0.5468],"trinitie":[0,315,0.4997],"vanshika":[0,269,0.486],"zakaya":[0,60,0.0],"ziyah":[47,1292,0.6034],"zynia":[0,185,0.4534],"adamariz":[0,222,0.4693],"adaora":[0,300,0.4954],"aigne":[0,9,0.0],"amayia":[0,217,0.4673],"amillion":[210,214,0.2652],"anael":[56,202,0.3776],"anyiah":[0,734,0.5731],"aritza":[0,232,0.4731],"avanna":[0,373,0.5143],"avionne":[5,19,0.0],"breleigh":[0,384,0.5169],"callysta":[0,51,0.0],"camya":[0,648,0.5623],"cyncere":[509,244,0.3889],"daionna":[0,144,0.4317],"dasani":[431,1156,0.4663],"elaijah":[5,170,0.4358],"elajah":[0,153,0.4369],"elondra":[0,9,0.0],"emyly":[0,40,0.0],"hydiah":[0,9,0.0],"jaimaya":[0,9,0.0],"jenaveve":[0,114,0.4114],"jocelene":[0,9,0.0],"juleisy":[0,9,0.0],"jurni":[0,427,0.5261],"keidy":[0,856,0.5865],"ksha":[0,9,0.0],"leenah":[0,202,0.4611],"maansi":[0,110,0.4083],"marifer":[0,384,0.5169],"nakaiya":[0,166,0.444],"oreoluwa":[164,261,0.3228],"santiana":[0,76,0.0],"taelynn":[10,1719,0.6438],"taylia":[0,92,0.0],"tityanna":[0,19,0.0],"winni":[0,137,0.4273],"zitlalli":[0,38,0.0],"zyah":[49,541,0.5081],"aidia":[0,39,0.0],"akanksha":[0,177,0.4496],"akansha":[0,55,0.0],"aliyana":[0,2256,0.6707],"amiaya":[0,236,0.4746],"anieya":[0,78,0.0],"ankitha":[0,59,0.0],"anvita":[0,449,0.5304],"auset":[0,218,0.4677],"aziana":[0,42,0.0],"breazae":[0,8,0.0],"brizeyda":[0,201,0.4606],"brooklinn":[0,237,0.4749],"caytlynn":[0,8,0.0],"chynia":[0,25,0.0],"dalasia":[0,93,0.0],"danaeja":[0,28,0.0],"deztinee":[0,76,0.0],"emree":[15,1026,0.5948],"envy":[5,686,0.5638],"harshita":[0,195,0.458],"ifeoluwa":[168,348,0.3659],"indeya":[0,44,0.0],"ishana":[0,395,0.5193],"ivoree":[0,250,0.4796],"jermya":[0,317,0.5002],"jonaya":[0,74,0.0],"kadraya":[0,8,0.0],"kaleinani":[0,8,0.0],"kalysia":[0,19,0.0],"kayleann":[0,79,0.0],"kenniya":[0,174,0.4481],"kissiah":[0,13,0.0],"kmya":[0,231,0.4727],"krithika":[0,236,0.4746],"kymora":[0,847,0.5856],"layali":[0,242,0.4768],"millennium":[0,32,0.0],"miniya":[0,150,0.4352],"nyquasia":[0,8,0.0],"ryelee":[57,283,0.4214],"shakaylah":[0,8,0.0],"shankeria":[0,8,0.0],"shya":[5,354,0.5039],"simya":[0,218,0.4677],"skilynn":[0,239,0.4757],"suheily":[0,103,0.4026],"tamiia":[0,30,0.0],"tanejah":[0,8,0.0],"tapainga":[0,8,0.0],"tatyanah":[0,51,0.0],"tavionna":[0,83,0.0],"tmya":[0,73,0.0],"tomiya":[0,39,0.0],"tylasia":[0,223,0.4697],"tyreona":[0,63,0.0],"yzabella":[0,556,0.549],"zakayla":[0,394,0.5191],"zamaya":[0,716,0.571],"aeva":[0,561,0.5498],"ahmiyah":[0,248,0.4789],"ajiana":[0,17,0.0],"akyla":[0,269,0.486],"alizza":[0,91,0.0],"amidala":[0,12,0.0],"amry":[0,82,0.0],"amyiah":[0,1021,0.6018],"angelicamae":[0,7,0.0],"aremi":[0,66,0.0],"arianni":[0,420,0.5246],"arli":[0,127,0.4208],"aryanah":[0,321,0.5013],"ashyra":[0,102,0.4017],"brezae":[0,7,0.0],"caliegh":[0,122,0.4173],"callisa":[0,7,0.0],"camrynne":[0,7,0.0],"chrishae":[0,12,0.0],"corielle":[0,31,0.0],"deivion":[10,7,0.0],"destyny":[0,12,0.0],"diavione":[0,12,0.0],"endiya":[0,69,0.0],"enyce":[0,18,0.0],"geniya":[0,143,0.4311],"graceanna":[0,94,0.0],"gwynevere":[0,380,0.516],"gysel":[0,12,0.0],"haylen":[173,1009,0.5246],"irmani":[0,7,0.0],"issabelle":[0,234,0.4738],"izhane":[0,7,0.0],"jahnari":[5,19,0.0],"janeigh":[0,7,0.0],"jazaria":[0,600,0.5556],"jenasis":[0,387,0.5175],"jeniyah":[0,553,0.5485],"jesiree":[0,7,0.0],"jkira":[0,7,0.0],"journei":[0,2152,0.6666],"kemaya":[0,168,0.4451],"kendraya":[0,23,0.0],"kenslee":[0,1306,0.6232],"keshyra":[0,12,0.0],"keyrra":[0,12,0.0],"kianalee":[0,7,0.0],"kyaria":[0,18,0.0],"kyiara":[0,22,0.0],"kyja":[0,17,0.0],"kynsley":[0,939,0.5945],"lawryn":[0,48,0.0],"leksi":[0,32,0.0],"leydy":[0,80,0.0],"leylani":[0,2351,0.6743],"litzi":[0,518,0.5429],"mailey":[0,500,0.5398],"maivy":[0,7,0.0],"makailee":[0,70,0.0],"makalie":[0,37,0.0],"malayja":[0,94,0.0],"maloni":[0,467,0.5339],"maryori":[0,174,0.4481],"meleni":[0,104,0.4034],"miakoda":[0,208,0.4636],"mickyla":[0,7,0.0],"mikaylia":[0,20,0.0],"monaya":[0,12,0.0],"moniya":[0,29,0.0],"myshayla":[0,13,0.0],"najay":[26,26,0.0],"najiyah":[0,76,0.0],"nasiah":[338,262,0.313],"naveena":[0,134,0.4254],"neasia":[0,74,0.0],"nseya":[0,12,0.0],"nuzhat":[0,28,0.0],"nyrah":[0,155,0.4381],"omaria":[0,218,0.4677],"quanterra":[0,7,0.0],"rahima":[0,200,0.4602],"sadhana":[0,217,0.4673],"samarya":[0,38,0.0],"saniah":[0,1577,0.6396],"saraiah":[0,278,0.4888],"sarilyn":[0,7,0.0],"scottlyn":[0,658,0.5636],"sevanah":[0,21,0.0],"shemya":[0,33,0.0],"sofija":[0,354,0.5098],"sussy":[0,54,0.0],"svannah":[0,12,0.0],"talaysha":[0,67,0.0],"tallyn":[49,79,0.2601],"tniya":[0,104,0.4034],"tremya":[0,58,0.0],"trinitey":[0,86,0.0],"tyajah":[0,43,0.0],"yaret":[61,104,0.2795],"yaylin":[0,12,0.0],"yesenya":[0,22,0.0],"yuleisy":[0,48,0.0],"zamzam":[0,301,0.4957],"aaniya":[0,362,0.5117],"aarushi":[0,841,0.585],"abbigayl":[0,29,0.0],"acelyn":[52,631,0.5237],"adelis":[0,92,0.0],"adriyanna":[0,199,0.4598],"ahnya":[0,161,0.4414],"airyana":[0,231,0.4727],"aiyonna":[0,278,0.4888],"ajiah":[0,67,0.0],"akaylah":[0,170,0.4461],"alaria":[0,136,0.4267],"alegna":[0,53,0.0],"aleha":[0,40,0.0],"alejah":[0,119,0.4151],"alekhya":[0,151,0.4358],"alekya":[0,6,0.0],"alexeia":[0,23,0.0],"alexyia":[0,63,0.0],"aliegha":[0,92,0.0],"aliyanna":[0,754,0.5755],"allera":[0,6,0.0],"alyria":[0,197,0.4589],"amaiyah":[0,982,0.5984],"amaja":[0,49,0.0],"amajah":[0,25,0.0],"amarianna":[0,565,0.5504],"amoy":[0,98,0.0],"amrutha":[0,250,0.4796],"anaelle":[0,450,0.5306],"anasofia":[0,966,0.597],"anezka":[0,72,0.0],"angelann":[0,11,0.0],"angelyse":[0,108,0.4067],"anjalie":[0,39,0.0],"antanay":[0,17,0.0],"arijana":[0,136,0.4267],"aryell":[0,17,0.0],"asani":[310,552,0.376],"ashja":[0,6,0.0],"aurian":[6,11,0.0],"autumnrose":[0,158,0.4397],"ayani":[0,453,0.5312],"azrielle":[0,288,0.4919],"brionni":[0,6,0.0],"bryaunna":[0,6,0.0],"camaya":[0,326,0.5026],"carianna":[0,89,0.0],"ceonna":[0,80,0.0],"ceyda":[0,93,0.0],"chayah":[0,112,0.4098],"chelesy":[0,6,0.0],"ciel":[292,371,0.3158],"cornecia":[0,6,0.0],"cortazia":[0,6,0.0],"coumba":[0,214,0.4661],"cyleigh":[0,236,0.4746],"daijana":[0,12,0.0],"daishanae":[0,13,0.0],"daiya":[0,137,0.4273],"daiyana":[0,44,0.0],"damyah":[0,296,0.4943],"danajha":[0,26,0.0],"daniellerose":[0,6,0.0],"danija":[0,70,0.0],"deasya":[0,51,0.0],"dejahnae":[0,34,0.0],"deonia":[0,6,0.0],"deoveon":[6,22,0.0],"devinity":[0,36,0.0],"diamyn":[0,13,0.0],"diellza":[0,11,0.0],"eleora":[0,399,0.5202],"elonna":[0,96,0.0],"emaley":[0,68,0.0],"emiyah":[0,584,0.5533],"emmelyn":[0,610,0.5571],"emoney":[0,6,0.0],"emri":[60,577,0.508],"emyia":[0,31,0.0],"enfinity":[0,17,0.0],"eriyanna":[0,171,0.4466],"evani":[0,398,0.52],"genesse":[0,11,0.0],"gracious":[0,199,0.4598],"gursimran":[6,25,0.0],"hanady":[0,11,0.0],"healani":[0,92,0.0],"hermela":[0,290,0.4925],"ireana":[0,53,0.0],"islay":[0,354,0.5098],"itali":[0,189,0.4553],"ivyana":[0,497,0.5393],"jadelin":[0,97,0.0],"jadis":[184,214,0.2796],"jailey":[0,354,0.5098],"jakila":[0,25,0.0],"jamirra":[0,87,0.0],"janaiah":[0,161,0.4414],"janaisia":[0,13,0.0],"janyiah":[0,511,0.5417],"jaonna":[0,129,0.4221],"jayelyn":[0,66,0.0],"jeorgia":[0,180,0.4511],"jerusalen":[0,96,0.0],"jmaya":[0,17,0.0],"jnya":[0,178,0.4501],"juliarose":[0,34,0.0],"juliauna":[0,199,0.4598],"juliete":[0,53,0.0],"julieth":[0,1165,0.6133],"kailana":[0,358,0.5108],"kaileah":[0,374,0.5146],"kajira":[0,6,0.0],"kalysa":[0,59,0.0],"karelin":[0,28,0.0],"karsin":[266,45,0.4264],"karysma":[0,17,0.0],"kaylaanne":[0,6,0.0],"keannah":[0,22,0.0],"keilana":[0,485,0.5371],"keiyara":[0,6,0.0],"kelilah":[0,205,0.4624],"keltsey":[0,6,0.0],"kemara":[0,120,0.4158],"kemonie":[29,121,0.3511],"kenidi":[0,171,0.4466],"kennidee":[0,143,0.4311],"keyora":[0,28,0.0],"kharizma":[0,131,0.4235],"kiayra":[0,6,0.0],"kionah":[0,17,0.0],"klairissa":[0,6,0.0],"kymbria":[0,11,0.0],"kynleigh":[0,1962,0.6585],"lamyia":[0,267,0.4853],"leesly":[0,17,0.0],"lenah":[0,184,0.453],"lilliah":[0,187,0.4544],"lyah":[0,358,0.5108],"lyba":[0,34,0.0],"madelinn":[0,62,0.0],"madhulika":[0,6,0.0],"madysn":[0,31,0.0],"maesyn":[32,426,0.495],"mahri":[0,67,0.0],"makaylan":[0,46,0.0],"makhayla":[0,97,0.0],"makhia":[0,764,0.5766],"makinlee":[0,470,0.5344],"makylee":[0,127,0.4208],"malayasia":[0,181,0.4515],"maleehah":[0,18,0.0],"malyna":[0,106,0.4051],"manjari":[0,6,0.0],"mariamu":[0,6,0.0],"marieme":[0,187,0.4544],"markiyah":[0,154,0.4375],"matisyn":[0,86,0.0],"mckensy":[0,11,0.0],"medeline":[0,17,0.0],"melaysia":[0,130,0.4228],"merelin":[0,72,0.0],"miaja":[0,35,0.0],"micalyn":[0,11,0.0],"mirai":[0,403,0.5211],"miral":[0,443,0.5293],"miyona":[0,45,0.0],"moriyah":[0,362,0.5117],"mykaya":[0,12,0.0],"myliah":[0,247,0.4785],"myshae":[0,6,0.0],"mytien":[0,6,0.0],"najada":[0,11,0.0],"nascha":[0,6,0.0],"nasjah":[0,6,0.0],"natahlia":[0,73,0.0],"natalyia":[0,149,0.4346],"navidad":[0,6,0.0],"navleen":[0,37,0.0],"nesiah":[30,88,0.309],"nineth":[0,12,0.0],"noelya":[0,14,0.0],"nubian":[0,37,0.0],"nyelah":[0,125,0.4194],"nykayla":[0,88,0.0],"nykiah":[0,73,0.0],"oaklee":[941,5006,0.6354],"oluwafunmilayo":[0,38,0.0],"ondraya":[0,6,0.0],"ozioma":[0,51,0.0],"paytn":[0,52,0.0],"paytyn":[0,495,0.5389],"priyana":[0,108,0.4067],"prosperity":[0,131,0.4235],"quaniyah":[0,118,0.4144],"quashayla":[0,6,0.0],"railee":[0,340,0.5063],"rakyia":[0,22,0.0],"remya":[0,29,0.0],"rhyana":[0,50,0.0],"rickira":[0,6,0.0],"rickiya":[0,84,0.0],"rilynn":[65,3533,0.6984],"safeya":[0,6,0.0],"saliah":[0,94,0.0],"salmai":[0,26,0.0],"samihah":[0,16,0.0],"semya":[0,148,0.4341],"seynabou":[0,189,0.4553],"shaynne":[0,6,0.0],"shion":[126,38,0.3403],"shmya":[0,41,0.0],"silviana":[0,17,0.0],"simrit":[0,61,0.0],"siona":[0,375,0.5148],"skylia":[0,23,0.0],"sunflower":[0,97,0.0],"syeria":[0,6,0.0],"tahiya":[0,51,0.0],"tahjia":[0,6,0.0],"taijanae":[0,6,0.0],"taionna":[0,27,0.0],"tajiah":[0,6,0.0],"tameah":[0,69,0.0],"tasheona":[0,6,0.0],"tateum":[47,25,0.0],"tayleigh":[0,391,0.5184],"taylur":[0,17,0.0],"torriana":[0,59,0.0],"tykenya":[0,6,0.0],"tynaja":[0,11,0.0],"tyrionna":[0,46,0.0],"tyseana":[0,6,0.0],"valicity":[0,17,0.0],"victoriarose":[0,30,0.0],"xin":[31,210,0.4151],"yenisel":[0,6,0.0],"yomaris":[0,107,0.4059],"yukino":[0,18,0.0],"yume":[0,30,0.0],"zamari":[1505,579,0.4794],"zamiah":[0,499,0.5396],"zariel":[86,231,0.3645],"zayneb":[0,120,0.4158],"zemirah":[0,684,0.567],"ziann":[0,43,0.0],"ziporah":[0,21,0.0],"zithlaly":[0,12,0.0],"zoiee":[0,150,0.4352],"zyana":[0,1003,0.6003],"zyia":[0,157,0.4392],"aania":[0,63,0.0],"abinaya":[0,58,0.0],"abish":[0,24,0.0],"abla":[0,11,0.0],"abrianne":[0,15,0.0],"accalia":[0,109,0.4075],"adaysia":[0,22,0.0],"addilyn":[5,9598,0.7961],"adera":[0,10,0.0],"ady":[0,162,0.4419],"ahmirah":[0,57,0.0],"aideen":[60,140,0.3221],"aishat":[0,71,0.0],"aisosa":[0,64,0.0],"ajsa":[0,21,0.0],"akerah":[0,29,0.0],"akhirah":[0,10,0.0],"akyah":[0,107,0.4059],"alayasia":[0,123,0.418],"alenah":[0,210,0.4644],"alieya":[0,30,0.0],"alikah":[0,11,0.0],"alizeh":[0,275,0.4879],"allaya":[0,87,0.0],"allianna":[0,467,0.5339],"allysah":[0,23,0.0],"almaz":[0,5,0.0],"alynne":[0,29,0.0],"alyssanicole":[0,11,0.0],"amariss":[0,72,0.0],"ambri":[0,84,0.0],"amijah":[0,112,0.4098],"anadia":[0,74,0.0],"anani":[6,319,0.4931],"anaria":[0,305,0.4969],"anaysia":[0,196,0.4585],"aneia":[0,16,0.0],"aneth":[0,254,0.481],"angeleigh":[0,78,0.0],"angyl":[0,10,0.0],"annalina":[0,270,0.4863],"anneshia":[0,5,0.0],"annesophie":[0,47,0.0],"annikah":[0,118,0.4144],"anterria":[0,10,0.0],"anvitha":[0,457,0.532],"anyra":[0,116,0.4129],"aprecious":[0,5,0.0],"aquera":[0,5,0.0],"aradia":[0,156,0.4386],"arazeli":[0,5,0.0],"ariani":[0,603,0.5561],"arieta":[0,10,0.0],"arij":[0,46,0.0],"arismel":[0,5,0.0],"arjanae":[0,29,0.0],"arlethe":[0,23,0.0],"arlynes":[0,5,0.0],"armana":[0,22,0.0],"armonni":[5,32,0.0],"arrieanna":[0,12,0.0],"artemisia":[0,145,0.4323],"aryann":[0,65,0.0],"aryiana":[0,205,0.4624],"asfia":[0,12,0.0],"asjha":[0,28,0.0],"astraya":[0,26,0.0],"athaliah":[0,332,0.5042],"atoria":[0,15,0.0],"aundraya":[0,100,0.4],"aureana":[0,10,0.0],"avamarie":[0,1212,0.6167],"aveonna":[0,31,0.0],"avionce":[0,17,0.0],"avione":[0,5,0.0],"avorie":[0,64,0.0],"axelle":[5,193,0.4477],"ayania":[0,52,0.0],"ayianna":[0,293,0.4934],"ayjah":[0,83,0.0],"azah":[0,21,0.0],"azka":[0,109,0.4075],"azlin":[0,135,0.4261],"azteca":[0,5,0.0],"bassy":[0,134,0.4254],"bergan":[0,58,0.0],"bergin":[0,5,0.0],"berkleigh":[0,681,0.5666],"betul":[0,118,0.4144],"betzabet":[0,29,0.0],"bibian":[0,23,0.0],"bismah":[0,49,0.0],"braleigh":[0,536,0.5458],"brania":[0,18,0.0],"brayleigh":[0,2382,0.6754],"breelle":[0,248,0.4789],"breely":[0,114,0.4114],"brelee":[0,89,0.0],"breshayla":[0,5,0.0],"breyauna":[0,10,0.0],"briance":[0,17,0.0],"brierre":[0,5,0.0],"brieya":[0,5,0.0],"briyanah":[0,16,0.0],"brycelyn":[0,101,0.4009],"caidyn":[807,440,0.4007],"cailynne":[0,22,0.0],"camira":[0,187,0.4544],"camlin":[5,5,0.0],"camryne":[0,5,0.0],"capriana":[0,99,0.0],"cariah":[0,108,0.4067],"carlissia":[0,5,0.0],"carlysha":[0,5,0.0],"casadee":[0,10,0.0],"cassiel":[420,69,0.462],"catalena":[0,159,0.4403],"cederia":[0,5,0.0],"celesse":[0,5,0.0],"celyne":[0,20,0.0],"ceylan":[0,5,0.0],"chakeria":[0,10,0.0],"chamya":[0,119,0.4151],"charmi":[0,15,0.0],"charnesia":[0,5,0.0],"chaylen":[0,32,0.0],"cherysh":[0,209,0.464],"ciela":[0,295,0.494],"citally":[0,5,0.0],"claudya":[0,5,0.0],"cmone":[0,5,0.0],"coralys":[0,5,0.0],"crystyle":[0,5,0.0],"daia":[0,101,0.4009],"dajiana":[0,15,0.0],"dalaysia":[0,225,0.4704],"dalijah":[0,16,0.0],"dalys":[7,17,0.0],"danaija":[0,72,0.0],"danazha":[0,5,0.0],"daneja":[0,30,0.0],"danyae":[0,5,0.0],"daphni":[0,43,0.0],"darielis":[0,67,0.0],"dariella":[0,132,0.4241],"darrianna":[0,31,0.0],"daryana":[0,198,0.4593],"daveona":[0,26,0.0],"dawnae":[0,12,0.0],"dayline":[0,5,0.0],"deajha":[0,12,0.0],"deaysha":[0,20,0.0],"debrianna":[0,21,0.0],"dechanel":[0,5,0.0],"deelilah":[0,5,0.0],"dekyra":[0,27,0.0],"delaynee":[0,218,0.4677],"delexis":[0,5,0.0],"dellaney":[0,16,0.0],"demeree":[0,5,0.0],"demetriona":[0,11,0.0],"denaysia":[0,51,0.0],"deovian":[0,5,0.0],"dequasha":[0,5,0.0],"desmarie":[0,56,0.0],"destiany":[0,5,0.0],"desyrae":[0,18,0.0],"devanny":[0,231,0.4727],"devanshi":[0,211,0.4649],"diamondique":[0,10,0.0],"diamoni":[0,5,0.0],"divia":[0,16,0.0],"dnaja":[0,22,0.0],"doaa":[0,105,0.4042],"eaden":[128,51,0.3222],"ebunoluwa":[0,106,0.4051],"eilidh":[0,263,0.484],"elaiza":[0,139,0.4286],"ele":[0,10,0.0],"eleina":[0,449,0.5304],"eleri":[0,192,0.4567],"elysiana":[0,10,0.0],"emane":[0,5,0.0],"emara":[0,143,0.4311],"emilynn":[0,579,0.5525],"emmary":[0,282,0.49],"emyah":[0,165,0.4435],"enyssa":[0,5,0.0],"esosa":[10,57,0.0],"fardowsa":[0,110,0.4083],"femke":[0,5,0.0],"franey":[0,27,0.0],"frederique":[0,11,0.0],"gehad":[0,5,0.0],"gennavieve":[0,98,0.0],"gesel":[0,5,0.0],"giada":[0,4568,0.7319],"gicel":[0,19,0.0],"gift":[38,165,0.3751],"gizell":[0,96,0.0],"glendi":[0,70,0.0],"gowri":[0,123,0.418],"gulianna":[0,215,0.4665],"hadeer":[0,5,0.0],"haileyann":[0,87,0.0],"halema":[0,15,0.0],"hemma":[0,21,0.0],"hendel":[0,84,0.0],"hevan":[0,18,0.0],"hufsa":[0,5,0.0],"hydiyah":[0,5,0.0],"iceis":[0,71,0.0],"idasia":[0,5,0.0],"ieva":[0,53,0.0],"ijahnae":[0,22,0.0],"iliah":[0,27,0.0],"imya":[0,66,0.0],"indiyah":[0,213,0.4657],"indyia":[0,65,0.0],"iraj":[19,16,0.0],"irelynd":[0,210,0.4644],"ireonna":[0,10,0.0],"irissa":[0,61,0.0],"itsamari":[0,5,0.0],"itzanami":[0,20,0.0],"iviana":[0,231,0.4727],"ivyanna":[0,659,0.5638],"jabreya":[0,5,0.0],"jacarria":[0,5,0.0],"jadalyn":[0,711,0.5704],"jadamarie":[0,107,0.4059],"jadasha":[0,13,0.0],"jahda":[0,28,0.0],"jahlea":[0,31,0.0],"jahmya":[0,250,0.4796],"jaicie":[0,17,0.0],"jakaela":[0,17,0.0],"jakalya":[0,39,0.0],"jalaycia":[0,15,0.0],"jaleeah":[0,162,0.4419],"jalyric":[10,119,0.3894],"jamariah":[0,320,0.501],"jamylah":[0,266,0.485],"jamyria":[0,203,0.4615],"janaee":[0,11,0.0],"janeel":[0,5,0.0],"jarelys":[0,43,0.0],"jasy":[0,5,0.0],"jatiana":[0,10,0.0],"jatonya":[0,5,0.0],"jayleene":[0,232,0.4731],"jaylina":[0,186,0.4539],"jayza":[0,5,0.0],"jazalynn":[0,232,0.4731],"jazzlyne":[0,59,0.0],"jeida":[0,50,0.0],"jeilin":[0,53,0.0],"jelaya":[0,5,0.0],"jeleah":[0,52,0.0],"jelsy":[0,10,0.0],"jemmy":[0,10,0.0],"jenavee":[0,135,0.4261],"jesicah":[0,5,0.0],"jesselin":[0,45,0.0],"jessell":[0,15,0.0],"jessiqua":[0,5,0.0],"jetoi":[0,5,0.0],"jhayda":[0,37,0.0],"jhordyn":[15,107,0.366],"jikayla":[0,5,0.0],"jimaya":[0,53,0.0],"jimiya":[0,11,0.0],"jnaya":[0,85,0.0],"jniya":[0,235,0.4742],"jocellyn":[0,55,0.0],"johnia":[0,44,0.0],"joliet":[0,103,0.4026],"joniah":[0,137,0.4273],"jorrie":[0,5,0.0],"julliet":[0,23,0.0],"jyana":[0,58,0.0],"jynae":[0,10,0.0],"kaimilani":[0,5,0.0],"kaitlynmarie":[0,5,0.0],"kalaysha":[0,32,0.0],"kalyann":[0,5,0.0],"kanyia":[0,146,0.4329],"kassiah":[13,91,0.353],"katelon":[0,5,0.0],"katerinne":[0,11,0.0],"katierra":[0,5,0.0],"kaveri":[0,107,0.4059],"kawther":[0,31,0.0],"kaydin":[1283,545,0.4579],"kaysa":[0,70,0.0],"kaytlyne":[0,5,0.0],"keiajah":[0,10,0.0],"keimora":[0,111,0.4091],"keliah":[0,168,0.4451],"keliana":[0,80,0.0],"keliann":[0,5,0.0],"kemiah":[0,172,0.4471],"kemyah":[0,111,0.4091],"kenjanae":[0,5,0.0],"kensleigh":[0,918,0.5926],"keorra":[0,5,0.0],"kerriana":[0,25,0.0],"keteria":[0,5,0.0],"keyly":[0,268,0.4856],"khaniya":[0,141,0.4298],"khendra":[0,11,0.0],"khora":[0,86,0.0],"khushi":[0,1433,0.6312],"kiania":[0,5,0.0],"kiany":[0,76,0.0],"kiaura":[0,23,0.0],"kiayla":[0,26,0.0],"kilynn":[6,437,0.5221],"kinly":[0,57,0.0],"kiria":[0,25,0.0],"kniya":[0,56,0.0],"korra":[0,1981,0.6594],"krithi":[0,313,0.4991],"kyleena":[0,193,0.4571],"lakelynn":[0,2053,0.6625],"lakyla":[0,123,0.418],"lamani":[5,65,0.0],"lamarria":[0,39,0.0],"lanadia":[0,25,0.0],"lanece":[0,5,0.0],"lastasia":[0,5,0.0],"latyia":[0,5,0.0],"layanna":[0,453,0.5312],"laylaa":[0,131,0.4235],"layloni":[0,410,0.5226],"leelynn":[159,70,0.3277],"lexandria":[0,5,0.0],"lilyth":[0,368,0.5132],"livana":[0,117,0.4136],"lizbeht":[0,29,0.0],"lize":[0,5,0.0],"lizeht":[0,5,0.0],"lizethe":[0,5,0.0],"lizhet":[0,5,0.0],"lonesha":[0,5,0.0],"lyrie":[0,11,0.0],"macailah":[0,5,0.0],"mackinzee":[0,75,0.0],"madeira":[0,27,0.0],"madhumitha":[0,29,0.0],"maelani":[0,676,0.566],"mahailey":[0,22,0.0],"mahana":[0,60,0.0],"mahelet":[0,191,0.4562],"mahoganey":[0,10,0.0],"mairen":[0,83,0.0],"mairim":[0,161,0.4414],"maisyn":[99,1595,0.608],"makalea":[0,5,0.0],"makanna":[0,5,0.0],"makenize":[0,127,0.4208],"makinnah":[0,5,0.0],"makkah":[7,105,0.3842],"makylie":[0,144,0.4317],"malack":[0,5,0.0],"malania":[0,313,0.4991],"malayka":[0,26,0.0],"manreet":[0,199,0.4598],"manyah":[0,42,0.0],"markaysha":[0,5,0.0],"markya":[0,24,0.0],"marlecia":[0,5,0.0],"maryem":[0,96,0.0],"maryfer":[0,206,0.4628],"maryha":[0,5,0.0],"masani":[19,49,0.0],"mashay":[0,5,0.0],"maxeen":[0,18,0.0],"mayara":[0,109,0.4075],"mayleigh":[0,817,0.5824],"maylie":[0,623,0.5589],"mayrin":[0,1116,0.6095],"mckailah":[0,5,0.0],"mckayli":[0,5,0.0],"mckynlee":[0,622,0.5588],"meabh":[0,61,0.0],"mehnaz":[0,41,0.0],"meilynn":[0,48,0.0],"meliyah":[0,492,0.5384],"miajah":[0,11,0.0],"miani":[0,195,0.458],"michia":[0,20,0.0],"mikaiya":[0,65,0.0],"mollyrose":[0,5,0.0],"monserath":[0,149,0.4346],"montiera":[0,5,0.0],"mumtaz":[0,297,0.4946],"mykera":[0,11,0.0],"mylina":[0,32,0.0],"najiah":[0,41,0.0],"nalany":[0,104,0.4034],"nashalee":[0,23,0.0],"nashla":[0,794,0.58],"nasteho":[0,118,0.4144],"naterra":[0,5,0.0],"nawar":[0,5,0.0],"nayleen":[0,295,0.494],"nayma":[0,34,0.0],"nayya":[0,5,0.0],"neelee":[0,5,0.0],"neyah":[0,117,0.4136],"niayla":[0,94,0.0],"nieja":[0,5,0.0],"nikel":[10,5,0.0],"noellia":[0,34,0.0],"nooria":[0,11,0.0],"nusaybah":[0,413,0.5232],"nyajah":[0,111,0.4091],"nycia":[0,5,0.0],"nydirah":[0,11,0.0],"nyliah":[0,289,0.4922],"nyona":[0,16,0.0],"nyonna":[0,145,0.4323],"oniya":[0,69,0.0],"onyinye":[0,26,0.0],"oriah":[5,397,0.5144],"oxana":[0,21,0.0],"peytin":[23,217,0.4304],"phelicity":[0,10,0.0],"phoenyx":[362,687,0.3957],"piilani":[0,5,0.0],"poetry":[0,201,0.4606],"psalm":[567,277,0.3932],"qiarah":[0,5,0.0],"quinaya":[0,5,0.0],"quynhanh":[0,10,0.0],"rabiya":[0,39,0.0],"raeyonna":[0,13,0.0],"rahasia":[0,5,0.0],"rahmah":[0,195,0.458],"raimi":[5,67,0.0],"ranaya":[0,64,0.0],"rejanae":[0,5,0.0],"remiah":[0,72,0.0],"rhionna":[0,35,0.0],"rhyanne":[0,42,0.0],"ricaria":[0,5,0.0],"rieanna":[0,21,0.0],"rikiah":[0,5,0.0],"rilyn":[149,1248,0.5619],"rithika":[0,404,0.5213],"rontasia":[0,5,0.0],"roselani":[0,137,0.4273],"roselynne":[0,101,0.4009],"roshay":[0,5,0.0],"rowyn":[726,2917,0.5703],"rubee":[0,270,0.4863],"ruchoma":[0,32,0.0],"sabrynn":[0,5,0.0],"safah":[0,36,0.0],"sahiti":[0,98,0.0],"sahvana":[0,11,0.0],"sakhi":[26,21,0.0],"sakshi":[0,240,0.476],"saleah":[0,251,0.4799],"salimatou":[0,113,0.4106],"salmah":[0,53,0.0],"samarie":[0,179,0.4506],"sameeha":[0,350,0.5088],"sarahkate":[0,11,0.0],"sarianna":[0,59,0.0],"sarinna":[0,10,0.0],"sashi":[0,32,0.0],"savhannah":[0,5,0.0],"semaya":[0,116,0.4129],"seonna":[0,15,0.0],"shaienne":[0,5,0.0],"shakemmia":[0,5,0.0],"shaliese":[0,5,0.0],"shamoni":[0,30,0.0],"shanyla":[0,373,0.5143],"shayleah":[0,5,0.0],"shemara":[0,5,0.0],"shierra":[0,5,0.0],"shnya":[0,16,0.0],"shravani":[0,27,0.0],"shylla":[0,5,0.0],"shymia":[0,15,0.0],"shyonna":[0,63,0.0],"simrandeep":[0,5,0.0],"skyelynn":[0,346,0.5078],"solace":[179,210,0.2796],"solie":[0,36,0.0],"sondos":[0,124,0.4187],"sravani":[0,23,0.0],"srinidhi":[0,410,0.5226],"starlee":[0,109,0.4075],"sthefany":[0,75,0.0],"sumiya":[0,69,0.0],"summit":[909,206,0.4969],"suriah":[0,130,0.4228],"syaira":[0,5,0.0],"symiah":[0,174,0.4481],"taianna":[0,23,0.0],"taighlor":[0,5,0.0],"taityana":[0,5,0.0],"taityanna":[0,5,0.0],"taiyler":[0,5,0.0],"taizha":[0,5,0.0],"talianna":[0,26,0.0],"tamoni":[0,10,0.0],"tasheyana":[0,5,0.0],"tashionna":[0,5,0.0],"tatiyanah":[0,11,0.0],"tayea":[0,5,0.0],"tazaya":[0,5,0.0],"tekyra":[0,5,0.0],"tepanga":[0,5,0.0],"teshayla":[0,5,0.0],"thomia":[0,16,0.0],"tiferet":[0,41,0.0],"timani":[0,22,0.0],"tionah":[0,5,0.0],"tionni":[0,43,0.0],"tionnie":[0,34,0.0],"tolani":[0,32,0.0],"torilynn":[0,54,0.0],"tramya":[0,103,0.4026],"tranay":[0,5,0.0],"tranea":[0,5,0.0],"traviona":[0,18,0.0],"trinadee":[0,62,0.0],"trinaty":[0,144,0.4317],"trinidee":[0,128,0.4214],"tristiana":[0,11,0.0],"tryniti":[0,157,0.4392],"tsega":[0,10,0.0],"tyannah":[0,85,0.0],"tyche":[0,5,0.0],"tydashia":[0,5,0.0],"tyonne":[33,16,0.0],"tyshayla":[0,11,0.0],"ushna":[0,15,0.0],"valeriana":[0,16,0.0],"vanitie":[0,5,0.0],"velicity":[0,22,0.0],"vlada":[0,77,0.0],"wayneshia":[0,11,0.0],"wendolyne":[0,5,0.0],"whysper":[0,5,0.0],"xania":[0,60,0.0],"xyla":[0,1987,0.6596],"yahilin":[0,13,0.0],"yaneisy":[0,189,0.4553],"yarelie":[0,131,0.4235],"yary":[0,10,0.0],"yaslyn":[0,213,0.4657],"yeilin":[0,330,0.5037],"yomna":[0,53,0.0],"yujin":[38,35,0.0],"yusmeri":[0,5,0.0],"zabdi":[33,146,0.3675],"zakyrah":[0,52,0.0],"zanab":[0,25,0.0],"zanaria":[0,215,0.4665],"zanasia":[0,67,0.0],"zannah":[0,133,0.4248],"zanteria":[0,5,0.0],"zekiah":[328,94,0.4081],"zemira":[0,790,0.5795],"zendy":[0,5,0.0],"zene":[0,15,0.0],"ziaira":[0,30,0.0],"zoeanna":[0,10,0.0],"zophia":[0,669,0.5651],"zuzu":[0,301,0.4957],"cauy":[187,0,0.4544],"rahzel":[40,0,0.0],"carlosdaniel":[84,0,0.0],"braijon":[21,0,0.0],"yadiel":[3930,0,0.7189],"andrik":[769,0,0.5772],"cincere":[725,133,0.4958],"sabien":[196,0,0.4585],"zyion":[1354,194,0.558],"zykeith":[20,0,0.0],"braeton":[65,0,0.0],"izaah":[78,0,0.0],"zair":[601,0,0.5558],"ankith":[89,0,0.0],"antavion":[137,0,0.4273],"caedmon":[926,0,0.5933],"khalib":[214,0,0.4661],"khamron":[116,0,0.4129],"meet":[97,0,0.0],"zayvion":[2103,0,0.6646],"ziyon":[845,109,0.5278],"drayden":[2129,0,0.6656],"emeril":[70,16,0.0],"jahquez":[141,0,0.4298],"janoah":[310,0,0.4983],"malakhi":[2916,0,0.693],"nykel":[47,0,0.0],"pacen":[108,0,0.4067],"xion":[912,65,0.5582],"aizik":[269,0,0.486],"anddy":[69,0,0.0],"jaan":[146,0,0.4329],"kenaz":[124,0,0.4187],"larrion":[56,0,0.0],"migelangel":[14,0,0.0],"nysir":[350,0,0.5088],"reyhan":[134,98,0.2733],"riston":[43,0,0.0],"saafir":[150,0,0.4352],"siddhant":[579,0,0.5525],"sirius":[689,5,0.5642],"stran":[149,0,0.4346],"taeshaun":[221,0,0.4689],"tejaun":[14,0,0.0],"thaniel":[86,0,0.0],"trajen":[55,0,0.0],"trejohn":[20,0,0.0],"treysen":[339,0,0.506],"tykevious":[42,0,0.0],"tyreace":[9,0,0.0],"tzion":[167,0,0.4445],"younes":[577,0,0.5522],"zakariyya":[254,0,0.481],"andric":[148,0,0.4341],"ashaad":[125,0,0.4194],"belmin":[61,0,0.0],"carrson":[182,0,0.452],"dacari":[413,0,0.5232],"dalson":[45,0,0.0],"fabrizzio":[141,0,0.4298],"hrishikesh":[91,0,0.0],"isaiaha":[13,0,0.0],"issaic":[78,0,0.0],"izea":[67,0,0.0],"jacolbi":[32,0,0.0],"jaspar":[60,0,0.0],"jayren":[593,0,0.5546],"jylon":[23,0,0.0],"kaedyn":[1514,672,0.4626],"kavonta":[13,0,0.0],"kellar":[98,0,0.0],"latavion":[135,0,0.4261],"latravion":[118,0,0.4144],"layden":[1108,74,0.5761],"macalister":[96,0,0.0],"myson":[311,0,0.4986],"nahzir":[210,0,0.4644],"nasair":[26,0,0.0],"natrell":[39,0,0.0],"nerses":[8,0,0.0],"ojas":[600,0,0.5556],"quion":[52,0,0.0],"rancel":[8,0,0.0],"ransel":[8,0,0.0],"ries":[49,0,0.0],"samil":[135,0,0.4261],"shaunak":[271,0,0.4866],"siah":[335,206,0.3385],"taeveon":[211,0,0.4649],"tanuj":[70,0,0.0],"taveion":[54,0,0.0],"tyreick":[8,0,0.0],"tyriese":[8,0,0.0],"tyrise":[8,0,0.0],"yahye":[338,0,0.5058],"advait":[742,0,0.5741],"amadu":[115,0,0.4121],"anterious":[7,0,0.0],"aronde":[37,0,0.0],"atharva":[1022,0,0.6019],"azion":[290,21,0.4649],"braelen":[273,0,0.4872],"breydan":[289,0,0.4922],"cammron":[26,0,0.0],"charlesanthony":[7,0,0.0],"chemar":[34,0,0.0],"dayvin":[117,0,0.4136],"degan":[539,0,0.5463],"deylan":[143,0,0.4311],"dilen":[40,0,0.0],"elizjah":[98,0,0.0],"finnigan":[1302,0,0.6229],"finnley":[5316,2351,0.5387],"gurbir":[7,0,0.0],"gyan":[202,0,0.4611],"harith":[113,0,0.4106],"isahi":[172,0,0.4471],"jacobalexander":[14,0,0.0],"jacorion":[114,0,0.4114],"jaewon":[47,0,0.0],"jalante":[7,0,0.0],"janari":[215,128,0.3178],"javani":[166,14,0.416],"johnallen":[20,0,0.0],"kaeson":[1071,0,0.606],"kaidon":[640,0,0.5612],"keltin":[84,0,0.0],"kemarcus":[7,0,0.0],"keyonne":[27,0,0.0],"khyler":[662,123,0.4883],"kiaeem":[25,0,0.0],"kyreek":[7,0,0.0],"machi":[335,0,0.505],"marqwan":[12,0,0.0],"masin":[310,0,0.4983],"myon":[57,0,0.0],"piercen":[203,0,0.4615],"quinnlan":[118,27,0.3518],"qwentin":[48,0,0.0],"raden":[165,0,0.4435],"rayvion":[87,0,0.0],"ritvik":[487,0,0.5375],"saliou":[142,0,0.4305],"samaje":[44,0,0.0],"shamod":[7,0,0.0],"slayde":[339,0,0.506],"sofian":[82,0,0.0],"sudarshan":[41,0,0.0],"taelon":[97,0,0.0],"tavias":[7,0,0.0],"tayven":[680,48,0.5347],"teigen":[401,429,0.3018],"trejaun":[12,0,0.0],"treylen":[127,0,0.4208],"treyvonte":[7,0,0.0],"tyreise":[7,0,0.0],"veshawn":[7,0,0.0],"yehya":[88,0,0.0],"younis":[652,0,0.5628],"yupheng":[7,0,0.0],"ze":[39,0,0.0],"zoren":[118,0,0.4144],"abdiaziz":[191,0,0.4562],"abhijeet":[45,0,0.0],"abhilash":[22,0,0.0],"abrion":[11,0,0.0],"adyn":[1414,114,0.5893],"amontay":[19,0,0.0],"amun":[157,0,0.4392],"anass":[30,0,0.0],"anes":[120,0,0.4158],"arib":[66,0,0.0],"aum":[249,0,0.4792],"azahel":[143,0,0.4311],"azzan":[70,0,0.0],"berg":[6,0,0.0],"caleab":[19,0,0.0],"caulen":[11,0,0.0],"chadarius":[6,0,0.0],"chinemerem":[38,10,0.0],"coleten":[13,0,0.0],"coreyon":[163,0,0.4424],"danieljohn":[12,0,0.0],"daquavion":[79,0,0.0],"daytin":[56,0,0.0],"dedrian":[11,0,0.0],"demere":[145,0,0.4323],"deshard":[6,0,0.0],"destan":[120,0,0.4158],"devione":[11,0,0.0],"devionne":[18,0,0.0],"dominyk":[181,0,0.4515],"dontaz":[6,0,0.0],"dravyn":[248,0,0.4789],"drelon":[37,0,0.0],"edwardjames":[6,0,0.0],"exodus":[561,79,0.492],"eziah":[675,5,0.5623],"gaddiel":[273,0,0.4872],"gedalya":[194,0,0.4576],"georgeanthony":[6,0,0.0],"gradyn":[250,0,0.4796],"grainger":[152,0,0.4364],"greyden":[374,0,0.5146],"gunnison":[99,0,0.0],"hussin":[6,0,0.0],"inmer":[126,0,0.4201],"izzak":[131,0,0.4235],"jabraun":[6,0,0.0],"jacobrobert":[6,0,0.0],"jadakis":[31,0,0.0],"jadarrion":[51,0,0.0],"jahmani":[148,0,0.4341],"jahri":[88,6,0.0],"jamaury":[210,0,0.4644],"jamicah":[107,0,0.4059],"jamorie":[46,0,0.0],"jasjeet":[6,0,0.0],"jatavian":[101,0,0.4009],"jatniel":[410,0,0.5226],"jaylond":[19,0,0.0],"jayman":[6,0,0.0],"jden":[302,0,0.496],"jkai":[104,0,0.4034],"jonethen":[6,0,0.0],"josejr":[12,0,0.0],"josericardo":[6,0,0.0],"juliun":[56,0,0.0],"jvonne":[6,0,0.0],"kahree":[11,0,0.0],"kaleob":[19,0,0.0],"kamare":[198,5,0.4501],"kavari":[256,0,0.4816],"kaylem":[142,0,0.4305],"keigo":[91,0,0.0],"kelten":[103,0,0.4026],"kelvontae":[11,0,0.0],"keontez":[12,0,0.0],"khalan":[192,0,0.4567],"knoah":[305,5,0.4902],"kolbee":[61,94,0.2657],"krisean":[27,0,0.0],"kwali":[63,0,0.0],"kyaire":[1661,50,0.6278],"lochlann":[408,0,0.5221],"lyth":[6,0,0.0],"mamadi":[33,0,0.0],"massiah":[1385,93,0.594],"mekai":[550,0,0.5481],"mohamud":[251,0,0.4799],"moisses":[12,0,0.0],"montavian":[6,0,0.0],"montaz":[16,0,0.0],"mozes":[73,0,0.0],"moziah":[96,0,0.0],"muadh":[228,0,0.4716],"naason":[54,0,0.0],"naazir":[84,0,0.0],"najier":[11,0,0.0],"naszir":[258,0,0.4823],"naython":[23,0,0.0],"nazire":[105,0,0.4042],"nevyn":[146,5,0.4214],"nylan":[539,105,0.4702],"odysseus":[482,0,0.5366],"pedroluis":[6,0,0.0],"peerless":[6,0,0.0],"praneeth":[110,0,0.4083],"pranjal":[23,29,0.0],"prashanth":[6,0,0.0],"quameer":[11,0,0.0],"rahib":[6,0,0.0],"ranzel":[6,0,0.0],"renton":[144,0,0.4317],"rigby":[373,106,0.4174],"rily":[16,63,0.0],"rishon":[218,0,0.4677],"saddiq":[20,0,0.0],"sarthak":[330,0,0.5037],"seanan":[18,0,0.0],"serbando":[18,0,0.0],"sevren":[25,0,0.0],"shymeek":[6,0,0.0],"sidhant":[94,0,0.0],"srinath":[32,0,0.0],"steban":[35,0,0.0],"taheim":[39,0,0.0],"tairiq":[6,0,0.0],"taisei":[155,0,0.4381],"talhah":[28,0,0.0],"tamere":[11,0,0.0],"tayvin":[429,19,0.5078],"traymon":[31,0,0.0],"treighton":[54,0,0.0],"trelin":[22,0,0.0],"tyair":[74,0,0.0],"tyki":[16,0,0.0],"tymell":[21,0,0.0],"tyquese":[6,0,0.0],"umut":[58,0,0.0],"xabier":[56,0,0.0],"xavyer":[185,0,0.4534],"yasim":[23,0,0.0],"yevgeniy":[6,0,0.0],"zaaron":[16,0,0.0],"zadrian":[360,0,0.5113],"zayan":[2053,0,0.6625],"zeshawn":[37,0,0.0],"zorian":[298,0,0.4948],"aaronjohn":[21,0,0.0],"aashay":[50,0,0.0],"abdikarim":[33,0,0.0],"abdinasir":[215,0,0.4665],"abin":[10,0,0.0],"acxel":[249,0,0.4792],"addonis":[42,0,0.0],"ahijah":[80,0,0.0],"airron":[5,0,0.0],"aitor":[86,0,0.0],"ajdin":[343,0,0.5071],"ajon":[39,0,0.0],"akhir":[30,0,0.0],"alantae":[10,0,0.0],"alassane":[143,0,0.4311],"alazar":[199,0,0.4598],"aldayr":[5,0,0.0],"aleksandre":[11,0,0.0],"alexanderjames":[105,0,0.4042],"alyas":[305,0,0.4969],"amanjot":[5,0,0.0],"amonti":[55,5,0.0],"aneas":[16,0,0.0],"angelluis":[22,0,0.0],"anubhav":[10,0,0.0],"arav":[941,0,0.5947],"arbi":[18,0,0.0],"armaun":[10,0,0.0],"arshon":[5,0,0.0],"ashwath":[214,0,0.4661],"assael":[37,0,0.0],"audin":[25,10,0.0],"aydon":[693,0,0.5681],"baran":[182,89,0.3268],"bayler":[346,196,0.3491],"branston":[121,0,0.4166],"brayen":[137,0,0.4273],"brhett":[5,0,0.0],"briceton":[37,0,0.0],"briyan":[111,0,0.4091],"caimon":[5,0,0.0],"callon":[79,0,0.0],"camiren":[43,0,0.0],"cannen":[199,0,0.4598],"carleon":[17,0,0.0],"cashton":[2697,0,0.6862],"cavion":[101,0,0.4009],"chant":[5,0,0.0],"chanton":[5,0,0.0],"chinmay":[181,0,0.4515],"claytin":[57,0,0.0],"corson":[52,0,0.0],"cortlen":[27,0,0.0],"coryon":[44,0,0.0],"creek":[425,0,0.5257],"cylis":[450,0,0.5306],"dacorian":[61,0,0.0],"daden":[105,0,0.4042],"daeqwon":[10,0,0.0],"daeshun":[20,0,0.0],"dagem":[49,0,0.0],"dagmawi":[192,0,0.4567],"daimien":[123,0,0.418],"dajuon":[5,0,0.0],"dameer":[157,0,0.4392],"dameir":[174,0,0.4481],"damyn":[86,0,0.0],"daquarious":[11,0,0.0],"darinel":[78,0,0.0],"darique":[5,0,0.0],"davarrio":[5,0,0.0],"dawton":[34,0,0.0],"dayven":[143,0,0.4311],"dazmond":[5,0,0.0],"deaglan":[524,0,0.5439],"deautre":[5,0,0.0],"debron":[48,0,0.0],"decorion":[55,0,0.0],"dejontae":[5,0,0.0],"delandre":[5,0,0.0],"demacio":[17,0,0.0],"demareon":[80,0,0.0],"demeris":[5,0,0.0],"denin":[5,0,0.0],"deviyon":[5,0,0.0],"dez":[351,0,0.5091],"dezhan":[5,0,0.0],"dezmend":[27,0,0.0],"dhillon":[61,0,0.0],"dimari":[53,0,0.0],"donnaven":[16,0,0.0],"dquavion":[5,0,0.0],"draquan":[5,0,0.0],"dreyden":[554,0,0.5487],"duryea":[5,0,0.0],"duvan":[112,0,0.4098],"dyontae":[5,0,0.0],"eaven":[98,0,0.0],"edilson":[178,0,0.4501],"egzon":[16,0,0.0],"eid":[10,0,0.0],"ejay":[165,0,0.4435],"eliahs":[100,0,0.4],"emaad":[126,0,0.4201],"emauri":[167,42,0.3708],"endrew":[5,0,0.0],"enosh":[17,0,0.0],"ericdaniel":[5,0,0.0],"ermias":[2060,6,0.6611],"escher":[335,0,0.505],"estin":[45,0,0.0],"eziquio":[5,0,0.0],"feodor":[5,0,0.0],"fher":[56,0,0.0],"gabrel":[29,0,0.0],"gaege":[66,0,0.0],"ganon":[271,0,0.4866],"genner":[5,0,0.0],"givanni":[126,0,0.4201],"govind":[126,0,0.4201],"haadi":[291,0,0.4928],"halil":[94,0,0.0],"henrri":[10,0,0.0],"himanshu":[25,0,0.0],"hossam":[62,0,0.0],"ido":[147,0,0.4335],"ilyaas":[161,0,0.4414],"isahiah":[5,0,0.0],"itay":[174,0,0.4481],"izaha":[67,0,0.0],"izavier":[15,0,0.0],"jaavon":[5,0,0.0],"jacameron":[27,0,0.0],"jadiah":[65,31,0.0],"jaeshawn":[176,0,0.4491],"jaeshon":[32,0,0.0],"jafeth":[245,0,0.4778],"jahmali":[25,0,0.0],"jahque":[5,0,0.0],"jaijuan":[16,0,0.0],"jaion":[350,0,0.5088],"jaise":[251,22,0.448],"jaivian":[90,0,0.0],"jakolby":[177,0,0.4496],"jalend":[10,0,0.0],"jalontae":[21,0,0.0],"jamareon":[241,0,0.4764],"jamontez":[5,0,0.0],"jamyron":[91,0,0.0],"jarien":[35,0,0.0],"jasher":[219,0,0.4681],"jassim":[78,0,0.0],"jathaniel":[57,0,0.0],"javaree":[36,0,0.0],"javontez":[24,0,0.0],"jayshun":[111,0,0.4091],"jefri":[30,0,0.0],"jehron":[5,0,0.0],"jenssy":[5,0,0.0],"jeon":[10,0,0.0],"jerious":[5,0,0.0],"jerius":[36,0,0.0],"jhalin":[10,0,0.0],"jimere":[10,0,0.0],"joelan":[5,0,0.0],"joevanni":[71,0,0.0],"johar":[5,0,0.0],"johnavan":[41,0,0.0],"jonmatthew":[5,0,0.0],"jonquel":[10,0,0.0],"joshuapaul":[12,0,0.0],"joshuel":[30,0,0.0],"jovawn":[18,0,0.0],"judon":[10,0,0.0],"jujhar":[155,0,0.4381],"justas":[5,0,0.0],"jvonn":[5,0,0.0],"jyquan":[90,0,0.0],"jyvon":[5,0,0.0],"kadari":[27,0,0.0],"kaelib":[58,0,0.0],"kahl":[22,0,0.0],"kahlel":[72,0,0.0],"kaishon":[5,0,0.0],"kalique":[45,0,0.0],"kamaris":[10,0,0.0],"kamauri":[781,338,0.4256],"kanai":[369,156,0.3824],"karion":[89,5,0.0],"kasin":[392,0,0.5187],"kavian":[165,0,0.4435],"kavika":[25,0,0.0],"kawaiola":[5,0,0.0],"keandrae":[10,0,0.0],"keesean":[15,0,0.0],"keiren":[93,5,0.0],"kelijah":[163,12,0.4178],"kendry":[479,38,0.5028],"kenron":[5,0,0.0],"kenye":[21,0,0.0],"kewuan":[19,0,0.0],"khairee":[11,0,0.0],"khi":[354,27,0.4796],"khriston":[5,0,0.0],"khyron":[152,0,0.4364],"kogan":[16,0,0.0],"kolden":[294,0,0.4937],"kyell":[53,0,0.0],"kyheim":[29,0,0.0],"kyion":[250,0,0.4796],"kylel":[10,0,0.0],"kyreese":[187,0,0.4544],"lanz":[33,0,0.0],"loay":[80,0,0.0],"loden":[116,0,0.4129],"loudon":[109,0,0.4075],"luchiano":[117,0,0.4136],"luken":[277,0,0.4885],"macade":[40,0,0.0],"makonnen":[27,0,0.0],"martaveous":[5,0,0.0],"martir":[25,0,0.0],"matteus":[215,0,0.4665],"maximos":[599,0,0.5555],"mckaden":[23,0,0.0],"mckennan":[10,0,0.0],"mckoy":[263,0,0.484],"mesiah":[478,5,0.5312],"micco":[160,0,0.4408],"michaeljr":[5,0,0.0],"mirsad":[10,0,0.0],"moeez":[21,0,0.0],"molik":[5,0,0.0],"mosha":[42,0,0.0],"naail":[18,0,0.0],"nahome":[77,0,0.0],"najji":[5,0,0.0],"najuan":[5,0,0.0],"nasire":[75,0,0.0],"navi":[389,1393,0.5083],"negus":[11,0,0.0],"nemanja":[50,0,0.0],"nigal":[16,0,0.0],"nihaal":[202,5,0.452],"nijay":[41,35,0.0],"nish":[20,0,0.0],"nuriel":[109,0,0.4075],"nyair":[223,5,0.4612],"ojany":[11,0,0.0],"onkar":[16,0,0.0],"onorio":[5,0,0.0],"osagie":[36,0,0.0],"osahon":[16,0,0.0],"osiah":[292,0,0.4931],"owin":[202,0,0.4611],"pavle":[133,0,0.4248],"prit":[20,0,0.0],"qaasim":[27,0,0.0],"qais":[424,0,0.5255],"quaheem":[5,0,0.0],"quartey":[5,0,0.0],"quaylan":[5,0,0.0],"quetzalcoatl":[15,0,0.0],"quinshon":[5,0,0.0],"raahul":[5,0,0.0],"rachmiel":[5,0,0.0],"raees":[58,0,0.0],"rahsaun":[10,0,0.0],"raiyan":[348,0,0.5083],"ralen":[26,0,0.0],"rasun":[5,0,0.0],"raydel":[205,0,0.4624],"regulo":[15,0,0.0],"riis":[10,0,0.0],"rodre":[5,0,0.0],"rondez":[5,0,0.0],"rope":[34,0,0.0],"rujul":[5,0,0.0],"sabion":[15,0,0.0],"sadeeq":[5,0,0.0],"sager":[19,0,0.0],"sailesh":[20,0,0.0],"saivion":[92,0,0.0],"sanchit":[20,0,0.0],"santhosh":[60,0,0.0],"sarbjot":[5,0,0.0],"sashank":[36,0,0.0],"sevyn":[1918,3411,0.4771],"seydina":[114,0,0.4114],"shahmir":[48,0,0.0],"shahryar":[15,0,0.0],"shihab":[94,0,0.0],"shishir":[71,0,0.0],"sinjon":[5,0,0.0],"sirgio":[5,0,0.0],"skylen":[150,236,0.3163],"slayter":[171,0,0.4466],"sokol":[5,0,0.0],"srivatsan":[10,0,0.0],"stayton":[10,0,0.0],"subhi":[15,0,0.0],"tahaj":[34,0,0.0],"taion":[18,0,0.0],"tamaurice":[5,0,0.0],"tameer":[18,0,0.0],"taseen":[150,0,0.4352],"tavain":[5,0,0.0],"tavari":[105,0,0.4042],"tayber":[10,0,0.0],"tayvonne":[5,0,0.0],"tendai":[5,0,0.0],"tereon":[5,0,0.0],"terrique":[5,0,0.0],"teveon":[10,0,0.0],"thaj":[5,0,0.0],"tharyn":[5,0,0.0],"thomason":[12,0,0.0],"tirese":[5,0,0.0],"tobechukwu":[206,0,0.4628],"tobenna":[257,0,0.482],"torique":[5,0,0.0],"traeshawn":[35,0,0.0],"traquez":[5,0,0.0],"tregan":[64,0,0.0],"trevore":[5,0,0.0],"treydon":[162,0,0.4419],"trezon":[12,0,0.0],"trison":[37,0,0.0],"tucson":[5,0,0.0],"tylerjohn":[5,0,0.0],"tylis":[5,0,0.0],"tyneil":[5,0,0.0],"tyreec":[5,0,0.0],"tyreeck":[5,0,0.0],"tyrekus":[5,0,0.0],"tyshiem":[5,0,0.0],"tysun":[65,0,0.0],"tyveon":[40,0,0.0],"ved":[1766,0,0.6494],"vershon":[10,0,0.0],"vidur":[81,0,0.0],"vyshonne":[12,0,0.0],"xiaver":[5,0,0.0],"xzavien":[267,0,0.4853],"xzavyer":[34,0,0.0],"yaseer":[59,0,0.0],"yaya":[65,0,0.0],"yehia":[150,0,0.4352],"zaden":[2241,0,0.6701],"zakarias":[41,0,0.0],"zakeem":[34,0,0.0],"zamuel":[19,0,0.0],"zavery":[46,5,0.0],"zavior":[326,0,0.5026],"zecharia":[89,0,0.0],"zhamir":[173,0,0.4476],"ziair":[230,0,0.4723],"ziere":[83,0,0.0],"ziven":[77,0,0.0],"zivon":[16,0,0.0],"zyier":[452,0,0.531],"zyquez":[38,0,0.0],"zyron":[273,0,0.4872],"zyshaun":[34,0,0.0],"kelis":[6,2845,0.6895],"yatzari":[0,210,0.4644],"marisleysis":[0,44,0.0],"marialy":[0,105,0.4042],"beyounce":[0,61,0.0],"yatzary":[0,92,0.0],"midajah":[0,59,0.0],"trinady":[0,160,0.4408],"mariali":[0,25,0.0],"quantaya":[0,21,0.0],"sissi":[0,74,0.0],"abriella":[0,1943,0.6577],"anjolie":[0,417,0.524],"damyia":[0,167,0.4445],"letzy":[0,112,0.4098],"monzerrath":[0,145,0.4323],"yamille":[0,43,0.0],"layza":[0,78,0.0],"litsy":[0,92,0.0],"daebreon":[5,13,0.0],"deniya":[0,395,0.5193],"lytzy":[0,50,0.0],"sahithi":[0,219,0.4681],"harshini":[0,283,0.4904],"honesti":[0,1067,0.6056],"monserratt":[0,184,0.453],"sonique":[0,24,0.0],"yaquelyn":[0,40,0.0],"aerionna":[0,123,0.418],"alaiza":[0,295,0.494],"amaiah":[0,805,0.5812],"ariba":[0,145,0.4323],"belmaris":[0,11,0.0],"beyza":[0,166,0.444],"diavionne":[0,16,0.0],"haniyah":[0,346,0.5078],"hopemarie":[0,11,0.0],"jozee":[0,182,0.452],"lainy":[0,189,0.4553],"litzzy":[0,43,0.0],"nyaira":[0,245,0.4778],"pranavi":[0,524,0.5439],"shariya":[0,361,0.5115],"tyniah":[0,122,0.4173],"aayushi":[0,250,0.4796],"ailyne":[0,64,0.0],"alleyna":[0,42,0.0],"dakiya":[0,137,0.4273],"elizaveta":[0,444,0.5295],"emiah":[0,222,0.4693],"gracianna":[0,146,0.4329],"harnoor":[97,349,0.4146],"iyani":[0,202,0.4611],"iyonnah":[0,65,0.0],"leslyann":[0,16,0.0],"madajah":[0,19,0.0],"makaylen":[0,107,0.4059],"myrical":[0,336,0.5053],"raeley":[0,294,0.4937],"ramiya":[0,415,0.5236],"siya":[0,2879,0.6918],"torionna":[0,39,0.0],"yunique":[0,107,0.4059],"zyla":[0,2273,0.6713],"adya":[0,454,0.5314],"aishani":[0,518,0.5429],"alancia":[0,9,0.0],"amritha":[0,101,0.4009],"amunet":[0,83,0.0],"anjolina":[0,156,0.4386],"anoushka":[0,637,0.5608],"baneen":[0,144,0.4317],"beyonca":[0,181,0.4515],"blerta":[0,23,0.0],"clowie":[0,49,0.0],"daisee":[0,162,0.4419],"danijah":[0,195,0.458],"danixa":[0,37,0.0],"esbeydi":[0,103,0.4026],"hallah":[0,14,0.0],"jadore":[154,1124,0.5464],"jakaylah":[0,317,0.5002],"janiaya":[0,184,0.453],"jerni":[0,137,0.4273],"jizel":[0,145,0.4323],"kairah":[0,222,0.4693],"kalese":[0,147,0.4335],"kashya":[0,19,0.0],"keaisa":[0,16,0.0],"kearrah":[0,22,0.0],"keniah":[0,231,0.4727],"marielly":[0,51,0.0],"matigan":[0,44,0.0],"mikayah":[0,141,0.4298],"montzerrat":[0,136,0.4267],"naiyah":[0,375,0.5148],"regann":[0,38,0.0],"samhitha":[0,229,0.472],"snigdha":[0,223,0.4697],"sumeya":[0,262,0.4837],"trynitee":[0,59,0.0],"xcaret":[0,105,0.4042],"yamia":[0,19,0.0],"yamiled":[0,37,0.0],"zanyah":[0,569,0.551],"abri":[0,239,0.4757],"akiria":[0,39,0.0],"alaira":[0,193,0.4571],"amali":[0,253,0.4806],"amariya":[0,594,0.5548],"anayia":[0,167,0.4445],"anniya":[0,238,0.4753],"aylinn":[0,278,0.4888],"ayva":[0,3750,0.7148],"bariah":[0,13,0.0],"blessings":[0,220,0.4685],"braylie":[0,651,0.5627],"brisamar":[0,13,0.0],"cambryn":[38,164,0.3743],"caniya":[0,272,0.4869],"chailyn":[0,144,0.4317],"christyle":[0,8,0.0],"cloee":[0,231,0.4727],"ellah":[0,1004,0.6003],"ellyana":[0,1478,0.6339],"enijah":[0,170,0.4461],"evanie":[0,355,0.51],"fianna":[0,262,0.4837],"hadel":[0,8,0.0],"hero":[739,214,0.462],"ishika":[0,1054,0.6046],"iuma":[0,8,0.0],"iyari":[6,214,0.4557],"jaanai":[0,129,0.4221],"jadalynn":[0,703,0.5694],"jazlene":[0,1474,0.6337],"jeylin":[0,380,0.516],"joydan":[0,86,0.0],"kalis":[5,256,0.4741],"katrielle":[0,37,0.0],"keanah":[0,43,0.0],"khalani":[61,2378,0.6605],"kyriana":[0,145,0.4323],"leylah":[0,956,0.5961],"mahika":[0,532,0.5452],"makynzee":[0,164,0.443],"mariangel":[0,514,0.5422],"marileysis":[0,8,0.0],"miabella":[0,2002,0.6603],"mileny":[0,29,0.0],"minaya":[0,28,0.0],"nasra":[0,322,0.5016],"raenah":[0,79,0.0],"sarely":[0,62,0.0],"saryah":[0,603,0.5561],"sayana":[0,155,0.4381],"sheradyn":[0,18,0.0],"shiyanne":[0,19,0.0],"skyanna":[0,70,0.0],"tailey":[0,67,0.0],"taishima":[0,8,0.0],"yelixa":[0,8,0.0],"zamiya":[0,720,0.5715],"zanaiya":[0,113,0.4106],"zareia":[0,14,0.0],"zeniah":[0,338,0.5058],"abbiegale":[0,58,0.0],"abirami":[0,36,0.0],"adanya":[0,193,0.4571],"adithi":[0,467,0.5339],"ahana":[0,1278,0.6213],"aleeha":[0,155,0.4381],"alyca":[0,7,0.0],"analeese":[0,79,0.0],"angellee":[0,111,0.4091],"anjeli":[0,78,0.0],"anvi":[0,1293,0.6223],"asalah":[0,17,0.0],"azaleah":[0,667,0.5648],"branwyn":[0,7,0.0],"braydee":[5,103,0.3879],"brighten":[165,98,0.3036],"cania":[0,13,0.0],"caslyn":[0,23,0.0],"christiyana":[0,22,0.0],"daianna":[0,127,0.4208],"danait":[0,18,0.0],"darinka":[0,53,0.0],"datavia":[0,12,0.0],"dayse":[0,7,0.0],"delainee":[0,155,0.4381],"delasia":[0,59,0.0],"desani":[40,95,0.2998],"dnia":[0,34,0.0],"emelee":[0,76,0.0],"enaya":[0,387,0.5175],"faithanne":[0,63,0.0],"freesia":[0,7,0.0],"gabbie":[0,225,0.4704],"genavive":[0,84,0.0],"gizzelle":[0,117,0.4136],"graycie":[0,487,0.5375],"gyanna":[0,231,0.4727],"halo":[749,4029,0.6205],"hanalei":[16,260,0.4599],"haniah":[0,128,0.4214],"ikran":[0,189,0.4553],"irianna":[0,215,0.4665],"izadora":[0,261,0.4833],"jakaia":[0,49,0.0],"jamarria":[0,100,0.4],"jansyn":[18,25,0.0],"janyra":[0,95,0.0],"jaqueria":[0,12,0.0],"jariana":[0,121,0.4166],"jatava":[0,7,0.0],"jazia":[0,85,0.0],"jenasia":[0,88,0.0],"jennaya":[0,87,0.0],"jeydi":[0,91,0.0],"jezabelle":[0,174,0.4481],"jocey":[0,59,0.0],"jorah":[248,77,0.3834],"josabeth":[0,171,0.4466],"julienna":[0,23,0.0],"kaeleah":[0,7,0.0],"kahleah":[0,175,0.4486],"kariya":[0,113,0.4106],"kayliah":[0,251,0.4799],"kenslie":[0,586,0.5536],"keyonce":[0,52,0.0],"khiley":[0,184,0.453],"khloey":[0,779,0.5783],"kynia":[0,52,0.0],"lakaila":[0,24,0.0],"lanyah":[0,462,0.5329],"lasya":[0,334,0.5047],"lidija":[0,7,0.0],"maaliyah":[0,300,0.4954],"madasen":[0,19,0.0],"maeli":[0,447,0.5301],"makailey":[0,71,0.0],"marijayne":[0,62,0.0],"mattisyn":[0,199,0.4598],"mckenzye":[0,168,0.4451],"mikaili":[0,90,0.0],"mikira":[0,30,0.0],"millenium":[0,7,0.0],"mirium":[0,7,0.0],"momo":[0,82,0.0],"monse":[0,178,0.4501],"montse":[0,7,0.0],"nakasia":[0,7,0.0],"namya":[0,325,0.5024],"nashya":[0,119,0.4151],"nashyra":[0,17,0.0],"natalyah":[0,205,0.4624],"nayanna":[0,109,0.4075],"naydia":[0,12,0.0],"neneh":[0,29,0.0],"phiona":[0,128,0.4214],"prayer":[14,96,0.3563],"prissila":[0,17,0.0],"quashia":[0,7,0.0],"quintaya":[0,7,0.0],"raniah":[0,394,0.5191],"raylie":[0,387,0.5175],"ryllie":[0,72,0.0],"samyuktha":[0,261,0.4833],"sekai":[227,82,0.3658],"shadajah":[0,7,0.0],"shanija":[0,38,0.0],"shaunia":[0,7,0.0],"sinay":[0,55,0.0],"skylarr":[0,88,0.0],"solara":[0,712,0.5705],"solene":[0,330,0.5037],"soley":[0,194,0.4576],"taetum":[26,139,0.3736],"tahniya":[0,35,0.0],"takirra":[0,7,0.0],"tanaisa":[0,26,0.0],"tiahja":[0,7,0.0],"trinidi":[0,68,0.0],"tsering":[33,85,0.2985],"umayah":[0,7,0.0],"xing":[5,7,0.0],"yairis":[0,34,0.0],"yamiah":[0,20,0.0],"yessel":[0,7,0.0],"yorleny":[0,85,0.0],"zaila":[0,827,0.5835],"zyaria":[0,49,0.0],"zyniah":[0,231,0.4727],"aaronisha":[0,6,0.0],"aarya":[388,3089,0.6292],"aaryana":[0,161,0.4414],"abella":[0,1081,0.6068],"abihail":[0,29,0.0],"adashia":[0,20,0.0],"adayah":[0,300,0.4954],"adelynne":[0,857,0.5866],"ahlyssa":[0,37,0.0],"ahnia":[0,28,0.0],"ailaina":[0,20,0.0],"aima":[0,217,0.4673],"akaela":[0,6,0.0],"akshita":[0,314,0.4994],"alaisia":[0,44,0.0],"alassandra":[0,28,0.0],"aleema":[0,58,0.0],"aletse":[0,33,0.0],"alieza":[0,27,0.0],"alira":[0,224,0.47],"allyanna":[0,373,0.5143],"almedina":[0,33,0.0],"alyssea":[0,6,0.0],"alyzae":[0,141,0.4298],"alyzia":[0,17,0.0],"amarisa":[0,168,0.4451],"amaurie":[91,73,0.2458],"ameira":[0,280,0.4894],"amisa":[0,21,0.0],"anab":[0,113,0.4106],"anaija":[0,143,0.4311],"analya":[0,203,0.4615],"anastasija":[0,214,0.4661],"anchita":[0,6,0.0],"andreonna":[0,6,0.0],"angellena":[0,25,0.0],"angeni":[0,84,0.0],"annacatherine":[0,18,0.0],"anta":[0,77,0.0],"aonesty":[0,64,0.0],"aparajita":[0,6,0.0],"areyona":[0,21,0.0],"arriyana":[0,64,0.0],"aruba":[0,6,0.0],"aryahna":[0,74,0.0],"aryam":[38,440,0.4933],"asharia":[0,198,0.4593],"ashiah":[0,74,0.0],"asly":[0,131,0.4235],"autmn":[0,11,0.0],"aviyon":[142,6,0.4165],"aylisha":[0,6,0.0],"azeria":[0,80,0.0],"baelie":[0,11,0.0],"beasia":[0,6,0.0],"brandasia":[0,17,0.0],"brenasia":[0,39,0.0],"briany":[0,345,0.5076],"brinly":[0,222,0.4693],"brizza":[0,90,0.0],"brookann":[0,6,0.0],"bryianna":[0,11,0.0],"brysa":[0,29,0.0],"caleigha":[0,185,0.4534],"caliah":[0,395,0.5193],"calixta":[0,56,0.0],"camerynn":[0,11,0.0],"camyrn":[0,31,0.0],"cassiah":[0,36,0.0],"cecilya":[0,58,0.0],"celerina":[0,6,0.0],"ceriah":[0,62,0.0],"chamiya":[0,59,0.0],"chardasia":[0,6,0.0],"charissma":[0,6,0.0],"chasadee":[0,6,0.0],"chiya":[0,23,0.0],"chloeann":[0,112,0.4098],"christianah":[0,6,0.0],"christlyn":[0,37,0.0],"chrystiana":[0,16,0.0],"cithlaly":[0,41,0.0],"coreyanna":[0,12,0.0],"danaijah":[0,59,0.0],"daylah":[0,160,0.4408],"dearion":[74,6,0.0],"deayra":[0,12,0.0],"dejanea":[0,20,0.0],"destinyrose":[0,14,0.0],"deyonce":[7,58,0.0],"diksha":[0,65,0.0],"dnya":[0,70,0.0],"dovion":[0,6,0.0],"dynesty":[0,37,0.0],"dynisty":[0,50,0.0],"eleesia":[0,11,0.0],"eliyana":[0,718,0.5712],"elnaz":[0,41,0.0],"emmagrace":[0,708,0.57],"enia":[0,51,0.0],"eviana":[0,872,0.5881],"fateha":[0,6,0.0],"freja":[0,519,0.543],"gabbi":[0,113,0.4106],"genasis":[0,84,0.0],"gessel":[0,23,0.0],"gianelly":[0,81,0.0],"gitzel":[0,55,0.0],"haadiya":[0,90,0.0],"hadlie":[0,735,0.5733],"hajrah":[0,47,0.0],"hamda":[0,125,0.4194],"haydyn":[291,307,0.2851],"heylee":[0,73,0.0],"ikira":[0,11,0.0],"imajae":[0,6,0.0],"ingry":[0,25,0.0],"isata":[0,51,0.0],"itzelt":[0,6,0.0],"iyanni":[0,114,0.4114],"iysis":[0,305,0.4969],"jackia":[0,6,0.0],"jadesola":[0,142,0.4305],"jaeleigh":[0,354,0.5098],"jahleah":[0,126,0.4201],"jahnvi":[0,53,0.0],"jaimya":[0,67,0.0],"jaiona":[0,125,0.4194],"jakyrah":[0,128,0.4214],"jaliene":[0,6,0.0],"janajah":[0,44,0.0],"jaquelinee":[0,6,0.0],"jarie":[6,11,0.0],"jasani":[233,422,0.3629],"jasel":[0,37,0.0],"jasonna":[0,23,0.0],"jatorria":[0,11,0.0],"jatziry":[0,466,0.5337],"jelah":[0,11,0.0],"jennessy":[0,161,0.4414],"jernee":[0,196,0.4585],"jewellia":[0,6,0.0],"jiah":[0,229,0.472],"jmia":[0,12,0.0],"joniyah":[0,247,0.4785],"jorryn":[77,85,0.2319],"joselene":[0,29,0.0],"juliahna":[0,133,0.4248],"julionna":[0,215,0.4665],"kaille":[0,6,0.0],"kaitleen":[0,11,0.0],"kalaysia":[0,282,0.49],"kamyla":[0,958,0.5963],"kashiya":[0,48,0.0],"kaylanicole":[0,16,0.0],"kaylisha":[0,6,0.0],"keayla":[0,35,0.0],"kemora":[0,671,0.5653],"kemyra":[0,93,0.0],"kenyae":[18,6,0.0],"khaiya":[0,27,0.0],"khalaya":[0,198,0.4593],"khamryn":[47,75,0.2565],"khania":[0,35,0.0],"khansa":[0,6,0.0],"khloie":[0,934,0.5941],"khyara":[0,22,0.0],"kialee":[0,78,0.0],"kisara":[0,28,0.0],"kyaisha":[0,6,0.0],"kynlie":[0,560,0.5496],"kyya":[0,11,0.0],"lahari":[0,128,0.4214],"lakaiya":[0,49,0.0],"lakyah":[0,56,0.0],"lanashia":[0,11,0.0],"lanijah":[0,124,0.4187],"lashya":[0,65,0.0],"lemya":[0,62,0.0],"leoni":[10,266,0.4705],"linett":[0,37,0.0],"litsi":[0,6,0.0],"lizveth":[0,37,0.0],"llamile":[0,6,0.0],"lujane":[0,80,0.0],"madyn":[0,263,0.484],"madysin":[0,278,0.4888],"maiana":[0,144,0.4317],"maijah":[0,6,0.0],"maitri":[0,107,0.4059],"malayzia":[0,93,0.0],"maleigh":[0,241,0.4764],"manaia":[42,274,0.4335],"manijah":[0,14,0.0],"mannat":[0,579,0.5525],"maraia":[0,12,0.0],"mariapaula":[0,169,0.4456],"marryn":[0,6,0.0],"mateah":[0,22,0.0],"mattigan":[0,26,0.0],"maycen":[113,52,0.3037],"mcallister":[70,11,0.0],"mekiyah":[0,66,0.0],"merab":[0,63,0.0],"meraris":[0,6,0.0],"mileidy":[0,214,0.4661],"milenna":[0,75,0.0],"miryan":[0,17,0.0],"modesti":[0,6,0.0],"moeko":[0,6,0.0],"monzerat":[0,63,0.0],"morsal":[0,6,0.0],"mykailah":[0,22,0.0],"mykeya":[0,6,0.0],"myrakle":[0,162,0.4419],"mythili":[0,68,0.0],"naailah":[0,22,0.0],"naairah":[0,38,0.0],"nadyah":[0,60,0.0],"nakaylah":[0,55,0.0],"nataiya":[0,31,0.0],"natalieann":[0,11,0.0],"natya":[0,45,0.0],"nayaly":[0,6,0.0],"nethra":[0,342,0.5068],"nittaya":[0,11,0.0],"niyonna":[0,108,0.4067],"noriah":[0,411,0.5228],"nouci":[0,6,0.0],"nyani":[0,69,0.0],"nyasiah":[0,168,0.4451],"nykeah":[0,6,0.0],"nylea":[0,73,0.0],"nytasia":[0,22,0.0],"odett":[0,11,0.0],"philicity":[0,6,0.0],"pritika":[0,58,0.0],"quaniya":[0,102,0.4017],"raegyn":[0,360,0.5113],"raelen":[0,63,0.0],"ranasia":[0,41,0.0],"rashmika":[0,23,0.0],"rayannah":[0,35,0.0],"rhayne":[0,116,0.4129],"rihanna":[5,6522,0.7624],"rikishi":[10,6,0.0],"rini":[0,109,0.4075],"riti":[0,95,0.0],"riyana":[0,360,0.5113],"roaa":[0,79,0.0],"rosselyn":[0,335,0.505],"saamia":[0,12,0.0],"sagarika":[0,17,0.0],"sahory":[0,94,0.0],"sarayu":[0,657,0.5635],"serenitee":[0,388,0.5178],"serin":[0,88,0.0],"seyla":[0,93,0.0],"shanzay":[0,246,0.4782],"sharidan":[0,11,0.0],"sharlize":[0,99,0.0],"shelcy":[0,19,0.0],"sheridon":[0,6,0.0],"solae":[0,130,0.4228],"sorayda":[0,12,0.0],"suany":[0,88,0.0],"syleste":[0,12,0.0],"tahleah":[0,17,0.0],"taiba":[0,86,0.0],"takyah":[0,103,0.4026],"taleeyah":[0,69,0.0],"tamiracle":[0,25,0.0],"taneice":[0,6,0.0],"taniaya":[0,72,0.0],"tanyla":[0,400,0.5204],"tays":[0,11,0.0],"teaghen":[0,24,0.0],"teranique":[0,6,0.0],"tijae":[0,6,0.0],"timmya":[0,67,0.0],"tiniya":[0,50,0.0],"tnya":[0,78,0.0],"trenady":[0,41,0.0],"trenedy":[0,13,0.0],"trinatee":[0,18,0.0],"tykiria":[0,11,0.0],"ulyana":[0,156,0.4386],"vividiana":[0,6,0.0],"xareni":[0,571,0.5513],"xaviana":[0,59,0.0],"xya":[0,154,0.4375],"yackelin":[0,36,0.0],"yamari":[90,208,0.3454],"yamillet":[0,35,0.0],"yaniece":[0,18,0.0],"yarielis":[0,365,0.5125],"yaritzi":[0,372,0.5141],"yatziry":[0,570,0.5512],"yazlyn":[0,352,0.5093],"yeritza":[0,6,0.0],"yorleni":[0,39,0.0],"yulexi":[0,6,0.0],"zabryna":[0,6,0.0],"zakara":[0,114,0.4114],"zareth":[21,156,0.3963],"zhakira":[0,6,0.0],"zhara":[0,341,0.5066],"aaliayh":[0,47,0.0],"aaliyaha":[0,21,0.0],"aarian":[185,64,0.3561],"aayanna":[0,38,0.0],"abegayle":[0,23,0.0],"acire":[5,77,0.0],"adamarie":[0,167,0.4445],"adiyah":[0,82,0.0],"adore":[60,993,0.57],"aeryal":[0,24,0.0],"agathe":[0,49,0.0],"ahmaya":[0,224,0.47],"ailany":[0,4014,0.7207],"aionna":[0,12,0.0],"airanna":[0,64,0.0],"aiyannah":[0,145,0.4323],"aiyona":[0,58,0.0],"ajana":[0,41,0.0],"akaiya":[0,101,0.4009],"akenya":[0,10,0.0],"alajha":[0,29,0.0],"alamea":[0,71,0.0],"aleenah":[0,403,0.5211],"alexana":[0,23,0.0],"alexiea":[0,47,0.0],"alexiya":[0,108,0.4067],"aleyha":[0,21,0.0],"alimah":[0,52,0.0],"aliyaah":[0,63,0.0],"alizaya":[0,103,0.4026],"alizon":[0,425,0.5257],"alleria":[0,81,0.0],"allesia":[0,5,0.0],"allivia":[0,53,0.0],"allya":[0,5,0.0],"almas":[21,178,0.4113],"alonie":[0,91,0.0],"alyea":[0,29,0.0],"alyzabeth":[0,192,0.4567],"amarise":[0,112,0.4098],"amarria":[0,130,0.4228],"amary":[11,135,0.4003],"amaryah":[0,228,0.4716],"amaura":[0,223,0.4697],"amree":[0,68,0.0],"anaih":[0,64,0.0],"anaira":[0,502,0.5401],"analyssia":[0,5,0.0],"anayjah":[0,28,0.0],"anchal":[0,34,0.0],"angelys":[0,217,0.4673],"anly":[0,5,0.0],"annaleese":[0,128,0.4214],"annalysse":[0,103,0.4026],"annalyssia":[0,5,0.0],"anshika":[0,422,0.5251],"antaysia":[0,5,0.0],"aquavia":[0,5,0.0],"araia":[0,110,0.4083],"arame":[0,20,0.0],"archita":[0,59,0.0],"areebah":[0,115,0.4121],"ariany":[0,620,0.5585],"aryia":[0,728,0.5724],"aseret":[0,70,0.0],"ashleykate":[0,5,0.0],"ashmita":[0,34,0.0],"atalanta":[0,5,0.0],"atzhiri":[0,27,0.0],"aujane":[0,11,0.0],"auriona":[0,5,0.0],"avaree":[0,494,0.5387],"avari":[186,874,0.4989],"avaya":[0,1717,0.647],"averiana":[0,275,0.4879],"averyana":[0,202,0.4611],"aydia":[0,81,0.0],"aylana":[0,267,0.4853],"aylee":[0,500,0.5398],"ayreanna":[0,17,0.0],"ayreona":[0,17,0.0],"ayreonna":[0,18,0.0],"azara":[0,670,0.5652],"azianna":[0,10,0.0],"azoria":[0,150,0.4352],"azyah":[0,185,0.4534],"baille":[0,5,0.0],"benae":[0,10,0.0],"beyoncee":[0,5,0.0],"bhargavi":[0,30,0.0],"bineta":[0,30,0.0],"blessen":[5,185,0.4438],"braniya":[0,234,0.4738],"breara":[0,5,0.0],"breece":[83,47,0.2699],"breeley":[0,101,0.4009],"breeza":[0,37,0.0],"brendasia":[0,5,0.0],"briseis":[0,1352,0.6262],"brizeth":[0,5,0.0],"brylei":[0,302,0.496],"cait":[0,153,0.4369],"cambell":[73,198,0.3555],"cambrey":[0,122,0.4173],"camillemarie":[0,5,0.0],"canela":[0,57,0.0],"carelle":[0,5,0.0],"carleah":[0,85,0.0],"carlei":[0,172,0.4471],"chiani":[0,5,0.0],"chriselle":[0,46,0.0],"chyler":[52,295,0.4319],"ciannah":[0,19,0.0],"cidni":[0,5,0.0],"cielle":[0,182,0.452],"ciya":[0,27,0.0],"clairece":[0,5,0.0],"clairemarie":[0,11,0.0],"cordeja":[0,5,0.0],"curstyn":[0,5,0.0],"cynia":[0,213,0.4657],"cytlali":[0,38,0.0],"czaria":[0,15,0.0],"dadrianna":[0,5,0.0],"daebreona":[0,5,0.0],"daeshawna":[0,20,0.0],"dairra":[0,10,0.0],"daishana":[0,10,0.0],"dajhia":[0,5,0.0],"dalani":[6,576,0.5473],"daleigh":[0,70,0.0],"damne":[0,15,0.0],"danautica":[0,5,0.0],"dariyah":[0,726,0.5722],"darnaja":[0,5,0.0],"daviyana":[0,5,0.0],"dayah":[0,84,0.0],"dazie":[0,46,0.0],"dedriana":[0,5,0.0],"deera":[0,5,0.0],"deiara":[0,5,0.0],"demetriana":[0,51,0.0],"denaeja":[0,11,0.0],"denaria":[0,26,0.0],"denazia":[0,16,0.0],"deniyah":[0,458,0.5322],"derrionna":[0,22,0.0],"desara":[0,5,0.0],"destannie":[0,20,0.0],"devyani":[0,36,0.0],"deyaneira":[0,52,0.0],"deylin":[42,102,0.3058],"deziyah":[0,326,0.5026],"dhivya":[0,10,0.0],"dianni":[0,15,0.0],"diocelina":[0,10,0.0],"dionah":[0,5,0.0],"dlayna":[0,5,0.0],"donjanae":[0,5,0.0],"dontaysha":[0,5,0.0],"durga":[0,68,0.0],"dynastie":[0,66,0.0],"dzeneta":[0,5,0.0],"edika":[0,5,0.0],"edisa":[0,11,0.0],"elahna":[0,5,0.0],"eliora":[0,1384,0.6282],"elixis":[0,5,0.0],"ellasia":[0,5,0.0],"ellea":[0,89,0.0],"elliyah":[0,191,0.4562],"ellyanna":[0,658,0.5636],"emiliann":[0,5,0.0],"emmajo":[0,179,0.4506],"emyli":[0,55,0.0],"enajah":[0,22,0.0],"enyah":[0,70,0.0],"eriyon":[11,10,0.0],"esmee":[0,812,0.5819],"esveidy":[0,53,0.0],"ezabelle":[0,10,0.0],"farhiya":[0,116,0.4129],"fathia":[0,40,0.0],"fatoumatta":[0,53,0.0],"filicity":[0,5,0.0],"firdaws":[0,27,0.0],"firyal":[0,5,0.0],"fjolla":[0,5,0.0],"forum":[0,5,0.0],"gabriala":[0,5,0.0],"gali":[0,165,0.4435],"germya":[0,5,0.0],"gianelle":[0,172,0.4471],"gillan":[0,5,0.0],"givanna":[0,42,0.0],"gretchyn":[0,47,0.0],"guliana":[0,200,0.4602],"gwennyth":[0,48,0.0],"hamida":[0,90,0.0],"hanai":[0,10,0.0],"hannahlynn":[0,5,0.0],"heavon":[0,15,0.0],"hennesie":[0,5,0.0],"hodalis":[0,10,0.0],"hodaya":[0,223,0.4697],"hopelynn":[0,153,0.4369],"idrena":[0,5,0.0],"illeanna":[0,22,0.0],"io":[31,185,0.3999],"isebella":[0,92,0.0],"ises":[0,5,0.0],"iszabella":[0,197,0.4589],"iyah":[5,206,0.4538],"jadeline":[0,54,0.0],"jaeli":[0,284,0.4907],"jahmiya":[0,100,0.4],"jaidy":[0,232,0.4731],"jakelyne":[0,21,0.0],"jakenya":[0,44,0.0],"jalycia":[0,10,0.0],"jamariya":[0,143,0.4311],"jamerria":[0,34,0.0],"janaa":[0,84,0.0],"janeicia":[0,5,0.0],"janeiry":[0,28,0.0],"janieya":[0,39,0.0],"janiyha":[0,144,0.4317],"jashanna":[0,11,0.0],"jaslynne":[0,100,0.4],"jatiya":[0,10,0.0],"jaydia":[0,20,0.0],"jayliana":[0,657,0.5635],"jaysie":[0,106,0.4051],"jaza":[0,42,0.0],"jazzelle":[0,289,0.4922],"jeileen":[0,27,0.0],"jemiya":[0,35,0.0],"jenesys":[0,182,0.452],"jermanee":[0,23,0.0],"jessly":[0,112,0.4098],"jesstine":[0,5,0.0],"jezlyn":[0,170,0.4461],"jhonna":[0,5,0.0],"jiara":[0,5,0.0],"jimmya":[0,28,0.0],"jimya":[0,70,0.0],"jisoo":[0,26,0.0],"jiyah":[0,321,0.5013],"jlah":[0,59,0.0],"jmyra":[0,5,0.0],"jocabeth":[0,5,0.0],"joniya":[0,163,0.4424],"josline":[0,28,0.0],"jozalyn":[0,167,0.4445],"juliona":[0,69,0.0],"junya":[0,5,0.0],"kadaija":[0,10,0.0],"kailena":[0,112,0.4098],"kaitey":[0,5,0.0],"kaiza":[31,22,0.0],"kaliea":[0,48,0.0],"kaliece":[0,5,0.0],"kalliyah":[0,47,0.0],"kamaia":[0,56,0.0],"kamarea":[0,27,0.0],"kambryn":[20,169,0.4071],"kareese":[0,5,0.0],"kariyah":[0,410,0.5226],"karyzma":[0,26,0.0],"kashish":[0,136,0.4267],"katrien":[0,16,0.0],"kaviya":[0,20,0.0],"kawtar":[0,11,0.0],"kaydyn":[337,228,0.3283],"kaylamae":[0,5,0.0],"kazmira":[0,31,0.0],"keaura":[0,15,0.0],"kelanie":[0,79,0.0],"kellynn":[0,15,0.0],"kelyse":[0,89,0.0],"kenze":[0,10,0.0],"kenzington":[0,698,0.5688],"kerrianna":[0,20,0.0],"keslyn":[0,113,0.4106],"keylah":[0,100,0.4],"khiandra":[0,5,0.0],"kiamara":[0,5,0.0],"kielah":[0,10,0.0],"kinlie":[0,79,0.0],"kiomara":[0,48,0.0],"kiryn":[23,56,0.0],"krimson":[77,182,0.3392],"krya":[0,5,0.0],"kseniya":[0,101,0.4009],"kumba":[0,49,0.0],"kwayera":[0,5,0.0],"kyianna":[0,24,0.0],"kyilee":[0,151,0.4358],"kyleeann":[0,119,0.4151],"kylynne":[0,49,0.0],"kynli":[0,384,0.5169],"laily":[0,69,0.0],"lajayla":[0,37,0.0],"lanaysha":[0,33,0.0],"lataivia":[0,5,0.0],"latavea":[0,5,0.0],"latrinity":[0,35,0.0],"laylani":[0,2828,0.6903],"leelah":[0,427,0.5261],"leelee":[0,25,0.0],"leiasia":[0,12,0.0],"lessli":[0,24,0.0],"lexani":[5,443,0.5243],"lexcee":[0,5,0.0],"lexxy":[0,28,0.0],"lianny":[0,383,0.5166],"lilijana":[0,67,0.0],"lillyth":[0,135,0.4261],"lilyrose":[0,549,0.5479],"linah":[0,93,0.0],"lisbed":[0,24,0.0],"livian":[0,218,0.4677],"llecenia":[0,5,0.0],"lonyea":[0,5,0.0],"lovelee":[0,123,0.418],"lyria":[0,75,0.0],"macara":[0,5,0.0],"machiah":[0,11,0.0],"mackenley":[5,10,0.0],"maclayne":[0,17,0.0],"madaya":[0,15,0.0],"maddysen":[0,51,0.0],"madi":[0,483,0.5368],"madilin":[0,36,0.0],"madissyn":[0,37,0.0],"madolynn":[0,44,0.0],"madylyn":[0,106,0.4051],"madysun":[0,92,0.0],"maelea":[0,76,0.0],"maeleigh":[0,829,0.5837],"maelina":[0,20,0.0],"mahali":[0,15,0.0],"mahathi":[0,321,0.5013],"mahiya":[0,144,0.4317],"mairely":[0,110,0.4083],"makhaila":[0,26,0.0],"malaena":[0,5,0.0],"maleyna":[0,40,0.0],"mane":[0,119,0.4151],"manhattan":[5,85,0.0],"mariarosa":[0,11,0.0],"maricelys":[0,5,0.0],"mariell":[0,78,0.0],"marisleysi":[0,5,0.0],"mariyanna":[0,70,0.0],"markyla":[0,48,0.0],"masina":[0,95,0.0],"mattilynn":[0,287,0.4916],"maylina":[0,10,0.0],"mazee":[0,32,0.0],"mckenlee":[0,236,0.4746],"mehr":[0,292,0.4931],"menal":[0,5,0.0],"miakayla":[0,5,0.0],"mialynn":[0,170,0.4461],"micaya":[0,22,0.0],"michaelee":[0,5,0.0],"mikaylla":[0,5,0.0],"mikyah":[0,245,0.4778],"mikyia":[0,20,0.0],"milania":[0,3304,0.7038],"mileydi":[0,161,0.4414],"milina":[0,126,0.4201],"millenna":[0,5,0.0],"millinia":[0,5,0.0],"minnah":[0,237,0.4749],"mircale":[0,54,0.0],"mirical":[0,15,0.0],"mirlinda":[0,5,0.0],"mirren":[0,159,0.4403],"mkaila":[0,5,0.0],"mocha":[0,5,0.0],"monce":[0,10,0.0],"moncerath":[0,17,0.0],"moncerrad":[0,5,0.0],"monseratt":[0,111,0.4091],"montserrad":[0,5,0.0],"myanni":[0,15,0.0],"myjah":[0,11,0.0],"mykalla":[0,5,0.0],"mykerria":[0,5,0.0],"mykyah":[0,5,0.0],"myleen":[0,197,0.4589],"mylicia":[0,5,0.0],"myrikal":[0,150,0.4352],"naava":[0,252,0.4803],"nahje":[0,5,0.0],"najaya":[0,21,0.0],"najilah":[0,5,0.0],"najya":[0,16,0.0],"nameera":[0,30,0.0],"narai":[0,27,0.0],"nastasja":[0,10,0.0],"nathally":[0,52,0.0],"nayellie":[0,129,0.4221],"nayha":[0,35,0.0],"naziah":[173,312,0.3455],"nazira":[0,85,0.0],"nekiyah":[0,20,0.0],"nelcy":[0,11,0.0],"neydi":[0,57,0.0],"neylan":[113,261,0.3591],"niaisha":[0,10,0.0],"nikolett":[0,10,0.0],"nimo":[0,174,0.4481],"ninasimone":[0,12,0.0],"nishay":[0,10,0.0],"nishitha":[0,27,0.0],"nishka":[0,528,0.5445],"nouran":[0,22,0.0],"nusaibah":[0,97,0.0],"nyamal":[0,28,0.0],"nyeasia":[0,5,0.0],"nyell":[0,20,0.0],"nyha":[0,32,0.0],"nyome":[0,15,0.0],"nyzeria":[0,17,0.0],"oluwadara":[5,92,0.0],"onnah":[0,15,0.0],"orianne":[0,5,0.0],"osanna":[0,11,0.0],"oshen":[144,10,0.4091],"paizlee":[0,1091,0.6076],"parinita":[0,11,0.0],"parneet":[0,185,0.4534],"peytyn":[0,267,0.4853],"prarthana":[0,71,0.0],"pratyusha":[0,5,0.0],"precius":[0,5,0.0],"quinnlyn":[0,351,0.5091],"rabekka":[0,5,0.0],"raeya":[0,742,0.5741],"raionna":[0,60,0.0],"rakya":[0,36,0.0],"ranaa":[0,5,0.0],"raynna":[0,50,0.0],"reaganne":[0,10,0.0],"rehgan":[0,10,0.0],"reniah":[0,107,0.4059],"reshmi":[0,5,0.0],"rheya":[0,564,0.5503],"rhyen":[51,157,0.3499],"rinoa":[0,534,0.5455],"roniah":[0,21,0.0],"roniya":[0,218,0.4677],"rubith":[0,24,0.0],"rumaisa":[0,300,0.4954],"runa":[0,560,0.5496],"ruweyda":[0,167,0.4445],"ryliegh":[0,340,0.5063],"sabirah":[0,65,0.0],"sabrielle":[0,10,0.0],"saffa":[0,15,0.0],"safina":[0,358,0.5108],"sahej":[50,71,0.2444],"saije":[0,91,0.0],"sajah":[0,17,0.0],"samaah":[0,5,0.0],"saraina":[0,5,0.0],"saraphina":[0,206,0.4628],"saylah":[0,365,0.5125],"semhal":[0,10,0.0],"seona":[0,88,0.0],"shadin":[0,10,0.0],"shakaiya":[0,5,0.0],"shamarria":[0,23,0.0],"shamma":[0,5,0.0],"shamyiah":[0,58,0.0],"shanteya":[0,5,0.0],"shanza":[0,25,0.0],"shikeria":[0,5,0.0],"shimya":[0,19,0.0],"sinahi":[0,95,0.0],"sincerity":[0,109,0.4075],"siniya":[0,111,0.4091],"sisi":[0,25,0.0],"skyela":[0,32,0.0],"skylair":[0,15,0.0],"skylla":[0,33,0.0],"soda":[0,5,0.0],"soli":[0,110,0.4083],"soobin":[0,5,0.0],"soomin":[0,5,0.0],"sophiarose":[0,176,0.4491],"sosie":[0,143,0.4311],"srija":[0,150,0.4352],"starrlynn":[0,20,0.0],"stela":[0,196,0.4585],"suchi":[0,15,0.0],"suhailah":[0,126,0.4201],"sujeily":[0,36,0.0],"sumin":[0,16,0.0],"syana":[0,86,0.0],"syasia":[0,54,0.0],"syniah":[0,565,0.5504],"tadajah":[0,5,0.0],"taelee":[0,10,0.0],"taigan":[5,56,0.0],"tajahne":[0,5,0.0],"tajhanae":[0,5,0.0],"takaia":[0,11,0.0],"takaiya":[0,57,0.0],"takaria":[0,24,0.0],"talayla":[0,100,0.4],"talie":[0,11,0.0],"talulah":[0,526,0.5442],"talyiah":[0,60,0.0],"tameira":[0,5,0.0],"tanayjah":[0,10,0.0],"tariyah":[0,750,0.575],"tashfia":[0,5,0.0],"tasiah":[0,19,0.0],"tayva":[0,97,0.0],"tayyaba":[0,10,0.0],"tekiyah":[0,27,0.0],"teniah":[0,34,0.0],"teniyah":[0,184,0.453],"tijay":[6,5,0.0],"timmiah":[0,5,0.0],"timyia":[0,15,0.0],"tione":[12,15,0.0],"tionee":[0,5,0.0],"tiyanah":[0,10,0.0],"toniah":[0,35,0.0],"traniya":[0,181,0.4515],"treniti":[0,38,0.0],"trevona":[0,5,0.0],"trinety":[0,13,0.0],"trinitty":[0,16,0.0],"tyjanea":[0,5,0.0],"tynaisha":[0,20,0.0],"tynajah":[0,19,0.0],"tyneice":[0,5,0.0],"tynija":[0,5,0.0],"tyraya":[0,5,0.0],"tysheana":[0,5,0.0],"tyteona":[0,11,0.0],"ubah":[0,78,0.0],"umaya":[0,5,0.0],"urja":[0,51,0.0],"varshini":[0,210,0.4644],"veyda":[0,466,0.5337],"viance":[0,16,0.0],"victorie":[0,23,0.0],"viktoriya":[0,207,0.4632],"vision":[85,82,0.2263],"vitalina":[0,87,0.0],"xavianna":[0,50,0.0],"xiadani":[0,136,0.4267],"yacqueline":[0,18,0.0],"yakelyn":[0,30,0.0],"yalixa":[0,27,0.0],"yaneri":[0,35,0.0],"yariana":[0,279,0.4891],"yazlin":[0,443,0.5293],"yejin":[0,42,0.0],"yeraldy":[0,73,0.0],"yerlin":[0,68,0.0],"yisselle":[0,17,0.0],"ymari":[0,17,0.0],"yoali":[0,210,0.4644],"ysa":[0,27,0.0],"yukta":[0,55,0.0],"yuleni":[0,74,0.0],"yuneicy":[0,5,0.0],"zailey":[0,1091,0.6076],"zakoria":[0,17,0.0],"zalaya":[0,521,0.5434],"zamanta":[0,15,0.0],"zamariah":[0,299,0.4951],"zamiyah":[0,1236,0.6184],"zanaii":[0,5,0.0],"zanayah":[0,277,0.4885],"zarelia":[0,5,0.0],"zarreah":[0,5,0.0],"zaryia":[0,101,0.4009],"zayanna":[0,208,0.4636],"zaydee":[0,306,0.4971],"zaylee":[0,5161,0.7425],"zeltzin":[0,34,0.0],"zhariah":[0,37,0.0],"zikiria":[0,5,0.0],"zionah":[0,155,0.4381],"ziyana":[0,323,0.5018],"zorriah":[0,10,0.0],"zorya":[0,32,0.0],"zoye":[0,65,0.0],"zykeriah":[0,83,0.0],"zykiera":[0,11,0.0],"rithik":[333,0,0.5045],"ritik":[64,0,0.0],"lleyton":[787,0,0.5792],"edgerrin":[65,0,0.0],"fynn":[1535,89,0.6069],"terius":[87,0,0.0],"zaykeese":[13,0,0.0],"cadon":[238,0,0.4753],"erubiel":[209,0,0.464],"kaidin":[418,11,0.513],"luisgustavo":[17,0,0.0],"kavontae":[85,0,0.0],"thailan":[145,0,0.4323],"zayden":[30567,181,0.8923],"akhilesh":[132,0,0.4241],"alano":[159,0,0.4403],"eashan":[221,0,0.4689],"hrithik":[68,0,0.0],"hritik":[10,0,0.0],"jaheim":[4019,5,0.72],"jaizon":[91,0,0.0],"joesiah":[625,0,0.5592],"kol":[436,0,0.5279],"mccain":[62,0,0.0],"naythen":[147,0,0.4335],"saket":[219,0,0.4681],"shubh":[397,0,0.5198],"ahnaf":[430,0,0.5267],"drelyn":[284,0,0.4907],"elyan":[321,11,0.4875],"izaih":[159,0,0.4403],"jerrius":[42,0,0.0],"jvion":[237,0,0.4749],"kaidan":[1119,72,0.578],"keantae":[20,0,0.0],"matheson":[132,0,0.4241],"millen":[26,5,0.0],"rmontay":[9,0,0.0],"rudra":[1610,32,0.6305],"safi":[183,87,0.3296],"sencere":[196,0,0.4585],"sisqo":[9,0,0.0],"taison":[231,0,0.4727],"thailand":[155,16,0.4048],"vontre":[14,0,0.0],"yavin":[62,0,0.0],"zaequan":[34,0,0.0],"zealand":[830,72,0.5439],"abimelec":[81,0,0.0],"albi":[166,0,0.444],"altin":[149,0,0.4346],"anikin":[94,0,0.0],"aryaman":[239,0,0.4757],"atharv":[2197,0,0.6684],"avonta":[31,0,0.0],"brajon":[8,0,0.0],"camar":[179,0,0.4506],"couper":[170,0,0.4461],"cyric":[30,0,0.0],"daemien":[132,0,0.4241],"dausen":[15,0,0.0],"davarion":[176,0,0.4491],"finnbar":[81,0,0.0],"greco":[106,0,0.4051],"jacquarius":[8,0,0.0],"jadus":[27,0,0.0],"jakir":[14,0,0.0],"jakye":[356,0,0.5103],"jaonte":[8,0,0.0],"jayree":[8,0,0.0],"jerahmy":[8,0,0.0],"kebin":[84,0,0.0],"kelvion":[40,0,0.0],"kevone":[20,0,0.0],"khamaron":[8,0,0.0],"kyeem":[18,0,0.0],"kysen":[1511,0,0.6359],"maxamilian":[83,0,0.0],"nazair":[98,0,0.0],"nazeem":[43,0,0.0],"nivek":[174,0,0.4481],"prathik":[87,0,0.0],"rayaan":[1031,179,0.5253],"sahith":[104,0,0.4034],"sani":[120,382,0.411],"sava":[204,10,0.4443],"shamor":[8,0,0.0],"taeron":[20,0,0.0],"teontae":[8,0,0.0],"tyner":[114,0,0.4114],"valek":[28,0,0.0],"yahia":[511,0,0.5417],"zahmir":[667,0,0.5648],"zantavious":[8,0,0.0],"abdirizak":[105,0,0.4042],"alijiah":[58,0,0.0],"ariez":[155,5,0.427],"atakan":[7,0,0.0],"axsel":[76,0,0.0],"badal":[7,0,0.0],"benedikt":[55,0,0.0],"calijah":[41,0,0.0],"caylob":[58,0,0.0],"chasin":[170,0,0.4461],"cobee":[30,0,0.0],"daejuan":[47,0,0.0],"daizhaun":[7,0,0.0],"dajun":[12,0,0.0],"damauri":[437,0,0.5281],"dangello":[7,0,0.0],"daxon":[1390,0,0.6286],"deklin":[579,0,0.5525],"deveyon":[23,0,0.0],"devionte":[7,0,0.0],"exzavior":[29,0,0.0],"fenix":[1049,287,0.4909],"hakob":[20,0,0.0],"hamsa":[169,0,0.4456],"helios":[408,0,0.5221],"husnain":[39,0,0.0],"inderpreet":[7,0,0.0],"infantboy":[50,0,0.0],"jakhi":[1110,0,0.6091],"jalonte":[19,0,0.0],"javarion":[309,0,0.498],"jaydeep":[14,0,0.0],"jaylenn":[128,194,0.3022],"jayvonne":[42,0,0.0],"jubei":[34,0,0.0],"jwuan":[7,0,0.0],"jyquez":[45,0,0.0],"kader":[41,0,0.0],"kaedin":[384,5,0.5113],"kaleek":[13,0,0.0],"keivin":[19,0,0.0],"keontai":[7,0,0.0],"kishun":[7,0,0.0],"kyeon":[33,0,0.0],"luisjose":[7,0,0.0],"lukis":[198,0,0.4593],"manik":[22,0,0.0],"marcous":[7,0,0.0],"maseo":[39,0,0.0],"massai":[121,0,0.4166],"nahiem":[108,0,0.4067],"najeh":[91,0,0.0],"naoh":[13,0,0.0],"nayshawn":[146,0,0.4329],"rajveer":[487,0,0.5375],"renz":[28,0,0.0],"rithwik":[114,0,0.4114],"ryunosuke":[22,0,0.0],"sabdiel":[42,0,0.0],"sebasthian":[144,0,0.4317],"shikhar":[20,0,0.0],"soroush":[23,0,0.0],"sparsh":[182,0,0.452],"sufyaan":[158,0,0.4397],"suleyman":[321,0,0.5013],"syon":[423,0,0.5253],"taesean":[113,0,0.4106],"taiten":[118,0,0.4144],"tawfik":[7,0,0.0],"tevian":[15,0,0.0],"vansh":[690,0,0.5678],"vishwa":[254,16,0.4575],"yamato":[129,0,0.4221],"zakariye":[225,0,0.4704],"zayed":[376,0,0.515],"zyad":[157,0,0.4392],"aahil":[886,0,0.5895],"aedin":[193,0,0.4571],"amod":[26,0,0.0],"anndy":[22,0,0.0],"anshuman":[54,0,0.0],"aramus":[6,0,0.0],"armontae":[16,0,0.0],"ashtian":[78,0,0.0],"ashutosh":[61,0,0.0],"avontay":[25,0,0.0],"ayad":[150,0,0.4352],"azlan":[1103,13,0.6024],"baudel":[11,0,0.0],"bowdrie":[46,0,0.0],"braedin":[143,0,0.4311],"breylan":[169,0,0.4456],"brogen":[170,6,0.4338],"brycin":[245,0,0.4778],"carlosantonio":[12,0,0.0],"chukwubuikem":[12,0,0.0],"coletin":[37,0,0.0],"couy":[6,0,0.0],"daevin":[53,0,0.0],"daiyon":[28,0,0.0],"dajean":[24,0,0.0],"dakhari":[438,0,0.5283],"dannyel":[11,0,0.0],"daveonte":[6,0,0.0],"daykota":[6,0,0.0],"deandrick":[12,0,0.0],"decklin":[218,0,0.4677],"dekevion":[22,0,0.0],"delvion":[6,0,0.0],"demaje":[21,0,0.0],"deshown":[6,0,0.0],"deterrion":[16,0,0.0],"devansh":[948,0,0.5954],"donje":[6,0,0.0],"drennan":[28,0,0.0],"drevan":[41,0,0.0],"dreylon":[23,0,0.0],"elicio":[44,0,0.0],"eliut":[41,0,0.0],"ellian":[94,0,0.0],"ethanjames":[175,0,0.4486],"gabrien":[159,0,0.4403],"gohan":[545,0,0.5473],"gryffin":[1049,20,0.5945],"gurman":[189,13,0.4314],"halid":[46,0,0.0],"hulices":[24,0,0.0],"hyden":[66,0,0.0],"idriss":[195,0,0.458],"isaam":[11,0,0.0],"izai":[60,0,0.0],"izreal":[319,0,0.5008],"jacorien":[21,0,0.0],"jaderrick":[12,0,0.0],"jadien":[229,31,0.4254],"jaevion":[440,0,0.5287],"jahsir":[795,0,0.5801],"jaishaun":[189,0,0.4553],"jaliel":[167,0,0.4445],"jamaari":[38,0,0.0],"jeremaiah":[27,0,0.0],"jeshaun":[28,0,0.0],"jesusjr":[19,0,0.0],"jhoshua":[6,0,0.0],"jiron":[6,0,0.0],"jlin":[17,0,0.0],"joaopaulo":[11,0,0.0],"joevanny":[23,0,0.0],"jorrin":[16,0,0.0],"joshuacaleb":[11,0,0.0],"jusiah":[393,0,0.5189],"jyree":[78,0,0.0],"kacen":[1566,0,0.639],"kaire":[187,19,0.4201],"kajaun":[11,0,0.0],"kaspar":[161,0,0.4414],"kastin":[122,0,0.4173],"kayhan":[132,0,0.4241],"keatan":[22,0,0.0],"kedarious":[6,0,0.0],"kerric":[6,0,0.0],"kesaun":[35,0,0.0],"keyaun":[43,0,0.0],"keymond":[13,0,0.0],"korei":[6,21,0.0],"kyair":[716,0,0.571],"liad":[56,0,0.0],"lionso":[11,0,0.0],"lirim":[6,0,0.0],"lochlyn":[101,338,0.4069],"luispablo":[6,0,0.0],"maanas":[49,0,0.0],"maanav":[160,0,0.4408],"marken":[86,0,0.0],"marquaveon":[14,0,0.0],"maximillien":[6,0,0.0],"maxximus":[432,0,0.5271],"miykael":[30,0,0.0],"mussie":[90,0,0.0],"nameer":[126,0,0.4201],"nasiar":[12,0,0.0],"nassem":[6,0,0.0],"naszier":[36,0,0.0],"natavion":[27,0,0.0],"nathann":[6,0,0.0],"nathanual":[36,0,0.0],"nedim":[84,0,0.0],"nermin":[32,17,0.0],"nyseem":[18,0,0.0],"oluwatimilehin":[199,0,0.4598],"omaid":[25,0,0.0],"omarri":[82,0,0.0],"osaretin":[11,0,0.0],"pierceson":[49,0,0.0],"qi":[28,10,0.0],"qudarius":[6,0,0.0],"quienten":[6,0,0.0],"quisean":[6,0,0.0],"radarius":[22,0,0.0],"revanth":[68,0,0.0],"reyshawn":[16,0,0.0],"rhythm":[533,570,0.3145],"riece":[21,11,0.0],"romani":[173,106,0.3033],"rounak":[11,0,0.0],"rovin":[38,0,0.0],"ryusei":[28,0,0.0],"saajid":[45,0,0.0],"sakaria":[12,0,0.0],"sankalp":[113,0,0.4106],"sarvesh":[285,0,0.491],"sebastyan":[104,0,0.4034],"selassie":[91,0,0.0],"seydou":[108,0,0.4067],"shakee":[6,0,0.0],"shaz":[6,0,0.0],"siler":[164,0,0.443],"solen":[12,7,0.0],"soliman":[66,0,0.0],"soul":[402,284,0.3324],"soumil":[59,0,0.0],"tadrian":[6,0,0.0],"taeon":[12,0,0.0],"tahlil":[22,0,0.0],"taishaun":[88,0,0.0],"taiveon":[49,0,0.0],"taiyon":[16,0,0.0],"taleb":[41,0,0.0],"taydon":[115,0,0.4121],"taymar":[42,32,0.0],"tayyab":[50,0,0.0],"tazion":[11,0,0.0],"tomias":[16,0,0.0],"traylen":[149,0,0.4346],"tremere":[17,0,0.0],"trevelyan":[6,0,0.0],"trevontay":[16,0,0.0],"urijah":[3648,85,0.6981],"yahmir":[225,0,0.4704],"yakir":[73,0,0.0],"yaqub":[603,0,0.5561],"yissochor":[33,0,0.0],"zameer":[230,0,0.4723],"zarien":[20,0,0.0],"zarrius":[6,0,0.0],"zaylen":[2393,66,0.6599],"zaylon":[496,0,0.5391],"zayon":[272,0,0.4869],"zebastian":[201,0,0.4606],"zykee":[72,0,0.0],"aadarsh":[251,0,0.4799],"aaronjacob":[5,0,0.0],"aaronjoshua":[10,0,0.0],"abdulai":[108,0,0.4067],"abdulhalim":[5,0,0.0],"abdulmajid":[21,0,0.0],"abhijay":[100,0,0.4],"abubaker":[62,0,0.0],"achintya":[43,0,0.0],"adarien":[20,0,0.0],"adavion":[16,0,0.0],"adeleke":[5,0,0.0],"adnaan":[73,0,0.0],"adreian":[21,0,0.0],"advaith":[1046,0,0.6039],"aeddon":[26,0,0.0],"akshith":[60,0,0.0],"alberth":[97,0,0.0],"alymuhammad":[5,0,0.0],"amear":[74,0,0.0],"amias":[2672,7,0.6838],"analu":[15,5,0.0],"andis":[5,0,0.0],"andreous":[10,0,0.0],"aneeq":[20,0,0.0],"anferney":[5,0,0.0],"angeldaniel":[31,0,0.0],"anjay":[52,0,0.0],"antrez":[5,0,0.0],"argenys":[10,0,0.0],"artavion":[46,0,0.0],"ashlund":[5,0,0.0],"assan":[35,0,0.0],"audelio":[5,0,0.0],"aveion":[186,0,0.4539],"awab":[245,0,0.4778],"ayric":[5,0,0.0],"azarel":[150,0,0.4352],"azarian":[147,0,0.4335],"azarius":[219,0,0.4681],"azyon":[27,0,0.0],"baine":[246,0,0.4782],"bakary":[137,0,0.4273],"balaji":[5,0,0.0],"baris":[39,0,0.0],"baruc":[95,0,0.0],"bence":[202,0,0.4611],"benet":[52,20,0.0],"benner":[5,0,0.0],"bin":[11,0,0.0],"blass":[5,0,0.0],"blerim":[5,0,0.0],"brage":[10,0,0.0],"brodyn":[355,0,0.51],"caidan":[385,0,0.5171],"caidin":[96,0,0.0],"caidon":[216,0,0.4669],"calaeb":[10,0,0.0],"camdin":[294,0,0.4937],"camerson":[5,0,0.0],"casyn":[492,26,0.5156],"caydin":[425,37,0.4902],"caysey":[5,0,0.0],"cervantes":[18,0,0.0],"charan":[127,0,0.4208],"christianjay":[10,0,0.0],"coben":[132,0,0.4241],"cobra":[25,0,0.0],"cordin":[15,0,0.0],"cortell":[5,0,0.0],"coulten":[5,0,0.0],"daan":[15,0,0.0],"daegen":[82,0,0.0],"daegon":[77,0,0.0],"daejion":[5,0,0.0],"daemeon":[44,0,0.0],"dago":[160,0,0.4408],"dair":[77,0,0.0],"damariae":[36,0,0.0],"damarlo":[5,0,0.0],"damarri":[188,0,0.4548],"damiyon":[36,0,0.0],"danieljr":[13,0,0.0],"daouda":[135,0,0.4261],"daquandre":[10,0,0.0],"dasaun":[31,0,0.0],"dashaan":[5,0,0.0],"dashad":[17,0,0.0],"davae":[5,47,0.0],"davionn":[20,0,0.0],"dayden":[277,0,0.4885],"dayvonne":[5,0,0.0],"dazhan":[5,0,0.0],"deajon":[5,0,0.0],"decameron":[29,0,0.0],"deiveon":[5,0,0.0],"demas":[5,0,0.0],"demeatrius":[5,0,0.0],"demetrian":[10,0,0.0],"derique":[5,0,0.0],"dermarr":[5,0,0.0],"derrione":[5,0,0.0],"detavion":[35,0,0.0],"dettrick":[5,0,0.0],"devn":[5,0,0.0],"devontrey":[5,0,0.0],"dezhaun":[5,0,0.0],"dheeraj":[75,0,0.0],"dhilan":[347,0,0.5081],"dmarion":[624,0,0.559],"dquarius":[10,0,0.0],"drason":[15,0,0.0],"dshun":[5,0,0.0],"dysean":[5,0,0.0],"dyvion":[5,0,0.0],"eain":[76,0,0.0],"edge":[102,0,0.4017],"edrei":[101,0,0.4009],"edrik":[145,0,0.4323],"edzon":[5,0,0.0],"eero":[348,0,0.5083],"ekene":[26,16,0.0],"ekin":[186,6,0.4424],"eliam":[3349,0,0.705],"eliase":[5,0,0.0],"elye":[185,0,0.4534],"emaje":[5,0,0.0],"emond":[16,0,0.0],"enan":[42,0,0.0],"endrit":[78,0,0.0],"enoe":[5,0,0.0],"erikc":[10,0,0.0],"estiben":[101,0,0.4009],"ethanial":[16,0,0.0],"ezequias":[213,0,0.4657],"faiyaz":[43,0,0.0],"farhaan":[94,0,0.0],"fawwaz":[33,0,0.0],"fiifi":[5,0,0.0],"finneas":[1003,0,0.6003],"gabin":[28,0,0.0],"gaebriel":[20,0,0.0],"gator":[21,0,0.0],"giovoni":[90,0,0.0],"guinness":[24,0,0.0],"gurkamal":[5,0,0.0],"hananiah":[70,101,0.2638],"harrisen":[17,0,0.0],"harrisson":[5,0,0.0],"hasin":[10,0,0.0],"herbey":[5,0,0.0],"horlando":[18,0,0.0],"hyson":[5,0,0.0],"idiris":[38,0,0.0],"ijaz":[11,0,0.0],"inigo":[166,0,0.444],"isajah":[5,0,0.0],"ishraq":[30,0,0.0],"isia":[5,68,0.0],"iyon":[60,0,0.0],"izach":[53,0,0.0],"jabron":[152,0,0.4364],"jacarious":[34,0,0.0],"jacore":[5,0,0.0],"jadarion":[96,0,0.0],"jadarrious":[5,0,0.0],"jadeon":[49,0,0.0],"jadiss":[10,0,0.0],"jadonte":[5,0,0.0],"jaeshaun":[104,0,0.4034],"jaharie":[20,0,0.0],"jahlique":[5,0,0.0],"jahmire":[135,0,0.4261],"jahshaun":[10,0,0.0],"jahwan":[5,0,0.0],"jajuane":[5,0,0.0],"jakarious":[5,0,0.0],"jakorian":[90,0,0.0],"jalem":[5,0,0.0],"jaleon":[34,0,0.0],"jaquory":[5,0,0.0],"jarhett":[10,0,0.0],"jarrion":[21,0,0.0],"jartavis":[5,0,0.0],"jashone":[5,0,0.0],"jassiah":[343,17,0.4871],"jaterrious":[18,0,0.0],"jatwan":[10,0,0.0],"jaycub":[101,0,0.4009],"jayelin":[5,0,0.0],"jayen":[190,0,0.4558],"jayjuan":[27,0,0.0],"jayleon":[110,0,0.4083],"jaysten":[74,0,0.0],"jayvan":[135,0,0.4261],"jayz":[49,0,0.0],"jeanjacques":[10,0,0.0],"jehlani":[105,250,0.3592],"jekhi":[101,0,0.4009],"jesaiah":[284,0,0.4907],"jesusdaniel":[5,0,0.0],"jeveon":[11,0,0.0],"jeziah":[632,41,0.5311],"jhamar":[21,0,0.0],"jhancarlos":[15,0,0.0],"jhaylen":[21,0,0.0],"joahan":[143,0,0.4311],"johnluis":[5,0,0.0],"jontaye":[5,0,0.0],"josefernando":[10,0,0.0],"joshiah":[114,0,0.4114],"joshuajay":[5,0,0.0],"joshuaryan":[17,0,0.0],"jove":[195,0,0.458],"jovohn":[5,0,0.0],"jshin":[5,0,0.0],"juztin":[5,0,0.0],"jven":[5,0,0.0],"jyden":[114,0,0.4114],"jylen":[22,0,0.0],"jyrese":[35,0,0.0],"kaedan":[379,5,0.5101],"kaeman":[5,0,0.0],"kaen":[10,0,0.0],"kaide":[261,0,0.4833],"kalev":[234,0,0.4738],"kallel":[32,0,0.0],"kalun":[5,0,0.0],"kastriot":[5,0,0.0],"katavion":[5,0,0.0],"kaydn":[247,59,0.4013],"keaka":[51,0,0.0],"kealin":[18,0,0.0],"keldan":[113,0,0.4106],"kellum":[81,0,0.0],"kenterrius":[10,0,0.0],"kever":[5,0,0.0],"kevontre":[5,0,0.0],"keyonn":[29,0,0.0],"khadafi":[11,0,0.0],"khair":[162,0,0.4419],"khamar":[63,0,0.0],"khorey":[16,0,0.0],"khylen":[458,0,0.5322],"kiler":[5,0,0.0],"klever":[102,13,0.3655],"kohner":[117,0,0.4136],"koner":[28,0,0.0],"koorosh":[5,0,0.0],"kosei":[90,0,0.0],"kostandinos":[10,0,0.0],"krew":[3656,41,0.7057],"kuper":[110,0,0.4083],"kyce":[250,0,0.4796],"kyi":[135,33,0.3576],"kymari":[468,214,0.3889],"kymir":[812,0,0.5819],"lajavion":[26,0,0.0],"laterius":[15,0,0.0],"lazareth":[5,0,0.0],"lazarick":[12,0,0.0],"leiby":[144,0,0.4317],"lennix":[423,430,0.2955],"lexx":[92,0,0.0],"lochlainn":[45,0,0.0],"machai":[313,0,0.4991],"mackinnley":[10,0,0.0],"mahdy":[47,0,0.0],"maikel":[290,0,0.4925],"maikol":[176,0,0.4491],"makael":[78,0,0.0],"maleki":[253,0,0.4806],"markangelo":[11,0,0.0],"markwan":[5,0,0.0],"martavion":[218,0,0.4677],"matis":[149,0,0.4346],"matteen":[11,0,0.0],"maycon":[63,0,0.0],"mayel":[51,0,0.0],"mayolo":[5,0,0.0],"mckee":[5,0,0.0],"mete":[141,0,0.4298],"micaleb":[5,0,0.0],"miguelantonio":[16,0,0.0],"miquez":[5,0,0.0],"morpheus":[26,0,0.0],"mosses":[28,0,0.0],"muad":[529,0,0.5447],"nalen":[26,0,0.0],"nanayaw":[64,0,0.0],"nasere":[10,0,0.0],"natavius":[32,0,0.0],"nathain":[5,0,0.0],"niclaus":[10,0,0.0],"nigiel":[5,0,0.0],"nikai":[151,5,0.4246],"nipun":[16,0,0.0],"nyan":[116,0,0.4129],"nyzier":[220,0,0.4685],"nyzir":[461,0,0.5327],"olaoluwa":[215,0,0.4665],"oluwatobiloba":[237,36,0.423],"payce":[44,0,0.0],"prajwal":[96,0,0.0],"qian":[20,0,0.0],"raidon":[168,0,0.4451],"rayqwon":[10,0,0.0],"rem":[16,10,0.0],"rijad":[10,0,0.0],"rijul":[20,0,0.0],"rilley":[69,72,0.2195],"rintaro":[15,0,0.0],"rishik":[465,0,0.5335],"rushad":[5,0,0.0],"ryaan":[250,0,0.4796],"ryanjay":[5,0,0.0],"sahmir":[221,0,0.4689],"sajad":[122,0,0.4173],"santavious":[5,0,0.0],"satvik":[472,0,0.5348],"savyon":[99,0,0.0],"sebastiaan":[47,0,0.0],"shakib":[22,0,0.0],"shaurya":[1550,0,0.6381],"shimeek":[5,0,0.0],"shivank":[117,0,0.4136],"siaka":[16,0,0.0],"skyshun":[5,0,0.0],"sladen":[157,0,0.4392],"sorin":[489,20,0.5201],"sriharsha":[48,0,0.0],"stas":[24,0,0.0],"sujit":[22,0,0.0],"sukhjot":[11,0,0.0],"tacory":[5,0,0.0],"taemon":[10,0,0.0],"taeyon":[11,0,0.0],"tahriq":[5,0,0.0],"taiton":[42,0,0.0],"tajohn":[29,0,0.0],"tamarion":[666,0,0.5647],"tanin":[5,0,0.0],"tannyr":[5,0,0.0],"tarkan":[11,0,0.0],"tatsu":[5,0,0.0],"taurius":[5,0,0.0],"tavione":[23,0,0.0],"tavonn":[5,0,0.0],"tavontae":[5,0,0.0],"tavyn":[176,12,0.4258],"taysean":[228,0,0.4716],"tayvone":[5,0,0.0],"temesgen":[97,0,0.0],"tenoch":[263,0,0.484],"thienan":[61,29,0.0],"timarcus":[5,0,0.0],"tirth":[116,0,0.4129],"tralon":[10,0,0.0],"traylan":[5,0,0.0],"trayven":[109,0,0.4075],"treat":[10,0,0.0],"trevier":[5,0,0.0],"tristun":[16,0,0.0],"trust":[347,182,0.3573],"trynton":[20,0,0.0],"tyaun":[30,0,0.0],"tydarian":[5,0,0.0],"tydarious":[17,0,0.0],"tyden":[390,0,0.5182],"tyhir":[123,0,0.418],"vatsal":[36,0,0.0],"yesh":[10,0,0.0],"yiorgos":[5,0,0.0],"youki":[5,0,0.0],"zabrien":[10,0,0.0],"zaccai":[452,0,0.531],"zackorie":[5,0,0.0],"zaiden":[11079,44,0.806],"zamier":[197,0,0.4589],"zamon":[26,0,0.0],"zanden":[135,0,0.4261],"zayveon":[430,0,0.5267],"zefram":[10,0,0.0],"zemar":[10,0,0.0],"zeven":[158,0,0.4397],"yaire":[0,506,0.5408],"neveah":[0,5292,0.7447],"nayelis":[0,513,0.542],"shadimon":[0,44,0.0],"navaeh":[0,1593,0.6404],"jersie":[0,544,0.5471],"lorelai":[0,9322,0.7939],"jaydy":[0,144,0.4317],"taygan":[20,188,0.419],"jerzie":[0,632,0.5601],"daejanay":[0,20,0.0],"sontee":[0,70,0.0],"nagely":[0,20,0.0],"najely":[0,52,0.0],"yuleidy":[0,112,0.4098],"brynlie":[0,919,0.5927],"caziah":[39,18,0.0],"veyonce":[0,52,0.0],"aamiyah":[0,513,0.542],"derriona":[0,179,0.4506],"imagen":[0,33,0.0],"joharis":[0,12,0.0],"naturi":[0,143,0.4311],"prisha":[0,2832,0.6904],"tyina":[0,28,0.0],"aniyia":[0,82,0.0],"aziyah":[90,1593,0.6107],"graceyn":[0,527,0.5444],"isabellah":[0,359,0.511],"lanaiya":[0,212,0.4653],"mahi":[42,1202,0.5981],"mayrani":[0,244,0.4775],"najeli":[0,11,0.0],"naveah":[0,1725,0.6474],"nikhila":[0,52,0.0],"pranathi":[0,133,0.4248],"sanaia":[0,200,0.4602],"aanika":[0,363,0.512],"adilyn":[0,2377,0.6752],"amariyah":[0,780,0.5784],"aukievah":[0,10,0.0],"ayane":[0,289,0.4922],"aynslee":[0,236,0.4746],"beyla":[0,237,0.4749],"ciclali":[0,53,0.0],"ciclaly":[0,77,0.0],"dabne":[0,10,0.0],"jerzee":[17,460,0.5166],"nakiaya":[0,15,0.0],"nayelee":[0,54,0.0],"scotlynn":[0,493,0.5386],"tyleigh":[0,407,0.5219],"zayah":[26,789,0.5637],"alaysiah":[0,106,0.4051],"alishba":[0,530,0.5449],"anashia":[0,27,0.0],"beonce":[0,9,0.0],"blimi":[0,171,0.4466],"brynli":[0,455,0.5316],"chailey":[0,19,0.0],"daffne":[0,52,0.0],"davaria":[0,15,0.0],"harliegh":[0,15,0.0],"jadalee":[0,138,0.428],"jakiria":[0,43,0.0],"jarelly":[0,90,0.0],"jermaya":[0,55,0.0],"jewelian":[10,14,0.0],"jeyda":[0,98,0.0],"jhanvi":[0,213,0.4657],"juleidy":[0,34,0.0],"keviona":[0,44,0.0],"kinaya":[0,78,0.0],"lux":[1351,1594,0.3755],"mashia":[0,19,0.0],"milayna":[0,269,0.486],"najmo":[0,75,0.0],"namira":[0,147,0.4335],"nayeliz":[0,179,0.4506],"nimue":[0,103,0.4026],"shaylei":[0,37,0.0],"sushmita":[0,19,0.0],"yaelin":[0,40,0.0],"yairi":[0,41,0.0],"yuleidi":[0,36,0.0],"zakyah":[0,201,0.4606],"zayana":[0,275,0.4879],"zyriah":[0,507,0.541],"aalaysia":[0,177,0.4496],"adalena":[0,584,0.5533],"ajalae":[0,13,0.0],"albanie":[0,20,0.0],"alonnah":[0,301,0.4957],"anassa":[0,8,0.0],"apsara":[0,35,0.0],"areesha":[0,229,0.472],"aziya":[0,549,0.5479],"belladonna":[0,435,0.5277],"bionce":[0,8,0.0],"breniya":[0,133,0.4248],"brenya":[0,196,0.4585],"breyonce":[0,18,0.0],"caelee":[0,59,0.0],"calaya":[0,225,0.4704],"camiah":[0,273,0.4872],"denija":[0,31,0.0],"elizia":[0,24,0.0],"emmalina":[0,614,0.5576],"hennah":[0,14,0.0],"ismahan":[0,133,0.4248],"izza":[0,164,0.443],"jaidynn":[41,266,0.431],"jaiyah":[0,263,0.484],"janhavi":[0,39,0.0],"janyssa":[0,33,0.0],"jariyah":[30,1162,0.5998],"jaydi":[0,128,0.4214],"jerzey":[68,426,0.4646],"joleena":[0,120,0.4158],"kahliya":[0,123,0.418],"kenaya":[0,68,0.0],"kennise":[0,19,0.0],"keyanni":[0,101,0.4009],"kryslin":[0,20,0.0],"kylieann":[0,177,0.4496],"lanah":[0,458,0.5322],"lexiana":[0,186,0.4539],"lexiss":[0,52,0.0],"lyniah":[0,257,0.482],"maelle":[0,475,0.5353],"mahitha":[0,92,0.0],"makayah":[0,205,0.4624],"maleiah":[0,321,0.5013],"manvi":[0,178,0.4501],"melynna":[0,15,0.0],"nagelly":[0,8,0.0],"navie":[6,529,0.5396],"nayele":[0,13,0.0],"naziya":[0,218,0.4677],"nhya":[0,8,0.0],"nijaya":[0,27,0.0],"nijeria":[0,8,0.0],"oluwatoni":[91,153,0.2994],"presly":[0,147,0.4335],"reighan":[0,116,0.4129],"riyanna":[0,205,0.4624],"sakora":[0,23,0.0],"shniya":[0,29,0.0],"sway":[102,226,0.3467],"tavania":[0,14,0.0],"aajaylah":[0,20,0.0],"aalyha":[0,19,0.0],"abbygaile":[0,47,0.0],"abia":[0,108,0.4067],"adaisia":[0,7,0.0],"adisen":[0,180,0.4511],"aily":[0,204,0.4619],"airyn":[5,135,0.4139],"alayssa":[0,146,0.4329],"alexz":[0,14,0.0],"alhana":[0,36,0.0],"alieyah":[0,64,0.0],"alinne":[0,48,0.0],"alleana":[0,12,0.0],"alyha":[0,80,0.0],"amaani":[0,104,0.4034],"amarea":[6,125,0.4041],"ameliah":[0,823,0.5831],"amour":[194,804,0.4832],"analiyah":[0,1371,0.6274],"angelyka":[0,17,0.0],"aniyha":[0,228,0.4716],"anjolee":[0,12,0.0],"ayelen":[0,730,0.5727],"azariyah":[106,1042,0.5555],"azarria":[0,129,0.4221],"chamberlyn":[0,13,0.0],"dafnne":[0,23,0.0],"danyia":[0,90,0.0],"darely":[0,326,0.5026],"dezaria":[0,107,0.4059],"dhvani":[0,78,0.0],"dinasty":[0,12,0.0],"ebelyn":[0,89,0.0],"eja":[0,45,0.0],"ekram":[0,37,0.0],"elleigh":[0,621,0.5586],"eryanna":[0,69,0.0],"eshika":[0,67,0.0],"estefhany":[0,7,0.0],"galilee":[0,607,0.5566],"galya":[0,85,0.0],"genaveve":[0,44,0.0],"greenlee":[0,829,0.5837],"hallelujah":[0,175,0.4486],"hennesy":[0,84,0.0],"hidaya":[0,241,0.4764],"honestee":[0,192,0.4567],"horizon":[28,117,0.3488],"imagin":[0,50,0.0],"iolani":[0,97,0.0],"ireanna":[0,97,0.0],"irem":[0,99,0.0],"ivyonna":[0,485,0.5371],"izabele":[0,12,0.0],"jaasia":[0,113,0.4106],"jahkayla":[0,30,0.0],"jahmiah":[17,35,0.0],"jahniah":[0,107,0.4059],"jahniyah":[0,318,0.5005],"jaiyla":[0,124,0.4187],"jakaylin":[10,64,0.0],"jamauria":[0,35,0.0],"jameriah":[0,93,0.0],"janaria":[0,198,0.4593],"jasenya":[0,19,0.0],"jayre":[0,12,0.0],"jekiah":[0,7,0.0],"jelyn":[0,12,0.0],"jeymi":[0,199,0.4598],"jhovanna":[0,7,0.0],"johnah":[0,7,0.0],"jolei":[0,48,0.0],"jozey":[0,99,0.0],"kacelyn":[0,214,0.4661],"kalanie":[0,169,0.4456],"kalyah":[0,63,0.0],"kalyse":[0,263,0.484],"kanchan":[0,7,0.0],"kealeigh":[0,12,0.0],"keertana":[0,32,0.0],"keitlyn":[0,65,0.0],"kemyia":[0,47,0.0],"kenija":[0,12,0.0],"kynzee":[0,201,0.4606],"leiyah":[0,273,0.4872],"lenayah":[0,52,0.0],"leniya":[0,146,0.4329],"macaiah":[36,71,0.2693],"macayle":[5,56,0.0],"makenzye":[0,195,0.458],"makyiah":[0,237,0.4749],"maleyah":[0,652,0.5628],"malli":[0,91,0.0],"marajade":[0,97,0.0],"mariani":[0,69,0.0],"metztli":[5,451,0.526],"montserrath":[0,139,0.4286],"mylei":[0,251,0.4799],"mynia":[0,13,0.0],"nahida":[0,45,0.0],"naileah":[0,144,0.4317],"nakara":[0,18,0.0],"namiah":[0,189,0.4553],"namitha":[0,19,0.0],"nasirah":[0,110,0.4083],"naziyah":[0,515,0.5424],"nazli":[0,338,0.5058],"nazly":[0,364,0.5122],"nekira":[0,7,0.0],"neviah":[0,375,0.5148],"nihya":[0,7,0.0],"nikerria":[0,19,0.0],"nyeli":[0,321,0.5013],"odet":[0,7,0.0],"omaya":[0,90,0.0],"raegin":[0,30,0.0],"ranyah":[0,186,0.4539],"raquela":[0,7,0.0],"rickya":[0,33,0.0],"rikiya":[0,49,0.0],"sanayah":[0,327,0.5029],"saniyya":[0,183,0.4525],"shadestiny":[0,7,0.0],"shecid":[0,21,0.0],"shria":[0,34,0.0],"siclali":[0,60,0.0],"sindhuja":[0,29,0.0],"sofhia":[0,110,0.4083],"sreeja":[0,132,0.4241],"suhayla":[0,413,0.5232],"talajah":[0,73,0.0],"tarianna":[0,50,0.0],"taygen":[166,222,0.2962],"trinyti":[0,24,0.0],"tyjana":[0,12,0.0],"tyrianne":[0,7,0.0],"vedika":[0,475,0.5353],"vennela":[0,85,0.0],"xzaria":[0,90,0.0],"zaiya":[0,524,0.5439],"zamoria":[0,92,0.0],"zhariya":[0,18,0.0],"zi":[65,62,0.2153],"zitlalic":[0,51,0.0],"aariah":[0,377,0.5153],"abigai":[0,12,0.0],"aelyn":[0,228,0.4716],"ahnesti":[0,137,0.4273],"akura":[0,11,0.0],"aleyse":[0,11,0.0],"alezia":[0,6,0.0],"alizey":[0,162,0.4419],"allysin":[0,43,0.0],"alohilani":[0,85,0.0],"amanii":[0,172,0.4471],"ameyalli":[0,90,0.0],"amilyah":[0,297,0.4946],"amiria":[0,280,0.4894],"amirrah":[0,409,0.5223],"amyria":[0,228,0.4716],"anaejah":[0,11,0.0],"anaely":[0,47,0.0],"analuiza":[0,40,0.0],"analyce":[0,96,0.0],"anandi":[0,128,0.4214],"anasophia":[0,325,0.5024],"anayelly":[0,6,0.0],"aneiya":[0,6,0.0],"anishka":[0,318,0.5005],"annajulia":[0,66,0.0],"annicka":[0,46,0.0],"anyjah":[0,89,0.0],"areonia":[0,11,0.0],"armya":[0,88,0.0],"aslhey":[0,6,0.0],"austynn":[0,373,0.5143],"avarose":[0,550,0.5481],"ayreana":[0,6,0.0],"azelea":[0,115,0.4121],"azzure":[5,75,0.0],"baliegh":[0,12,0.0],"baya":[0,391,0.5184],"belana":[0,6,0.0],"beloved":[0,33,0.0],"braeley":[0,122,0.4173],"brailynn":[27,909,0.5771],"braniyah":[0,193,0.4571],"breighana":[0,6,0.0],"brennae":[0,6,0.0],"brielyn":[0,203,0.4615],"brinleigh":[0,870,0.5879],"calvinesha":[0,6,0.0],"carlasia":[0,36,0.0],"cashmir":[146,6,0.4191],"ceona":[0,22,0.0],"chayanna":[0,11,0.0],"ciane":[0,6,0.0],"cittlaly":[0,6,0.0],"clhoe":[0,6,0.0],"coraleigh":[0,221,0.4689],"corionna":[0,50,0.0],"cyniah":[0,327,0.5029],"dadriana":[0,6,0.0],"daela":[0,49,0.0],"daizie":[0,46,0.0],"dakara":[0,12,0.0],"damla":[0,11,0.0],"darrionna":[0,17,0.0],"daxia":[0,6,0.0],"dazani":[0,79,0.0],"dazlyn":[0,11,0.0],"derionna":[0,85,0.0],"destinny":[0,30,0.0],"djeneba":[0,155,0.4381],"dnaya":[0,30,0.0],"edrianna":[0,6,0.0],"elenamarie":[0,24,0.0],"elianny":[0,899,0.5908],"elienai":[6,288,0.4836],"emilin":[0,23,0.0],"emilya":[0,211,0.4649],"emilyelizabeth":[0,46,0.0],"emilyne":[0,12,0.0],"erilyn":[0,169,0.4456],"erinique":[0,6,0.0],"eshita":[0,22,0.0],"evening":[0,26,0.0],"faisa":[0,35,0.0],"fariah":[0,17,0.0],"favour":[37,455,0.4979],"geetika":[0,61,0.0],"gibelly":[0,6,0.0],"guilianna":[0,196,0.4585],"gwenavere":[0,23,0.0],"gwynith":[0,12,0.0],"haidi":[0,61,0.0],"iiana":[0,6,0.0],"ilaya":[0,34,0.0],"ilyne":[0,6,0.0],"imala":[0,28,0.0],"iniya":[0,444,0.5295],"isaira":[0,11,0.0],"itzy":[0,116,0.4129],"iyonia":[0,32,0.0],"jadai":[0,19,0.0],"jaded":[0,19,0.0],"jaea":[0,11,0.0],"jaedynn":[16,150,0.4012],"jaesa":[0,6,0.0],"jahnise":[0,6,0.0],"jakaira":[0,28,0.0],"jakasia":[0,6,0.0],"jakierra":[0,12,0.0],"jalaiya":[0,250,0.4796],"jalaysha":[0,81,0.0],"jali":[0,51,0.0],"jalivia":[0,19,0.0],"jamayla":[0,46,0.0],"jamisyn":[34,255,0.4343],"jarlin":[0,11,0.0],"jasminerose":[0,23,0.0],"javiona":[0,24,0.0],"jaxyn":[1293,340,0.5088],"jaynia":[0,95,0.0],"jaynisha":[0,6,0.0],"jenaiya":[0,47,0.0],"jennaka":[0,11,0.0],"jenniah":[0,69,0.0],"jermiyah":[17,168,0.4118],"jersi":[0,383,0.5166],"jerzi":[25,558,0.5294],"jestiny":[0,30,0.0],"joahna":[0,11,0.0],"joellie":[0,89,0.0],"juliannah":[0,183,0.4525],"jyah":[0,22,0.0],"jyrah":[0,76,0.0],"kaitelynn":[0,11,0.0],"kamariya":[0,172,0.4471],"kaybree":[0,330,0.5037],"kaycey":[0,16,0.0],"kaydan":[709,134,0.4921],"kayliann":[0,39,0.0],"keazia":[0,16,0.0],"keidi":[0,14,0.0],"kemberli":[0,6,0.0],"kemiyah":[0,450,0.5306],"kerynn":[0,6,0.0],"kessia":[0,16,0.0],"keyari":[38,264,0.4336],"khanya":[0,29,0.0],"kilyn":[33,158,0.3774],"kloei":[0,45,0.0],"knia":[0,6,0.0],"kyelle":[10,122,0.392],"kyhia":[0,11,0.0],"kyjah":[0,27,0.0],"kylana":[0,36,0.0],"kymera":[0,19,0.0],"kynsey":[0,23,0.0],"larencia":[0,6,0.0],"layney":[0,180,0.4511],"layonna":[0,270,0.4863],"leyan":[0,137,0.4273],"libna":[0,12,0.0],"libny":[0,74,0.0],"liley":[0,70,0.0],"liliani":[0,221,0.4689],"lillieann":[0,197,0.4589],"lithzy":[0,66,0.0],"littzy":[0,38,0.0],"ludwika":[0,101,0.4009],"madyline":[0,56,0.0],"madysan":[0,18,0.0],"maicy":[0,116,0.4129],"makaria":[0,85,0.0],"makayley":[0,12,0.0],"makiyla":[0,127,0.4208],"makynlee":[0,665,0.5646],"malaz":[0,11,0.0],"marcasia":[0,17,0.0],"mariabelen":[0,124,0.4187],"marlett":[0,29,0.0],"mati":[67,72,0.222],"mayerli":[0,121,0.4166],"mayerly":[0,160,0.4408],"maylani":[0,890,0.5899],"maymunah":[0,134,0.4254],"mckinleigh":[0,476,0.5355],"meiah":[0,181,0.4515],"mekhya":[0,11,0.0],"meliha":[0,83,0.0],"mercedys":[0,6,0.0],"mikaylie":[0,32,0.0],"miski":[0,141,0.4298],"monserratte":[0,6,0.0],"nadeya":[0,24,0.0],"nailyn":[0,72,0.0],"nayelin":[0,6,0.0],"neelia":[0,19,0.0],"nephtalie":[0,50,0.0],"nickiya":[0,16,0.0],"novaleigh":[0,1365,0.627],"nowshin":[0,11,0.0],"nyera":[0,48,0.0],"oliviana":[0,400,0.5204],"onye":[0,21,0.0],"ophelie":[0,11,0.0],"oviya":[0,154,0.4375],"paetra":[0,6,0.0],"pavithra":[0,49,0.0],"phuongvy":[0,6,0.0],"pragya":[0,233,0.4735],"preonda":[0,6,0.0],"railynn":[0,958,0.5963],"ramatoulaye":[0,198,0.4593],"reagyn":[0,220,0.4685],"royalty":[498,6871,0.7212],"saanya":[0,94,0.0],"sabelle":[0,22,0.0],"samai":[6,171,0.4344],"samauria":[0,47,0.0],"sanne":[0,47,0.0],"serenidy":[0,239,0.4757],"shamaree":[5,29,0.0],"shaniaya":[0,11,0.0],"sharya":[0,53,0.0],"shaymaa":[0,18,0.0],"sivani":[0,53,0.0],"skylea":[0,23,0.0],"sofya":[0,274,0.4876],"solomia":[0,367,0.5129],"sophya":[0,620,0.5585],"stajah":[0,6,0.0],"suchita":[0,18,0.0],"suhana":[0,703,0.5694],"sumayo":[0,61,0.0],"sumya":[0,30,0.0],"suzeth":[0,57,0.0],"swarna":[0,6,0.0],"sydnii":[0,6,0.0],"tanajha":[0,16,0.0],"tanayzia":[0,6,0.0],"tenajah":[0,11,0.0],"teuna":[0,6,0.0],"thaliyah":[0,51,0.0],"timeria":[0,6,0.0],"trintiy":[0,12,0.0],"tybrea":[0,6,0.0],"tyenna":[0,11,0.0],"tyjanique":[0,6,0.0],"tylissa":[0,6,0.0],"tyniya":[0,71,0.0],"vienne":[0,231,0.4727],"wambui":[0,6,0.0],"wuendy":[0,20,0.0],"yaneisi":[0,29,0.0],"yaritzel":[0,287,0.4916],"yordanos":[0,57,0.0],"yozelin":[0,26,0.0],"yzabelle":[0,100,0.4],"zahrya":[0,32,0.0],"zakyla":[0,170,0.4461],"zareyah":[0,73,0.0],"zenaya":[0,258,0.4823],"ziera":[0,18,0.0],"zykera":[0,77,0.0],"aakanksha":[0,10,0.0],"aalaya":[0,227,0.4712],"aamari":[190,109,0.3146],"aamaya":[0,21,0.0],"aamirah":[0,310,0.4983],"aaria":[0,632,0.5601],"abiageal":[0,145,0.4323],"abigaille":[0,38,0.0],"abriah":[0,35,0.0],"abriela":[0,62,0.0],"addelyn":[0,2615,0.6835],"adhya":[0,553,0.5485],"adileny":[0,79,0.0],"adlemi":[0,21,0.0],"adreauna":[0,5,0.0],"ahjahnae":[0,5,0.0],"ahliya":[0,70,0.0],"ahmarria":[0,5,0.0],"ahnyah":[0,56,0.0],"ahrianna":[0,187,0.4544],"aizlynn":[0,296,0.4943],"ajala":[0,22,0.0],"akaysia":[0,5,0.0],"akeyra":[0,5,0.0],"akria":[0,5,0.0],"aladrian":[0,5,0.0],"alaijha":[0,39,0.0],"alajiah":[0,86,0.0],"alayziah":[0,138,0.428],"alazea":[0,15,0.0],"aleyana":[0,48,0.0],"alista":[0,5,0.0],"aliviah":[0,1055,0.6047],"aliviya":[0,175,0.4486],"alivya":[0,331,0.504],"aliye":[0,16,0.0],"alycee":[0,5,0.0],"alynah":[0,238,0.4753],"alysta":[0,10,0.0],"alyvea":[0,30,0.0],"amahri":[96,32,0.3161],"amarachukwu":[0,117,0.4136],"amarrie":[0,34,0.0],"amaziah":[631,124,0.4811],"amilleon":[5,10,0.0],"amoria":[0,176,0.4491],"amyla":[0,621,0.5586],"amyya":[0,5,0.0],"anaika":[0,251,0.4799],"anamary":[0,5,0.0],"anayelis":[0,10,0.0],"aneesia":[0,39,0.0],"angelese":[0,25,0.0],"anielka":[0,21,0.0],"anij":[0,5,0.0],"anistasia":[0,30,0.0],"annaelise":[0,33,0.0],"annakatherine":[0,67,0.0],"annalice":[0,15,0.0],"annely":[0,102,0.4017],"annesley":[0,34,0.0],"annsleigh":[0,185,0.4534],"anuhya":[0,35,0.0],"anureet":[0,41,0.0],"anyi":[0,149,0.4346],"anylah":[0,1695,0.6458],"araeya":[0,139,0.4286],"arai":[0,73,0.0],"areianna":[0,19,0.0],"aridai":[0,34,0.0],"ariea":[0,134,0.4254],"arieyana":[0,53,0.0],"arim":[0,5,0.0],"arlete":[0,5,0.0],"armiyah":[0,170,0.4461],"arraya":[0,114,0.4114],"arrissa":[0,20,0.0],"arshiya":[0,222,0.4693],"aryianna":[0,242,0.4768],"aryiel":[0,23,0.0],"arzoo":[0,15,0.0],"asada":[0,5,0.0],"ashanee":[0,5,0.0],"ashini":[0,5,0.0],"ashonna":[0,17,0.0],"asiaonna":[0,5,0.0],"assitan":[0,15,0.0],"assma":[0,5,0.0],"astry":[0,15,0.0],"attison":[0,47,0.0],"atzin":[118,22,0.3618],"aubreonna":[0,28,0.0],"aubreyonna":[0,17,0.0],"aujanai":[0,5,0.0],"autom":[0,10,0.0],"aveen":[0,86,0.0],"avey":[0,167,0.4445],"avielle":[6,606,0.5519],"avisha":[0,148,0.4341],"avyanna":[0,1375,0.6277],"ayaa":[0,33,0.0],"ayna":[0,85,0.0],"ayooluwa":[16,10,0.0],"ayren":[106,5,0.3906],"baraah":[0,55,0.0],"barbora":[0,5,0.0],"basimah":[0,5,0.0],"bemnet":[36,94,0.3057],"bentlee":[4107,910,0.6058],"bezawit":[0,48,0.0],"bhumika":[0,28,0.0],"biankah":[0,5,0.0],"brainna":[0,20,0.0],"braylea":[0,96,0.0],"brayli":[0,168,0.4451],"breeyanna":[0,5,0.0],"brekken":[476,22,0.5156],"briazia":[0,5,0.0],"brilie":[0,10,0.0],"bryasha":[0,5,0.0],"brynleigh":[0,3765,0.7152],"brynnlee":[0,1841,0.653],"camiyah":[0,894,0.5903],"camyron":[11,5,0.0],"caribbean":[0,5,0.0],"casiah":[0,10,0.0],"caylei":[0,160,0.4408],"ceyonce":[0,5,0.0],"charlyze":[0,34,0.0],"chidima":[0,11,0.0],"chrishayla":[0,11,0.0],"ciah":[0,5,0.0],"cinsere":[78,5,0.0],"citali":[0,34,0.0],"citialli":[0,5,0.0],"cittlali":[0,11,0.0],"clareese":[0,5,0.0],"coreyonna":[0,5,0.0],"corriana":[0,11,0.0],"cymbre":[0,5,0.0],"cytlalli":[0,5,0.0],"dadne":[0,5,0.0],"dailah":[0,105,0.4042],"daizjah":[0,10,0.0],"dakeria":[0,16,0.0],"dalylah":[0,584,0.5533],"danajia":[0,32,0.0],"danelis":[0,15,0.0],"dariell":[112,10,0.3831],"darlenne":[0,34,0.0],"dasianae":[0,10,0.0],"dayeli":[0,42,0.0],"daziya":[0,115,0.4121],"deaijah":[0,16,0.0],"deeqa":[0,5,0.0],"delali":[0,34,0.0],"delci":[0,11,0.0],"denalia":[0,10,0.0],"dezaraye":[0,11,0.0],"dezmyn":[22,5,0.0],"deztiney":[0,5,0.0],"deztini":[0,31,0.0],"dinasia":[0,24,0.0],"dioselin":[0,31,0.0],"dmani":[114,35,0.3325],"dniya":[0,129,0.4221],"donashia":[0,5,0.0],"dorismar":[0,175,0.4486],"dynastee":[0,102,0.4017],"dzenita":[0,5,0.0],"easha":[0,10,0.0],"eastyn":[1073,729,0.3877],"eiley":[0,508,0.5412],"eilyn":[0,255,0.4813],"eleasah":[0,5,0.0],"elianah":[0,687,0.5674],"elizamarie":[0,21,0.0],"ellarie":[0,332,0.5042],"elysium":[11,85,0.0],"emeria":[0,19,0.0],"emilygrace":[0,97,0.0],"emilymae":[0,5,0.0],"emmee":[0,44,0.0],"emmry":[0,171,0.4466],"endyia":[0,5,0.0],"eniah":[0,35,0.0],"erinisha":[0,5,0.0],"eriyona":[0,17,0.0],"esabel":[0,23,0.0],"ettel":[0,204,0.4619],"eujin":[0,10,0.0],"fajar":[0,26,0.0],"fathma":[0,5,0.0],"foram":[0,5,0.0],"gabbriel":[0,33,0.0],"gabija":[0,38,0.0],"gabreella":[0,5,0.0],"gabrialla":[0,10,0.0],"geetanjali":[0,10,0.0],"geethika":[0,42,0.0],"giannamarie":[0,95,0.0],"gillyan":[0,16,0.0],"gorgeous":[0,259,0.4827],"gracelin":[0,293,0.4934],"graesyn":[213,55,0.386],"greenly":[0,215,0.4665],"guendi":[0,12,0.0],"gurneet":[0,63,0.0],"hateya":[0,10,0.0],"havah":[0,129,0.4221],"hawah":[0,10,0.0],"hayllie":[0,16,0.0],"heavenlei":[0,11,0.0],"hephzibah":[0,142,0.4305],"hiilei":[0,83,0.0],"hooria":[0,90,0.0],"ialiyah":[0,24,0.0],"ices":[0,26,0.0],"ileyah":[0,21,0.0],"ilwad":[0,62,0.0],"independence":[0,16,0.0],"innocence":[0,116,0.4129],"irelan":[0,35,0.0],"ivannah":[0,119,0.4151],"izzabelle":[0,430,0.5267],"jacilynn":[0,10,0.0],"jackalin":[0,5,0.0],"jadiyah":[0,10,0.0],"jadynne":[0,10,0.0],"jahde":[0,10,0.0],"jahkia":[0,10,0.0],"jahmela":[0,5,0.0],"jahnyah":[0,49,0.0],"jaiah":[0,180,0.4511],"jaidlyn":[0,16,0.0],"jalasha":[0,10,0.0],"jalayla":[0,325,0.5024],"jaleeyah":[0,197,0.4589],"jalei":[0,97,0.0],"jalyah":[0,104,0.4034],"jalyiah":[0,161,0.4414],"jalyse":[0,53,0.0],"janaesha":[0,5,0.0],"janaija":[0,25,0.0],"janeise":[0,5,0.0],"janeria":[0,18,0.0],"janijah":[0,69,0.0],"janiyia":[0,46,0.0],"jaquoia":[0,11,0.0],"jaretzy":[0,625,0.5592],"jariya":[0,318,0.5005],"jarline":[0,5,0.0],"jastyn":[0,11,0.0],"jata":[0,5,0.0],"jayelynn":[0,56,0.0],"jaylaa":[0,118,0.4144],"jaylei":[0,318,0.5005],"jayliah":[0,242,0.4768],"jazabel":[0,19,0.0],"jeliyah":[0,73,0.0],"jerikah":[0,15,0.0],"jerrianna":[0,5,0.0],"jessalynne":[0,10,0.0],"jetzabel":[0,71,0.0],"jewellee":[0,5,0.0],"jeyla":[0,264,0.4843],"jhanai":[0,5,0.0],"jhasmin":[0,10,0.0],"jillianna":[0,123,0.418],"jinhee":[0,5,0.0],"jnaiya":[0,5,0.0],"jniah":[0,29,0.0],"jniyah":[0,260,0.483],"johara":[0,81,0.0],"johnessa":[0,5,0.0],"jolianna":[0,46,0.0],"jovanah":[0,5,0.0],"juliamae":[0,5,0.0],"julianah":[0,136,0.4267],"juliani":[60,170,0.3491],"juliany":[0,197,0.4589],"jylissa":[0,5,0.0],"jyotsna":[0,34,0.0],"kadijatou":[0,32,0.0],"kahia":[0,11,0.0],"kahmya":[0,168,0.4451],"kaidra":[0,5,0.0],"kaitley":[0,22,0.0],"kaiyana":[0,122,0.4173],"kallia":[0,52,0.0],"kamryne":[0,5,0.0],"kaonou":[0,5,0.0],"karissia":[0,14,0.0],"karstyn":[0,105,0.4042],"kataria":[0,5,0.0],"kayen":[94,5,0.0],"kayleanna":[0,85,0.0],"kaylien":[0,5,0.0],"kayliyah":[0,52,0.0],"kearie":[0,139,0.4286],"kearson":[0,5,0.0],"keerti":[0,25,0.0],"keilany":[0,956,0.5961],"keiora":[0,10,0.0],"keliyah":[0,261,0.4833],"kemaria":[0,132,0.4241],"kemily":[0,51,0.0],"kendasia":[0,5,0.0],"kenniyah":[0,144,0.4317],"kenzlee":[0,1582,0.6398],"keree":[0,5,0.0],"keyajah":[0,5,0.0],"keydi":[0,181,0.4515],"keyonie":[0,15,0.0],"keyonnie":[0,18,0.0],"keziyah":[0,194,0.4576],"khadijatou":[0,91,0.0],"khiari":[26,29,0.0],"khloee":[0,1569,0.6391],"kiali":[0,10,0.0],"kiaralyn":[0,5,0.0],"kiarri":[0,17,0.0],"kiden":[5,11,0.0],"kiranjot":[0,5,0.0],"kiyarah":[0,5,0.0],"kother":[0,5,0.0],"kreena":[0,5,0.0],"krishani":[0,5,0.0],"kylissa":[0,16,0.0],"kyliyah":[0,213,0.4657],"kyniah":[0,35,0.0],"kynley":[0,542,0.5468],"kysia":[0,5,0.0],"ladaya":[0,17,0.0],"ladaysia":[0,5,0.0],"laelah":[0,474,0.5352],"lakaia":[0,22,0.0],"lakenzie":[0,115,0.4121],"lamarra":[0,5,0.0],"lamyah":[0,354,0.5098],"laneise":[0,5,0.0],"lareyna":[0,74,0.0],"larizza":[0,5,0.0],"lataiya":[0,5,0.0],"lavaria":[0,21,0.0],"leiny":[0,35,0.0],"lekayla":[0,5,0.0],"leloni":[0,10,0.0],"lilu":[0,196,0.4585],"lilyian":[0,134,0.4254],"lised":[0,5,0.0],"litza":[0,44,0.0],"liviya":[0,207,0.4632],"llarely":[0,5,0.0],"loralai":[0,416,0.5238],"lucciana":[0,247,0.4785],"luisafernanda":[0,35,0.0],"lyris":[0,69,0.0],"lysha":[0,72,0.0],"maaha":[0,5,0.0],"maesa":[0,26,0.0],"magi":[0,5,0.0],"mahati":[0,89,0.0],"mahdia":[0,48,0.0],"maislyn":[0,95,0.0],"maka":[0,59,0.0],"makada":[0,5,0.0],"makaily":[0,5,0.0],"makhiya":[0,190,0.4558],"makieya":[0,16,0.0],"maleina":[0,24,0.0],"maleri":[0,10,0.0],"mallak":[0,31,0.0],"manasvi":[0,421,0.5249],"manshi":[0,5,0.0],"marialuiza":[0,137,0.4273],"marim":[0,21,0.0],"martaja":[0,5,0.0],"maslyn":[0,25,0.0],"mattelynn":[0,10,0.0],"maurin":[0,5,0.0],"maylia":[0,61,0.0],"maysam":[0,64,0.0],"mckennzie":[0,29,0.0],"mckylee":[0,19,0.0],"medelin":[0,12,0.0],"mekya":[0,10,0.0],"mhari":[0,5,0.0],"mhya":[0,5,0.0],"micahya":[0,46,0.0],"miela":[0,164,0.443],"mikaiah":[53,101,0.2869],"minaal":[0,86,0.0],"miu":[0,92,0.0],"miyani":[0,192,0.4567],"mkiyah":[0,10,0.0],"moiya":[0,5,0.0],"monajah":[0,5,0.0],"montaysia":[0,5,0.0],"monterra":[0,5,0.0],"montiara":[0,5,0.0],"monzerrad":[0,5,0.0],"mrinalini":[0,5,0.0],"murron":[0,5,0.0],"muzna":[0,10,0.0],"myann":[0,10,0.0],"mykhala":[0,5,0.0],"myliyah":[0,200,0.4602],"myricle":[0,61,0.0],"nachaly":[0,5,0.0],"nadyia":[0,26,0.0],"naiah":[0,220,0.4685],"nairah":[0,61,0.0],"najala":[0,5,0.0],"najayah":[0,21,0.0],"najelly":[0,5,0.0],"nakayah":[0,32,0.0],"nakee":[0,5,0.0],"nakel":[0,5,0.0],"nakieya":[0,5,0.0],"nakyiah":[0,63,0.0],"nalanie":[0,287,0.4916],"nalea":[0,129,0.4221],"narali":[0,39,0.0],"narely":[0,134,0.4254],"naryah":[0,385,0.5171],"nashly":[0,720,0.5715],"nashrah":[0,16,0.0],"natalle":[0,21,0.0],"natayja":[0,5,0.0],"nathalye":[0,47,0.0],"natily":[0,59,0.0],"navreet":[0,54,0.0],"nayela":[0,70,0.0],"naz":[69,94,0.2551],"neharika":[0,33,0.0],"nelitza":[0,5,0.0],"nelsi":[0,20,0.0],"nevaeha":[0,1061,0.6051],"nevaen":[0,96,0.0],"nevena":[0,102,0.4017],"niaje":[0,5,0.0],"niamya":[0,79,0.0],"niche":[0,5,0.0],"nielle":[0,106,0.4051],"nikaiya":[0,10,0.0],"nikkiah":[0,5,0.0],"nitzy":[0,5,0.0],"nokia":[0,5,0.0],"norelia":[0,5,0.0],"norika":[0,5,0.0],"novali":[0,197,0.4589],"nyagoa":[0,5,0.0],"nyemah":[0,206,0.4628],"nyirah":[0,38,0.0],"nykiria":[0,5,0.0],"oluwatomisin":[64,131,0.3077],"oshanique":[0,5,0.0],"osirys":[0,10,0.0],"oumy":[0,31,0.0],"paishence":[0,20,0.0],"passionae":[0,5,0.0],"pema":[12,225,0.4509],"pieper":[0,193,0.4571],"poleth":[0,28,0.0],"quantiana":[0,5,0.0],"quetzaly":[0,558,0.5493],"quinna":[0,20,0.0],"raeden":[264,96,0.3749],"raegann":[0,69,0.0],"raene":[0,5,0.0],"raeyanna":[0,5,0.0],"rahjae":[0,5,0.0],"raihaanah":[0,5,0.0],"raqiya":[0,15,0.0],"reagann":[0,103,0.4026],"reeghan":[0,29,0.0],"reet":[0,305,0.4969],"reionna":[0,10,0.0],"rhavyn":[0,5,0.0],"rishita":[0,162,0.4419],"ruwayda":[0,172,0.4471],"ryleah":[0,105,0.4042],"saanika":[0,17,0.0],"sakiyah":[0,217,0.4673],"sakurako":[0,20,0.0],"samani":[0,198,0.4593],"sameya":[0,40,0.0],"samoria":[0,69,0.0],"samsam":[0,55,0.0],"sanaii":[0,389,0.518],"sandybell":[0,5,0.0],"sanyia":[0,266,0.485],"sariana":[0,60,0.0],"sasami":[0,5,0.0],"savannahrose":[0,61,0.0],"sayli":[0,15,0.0],"sayona":[0,10,0.0],"scottlynn":[0,312,0.4988],"seairah":[0,5,0.0],"sedney":[0,5,0.0],"seiry":[0,17,0.0],"sekura":[0,5,0.0],"senida":[0,5,0.0],"seraya":[0,146,0.4329],"sereina":[0,5,0.0],"seviah":[0,5,0.0],"shadiamon":[0,26,0.0],"shaeann":[0,5,0.0],"shagun":[0,64,0.0],"shaimaa":[0,11,0.0],"shakthi":[0,70,0.0],"shamauri":[11,19,0.0],"shanaih":[0,5,0.0],"shanyiah":[0,91,0.0],"shaylla":[0,5,0.0],"shiyana":[0,10,0.0],"shloka":[0,423,0.5253],"shravya":[0,330,0.5037],"shrishti":[0,11,0.0],"shwetha":[0,29,0.0],"shyleah":[0,5,0.0],"shylie":[0,69,0.0],"shyne":[454,168,0.4078],"sismai":[0,17,0.0],"skyle":[0,5,0.0],"smrithi":[0,113,0.4106],"soana":[0,5,0.0],"soffia":[0,122,0.4173],"soliana":[0,656,0.5634],"sonte":[0,10,0.0],"suley":[0,32,0.0],"sumerlyn":[0,10,0.0],"sundos":[0,5,0.0],"syian":[0,5,0.0],"sykeria":[0,5,0.0],"tabbytha":[0,5,0.0],"tairyn":[0,17,0.0],"tajinae":[0,5,0.0],"talaija":[0,5,0.0],"taleeya":[0,92,0.0],"taliha":[0,5,0.0],"talla":[0,17,0.0],"talula":[0,398,0.52],"tanaria":[0,17,0.0],"tanayja":[0,10,0.0],"tasani":[0,11,0.0],"tatiauna":[0,18,0.0],"tauryn":[0,13,0.0],"taydem":[29,106,0.3345],"tayonia":[0,5,0.0],"teadora":[0,10,0.0],"teajah":[0,11,0.0],"teani":[0,24,0.0],"tekiya":[0,5,0.0],"terionna":[0,20,0.0],"teyonce":[0,25,0.0],"thailyn":[10,89,0.0],"thaliya":[0,10,0.0],"thays":[0,5,0.0],"thiara":[0,91,0.0],"tigerlilly":[0,17,0.0],"timeah":[0,5,0.0],"timiah":[0,59,0.0],"tioni":[0,10,0.0],"tnaya":[0,10,0.0],"toniyah":[0,92,0.0],"tralynn":[0,16,0.0],"trenidy":[0,46,0.0],"trinite":[0,11,0.0],"tshai":[0,5,0.0],"tulia":[0,56,0.0],"tyaria":[0,5,0.0],"tybriana":[0,5,0.0],"tyira":[0,5,0.0],"tymya":[0,17,0.0],"tyriah":[0,51,0.0],"tyuana":[0,5,0.0],"tyyanna":[0,37,0.0],"ujala":[0,5,0.0],"umayma":[0,17,0.0],"umme":[0,90,0.0],"uniah":[0,5,0.0],"vaibhavi":[0,31,0.0],"vaneeza":[0,15,0.0],"vanicia":[0,10,0.0],"vaniya":[0,119,0.4151],"vesa":[0,35,0.0],"victoriah":[0,126,0.4201],"vrisa":[0,5,0.0],"xariah":[0,247,0.4785],"yairely":[0,5,0.0],"yairy":[0,5,0.0],"yalena":[0,211,0.4649],"yaliyah":[0,29,0.0],"yannie":[0,10,0.0],"yaremy":[0,5,0.0],"yariliz":[0,15,0.0],"yasmeena":[0,27,0.0],"yesmi":[0,5,0.0],"yiana":[0,5,0.0],"yissell":[0,15,0.0],"yolani":[0,149,0.4346],"yolotzin":[0,55,0.0],"yosalin":[0,10,0.0],"younique":[0,81,0.0],"yulliana":[0,5,0.0],"yumara":[0,5,0.0],"yurisa":[0,10,0.0],"yuuka":[0,10,0.0],"zacora":[0,10,0.0],"zacoria":[0,33,0.0],"zahidah":[0,5,0.0],"zai":[227,65,0.3833],"zaliyah":[0,1049,0.6042],"zaniyyah":[0,18,0.0],"zaraya":[0,324,0.5021],"zarianna":[0,328,0.5032],"zarielle":[0,245,0.4778],"zayonna":[0,118,0.4144],"zephania":[0,10,0.0],"zhanya":[0,11,0.0],"zianya":[0,17,0.0],"zionne":[0,5,0.0],"zoemarie":[0,16,0.0],"zyairah":[0,192,0.4567],"zyianna":[0,32,0.0],"zylah":[0,1308,0.6233],"zynasia":[0,74,0.0],"zyona":[0,121,0.4166],"jahiem":[1529,0,0.6369],"caillou":[247,0,0.4785],"maxamus":[198,0,0.4593],"jahmeir":[367,0,0.5129],"sirr":[264,0,0.4843],"aaryan":[2074,6,0.6617],"carlosmanuel":[50,0,0.0],"jarule":[25,0,0.0],"deakon":[478,0,0.5359],"ladainian":[434,0,0.5275],"kamarr":[53,0,0.0],"aniketh":[233,0,0.4735],"desaun":[16,0,0.0],"hasim":[16,0,0.0],"jakeim":[84,0,0.0],"nasiem":[22,0,0.0],"shiven":[479,0,0.5361],"abdulkadir":[151,0,0.4358],"corrion":[106,0,0.4051],"diesel":[2032,0,0.6616],"jagur":[40,0,0.0],"jakevion":[90,0,0.0],"jasten":[108,0,0.4067],"jveon":[163,0,0.4424],"kaiyu":[93,0,0.0],"lennyn":[115,671,0.4944],"nitish":[83,0,0.0],"taheed":[10,0,0.0],"tasman":[60,0,0.0],"abas":[109,0,0.4075],"anthonny":[105,0,0.4042],"arul":[94,0,0.0],"atzel":[209,0,0.464],"braydyn":[514,0,0.5422],"draden":[231,0,0.4727],"ege":[211,0,0.4649],"ethian":[35,0,0.0],"gabryl":[30,0,0.0],"joaovictor":[127,0,0.4208],"jyheim":[23,0,0.0],"michai":[323,0,0.5018],"sayveon":[40,0,0.0],"suhayb":[372,0,0.5141],"tanmay":[165,0,0.4435],"yussef":[223,0,0.4697],"ziquan":[70,0,0.0],"zymere":[619,0,0.5583],"abdimalik":[278,0,0.4888],"akif":[147,0,0.4335],"avont":[19,0,0.0],"braedy":[45,0,0.0],"caullin":[18,0,0.0],"chanoch":[134,0,0.4254],"decklan":[578,0,0.5524],"dhiraj":[20,0,0.0],"eithen":[180,0,0.4511],"enrike":[38,0,0.0],"fredarius":[8,0,0.0],"jahmier":[346,0,0.5078],"javarie":[125,0,0.4194],"jayan":[352,0,0.5093],"jaze":[115,0,0.4121],"jonavin":[106,0,0.4051],"josiyah":[735,0,0.5733],"justinkyle":[13,0,0.0],"maksym":[509,0,0.5413],"malakye":[508,0,0.5412],"malikye":[388,0,0.5178],"naheim":[137,0,0.4273],"nahuel":[241,0,0.4764],"nekhi":[161,0,0.4414],"olman":[144,0,0.4317],"rune":[623,118,0.4826],"srujan":[32,0,0.0],"syre":[602,0,0.5559],"trint":[16,0,0.0],"tryton":[207,0,0.4632],"tyvin":[52,0,0.0],"vanson":[30,0,0.0],"vyshonn":[8,0,0.0],"yaaseen":[13,0,0.0],"aaden":[5064,5,0.7403],"abiezer":[12,0,0.0],"abinadi":[22,0,0.0],"adeoluwa":[79,0,0.0],"aedyn":[588,73,0.5017],"anikait":[19,0,0.0],"ashir":[164,0,0.443],"avantae":[150,0,0.4352],"bartek":[59,0,0.0],"colsen":[1187,0,0.6149],"daiden":[177,0,0.4496],"domani":[590,5,0.5502],"drevaughn":[7,0,0.0],"elisio":[90,0,0.0],"fardeen":[129,0,0.4221],"fardin":[52,0,0.0],"imam":[24,0,0.0],"iosua":[23,0,0.0],"jaeron":[12,0,0.0],"jaesean":[141,0,0.4298],"jag":[155,0,0.4381],"jahel":[273,10,0.473],"jahmez":[61,0,0.0],"jahziah":[274,17,0.464],"jamear":[126,0,0.4201],"jayten":[111,0,0.4091],"jazziel":[150,0,0.4352],"jesusangel":[24,0,0.0],"jibriel":[58,0,0.0],"johnvictor":[19,0,0.0],"kaesen":[295,0,0.494],"kailob":[14,0,0.0],"kannen":[266,0,0.485],"kenshin":[353,0,0.5096],"koleby":[14,0,0.0],"kyros":[157,0,0.4392],"kyu":[54,0,0.0],"luzer":[31,0,0.0],"mahkai":[450,0,0.5306],"malicah":[27,0,0.0],"markavious":[74,0,0.0],"maurion":[221,0,0.4689],"maxum":[89,0,0.0],"mosheh":[71,0,0.0],"paycen":[57,42,0.0],"praneet":[12,0,0.0],"reyan":[777,17,0.5675],"sair":[165,0,0.4435],"saiveon":[19,0,0.0],"sartaj":[242,0,0.4768],"shakai":[136,5,0.4146],"sharbel":[150,0,0.4352],"shinnosuke":[7,0,0.0],"sidiki":[13,0,0.0],"sumedh":[124,0,0.4187],"tamauri":[29,10,0.0],"trejean":[18,0,0.0],"treveyon":[31,0,0.0],"trintin":[60,0,0.0],"tyun":[7,0,0.0],"zachaeus":[7,0,0.0],"zaylin":[730,295,0.4288],"zien":[36,0,0.0],"aarsh":[103,0,0.4026],"abou":[104,0,0.4034],"ahsen":[6,12,0.0],"ajeet":[120,0,0.4158],"akir":[74,0,0.0],"akshit":[20,0,0.0],"aladin":[6,0,0.0],"aldayshein":[6,0,0.0],"alixzander":[55,0,0.0],"almedin":[25,0,0.0],"alshawn":[11,0,0.0],"arec":[6,0,0.0],"avien":[277,0,0.4885],"ayumu":[16,0,0.0],"azavier":[211,0,0.4649],"aztlan":[128,0,0.4214],"baba":[45,0,0.0],"batuhan":[41,0,0.0],"benen":[85,0,0.0],"berkay":[49,0,0.0],"blayn":[64,0,0.0],"bly":[50,10,0.0],"brandarius":[11,0,0.0],"brashaun":[23,0,0.0],"breydin":[19,0,0.0],"bronsyn":[92,0,0.0],"brysin":[286,0,0.4913],"caimin":[6,0,0.0],"cayd":[65,0,0.0],"ceazar":[29,0,0.0],"chanden":[58,0,0.0],"daedrian":[6,0,0.0],"daevaughn":[6,0,0.0],"daiyan":[41,0,0.0],"dallion":[6,0,0.0],"damarus":[11,0,0.0],"davor":[6,0,0.0],"dayde":[6,0,0.0],"dekobe":[12,0,0.0],"diogo":[441,0,0.5289],"donevin":[81,0,0.0],"doreon":[23,0,0.0],"draken":[169,0,0.4456],"draydon":[128,0,0.4214],"drin":[126,0,0.4201],"eldar":[202,0,0.4611],"ericsson":[57,0,0.0],"eshaun":[28,0,0.0],"evante":[12,0,0.0],"faybian":[16,0,0.0],"gio":[1373,34,0.6144],"govani":[81,0,0.0],"harin":[17,13,0.0],"hatcher":[595,0,0.5549],"hirvin":[6,0,0.0],"hughston":[87,0,0.0],"isaihas":[6,0,0.0],"jacopo":[11,0,0.0],"jaekob":[54,0,0.0],"jahden":[113,0,0.4106],"jahem":[33,0,0.0],"jaiel":[138,64,0.315],"jairee":[6,0,0.0],"jakaree":[111,0,0.4091],"jam":[23,0,0.0],"jamarae":[6,0,0.0],"jamarre":[31,0,0.0],"jamarrion":[408,0,0.5221],"januel":[423,0,0.5253],"jarquavius":[11,0,0.0],"javanni":[131,5,0.411],"javondre":[6,0,0.0],"jaydrian":[202,0,0.4611],"jayveion":[86,0,0.0],"jazen":[86,0,0.0],"jazion":[283,0,0.4904],"jequarius":[6,0,0.0],"jeton":[35,0,0.0],"jhayden":[257,6,0.4729],"jhordy":[57,0,0.0],"jhostin":[192,0,0.4567],"joben":[19,0,0.0],"johnaaron":[6,0,0.0],"jonquavious":[12,0,0.0],"jordani":[168,0,0.4451],"jorren":[6,0,0.0],"jyheem":[12,0,0.0],"jyren":[88,0,0.0],"jyshawn":[22,0,0.0],"kaillou":[25,0,0.0],"kalyan":[183,0,0.4525],"kawuan":[6,0,0.0],"kayvion":[495,0,0.5389],"keegon":[17,0,0.0],"keymari":[186,40,0.3875],"keyson":[57,0,0.0],"khobe":[29,0,0.0],"kianu":[27,0,0.0],"kijani":[139,0,0.4286],"kobby":[11,0,0.0],"koushik":[16,0,0.0],"kshaun":[34,0,0.0],"kyjaun":[6,0,0.0],"kyrion":[96,0,0.0],"laurentino":[6,0,0.0],"linkin":[2082,0,0.6637],"malacki":[69,0,0.0],"maurquise":[6,0,0.0],"maximilan":[6,0,0.0],"maxxwel":[6,0,0.0],"menelek":[6,0,0.0],"mihai":[65,0,0.0],"mikhale":[16,0,0.0],"mohnish":[40,0,0.0],"momar":[22,0,0.0],"mostyn":[6,0,0.0],"naequan":[6,0,0.0],"naethan":[88,0,0.0],"nazaiah":[67,0,0.0],"niranjan":[110,0,0.4083],"nisaiah":[77,0,0.0],"nyjuan":[17,0,0.0],"ohm":[191,0,0.4562],"praneel":[258,0,0.4823],"pranit":[97,0,0.0],"pratham":[437,0,0.5281],"qualiek":[6,0,0.0],"quetzal":[69,89,0.2477],"rajit":[14,0,0.0],"razeen":[26,0,0.0],"rhylan":[669,344,0.397],"righteous":[244,49,0.4109],"rishikesh":[107,0,0.4059],"rocket":[361,45,0.4639],"rook":[636,25,0.5427],"sameed":[12,0,0.0],"sandler":[64,0,0.0],"sebatian":[53,0,0.0],"sebian":[6,0,0.0],"sejin":[6,0,0.0],"sethaniel":[11,0,0.0],"shloimy":[540,0,0.5465],"srihari":[110,0,0.4083],"sufiyan":[154,0,0.4375],"tahlee":[6,0,0.0],"tajion":[6,0,0.0],"tavarion":[107,0,0.4059],"tavyon":[31,0,0.0],"tayjon":[66,0,0.0],"tayt":[69,0,0.0],"trashun":[11,0,0.0],"treson":[117,0,0.4136],"tyjaun":[14,0,0.0],"ukiah":[118,6,0.3984],"vicenzo":[49,0,0.0],"wences":[35,0,0.0],"xzaviar":[90,0,0.0],"yadir":[184,0,0.453],"yandel":[3693,9,0.712],"yegor":[48,0,0.0],"zaheim":[16,0,0.0],"zakarya":[66,0,0.0],"zalyn":[96,11,0.3642],"zean":[12,0,0.0],"zevon":[65,0,0.0],"zuhaib":[80,0,0.0],"aashir":[178,0,0.4501],"abdelkareem":[15,0,0.0],"abdellah":[24,0,0.0],"abdulhamid":[111,0,0.4091],"abednego":[103,0,0.4026],"abey":[10,17,0.0],"abhik":[31,0,0.0],"abhiraj":[104,0,0.4034],"adith":[174,0,0.4481],"aidann":[10,0,0.0],"ajahni":[130,0,0.4228],"alarick":[91,0,0.0],"albertjames":[5,0,0.0],"alexian":[5,0,0.0],"alvion":[16,0,0.0],"alyaan":[138,0,0.428],"amaj":[41,0,0.0],"amarr":[71,0,0.0],"amitoj":[39,0,0.0],"amyr":[317,0,0.5002],"angeluis":[5,0,0.0],"annan":[33,0,0.0],"anquavious":[5,0,0.0],"antre":[5,0,0.0],"antwaan":[30,0,0.0],"armaad":[5,0,0.0],"armahn":[34,0,0.0],"arnes":[27,0,0.0],"arnesto":[5,0,0.0],"arquimides":[18,0,0.0],"arrik":[5,0,0.0],"artadius":[5,0,0.0],"arvion":[5,0,0.0],"athanasius":[240,0,0.476],"atlai":[42,0,0.0],"audrick":[89,0,0.0],"avik":[451,0,0.5308],"avishek":[5,0,0.0],"axzel":[100,0,0.4],"ayham":[435,0,0.5277],"ayobami":[39,0,0.0],"azan":[504,0,0.5405],"azavian":[10,0,0.0],"azir":[499,0,0.5396],"azreal":[223,5,0.4612],"bachir":[22,0,0.0],"balthazar":[210,0,0.4644],"bautista":[65,0,0.0],"benjahmin":[15,0,0.0],"bladyn":[89,0,0.0],"boluwatife":[114,78,0.2711],"bravin":[23,0,0.0],"brayhan":[10,0,0.0],"breckon":[204,0,0.4619],"brisen":[56,0,0.0],"brixton":[4196,278,0.6848],"brytan":[10,0,0.0],"burkley":[73,113,0.2758],"caezar":[10,0,0.0],"cail":[59,0,0.0],"caiman":[79,0,0.0],"cainon":[87,0,0.0],"cairon":[76,0,0.0],"calik":[10,0,0.0],"calvan":[5,0,0.0],"camdan":[135,0,0.4261],"canen":[10,0,0.0],"cashaun":[20,0,0.0],"cathan":[109,0,0.4075],"cayo":[46,0,0.0],"cazden":[20,0,0.0],"chanceton":[23,0,0.0],"chantler":[5,0,0.0],"chimezie":[5,0,0.0],"christianjacob":[22,0,0.0],"christianjoshua":[5,0,0.0],"ciree":[5,0,0.0],"clae":[5,0,0.0],"cleonte":[5,0,0.0],"coden":[105,0,0.4042],"coledon":[5,0,0.0],"colyer":[19,0,0.0],"corieon":[10,0,0.0],"criztian":[5,0,0.0],"dabin":[5,0,0.0],"daejaun":[5,0,0.0],"daemian":[179,0,0.4506],"daezon":[10,0,0.0],"daijohn":[5,0,0.0],"daijuan":[20,0,0.0],"dailin":[26,138,0.3727],"dalevon":[5,0,0.0],"dalian":[21,0,0.0],"dareian":[5,0,0.0],"darese":[5,0,0.0],"darionne":[5,0,0.0],"dartrell":[10,0,0.0],"datari":[5,0,0.0],"daunta":[5,0,0.0],"davyeon":[5,0,0.0],"daythan":[11,0,0.0],"dazhaun":[10,0,0.0],"dcorian":[10,0,0.0],"deaken":[169,0,0.4456],"decklyn":[335,158,0.366],"dejun":[5,0,0.0],"dekin":[11,0,0.0],"deklyn":[757,188,0.4767],"demerion":[10,0,0.0],"deshuan":[10,0,0.0],"deyvion":[25,0,0.0],"dezmand":[5,0,0.0],"dhananjay":[5,0,0.0],"dkari":[129,0,0.4221],"dmitris":[5,0,0.0],"domminick":[17,0,0.0],"dreylan":[20,0,0.0],"drezden":[106,0,0.4051],"drilon":[22,0,0.0],"durango":[5,0,0.0],"edrin":[29,0,0.0],"eilijah":[5,0,0.0],"eldrich":[5,0,0.0],"elius":[110,0,0.4083],"elmin":[108,0,0.4067],"emirhan":[42,0,0.0],"gianpaul":[19,0,0.0],"gorkem":[5,0,0.0],"guztavo":[11,0,0.0],"hezakiah":[119,0,0.4151],"hiatt":[34,0,0.0],"hinckley":[58,15,0.0],"hussen":[15,0,0.0],"ikponmwosa":[5,0,0.0],"inti":[63,13,0.0],"irfaan":[19,0,0.0],"isaian":[10,0,0.0],"issael":[65,0,0.0],"issic":[20,0,0.0],"izayha":[17,0,0.0],"izayiah":[278,0,0.4888],"izmael":[307,0,0.4974],"izziah":[33,0,0.0],"jabes":[202,0,0.4611],"jabrel":[5,0,0.0],"jacqual":[5,0,0.0],"jacqueze":[5,0,0.0],"jaemon":[22,0,0.0],"jagen":[21,0,0.0],"jahim":[12,0,0.0],"jahkel":[26,0,0.0],"jahlik":[15,0,0.0],"jahmiere":[53,0,0.0],"jahvion":[40,0,0.0],"jaidev":[147,0,0.4335],"jais":[76,0,0.0],"jakobee":[77,0,0.0],"jamerious":[31,0,0.0],"jamesdaniel":[5,0,0.0],"jaquarion":[30,0,0.0],"jarritt":[5,0,0.0],"jaterrian":[10,0,0.0],"javanta":[5,0,0.0],"javawn":[5,0,0.0],"javein":[16,0,0.0],"javez":[15,0,0.0],"javionne":[32,0,0.0],"jayc":[35,0,0.0],"jaython":[29,0,0.0],"jazer":[52,0,0.0],"jermarion":[245,0,0.4778],"jerremiah":[5,0,0.0],"jesean":[52,0,0.0],"jeylan":[27,6,0.0],"jeylen":[15,18,0.0],"jhaden":[78,0,0.0],"jhase":[458,0,0.5322],"jibrael":[45,0,0.0],"jigme":[22,0,0.0],"johao":[11,0,0.0],"johnaven":[26,0,0.0],"jorgealberto":[5,0,0.0],"josedavid":[53,0,0.0],"josephlee":[10,0,0.0],"jovone":[5,0,0.0],"juanfernando":[5,0,0.0],"junah":[103,22,0.3456],"justys":[5,0,0.0],"kadarion":[15,0,0.0],"kaevion":[94,0,0.0],"kaheim":[20,0,0.0],"kaii":[104,6,0.386],"kainoah":[137,0,0.4273],"kamaar":[5,0,0.0],"kamdin":[325,5,0.4961],"kamrun":[16,0,0.0],"kaniala":[5,0,0.0],"karamvir":[5,0,0.0],"karolis":[10,0,0.0],"kashis":[127,0,0.4208],"kassius":[1124,10,0.6055],"kauai":[32,11,0.0],"keb":[5,0,0.0],"kelston":[40,0,0.0],"kelvy":[5,0,0.0],"kency":[5,33,0.0],"kenlin":[59,0,0.0],"kentarious":[5,0,0.0],"kevaris":[5,0,0.0],"keyontai":[5,0,0.0],"keyveon":[5,0,0.0],"keyvion":[29,0,0.0],"khadar":[87,0,0.0],"khalon":[310,0,0.4983],"khyrell":[10,0,0.0],"kimar":[43,0,0.0],"klayten":[112,0,0.4098],"korion":[90,0,0.0],"kwamae":[5,0,0.0],"kyeron":[10,0,0.0],"laterian":[5,0,0.0],"layson":[194,0,0.4576],"lemorris":[5,0,0.0],"lucias":[17,0,0.0],"malav":[11,0,0.0],"mariyon":[20,0,0.0],"markess":[5,0,0.0],"marquae":[16,0,0.0],"martijn":[5,0,0.0],"mato":[74,0,0.0],"maxence":[66,0,0.0],"maximas":[51,0,0.0],"maximilion":[5,0,0.0],"meer":[244,0,0.4775],"mehmed":[68,0,0.0],"melakai":[57,0,0.0],"melkin":[33,0,0.0],"meshack":[27,0,0.0],"mohab":[98,0,0.0],"monterrian":[14,0,0.0],"mordche":[273,0,0.4872],"mosa":[41,0,0.0],"mueed":[5,0,0.0],"naithen":[70,0,0.0],"nalu":[161,33,0.3797],"nasar":[5,0,0.0],"nasiere":[5,0,0.0],"nathaniell":[5,0,0.0],"natthan":[29,0,0.0],"nau":[10,0,0.0],"neev":[858,0,0.5867],"nethanel":[48,0,0.0],"nickohlas":[5,0,0.0],"nieem":[25,0,0.0],"nikolaj":[154,0,0.4375],"nollan":[99,0,0.0],"nyaire":[357,104,0.4126],"nyrell":[60,0,0.0],"nyzaiah":[222,0,0.4693],"oluyemi":[5,0,0.0],"omarion":[3954,5,0.7186],"omed":[5,0,0.0],"osyrus":[10,0,0.0],"philippos":[36,0,0.0],"prajit":[21,0,0.0],"pramod":[16,0,0.0],"pratyush":[181,0,0.4515],"quaylen":[17,0,0.0],"quaylin":[13,0,0.0],"quazar":[5,0,0.0],"quillen":[64,0,0.0],"rashik":[5,0,0.0],"rawad":[91,0,0.0],"raymere":[58,0,0.0],"reniel":[5,0,0.0],"rexton":[585,0,0.5534],"rhamir":[20,0,0.0],"ribaldo":[13,0,0.0],"roble":[10,0,0.0],"ruthvik":[132,0,0.4241],"rutvik":[46,0,0.0],"ryer":[187,0,0.4544],"saaketh":[55,0,0.0],"sahas":[325,0,0.5024],"saith":[38,0,0.0],"sakeef":[5,0,0.0],"salif":[81,0,0.0],"sampath":[5,0,0.0],"samyak":[119,0,0.4151],"seanmatthew":[15,0,0.0],"sekani":[1159,240,0.5212],"senan":[130,0,0.4228],"seveon":[5,0,0.0],"sevion":[45,0,0.0],"shlok":[1022,0,0.6019],"sincear":[46,0,0.0],"sricharan":[71,0,0.0],"stephfan":[5,0,0.0],"suvan":[155,0,0.4381],"syair":[399,0,0.5202],"symir":[467,0,0.5339],"taejuan":[5,0,0.0],"taelin":[70,33,0.2736],"taevin":[107,0,0.4059],"tahi":[5,0,0.0],"tahjir":[67,0,0.0],"tahleek":[5,0,0.0],"tahlib":[5,0,0.0],"taigen":[26,36,0.0],"teagin":[15,26,0.0],"teagun":[54,0,0.0],"tejean":[16,0,0.0],"temon":[5,0,0.0],"tenchi":[10,0,0.0],"teryon":[5,0,0.0],"timar":[5,0,0.0],"tkai":[87,72,0.2409],"toluwanimi":[67,72,0.222],"traelon":[15,0,0.0],"trevun":[5,0,0.0],"tripper":[27,0,0.0],"trowa":[22,0,0.0],"tukker":[74,0,0.0],"tykeith":[5,0,0.0],"tylerlee":[5,0,0.0],"tyliq":[5,0,0.0],"tyquavius":[16,0,0.0],"tyton":[178,0,0.4501],"tzuriel":[33,0,0.0],"udit":[5,0,0.0],"ulise":[5,0,0.0],"utsav":[21,0,0.0],"vibhu":[28,0,0.0],"vontray":[5,0,0.0],"wilkinson":[10,0,0.0],"wuilber":[5,0,0.0],"xadrian":[419,0,0.5244],"xen":[128,17,0.3816],"xiang":[33,0,0.0],"xjavier":[5,0,0.0],"xzaveon":[45,0,0.0],"yahel":[757,21,0.5626],"yahoshua":[5,0,0.0],"yasmani":[88,0,0.0],"yezen":[57,0,0.0],"yosvani":[22,0,0.0],"yuepeng":[5,0,0.0],"yuriel":[330,0,0.5037],"zadan":[32,0,0.0],"zaheem":[72,0,0.0],"zamere":[162,0,0.4419],"zaniel":[225,0,0.4704],"zaren":[30,0,0.0],"zarren":[27,0,0.0],"zayin":[223,0,0.4697],"zayshawn":[54,0,0.0],"ziyan":[247,171,0.3098],"zoen":[30,0,0.0],"zorion":[235,0,0.4742],"zyere":[301,0,0.4957],"zykel":[40,0,0.0],"zyrek":[5,0,0.0],"kaydence":[839,17396,0.813],"jashanti":[0,153,0.4369],"isyss":[0,594,0.5548],"dashanti":[0,187,0.4544],"amerie":[0,2588,0.6826],"thaily":[0,491,0.5382],"jenin":[0,234,0.4738],"jakhia":[0,475,0.5353],"nakhia":[0,252,0.4803],"deshanti":[0,99,0.0],"sirenity":[0,345,0.5076],"ashaureah":[0,51,0.0],"takhia":[0,107,0.4059],"eshanti":[0,27,0.0],"neleh":[0,128,0.4214],"karicia":[0,45,0.0],"alyzea":[0,54,0.0],"naidelin":[0,221,0.4689],"neleah":[0,39,0.0],"naleah":[0,442,0.5291],"rashanti":[0,26,0.0],"tinley":[0,3598,0.7112],"cadance":[5,938,0.5917],"caricia":[0,25,0.0],"keshanti":[0,43,0.0],"shakhia":[0,98,0.0],"amariona":[0,276,0.4882],"dshanti":[0,31,0.0],"kayani":[6,277,0.48],"maritere":[0,56,0.0],"peja":[23,61,0.0],"kamayah":[0,252,0.4803],"nafia":[0,24,0.0],"nayzeth":[0,137,0.4273],"jahzara":[0,1971,0.6589],"kaidence":[534,3301,0.6169],"nahriah":[0,46,0.0],"nasiyah":[6,383,0.51],"ninel":[0,290,0.4925],"candela":[0,77,0.0],"jhaniya":[0,97,0.0],"adilynn":[0,3175,0.7003],"alaiah":[0,1034,0.6029],"ashauntee":[0,11,0.0],"carisia":[0,11,0.0],"isabellamarie":[0,166,0.444],"jeslie":[0,90,0.0],"mallerly":[0,11,0.0],"mayely":[0,49,0.0],"naliah":[0,332,0.5042],"novalie":[0,738,0.5736],"sanaiya":[0,356,0.5103],"syrai":[0,351,0.5091],"yanilet":[0,30,0.0],"zakhia":[0,203,0.4615],"aaliyana":[0,136,0.4267],"aamya":[0,127,0.4208],"anadalay":[0,103,0.4026],"anistyn":[0,1053,0.6045],"ashantai":[0,10,0.0],"carliyah":[0,165,0.4435],"caydence":[303,3564,0.6613],"dhruvi":[0,291,0.4928],"escarlet":[0,98,0.0],"iara":[0,211,0.4649],"izellah":[0,50,0.0],"kadance":[17,843,0.5753],"kadynce":[6,981,0.5952],"kaydance":[0,1612,0.6415],"kaziyah":[0,242,0.4768],"laasya":[0,400,0.5204],"lakhia":[0,72,0.0],"nahdia":[0,88,0.0],"nazyia":[0,204,0.4619],"nishtha":[0,190,0.4558],"satine":[0,72,0.0],"vashanti":[0,33,0.0],"zamirah":[0,550,0.5481],"aalycia":[0,25,0.0],"acsa":[0,207,0.4632],"alawna":[0,74,0.0],"allorah":[0,78,0.0],"amauria":[0,192,0.4567],"aneeza":[0,14,0.0],"anira":[0,188,0.4548],"aryannah":[0,303,0.4963],"ashantii":[0,21,0.0],"deniah":[0,70,0.0],"harshitha":[0,182,0.452],"jda":[0,54,0.0],"jolia":[0,48,0.0],"kaiona":[0,25,0.0],"kalayla":[0,134,0.4254],"karisia":[0,9,0.0],"kelaya":[0,135,0.4261],"maicey":[0,90,0.0],"makinzey":[0,65,0.0],"malyia":[0,72,0.0],"mayle":[0,46,0.0],"nariya":[0,451,0.5308],"niala":[0,170,0.4461],"onnika":[0,72,0.0],"pacie":[0,28,0.0],"reagin":[0,41,0.0],"salsabeel":[0,82,0.0],"sanyah":[0,372,0.5141],"savera":[0,130,0.4228],"simaya":[0,198,0.4593],"skarlet":[0,453,0.5312],"skyli":[0,58,0.0],"taraji":[50,2749,0.6771],"tiaura":[0,9,0.0],"ximenna":[0,301,0.4957],"yalani":[0,165,0.4435],"advika":[0,766,0.5768],"aidaly":[0,107,0.4059],"aiva":[0,755,0.5756],"aizza":[0,72,0.0],"alexcya":[0,8,0.0],"alysiah":[0,77,0.0],"amyri":[7,238,0.4642],"anacelia":[0,50,0.0],"anaclara":[0,182,0.452],"angeliah":[0,134,0.4254],"angeliyah":[0,155,0.4381],"angellynn":[0,65,0.0],"anissah":[0,29,0.0],"anjolaoluwa":[21,265,0.4552],"annaston":[0,159,0.4403],"areyonna":[0,33,0.0],"ashiyah":[0,202,0.4611],"aunesti":[0,207,0.4632],"avriana":[0,240,0.476],"bleona":[0,18,0.0],"brayley":[0,275,0.4879],"cashlyn":[0,185,0.4534],"danali":[0,81,0.0],"delayni":[0,133,0.4248],"denym":[294,375,0.3168],"elara":[0,1514,0.636],"gabrielly":[0,153,0.4369],"gleice":[0,8,0.0],"jaciana":[0,42,0.0],"jakhya":[0,54,0.0],"jaydalyn":[0,124,0.4187],"kayeleigh":[0,60,0.0],"keimya":[0,128,0.4214],"kiylee":[0,174,0.4481],"knya":[0,49,0.0],"kynzi":[0,211,0.4649],"lanayah":[0,281,0.4897],"lehana":[0,18,0.0],"maddilynn":[0,818,0.5826],"maecie":[0,77,0.0],"makaiah":[35,212,0.4107],"makenlee":[0,353,0.5096],"matayah":[0,74,0.0],"maylei":[0,51,0.0],"mirracle":[0,8,0.0],"mykila":[0,8,0.0],"myona":[0,44,0.0],"naidely":[0,53,0.0],"naliya":[0,174,0.4481],"nashari":[0,13,0.0],"nyleah":[0,299,0.4951],"nyriah":[0,179,0.4506],"raileigh":[0,245,0.4778],"seniya":[0,148,0.4341],"serendipity":[0,43,0.0],"skarlett":[0,1033,0.6028],"syrenity":[0,286,0.4913],"tallula":[0,189,0.4553],"tkaiya":[0,8,0.0],"xitllali":[0,67,0.0],"yaeli":[0,237,0.4749],"ysabell":[0,14,0.0],"aana":[0,23,0.0],"abaigael":[0,19,0.0],"ahmiya":[0,216,0.4669],"aislynne":[0,36,0.0],"ajalon":[7,12,0.0],"akhia":[0,56,0.0],"akshitha":[0,98,0.0],"akyrah":[0,51,0.0],"alexeya":[0,7,0.0],"aliandra":[0,40,0.0],"alizeah":[0,46,0.0],"amathyst":[0,7,0.0],"ameyah":[0,233,0.4735],"analena":[0,186,0.4539],"analina":[0,232,0.4731],"anayi":[0,104,0.4034],"angelyce":[0,7,0.0],"annahy":[0,24,0.0],"arelli":[0,38,0.0],"asharee":[0,24,0.0],"aubrionna":[0,152,0.4364],"avelyn":[0,1051,0.6043],"ayrionna":[0,25,0.0],"ayslin":[0,133,0.4248],"bianny":[0,7,0.0],"brejae":[0,7,0.0],"brindley":[0,102,0.4017],"brylin":[322,222,0.3238],"cashanti":[0,7,0.0],"ceniyah":[0,148,0.4341],"cyanni":[0,43,0.0],"dakiyah":[0,117,0.4136],"dejahnay":[0,7,0.0],"deyssi":[0,7,0.0],"djellza":[0,7,0.0],"donaji":[0,18,0.0],"dreyanna":[0,7,0.0],"dylynn":[0,145,0.4323],"elaria":[0,222,0.4693],"elorah":[0,207,0.4632],"emia":[0,63,0.0],"emmelie":[0,24,0.0],"emmersen":[0,173,0.4476],"emmersyn":[0,1177,0.6142],"emmiline":[0,58,0.0],"erissa":[0,19,0.0],"gabryele":[0,7,0.0],"graciemae":[0,189,0.4553],"haisley":[0,4787,0.736],"halimo":[0,57,0.0],"havilland":[0,7,0.0],"indianna":[0,75,0.0],"italie":[0,44,0.0],"izabellah":[0,350,0.5088],"jaely":[0,176,0.4491],"jairy":[0,61,0.0],"jalayia":[0,178,0.4501],"jamaiyah":[0,82,0.0],"janaiyah":[0,179,0.4506],"janetzy":[0,74,0.0],"jasiyah":[368,487,0.334],"jatziri":[0,477,0.5357],"jenneh":[0,17,0.0],"jezell":[0,34,0.0],"jiwon":[0,20,0.0],"jood":[115,302,0.3795],"juniya":[0,41,0.0],"kaidance":[6,465,0.5278],"kalyiah":[0,110,0.4083],"kamarah":[0,223,0.4697],"kazaria":[0,94,0.0],"keslee":[0,126,0.4201],"kianti":[0,7,0.0],"kilia":[0,34,0.0],"kirianna":[0,19,0.0],"kylian":[3287,12,0.7011],"kylianna":[0,63,0.0],"lanease":[0,7,0.0],"lanyla":[0,152,0.4364],"leniah":[0,61,0.0],"leyanna":[0,271,0.4866],"loralye":[0,249,0.4792],"maela":[0,391,0.5184],"mailei":[0,20,0.0],"maimoona":[0,19,0.0],"maize":[90,179,0.3234],"maizee":[0,409,0.5223],"makenley":[0,266,0.485],"makhya":[0,121,0.4166],"malaikah":[0,36,0.0],"mariaeduarda":[0,261,0.4833],"marlei":[11,750,0.5679],"mashanti":[0,7,0.0],"mashyia":[0,15,0.0],"mayley":[0,197,0.4589],"meily":[0,192,0.4567],"melasia":[0,45,0.0],"milvia":[0,7,0.0],"minako":[0,13,0.0],"mirely":[0,140,0.4292],"nakhiya":[0,37,0.0],"nalaya":[0,579,0.5525],"namari":[367,273,0.3218],"nariyah":[0,1995,0.66],"nashiya":[0,83,0.0],"navah":[0,227,0.4712],"nimco":[0,111,0.4091],"pacha":[0,7,0.0],"pheona":[0,65,0.0],"rayli":[20,108,0.3556],"raynia":[0,34,0.0],"reyona":[0,13,0.0],"rilei":[5,76,0.0],"roniyah":[0,264,0.4843],"rund":[0,7,0.0],"saamiya":[0,99,0.0],"sacaria":[0,7,0.0],"saia":[13,201,0.4378],"samaia":[0,99,0.0],"semiya":[0,57,0.0],"shalva":[0,130,0.4228],"skya":[0,146,0.4329],"solmari":[0,12,0.0],"sonakshi":[0,76,0.0],"sophiamarie":[0,219,0.4681],"syniya":[0,40,0.0],"taviona":[0,22,0.0],"teija":[0,19,0.0],"temilola":[0,40,0.0],"tshanti":[0,7,0.0],"tyneasha":[0,7,0.0],"vinaya":[0,108,0.4067],"xitlalith":[0,7,0.0],"yanesha":[0,7,0.0],"yarali":[0,7,0.0],"yarilis":[0,13,0.0],"yaxaira":[0,7,0.0],"zakiria":[0,7,0.0],"zariana":[0,314,0.4994],"zeriah":[5,316,0.4935],"zhaniya":[0,88,0.0],"zuleidy":[0,64,0.0],"aaishah":[0,28,0.0],"aalana":[0,61,0.0],"aalysia":[0,6,0.0],"adai":[0,31,0.0],"ajiyah":[0,16,0.0],"alayjha":[0,17,0.0],"aleila":[0,124,0.4187],"alekxa":[0,6,0.0],"alimatou":[0,13,0.0],"aliona":[0,68,0.0],"aliyan":[136,11,0.401],"alyannah":[0,117,0.4136],"alyssya":[0,6,0.0],"amaira":[0,961,0.5965],"amareya":[0,19,0.0],"amaryia":[0,17,0.0],"amelea":[0,29,0.0],"anaiis":[0,38,0.0],"anajulia":[0,197,0.4589],"anala":[0,355,0.51],"anamaris":[0,41,0.0],"anaum":[0,34,0.0],"andralyn":[0,40,0.0],"angeliq":[0,11,0.0],"anggie":[0,22,0.0],"anijha":[0,54,0.0],"anjalina":[0,59,0.0],"annabela":[0,11,0.0],"annaie":[0,6,0.0],"annasia":[0,18,0.0],"anngie":[0,6,0.0],"annyka":[0,28,0.0],"antaniya":[0,82,0.0],"arayia":[0,65,0.0],"ashanni":[0,6,0.0],"ashlly":[0,11,0.0],"assetou":[0,27,0.0],"auralia":[0,47,0.0],"auryana":[0,11,0.0],"avalina":[0,535,0.5457],"ayatt":[0,6,0.0],"aynsleigh":[0,18,0.0],"azayla":[0,489,0.5379],"bianeth":[0,11,0.0],"breandrea":[0,6,0.0],"briette":[0,6,0.0],"brinnley":[0,381,0.5162],"bryli":[0,184,0.453],"caera":[0,66,0.0],"caidence":[148,1100,0.5458],"caliana":[0,914,0.5922],"cambelle":[0,160,0.4408],"canasia":[0,6,0.0],"catalyna":[0,248,0.4789],"caydance":[0,335,0.505],"cessna":[0,6,0.0],"charvi":[0,350,0.5088],"ciersten":[0,6,0.0],"clayre":[0,40,0.0],"daityn":[0,6,0.0],"dakya":[0,6,0.0],"dakyra":[0,55,0.0],"daliya":[0,153,0.4369],"damyra":[0,133,0.4248],"danyla":[0,677,0.5661],"dayannara":[0,103,0.4026],"dazaria":[0,157,0.4392],"dechen":[0,11,0.0],"delailah":[0,166,0.444],"demyra":[0,36,0.0],"desery":[0,6,0.0],"dhriti":[0,771,0.5774],"dhwani":[0,160,0.4408],"dijonay":[0,35,0.0],"donnay":[0,6,0.0],"douachee":[0,6,0.0],"ebere":[0,6,0.0],"eeman":[0,6,0.0],"ellenie":[0,100,0.4],"emmalia":[0,304,0.4966],"evyenia":[0,45,0.0],"floriana":[0,61,0.0],"gaosheng":[0,11,0.0],"genisus":[0,6,0.0],"gethsemane":[0,84,0.0],"gieselle":[0,6,0.0],"giona":[0,59,0.0],"hazal":[0,66,0.0],"heera":[0,72,0.0],"heiley":[0,124,0.4187],"heiry":[0,11,0.0],"icyss":[0,63,0.0],"ijanay":[0,12,0.0],"iselle":[0,39,0.0],"jadalise":[0,52,0.0],"jadenne":[0,6,0.0],"jadlyn":[0,55,0.0],"jahya":[0,25,0.0],"jakayia":[0,6,0.0],"jaliyha":[0,29,0.0],"jamerah":[0,15,0.0],"janeira":[0,26,0.0],"janeiya":[0,6,0.0],"jardyn":[0,28,0.0],"jashante":[0,6,0.0],"jashara":[0,6,0.0],"jashiya":[0,84,0.0],"javiana":[0,85,0.0],"jayani":[0,515,0.5424],"jaylani":[89,3184,0.6839],"jaylena":[0,157,0.4392],"jaylnn":[0,97,0.0],"jazive":[0,11,0.0],"jaziyah":[43,1071,0.5859],"jeily":[0,264,0.4843],"jekayla":[0,36,0.0],"jemeria":[0,6,0.0],"jenicka":[0,333,0.5045],"jenniya":[0,16,0.0],"jersee":[0,165,0.4435],"jesley":[0,56,0.0],"jeslin":[0,135,0.4261],"jezebelle":[0,74,0.0],"jhala":[0,6,0.0],"jiliana":[0,38,0.0],"jnyah":[0,84,0.0],"johnnessa":[0,11,0.0],"jossalin":[0,66,0.0],"jozelynn":[0,107,0.4059],"jozlin":[0,72,0.0],"juleana":[0,24,0.0],"kadince":[0,222,0.4693],"kanyah":[0,144,0.4317],"kaylise":[0,70,0.0],"keijah":[0,6,0.0],"kenniah":[0,46,0.0],"kerington":[0,67,0.0],"keriona":[0,11,0.0],"keyhla":[0,12,0.0],"keyleen":[0,85,0.0],"keyshona":[0,6,0.0],"khadidiatou":[0,29,0.0],"kimiyah":[0,183,0.4525],"kimori":[0,118,0.4144],"kinadee":[0,11,0.0],"kinnedi":[0,16,0.0],"kinnley":[0,359,0.511],"klowie":[0,30,0.0],"krishi":[28,12,0.0],"krushi":[0,6,0.0],"kyha":[0,16,0.0],"kyleigha":[0,150,0.4352],"lashaunti":[0,12,0.0],"lataesha":[0,6,0.0],"laurelai":[0,93,0.0],"lazarria":[0,11,0.0],"leaisha":[0,13,0.0],"lilija":[0,62,0.0],"livvie":[0,100,0.4],"lizbhet":[0,24,0.0],"llenifer":[0,12,0.0],"macenna":[0,6,0.0],"maddisson":[0,6,0.0],"madely":[0,19,0.0],"maissa":[0,16,0.0],"makaylynn":[0,189,0.4553],"manasvini":[0,80,0.0],"manaswini":[0,32,0.0],"maraja":[0,11,0.0],"marshanti":[0,6,0.0],"masiya":[5,81,0.0],"matyson":[0,17,0.0],"mehana":[0,59,0.0],"meilan":[0,28,0.0],"mekella":[0,6,0.0],"mekhiya":[0,37,0.0],"miarose":[0,389,0.518],"minhchau":[0,16,0.0],"mistaya":[0,6,0.0],"mizan":[11,11,0.0],"monserrad":[0,16,0.0],"monsserat":[0,11,0.0],"monsserrat":[0,24,0.0],"myalynn":[0,137,0.4273],"mykenzee":[0,11,0.0],"mykhia":[0,82,0.0],"naomee":[0,72,0.0],"nayelle":[0,22,0.0],"naylani":[0,910,0.5918],"neleigh":[0,18,0.0],"nijai":[0,18,0.0],"noeliz":[0,6,0.0],"oceane":[5,193,0.4477],"oluwapelumi":[25,11,0.0],"paje":[0,6,0.0],"patriana":[0,6,0.0],"raen":[11,20,0.0],"ragin":[0,6,0.0],"raisah":[0,6,0.0],"raylea":[0,194,0.4576],"reniyah":[0,392,0.5187],"rhyleigh":[0,637,0.5608],"riannah":[0,78,0.0],"richara":[0,6,0.0],"rielee":[0,17,0.0],"rumi":[589,778,0.3569],"saiya":[0,446,0.5299],"sarya":[0,215,0.4665],"semiah":[0,70,0.0],"serinah":[0,11,0.0],"shdiamond":[0,12,0.0],"sherlyne":[0,108,0.4067],"sheyli":[0,198,0.4593],"sheylla":[0,6,0.0],"shradha":[0,44,0.0],"shyah":[5,136,0.4146],"skarleth":[0,207,0.4632],"sonye":[0,11,0.0],"sophiya":[0,277,0.4885],"sorelle":[0,69,0.0],"sosefina":[0,78,0.0],"suzet":[0,23,0.0],"tajanai":[0,6,0.0],"tattyana":[0,6,0.0],"tavonya":[0,6,0.0],"terryonna":[0,17,0.0],"tiembra":[0,11,0.0],"tkaia":[0,11,0.0],"tliyah":[0,11,0.0],"tniyah":[0,120,0.4158],"trishell":[0,12,0.0],"vianeth":[0,13,0.0],"vianni":[0,63,0.0],"vindhya":[0,27,0.0],"vionda":[0,6,0.0],"vionna":[0,29,0.0],"wendolee":[0,11,0.0],"xaia":[0,45,0.0],"yairet":[0,6,0.0],"yanaira":[0,42,0.0],"yashley":[0,6,0.0],"yazzmin":[0,17,0.0],"yorgelis":[0,6,0.0],"yoselyne":[0,13,0.0],"yulene":[0,6,0.0],"yuriah":[76,86,0.2346],"zairah":[0,277,0.4885],"zakaiyah":[0,23,0.0],"zakyria":[0,64,0.0],"zalayah":[0,680,0.5665],"zamani":[46,204,0.3913],"zariea":[0,17,0.0],"zatavia":[0,6,0.0],"zeya":[0,184,0.453],"aaja":[0,5,0.0],"aakira":[0,5,0.0],"aakiyah":[0,5,0.0],"aalisha":[0,35,0.0],"aaliyiah":[0,41,0.0],"aamani":[0,233,0.4735],"aamyah":[0,57,0.0],"aaniah":[0,33,0.0],"aashana":[0,5,0.0],"aashi":[0,691,0.5679],"aashika":[0,112,0.4098],"aayliah":[0,92,0.0],"abeeha":[0,274,0.4876],"abiegail":[0,15,0.0],"abigeal":[0,22,0.0],"abigel":[0,31,0.0],"abrienne":[0,27,0.0],"achanti":[0,5,0.0],"addalynn":[0,2263,0.6709],"ahlani":[0,966,0.597],"ahleeyah":[0,5,0.0],"ahmaria":[0,33,0.0],"ahmyah":[0,91,0.0],"ahnyia":[0,5,0.0],"ahshanti":[0,5,0.0],"ailana":[0,498,0.5394],"ailina":[0,34,0.0],"aishatu":[0,5,0.0],"aizlyn":[0,246,0.4782],"akshata":[0,23,0.0],"alaejah":[0,16,0.0],"alahnna":[0,20,0.0],"alala":[0,15,0.0],"alaniz":[0,49,0.0],"alasiah":[0,26,0.0],"alazhia":[0,5,0.0],"aleiza":[0,93,0.0],"alexisjade":[0,5,0.0],"aleydis":[0,49,0.0],"aliany":[0,215,0.4665],"aliciah":[0,21,0.0],"alixia":[0,5,0.0],"aliysha":[0,5,0.0],"alizai":[0,5,0.0],"alizeya":[0,16,0.0],"allysyn":[0,16,0.0],"alyceia":[0,5,0.0],"alyxia":[0,25,0.0],"amarantha":[0,5,0.0],"amarionna":[0,226,0.4708],"amarya":[0,144,0.4317],"amrin":[0,15,0.0],"anagrace":[0,37,0.0],"anaie":[0,32,0.0],"anakah":[0,5,0.0],"analeesa":[0,17,0.0],"analexis":[0,5,0.0],"analiah":[0,971,0.5974],"ananiah":[0,174,0.4481],"anastaisha":[0,11,0.0],"anavela":[0,5,0.0],"anavey":[0,95,0.0],"anayla":[0,374,0.5146],"anazia":[0,17,0.0],"andreyah":[0,69,0.0],"aneecia":[0,10,0.0],"angelinna":[0,58,0.0],"angelize":[0,81,0.0],"angelleigh":[0,5,0.0],"angelrose":[0,21,0.0],"aniayah":[0,163,0.4424],"aniyla":[0,752,0.5752],"anosha":[0,16,0.0],"antaja":[0,10,0.0],"anushri":[0,82,0.0],"anyce":[0,22,0.0],"anyeli":[0,625,0.5592],"aquala":[0,5,0.0],"aranxa":[0,16,0.0],"archisha":[0,23,0.0],"areiana":[0,27,0.0],"arelie":[0,122,0.4173],"arinna":[0,23,0.0],"arisleidy":[0,11,0.0],"arshanti":[0,5,0.0],"artemia":[0,5,0.0],"asala":[0,5,0.0],"ashantey":[0,5,0.0],"ashantiana":[0,5,0.0],"ashaunta":[0,5,0.0],"ashyla":[0,114,0.4114],"assa":[0,35,0.0],"atiyyah":[0,10,0.0],"atzi":[0,251,0.4799],"aujah":[0,10,0.0],"avalynn":[0,4213,0.7249],"aviara":[0,18,0.0],"ayaat":[8,271,0.4751],"ayannia":[0,10,0.0],"ayleene":[0,27,0.0],"ayshah":[0,29,0.0],"azahria":[0,46,0.0],"azaliah":[0,464,0.5333],"azalyn":[0,107,0.4059],"berniya":[0,5,0.0],"betel":[0,46,0.0],"beya":[0,254,0.481],"bionda":[0,5,0.0],"blakeleigh":[0,1029,0.6025],"blaklee":[0,181,0.4515],"blessyn":[42,1097,0.5888],"bracie":[0,39,0.0],"bralee":[0,77,0.0],"breajah":[0,21,0.0],"breazia":[0,23,0.0],"brekyn":[52,99,0.2857],"brishana":[0,5,0.0],"britthany":[0,27,0.0],"cadynce":[0,272,0.4869],"callasandra":[0,5,0.0],"cameria":[0,16,0.0],"camyah":[0,141,0.4298],"carista":[0,5,0.0],"carragan":[0,5,0.0],"carrena":[0,5,0.0],"cassadee":[0,277,0.4885],"ceniya":[0,105,0.4042],"cevanna":[0,5,0.0],"ceyonna":[0,18,0.0],"chaelynn":[0,24,0.0],"chaiya":[0,15,0.0],"chakiya":[0,17,0.0],"chakya":[0,10,0.0],"chaselynn":[0,94,0.0],"cherlin":[0,55,0.0],"chrishay":[0,10,0.0],"ciyah":[0,5,0.0],"clarixa":[0,5,0.0],"cliona":[0,26,0.0],"clowey":[0,19,0.0],"corniya":[0,45,0.0],"crystiana":[0,49,0.0],"dafny":[0,72,0.0],"dahana":[0,16,0.0],"dajahnay":[0,5,0.0],"dakaria":[0,49,0.0],"dakyla":[0,60,0.0],"dalaya":[0,213,0.4657],"dalee":[0,11,0.0],"dalisia":[0,5,0.0],"damaiya":[0,27,0.0],"damianna":[0,16,0.0],"danayia":[0,5,0.0],"daneli":[0,163,0.4424],"daneyah":[0,5,0.0],"danka":[0,5,0.0],"daryanna":[0,51,0.0],"dasany":[0,25,0.0],"dashani":[0,10,0.0],"dashna":[0,5,0.0],"dashyra":[0,5,0.0],"dasiya":[0,52,0.0],"davasia":[0,21,0.0],"dayshanay":[0,5,0.0],"dayvonna":[0,5,0.0],"delaini":[0,35,0.0],"delenna":[0,5,0.0],"demiyah":[0,534,0.5455],"denyia":[0,11,0.0],"deoni":[0,76,0.0],"deqa":[0,5,0.0],"deziraye":[0,10,0.0],"dezmarie":[0,36,0.0],"dianela":[0,10,0.0],"dimia":[0,5,0.0],"dioni":[28,33,0.0],"diora":[0,264,0.4843],"dreona":[0,10,0.0],"dyanni":[0,40,0.0],"dylaney":[0,21,0.0],"dylanne":[0,27,0.0],"eimear":[0,5,0.0],"eimi":[0,154,0.4375],"elayah":[0,375,0.5148],"eliandra":[0,16,0.0],"elleah":[0,114,0.4114],"elliah":[0,87,0.0],"ellieanna":[0,457,0.532],"ellycia":[0,5,0.0],"emagin":[0,5,0.0],"emalina":[0,169,0.4456],"emaria":[0,54,0.0],"emberlee":[0,1742,0.6482],"emiliee":[0,5,0.0],"emirra":[0,5,0.0],"emmaleah":[0,157,0.4392],"emmilie":[0,13,0.0],"endiyah":[0,41,0.0],"endyah":[0,5,0.0],"erickah":[0,10,0.0],"eridani":[0,12,0.0],"esabelle":[0,37,0.0],"everlin":[0,16,0.0],"eyra":[0,33,0.0],"fattima":[0,5,0.0],"faven":[0,78,0.0],"favor":[130,487,0.4405],"feyisayo":[0,5,0.0],"franccesca":[0,11,0.0],"frimy":[0,152,0.4364],"fury":[0,5,0.0],"gabrionna":[0,5,0.0],"galylea":[0,45,0.0],"ganiya":[0,30,0.0],"gefen":[5,15,0.0],"gelina":[0,57,0.0],"genissa":[0,5,0.0],"giannah":[0,592,0.5545],"gracin":[515,219,0.4021],"guisell":[0,5,0.0],"guisselle":[0,5,0.0],"harika":[0,109,0.4075],"hasti":[0,71,0.0],"heavynn":[0,40,0.0],"heeba":[0,5,0.0],"heleyna":[0,34,0.0],"helin":[0,56,0.0],"henessey":[0,22,0.0],"heyam":[0,44,0.0],"hibaq":[0,33,0.0],"hiya":[0,221,0.4689],"hosannah":[0,10,0.0],"hudes":[0,5,0.0],"ibukunoluwa":[34,51,0.0],"ijana":[0,5,0.0],"ilayna":[0,35,0.0],"imogin":[0,5,0.0],"isabellarose":[0,186,0.4539],"ishanti":[0,12,0.0],"issys":[0,42,0.0],"itzelle":[0,85,0.0],"ivianna":[0,210,0.4644],"ivree":[0,22,0.0],"iyiana":[0,21,0.0],"jaada":[0,5,0.0],"jaade":[0,5,0.0],"jaalyn":[6,5,0.0],"jacklen":[0,5,0.0],"jadaija":[0,5,0.0],"jadha":[0,5,0.0],"jaeanna":[0,69,0.0],"jaeley":[0,64,0.0],"jaelie":[0,121,0.4166],"jahirah":[0,18,0.0],"jahyda":[0,5,0.0],"jaidee":[0,75,0.0],"jaileigh":[0,163,0.4424],"jaily":[0,74,0.0],"jairah":[0,25,0.0],"jakailah":[0,41,0.0],"jakhiya":[0,83,0.0],"jalyia":[0,5,0.0],"jalyna":[0,10,0.0],"janaeya":[0,59,0.0],"janaina":[0,5,0.0],"janisia":[0,5,0.0],"janitzy":[0,15,0.0],"janiyyah":[0,5,0.0],"janylah":[0,1014,0.6012],"jarielle":[0,25,0.0],"jarlyn":[0,11,0.0],"jasalynn":[0,57,0.0],"jasee":[0,5,0.0],"jaselynn":[0,114,0.4114],"jashya":[0,41,0.0],"jasianna":[0,5,0.0],"jasona":[0,5,0.0],"jassie":[0,5,0.0],"jataiya":[0,5,0.0],"jayleah":[0,212,0.4653],"jazmari":[0,23,0.0],"jazmein":[0,5,0.0],"jennaveve":[0,21,0.0],"jennavie":[0,162,0.4419],"jennavive":[0,44,0.0],"jentrie":[0,81,0.0],"jerriah":[5,130,0.4103],"jessiana":[0,28,0.0],"jeydy":[0,30,0.0],"jhene":[0,1631,0.6425],"jiani":[0,56,0.0],"jiaya":[0,11,0.0],"jimenna":[0,63,0.0],"jimiah":[0,5,0.0],"jisella":[0,69,0.0],"jkia":[0,5,0.0],"jlee":[0,68,0.0],"jnia":[0,22,0.0],"joaly":[0,65,0.0],"johniya":[0,96,0.0],"joliyah":[0,100,0.4],"jorianna":[0,5,0.0],"josslynn":[0,447,0.5301],"jossy":[0,17,0.0],"joud":[267,339,0.3113],"joyah":[0,24,0.0],"julitsa":[0,11,0.0],"juni":[65,330,0.4339],"juniah":[0,5,0.0],"kadiatu":[0,43,0.0],"kaida":[7,646,0.5569],"kaileia":[0,170,0.4461],"kaitin":[0,5,0.0],"kaitryn":[0,12,0.0],"kalaia":[0,122,0.4173],"kambell":[0,42,0.0],"kameya":[0,37,0.0],"kamylle":[0,92,0.0],"kanyla":[0,360,0.5113],"kashi":[21,57,0.0],"kasiya":[0,131,0.4235],"katen":[0,48,0.0],"katiyah":[0,11,0.0],"katyln":[0,5,0.0],"kaveona":[0,5,0.0],"kawailani":[0,42,0.0],"kaycia":[0,25,0.0],"kayleana":[0,153,0.4369],"kaylianna":[0,351,0.5091],"kayta":[0,5,0.0],"keajia":[0,5,0.0],"kealia":[0,53,0.0],"keally":[0,5,0.0],"keemia":[0,5,0.0],"keisi":[0,250,0.4796],"keyley":[0,21,0.0],"kida":[0,155,0.4381],"kiersen":[0,10,0.0],"kileah":[0,43,0.0],"kimaria":[0,66,0.0],"kimira":[0,30,0.0],"kirtana":[0,10,0.0],"kiziah":[0,20,0.0],"klarysa":[0,15,0.0],"klover":[13,544,0.5364],"kohana":[0,211,0.4649],"kolia":[0,5,0.0],"krisalyn":[0,176,0.4491],"kristabel":[0,10,0.0],"kristiona":[0,25,0.0],"kryslynn":[0,52,0.0],"kylamarie":[0,5,0.0],"kylianne":[0,48,0.0],"kynnadi":[0,222,0.4693],"lanaria":[0,11,0.0],"lariana":[0,34,0.0],"larianna":[0,10,0.0],"lashunti":[0,5,0.0],"laylia":[0,92,0.0],"layssa":[0,16,0.0],"leelu":[0,52,0.0],"leiliana":[0,207,0.4632],"lelanie":[0,10,0.0],"lexsy":[0,5,0.0],"leylanie":[0,400,0.5204],"libertee":[0,50,0.0],"liel":[102,423,0.4383],"lienna":[0,28,0.0],"lieza":[0,5,0.0],"lilana":[0,81,0.0],"lilou":[0,347,0.5081],"lissbet":[0,5,0.0],"lizmar":[0,42,0.0],"lizzbeth":[0,10,0.0],"luul":[0,42,0.0],"lyberti":[0,87,0.0],"lydianna":[0,73,0.0],"lyriq":[147,820,0.5063],"maanya":[0,355,0.51],"macaylee":[0,30,0.0],"machia":[0,11,0.0],"mackinzey":[0,15,0.0],"maclaren":[23,40,0.0],"maddigan":[0,23,0.0],"mahaylia":[0,5,0.0],"maiza":[0,124,0.4187],"makaiyah":[0,211,0.4649],"makayliah":[0,5,0.0],"makylia":[0,22,0.0],"makyrah":[0,39,0.0],"malialani":[0,5,0.0],"maliayah":[0,10,0.0],"maliyha":[0,40,0.0],"malyiah":[0,161,0.4414],"maraki":[0,195,0.458],"mareike":[0,5,0.0],"mariapaz":[0,38,0.0],"mariuxi":[0,5,0.0],"mariyana":[0,144,0.4317],"marlenis":[0,11,0.0],"marzia":[0,149,0.4346],"mattalynn":[0,158,0.4397],"mckenly":[5,50,0.0],"melanney":[0,10,0.0],"mely":[0,78,0.0],"mialee":[0,76,0.0],"michaya":[0,48,0.0],"michiya":[0,20,0.0],"michyla":[0,11,0.0],"mikaeli":[0,5,0.0],"mikhia":[0,72,0.0],"mililani":[0,129,0.4221],"milli":[0,421,0.5249],"milyn":[0,111,0.4091],"minhthu":[0,16,0.0],"mionna":[0,107,0.4059],"monzerath":[0,55,0.0],"motunrayo":[0,32,0.0],"mridula":[0,41,0.0],"myel":[35,10,0.0],"mykya":[0,5,0.0],"myyah":[0,5,0.0],"naiely":[0,5,0.0],"naisa":[0,16,0.0],"najaah":[0,10,0.0],"nalayah":[0,615,0.5578],"nalyssa":[0,15,0.0],"nandana":[0,121,0.4166],"natayshia":[0,5,0.0],"navdia":[0,5,0.0],"navea":[0,170,0.4461],"navina":[0,117,0.4136],"nayleah":[0,149,0.4346],"naylie":[0,15,0.0],"naylin":[0,177,0.4496],"neaveh":[0,187,0.4544],"neidi":[0,10,0.0],"neissa":[0,5,0.0],"neliah":[0,90,0.0],"nicaya":[0,5,0.0],"nicte":[0,48,0.0],"nithila":[0,159,0.4403],"niyona":[0,11,0.0],"nkayla":[0,5,0.0],"nor":[6,34,0.0],"noreli":[0,22,0.0],"nyila":[0,59,0.0],"nyima":[0,274,0.4876],"nykhia":[0,30,0.0],"nyshae":[0,5,0.0],"oaklie":[5,692,0.5646],"olesia":[0,85,0.0],"oliviya":[0,92,0.0],"oluwatoyosi":[0,10,0.0],"onyah":[0,10,0.0],"oriane":[0,46,0.0],"oriyana":[0,5,0.0],"oshun":[39,190,0.3916],"patiance":[0,36,0.0],"payshence":[0,42,0.0],"pazong":[0,10,0.0],"platinum":[0,5,0.0],"promiss":[0,100,0.4],"quiniya":[0,37,0.0],"rachita":[0,5,0.0],"raedyn":[179,266,0.3166],"raevynn":[0,50,0.0],"rakyah":[0,48,0.0],"rayeanna":[0,5,0.0],"rayley":[0,196,0.4585],"rayvyn":[0,17,0.0],"reha":[0,125,0.4194],"reili":[6,5,0.0],"renasia":[0,27,0.0],"riahna":[0,30,0.0],"rickyah":[0,16,0.0],"ridah":[0,16,0.0],"rikiyah":[0,54,0.0],"rilya":[0,61,0.0],"rohma":[0,5,0.0],"romiah":[0,23,0.0],"ronnasia":[0,11,0.0],"ryelle":[5,346,0.5018],"saadiya":[0,72,0.0],"saaliyah":[0,23,0.0],"saana":[0,26,0.0],"saanvi":[0,4671,0.7339],"sahalie":[0,125,0.4194],"sairy":[0,52,0.0],"samayia":[0,15,0.0],"samerah":[0,37,0.0],"samoya":[0,53,0.0],"sanskriti":[0,108,0.4067],"sanyiah":[0,188,0.4548],"saraia":[0,151,0.4358],"sathvika":[0,100,0.4],"sebria":[0,5,0.0],"senya":[0,126,0.4201],"sephia":[0,10,0.0],"seriyah":[0,388,0.5178],"sesen":[0,32,0.0],"shaaliyah":[0,5,0.0],"shailie":[0,11,0.0],"shakyria":[0,16,0.0],"shalliyah":[0,5,0.0],"shanaisha":[0,5,0.0],"shariden":[0,5,0.0],"shedricka":[0,5,0.0],"shelaya":[0,5,0.0],"sheliyah":[0,10,0.0],"sieria":[0,5,0.0],"silje":[0,64,0.0],"skieler":[0,5,0.0],"skyye":[0,64,0.0],"solangie":[0,24,0.0],"solenne":[0,176,0.4491],"soraide":[0,5,0.0],"soukaina":[0,5,0.0],"spandana":[0,18,0.0],"spoorthi":[0,39,0.0],"sraavya":[0,5,0.0],"steelie":[0,83,0.0],"stefhany":[0,16,0.0],"supraja":[0,5,0.0],"sydra":[0,5,0.0],"taasia":[0,13,0.0],"tahliyah":[0,67,0.0],"taily":[0,10,0.0],"takijah":[0,5,0.0],"takyiah":[0,11,0.0],"takylia":[0,5,0.0],"taliyha":[0,34,0.0],"tanayshia":[0,5,0.0],"tanijha":[0,27,0.0],"tanushri":[0,16,0.0],"tanyra":[0,21,0.0],"tashani":[0,16,0.0],"tashante":[0,5,0.0],"tashaunti":[0,5,0.0],"tasiana":[0,38,0.0],"tavonda":[0,5,0.0],"tayley":[0,77,0.0],"taylinn":[0,184,0.453],"taylorrose":[0,22,0.0],"taziya":[0,31,0.0],"temya":[0,38,0.0],"terriah":[0,165,0.4435],"terryona":[0,10,0.0],"thalita":[0,16,0.0],"tiayanna":[0,5,0.0],"tiliyah":[0,17,0.0],"trenaty":[0,5,0.0],"trinati":[0,23,0.0],"tulasi":[0,12,0.0],"tykayla":[0,5,0.0],"tykierra":[0,5,0.0],"tyranique":[0,5,0.0],"tyshanti":[0,12,0.0],"uniya":[0,5,0.0],"vaeda":[0,1178,0.6142],"vernasia":[0,5,0.0],"viha":[0,382,0.5164],"xiclali":[0,85,0.0],"xitlalit":[0,5,0.0],"yaleska":[0,16,0.0],"yanaiza":[0,10,0.0],"yariah":[0,205,0.4624],"yaritzy":[0,238,0.4753],"yarlyn":[0,5,0.0],"yasira":[0,129,0.4221],"yennie":[0,5,0.0],"yerin":[0,32,0.0],"yeslie":[0,38,0.0],"yesmine":[0,5,0.0],"yexalen":[0,111,0.4091],"yna":[0,11,0.0],"yoli":[0,32,0.0],"yori":[6,86,0.0],"yosaira":[0,5,0.0],"yuliet":[0,195,0.458],"zakaiya":[0,83,0.0],"zaret":[0,10,0.0],"zatara":[0,5,0.0],"zaylah":[0,805,0.5812],"zelie":[0,1142,0.6115],"zeny":[0,5,0.0],"zniya":[0,94,0.0],"zyara":[0,124,0.4187],"zyrah":[0,350,0.5088],"omarian":[304,0,0.4966],"amarian":[402,0,0.5208],"josejulian":[183,0,0.4525],"jaeven":[84,0,0.0],"yoskar":[136,0,0.4267],"amareon":[96,0,0.0],"omarrion":[62,0,0.0],"lissandro":[205,0,0.4624],"apolo":[227,0,0.4712],"caedyn":[393,83,0.4421],"ronith":[131,0,0.4235],"angelgabriel":[296,0,0.4943],"auron":[676,0,0.566],"damareon":[140,0,0.4292],"kimahri":[30,0,0.0],"albieri":[12,0,0.0],"brode":[117,0,0.4136],"iliyan":[34,0,0.0],"jaxin":[960,5,0.5938],"kolson":[1812,0,0.6516],"malikhi":[302,0,0.496],"sacario":[32,0,0.0],"amarrion":[137,0,0.4273],"armarion":[114,0,0.4114],"bereket":[192,0,0.4567],"calix":[780,0,0.5784],"deakin":[226,0,0.4708],"khaden":[372,0,0.5141],"tidus":[874,0,0.5883],"amaurion":[51,0,0.0],"anubis":[262,0,0.4837],"bryshon":[20,0,0.0],"caide":[114,0,0.4114],"dahntay":[29,0,0.0],"demarrion":[219,0,0.4681],"emarion":[487,0,0.5375],"jamerion":[123,0,0.418],"jaxxon":[3607,0,0.7114],"lautaro":[102,0,0.4017],"lixandro":[10,0,0.0],"marreon":[32,0,0.0],"omarien":[23,0,0.0],"rhyder":[1183,150,0.5546],"takoma":[21,0,0.0],"aimar":[247,161,0.3161],"amariyon":[64,0,0.0],"benecio":[79,0,0.0],"blayz":[69,0,0.0],"esias":[249,0,0.4792],"jetli":[47,0,0.0],"jhoel":[121,0,0.4166],"muath":[67,0,0.0],"pedrohenrique":[114,0,0.4114],"saevion":[25,0,0.0],"sayd":[35,0,0.0],"shalim":[45,0,0.0],"simar":[57,209,0.3811],"teagon":[125,17,0.3789],"thade":[32,0,0.0],"townes":[1256,84,0.5862],"usmaan":[14,0,0.0],"xsavior":[49,0,0.0],"zamarion":[1169,0,0.6136],"albiery":[8,0,0.0],"alian":[107,0,0.4059],"anthonyjr":[14,0,0.0],"arshan":[404,0,0.5213],"avenir":[425,0,0.5257],"bryshawn":[31,0,0.0],"cadden":[67,0,0.0],"chrisitan":[8,0,0.0],"damarrion":[276,0,0.4882],"dartagnon":[8,0,0.0],"daymein":[98,0,0.0],"deylon":[23,0,0.0],"dinari":[147,0,0.4335],"divion":[8,0,0.0],"ebubechukwu":[128,5,0.4088],"elijia":[8,0,0.0],"exzavion":[32,0,0.0],"hamze":[80,0,0.0],"harshdeep":[21,0,0.0],"haygen":[273,47,0.4274],"jacian":[68,0,0.0],"jacksyn":[280,59,0.418],"jaleb":[19,0,0.0],"jaquincy":[19,0,0.0],"jayion":[98,0,0.0],"jayk":[39,0,0.0],"jayvien":[769,0,0.5772],"jonjon":[8,0,0.0],"joskar":[22,0,0.0],"kevondrick":[8,0,0.0],"kosisochukwu":[98,121,0.2586],"koston":[257,0,0.482],"kyele":[13,0,0.0],"kyro":[2512,13,0.6769],"layten":[376,49,0.4651],"macray":[13,0,0.0],"maxen":[497,0,0.5393],"mikhel":[29,0,0.0],"nafi":[59,0,0.0],"nohl":[23,0,0.0],"omareon":[37,0,0.0],"qualik":[20,0,0.0],"quamar":[40,0,0.0],"raidyn":[577,122,0.4696],"rishit":[117,0,0.4136],"sahit":[18,0,0.0],"saviyon":[22,0,0.0],"shafee":[8,0,0.0],"teige":[66,0,0.0],"trayden":[343,0,0.5071],"tyandre":[8,0,0.0],"weiland":[112,0,0.4098],"xaden":[392,0,0.5187],"yahsir":[163,0,0.4424],"zaiah":[156,227,0.3062],"zaman":[40,0,0.0],"aaronjoseph":[7,0,0.0],"advay":[529,0,0.5447],"aedon":[145,0,0.4323],"akshaj":[604,0,0.5562],"alajandro":[7,0,0.0],"amay":[414,0,0.5234],"angelous":[14,0,0.0],"animesh":[17,0,0.0],"arshaun":[47,0,0.0],"aveyon":[66,0,0.0],"bodin":[314,0,0.4994],"breken":[172,0,0.4471],"camarion":[678,0,0.5662],"cashus":[261,0,0.4833],"cristhofer":[68,0,0.0],"dalessandro":[181,0,0.4515],"daydrian":[21,0,0.0],"deauntre":[7,0,0.0],"elijaah":[49,0,0.0],"elyja":[17,0,0.0],"eray":[24,0,0.0],"ethane":[23,0,0.0],"ethean":[13,0,0.0],"exavior":[76,0,0.0],"hamidou":[88,0,0.0],"huxley":[4375,460,0.6668],"izaias":[215,0,0.4665],"javeyon":[57,0,0.0],"jaylien":[29,19,0.0],"jaywon":[16,0,0.0],"jhalyn":[7,0,0.0],"johnrussell":[7,0,0.0],"kainin":[43,0,0.0],"kanishk":[176,0,0.4491],"kayan":[381,228,0.3484],"khale":[179,0,0.4506],"korvin":[209,0,0.464],"kywuan":[7,0,0.0],"lesther":[84,0,0.0],"mattox":[661,24,0.5473],"mehkai":[221,0,0.4689],"melachi":[83,0,0.0],"melbin":[50,0,0.0],"mikhai":[152,0,0.4364],"minwoo":[17,0,0.0],"nyjal":[12,0,0.0],"parthiv":[111,0,0.4091],"pharell":[187,0,0.4544],"rohaan":[416,0,0.5238],"shuayb":[97,0,0.0],"sreekar":[90,0,0.0],"sumanth":[30,0,0.0],"tayvien":[76,0,0.0],"treagan":[17,0,0.0],"trevarious":[7,0,0.0],"vir":[424,0,0.5255],"xayvier":[110,0,0.4083],"xzander":[685,0,0.5671],"yamin":[291,0,0.4928],"yostin":[374,0,0.5146],"zaith":[35,0,0.0],"zarik":[19,0,0.0],"zyire":[459,0,0.5324],"zyrus":[142,0,0.4305],"aarav":[7831,0,0.7788],"aarush":[2961,0,0.6943],"abdulhakim":[23,0,0.0],"adryen":[127,0,0.4208],"aftab":[20,0,0.0],"ahmarion":[101,0,0.4009],"alviery":[13,0,0.0],"amaud":[38,0,0.0],"amner":[64,0,0.0],"arton":[6,0,0.0],"aryaan":[230,0,0.4723],"assane":[42,0,0.0],"avantay":[17,0,0.0],"axxel":[192,0,0.4567],"blaide":[6,0,0.0],"bosten":[103,0,0.4026],"brandson":[11,0,0.0],"breno":[57,0,0.0],"bruke":[18,0,0.0],"caedan":[173,0,0.4476],"caedin":[69,0,0.0],"cagan":[11,0,0.0],"cambren":[115,0,0.4121],"camrun":[6,0,0.0],"cevion":[11,0,0.0],"cheyton":[25,0,0.0],"christopheranth":[6,0,0.0],"chuy":[11,0,0.0],"cirrus":[13,0,0.0],"dajan":[6,0,0.0],"damaree":[154,0,0.4375],"dasian":[6,0,0.0],"davionta":[6,0,0.0],"dequez":[11,0,0.0],"djordje":[11,0,0.0],"dominyck":[79,0,0.0],"ehan":[417,0,0.524],"emrick":[316,0,0.4999],"eyoel":[212,0,0.4653],"fallou":[123,0,0.418],"florenzo":[6,0,0.0],"gemari":[57,0,0.0],"gericho":[6,0,0.0],"giuliani":[40,0,0.0],"givonni":[28,0,0.0],"gor":[128,0,0.4214],"gurshan":[202,0,0.4611],"hadari":[6,0,0.0],"harvir":[41,0,0.0],"hemanth":[21,0,0.0],"iago":[91,0,0.0],"iori":[95,0,0.0],"isaiyah":[135,0,0.4261],"issack":[49,0,0.0],"jahiel":[28,0,0.0],"jahliel":[38,0,0.0],"jahmaine":[11,0,0.0],"jahsean":[43,0,0.0],"jahzir":[272,0,0.4869],"jakavious":[30,0,0.0],"jamariea":[6,0,0.0],"jamaun":[17,0,0.0],"jamyre":[16,0,0.0],"jasai":[927,5,0.5907],"jatorian":[62,0,0.0],"javant":[18,0,0.0],"jayonte":[11,0,0.0],"jaysiah":[193,0,0.4571],"jerryn":[37,0,0.0],"jeven":[79,0,0.0],"jevonn":[6,0,0.0],"jion":[38,0,0.0],"jiquan":[14,0,0.0],"jisiah":[11,0,0.0],"jlan":[6,0,0.0],"jonaven":[115,0,0.4121],"jotavious":[6,0,0.0],"juelz":[4006,168,0.695],"jymir":[146,0,0.4329],"jyrin":[26,0,0.0],"kaiel":[297,0,0.4946],"kaion":[165,0,0.4435],"kalyl":[6,0,0.0],"kaysan":[291,0,0.4928],"kebba":[47,0,0.0],"keeno":[6,0,0.0],"kesuan":[6,0,0.0],"khani":[169,27,0.3953],"khiyon":[54,0,0.0],"kilik":[47,0,0.0],"konur":[6,0,0.0],"latrevion":[30,0,0.0],"lucifer":[465,0,0.5335],"maddix":[2053,375,0.5725],"maicol":[261,0,0.4833],"makahi":[53,0,0.0],"malakhai":[402,0,0.5208],"malaky":[71,0,0.0],"malkiel":[56,0,0.0],"mareon":[102,0,0.4017],"martaveon":[6,0,0.0],"matej":[139,0,0.4286],"mateos":[11,0,0.0],"maycol":[238,0,0.4753],"mekail":[6,0,0.0],"milthon":[12,0,0.0],"minhquan":[16,0,0.0],"muaaz":[115,0,0.4121],"mubashir":[189,0,0.4553],"mueez":[11,0,0.0],"nasaiah":[25,0,0.0],"naun":[26,0,0.0],"nethan":[115,0,0.4121],"neyland":[531,7,0.5391],"nirvan":[445,0,0.5297],"omariyon":[18,0,0.0],"patriot":[36,0,0.0],"preetham":[6,0,0.0],"qualee":[16,0,0.0],"quamae":[12,0,0.0],"quayon":[16,0,0.0],"ritwik":[50,0,0.0],"romir":[294,0,0.4937],"saaid":[21,0,0.0],"sahel":[76,0,0.0],"samwise":[177,0,0.4496],"sanath":[26,0,0.0],"shailen":[75,5,0.0],"shakobe":[6,0,0.0],"shooter":[301,0,0.4957],"siris":[133,0,0.4248],"srijan":[163,0,0.4424],"suhaas":[103,0,0.4026],"suyash":[84,0,0.0],"symere":[283,0,0.4904],"taijay":[6,0,0.0],"tayvione":[6,0,0.0],"treqwan":[6,0,0.0],"tyi":[12,0,0.0],"tyr":[478,0,0.5359],"vieri":[6,0,0.0],"vihan":[533,0,0.5453],"xzayvion":[297,0,0.4946],"yishay":[21,0,0.0],"yugo":[45,0,0.0],"zamien":[22,0,0.0],"zheng":[11,0,0.0],"zolan":[100,0,0.4],"zyeir":[220,0,0.4685],"zyhir":[368,0,0.5132],"zytavious":[43,0,0.0],"aakarsh":[58,0,0.0],"aamarion":[10,0,0.0],"aayan":[2566,0,0.6819],"abbaas":[5,0,0.0],"abdihamid":[10,0,0.0],"abdrahman":[15,0,0.0],"abdulrehman":[60,0,0.0],"abdurrahmaan":[10,0,0.0],"abdurrehman":[36,0,0.0],"adael":[571,0,0.5513],"adiv":[51,0,0.0],"agastya":[1355,0,0.6264],"albieris":[5,0,0.0],"alhassane":[86,0,0.0],"alikhan":[61,0,0.0],"aliyas":[137,0,0.4273],"alvieri":[5,0,0.0],"alvontae":[5,0,0.0],"amareyon":[5,0,0.0],"amaryon":[12,0,0.0],"amaurys":[15,0,0.0],"ameil":[5,0,0.0],"amorion":[49,0,0.0],"amyas":[113,0,0.4106],"angeljesus":[41,0,0.0],"aniken":[126,0,0.4201],"aniki":[10,0,0.0],"ansony":[10,0,0.0],"anterrion":[15,0,0.0],"anthoine":[5,0,0.0],"aramys":[5,0,0.0],"ardi":[70,0,0.0],"arijit":[5,0,0.0],"armanti":[10,0,0.0],"asaun":[101,0,0.4009],"atreau":[5,0,0.0],"avanta":[12,0,0.0],"avichai":[10,0,0.0],"aviram":[36,0,0.0],"avnish":[21,0,0.0],"avrian":[75,0,0.0],"azavion":[190,0,0.4558],"bankston":[145,0,0.4323],"bastion":[282,0,0.49],"berke":[34,0,0.0],"blazen":[33,0,0.0],"boady":[15,0,0.0],"bowan":[111,0,0.4091],"brahian":[5,0,0.0],"bransyn":[357,0,0.5105],"breckan":[166,0,0.444],"brodan":[78,0,0.0],"bryshaun":[16,0,0.0],"cademon":[12,0,0.0],"caelob":[5,0,0.0],"calex":[21,0,0.0],"camareon":[23,0,0.0],"canyen":[5,0,0.0],"cavanaugh":[54,0,0.0],"caydan":[284,5,0.4837],"chaisson":[5,0,0.0],"chartez":[5,0,0.0],"chaydon":[5,0,0.0],"christianson":[5,0,0.0],"christopherjr":[5,0,0.0],"cion":[27,0,0.0],"colben":[53,0,0.0],"coleon":[5,0,0.0],"colgan":[15,0,0.0],"conlee":[105,102,0.235],"crichton":[18,0,0.0],"cyress":[44,0,0.0],"dacen":[91,0,0.0],"daijaun":[5,0,0.0],"dakai":[212,0,0.4653],"damariyon":[33,0,0.0],"damiun":[5,0,0.0],"danari":[48,45,0.0],"daquavius":[5,0,0.0],"darreion":[12,0,0.0],"darrione":[5,0,0.0],"datavian":[5,0,0.0],"davindra":[5,0,0.0],"dayvian":[100,0,0.4],"deagon":[43,0,0.0],"deeandre":[5,0,0.0],"delsen":[5,0,0.0],"demaury":[26,0,0.0],"demba":[75,0,0.0],"demontavious":[10,0,0.0],"demorion":[26,0,0.0],"derquan":[5,0,0.0],"devontavius":[5,0,0.0],"deyvi":[135,0,0.4261],"diontray":[5,0,0.0],"dominyc":[23,0,0.0],"donovann":[24,0,0.0],"donyai":[5,0,0.0],"drako":[348,0,0.5083],"drayk":[87,0,0.0],"drayvin":[57,0,0.0],"dregan":[27,0,0.0],"dreven":[22,0,0.0],"drevian":[5,0,0.0],"driss":[22,0,0.0],"edu":[72,0,0.0],"elai":[243,0,0.4771],"eliejah":[15,0,0.0],"eliyas":[417,0,0.524],"elvedin":[12,0,0.0],"enzio":[137,0,0.4273],"eshton":[10,0,0.0],"estavon":[5,0,0.0],"eyasu":[65,0,0.0],"fateh":[557,0,0.5492],"feliks":[97,0,0.0],"georgiy":[58,0,0.0],"gerardojr":[5,0,0.0],"graiden":[80,0,0.0],"gulian":[10,0,0.0],"haaheo":[21,0,0.0],"haidon":[52,0,0.0],"hamdan":[372,0,0.5141],"haseebullah":[5,0,0.0],"iancarlo":[32,0,0.0],"imarion":[44,0,0.0],"immer":[11,0,0.0],"isau":[15,0,0.0],"isay":[84,0,0.0],"ishaaq":[154,0,0.4375],"ishawn":[33,0,0.0],"ithan":[254,0,0.481],"jaaziah":[215,12,0.4463],"jabrion":[11,0,0.0],"jacarr":[5,0,0.0],"jaderius":[11,0,0.0],"jaevin":[132,0,0.4241],"jaheam":[10,0,0.0],"jaheen":[5,0,0.0],"jahidi":[5,0,0.0],"jahmaree":[5,0,0.0],"jahray":[5,0,0.0],"jahvonte":[5,0,0.0],"jaiheem":[5,0,0.0],"jakiem":[38,0,0.0],"jal":[17,0,0.0],"jalian":[10,0,0.0],"jamorian":[77,0,0.0],"jamyr":[11,0,0.0],"jaquantae":[5,0,0.0],"jaquwan":[10,0,0.0],"jarib":[15,0,0.0],"jarrek":[5,0,0.0],"jarus":[5,0,0.0],"jashod":[5,0,0.0],"jaterrion":[47,0,0.0],"javary":[10,0,0.0],"jaydenn":[374,48,0.4653],"jaydrien":[61,0,0.0],"jaymien":[66,0,0.0],"jazmany":[5,0,0.0],"jedi":[296,5,0.4875],"jenrry":[35,0,0.0],"jerion":[29,0,0.0],"jersain":[18,0,0.0],"jertavious":[5,0,0.0],"jevyn":[18,0,0.0],"jewlian":[21,0,0.0],"jmarion":[149,0,0.4346],"johnavin":[17,0,0.0],"joray":[5,0,0.0],"jordun":[5,0,0.0],"josephjames":[16,0,0.0],"jovahny":[5,0,0.0],"julianni":[5,52,0.0],"jyhiem":[5,0,0.0],"jywon":[5,0,0.0],"kaaden":[21,0,0.0],"kaamil":[101,0,0.4009],"kaegen":[35,0,0.0],"kahseem":[26,0,0.0],"kaiwen":[36,0,0.0],"kallon":[81,0,0.0],"kamahao":[59,0,0.0],"kamakana":[17,0,0.0],"kameon":[5,0,0.0],"kamiron":[18,0,0.0],"kanye":[1399,24,0.62],"kaplan":[68,0,0.0],"karamo":[11,0,0.0],"karar":[51,0,0.0],"kasir":[298,0,0.4948],"kayjuan":[5,0,0.0],"kearius":[5,0,0.0],"keason":[10,0,0.0],"keavion":[18,0,0.0],"keidren":[11,0,0.0],"keimar":[16,0,0.0],"kemaree":[16,0,0.0],"kemarion":[917,0,0.5925],"kemauri":[368,56,0.4561],"kendly":[5,0,0.0],"kensly":[5,223,0.4612],"kestin":[57,0,0.0],"keviyon":[11,0,0.0],"khael":[109,0,0.4075],"khamren":[56,0,0.0],"khol":[54,0,0.0],"khush":[142,0,0.4305],"kierron":[5,0,0.0],"kindric":[5,0,0.0],"kiwon":[5,0,0.0],"koedy":[5,0,0.0],"kros":[5,0,0.0],"krystof":[15,0,0.0],"kvion":[94,0,0.0],"kyhiem":[5,0,0.0],"kylik":[20,0,0.0],"kyseem":[41,0,0.0],"kyus":[87,0,0.0],"kywaun":[11,0,0.0],"lakeland":[112,5,0.396],"lathyn":[78,0,0.0],"laytin":[37,0,0.0],"leonaldo":[5,0,0.0],"loagan":[10,0,0.0],"luisarmando":[5,0,0.0],"lukman":[17,0,0.0],"lyam":[1879,0,0.6548],"macai":[236,0,0.4746],"macsen":[429,0,0.5265],"mael":[1155,0,0.6125],"mahde":[5,0,0.0],"malakie":[70,0,0.0],"malechi":[57,0,0.0],"martavian":[15,0,0.0],"marveon":[5,0,0.0],"matthewalexande":[11,0,0.0],"mavric":[243,0,0.4771],"maxwill":[5,0,0.0],"mckean":[5,0,0.0],"melchi":[16,0,0.0],"menphis":[10,0,0.0],"mileke":[5,0,0.0],"moneeb":[10,0,0.0],"montaye":[5,0,0.0],"mouad":[44,0,0.0],"muhib":[22,0,0.0],"mykai":[119,0,0.4151],"mysean":[21,0,0.0],"nabhan":[31,0,0.0],"nacari":[45,13,0.0],"nathean":[17,0,0.0],"navraj":[164,0,0.443],"nebeyu":[5,0,0.0],"neziah":[203,119,0.3162],"nicho":[10,0,0.0],"nitai":[60,0,0.0],"nore":[97,21,0.3406],"noriel":[326,10,0.4902],"nydir":[5,0,0.0],"nye":[17,5,0.0],"nymir":[367,0,0.5129],"oguz":[10,0,0.0],"oldair":[5,0,0.0],"olumuyiwa":[5,0,0.0],"oluwadamilare":[141,0,0.4298],"oluwademilade":[229,113,0.3394],"omarius":[84,0,0.0],"omary":[5,0,0.0],"omir":[254,0,0.481],"oryon":[122,0,0.4173],"osbourne":[53,0,0.0],"ottoniel":[22,0,0.0],"partha":[26,0,0.0],"qmari":[22,0,0.0],"quennell":[5,0,0.0],"quevin":[21,0,0.0],"quynton":[5,0,0.0],"raahim":[112,0,0.4098],"raife":[209,0,0.464],"ramsy":[5,0,0.0],"rayveon":[29,0,0.0],"refoel":[215,0,0.4665],"rehaan":[339,0,0.506],"reyce":[69,12,0.0],"rickson":[46,0,0.0],"rictavious":[5,0,0.0],"ridhwan":[52,0,0.0],"rilan":[227,20,0.4398],"roshaad":[5,0,0.0],"saamir":[85,0,0.0],"saiid":[10,0,0.0],"sanskar":[25,0,0.0],"sariel":[119,5,0.4018],"sathwik":[10,0,0.0],"saveyon":[5,0,0.0],"sebastean":[5,0,0.0],"serkan":[13,0,0.0],"shaeden":[16,0,0.0],"shalev":[127,0,0.4208],"shamarion":[284,5,0.4837],"shamier":[35,0,0.0],"shareem":[5,0,0.0],"siddh":[113,0,0.4106],"sidhanth":[40,0,0.0],"sioeli":[11,0,0.0],"sirchristopher":[5,0,0.0],"skyyler":[5,0,0.0],"sriman":[93,0,0.0],"strickland":[12,0,0.0],"sulaymaan":[10,0,0.0],"swayam":[56,0,0.0],"taaha":[15,0,0.0],"tacari":[187,34,0.3967],"taeden":[142,0,0.4305],"taiden":[676,0,0.566],"taimoor":[67,0,0.0],"tajmir":[21,0,0.0],"takhi":[32,0,0.0],"taviyon":[10,0,0.0],"taybor":[5,0,0.0],"taydan":[16,0,0.0],"tayshun":[74,0,0.0],"teoman":[108,0,0.4067],"tervell":[5,0,0.0],"tharun":[84,0,0.0],"theryn":[43,16,0.0],"torryn":[156,228,0.3069],"tovin":[10,0,0.0],"traeveon":[17,0,0.0],"travyon":[26,0,0.0],"tritan":[37,0,0.0],"tyber":[5,0,0.0],"tyjhon":[5,0,0.0],"tylane":[5,0,0.0],"tysaiah":[5,0,0.0],"uziah":[260,0,0.483],"vandan":[65,0,0.0],"venicio":[48,0,0.0],"wasi":[10,0,0.0],"whittaker":[308,0,0.4977],"wisler":[5,0,0.0],"xande":[5,0,0.0],"xaveon":[32,0,0.0],"yacouba":[11,0,0.0],"yasseen":[79,0,0.0],"yeudiel":[110,0,0.4083],"yosmar":[155,0,0.4381],"youcef":[91,0,0.0],"youness":[49,0,0.0],"yousof":[95,0,0.0],"zaakir":[42,0,0.0],"zaeden":[495,0,0.5389],"zaydan":[639,0,0.5611],"zayde":[457,43,0.4934],"zayvian":[518,0,0.5429],"zevion":[24,0,0.0],"zhaki":[11,0,0.0],"zyen":[139,0,0.4286],"zylan":[503,0,0.5403],"zyonn":[102,5,0.3869],"trenyce":[0,123,0.418],"ramiyah":[0,1061,0.6051],"talayeh":[0,89,0.0],"naydelyn":[0,59,0.0],"aaralyn":[0,1385,0.6283],"daveigh":[0,173,0.4476],"saribel":[0,22,0.0],"niobe":[0,190,0.4558],"dayrin":[0,210,0.4644],"camily":[0,43,0.0],"irulan":[0,45,0.0],"natajha":[0,29,0.0],"emberlynn":[0,2674,0.6854],"ameri":[42,271,0.4321],"nasiriyah":[0,15,0.0],"debany":[0,118,0.4144],"ethany":[0,19,0.0],"kamily":[0,20,0.0],"siddalee":[0,194,0.4576],"tanyiah":[0,130,0.4228],"aariyah":[0,822,0.583],"amyrie":[0,177,0.4496],"naydeli":[0,31,0.0],"kiyasha":[0,12,0.0],"malaijah":[0,116,0.4129],"maleeya":[0,327,0.5029],"nolee":[0,60,0.0],"sidda":[0,95,0.0],"solaris":[79,148,0.3072],"anayiah":[0,245,0.4778],"anihya":[0,89,0.0],"ariyanah":[0,238,0.4753],"ashariah":[0,11,0.0],"kaedence":[25,570,0.5316],"malayiah":[0,397,0.5198],"nayseth":[0,11,0.0],"ryla":[0,810,0.5817],"tranyce":[0,11,0.0],"alazaya":[0,10,0.0],"aleijah":[0,64,0.0],"alizaye":[0,15,0.0],"americas":[0,21,0.0],"anisten":[0,155,0.4381],"ashauria":[0,10,0.0],"azariya":[5,327,0.4966],"brynnley":[0,936,0.5943],"camilly":[0,31,0.0],"dairy":[0,51,0.0],"dyanara":[0,75,0.0],"eliany":[0,801,0.5807],"emmalynne":[0,270,0.4863],"insha":[0,92,0.0],"jernie":[0,119,0.4151],"kamilly":[0,32,0.0],"karyss":[0,73,0.0],"leniyah":[0,257,0.482],"livi":[0,717,0.5711],"maddelynn":[0,228,0.4716],"maryangel":[0,47,0.0],"meeya":[0,168,0.4451],"mikaia":[0,110,0.4083],"naideline":[0,10,0.0],"samaura":[0,29,0.0],"sya":[0,134,0.4254],"synai":[0,319,0.5008],"zanyia":[0,239,0.4757],"zeniya":[0,254,0.481],"adelie":[0,666,0.5647],"ahnaya":[0,16,0.0],"alianah":[0,283,0.4904],"anzley":[0,154,0.4375],"azenet":[0,33,0.0],"camili":[0,9,0.0],"canna":[0,68,0.0],"dalay":[0,43,0.0],"dayli":[0,95,0.0],"demyah":[0,140,0.4292],"emellie":[0,25,0.0],"endiah":[0,20,0.0],"giavona":[0,29,0.0],"graclyn":[0,271,0.4866],"jasandra":[0,9,0.0],"jozalynn":[0,70,0.0],"juliyah":[0,137,0.4273],"kamori":[203,503,0.4059],"ketzaly":[0,303,0.4963],"khushpreet":[0,14,0.0],"kushi":[0,137,0.4273],"lariya":[0,238,0.4753],"manaya":[0,26,0.0],"nandika":[0,91,0.0],"neeya":[0,95,0.0],"nejra":[0,30,0.0],"nevah":[0,265,0.4846],"niveah":[0,315,0.4997],"nyanza":[0,46,0.0],"ramyah":[0,184,0.453],"rehma":[0,42,0.0],"rocelyn":[0,37,0.0],"sacred":[39,129,0.3417],"zaia":[17,543,0.533],"aleanna":[0,187,0.4544],"aliceyn":[0,8,0.0],"amariea":[0,20,0.0],"amarye":[0,8,0.0],"amazing":[28,271,0.4488],"aniyiah":[0,65,0.0],"anshu":[10,138,0.4047],"antoniyah":[0,13,0.0],"asharie":[0,42,0.0],"avagrace":[0,548,0.5478],"avryl":[0,81,0.0],"azaya":[10,226,0.4545],"cerinity":[0,106,0.4051],"deajanae":[0,17,0.0],"denaija":[0,21,0.0],"dulaney":[0,24,0.0],"eldina":[0,24,0.0],"emijah":[0,13,0.0],"emmakate":[0,248,0.4789],"enija":[0,13,0.0],"gethsemani":[0,28,0.0],"grayci":[0,53,0.0],"haeun":[0,37,0.0],"hallel":[0,112,0.4098],"iniyah":[0,78,0.0],"iolana":[0,98,0.0],"jasiya":[8,220,0.455],"jhani":[0,26,0.0],"kadience":[0,301,0.4957],"kaedynce":[0,219,0.4681],"kaytin":[0,25,0.0],"kimorah":[0,407,0.5219],"kine":[0,8,0.0],"klarke":[0,60,0.0],"kordelia":[0,97,0.0],"kynslee":[0,2062,0.6629],"leisy":[0,8,0.0],"lexianna":[0,127,0.4208],"mairyn":[0,154,0.4375],"makiaya":[0,40,0.0],"markhia":[0,18,0.0],"maurianna":[0,79,0.0],"mulki":[0,76,0.0],"myazia":[0,18,0.0],"naely":[0,40,0.0],"neydelin":[0,26,0.0],"nigella":[0,42,0.0],"ohana":[0,461,0.5327],"omya":[0,78,0.0],"sanii":[0,244,0.4775],"sonaya":[0,54,0.0],"spiritual":[0,38,0.0],"sreeya":[0,32,0.0],"sundari":[0,31,0.0],"tanley":[0,41,0.0],"tenlee":[0,296,0.4943],"tylese":[0,8,0.0],"wanjiru":[0,8,0.0],"yoshira":[0,8,0.0],"ziyanna":[0,231,0.4727],"abbeygale":[0,22,0.0],"abiah":[14,109,0.3704],"adalin":[0,467,0.5339],"adaugo":[0,75,0.0],"adriah":[0,47,0.0],"ainara":[0,1418,0.6303],"aishi":[0,65,0.0],"ajaylah":[0,25,0.0],"alaylah":[0,364,0.5122],"aleshanee":[0,45,0.0],"amariyana":[0,101,0.4009],"amilliana":[0,316,0.4999],"annaliz":[0,180,0.4511],"aribah":[0,36,0.0],"arisai":[0,17,0.0],"arisdelsy":[0,7,0.0],"athyna":[0,116,0.4129],"avyana":[0,491,0.5382],"aylani":[0,1786,0.6504],"bellarose":[0,1057,0.6048],"bralie":[0,7,0.0],"brystol":[14,1298,0.6169],"camlyn":[0,23,0.0],"chanyia":[0,13,0.0],"cynae":[0,19,0.0],"dalayla":[0,245,0.4778],"danaejah":[0,32,0.0],"dashya":[0,12,0.0],"daynna":[0,12,0.0],"delaiah":[0,33,0.0],"delayla":[0,314,0.4994],"deslie":[0,7,0.0],"doniya":[0,13,0.0],"dyoni":[0,7,0.0],"emalynn":[0,820,0.5828],"emberlyn":[0,2026,0.6613],"emmaley":[0,35,0.0],"esbeydy":[0,13,0.0],"evenie":[0,33,0.0],"fadima":[0,24,0.0],"giulliana":[0,61,0.0],"goretti":[0,37,0.0],"hadessah":[0,176,0.4491],"hanaan":[0,135,0.4261],"iciss":[0,13,0.0],"iliza":[0,199,0.4598],"imaria":[0,26,0.0],"iyuna":[0,7,0.0],"jahmiyah":[0,63,0.0],"jarelyn":[0,84,0.0],"jeila":[0,58,0.0],"jeimi":[0,43,0.0],"jeraldy":[0,51,0.0],"jerney":[10,174,0.4283],"jiapsi":[0,7,0.0],"kalisi":[0,78,0.0],"kanaiya":[0,39,0.0],"kanira":[0,7,0.0],"karolena":[0,14,0.0],"kenlea":[0,97,0.0],"keyashia":[0,24,0.0],"khamani":[737,395,0.3976],"kinzley":[0,2668,0.6852],"kiralynn":[0,46,0.0],"klohe":[0,112,0.4098],"kymira":[0,56,0.0],"laiah":[0,334,0.5047],"lanaia":[0,36,0.0],"lanajah":[0,43,0.0],"laraina":[0,84,0.0],"leilanni":[0,488,0.5377],"liahna":[0,217,0.4673],"madesen":[0,12,0.0],"madhumita":[0,7,0.0],"makayleigh":[0,93,0.0],"maleeyah":[0,234,0.4738],"maylan":[0,37,0.0],"mayzee":[0,237,0.4749],"meirav":[0,21,0.0],"meyli":[0,94,0.0],"mikinzi":[0,13,0.0],"milie":[0,37,0.0],"mkya":[0,24,0.0],"naiara":[0,508,0.5412],"naizeth":[0,7,0.0],"nakaria":[0,12,0.0],"navaya":[0,370,0.5136],"naveya":[0,221,0.4689],"nevea":[0,83,0.0],"nikhia":[0,12,0.0],"noya":[0,320,0.501],"omani":[64,80,0.2398],"prinsesa":[0,7,0.0],"rhyli":[0,92,0.0],"saalihah":[0,7,0.0],"saila":[0,102,0.4017],"sakhia":[0,28,0.0],"sammara":[0,32,0.0],"samyiah":[0,281,0.4897],"semara":[0,17,0.0],"semaria":[0,12,0.0],"seniah":[0,78,0.0],"shamyria":[0,12,0.0],"shanila":[0,25,0.0],"shermya":[0,31,0.0],"shimaya":[0,7,0.0],"shylan":[5,29,0.0],"sinaya":[0,132,0.4241],"skky":[0,45,0.0],"skyi":[0,55,0.0],"solomiya":[0,167,0.4445],"soriyah":[0,221,0.4689],"sreenidhi":[0,93,0.0],"symara":[0,48,0.0],"takhiya":[0,12,0.0],"tariya":[0,192,0.4567],"tenleigh":[0,248,0.4789],"tenyia":[0,7,0.0],"thailee":[0,7,0.0],"tiniyah":[0,18,0.0],"torica":[0,7,0.0],"traniyah":[0,209,0.464],"tzivya":[0,17,0.0],"vedha":[0,271,0.4866],"viani":[0,23,0.0],"yahdira":[0,65,0.0],"yaniah":[0,96,0.0],"yaniya":[0,53,0.0],"yarieliz":[0,182,0.452],"zanai":[0,276,0.4882],"zeniyah":[0,438,0.5283],"zubaida":[0,38,0.0],"zuriah":[21,424,0.5047],"aahliyah":[0,24,0.0],"aakriti":[0,69,0.0],"aaliyahmarie":[0,44,0.0],"aayah":[0,81,0.0],"abyan":[129,43,0.3353],"adayla":[0,70,0.0],"adelai":[0,259,0.4827],"adila":[0,80,0.0],"adonya":[0,14,0.0],"aemilia":[0,183,0.4525],"aeriona":[0,47,0.0],"agostina":[0,23,0.0],"ahlaya":[0,241,0.4764],"airionna":[0,35,0.0],"alahni":[0,696,0.5685],"alectra":[0,20,0.0],"aleighia":[0,29,0.0],"aleny":[0,62,0.0],"alesya":[0,48,0.0],"alezay":[0,37,0.0],"alilia":[0,21,0.0],"allicen":[0,18,0.0],"amadis":[7,59,0.0],"amariee":[0,63,0.0],"amarrah":[0,171,0.4466],"amayha":[0,11,0.0],"amayiah":[0,258,0.4823],"ameara":[0,16,0.0],"ameyia":[0,6,0.0],"amiree":[22,141,0.3827],"ammarie":[0,79,0.0],"anajae":[0,6,0.0],"anajia":[0,19,0.0],"anastaja":[0,12,0.0],"angelynne":[0,26,0.0],"annaliyah":[0,317,0.5002],"anyelina":[0,146,0.4329],"anyha":[0,21,0.0],"anyshia":[0,11,0.0],"areena":[0,16,0.0],"aritzy":[0,67,0.0],"arryonna":[0,11,0.0],"arysa":[0,17,0.0],"ashantianna":[0,6,0.0],"aunalee":[0,46,0.0],"aunisty":[0,126,0.4201],"avarey":[0,151,0.4358],"aviah":[0,445,0.5297],"aydyn":[390,11,0.5063],"belize":[0,78,0.0],"bostyn":[285,698,0.425],"bronwynn":[0,37,0.0],"brooklee":[0,189,0.4553],"byonce":[0,6,0.0],"cadince":[0,111,0.4091],"caelia":[0,69,0.0],"caidynce":[0,69,0.0],"camyra":[0,123,0.418],"caralyne":[0,11,0.0],"catoria":[0,6,0.0],"celimar":[0,6,0.0],"cenya":[0,11,0.0],"chanyah":[0,33,0.0],"christeanna":[0,6,0.0],"cirenia":[0,6,0.0],"cylah":[0,80,0.0],"dairyn":[0,37,0.0],"daishanay":[0,6,0.0],"dalainee":[0,6,0.0],"daviya":[0,16,0.0],"dayahna":[0,6,0.0],"dayzee":[0,95,0.0],"dazzlyn":[0,28,0.0],"deenah":[0,22,0.0],"dekiya":[0,24,0.0],"denaly":[0,111,0.4091],"deriana":[0,85,0.0],"dhruti":[0,108,0.4067],"dilenny":[0,6,0.0],"djenabou":[0,35,0.0],"dmaya":[0,35,0.0],"dnajah":[0,6,0.0],"dreya":[0,362,0.5117],"elaena":[0,81,0.0],"elaisa":[0,6,0.0],"elanah":[0,104,0.4034],"emika":[0,129,0.4221],"emilianna":[0,201,0.4606],"enely":[0,6,0.0],"eryana":[0,45,0.0],"eryonna":[0,6,0.0],"evanny":[0,205,0.4624],"farwa":[0,29,0.0],"geraldy":[0,81,0.0],"ginaya":[0,6,0.0],"gracelynne":[0,412,0.523],"gracilyn":[0,117,0.4136],"gurnoor":[165,365,0.3752],"gwendylan":[0,31,0.0],"haani":[0,94,0.0],"haarika":[0,23,0.0],"habeba":[0,6,0.0],"hadlea":[0,93,0.0],"heran":[0,278,0.4888],"hermonie":[0,33,0.0],"hiley":[0,42,0.0],"ilaina":[0,49,0.0],"ilee":[0,157,0.4392],"issabela":[0,76,0.0],"jademarie":[0,28,0.0],"jaella":[0,90,0.0],"jakaiyah":[0,38,0.0],"jakylah":[0,202,0.4611],"jasicianna":[0,6,0.0],"jasmary":[0,6,0.0],"jasmir":[26,6,0.0],"javionna":[0,71,0.0],"jayauna":[0,29,0.0],"jeiry":[0,61,0.0],"jenaka":[0,6,0.0],"jewelissa":[0,30,0.0],"jhanya":[0,15,0.0],"jontasia":[0,19,0.0],"julieonna":[0,30,0.0],"justyse":[0,16,0.0],"kadidia":[0,62,0.0],"kaelana":[0,16,0.0],"kahlani":[7,1901,0.6537],"kahliah":[0,54,0.0],"kalyana":[0,39,0.0],"kaydince":[0,338,0.5058],"kaylanna":[0,44,0.0],"kedzie":[0,18,0.0],"keriah":[0,11,0.0],"khalise":[0,185,0.4534],"khaniyah":[0,95,0.0],"khyli":[0,122,0.4173],"kirthana":[0,6,0.0],"kniyah":[0,99,0.0],"kreindy":[0,31,0.0],"kruthi":[0,58,0.0],"kyriah":[0,55,0.0],"laelani":[0,271,0.4866],"lailanie":[0,133,0.4248],"lailany":[0,187,0.4544],"lamarea":[0,11,0.0],"lanavia":[0,6,0.0],"lasharia":[0,6,0.0],"layia":[0,69,0.0],"layli":[0,91,0.0],"leanny":[0,220,0.4685],"liliah":[0,211,0.4649],"lilygrace":[0,176,0.4491],"lilyonna":[0,217,0.4673],"lissbeth":[0,11,0.0],"lisveth":[0,6,0.0],"londin":[6,141,0.4158],"lyanah":[0,16,0.0],"maeley":[0,243,0.4771],"mahkenzie":[0,29,0.0],"mahlea":[0,21,0.0],"makaili":[0,11,0.0],"makasha":[0,6,0.0],"maleeah":[0,262,0.4837],"mariaclara":[0,313,0.4991],"marivella":[0,11,0.0],"massa":[0,175,0.4486],"maycey":[0,6,0.0],"mckalynn":[0,11,0.0],"meklit":[0,497,0.5393],"mialani":[0,248,0.4789],"miamarie":[0,77,0.0],"micayah":[0,43,0.0],"mikasia":[0,11,0.0],"minea":[0,6,0.0],"mireyah":[0,97,0.0],"mylani":[0,437,0.5281],"nadija":[0,34,0.0],"nali":[0,70,0.0],"natahja":[0,6,0.0],"nataliemarie":[0,6,0.0],"naviah":[0,320,0.501],"naviya":[0,69,0.0],"naylene":[0,112,0.4098],"neiya":[0,6,0.0],"nekiya":[0,18,0.0],"nessiah":[249,49,0.4135],"nevaya":[0,309,0.498],"nimrit":[0,129,0.4221],"nivedha":[0,39,0.0],"niviah":[0,25,0.0],"oliviarose":[0,203,0.4615],"oluwateniola":[6,90,0.0],"parnika":[0,328,0.5032],"priyanshi":[0,71,0.0],"prysilla":[0,6,0.0],"quetzally":[0,113,0.4106],"quinlynn":[0,287,0.4916],"raelie":[0,122,0.4173],"reilyn":[0,190,0.4558],"renya":[0,43,0.0],"rhayna":[0,14,0.0],"rialey":[0,11,0.0],"ryssa":[0,11,0.0],"samanthanicole":[0,23,0.0],"sanaah":[0,35,0.0],"sanaiyah":[0,116,0.4129],"sanye":[0,106,0.4051],"saqqara":[0,27,0.0],"saunti":[0,6,0.0],"saynab":[0,25,0.0],"serine":[0,110,0.4083],"sheilly":[0,17,0.0],"sheriyah":[0,22,0.0],"shyannah":[0,27,0.0],"simiya":[0,42,0.0],"siyona":[0,394,0.5191],"skyley":[0,101,0.4009],"solee":[0,6,0.0],"srinithi":[0,23,0.0],"syara":[0,46,0.0],"taimane":[0,181,0.4515],"takyrah":[0,28,0.0],"taliayah":[0,12,0.0],"tamijah":[0,18,0.0],"tamilore":[5,33,0.0],"taniha":[0,6,0.0],"taniyha":[0,44,0.0],"tarini":[0,141,0.4298],"tenyah":[0,6,0.0],"teriyana":[0,6,0.0],"thailia":[0,19,0.0],"thalina":[0,13,0.0],"tijanae":[0,6,0.0],"torrica":[0,6,0.0],"treniya":[0,71,0.0],"tvisha":[0,292,0.4931],"tyane":[0,6,0.0],"tyaunna":[0,12,0.0],"tymirah":[0,11,0.0],"tynaya":[0,6,0.0],"tyniyah":[0,11,0.0],"tzurty":[0,31,0.0],"valeriya":[0,45,0.0],"valiyah":[0,62,0.0],"vidushi":[0,44,0.0],"vinecia":[0,6,0.0],"wriley":[17,39,0.0],"yahire":[0,6,0.0],"yamna":[0,68,0.0],"yarisbeth":[0,53,0.0],"yasly":[0,6,0.0],"yutzil":[0,6,0.0],"zahnya":[0,20,0.0],"zanay":[0,47,0.0],"zeyla":[0,64,0.0],"zniyah":[0,226,0.4708],"znya":[0,70,0.0],"zooey":[0,1099,0.6082],"zoriana":[0,150,0.4352],"zyashia":[0,6,0.0],"aadya":[0,1944,0.6577],"aalayna":[0,40,0.0],"aanijah":[0,5,0.0],"aaryona":[0,10,0.0],"abbrianna":[0,5,0.0],"abreonna":[0,15,0.0],"adalay":[0,208,0.4636],"adalaya":[0,197,0.4589],"adaleigh":[0,1711,0.6467],"adanely":[0,112,0.4098],"adasyn":[0,189,0.4553],"addilynn":[0,4385,0.7284],"addriana":[0,5,0.0],"adeliz":[0,115,0.4121],"adji":[0,5,0.0],"adleigh":[0,1358,0.6266],"adlih":[0,30,0.0],"aerith":[0,687,0.5674],"afifah":[0,15,0.0],"aichatou":[0,28,0.0],"ailia":[0,85,0.0],"ainhoa":[0,2213,0.669],"ajeya":[0,15,0.0],"akaia":[0,54,0.0],"akailah":[0,31,0.0],"akaja":[0,5,0.0],"alacyia":[0,5,0.0],"alailah":[0,126,0.4201],"alaizah":[0,32,0.0],"alathea":[0,59,0.0],"albiona":[0,10,0.0],"aleidy":[0,28,0.0],"alexiyah":[0,37,0.0],"alila":[0,132,0.4241],"aliziah":[0,5,0.0],"allexys":[0,10,0.0],"alveena":[0,111,0.4091],"alyla":[0,235,0.4742],"ameah":[0,148,0.4341],"ameli":[0,232,0.4731],"amerissa":[0,5,0.0],"amija":[0,29,0.0],"amitha":[0,10,0.0],"amone":[0,5,0.0],"amonni":[0,19,0.0],"amrie":[0,156,0.4386],"amyree":[0,39,0.0],"anacely":[0,5,0.0],"analei":[0,138,0.428],"anandita":[0,5,0.0],"anastajia":[0,5,0.0],"anavi":[0,196,0.4585],"anayha":[0,16,0.0],"andjela":[0,64,0.0],"anele":[0,54,0.0],"angellyn":[0,17,0.0],"annaclara":[0,61,0.0],"annasofia":[0,165,0.4435],"anusri":[0,5,0.0],"anyanka":[0,16,0.0],"anyely":[0,103,0.4026],"aonna":[0,10,0.0],"aquilina":[0,5,0.0],"aralynn":[0,814,0.5821],"aranzazu":[0,17,0.0],"arieliz":[0,85,0.0],"arieyanna":[0,45,0.0],"arilynn":[0,267,0.4853],"arpa":[0,5,0.0],"arreonna":[0,11,0.0],"aryauna":[0,32,0.0],"aryian":[46,40,0.0],"aselin":[0,5,0.0],"ashaiya":[0,10,0.0],"ashalyn":[0,10,0.0],"ashrita":[0,71,0.0],"ashuna":[0,5,0.0],"ashyria":[0,5,0.0],"atleigh":[0,305,0.4969],"audreyann":[0,14,0.0],"audrielle":[0,295,0.494],"autume":[0,11,0.0],"avrill":[0,5,0.0],"ayia":[0,21,0.0],"aylenne":[0,5,0.0],"aynia":[0,11,0.0],"aysel":[0,611,0.5572],"azaira":[0,87,0.0],"azaliyah":[0,143,0.4311],"azanae":[0,5,0.0],"azarya":[46,133,0.3348],"azharia":[0,75,0.0],"azuzena":[0,5,0.0],"bellah":[0,493,0.5386],"beza":[0,134,0.4254],"bithiah":[0,82,0.0],"brenaya":[0,5,0.0],"breniyah":[0,124,0.4187],"breyell":[0,5,0.0],"brightyn":[0,215,0.4665],"briseidy":[0,116,0.4129],"britza":[0,16,0.0],"brycelynn":[0,117,0.4136],"brylynn":[5,503,0.5358],"buse":[0,15,0.0],"butterfly":[0,10,0.0],"cadience":[0,80,0.0],"caidance":[0,195,0.458],"caite":[0,10,0.0],"camely":[0,5,0.0],"campbelle":[0,21,0.0],"catalin":[0,10,0.0],"catori":[0,332,0.5042],"ceyara":[0,5,0.0],"chailee":[0,16,0.0],"chailynn":[0,5,0.0],"chanelly":[0,5,0.0],"chetana":[0,23,0.0],"chiarra":[0,5,0.0],"chinmayi":[0,90,0.0],"chizaram":[11,386,0.5054],"chloeanne":[0,66,0.0],"chloi":[0,44,0.0],"chyana":[0,10,0.0],"chylynn":[0,5,0.0],"ciniyah":[0,48,0.0],"cyerah":[0,5,0.0],"dairin":[0,46,0.0],"damayanti":[0,14,0.0],"danaiya":[0,61,0.0],"danaria":[0,76,0.0],"danayjah":[0,5,0.0],"danery":[5,5,0.0],"daniana":[0,5,0.0],"danieliz":[0,30,0.0],"danyra":[0,11,0.0],"dascha":[0,5,0.0],"dayanah":[0,23,0.0],"daziyah":[0,264,0.4843],"debanhy":[0,44,0.0],"dekotah":[0,10,0.0],"delanny":[0,66,0.0],"demetrianna":[0,5,0.0],"denajia":[0,10,0.0],"denayah":[0,26,0.0],"deniella":[0,5,0.0],"deonie":[0,5,0.0],"derianna":[0,51,0.0],"devoni":[0,5,0.0],"deyanara":[0,34,0.0],"dezmariah":[0,52,0.0],"dianelis":[0,44,0.0],"dnyah":[0,20,0.0],"doniyah":[0,16,0.0],"drishti":[0,90,0.0],"ellarae":[0,272,0.4869],"ellarose":[0,853,0.5862],"ellesha":[0,5,0.0],"ellianne":[0,153,0.4369],"elliet":[0,173,0.4476],"ellsie":[0,255,0.4813],"emanni":[0,15,0.0],"emmalyse":[0,29,0.0],"emman":[0,10,0.0],"emmye":[0,5,0.0],"emnet":[0,155,0.4381],"emrey":[34,261,0.437],"enyia":[0,25,0.0],"erien":[0,5,0.0],"evannie":[0,87,0.0],"eya":[0,11,0.0],"eymi":[0,340,0.5063],"ezgi":[0,30,0.0],"faithful":[0,71,0.0],"faithmarie":[0,50,0.0],"fenna":[0,121,0.4166],"fiora":[0,279,0.4891],"firdaus":[0,59,0.0],"frenesi":[0,13,0.0],"ganiyah":[0,56,0.0],"gasia":[0,5,0.0],"genesiss":[0,31,0.0],"geniah":[0,55,0.0],"gevalia":[0,5,0.0],"gleny":[0,5,0.0],"gopika":[0,5,0.0],"greenleigh":[0,194,0.4576],"haevyn":[5,366,0.5069],"hailiey":[0,5,0.0],"hailye":[0,11,0.0],"hallei":[0,15,0.0],"hannya":[0,33,0.0],"harmone":[0,64,0.0],"haylyn":[0,137,0.4273],"helaena":[0,46,0.0],"ija":[0,21,0.0],"imajen":[0,5,0.0],"ivionna":[0,74,0.0],"iyaunna":[0,5,0.0],"iysiss":[0,5,0.0],"jaanvi":[0,269,0.486],"jackelinne":[0,22,0.0],"jadeth":[0,5,0.0],"jadziah":[0,5,0.0],"jahia":[0,22,0.0],"jahkira":[0,13,0.0],"jaislyn":[0,90,0.0],"jaiyda":[0,37,0.0],"jakerah":[0,10,0.0],"jakeyah":[0,10,0.0],"jalaila":[0,97,0.0],"jaleria":[0,12,0.0],"jalexa":[0,92,0.0],"jamariana":[0,34,0.0],"jamariyah":[0,88,0.0],"jamayia":[0,69,0.0],"janellys":[0,28,0.0],"janeyah":[0,54,0.0],"janyria":[0,32,0.0],"jasella":[0,10,0.0],"jasnoor":[20,158,0.3995],"jathziry":[0,17,0.0],"jaylinne":[0,66,0.0],"jazanae":[0,10,0.0],"jazariah":[0,441,0.5289],"jazelynn":[0,44,0.0],"jeiri":[0,5,0.0],"jenavi":[0,86,0.0],"jenayah":[0,133,0.4248],"jennelyn":[0,15,0.0],"jenyah":[0,29,0.0],"jermira":[0,5,0.0],"jerniyah":[0,52,0.0],"jeweliet":[0,10,0.0],"jewliana":[0,15,0.0],"jeyline":[0,17,0.0],"jiali":[0,79,0.0],"jilliyn":[0,33,0.0],"jimiyah":[0,10,0.0],"jiniyah":[0,5,0.0],"jocylin":[0,17,0.0],"johnaya":[0,18,0.0],"joliana":[0,98,0.0],"josielyn":[0,17,0.0],"josilyne":[0,5,0.0],"journe":[0,171,0.4466],"jozilyn":[0,20,0.0],"juliannie":[0,64,0.0],"jynia":[0,21,0.0],"kadaysia":[0,5,0.0],"kadynn":[13,64,0.0],"kalany":[0,126,0.4201],"kaleeyah":[0,132,0.4241],"kalyia":[0,15,0.0],"kamarria":[0,55,0.0],"kamelya":[0,5,0.0],"kampbell":[62,80,0.2425],"kanajah":[0,10,0.0],"kaory":[0,35,0.0],"karinah":[0,22,0.0],"kasani":[35,87,0.2976],"kashvi":[0,548,0.5478],"kashyia":[0,17,0.0],"katija":[0,5,0.0],"keiaja":[0,5,0.0],"keile":[0,10,0.0],"keilynn":[0,123,0.418],"kekeli":[10,43,0.0],"kelea":[0,21,0.0],"kemry":[0,5,0.0],"kenaja":[0,5,0.0],"kenasha":[0,5,0.0],"keyala":[0,33,0.0],"keymya":[0,46,0.0],"khatia":[0,5,0.0],"khiyah":[0,57,0.0],"kiayanna":[0,5,0.0],"kidist":[0,16,0.0],"kimiah":[0,95,0.0],"kimmya":[0,28,0.0],"kimone":[0,5,0.0],"kinberlin":[0,18,0.0],"kinverli":[0,5,0.0],"kloi":[0,71,0.0],"krishara":[0,5,0.0],"krishona":[0,5,0.0],"kylani":[0,585,0.5534],"kyliana":[0,214,0.4661],"kynlea":[0,123,0.418],"kynslie":[0,394,0.5191],"laidy":[0,5,0.0],"laika":[0,15,0.0],"lailie":[0,70,0.0],"lailonie":[0,48,0.0],"laiyah":[0,728,0.5724],"laliah":[0,22,0.0],"lameria":[0,15,0.0],"lamoria":[0,5,0.0],"laniaya":[0,43,0.0],"lanyiah":[0,193,0.4571],"laylanie":[0,383,0.5166],"laylonie":[0,149,0.4346],"lazaya":[0,27,0.0],"lexe":[0,5,0.0],"lexly":[0,15,0.0],"lillyona":[0,159,0.4403],"livvy":[0,599,0.5555],"loany":[0,125,0.4194],"lucija":[0,38,0.0],"lujayn":[0,64,0.0],"lyddia":[0,5,0.0],"madalinn":[0,10,0.0],"madelayne":[0,11,0.0],"maeleah":[0,11,0.0],"mailene":[0,10,0.0],"mailia":[0,11,0.0],"maithili":[0,28,0.0],"makynzi":[0,246,0.4782],"malliyah":[0,17,0.0],"marai":[0,83,0.0],"mareme":[0,5,0.0],"mariacamila":[0,23,0.0],"mariauna":[0,27,0.0],"matelynn":[0,5,0.0],"mayar":[38,882,0.5683],"maylasia":[0,31,0.0],"mayrim":[0,57,0.0],"maysea":[0,5,0.0],"medelyn":[0,20,0.0],"mehakpreet":[0,15,0.0],"melaya":[0,150,0.4352],"mennah":[0,16,0.0],"merielle":[0,16,0.0],"meriyah":[0,51,0.0],"merryn":[0,299,0.4951],"metzly":[0,43,0.0],"micahia":[0,5,0.0],"michaylah":[0,5,0.0],"mickenzi":[0,5,0.0],"mihaela":[0,92,0.0],"mikayleigh":[0,5,0.0],"mikenya":[0,5,0.0],"mikenzy":[0,38,0.0],"milany":[0,245,0.4778],"miliana":[0,1000,0.6],"millana":[0,20,0.0],"minela":[0,61,0.0],"minely":[0,5,0.0],"mirari":[0,55,0.0],"miray":[0,187,0.4544],"mireyda":[0,24,0.0],"mitzel":[0,24,0.0],"modupeoluwa":[0,5,0.0],"moyinoluwa":[0,118,0.4144],"muntaha":[0,419,0.5244],"myani":[0,121,0.4166],"mykiya":[0,10,0.0],"naiyana":[0,129,0.4221],"naiyanna":[0,5,0.0],"nakaiyah":[0,28,0.0],"nakhya":[0,18,0.0],"nalissa":[0,15,0.0],"nalla":[0,122,0.4173],"namia":[0,64,0.0],"nandhini":[0,26,0.0],"nasaya":[0,16,0.0],"natailia":[0,5,0.0],"nataliyah":[0,162,0.4419],"naudya":[0,12,0.0],"navayah":[0,316,0.4999],"naviana":[0,42,0.0],"nayari":[0,103,0.4026],"neave":[0,174,0.4481],"nefeli":[0,118,0.4144],"neidelin":[0,5,0.0],"nev":[0,30,0.0],"nijiah":[0,5,0.0],"nitalia":[0,15,0.0],"niurca":[0,5,0.0],"nivetha":[0,5,0.0],"niyel":[5,5,0.0],"nolawit":[0,61,0.0],"noon":[0,27,0.0],"nuran":[0,18,0.0],"nyobi":[0,31,0.0],"nyshay":[0,5,0.0],"nyzeth":[0,5,0.0],"oluwanifemi":[156,236,0.3123],"oluwatamilore":[79,218,0.363],"omariana":[0,21,0.0],"oniyah":[0,85,0.0],"oshyn":[17,69,0.0],"osiana":[0,5,0.0],"paeten":[0,5,0.0],"paitlyn":[0,73,0.0],"poorna":[0,10,0.0],"prabhleen":[0,75,0.0],"pranati":[0,60,0.0],"preksha":[0,42,0.0],"qing":[0,5,0.0],"racey":[0,5,0.0],"raeona":[0,5,0.0],"ragad":[0,24,0.0],"raiyana":[0,5,0.0],"rakaya":[0,16,0.0],"ralee":[0,18,0.0],"ramyiah":[0,59,0.0],"ranyiah":[0,44,0.0],"rashiya":[0,85,0.0],"reasia":[0,10,0.0],"reighlyn":[0,220,0.4685],"remmi":[34,474,0.505],"rhyley":[18,62,0.0],"richana":[0,5,0.0],"riham":[0,132,0.4241],"rmoni":[23,117,0.3587],"rosse":[0,89,0.0],"rubiana":[0,43,0.0],"ruhani":[0,232,0.4731],"rukia":[0,202,0.4611],"rumina":[0,22,0.0],"ruya":[0,88,0.0],"rylann":[82,447,0.4603],"rylinn":[5,533,0.5411],"saaya":[0,117,0.4136],"sabriyyah":[0,5,0.0],"saddiya":[0,5,0.0],"sadieann":[0,48,0.0],"saelah":[0,91,0.0],"sahaana":[0,127,0.4208],"sahmya":[0,65,0.0],"sahniya":[0,38,0.0],"sakya":[0,15,0.0],"samariya":[0,111,0.4091],"samarria":[0,54,0.0],"samore":[0,5,0.0],"samyrah":[0,263,0.484],"samyukta":[0,119,0.4151],"sanaiah":[0,54,0.0],"saniaa":[0,43,0.0],"sanjita":[0,19,0.0],"sanvi":[0,1452,0.6324],"sbeidy":[0,5,0.0],"seja":[0,5,0.0],"senaya":[0,68,0.0],"seniyah":[0,210,0.4644],"seoyoon":[0,5,0.0],"seriya":[0,39,0.0],"shachi":[0,5,0.0],"shaelea":[0,5,0.0],"shaiel":[0,58,0.0],"shakyiah":[0,5,0.0],"shamaia":[0,5,0.0],"shamariona":[0,12,0.0],"shawnti":[0,11,0.0],"sheilyn":[0,124,0.4187],"shelyn":[0,11,0.0],"shenya":[0,5,0.0],"shenyah":[0,5,0.0],"shillae":[0,5,0.0],"shiniah":[0,5,0.0],"shionna":[0,11,0.0],"shyleigh":[0,90,0.0],"siennah":[0,118,0.4144],"sirinity":[0,70,0.0],"soniyah":[0,112,0.4098],"sophiah":[0,222,0.4693],"srushti":[0,26,0.0],"sude":[0,45,0.0],"suhanee":[0,5,0.0],"sulekha":[0,11,0.0],"sumia":[0,5,0.0],"suparna":[0,5,0.0],"sureya":[0,64,0.0],"susej":[0,49,0.0],"symaria":[0,40,0.0],"symya":[0,40,0.0],"tacori":[36,64,0.256],"takaila":[0,10,0.0],"talayja":[0,10,0.0],"tamajah":[0,5,0.0],"tamyrah":[0,62,0.0],"taneiya":[0,5,0.0],"taniayah":[0,5,0.0],"tanyjah":[0,26,0.0],"tanylah":[0,163,0.4424],"tashyia":[0,30,0.0],"tejaswini":[0,10,0.0],"tenayah":[0,5,0.0],"teonni":[0,5,0.0],"terriyana":[0,15,0.0],"terryanna":[0,5,0.0],"thaleia":[0,81,0.0],"thayna":[0,10,0.0],"tianny":[0,5,0.0],"tikiyah":[0,5,0.0],"tinlee":[0,441,0.5289],"tkya":[0,11,0.0],"tomiah":[0,5,0.0],"trenya":[0,15,0.0],"trevi":[0,33,0.0],"trinidie":[0,5,0.0],"trishamae":[0,5,0.0],"trishawna":[0,5,0.0],"tyiona":[0,33,0.0],"tykirah":[0,5,0.0],"tylaya":[0,49,0.0],"ulyssia":[0,5,0.0],"uriana":[0,23,0.0],"urmila":[0,5,0.0],"vanja":[0,5,0.0],"variah":[0,20,0.0],"viririana":[0,10,0.0],"yailen":[0,79,0.0],"yakirah":[0,5,0.0],"yakyra":[0,5,0.0],"yalexa":[0,149,0.4346],"yamelin":[0,17,0.0],"yanara":[0,63,0.0],"yaresly":[0,67,0.0],"yarielys":[0,139,0.4286],"yasaira":[0,45,0.0],"yasari":[0,20,0.0],"yashvi":[0,494,0.5387],"yasley":[0,5,0.0],"yazmene":[0,5,0.0],"yeleina":[0,15,0.0],"yewon":[0,5,0.0],"yulitzy":[0,5,0.0],"zaley":[0,204,0.4619],"zamariya":[0,94,0.0],"zameria":[0,84,0.0],"zamyra":[0,296,0.4943],"zeyda":[0,55,0.0],"zowee":[0,5,0.0],"zulimar":[0,11,0.0],"zuszeth":[0,5,0.0],"zyiah":[0,251,0.4799],"zykeriya":[0,5,0.0],"zykirah":[0,32,0.0],"pharrell":[449,0,0.5304],"jayvyn":[653,0,0.563],"myzel":[83,0,0.0],"johnavon":[103,0,0.4026],"ryken":[694,5,0.5648],"faaris":[83,0,0.0],"aadi":[1126,16,0.603],"aadit":[479,0,0.5361],"jeyden":[786,0,0.5791],"maddex":[1709,40,0.6337],"amareion":[12,0,0.0],"arush":[532,0,0.5452],"jamarrie":[37,0,0.0],"juandavid":[216,0,0.4669],"aayden":[1701,5,0.6445],"andin":[53,5,0.0],"isaid":[146,0,0.4329],"jaqai":[21,0,0.0],"jdyn":[122,0,0.4173],"mathayus":[267,0,0.4853],"reichen":[72,0,0.0],"samarion":[339,0,0.506],"advik":[1417,0,0.6303],"amerion":[46,0,0.0],"aricin":[48,0,0.0],"azmir":[48,0,0.0],"dublin":[334,128,0.3853],"duce":[10,0,0.0],"jakobey":[37,0,0.0],"jamaurion":[85,0,0.0],"jamorion":[98,0,0.0],"joden":[109,0,0.4075],"jurrien":[20,0,0.0],"kunga":[96,21,0.3394],"rikhil":[35,0,0.0],"adien":[487,0,0.5375],"aidden":[340,0,0.5063],"bronx":[2198,134,0.6348],"caydn":[80,0,0.0],"dayyan":[113,0,0.4106],"deuce":[230,0,0.4723],"diezel":[345,0,0.5076],"draiden":[285,0,0.491],"dreshan":[9,0,0.0],"eisa":[318,133,0.3743],"jabahri":[9,0,0.0],"lamareon":[48,0,0.0],"matyas":[185,0,0.4534],"montavion":[37,0,0.0],"radek":[177,0,0.4496],"ronde":[14,0,0.0],"saatvik":[271,0,0.4866],"sanat":[55,0,0.0],"sayf":[140,0,0.4292],"taysen":[259,0,0.4827],"vibhav":[228,0,0.4716],"yhair":[50,0,0.0],"zyheim":[25,0,0.0],"aadyn":[595,16,0.5426],"aarnav":[561,0,0.5498],"adyan":[552,0,0.5484],"amarien":[103,0,0.4026],"aniruddh":[66,0,0.0],"baboucarr":[38,0,0.0],"braxtan":[32,0,0.0],"conlon":[13,0,0.0],"dael":[503,5,0.5358],"dahir":[176,0,0.4491],"demarri":[97,0,0.0],"demarrie":[8,0,0.0],"demaurion":[80,0,0.0],"esaiah":[149,0,0.4346],"ethanael":[96,0,0.0],"garyson":[66,0,0.0],"jabrian":[23,0,0.0],"jacarie":[70,0,0.0],"jadavion":[72,0,0.0],"jaiheim":[8,0,0.0],"jakylan":[119,0,0.4151],"javione":[65,0,0.0],"javy":[102,0,0.4017],"jontavion":[19,0,0.0],"kaiba":[65,0,0.0],"keedan":[66,0,0.0],"keegin":[33,0,0.0],"lesane":[13,0,0.0],"life":[56,22,0.0],"linkoln":[590,0,0.5542],"naod":[323,0,0.5018],"raines":[20,0,0.0],"raymir":[150,0,0.4352],"shahmeer":[131,0,0.4235],"tarian":[26,0,0.0],"tazio":[19,0,0.0],"torrien":[43,0,0.0],"treydan":[25,0,0.0],"yojan":[94,0,0.0],"zaidan":[449,0,0.5304],"zandyr":[112,0,0.4098],"abdulqadir":[64,0,0.0],"acelino":[7,0,0.0],"aidenn":[194,0,0.4576],"aiyden":[974,0,0.5977],"alessander":[98,0,0.0],"amarieon":[12,0,0.0],"andyn":[131,0,0.4235],"arkin":[193,0,0.4571],"aydn":[182,0,0.452],"azuriah":[86,10,0.0],"balint":[7,0,0.0],"bersain":[7,0,0.0],"bictor":[7,0,0.0],"blaiz":[45,0,0.0],"branan":[7,0,0.0],"brason":[149,0,0.4346],"brydan":[164,0,0.443],"carvon":[7,0,0.0],"cashel":[462,0,0.5329],"chamber":[12,0,0.0],"covin":[63,0,0.0],"dakarie":[39,0,0.0],"damarien":[122,0,0.4173],"demarre":[33,0,0.0],"donivin":[77,0,0.0],"dzenan":[19,0,0.0],"eidan":[710,0,0.5703],"errion":[22,0,0.0],"fyodor":[97,0,0.0],"hammed":[7,0,0.0],"harryson":[24,0,0.0],"hedgar":[7,0,0.0],"irwing":[12,0,0.0],"ivaan":[1377,0,0.6278],"jahnathan":[7,0,0.0],"jaikob":[78,0,0.0],"jaydis":[158,19,0.4013],"jazir":[270,0,0.4863],"jron":[19,0,0.0],"kaelem":[123,0,0.418],"kasyn":[1322,245,0.5391],"keyvonte":[13,0,0.0],"khanye":[34,0,0.0],"khayden":[541,23,0.5278],"ladamion":[42,0,0.0],"ladanian":[96,0,0.0],"lamarian":[58,0,0.0],"legolas":[18,0,0.0],"linken":[457,0,0.532],"luqmaan":[62,0,0.0],"malacai":[164,0,0.443],"marat":[43,0,0.0],"matvey":[304,0,0.4966],"neithan":[535,0,0.5457],"nicolae":[173,0,0.4476],"ramier":[91,0,0.0],"ruari":[117,133,0.2551],"shymir":[80,0,0.0],"sravan":[7,0,0.0],"sushant":[56,0,0.0],"tanush":[480,0,0.5362],"tomo":[12,0,0.0],"tyquavion":[46,0,0.0],"vicktor":[32,0,0.0],"vishesh":[12,0,0.0],"wani":[7,0,0.0],"yohann":[269,0,0.486],"zamarian":[103,0,0.4026],"zashawn":[39,0,0.0],"zaveion":[54,0,0.0],"zayvier":[381,0,0.5162],"abiud":[6,0,0.0],"ahlijah":[73,0,0.0],"ailton":[62,0,0.0],"alarik":[294,0,0.4937],"albaraa":[112,0,0.4098],"alexzavier":[68,0,0.0],"anajee":[6,0,0.0],"andriy":[223,0,0.4697],"anghel":[6,0,0.0],"anterrius":[6,0,0.0],"arhan":[344,0,0.5073],"arzjon":[13,0,0.0],"ashrith":[256,0,0.4816],"asir":[370,0,0.5136],"boen":[116,0,0.4129],"bojan":[25,0,0.0],"braysen":[610,0,0.5571],"bridges":[63,0,0.0],"brishawn":[11,0,0.0],"caetano":[137,0,0.4273],"camonte":[6,0,0.0],"camreon":[17,0,0.0],"cashius":[412,0,0.523],"chosen":[1703,445,0.5283],"cinch":[184,0,0.453],"cyprus":[250,21,0.4489],"deighton":[31,0,0.0],"deitric":[13,0,0.0],"demyan":[90,0,0.0],"dhanush":[133,0,0.4248],"dimani":[16,0,0.0],"dimitar":[40,0,0.0],"dimitriy":[77,0,0.0],"dmontae":[33,0,0.0],"domnik":[19,0,0.0],"dyllyn":[6,0,0.0],"dysen":[102,0,0.4017],"eesa":[826,0,0.5834],"eimaj":[6,0,0.0],"ethanalexander":[30,0,0.0],"ethanmichael":[37,0,0.0],"findlay":[279,38,0.4402],"gleb":[162,0,0.4419],"grayton":[189,0,0.4553],"haithem":[16,0,0.0],"hanoch":[6,0,0.0],"hartej":[17,0,0.0],"hawkin":[88,0,0.0],"hayze":[506,11,0.5312],"hudsen":[541,22,0.5286],"iziaha":[24,0,0.0],"jaali":[17,0,0.0],"jacare":[6,0,0.0],"jaeveon":[108,0,0.4067],"jaevian":[101,0,0.4009],"jahsan":[27,0,0.0],"jahsim":[17,0,0.0],"jahvier":[147,0,0.4335],"jaimere":[97,0,0.0],"jalob":[6,0,0.0],"jamarreon":[23,0,0.0],"jamaurie":[76,0,0.0],"javieon":[28,0,0.0],"javyon":[85,0,0.0],"jayzen":[262,0,0.4837],"jeiden":[181,0,0.4515],"jekobe":[12,0,0.0],"jenrri":[11,0,0.0],"jerison":[32,0,0.0],"jesston":[11,0,0.0],"jewlius":[6,0,0.0],"jhonen":[58,0,0.0],"jhonnatan":[11,0,0.0],"jihoon":[13,0,0.0],"jivon":[12,0,0.0],"joandy":[93,0,0.0],"justic":[6,0,0.0],"jyson":[51,0,0.0],"kadien":[190,0,0.4558],"kaelyb":[6,0,0.0],"kaiea":[65,5,0.0],"kairen":[170,0,0.4461],"kaishaun":[6,0,0.0],"kalell":[17,0,0.0],"kanalu":[6,0,0.0],"karver":[425,13,0.5126],"kashyap":[55,0,0.0],"keben":[13,0,0.0],"kenseth":[16,0,0.0],"keyten":[11,0,0.0],"koalton":[6,0,0.0],"korian":[23,0,0.0],"kouta":[27,0,0.0],"kylematthew":[11,0,0.0],"lamarrion":[32,0,0.0],"laythan":[250,0,0.4796],"loegan":[12,0,0.0],"maddax":[554,13,0.5381],"madix":[470,6,0.5288],"marchelo":[6,0,0.0],"meldin":[6,0,0.0],"micai":[121,0,0.4166],"mihailo":[119,0,0.4151],"mithil":[24,0,0.0],"modou":[70,0,0.0],"moishy":[198,0,0.4593],"muhamadou":[6,0,0.0],"naisaiah":[6,0,0.0],"nakoda":[80,0,0.0],"nashan":[6,0,0.0],"nashir":[11,0,0.0],"nevon":[63,0,0.0],"nycere":[107,0,0.4059],"nyel":[107,32,0.3299],"omario":[74,0,0.0],"ondrej":[14,0,0.0],"qasem":[53,0,0.0],"quali":[6,0,0.0],"quaseem":[6,0,0.0],"raisean":[6,0,0.0],"rakib":[6,0,0.0],"ramari":[171,5,0.4363],"raulin":[37,0,0.0],"raydin":[146,0,0.4329],"ryelan":[113,5,0.3968],"sabastin":[6,0,0.0],"sabeeh":[6,0,0.0],"sael":[267,0,0.4853],"safwaan":[64,0,0.0],"samajay":[23,0,0.0],"samauri":[46,69,0.2473],"sanjith":[129,0,0.4221],"sein":[6,0,0.0],"seraj":[82,0,0.0],"shreyes":[17,0,0.0],"siva":[56,0,0.0],"soorya":[11,0,0.0],"sreyas":[29,0,0.0],"sumukh":[18,0,0.0],"tacorian":[11,0,0.0],"tahmel":[6,0,0.0],"takobe":[6,0,0.0],"tandon":[34,0,0.0],"tanzim":[12,0,0.0],"teig":[12,0,0.0],"temidayo":[85,21,0.3248],"thayden":[151,0,0.4358],"tradon":[16,0,0.0],"treylyn":[6,0,0.0],"treyshon":[62,0,0.0],"trustyn":[23,0,0.0],"tyjohn":[33,0,0.0],"tyven":[20,0,0.0],"ulrik":[64,0,0.0],"usayd":[23,0,0.0],"wraith":[38,0,0.0],"wrigley":[566,396,0.351],"xzaiver":[90,0,0.0],"yacqub":[61,0,0.0],"zacarius":[27,0,0.0],"zakhi":[467,0,0.5339],"zeki":[112,0,0.4098],"zemarion":[11,0,0.0],"aabid":[16,0,0.0],"aadan":[136,0,0.4267],"aadith":[122,0,0.4173],"aadon":[118,0,0.4144],"aaidan":[38,0,0.0],"aaqib":[38,0,0.0],"abdourahmane":[52,0,0.0],"abduallah":[32,0,0.0],"abdulsamad":[48,0,0.0],"abedalrahman":[11,0,0.0],"abenezer":[236,0,0.4746],"abhinay":[5,0,0.0],"abinadab":[5,0,0.0],"abrum":[65,0,0.0],"adeolu":[23,0,0.0],"adharsh":[16,0,0.0],"ahmaj":[16,0,0.0],"ahmik":[12,0,0.0],"almarion":[13,0,0.0],"amaron":[5,0,0.0],"amiere":[117,7,0.395],"amiir":[256,0,0.4816],"amondre":[29,0,0.0],"amren":[16,18,0.0],"andan":[25,0,0.0],"anvith":[233,0,0.4735],"arad":[152,0,0.4364],"arael":[91,0,0.0],"aragon":[75,0,0.0],"arbaaz":[68,0,0.0],"arismendy":[5,0,0.0],"armann":[5,0,0.0],"armod":[10,0,0.0],"armonta":[5,0,0.0],"aschton":[5,0,0.0],"ashburn":[5,0,0.0],"ashtun":[37,0,0.0],"atahan":[10,0,0.0],"augustis":[5,0,0.0],"auner":[46,0,0.0],"avanish":[64,0,0.0],"avyay":[286,0,0.4913],"aydden":[119,0,0.4151],"baasil":[5,0,0.0],"batu":[111,0,0.4091],"beckam":[969,0,0.5973],"benedek":[5,0,0.0],"benjaminjoseph":[5,0,0.0],"berend":[38,0,0.0],"bezaleel":[71,0,0.0],"braxon":[374,0,0.5146],"breyson":[245,0,0.4778],"brockman":[15,0,0.0],"brysten":[137,0,0.4273],"bryten":[172,17,0.4143],"bugra":[5,0,0.0],"caeson":[172,0,0.4471],"calvion":[21,0,0.0],"carlhenry":[5,0,0.0],"carlosadrian":[5,0,0.0],"catcher":[151,0,0.4358],"chael":[519,0,0.543],"channer":[27,0,0.0],"chazden":[5,0,0.0],"cheveyo":[166,0,0.444],"chrishaud":[5,0,0.0],"christiam":[5,0,0.0],"chuka":[10,0,0.0],"chukwudubem":[5,0,0.0],"clever":[119,7,0.3967],"cohan":[336,0,0.5053],"covy":[5,0,0.0],"daimyan":[20,0,0.0],"daivik":[167,0,0.4445],"dalmar":[10,0,0.0],"dalonzo":[5,0,0.0],"damareion":[5,0,0.0],"daniil":[344,0,0.5073],"darson":[22,0,0.0],"dasir":[33,0,0.0],"daymin":[16,0,0.0],"deavante":[5,0,0.0],"demarreon":[5,0,0.0],"dequaveon":[5,0,0.0],"devinlee":[5,0,0.0],"dewin":[22,0,0.0],"deyshaun":[10,0,0.0],"dhane":[12,0,0.0],"dkhari":[76,0,0.0],"dkota":[10,12,0.0],"dominion":[99,5,0.384],"dontevion":[5,0,0.0],"dravid":[5,0,0.0],"drennen":[5,0,0.0],"dreydon":[110,0,0.4083],"dukens":[5,0,0.0],"dylanjames":[27,0,0.0],"eashaan":[5,0,0.0],"eeshan":[232,0,0.4731],"elisey":[53,0,0.0],"emmon":[10,0,0.0],"enrick":[5,0,0.0],"enzi":[119,38,0.3329],"ezariah":[408,123,0.4188],"ezekiah":[195,0,0.458],"fin":[240,0,0.476],"finnean":[78,0,0.0],"franciscojr":[5,0,0.0],"gabrian":[201,0,0.4606],"gaoussou":[5,0,0.0],"giann":[166,0,0.444],"gianno":[115,0,0.4121],"giddeon":[60,0,0.0],"giorgi":[117,0,0.4136],"guess":[5,0,0.0],"guhan":[154,0,0.4375],"haggai":[28,0,0.0],"hannes":[37,0,0.0],"hariharan":[37,0,0.0],"harshith":[124,0,0.4187],"hayder":[46,0,0.0],"henock":[23,0,0.0],"iassac":[5,0,0.0],"inesh":[54,0,0.0],"infantmale":[13,0,0.0],"ismaaeel":[5,0,0.0],"ismaila":[61,0,0.0],"ismet":[10,0,0.0],"issiaka":[5,0,0.0],"izeck":[16,0,0.0],"izuchukwu":[20,0,0.0],"jaaden":[33,0,0.0],"jaboree":[12,0,0.0],"jacier":[118,0,0.4144],"jacobanthony":[31,0,0.0],"jacobthomas":[5,0,0.0],"jadenn":[36,5,0.0],"jaderious":[5,0,0.0],"jadriel":[271,0,0.4866],"jaewoo":[5,0,0.0],"jago":[122,0,0.4173],"jaheir":[137,0,0.4273],"jahkeim":[10,0,0.0],"jahlyn":[10,0,0.0],"jahmair":[49,0,0.0],"jahmarley":[40,0,0.0],"jahseim":[5,0,0.0],"jahyr":[5,0,0.0],"jakkob":[5,0,0.0],"jakolbe":[5,0,0.0],"jakyron":[65,0,0.0],"jalaun":[10,0,0.0],"jamalachi":[5,0,0.0],"jamarieon":[16,0,0.0],"jamarin":[10,0,0.0],"jamias":[75,0,0.0],"jamyson":[149,0,0.4346],"japree":[5,0,0.0],"jaquaylin":[5,0,0.0],"jaquayvion":[10,0,0.0],"jareese":[39,0,0.0],"jasser":[83,0,0.0],"jataurus":[5,0,0.0],"jataveon":[27,0,0.0],"jaten":[10,0,0.0],"jathon":[16,0,0.0],"javair":[10,0,0.0],"javantay":[5,0,0.0],"javiere":[10,0,0.0],"jawdat":[5,0,0.0],"jaxston":[904,0,0.5912],"jaxsyn":[962,157,0.5242],"jaydian":[134,0,0.4254],"jayger":[23,0,0.0],"jaymarion":[77,0,0.0],"jaymason":[109,0,0.4075],"jaymian":[95,0,0.0],"jaymir":[194,0,0.4576],"jaytee":[20,0,0.0],"jeg":[5,0,0.0],"jeovan":[5,0,0.0],"jeremiyah":[286,0,0.4913],"jettson":[1036,0,0.6031],"jhobany":[5,0,0.0],"jhonas":[30,0,0.0],"jishnu":[106,0,0.4051],"joce":[10,0,0.0],"joed":[16,0,0.0],"johnalexander":[5,0,0.0],"johnlloyd":[5,0,0.0],"johntyler":[10,0,0.0],"jomarion":[104,0,0.4034],"josan":[23,0,0.0],"joshton":[16,0,0.0],"josman":[20,0,0.0],"jushawn":[11,0,0.0],"jylin":[11,0,0.0],"jyshaun":[17,0,0.0],"kaderius":[5,0,0.0],"kaedn":[5,0,0.0],"kaikea":[64,0,0.0],"kaikoa":[192,0,0.4567],"kailib":[5,0,0.0],"kaiven":[149,0,0.4346],"kalill":[5,0,0.0],"kaneil":[5,0,0.0],"karanbir":[5,0,0.0],"karloz":[21,0,0.0],"karmelo":[1277,0,0.6212],"kayven":[229,0,0.472],"keatin":[75,0,0.0],"keedon":[5,0,0.0],"keeran":[65,0,0.0],"keiarriyen":[5,0,0.0],"keidan":[85,0,0.0],"keigen":[88,0,0.0],"kendyn":[218,7,0.4558],"keywaun":[5,0,0.0],"khalee":[111,61,0.2885],"khizer":[74,0,0.0],"khmari":[141,10,0.4069],"khylige":[5,0,0.0],"kodah":[472,30,0.5079],"konye":[21,0,0.0],"koreon":[5,0,0.0],"krillin":[10,0,0.0],"krithik":[319,0,0.5008],"kyelar":[5,0,0.0],"kyton":[25,0,0.0],"lakell":[5,0,0.0],"laki":[11,0,0.0],"lamier":[72,0,0.0],"laquavius":[5,0,0.0],"legion":[353,0,0.5096],"lemarion":[61,0,0.0],"lenz":[5,0,0.0],"levit":[10,0,0.0],"lexon":[65,0,0.0],"lincon":[90,0,0.0],"lokesh":[22,0,0.0],"luigino":[5,0,0.0],"madoc":[217,0,0.4673],"mahamud":[93,0,0.0],"maheer":[54,0,0.0],"makhail":[39,0,0.0],"makiel":[5,0,0.0],"mannuel":[11,0,0.0],"marcopolo":[5,0,0.0],"marquevious":[5,0,0.0],"marterrion":[5,0,0.0],"martynas":[13,0,0.0],"mathius":[216,0,0.4669],"matthewjohn":[10,0,0.0],"mattis":[451,0,0.5308],"mekyle":[5,0,0.0],"mher":[31,0,0.0],"mihajlo":[48,0,0.0],"moksh":[427,0,0.5261],"moneer":[5,0,0.0],"muiz":[43,0,0.0],"muntasir":[89,0,0.0],"mykhi":[61,0,0.0],"myshaun":[39,0,0.0],"namish":[106,0,0.4051],"naseim":[5,0,0.0],"nashwan":[33,0,0.0],"nasyr":[51,0,0.0],"nawfal":[5,0,0.0],"nazmir":[5,0,0.0],"nehemia":[69,0,0.0],"nethaniah":[5,0,0.0],"nikash":[115,0,0.4121],"nyran":[5,0,0.0],"nyre":[5,6,0.0],"nytrell":[5,0,0.0],"ofek":[17,0,0.0],"ohene":[51,0,0.0],"oladipo":[5,0,0.0],"omaru":[5,0,0.0],"omorion":[5,0,0.0],"osvin":[75,0,0.0],"owenn":[73,0,0.0],"panayotis":[5,0,0.0],"pranshu":[84,0,0.0],"preetam":[5,0,0.0],"psymon":[10,0,0.0],"ptolemy":[50,0,0.0],"qays":[41,0,0.0],"quasir":[22,0,0.0],"rachit":[130,0,0.4228],"rances":[17,0,0.0],"raquez":[16,0,0.0],"rayniel":[69,0,0.0],"reyon":[28,0,0.0],"rikuto":[38,0,0.0],"rodley":[5,0,0.0],"rosston":[10,0,0.0],"royan":[22,0,0.0],"rubyn":[5,0,0.0],"ruiz":[5,0,0.0],"saalih":[23,0,0.0],"sabbath":[20,6,0.0],"sadir":[10,0,0.0],"sahan":[121,0,0.4166],"sajaad":[5,0,0.0],"sajed":[45,0,0.0],"samej":[5,0,0.0],"samiir":[77,0,0.0],"samueldavid":[10,0,0.0],"seager":[120,5,0.4026],"seamas":[10,0,0.0],"seanthomas":[5,0,0.0],"sebastyen":[10,0,0.0],"senen":[20,0,0.0],"shaaz":[10,0,0.0],"shabsi":[67,0,0.0],"shaedon":[21,0,0.0],"sheadon":[45,0,0.0],"sikander":[5,0,0.0],"skyller":[23,9,0.0],"sotiris":[10,0,0.0],"srikrishna":[49,0,0.0],"suchit":[10,0,0.0],"sudhanva":[5,0,0.0],"surafel":[108,0,0.4067],"swaraj":[21,0,0.0],"tabious":[10,0,0.0],"taeshon":[54,0,0.0],"taquez":[5,0,0.0],"taqwan":[5,0,0.0],"tayde":[5,27,0.0],"temar":[13,0,0.0],"thalen":[5,0,0.0],"tijan":[25,0,0.0],"timarion":[86,0,0.0],"timofei":[34,0,0.0],"traeden":[31,0,0.0],"trayvin":[28,0,0.0],"trelan":[10,0,0.0],"trusten":[87,0,0.0],"tysan":[16,0,0.0],"tyse":[108,0,0.4067],"uche":[5,0,0.0],"vadin":[31,0,0.0],"vash":[316,0,0.4999],"vedanth":[522,0,0.5435],"vrishank":[166,0,0.444],"wadley":[21,0,0.0],"waris":[226,0,0.4708],"xandyr":[71,0,0.0],"yashas":[110,0,0.4083],"yashraj":[10,0,0.0],"yasiel":[806,0,0.5813],"yug":[635,0,0.5606],"zacharyah":[72,0,0.0],"zadkiel":[363,0,0.512],"zakkai":[113,0,0.4106],"zalan":[77,0,0.0],"zamion":[5,0,0.0],"zann":[10,0,0.0],"zarrian":[11,0,0.0],"zennon":[28,0,0.0],"zxavian":[5,0,0.0],"zysean":[5,0,0.0],"eshal":[0,826,0.5834],"hanny":[0,174,0.4481],"hiromy":[0,40,0.0],"kaidynce":[18,425,0.5078],"jazira":[0,208,0.4636],"naturelle":[0,46,0.0],"jadence":[36,175,0.3855],"ellagrace":[0,452,0.531],"kieayla":[0,18,0.0],"samadhi":[0,696,0.5685],"janayra":[0,12,0.0],"jovie":[20,4307,0.7239],"kaena":[23,71,0.0],"manha":[0,1249,0.6193],"simrah":[0,253,0.4806],"zaara":[0,777,0.5781],"caoilainn":[0,91,0.0],"emmaclaire":[0,129,0.4221],"eyonna":[0,89,0.0],"grettell":[0,131,0.4235],"iraima":[0,30,0.0],"klaira":[0,292,0.4931],"nazalia":[0,43,0.0],"salette":[0,11,0.0],"toluwalase":[27,18,0.0],"xara":[0,390,0.5182],"beautifull":[0,191,0.4562],"brissia":[0,580,0.5527],"caedence":[0,169,0.4456],"dexiree":[0,10,0.0],"heer":[0,254,0.481],"kaleese":[0,52,0.0],"keymora":[0,130,0.4228],"legna":[0,138,0.428],"lyberty":[0,41,0.0],"maahi":[6,460,0.5268],"mukta":[0,45,0.0],"naveh":[0,61,0.0],"quinya":[0,26,0.0],"raziyah":[0,268,0.4856],"tamyiah":[0,65,0.0],"yadeliz":[0,15,0.0],"aariyana":[0,97,0.0],"aashvi":[0,978,0.5981],"araiya":[0,348,0.5083],"aubriella":[0,4061,0.7217],"caryss":[0,39,0.0],"cordasia":[0,51,0.0],"elany":[0,296,0.4943],"elizabella":[0,559,0.5495],"emaree":[0,203,0.4615],"gili":[0,62,0.0],"jaeana":[0,44,0.0],"jaydalynn":[0,157,0.4392],"jenavive":[0,75,0.0],"kaydynce":[0,133,0.4248],"laiyla":[0,273,0.4872],"laryah":[0,168,0.4451],"maddalynn":[0,292,0.4931],"mckaya":[0,23,0.0],"nikyia":[0,19,0.0],"onesti":[0,111,0.4091],"rhilee":[0,156,0.4386],"rumaysa":[0,323,0.5018],"talaja":[0,9,0.0],"xiamara":[0,259,0.4827],"yadirah":[0,46,0.0],"zeynab":[0,199,0.4598],"zymia":[0,43,0.0],"adeleigh":[0,198,0.4593],"amanni":[0,43,0.0],"amilian":[7,29,0.0],"amoriah":[0,94,0.0],"anacamila":[0,30,0.0],"aniiyah":[0,33,0.0],"anslei":[0,34,0.0],"arawyn":[0,20,0.0],"brisayda":[0,19,0.0],"caedance":[0,27,0.0],"caleyah":[0,104,0.4034],"cynai":[0,81,0.0],"delaia":[0,17,0.0],"deshya":[0,8,0.0],"dreah":[0,43,0.0],"elaya":[0,428,0.5263],"ellason":[0,144,0.4317],"emmalise":[0,203,0.4615],"geniyah":[0,145,0.4323],"heiress":[0,714,0.5707],"hewan":[0,50,0.0],"jisele":[0,126,0.4201],"jnyia":[0,17,0.0],"kaedance":[0,111,0.4091],"kameria":[0,149,0.4346],"kashlyn":[0,359,0.511],"kaydense":[0,74,0.0],"keydy":[0,42,0.0],"leaya":[0,33,0.0],"litzie":[0,13,0.0],"londynn":[0,3024,0.6961],"luccia":[0,89,0.0],"lunna":[0,395,0.5193],"mazzi":[134,8,0.4062],"naana":[0,8,0.0],"nareh":[0,141,0.4298],"natalin":[0,73,0.0],"sadeen":[0,143,0.4311],"saleth":[0,8,0.0],"saraiya":[0,278,0.4888],"seleen":[0,134,0.4254],"sinae":[0,31,0.0],"solai":[0,125,0.4194],"sudiksha":[0,105,0.4042],"talaisha":[0,8,0.0],"taniyia":[0,8,0.0],"tayen":[67,111,0.2807],"teeghan":[0,119,0.4151],"tsitsiki":[0,8,0.0],"xayla":[0,228,0.4716],"yasirah":[0,40,0.0],"aaleiyah":[0,60,0.0],"aalivia":[0,81,0.0],"airis":[52,284,0.4271],"alexisrose":[0,7,0.0],"allejah":[0,7,0.0],"alyasia":[0,29,0.0],"alyviah":[0,314,0.4994],"amanti":[52,29,0.0],"amillian":[10,52,0.0],"anastazja":[0,159,0.4403],"anujin":[0,22,0.0],"aremy":[0,34,0.0],"aritzi":[0,12,0.0],"arni":[0,18,0.0],"ashita":[0,26,0.0],"avalena":[0,74,0.0],"azaneth":[0,18,0.0],"betzayra":[0,32,0.0],"breklyn":[0,155,0.4381],"brenly":[0,91,0.0],"bryndee":[0,7,0.0],"camyla":[0,254,0.481],"canya":[0,23,0.0],"cerridwen":[0,7,0.0],"chaliyah":[0,24,0.0],"dalli":[0,38,0.0],"delara":[0,193,0.4571],"delimar":[0,23,0.0],"dioselyn":[0,23,0.0],"elainy":[0,44,0.0],"elyna":[0,196,0.4585],"eme":[0,47,0.0],"emmalei":[0,52,0.0],"emoree":[0,347,0.5081],"ganajah":[0,14,0.0],"giah":[0,129,0.4221],"gilana":[0,33,0.0],"greenley":[0,215,0.4665],"halaya":[0,73,0.0],"halimatou":[0,78,0.0],"haviland":[0,29,0.0],"hazzel":[0,79,0.0],"isabellagrace":[0,61,0.0],"jacelle":[0,39,0.0],"jahzaria":[0,121,0.4166],"jaklynn":[0,47,0.0],"jakyiah":[0,114,0.4114],"jalaia":[0,99,0.0],"jamariona":[0,31,0.0],"janascia":[0,7,0.0],"jaryah":[0,154,0.4375],"jayia":[0,31,0.0],"jaylanie":[0,651,0.5627],"jaysia":[0,13,0.0],"jenely":[0,35,0.0],"jeriyah":[38,232,0.4178],"kaleaha":[0,36,0.0],"kambrya":[0,23,0.0],"kanyiah":[0,52,0.0],"kaybri":[0,44,0.0],"keelynn":[5,87,0.0],"keileen":[0,31,0.0],"kiamani":[0,12,0.0],"kimyra":[0,57,0.0],"klare":[0,68,0.0],"knyla":[0,98,0.0],"lailaa":[0,59,0.0],"laissa":[0,12,0.0],"lariyah":[0,857,0.5866],"laurelei":[0,66,0.0],"leyli":[0,142,0.4305],"lianni":[0,162,0.4419],"lillyn":[0,76,0.0],"lilyona":[0,151,0.4358],"luseane":[0,19,0.0],"maddyn":[35,1051,0.5876],"maely":[0,375,0.5148],"makayden":[23,39,0.0],"malazia":[0,18,0.0],"meryah":[0,13,0.0],"nimsy":[0,24,0.0],"niyasia":[0,24,0.0],"noraa":[0,222,0.4693],"nyalah":[0,68,0.0],"nyliyah":[0,84,0.0],"ohanna":[0,156,0.4386],"omariah":[0,12,0.0],"rayane":[128,7,0.404],"reyah":[0,285,0.491],"rhaya":[0,149,0.4346],"salaya":[0,164,0.443],"samarrah":[0,70,0.0],"sarakate":[0,12,0.0],"saraye":[0,42,0.0],"serai":[0,103,0.4026],"serenaty":[0,12,0.0],"shambhavi":[0,136,0.4267],"shristi":[0,140,0.4292],"shyrah":[0,25,0.0],"smya":[0,45,0.0],"syeira":[0,29,0.0],"taleiyah":[0,46,0.0],"tamaree":[0,7,0.0],"tanishka":[0,364,0.5122],"tanvee":[0,25,0.0],"tashiyah":[0,23,0.0],"tatianah":[0,41,0.0],"toluwani":[79,71,0.2292],"umaiza":[0,257,0.482],"varnika":[0,402,0.5208],"yaneiry":[0,33,0.0],"zaeda":[0,143,0.4311],"zaleah":[0,360,0.5113],"zaleth":[0,7,0.0],"zenae":[0,24,0.0],"zharick":[0,29,0.0],"zinaya":[0,64,0.0],"aaliha":[0,12,0.0],"absidy":[0,17,0.0],"ahni":[0,123,0.418],"aivah":[0,321,0.5013],"aletris":[0,6,0.0],"aliina":[0,17,0.0],"aliyaha":[0,23,0.0],"allani":[0,174,0.4481],"amiera":[0,231,0.4727],"aminatou":[0,27,0.0],"amsi":[0,65,0.0],"anahie":[0,11,0.0],"anelyse":[0,19,0.0],"angeliana":[0,6,0.0],"anieyah":[0,23,0.0],"anjalena":[0,6,0.0],"anngelina":[0,6,0.0],"anshi":[0,166,0.444],"antoinae":[0,6,0.0],"anylia":[0,33,0.0],"anzlee":[0,127,0.4208],"aribella":[0,1272,0.6209],"arohi":[0,231,0.4727],"arowyn":[0,22,0.0],"arwynn":[0,33,0.0],"aryaa":[0,117,0.4136],"asharra":[0,6,0.0],"ayen":[0,103,0.4026],"ayniah":[0,35,0.0],"ayvah":[0,1793,0.6507],"azaylea":[0,144,0.4317],"bellamia":[0,120,0.4158],"blen":[0,273,0.4872],"brasia":[0,6,0.0],"briniya":[0,49,0.0],"brinklee":[0,156,0.4386],"brynnlie":[0,123,0.418],"bryseida":[0,53,0.0],"cadense":[0,11,0.0],"calei":[0,67,0.0],"calianna":[0,320,0.501],"ceazia":[0,95,0.0],"cereniti":[0,117,0.4136],"chinonye":[0,11,0.0],"cniyah":[0,62,0.0],"criselle":[0,6,0.0],"dalaysha":[0,37,0.0],"damarria":[0,19,0.0],"devory":[0,152,0.4364],"dmiyah":[0,114,0.4114],"dnyla":[0,156,0.4386],"duru":[0,155,0.4381],"eire":[0,35,0.0],"elizama":[0,6,0.0],"ellisyn":[0,894,0.5903],"emele":[0,6,0.0],"emmamae":[0,124,0.4187],"eseta":[0,20,0.0],"eymy":[0,11,0.0],"ezmerelda":[0,97,0.0],"galatea":[0,11,0.0],"geidy":[0,18,0.0],"haelyn":[0,407,0.5219],"havin":[0,28,0.0],"hinano":[0,11,0.0],"honoka":[0,43,0.0],"hopelyn":[0,57,0.0],"illyria":[0,149,0.4346],"inasia":[0,27,0.0],"irayda":[0,6,0.0],"ireyanna":[0,6,0.0],"jadaria":[0,6,0.0],"jadora":[0,37,0.0],"jaiyana":[0,697,0.5686],"jalisse":[0,6,0.0],"janadia":[0,6,0.0],"janaih":[0,14,0.0],"jasyah":[107,19,0.3567],"jaydence":[189,178,0.2642],"jeimmy":[0,38,0.0],"jeiny":[0,6,0.0],"jenacia":[0,6,0.0],"jermaria":[0,6,0.0],"jerniya":[0,52,0.0],"jeyli":[0,93,0.0],"kaicey":[0,24,0.0],"kaidince":[0,6,0.0],"kalice":[0,61,0.0],"kalliyan":[0,39,0.0],"kalyanna":[0,6,0.0],"kamirra":[0,51,0.0],"kamyria":[0,45,0.0],"kaniece":[0,12,0.0],"karissma":[0,34,0.0],"karsynn":[18,353,0.4889],"kaslyn":[0,93,0.0],"katence":[0,6,0.0],"kayleejo":[0,12,0.0],"keating":[21,6,0.0],"keleah":[0,65,0.0],"kemorah":[0,65,0.0],"kennaya":[0,6,0.0],"kensli":[0,444,0.5295],"keylly":[0,37,0.0],"keylyn":[0,35,0.0],"keyrin":[0,66,0.0],"khamille":[0,157,0.4392],"kinnidi":[0,26,0.0],"klah":[0,6,0.0],"koharu":[0,45,0.0],"kyelee":[0,25,0.0],"kymiah":[0,134,0.4254],"kymorah":[0,97,0.0],"kymya":[0,6,0.0],"labella":[0,196,0.4585],"ladaisia":[0,6,0.0],"laili":[0,34,0.0],"lanazia":[0,6,0.0],"larya":[0,76,0.0],"lazariah":[0,169,0.4456],"leany":[0,71,0.0],"leayah":[0,29,0.0],"leilannie":[0,17,0.0],"lexany":[0,97,0.0],"lexiann":[0,37,0.0],"leylany":[0,219,0.4681],"liadan":[0,70,0.0],"liannette":[0,6,0.0],"lileigh":[0,271,0.4866],"lilyanah":[0,235,0.4742],"litcy":[0,6,0.0],"livy":[0,493,0.5386],"lucabella":[0,6,0.0],"lyneth":[0,16,0.0],"maecyn":[0,80,0.0],"maelie":[0,628,0.5596],"maiken":[0,11,0.0],"makhyia":[0,20,0.0],"makhyla":[0,55,0.0],"makirah":[0,23,0.0],"malayjah":[0,158,0.4397],"mansha":[0,6,0.0],"marleth":[0,23,0.0],"marvely":[0,6,0.0],"mazlyn":[0,90,0.0],"mckailyn":[0,12,0.0],"mckaylia":[0,6,0.0],"mekah":[0,36,0.0],"mickenzy":[0,11,0.0],"mikinley":[0,60,0.0],"mikylla":[0,6,0.0],"milanna":[0,204,0.4619],"milian":[52,74,0.2467],"mireyli":[0,43,0.0],"mugdha":[0,16,0.0],"myauna":[0,29,0.0],"myli":[0,167,0.4445],"nacala":[0,6,0.0],"naraya":[0,100,0.4],"naveyah":[0,334,0.5047],"nayonna":[0,52,0.0],"neeraja":[0,11,0.0],"neishaly":[0,6,0.0],"neshama":[0,17,0.0],"nikayia":[0,6,0.0],"niobi":[0,6,0.0],"nourah":[0,67,0.0],"nyairah":[0,48,0.0],"nykeira":[0,16,0.0],"oliana":[0,214,0.4661],"oliveah":[0,76,0.0],"oluwatomi":[28,27,0.0],"omayma":[0,6,0.0],"paryss":[0,12,0.0],"pavani":[0,36,0.0],"phynix":[43,158,0.3621],"pryncess":[0,97,0.0],"qualiyah":[0,14,0.0],"raelei":[0,30,0.0],"raenna":[0,11,0.0],"rekiyah":[0,6,0.0],"rhaegan":[0,59,0.0],"rocelin":[0,6,0.0],"romiya":[0,12,0.0],"rubyanne":[0,29,0.0],"sahori":[0,66,0.0],"sakiah":[0,35,0.0],"salissa":[0,6,0.0],"samariyah":[0,82,0.0],"sanaai":[0,90,0.0],"sanari":[0,235,0.4742],"sanyla":[0,210,0.4644],"sarisha":[0,36,0.0],"sashenka":[0,50,0.0],"seeya":[0,6,0.0],"shadyn":[5,17,0.0],"shanaja":[0,6,0.0],"shawnnessy":[0,11,0.0],"skii":[0,110,0.4083],"skyleen":[0,97,0.0],"srihitha":[0,180,0.4511],"sumaia":[0,22,0.0],"suraiya":[0,257,0.482],"sykora":[0,6,0.0],"syniyah":[0,73,0.0],"takaiyah":[0,6,0.0],"talaiah":[0,6,0.0],"taleiya":[0,6,0.0],"tamyla":[0,28,0.0],"taziyah":[12,122,0.3873],"teralynn":[0,16,0.0],"terriyah":[0,146,0.4329],"terynn":[0,6,0.0],"teyla":[0,319,0.5008],"timyah":[0,55,0.0],"tristah":[0,6,0.0],"verniya":[0,11,0.0],"vinathi":[0,6,0.0],"vyshnavi":[0,23,0.0],"wania":[0,245,0.4778],"xithlaly":[0,6,0.0],"yaneira":[0,33,0.0],"yanixa":[0,36,0.0],"yaren":[0,50,0.0],"yaresli":[0,42,0.0],"yaretsi":[0,145,0.4323],"yatana":[0,29,0.0],"yathziry":[0,12,0.0],"yazira":[0,42,0.0],"yeraldine":[0,101,0.4009],"yeva":[0,292,0.4931],"zamorah":[0,143,0.4311],"zamyah":[0,307,0.4974],"zamyria":[0,49,0.0],"zanyiah":[0,304,0.4966],"zanyla":[0,489,0.5379],"zekira":[0,6,0.0],"zhaniyah":[0,38,0.0],"zoejane":[0,134,0.4254],"zorianna":[0,144,0.4317],"aafreen":[0,5,0.0],"aalani":[0,297,0.4946],"aaleeya":[0,5,0.0],"aalicia":[0,5,0.0],"aalina":[0,102,0.4017],"aamori":[0,106,0.4051],"aariyanna":[0,14,0.0],"abegale":[0,5,0.0],"abira":[0,48,0.0],"abisha":[0,75,0.0],"abiyah":[10,27,0.0],"adaliah":[0,280,0.4894],"adalynne":[0,1146,0.6118],"addey":[0,11,0.0],"aditri":[0,236,0.4746],"adream":[17,171,0.4137],"adryonna":[0,5,0.0],"aerowyn":[0,16,0.0],"ahlivia":[0,107,0.4059],"ahria":[0,186,0.4539],"ahyonna":[0,5,0.0],"aileth":[0,57,0.0],"airabella":[0,467,0.5339],"airiona":[0,5,0.0],"airyonna":[0,61,0.0],"aislee":[0,151,0.4358],"aivry":[0,5,0.0],"ajahnay":[0,5,0.0],"ajianna":[0,11,0.0],"akaylia":[0,35,0.0],"alanny":[0,243,0.4771],"alayzah":[0,23,0.0],"aliani":[0,257,0.482],"alidia":[0,25,0.0],"alijandra":[0,29,0.0],"alionna":[0,65,0.0],"alishaba":[0,5,0.0],"alisun":[0,5,0.0],"allysandra":[0,42,0.0],"allyza":[0,5,0.0],"alyciana":[0,33,0.0],"amaliya":[0,144,0.4317],"amariyanna":[0,28,0.0],"amelina":[0,83,0.0],"amerra":[0,32,0.0],"amiliana":[0,350,0.5088],"amiriah":[0,85,0.0],"amorina":[0,78,0.0],"amouri":[55,106,0.2906],"amryn":[6,126,0.4048],"amylah":[0,392,0.5187],"amyriah":[0,129,0.4221],"anaisia":[0,5,0.0],"analin":[0,16,0.0],"andalyn":[0,111,0.4091],"aneysa":[0,5,0.0],"angelinamarie":[0,16,0.0],"angelyssa":[0,17,0.0],"angilina":[0,5,0.0],"aniha":[0,5,0.0],"anijia":[0,5,0.0],"anilah":[0,492,0.5384],"anisse":[0,10,0.0],"anisty":[0,42,0.0],"anivea":[0,68,0.0],"aniylah":[0,929,0.5936],"annaleece":[0,21,0.0],"annaliece":[0,10,0.0],"anshita":[0,11,0.0],"anyston":[0,24,0.0],"aolanis":[0,380,0.516],"aolany":[0,16,0.0],"areiona":[0,11,0.0],"aricel":[0,10,0.0],"arinola":[0,10,0.0],"ariyahna":[0,55,0.0],"ariyauna":[0,5,0.0],"arundhati":[0,13,0.0],"arunima":[0,16,0.0],"aryss":[0,64,0.0],"arysta":[0,5,0.0],"ashauntae":[0,5,0.0],"ashliy":[0,5,0.0],"astryd":[0,136,0.4267],"asyana":[0,5,0.0],"asyiah":[5,36,0.0],"athenea":[0,126,0.4201],"aubrieanna":[0,26,0.0],"auniya":[0,10,0.0],"auril":[0,5,0.0],"auviana":[0,17,0.0],"avena":[0,77,0.0],"aviyonna":[0,17,0.0],"aydah":[0,87,0.0],"aylinne":[0,22,0.0],"azzaria":[0,89,0.0],"barakat":[0,5,0.0],"bentleigh":[61,551,0.5018],"bethzabel":[0,11,0.0],"betsabet":[0,5,0.0],"betsabeth":[0,25,0.0],"bhavi":[0,11,0.0],"bianet":[0,5,0.0],"bleidy":[0,5,0.0],"branasia":[0,17,0.0],"branya":[0,29,0.0],"brenai":[0,5,0.0],"briney":[0,5,0.0],"briniyah":[0,50,0.0],"brynia":[0,10,0.0],"brynlea":[0,223,0.4697],"cada":[0,5,0.0],"caida":[0,5,0.0],"caitelyn":[0,5,0.0],"callah":[0,32,0.0],"camberly":[0,10,0.0],"carliegh":[0,17,0.0],"caroleena":[0,89,0.0],"cattibrie":[0,10,0.0],"cayra":[0,5,0.0],"cebria":[0,5,0.0],"ceianna":[0,5,0.0],"ceionna":[0,5,0.0],"chalynn":[0,5,0.0],"charliyah":[0,10,0.0],"chineye":[0,5,0.0],"chisara":[0,5,0.0],"chloye":[0,26,0.0],"chrishya":[0,5,0.0],"christany":[0,22,0.0],"cianie":[0,5,0.0],"clancie":[0,5,0.0],"cmya":[0,15,0.0],"cnya":[0,14,0.0],"conleigh":[0,114,0.4114],"constence":[0,5,0.0],"cristell":[0,30,0.0],"dalainey":[0,12,0.0],"dalhia":[0,10,0.0],"danaia":[0,5,0.0],"danaiyah":[0,5,0.0],"danayja":[0,34,0.0],"darynne":[0,5,0.0],"dayann":[0,13,0.0],"dazya":[0,16,0.0],"deaija":[0,12,0.0],"declyn":[439,290,0.3448],"demariah":[0,23,0.0],"demyia":[0,44,0.0],"denaijah":[0,20,0.0],"denyla":[0,163,0.4424],"deviana":[0,14,0.0],"devree":[0,15,0.0],"deymi":[0,31,0.0],"dila":[0,40,0.0],"diore":[5,86,0.0],"dontajah":[0,5,0.0],"dorsa":[0,78,0.0],"dynasha":[0,5,0.0],"eleany":[0,48,0.0],"elexes":[0,5,0.0],"elizabelle":[0,120,0.4158],"elleson":[0,28,0.0],"elliona":[0,142,0.4305],"emanee":[0,27,0.0],"emberley":[0,346,0.5078],"evalisse":[0,83,0.0],"evennie":[0,5,0.0],"ezaria":[0,53,0.0],"falak":[0,100,0.4],"fayeth":[0,23,0.0],"filza":[0,44,0.0],"fiyinfoluwa":[28,61,0.0],"gabria":[0,5,0.0],"genavee":[0,40,0.0],"getzemany":[0,11,0.0],"giabella":[0,416,0.5238],"giany":[0,5,0.0],"giara":[0,68,0.0],"giavonnie":[0,5,0.0],"giliana":[0,71,0.0],"gisely":[0,5,0.0],"gouri":[0,10,0.0],"graceland":[0,118,0.4144],"gracianne":[0,10,0.0],"gracielle":[0,10,0.0],"gracielynn":[0,146,0.4329],"gurveen":[0,5,0.0],"gwendalin":[0,15,0.0],"gyzelle":[0,59,0.0],"habibatou":[0,10,0.0],"hadya":[0,70,0.0],"haiely":[0,10,0.0],"haizel":[0,263,0.484],"halynn":[0,133,0.4248],"hannha":[0,5,0.0],"hansika":[0,197,0.4589],"harveen":[0,30,0.0],"hawanatu":[0,5,0.0],"hayvn":[0,56,0.0],"heart":[0,79,0.0],"heili":[0,5,0.0],"heleina":[0,5,0.0],"henesis":[0,28,0.0],"hongan":[0,5,0.0],"hudsyn":[575,645,0.3263],"iffat":[0,11,0.0],"ilori":[0,5,0.0],"ipek":[0,73,0.0],"ireona":[0,10,0.0],"iriyana":[0,5,0.0],"isabellia":[0,10,0.0],"isara":[0,13,0.0],"issabel":[0,43,0.0],"iyonah":[0,16,0.0],"iyssis":[0,11,0.0],"izzabell":[0,166,0.444],"jadalin":[0,10,0.0],"jahairy":[0,5,0.0],"jahdae":[0,10,0.0],"jahlynn":[0,5,0.0],"jaielle":[0,181,0.4515],"jaimison":[15,5,0.0],"jakada":[0,5,0.0],"jalashia":[0,10,0.0],"jalay":[0,11,0.0],"jalayshia":[0,33,0.0],"jalis":[0,10,0.0],"jalyce":[0,5,0.0],"jalyla":[0,44,0.0],"jamaiah":[0,15,0.0],"jamirya":[0,5,0.0],"janat":[0,135,0.4261],"janiha":[0,21,0.0],"janiia":[0,5,0.0],"janiyla":[0,423,0.5253],"jannia":[0,10,0.0],"janniah":[0,5,0.0],"janyse":[0,5,0.0],"jaona":[0,10,0.0],"jaritzi":[0,5,0.0],"jaslen":[0,72,0.0],"jasmari":[0,16,0.0],"jassidy":[0,31,0.0],"jaycelynn":[0,106,0.4051],"jaydynn":[22,64,0.0],"jaymarie":[0,168,0.4451],"jaziya":[0,385,0.5171],"jazly":[0,53,0.0],"jazmariah":[0,17,0.0],"jehieli":[0,110,0.4083],"jelia":[0,15,0.0],"jennasis":[0,53,0.0],"jermyra":[0,15,0.0],"jesalynn":[0,32,0.0],"jessmarie":[0,11,0.0],"jhaeda":[0,5,0.0],"jhanet":[0,5,0.0],"jhenifer":[0,5,0.0],"jilma":[0,5,0.0],"jiromi":[0,10,0.0],"jissela":[0,13,0.0],"joeliz":[0,58,0.0],"jomaris":[0,16,0.0],"josellyn":[0,19,0.0],"jream":[497,1957,0.5407],"judeah":[0,18,0.0],"juleeanna":[0,5,0.0],"juliaunna":[0,10,0.0],"juniyah":[0,26,0.0],"jyselle":[0,18,0.0],"kaaya":[0,5,0.0],"kadidiatou":[0,23,0.0],"kadrianna":[0,10,0.0],"kahmia":[0,11,0.0],"kaidee":[0,42,0.0],"kaidynn":[31,53,0.0],"kaigan":[7,12,0.0],"kalaiah":[0,88,0.0],"kaleiah":[0,262,0.4837],"kalesa":[0,10,0.0],"kalyce":[0,49,0.0],"kamsiyochukwu":[183,125,0.2957],"kamyrah":[0,200,0.4602],"kamyrn":[18,58,0.0],"kanyen":[28,5,0.0],"karadyn":[0,5,0.0],"kareana":[0,5,0.0],"karimen":[0,5,0.0],"karlah":[0,18,0.0],"kashlynn":[0,355,0.51],"kateara":[0,5,0.0],"kateleigh":[0,26,0.0],"keasya":[0,5,0.0],"keilei":[0,29,0.0],"kelany":[0,100,0.4],"kenajah":[0,5,0.0],"kenyce":[0,5,0.0],"kenzia":[0,10,0.0],"keonnie":[0,5,0.0],"keori":[0,43,0.0],"keoria":[0,5,0.0],"kerlyn":[0,23,0.0],"kesharia":[0,5,0.0],"khailey":[0,48,0.0],"khalie":[0,122,0.4173],"khamiah":[0,44,0.0],"kharlie":[0,128,0.4214],"kheyla":[0,5,0.0],"kieleigh":[0,33,0.0],"kiersa":[0,5,0.0],"kiliyah":[0,23,0.0],"kimbree":[0,94,0.0],"kimimila":[0,171,0.4466],"kimyah":[0,124,0.4187],"kinady":[0,5,0.0],"kiyanni":[0,26,0.0],"kotryna":[0,5,0.0],"krisalynn":[0,25,0.0],"kristlynn":[0,5,0.0],"krymson":[5,54,0.0],"kuhu":[0,5,0.0],"kyleemarie":[0,5,0.0],"kyleia":[0,31,0.0],"kylina":[0,123,0.418],"kylis":[0,5,0.0],"laciann":[0,5,0.0],"laici":[0,5,0.0],"lajla":[0,33,0.0],"lakynn":[0,384,0.5169],"lamija":[0,75,0.0],"lanaija":[0,5,0.0],"lanajia":[0,5,0.0],"laniyia":[0,5,0.0],"lashiya":[0,40,0.0],"layanne":[0,48,0.0],"leauna":[0,73,0.0],"leeannah":[0,5,0.0],"leilonnie":[0,5,0.0],"leini":[0,5,0.0],"lenasia":[0,15,0.0],"leslly":[0,5,0.0],"lilianah":[0,184,0.453],"lilika":[0,22,0.0],"lilliaunna":[0,11,0.0],"lillionna":[0,134,0.4254],"lillyian":[0,83,0.0],"lillynn":[0,36,0.0],"lilymarie":[0,72,0.0],"loyalty":[419,2223,0.5758],"loza":[0,133,0.4248],"luzmarie":[0,58,0.0],"lyani":[0,44,0.0],"lyrical":[0,241,0.4764],"madilen":[0,10,0.0],"madisynne":[0,12,0.0],"madsion":[0,24,0.0],"mahkaylah":[0,13,0.0],"mahkiya":[0,5,0.0],"maialen":[0,11,0.0],"mais":[0,56,0.0],"majayla":[0,18,0.0],"makalei":[0,5,0.0],"makasia":[0,5,0.0],"makenya":[0,34,0.0],"makiley":[0,5,0.0],"makinnley":[0,41,0.0],"malayla":[0,304,0.4966],"maliza":[0,11,0.0],"manvitha":[0,48,0.0],"mariany":[0,94,0.0],"marinez":[0,5,0.0],"maritzabel":[0,5,0.0],"maryonna":[0,54,0.0],"masiyah":[146,210,0.301],"maslin":[0,5,0.0],"mayalyn":[0,5,0.0],"maydelin":[0,201,0.4606],"mekhiah":[0,11,0.0],"meledy":[0,5,0.0],"meraly":[0,20,0.0],"milasia":[0,11,0.0],"mireyna":[0,22,0.0],"mirianna":[0,10,0.0],"mixtly":[0,5,0.0],"miyabi":[0,38,0.0],"mkyla":[0,10,0.0],"moniyah":[0,22,0.0],"myalee":[0,73,0.0],"myniah":[0,23,0.0],"naaz":[0,50,0.0],"nadaly":[0,17,0.0],"nadalyn":[0,143,0.4311],"nadaya":[0,16,0.0],"nadeline":[0,21,0.0],"nahjay":[0,5,0.0],"nakayia":[0,5,0.0],"nakylah":[0,43,0.0],"nakyrah":[0,12,0.0],"nally":[0,5,0.0],"nandni":[0,5,0.0],"naobi":[0,5,0.0],"nare":[0,230,0.4723],"nareen":[0,25,0.0],"nareli":[0,5,0.0],"naryiah":[0,122,0.4173],"nashally":[0,5,0.0],"nashyah":[0,10,0.0],"nashyla":[0,5,0.0],"natellie":[0,12,0.0],"natural":[0,5,0.0],"naviyah":[0,110,0.4083],"nayala":[0,5,0.0],"nayomie":[0,40,0.0],"nazarena":[0,5,0.0],"nazariah":[0,221,0.4689],"neelah":[0,141,0.4298],"neilah":[0,80,0.0],"neriyah":[0,311,0.4986],"niari":[0,98,0.0],"nincy":[0,5,0.0],"ninive":[0,29,0.0],"niylah":[0,676,0.566],"nkara":[0,5,0.0],"nkiyah":[0,5,0.0],"noelany":[0,5,0.0],"nouha":[0,5,0.0],"novaly":[0,114,0.4114],"ny":[0,11,0.0],"nyarah":[0,37,0.0],"nyauna":[0,16,0.0],"nyilah":[0,91,0.0],"onaya":[0,5,0.0],"onyka":[0,5,0.0],"oriya":[0,124,0.4187],"paikea":[0,13,0.0],"paisly":[0,208,0.4636],"paley":[0,17,0.0],"parmis":[0,44,0.0],"pavneet":[0,10,0.0],"payeton":[0,75,0.0],"peiton":[0,25,0.0],"piya":[0,118,0.4144],"pravallika":[0,5,0.0],"preciousa":[0,5,0.0],"preslea":[0,107,0.4059],"pricsila":[0,5,0.0],"quinley":[0,725,0.5721],"raaga":[0,131,0.4235],"rachely":[0,5,0.0],"rahmya":[0,15,0.0],"ramatu":[0,5,0.0],"ranijah":[0,45,0.0],"rayahna":[0,43,0.0],"raylynne":[0,127,0.4208],"reilynn":[0,274,0.4876],"remini":[0,64,0.0],"remiyah":[0,63,0.0],"rinna":[0,44,0.0],"rishitha":[0,23,0.0],"ritzy":[0,5,0.0],"rmonie":[0,5,0.0],"ronaya":[0,5,0.0],"rozlin":[0,41,0.0],"rukaya":[0,93,0.0],"ryeleigh":[0,118,0.4144],"saania":[0,11,0.0],"sabriel":[45,159,0.36],"sachel":[0,5,0.0],"sadhika":[0,27,0.0],"salamata":[0,10,0.0],"salet":[0,10,0.0],"samaiah":[0,47,0.0],"samaree":[0,28,0.0],"samayra":[0,192,0.4567],"samerra":[0,10,0.0],"sanskruti":[0,5,0.0],"sareya":[0,86,0.0],"sarinah":[0,80,0.0],"seerat":[0,418,0.5242],"sehaj":[195,282,0.3167],"semirah":[0,15,0.0],"serentiy":[0,26,0.0],"shaivi":[0,120,0.4158],"shakayia":[0,5,0.0],"shamariya":[0,11,0.0],"shamyla":[0,32,0.0],"shanijah":[0,18,0.0],"sharaven":[0,5,0.0],"shayndel":[0,5,0.0],"sheali":[0,5,0.0],"sheylyn":[0,5,0.0],"sheza":[0,156,0.4386],"shiniya":[0,10,0.0],"shrika":[0,176,0.4491],"shruthika":[0,50,0.0],"shyauna":[0,5,0.0],"silja":[0,11,0.0],"simin":[0,5,0.0],"simryn":[0,21,0.0],"sinaiya":[0,5,0.0],"siniyah":[0,152,0.4364],"sinya":[0,17,0.0],"siyana":[0,228,0.4716],"skarlette":[0,326,0.5026],"skyasia":[0,5,0.0],"sofiah":[0,247,0.4785],"soleia":[0,290,0.4925],"sorraya":[0,5,0.0],"srika":[0,5,0.0],"subhana":[0,20,0.0],"sufia":[0,65,0.0],"suniyah":[0,57,0.0],"syah":[0,64,0.0],"tahany":[0,10,0.0],"talajiah":[0,5,0.0],"tamarria":[0,16,0.0],"tamayah":[0,16,0.0],"tamyria":[0,5,0.0],"tanaa":[0,5,0.0],"tanicha":[0,5,0.0],"taniyla":[0,47,0.0],"tarralyn":[0,5,0.0],"tasanee":[0,48,0.0],"taslin":[0,5,0.0],"tavishi":[0,18,0.0],"taycee":[0,67,0.0],"teaisha":[0,5,0.0],"tejasvi":[0,106,0.4051],"thailynn":[0,16,0.0],"thamia":[0,5,0.0],"tierna":[0,5,0.0],"tithi":[0,16,0.0],"tnyah":[0,17,0.0],"tomaya":[0,5,0.0],"torika":[0,5,0.0],"trelynn":[18,32,0.0],"trinadi":[0,5,0.0],"tsunami":[0,33,0.0],"tullia":[0,16,0.0],"tuscany":[0,35,0.0],"tyasiah":[0,27,0.0],"tyli":[0,42,0.0],"tyriona":[0,5,0.0],"tytanna":[0,5,0.0],"umama":[0,5,0.0],"uriyah":[467,219,0.3862],"valasia":[0,5,0.0],"veronicka":[0,5,0.0],"wiyaka":[0,5,0.0],"xeniah":[0,20,0.0],"xolani":[67,829,0.5463],"yahzarah":[0,5,0.0],"yanitzi":[0,5,0.0],"yansi":[0,15,0.0],"yarazet":[0,5,0.0],"yarelys":[0,25,0.0],"yasiris":[0,5,0.0],"yasmiin":[0,10,0.0],"yatzil":[0,488,0.5377],"yedid":[0,10,0.0],"yency":[0,11,0.0],"yohali":[0,29,0.0],"yuria":[0,20,0.0],"zakerria":[0,10,0.0],"zalet":[0,5,0.0],"zamyia":[0,118,0.4144],"zani":[101,153,0.2897],"zanyyah":[0,5,0.0],"zeidi":[0,5,0.0],"zerenity":[0,321,0.5013],"zimya":[0,10,0.0],"ziyonna":[0,238,0.4753],"zmya":[0,64,0.0],"zuhey":[0,17,0.0],"zunaira":[0,377,0.5153],"jkwon":[173,0,0.4476],"brasen":[209,0,0.464],"kentravion":[31,0,0.0],"aariz":[1141,0,0.6115],"garv":[119,0,0.4151],"karmello":[667,0,0.5648],"xzorion":[43,0,0.0],"cowen":[260,0,0.483],"jaydien":[180,0,0.4511],"kraven":[144,0,0.4317],"kauan":[351,0,0.5091],"vihaan":[5361,0,0.7458],"bam":[80,0,0.0],"madox":[351,0,0.5091],"mohid":[222,0,0.4693],"ramarion":[33,0,0.0],"reyli":[844,13,0.5777],"rhone":[277,35,0.4429],"daejhun":[18,0,0.0],"enson":[58,0,0.0],"kanyae":[18,0,0.0],"merric":[170,0,0.4461],"quanye":[11,0,0.0],"theoden":[602,0,0.5559],"alekxander":[122,0,0.4173],"cylan":[152,0,0.4364],"espn":[173,55,0.3578],"izaiyah":[285,0,0.491],"kaisen":[2314,12,0.6698],"keiden":[435,0,0.5277],"kentavion":[46,0,0.0],"osias":[391,0,0.5184],"yanik":[16,0,0.0],"aaiden":[955,0,0.596],"acen":[654,0,0.5631],"atreal":[16,0,0.0],"chalino":[83,0,0.0],"draeden":[129,0,0.4221],"gaije":[14,0,0.0],"jaqavious":[9,0,0.0],"jossiah":[309,0,0.498],"kden":[214,0,0.4661],"khamauri":[76,10,0.0],"khotan":[9,0,0.0],"mythias":[84,0,0.0],"yosiah":[371,0,0.5139],"addan":[21,0,0.0],"aref":[19,0,0.0],"beauden":[629,0,0.5597],"camani":[15,112,0.3711],"conye":[8,0,0.0],"daksh":[724,0,0.5719],"damorion":[39,0,0.0],"domarion":[13,0,0.0],"domynic":[37,0,0.0],"elizha":[8,5,0.0],"exander":[123,0,0.418],"heder":[8,0,0.0],"jadir":[57,0,0.0],"jamaryon":[13,0,0.0],"josyah":[470,0,0.5344],"jyrine":[15,0,0.0],"kabeer":[173,0,0.4476],"kinnick":[497,5,0.5348],"konyae":[8,0,0.0],"kowen":[424,0,0.5255],"kyonte":[8,0,0.0],"mattix":[505,0,0.5407],"maxemiliano":[314,0,0.4994],"mossimo":[43,0,0.0],"nandan":[163,0,0.4424],"prahlad":[59,0,0.0],"sincer":[53,0,0.0],"tajir":[53,0,0.0],"temarion":[22,0,0.0],"teyton":[92,0,0.0],"thaden":[55,0,0.0],"tymarion":[141,0,0.4298],"vitali":[123,0,0.418],"yerik":[1269,0,0.6207],"yigit":[70,0,0.0],"zadyn":[380,0,0.516],"zaevion":[333,0,0.5045],"zyrion":[101,0,0.4009],"abdishakur":[69,0,0.0],"adden":[114,0,0.4114],"agam":[422,148,0.4081],"alber":[32,0,0.0],"amaje":[28,0,0.0],"anush":[85,5,0.0],"atavion":[21,0,0.0],"avaneesh":[220,0,0.4685],"ayon":[90,0,0.0],"brailen":[194,0,0.4576],"calel":[191,0,0.4562],"carloseduardo":[21,0,0.0],"chozen":[980,172,0.5209],"corden":[36,0,0.0],"davant":[14,0,0.0],"deagen":[80,0,0.0],"demariyon":[17,0,0.0],"erjon":[28,0,0.0],"ernad":[12,0,0.0],"eshwar":[60,0,0.0],"ethann":[55,0,0.0],"ghabriel":[12,0,0.0],"haidan":[61,6,0.0],"hamir":[42,0,0.0],"heaton":[79,0,0.0],"illias":[126,0,0.4201],"izan":[1730,0,0.6476],"izsak":[73,0,0.0],"jahmarion":[111,0,0.4091],"jaivan":[51,0,0.0],"jaivin":[77,0,0.0],"jaiyden":[177,5,0.4396],"jalijah":[41,0,0.0],"jamaire":[28,0,0.0],"jaryan":[113,0,0.4106],"jasier":[209,0,0.464],"jaydun":[23,0,0.0],"jaythen":[134,0,0.4254],"jayvis":[14,0,0.0],"jerimya":[20,0,0.0],"jorien":[7,0,0.0],"kaiis":[13,0,0.0],"kashton":[6848,50,0.7622],"kaustubh":[30,0,0.0],"keyaan":[245,0,0.4778],"khamarion":[109,0,0.4075],"khamoni":[55,52,0.2086],"koden":[190,0,0.4558],"kongcheng":[18,0,0.0],"kosi":[12,0,0.0],"kyen":[112,0,0.4098],"liko":[22,0,0.0],"lucah":[591,0,0.5543],"malyki":[68,0,0.0],"markavion":[63,0,0.0],"markhi":[86,0,0.0],"miyon":[43,0,0.0],"naeshawn":[19,0,0.0],"nayshaun":[41,0,0.0],"noeh":[148,0,0.4341],"omaurion":[7,0,0.0],"pason":[28,0,0.0],"rahmeir":[31,0,0.0],"raice":[7,0,0.0],"rodin":[41,0,0.0],"sajen":[7,0,0.0],"shaiden":[73,0,0.0],"shreyan":[569,0,0.551],"skanda":[168,0,0.4451],"srihan":[372,0,0.5141],"tade":[33,0,0.0],"taejohn":[7,0,0.0],"tason":[53,0,0.0],"tekhi":[16,0,0.0],"tisean":[13,0,0.0],"tiziano":[70,0,0.0],"tremarion":[39,0,0.0],"trynt":[30,0,0.0],"tyyon":[24,0,0.0],"yandell":[151,0,0.4358],"yandiel":[299,0,0.4951],"zabrian":[12,0,0.0],"zael":[539,0,0.5463],"zahki":[129,0,0.4221],"zevan":[12,0,0.0],"zy":[78,6,0.0],"abdirahim":[111,0,0.4091],"abinav":[44,0,0.0],"aemon":[145,0,0.4323],"afeef":[16,0,0.0],"ahaan":[912,0,0.592],"amarre":[44,0,0.0],"ammiel":[89,0,0.0],"andwele":[29,0,0.0],"arata":[40,0,0.0],"ascher":[495,0,0.5389],"ashtion":[6,0,0.0],"ayyan":[204,0,0.4619],"azaryah":[163,261,0.3235],"balen":[124,0,0.4187],"bohden":[164,0,0.443],"bol":[29,0,0.0],"braxden":[205,0,0.4624],"brysan":[151,0,0.4358],"caliber":[247,17,0.4531],"canye":[13,0,0.0],"casten":[177,0,0.4496],"caymus":[6,0,0.0],"dacorion":[22,0,0.0],"damaje":[6,0,0.0],"devlan":[29,0,0.0],"eiden":[1570,0,0.6392],"emontae":[30,0,0.0],"enry":[26,0,0.0],"epic":[205,48,0.3894],"essiah":[151,0,0.4358],"ethanmatthew":[18,0,0.0],"evion":[29,0,0.0],"ezekeial":[12,0,0.0],"fedor":[147,0,0.4335],"gabrael":[51,0,0.0],"gamari":[6,0,0.0],"gemarion":[6,0,0.0],"hawke":[191,0,0.4562],"hemi":[186,95,0.3242],"huck":[1488,0,0.6345],"hutchinson":[222,0,0.4693],"hyde":[299,0,0.4951],"isahias":[16,0,0.0],"ishak":[73,0,0.0],"ishiah":[6,0,0.0],"izahia":[22,0,0.0],"jacaleb":[37,0,0.0],"jacarey":[6,0,0.0],"jaco":[61,0,0.0],"jacovian":[6,0,0.0],"jacoy":[13,0,0.0],"jagroop":[6,0,0.0],"jaiwan":[6,0,0.0],"jakanye":[6,0,0.0],"jakyri":[150,0,0.4352],"jaleil":[80,0,0.0],"jaliek":[6,0,0.0],"jamahri":[48,0,0.0],"jamikel":[6,0,0.0],"janmarcos":[6,0,0.0],"jashandeep":[11,0,0.0],"jaxzen":[100,0,0.4],"jesusenrique":[6,0,0.0],"jhamarion":[6,0,0.0],"jhovanni":[25,0,0.0],"jiwoo":[23,56,0.0],"joedon":[6,0,0.0],"johnan":[6,0,0.0],"jonael":[637,0,0.5608],"jostyn":[62,12,0.0],"kahnye":[6,0,0.0],"kaizen":[2138,26,0.659],"kajus":[17,0,0.0],"kamahri":[18,0,0.0],"kamareon":[61,0,0.0],"kamaury":[109,5,0.3933],"kan":[6,0,0.0],"karthikeya":[337,0,0.5055],"kayky":[6,0,0.0],"kelland":[6,0,0.0],"kener":[78,0,0.0],"kenshaun":[6,0,0.0],"kenshiro":[11,0,0.0],"ketcher":[41,0,0.0],"keydon":[35,0,0.0],"keymoni":[64,106,0.2782],"kinkade":[27,0,0.0],"kobin":[64,0,0.0],"koehn":[212,0,0.4653],"kothan":[6,0,0.0],"kovin":[26,0,0.0],"kveon":[85,0,0.0],"kyeler":[11,0,0.0],"kymel":[24,0,0.0],"laden":[110,0,0.4083],"laterrious":[11,0,0.0],"laven":[11,5,0.0],"leeam":[344,0,0.5073],"lio":[343,0,0.5071],"lohith":[66,0,0.0],"lukkas":[16,0,0.0],"malakiah":[56,0,0.0],"malosi":[165,0,0.4435],"mamoun":[28,0,0.0],"mekkhi":[6,0,0.0],"mikolas":[18,0,0.0],"mkai":[58,0,0.0],"mukul":[13,0,0.0],"muzamil":[182,0,0.452],"ness":[88,0,0.0],"nisiah":[6,0,0.0],"nizaiah":[36,0,0.0],"nodin":[31,0,0.0],"oluwamayowa":[11,0,0.0],"omarious":[12,0,0.0],"onasis":[12,0,0.0],"ozmar":[36,0,0.0],"prabhav":[113,0,0.4106],"prabhnoor":[30,57,0.0],"priyanshu":[6,0,0.0],"purav":[61,0,0.0],"qalid":[6,0,0.0],"radi":[11,0,0.0],"raniel":[24,0,0.0],"raqib":[6,0,0.0],"revan":[949,84,0.5538],"roanin":[79,0,0.0],"rokas":[18,0,0.0],"romarion":[39,0,0.0],"ryanjacob":[17,0,0.0],"rykin":[107,0,0.4059],"saahas":[109,0,0.4075],"saaim":[11,0,0.0],"safin":[17,0,0.0],"sanay":[142,24,0.3798],"sef":[12,0,0.0],"sephiroth":[94,0,0.0],"shivansh":[1060,0,0.6051],"sirwilliam":[42,0,0.0],"sourish":[62,0,0.0],"taevian":[31,0,0.0],"tanav":[138,0,0.428],"thanos":[105,0,0.4042],"tomarion":[39,0,0.0],"trabian":[6,0,0.0],"tramarion":[25,0,0.0],"traylin":[45,0,0.0],"tysir":[71,0,0.0],"vikranth":[90,0,0.0],"vincint":[30,0,0.0],"wasseem":[6,0,0.0],"xanthus":[11,0,0.0],"yatin":[12,0,0.0],"yordin":[112,0,0.4098],"zabien":[21,0,0.0],"zephen":[42,0,0.0],"zymier":[253,0,0.4806],"zyquavion":[11,0,0.0],"aadin":[124,0,0.4187],"aaronjosh":[5,0,0.0],"aatish":[16,0,0.0],"abdihakim":[65,0,0.0],"abdisalam":[5,0,0.0],"abdulsalam":[103,0,0.4026],"abhirup":[10,0,0.0],"abraar":[12,0,0.0],"abubakary":[10,0,0.0],"adari":[10,0,0.0],"adarion":[38,0,0.0],"aitan":[110,0,0.4083],"ajoni":[10,0,0.0],"akshath":[133,0,0.4248],"alekzandr":[22,0,0.0],"alwaleed":[82,0,0.0],"alyan":[183,0,0.4525],"amarey":[52,5,0.0],"amid":[10,0,0.0],"amruth":[5,0,0.0],"amuri":[17,0,0.0],"andrewjacob":[12,0,0.0],"anesti":[5,5,0.0],"anoki":[5,0,0.0],"antowne":[5,0,0.0],"aquavion":[5,0,0.0],"arjae":[5,0,0.0],"aydenn":[698,13,0.5599],"aydien":[144,0,0.4317],"ayoob":[13,0,0.0],"ayson":[653,0,0.563],"balmore":[10,0,0.0],"baryn":[5,0,0.0],"bayani":[117,0,0.4136],"benjermen":[5,0,0.0],"bensen":[379,0,0.5157],"bocar":[16,0,0.0],"boulder":[10,0,0.0],"bowdie":[30,0,0.0],"brandonkyle":[5,0,0.0],"braxdon":[110,0,0.4083],"breccan":[366,0,0.5127],"brentson":[11,0,0.0],"broox":[136,0,0.4267],"bruk":[122,0,0.4173],"byson":[39,0,0.0],"caisen":[459,0,0.5324],"carlanthony":[5,0,0.0],"cayler":[5,0,0.0],"chande":[5,0,0.0],"chanina":[15,0,0.0],"chirstian":[10,0,0.0],"christopherdavi":[5,0,0.0],"cobain":[195,0,0.458],"daigan":[35,0,0.0],"daiten":[11,0,0.0],"damaury":[18,0,0.0],"damerion":[33,0,0.0],"damorian":[32,0,0.0],"darmarcus":[5,0,0.0],"daschel":[107,0,0.4059],"dathen":[17,0,0.0],"davidjoseph":[5,0,0.0],"dawoud":[117,0,0.4136],"deacan":[71,0,0.0],"deepesh":[5,0,0.0],"dekanye":[5,0,0.0],"demicah":[5,0,0.0],"denilzon":[5,0,0.0],"destined":[38,0,0.0],"deus":[29,0,0.0],"devarion":[68,0,0.0],"dhylan":[45,0,0.0],"dison":[11,0,0.0],"divyesh":[33,0,0.0],"dmareon":[5,0,0.0],"dmauri":[100,0,0.4],"dmaurion":[5,0,0.0],"dominant":[5,0,0.0],"donquavious":[5,0,0.0],"dreden":[206,0,0.4628],"dren":[34,0,0.0],"dreveon":[42,0,0.0],"dreyvin":[5,0,0.0],"eathin":[23,0,0.0],"edden":[44,6,0.0],"edher":[37,0,0.0],"eland":[85,0,0.0],"eliasib":[5,0,0.0],"emerzon":[23,0,0.0],"emilian":[180,0,0.4511],"enri":[35,0,0.0],"esrom":[62,0,0.0],"evanston":[10,0,0.0],"evontae":[5,0,0.0],"farouq":[21,0,0.0],"franclin":[5,0,0.0],"gabril":[11,0,0.0],"gaiden":[16,0,0.0],"geobani":[10,0,0.0],"geovoni":[18,0,0.0],"gobind":[10,0,0.0],"habacuc":[10,0,0.0],"harshit":[41,0,0.0],"hemza":[5,0,0.0],"heshy":[52,0,0.0],"hriday":[124,0,0.4187],"husai":[5,0,0.0],"ibraaheem":[5,0,0.0],"imauri":[5,0,0.0],"isair":[96,0,0.0],"issaias":[18,0,0.0],"ivion":[17,0,0.0],"jabryan":[18,0,0.0],"jacary":[21,0,0.0],"jacobian":[15,0,0.0],"jacobryan":[5,0,0.0],"jacodi":[5,0,0.0],"jadaan":[22,0,0.0],"jagan":[25,0,0.0],"jahaud":[5,0,0.0],"jahkobe":[15,0,0.0],"jahkye":[40,0,0.0],"jahzion":[71,0,0.0],"jaicen":[11,0,0.0],"jaiman":[5,0,0.0],"jakaleb":[61,0,0.0],"jakwaun":[5,0,0.0],"jakyan":[5,0,0.0],"jalein":[10,0,0.0],"jaleo":[30,0,0.0],"jamariyon":[56,0,0.0],"jamarrian":[20,0,0.0],"jamarvion":[5,0,0.0],"jameire":[66,0,0.0],"jamius":[19,0,0.0],"jamyis":[10,0,0.0],"jandre":[45,0,0.0],"janyus":[5,0,0.0],"jarden":[19,0,0.0],"jaremiah":[44,0,0.0],"jasonjr":[5,0,0.0],"jaterion":[10,0,0.0],"jaterious":[5,0,0.0],"jayanthony":[42,0,0.0],"jaydein":[10,0,0.0],"jayrin":[5,0,0.0],"jayvee":[10,0,0.0],"jazier":[219,0,0.4681],"jereimah":[5,0,0.0],"jhavier":[5,0,0.0],"jimarion":[29,0,0.0],"jiquez":[5,0,0.0],"joevani":[28,0,0.0],"johaan":[76,0,0.0],"johnmarco":[5,0,0.0],"joshuajohn":[5,0,0.0],"jqwon":[5,0,0.0],"junayd":[58,0,0.0],"junito":[10,0,0.0],"justhin":[5,0,0.0],"jusuf":[60,0,0.0],"jyran":[22,0,0.0],"kadmiel":[75,0,0.0],"kaie":[5,0,0.0],"kaiyon":[149,0,0.4346],"kalden":[101,0,0.4009],"kalmen":[127,0,0.4208],"kamarian":[154,0,0.4375],"kamaurion":[28,0,0.0],"kamerion":[55,0,0.0],"kanari":[57,126,0.3116],"kassen":[50,0,0.0],"kavanaugh":[5,0,0.0],"kawliga":[48,0,0.0],"kayveon":[208,0,0.4636],"keayon":[5,0,0.0],"kedan":[55,0,0.0],"keimari":[113,24,0.3525],"keiontay":[5,0,0.0],"keirnan":[20,0,0.0],"kelveon":[5,0,0.0],"kemareon":[17,0,0.0],"kemarius":[16,0,0.0],"kemaury":[51,0,0.0],"kenyea":[5,0,0.0],"kevious":[5,0,0.0],"keyden":[609,0,0.5569],"khylon":[125,0,0.4194],"khyon":[77,0,0.0],"kimarion":[62,0,0.0],"kmarion":[104,0,0.4034],"kodjo":[5,0,0.0],"kodyn":[12,0,0.0],"koffi":[20,0,0.0],"kokou":[5,0,0.0],"koye":[16,0,0.0],"krishn":[16,0,0.0],"kristupas":[5,0,0.0],"kyelan":[20,0,0.0],"kymere":[257,0,0.482],"kyo":[194,0,0.4576],"kyvin":[27,0,0.0],"laiden":[347,0,0.5081],"lamanuel":[5,0,0.0],"lazlo":[186,0,0.4539],"leiland":[617,0,0.5581],"leniel":[100,0,0.4],"leul":[283,0,0.4904],"levente":[48,0,0.0],"lual":[29,0,0.0],"lukah":[770,0,0.5773],"macaden":[12,0,0.0],"madux":[22,0,0.0],"mahit":[17,0,0.0],"makei":[22,0,0.0],"makih":[91,0,0.0],"makii":[39,0,0.0],"makyi":[89,0,0.0],"malikiah":[92,0,0.0],"mannan":[36,0,0.0],"markai":[91,10,0.3612],"markwon":[15,0,0.0],"marqueal":[5,0,0.0],"mastin":[11,0,0.0],"mckai":[79,0,0.0],"mckye":[12,0,0.0],"mekih":[5,0,0.0],"michealangelo":[11,0,0.0],"milin":[16,0,0.0],"morion":[5,0,0.0],"muhanad":[105,0,0.4042],"mykhael":[28,0,0.0],"mylen":[221,10,0.4523],"nahir":[99,0,0.0],"naiim":[36,0,0.0],"nathanielle":[5,0,0.0],"navion":[55,0,0.0],"naylan":[10,5,0.0],"nehki":[5,0,0.0],"neimiah":[15,0,0.0],"nickhil":[5,0,0.0],"nishon":[5,0,0.0],"nuh":[296,0,0.4943],"nyrek":[5,0,0.0],"nysaiah":[33,0,0.0],"oghenetega":[27,0,0.0],"oluwaferanmi":[118,31,0.3442],"omauri":[128,0,0.4214],"ozkar":[5,0,0.0],"ozziel":[64,0,0.0],"paraskevas":[5,0,0.0],"quadair":[17,0,0.0],"quamari":[84,0,0.0],"quamarion":[18,0,0.0],"quamire":[5,0,0.0],"queshon":[5,0,0.0],"raaghav":[85,0,0.0],"racer":[103,0,0.4026],"raeed":[10,0,0.0],"raffy":[5,0,0.0],"randin":[5,0,0.0],"raydan":[127,0,0.4208],"reston":[44,0,0.0],"reznor":[153,0,0.4369],"rhoan":[46,0,0.0],"richardjames":[5,0,0.0],"riddik":[92,0,0.0],"rigdon":[203,0,0.4615],"riquelme":[61,0,0.0],"rishith":[90,0,0.0],"romari":[164,0,0.443],"ronmel":[10,0,0.0],"ruot":[5,0,0.0],"saalim":[22,0,0.0],"saathvik":[195,0,0.458],"sabit":[10,0,0.0],"sadaq":[5,0,0.0],"sadiel":[123,0,0.418],"saimon":[33,0,0.0],"salahudin":[19,0,0.0],"samatar":[69,0,0.0],"sameem":[5,0,0.0],"samere":[73,0,0.0],"samurai":[30,0,0.0],"sarp":[113,0,0.4106],"scion":[21,0,0.0],"sebashtian":[95,0,0.0],"semajai":[5,0,0.0],"semajay":[63,0,0.0],"severen":[5,0,0.0],"sevy":[15,11,0.0],"shaid":[5,0,0.0],"shehroz":[5,0,0.0],"shubhan":[16,0,0.0],"sidy":[33,0,0.0],"simbarashe":[5,0,0.0],"sinue":[10,0,0.0],"smaran":[153,0,0.4369],"sory":[10,0,0.0],"spandan":[10,0,0.0],"tagg":[87,0,0.0],"tajahn":[5,0,0.0],"tanden":[19,0,0.0],"tayeshawn":[5,0,0.0],"thijs":[112,0,0.4098],"tieg":[15,0,0.0],"tokala":[10,0,0.0],"tovi":[52,43,0.0],"tug":[35,0,0.0],"tyere":[5,0,0.0],"uzayr":[25,0,0.0],"vahn":[58,0,0.0],"vayden":[192,0,0.4567],"vian":[305,32,0.4575],"victorjr":[10,0,0.0],"vyom":[619,0,0.5583],"wesson":[2961,5,0.6933],"xaiden":[1369,0,0.6273],"xaven":[44,0,0.0],"xyler":[260,0,0.483],"yakob":[36,0,0.0],"yakub":[116,0,0.4129],"yali":[31,95,0.3167],"yazir":[172,0,0.4471],"yerick":[255,0,0.4813],"yoltzin":[87,101,0.2444],"yosue":[16,0,0.0],"youri":[10,0,0.0],"yumin":[5,0,0.0],"yustin":[11,0,0.0],"yuvan":[992,0,0.5993],"zacorian":[15,0,0.0],"zaelyn":[370,321,0.3041],"zaion":[125,0,0.4194],"zakwon":[5,0,0.0],"zayaan":[565,0,0.5504],"zephon":[5,0,0.0],"zerin":[34,0,0.0],"zesar":[5,0,0.0],"zhander":[10,0,0.0],"zimere":[73,0,0.0],"zyir":[755,0,0.5756],"zymarion":[145,0,0.4323],"zymeir":[258,0,0.4823],"zyrell":[159,0,0.4403],"yarisbel":[0,81,0.0],"jolett":[0,33,0.0],"malaiya":[0,479,0.5361],"secora":[0,35,0.0],"ziza":[0,105,0.4042],"camora":[0,555,0.5489],"rayssa":[0,90,0.0],"syriana":[0,312,0.4988],"malay":[0,117,0.4136],"swara":[0,911,0.5919],"yaribeth":[0,33,0.0],"aahana":[0,942,0.5948],"ahilyn":[0,102,0.4017],"gracieann":[0,119,0.4151],"kaileena":[0,155,0.4381],"milenka":[0,46,0.0],"nilynn":[0,40,0.0],"yolet":[0,38,0.0],"zyeria":[0,40,0.0],"aarna":[0,2711,0.6866],"aleera":[0,166,0.444],"attoria":[0,19,0.0],"ellasyn":[0,483,0.5368],"joemy":[0,12,0.0],"joleth":[0,28,0.0],"kimmora":[0,115,0.4121],"malai":[0,196,0.4585],"marijose":[0,182,0.452],"nevayah":[0,409,0.5223],"ranyia":[0,70,0.0],"yaniyah":[0,131,0.4235],"aaralynn":[0,309,0.498],"aniiya":[0,22,0.0],"anwita":[0,249,0.4792],"bethzy":[0,360,0.5113],"davanee":[0,223,0.4697],"juridia":[0,42,0.0],"khamiyah":[0,216,0.4669],"krisily":[0,11,0.0],"makyna":[0,66,0.0],"mirrah":[0,44,0.0],"aayla":[0,817,0.5824],"ameliya":[0,319,0.5008],"azzareya":[0,32,0.0],"eriyah":[0,132,0.4241],"janye":[0,69,0.0],"jaretzi":[0,354,0.5098],"jorga":[0,55,0.0],"karmah":[0,201,0.4606],"lailee":[0,157,0.4392],"lillyonna":[0,286,0.4913],"milay":[0,10,0.0],"priseis":[0,162,0.4419],"thessaly":[0,86,0.0],"aowyn":[0,81,0.0],"ashritha":[0,78,0.0],"ashwika":[0,128,0.4214],"avangelina":[0,102,0.4017],"danahi":[0,118,0.4144],"dayris":[0,9,0.0],"eliette":[0,1032,0.6027],"ellexa":[0,9,0.0],"haleigha":[0,52,0.0],"jakayah":[0,25,0.0],"jolet":[0,15,0.0],"kihara":[0,61,0.0],"lianah":[0,140,0.4292],"lul":[0,20,0.0],"mylove":[0,88,0.0],"nicolly":[0,59,0.0],"nilyne":[0,9,0.0],"niyathi":[0,54,0.0],"persais":[0,90,0.0],"raziah":[0,196,0.4585],"romya":[0,33,0.0],"silence":[0,9,0.0],"xaniya":[0,87,0.0],"xiclaly":[0,60,0.0],"xoie":[0,180,0.4511],"abiona":[0,19,0.0],"alektra":[0,20,0.0],"alyanah":[0,173,0.4476],"amorah":[0,759,0.576],"annyah":[0,24,0.0],"antonasia":[0,17,0.0],"anyja":[0,18,0.0],"arshi":[0,154,0.4375],"azeriah":[22,54,0.0],"azyria":[0,141,0.4298],"braeleigh":[0,499,0.5396],"ciniya":[0,51,0.0],"emjay":[54,90,0.2698],"holyn":[0,24,0.0],"itzela":[0,31,0.0],"jasly":[0,59,0.0],"jaydie":[0,55,0.0],"jaylissa":[0,77,0.0],"kailiana":[0,103,0.4026],"kamoria":[0,156,0.4386],"kamyl":[0,8,0.0],"kasiyah":[8,188,0.4397],"kaydience":[0,32,0.0],"khamaria":[0,52,0.0],"kimoria":[0,56,0.0],"laiana":[0,242,0.4768],"leajah":[0,15,0.0],"lilliauna":[0,108,0.4067],"lillyauna":[0,87,0.0],"lillyen":[0,68,0.0],"lyrique":[0,153,0.4369],"magdalynn":[0,184,0.453],"mahdiya":[0,168,0.4451],"marjae":[0,18,0.0],"miamor":[0,804,0.5811],"midnight":[5,22,0.0],"miha":[0,48,0.0],"nalaysia":[0,99,0.0],"neria":[0,62,0.0],"nyellie":[0,285,0.491],"oakleigh":[17,3694,0.7106],"paytience":[0,88,0.0],"rasia":[0,8,0.0],"rileyann":[0,204,0.4619],"saily":[0,90,0.0],"sakyra":[0,26,0.0],"sanaaya":[0,18,0.0],"sanijah":[0,46,0.0],"shamayah":[0,16,0.0],"silvanna":[0,94,0.0],"siniah":[0,39,0.0],"suniya":[0,43,0.0],"tramiya":[0,33,0.0],"vaniyah":[0,115,0.4121],"yagmur":[0,56,0.0],"yojana":[0,41,0.0],"yolany":[0,44,0.0],"zarela":[0,39,0.0],"ziraili":[0,26,0.0],"zulmy":[0,50,0.0],"aalaysha":[0,17,0.0],"aanvi":[0,516,0.5425],"abuk":[0,76,0.0],"achol":[0,95,0.0],"adalai":[0,159,0.4403],"adelayda":[0,53,0.0],"adhira":[0,348,0.5083],"ahniah":[0,12,0.0],"alazah":[0,7,0.0],"albree":[0,43,0.0],"aliyssa":[0,7,0.0],"aluel":[0,100,0.4],"amahni":[0,41,0.0],"ameriya":[0,28,0.0],"anahya":[0,22,0.0],"anastyn":[0,223,0.4697],"anelisse":[0,163,0.4424],"anelys":[0,76,0.0],"angelynna":[0,7,0.0],"anjaly":[0,7,0.0],"annaleigha":[0,205,0.4624],"annelisse":[0,58,0.0],"anuva":[0,39,0.0],"arieyonna":[0,7,0.0],"armelle":[0,32,0.0],"avaleigh":[0,1164,0.6132],"awo":[0,7,0.0],"ayram":[0,38,0.0],"azuri":[6,915,0.589],"brecklynn":[0,274,0.4876],"breseis":[0,26,0.0],"brinya":[0,23,0.0],"ceres":[0,39,0.0],"chrisalyn":[0,12,0.0],"daania":[0,43,0.0],"daviah":[0,25,0.0],"edom":[0,79,0.0],"eliannah":[0,250,0.4796],"elimar":[0,13,0.0],"eshaal":[0,767,0.577],"finleigh":[0,1060,0.6051],"floresita":[0,19,0.0],"genevy":[0,35,0.0],"harmonii":[0,603,0.5561],"hasley":[0,104,0.4034],"iryana":[0,17,0.0],"jabriyah":[0,13,0.0],"jaili":[0,38,0.0],"jalaiyah":[0,214,0.4661],"jaleeya":[0,125,0.4194],"jaliana":[0,92,0.0],"janeisy":[0,44,0.0],"janiayah":[0,7,0.0],"jaylise":[0,84,0.0],"jazzalynn":[0,100,0.4],"jenelly":[0,39,0.0],"jesabel":[0,26,0.0],"jmiyah":[0,42,0.0],"josslin":[0,93,0.0],"kahlynn":[0,26,0.0],"kailany":[0,1327,0.6246],"kamorah":[0,496,0.5391],"kawaii":[10,35,0.0],"kayleighann":[0,22,0.0],"keimara":[0,7,0.0],"khamil":[28,75,0.2931],"kinzlee":[0,1468,0.6333],"kylinn":[16,257,0.4587],"lashyia":[0,20,0.0],"leshly":[0,29,0.0],"lexsey":[0,14,0.0],"lillieanne":[0,31,0.0],"lizzi":[0,13,0.0],"lylianah":[0,45,0.0],"lylianna":[0,140,0.4292],"lylliana":[0,81,0.0],"lynleigh":[0,657,0.5635],"magalli":[0,7,0.0],"mahita":[0,32,0.0],"malae":[0,49,0.0],"meela":[0,539,0.5463],"miia":[0,230,0.4723],"mollykate":[0,7,0.0],"mystik":[0,7,0.0],"nabeelah":[0,7,0.0],"naiema":[0,54,0.0],"nashyia":[0,17,0.0],"nataria":[0,7,0.0],"paitynn":[0,298,0.4948],"pashance":[0,25,0.0],"paysen":[95,196,0.3319],"rakhia":[0,37,0.0],"rayniah":[0,52,0.0],"ridhima":[0,225,0.4704],"roha":[0,71,0.0],"roree":[0,91,0.0],"rosselin":[0,22,0.0],"sahasra":[0,1638,0.6429],"saniaya":[0,24,0.0],"shaelen":[0,7,0.0],"sheyly":[0,38,0.0],"sniya":[0,18,0.0],"sonai":[0,17,0.0],"sree":[0,13,0.0],"sritha":[0,126,0.4201],"suriyah":[0,213,0.4657],"tranaya":[0,7,0.0],"tranya":[0,18,0.0],"yeila":[0,74,0.0],"yeily":[0,160,0.4408],"yeiri":[0,29,0.0],"yoeli":[0,33,0.0],"zamarah":[0,155,0.4381],"zarae":[0,87,0.0],"zaydah":[0,85,0.0],"zayli":[0,214,0.4661],"ziraily":[0,7,0.0],"zuliana":[0,41,0.0],"aalayjah":[0,6,0.0],"aashia":[0,6,0.0],"acelin":[135,19,0.3835],"adilynne":[0,144,0.4317],"adlen":[0,23,0.0],"adysson":[0,69,0.0],"aelan":[0,6,0.0],"aeralyn":[0,90,0.0],"akeara":[0,6,0.0],"aleshka":[0,86,0.0],"aliezah":[0,6,0.0],"aliveah":[0,86,0.0],"amai":[48,173,0.367],"amiayah":[0,64,0.0],"amruta":[0,16,0.0],"analaya":[0,400,0.5204],"anarie":[0,78,0.0],"aneea":[0,12,0.0],"aneres":[0,50,0.0],"annastyn":[0,237,0.4749],"annison":[0,61,0.0],"anslea":[0,32,0.0],"antashia":[0,6,0.0],"anyela":[0,115,0.4121],"anyelis":[0,20,0.0],"apples":[0,6,0.0],"arleht":[0,11,0.0],"aroura":[0,126,0.4201],"arreana":[0,6,0.0],"aubrin":[0,21,0.0],"aubrynn":[0,173,0.4476],"aurionna":[0,13,0.0],"avalin":[0,105,0.4042],"ayleth":[0,58,0.0],"azarea":[0,31,0.0],"azareya":[0,54,0.0],"azareyah":[0,6,0.0],"azarriah":[0,53,0.0],"azriella":[0,233,0.4735],"azziah":[5,6,0.0],"bahiyah":[0,6,0.0],"beira":[0,13,0.0],"bellamarie":[0,254,0.481],"berklie":[0,196,0.4585],"beyda":[0,6,0.0],"binah":[0,63,0.0],"breyawna":[0,14,0.0],"breylyn":[0,6,0.0],"briceidy":[0,25,0.0],"brielee":[0,28,0.0],"brisna":[0,6,0.0],"britzel":[0,30,0.0],"brylyn":[22,126,0.3695],"cedrea":[0,6,0.0],"chloejane":[0,6,0.0],"ciasia":[0,11,0.0],"ciyanna":[0,22,0.0],"cniya":[0,39,0.0],"criscia":[0,6,0.0],"cyrenity":[0,29,0.0],"cyriah":[0,154,0.4375],"dafnee":[0,39,0.0],"daiah":[0,6,0.0],"danaly":[0,133,0.4248],"danapaola":[0,23,0.0],"dareli":[0,61,0.0],"darielys":[0,192,0.4567],"dniyah":[0,183,0.4525],"eeva":[0,177,0.4496],"eidy":[0,6,0.0],"eilee":[0,293,0.4934],"emileah":[0,68,0.0],"emmalisa":[0,13,0.0],"emunah":[0,344,0.5073],"emyleigh":[0,6,0.0],"enaiya":[0,13,0.0],"eveana":[0,6,0.0],"gennesy":[0,11,0.0],"gianah":[0,151,0.4358],"guinivere":[0,22,0.0],"gyana":[0,27,0.0],"heavenlyn":[0,6,0.0],"icsis":[0,18,0.0],"iliani":[0,116,0.4129],"iliany":[0,128,0.4214],"iliyana":[0,136,0.4267],"iyunna":[0,26,0.0],"izzah":[0,219,0.4681],"jadelynne":[0,11,0.0],"jadyne":[22,26,0.0],"jaecee":[0,13,0.0],"jakalia":[0,6,0.0],"jakiaya":[0,6,0.0],"jamirrah":[0,23,0.0],"janaijah":[0,6,0.0],"janaliz":[0,6,0.0],"jayelle":[0,233,0.4735],"jaylann":[0,11,0.0],"jayonah":[0,6,0.0],"jazara":[0,391,0.5184],"jazzell":[0,58,0.0],"jemily":[0,16,0.0],"jeraldi":[0,11,0.0],"jhamya":[0,6,0.0],"jmyah":[0,11,0.0],"josalyne":[0,6,0.0],"kabreyia":[0,15,0.0],"kamonie":[0,86,0.0],"karmya":[0,11,0.0],"kaybrie":[0,53,0.0],"keenyah":[0,17,0.0],"keinya":[0,6,0.0],"kendylle":[0,17,0.0],"kennae":[0,6,0.0],"kennison":[44,60,0.2327],"khamora":[0,184,0.453],"kialie":[0,6,0.0],"kiearah":[0,11,0.0],"kiyarra":[0,6,0.0],"kricia":[0,6,0.0],"kristabelle":[0,30,0.0],"kulia":[0,12,0.0],"laaibah":[0,61,0.0],"laelia":[0,228,0.4716],"lakyria":[0,6,0.0],"lamariya":[0,21,0.0],"leahana":[0,37,0.0],"leeaira":[0,11,0.0],"lelu":[0,47,0.0],"leyonna":[0,65,0.0],"lileah":[0,24,0.0],"liliauna":[0,74,0.0],"lilleigh":[0,169,0.4456],"lilyahna":[0,166,0.444],"livianna":[0,182,0.452],"lolah":[0,236,0.4746],"luzdary":[0,15,0.0],"mackanzie":[0,11,0.0],"madalie":[0,35,0.0],"maddee":[0,13,0.0],"maddyx":[203,222,0.2746],"maeryn":[0,100,0.4],"magdelana":[0,6,0.0],"makahia":[0,6,0.0],"makea":[0,6,0.0],"makenly":[0,115,0.4121],"makynze":[0,52,0.0],"malaiyah":[0,409,0.5223],"manroop":[0,70,0.0],"manushri":[0,6,0.0],"maribela":[0,28,0.0],"maryjoe":[0,6,0.0],"maryjose":[0,57,0.0],"maryorie":[0,18,0.0],"mavi":[71,185,0.3481],"maziah":[140,166,0.2697],"mckayden":[6,6,0.0],"meiyah":[0,29,0.0],"mekyah":[0,6,0.0],"meliana":[0,188,0.4548],"meriya":[0,6,0.0],"meryam":[0,84,0.0],"mikayia":[0,12,0.0],"mikoto":[0,6,0.0],"milaina":[0,109,0.4075],"minseo":[0,6,0.0],"mireily":[0,23,0.0],"mryah":[0,6,0.0],"mumina":[0,65,0.0],"myara":[0,21,0.0],"myasiah":[0,30,0.0],"mykaella":[0,6,0.0],"naedelyn":[0,6,0.0],"nahara":[0,220,0.4685],"nataleah":[0,86,0.0],"nazarah":[0,11,0.0],"nazyah":[0,25,0.0],"neilani":[0,256,0.4816],"neolani":[0,6,0.0],"nijayah":[0,11,0.0],"niriah":[0,11,0.0],"niyae":[0,11,0.0],"nizhonii":[0,6,0.0],"nkiya":[0,6,0.0],"noorah":[0,137,0.4273],"nyiasia":[0,6,0.0],"nyvea":[0,6,0.0],"ololade":[0,32,0.0],"paedyn":[0,29,0.0],"perseis":[0,24,0.0],"prapti":[0,118,0.4144],"preslei":[0,117,0.4136],"prithika":[0,23,0.0],"rahmo":[0,18,0.0],"rahniya":[0,56,0.0],"ramyia":[0,38,0.0],"ranaiya":[0,6,0.0],"ranajah":[0,6,0.0],"ratzy":[0,63,0.0],"rawda":[0,46,0.0],"rhoslyn":[0,25,0.0],"riyonna":[0,6,0.0],"rowynn":[5,493,0.534],"ruqayah":[0,46,0.0],"saheli":[0,57,0.0],"salayah":[0,184,0.453],"samaire":[0,22,0.0],"samirrah":[0,6,0.0],"sanija":[0,18,0.0],"sapphyre":[0,69,0.0],"sarala":[0,6,0.0],"sayeeda":[0,12,0.0],"saylar":[0,19,0.0],"searah":[0,6,0.0],"sisley":[0,17,0.0],"skyah":[0,73,0.0],"solea":[0,72,0.0],"solstice":[16,153,0.4034],"soniah":[0,34,0.0],"sreshta":[0,212,0.4653],"sunidhi":[0,11,0.0],"sweden":[0,73,0.0],"tailee":[0,45,0.0],"tanmayi":[0,32,0.0],"taycie":[0,16,0.0],"teijah":[0,6,0.0],"tikayla":[0,11,0.0],"timayah":[0,6,0.0],"tkyra":[0,6,0.0],"torrianna":[0,6,0.0],"treniyah":[0,75,0.0],"triya":[0,6,0.0],"tykirra":[0,6,0.0],"uliana":[0,92,0.0],"wicahpi":[0,6,0.0],"xitlalie":[0,6,0.0],"yahara":[0,19,0.0],"yarianna":[0,108,0.4067],"yenna":[0,39,0.0],"yireh":[18,75,0.0],"yuktha":[0,108,0.4067],"yuleysi":[0,12,0.0],"yureli":[0,46,0.0],"zahriyah":[0,105,0.4042],"zahyra":[0,47,0.0],"zaisha":[0,35,0.0],"zanaia":[0,6,0.0],"zaneya":[0,16,0.0],"zeni":[0,104,0.4034],"aalyia":[0,5,0.0],"aariyonna":[0,5,0.0],"aashiyana":[0,12,0.0],"aashni":[0,52,0.0],"abyade":[0,10,0.0],"achan":[0,5,0.0],"adaia":[0,388,0.5178],"adalei":[0,216,0.4669],"adanelly":[0,33,0.0],"addaline":[0,266,0.485],"addasyn":[0,114,0.4114],"addeson":[0,10,0.0],"adelyna":[0,195,0.458],"aderyn":[0,34,0.0],"adhithi":[0,51,0.0],"adlina":[0,5,0.0],"adreyona":[0,5,0.0],"adrija":[0,77,0.0],"adriunna":[0,5,0.0],"adyanna":[0,11,0.0],"adynn":[74,17,0.0],"aeleen":[0,15,0.0],"agnesa":[0,5,0.0],"ahlona":[0,10,0.0],"ahylin":[0,13,0.0],"aidah":[0,179,0.4506],"ailah":[0,365,0.5125],"akerria":[0,10,0.0],"aksa":[0,32,0.0],"alaunna":[0,11,0.0],"alevia":[0,39,0.0],"aleyshka":[0,32,0.0],"aliahna":[0,110,0.4083],"alissondra":[0,5,0.0],"aliviyah":[0,153,0.4369],"aliyanah":[0,187,0.4544],"allizae":[0,5,0.0],"almudena":[0,26,0.0],"amazin":[18,131,0.3821],"amelee":[0,5,0.0],"amenata":[0,5,0.0],"amiira":[0,101,0.4009],"amillya":[0,108,0.4067],"amishi":[0,45,0.0],"amorae":[0,30,0.0],"amyracle":[0,85,0.0],"anaaya":[0,222,0.4693],"anaceli":[0,41,0.0],"anaeja":[0,5,0.0],"analice":[0,20,0.0],"analiya":[0,218,0.4677],"analydia":[0,5,0.0],"anamile":[0,5,0.0],"anastin":[0,20,0.0],"angeliza":[0,11,0.0],"angellyna":[0,5,0.0],"angelysse":[0,12,0.0],"angielina":[0,30,0.0],"anisette":[0,5,0.0],"aniyaha":[0,10,0.0],"aniyja":[0,11,0.0],"anjely":[0,15,0.0],"anjolena":[0,5,0.0],"anjolique":[0,5,0.0],"anlly":[0,15,0.0],"annacarolina":[0,15,0.0],"annakiya":[0,5,0.0],"anneliz":[0,25,0.0],"annelys":[0,16,0.0],"antaniyah":[0,41,0.0],"anyhia":[0,10,0.0],"anzleigh":[0,98,0.0],"aoki":[0,127,0.4208],"aravis":[0,64,0.0],"arelyn":[0,74,0.0],"arfa":[0,198,0.4593],"arianis":[0,72,0.0],"aribeth":[0,10,0.0],"arihana":[0,155,0.4381],"aritzel":[0,129,0.4221],"ariyannah":[0,84,0.0],"ariyel":[0,138,0.428],"arrabella":[0,204,0.4619],"arriah":[0,169,0.4456],"ashgan":[0,5,0.0],"ashyiah":[0,5,0.0],"asiane":[0,5,0.0],"atong":[0,15,0.0],"atzhiry":[0,11,0.0],"audianna":[0,92,0.0],"aunnika":[0,5,0.0],"auriella":[0,578,0.5524],"auttum":[0,5,0.0],"avayah":[0,2064,0.6629],"avelinn":[0,5,0.0],"averionna":[0,10,0.0],"avienda":[0,27,0.0],"avya":[0,207,0.4632],"avyn":[276,324,0.3],"ayaina":[0,5,0.0],"ayris":[5,164,0.4324],"azalynn":[0,151,0.4358],"azareeyah":[0,5,0.0],"azumi":[0,85,0.0],"azyiah":[0,184,0.453],"azyriah":[0,101,0.4009],"bellicia":[0,5,0.0],"benedicte":[0,5,0.0],"bhoomi":[0,73,0.0],"breesa":[0,5,0.0],"brianie":[0,5,0.0],"brielynn":[0,226,0.4708],"brisaida":[0,5,0.0],"brisseyda":[0,10,0.0],"bronagh":[0,5,0.0],"brynly":[0,53,0.0],"caidy":[0,5,0.0],"calayah":[0,235,0.4742],"camaiya":[0,10,0.0],"camyia":[0,45,0.0],"carlysia":[0,35,0.0],"cashlynn":[0,170,0.4461],"cedrianna":[0,26,0.0],"celebrity":[0,11,0.0],"chaislyn":[0,5,0.0],"chanyce":[0,5,0.0],"chariel":[0,5,0.0],"charlay":[0,10,0.0],"chaynee":[0,10,0.0],"cheridyn":[0,5,0.0],"chizara":[0,304,0.4966],"christyonna":[0,10,0.0],"cianny":[0,10,0.0],"cidra":[0,5,0.0],"cimara":[0,5,0.0],"cing":[0,624,0.559],"clarabella":[0,72,0.0],"condoleezza":[0,5,0.0],"daeonna":[0,29,0.0],"daileen":[0,79,0.0],"dalasha":[0,5,0.0],"dalayni":[0,11,0.0],"daleila":[0,5,0.0],"dalyssa":[0,10,0.0],"damaiah":[0,5,0.0],"damariya":[0,17,0.0],"damyria":[0,31,0.0],"daneysha":[0,5,0.0],"darianny":[0,211,0.4649],"dashiya":[0,33,0.0],"davyne":[0,31,0.0],"deavyn":[0,10,0.0],"deilyn":[0,40,0.0],"delaya":[0,41,0.0],"denize":[0,21,0.0],"desaraye":[0,10,0.0],"deshaila":[0,5,0.0],"deziya":[0,89,0.0],"dianaliz":[0,18,0.0],"diary":[0,35,0.0],"dionni":[0,41,0.0],"divany":[0,18,0.0],"diyanna":[0,10,0.0],"edelin":[0,84,0.0],"efrata":[0,187,0.4544],"efthymia":[0,5,0.0],"eimaan":[0,36,0.0],"eirini":[0,70,0.0],"eiyanna":[0,5,0.0],"elenny":[0,22,0.0],"ellawyn":[0,145,0.4323],"ellissia":[0,10,0.0],"ellysia":[0,78,0.0],"emariah":[0,40,0.0],"emberlin":[0,130,0.4228],"emilyjane":[0,5,0.0],"emmalin":[0,695,0.5684],"emmilia":[0,142,0.4305],"emmory":[5,179,0.4407],"emyla":[0,40,0.0],"enaja":[0,5,0.0],"enaysia":[0,5,0.0],"envi":[0,102,0.4017],"erieanna":[0,15,0.0],"escarleth":[0,61,0.0],"eshana":[0,69,0.0],"ethny":[0,5,0.0],"evalyna":[0,51,0.0],"eygpt":[0,10,0.0],"fardosa":[0,21,0.0],"fatyma":[0,10,0.0],"faylee":[0,34,0.0],"fayte":[0,11,0.0],"fiala":[0,10,0.0],"gabie":[0,5,0.0],"galatia":[0,5,0.0],"galicia":[0,5,0.0],"galileah":[0,256,0.4816],"geidi":[0,5,0.0],"gemelli":[0,5,0.0],"genessys":[0,16,0.0],"geriah":[0,21,0.0],"geriyah":[0,23,0.0],"gizele":[0,45,0.0],"gracynn":[0,178,0.4501],"graecyn":[5,62,0.0],"greenlea":[0,15,0.0],"haala":[0,5,0.0],"hadasah":[0,157,0.4392],"hadiatou":[0,22,0.0],"hadlei":[0,95,0.0],"haileymarie":[0,26,0.0],"hamsini":[0,117,0.4136],"hanniah":[0,5,0.0],"hansini":[0,103,0.4026],"hargun":[25,208,0.4227],"harmany":[0,29,0.0],"harshi":[0,10,0.0],"haseena":[0,15,0.0],"hassanatou":[0,16,0.0],"hayaa":[0,58,0.0],"hazelann":[0,13,0.0],"hazelyn":[0,342,0.5068],"hazy":[0,10,0.0],"heylie":[0,5,0.0],"hinata":[12,424,0.5134],"hiwot":[0,17,0.0],"humayra":[0,78,0.0],"iayana":[0,21,0.0],"ifra":[0,95,0.0],"inaaya":[0,1803,0.6512],"infantfemale":[0,5,0.0],"inya":[0,5,0.0],"irandy":[0,5,0.0],"irany":[0,50,0.0],"isairis":[0,5,0.0],"ishya":[0,32,0.0],"israela":[0,42,0.0],"issela":[0,10,0.0],"itohan":[0,5,0.0],"itta":[0,38,0.0],"ivanah":[0,5,0.0],"iviannah":[0,5,0.0],"iyoni":[0,19,0.0],"jacely":[0,10,0.0],"jadiamond":[0,5,0.0],"jaeonna":[0,53,0.0],"jaeya":[0,28,0.0],"jahmaya":[0,23,0.0],"jahria":[0,5,0.0],"jaidi":[0,5,0.0],"jainie":[0,5,0.0],"jakeara":[0,5,0.0],"jakirrah":[0,5,0.0],"jalaa":[0,5,0.0],"jaleaha":[0,39,0.0],"jamely":[0,18,0.0],"jamerra":[0,5,0.0],"jamyri":[6,22,0.0],"janessah":[0,41,0.0],"janetzi":[0,5,0.0],"jannay":[0,15,0.0],"jannesa":[0,5,0.0],"janyha":[0,10,0.0],"janyhia":[0,5,0.0],"japleen":[0,89,0.0],"jashyra":[0,20,0.0],"jayniah":[0,46,0.0],"jazarah":[0,247,0.4785],"jeanaya":[0,10,0.0],"jenaia":[0,5,0.0],"jenalis":[0,21,0.0],"jenavy":[0,10,0.0],"jenis":[0,5,0.0],"jennevie":[0,5,0.0],"jerkayla":[0,5,0.0],"jernya":[0,10,0.0],"jescie":[0,5,0.0],"jeweleah":[0,5,0.0],"jewelz":[115,360,0.4057],"jezlin":[0,5,0.0],"jhamilet":[0,5,0.0],"jhaniyah":[0,31,0.0],"jhia":[0,22,0.0],"jiannah":[0,68,0.0],"jimyah":[0,16,0.0],"jinaya":[0,5,0.0],"jinessa":[0,5,0.0],"joanah":[0,23,0.0],"joelia":[0,15,0.0],"johanah":[0,5,0.0],"jollette":[0,5,0.0],"jorjia":[0,40,0.0],"joselen":[0,5,0.0],"joshelin":[0,14,0.0],"joslen":[0,16,0.0],"josselynn":[0,56,0.0],"jossilyn":[0,97,0.0],"jossilynn":[0,5,0.0],"jovee":[0,216,0.4669],"julenny":[0,5,0.0],"julixa":[0,5,0.0],"juritza":[0,5,0.0],"juvia":[0,246,0.4782],"jyanna":[0,39,0.0],"jyonna":[0,5,0.0],"kadidja":[0,45,0.0],"kaeliegh":[0,17,0.0],"kaelyne":[0,5,0.0],"kahniya":[0,22,0.0],"kailiyah":[0,97,0.0],"kalaila":[0,25,0.0],"kaliha":[0,10,0.0],"kallissa":[0,30,0.0],"kamaira":[0,34,0.0],"kamariana":[0,69,0.0],"kamarra":[0,65,0.0],"kameah":[0,81,0.0],"kamoree":[0,24,0.0],"kanaria":[0,23,0.0],"kanijha":[0,5,0.0],"karlia":[0,11,0.0],"karoll":[0,5,0.0],"kasside":[0,5,0.0],"kaylany":[0,159,0.4403],"kayme":[0,5,0.0],"kazlynn":[0,69,0.0],"keilie":[0,25,0.0],"keity":[0,34,0.0],"kelsyn":[0,16,0.0],"kemberlyn":[0,5,0.0],"kenzli":[0,305,0.4969],"keylea":[0,5,0.0],"khaleigh":[0,30,0.0],"khamaya":[0,62,0.0],"khloi":[0,194,0.4576],"kilana":[0,5,0.0],"kimorra":[0,24,0.0],"kiniah":[0,5,0.0],"kinlyn":[0,42,0.0],"kinverlin":[0,5,0.0],"kiylah":[0,86,0.0],"kleo":[29,332,0.4704],"kowsar":[0,99,0.0],"krischelle":[0,10,0.0],"kurtlyn":[0,5,0.0],"kyliejo":[0,16,0.0],"kyralee":[0,12,0.0],"kyrea":[0,5,0.0],"lailyn":[0,258,0.4823],"lamea":[0,5,0.0],"lamoni":[18,74,0.0],"lanikai":[0,25,0.0],"lanyjah":[0,10,0.0],"laureana":[0,10,0.0],"layeska":[0,5,0.0],"laylee":[0,245,0.4778],"leairah":[0,23,0.0],"leeara":[0,5,0.0],"leilauni":[0,5,0.0],"leilyn":[0,73,0.0],"leiona":[0,21,0.0],"liczy":[0,5,0.0],"lilliona":[0,130,0.4228],"lilyauna":[0,124,0.4187],"lilykate":[0,50,0.0],"livya":[0,44,0.0],"lluvy":[0,5,0.0],"lucymarie":[0,5,0.0],"lylie":[0,58,0.0],"lyllie":[0,87,0.0],"lynnasia":[0,10,0.0],"lynnia":[0,23,0.0],"lyrika":[0,76,0.0],"lytzi":[0,5,0.0],"maali":[0,39,0.0],"mackaylah":[0,5,0.0],"mackaylee":[0,13,0.0],"macklyn":[73,257,0.3923],"madalina":[0,119,0.4151],"madhura":[0,11,0.0],"madicella":[0,5,0.0],"maezie":[0,213,0.4657],"mahiyah":[0,37,0.0],"makiyha":[0,22,0.0],"malaija":[0,34,0.0],"maliana":[0,33,0.0],"mariaisabella":[0,53,0.0],"marializ":[0,154,0.4375],"marianah":[0,62,0.0],"markaylah":[0,35,0.0],"markyia":[0,5,0.0],"maryfaith":[0,5,0.0],"masia":[0,5,0.0],"mauriyah":[0,24,0.0],"maymuna":[0,147,0.4335],"mayreli":[0,111,0.4091],"maziyah":[0,219,0.4681],"mckeena":[0,5,0.0],"melah":[0,397,0.5198],"melan":[0,11,0.0],"memarie":[0,17,0.0],"menah":[0,16,0.0],"meritza":[0,5,0.0],"mesiyah":[52,12,0.0],"mhia":[0,64,0.0],"mhina":[0,5,0.0],"miakota":[0,5,0.0],"miina":[0,5,0.0],"mikan":[0,5,0.0],"mikayala":[0,5,0.0],"mikaylynn":[0,5,0.0],"mikhiya":[0,5,0.0],"milanni":[0,236,0.4746],"mireia":[0,43,0.0],"moksha":[0,288,0.4919],"moniq":[0,5,0.0],"morea":[0,50,0.0],"myanah":[0,16,0.0],"myianna":[0,10,0.0],"mykiyah":[0,10,0.0],"nadelie":[0,10,0.0],"nadrea":[0,5,0.0],"nahjai":[0,10,0.0],"nahyma":[0,5,0.0],"naiome":[0,5,0.0],"nalya":[0,10,0.0],"namiyah":[0,209,0.464],"narya":[0,79,0.0],"nashiyah":[0,24,0.0],"nashmia":[0,5,0.0],"nasiha":[0,22,0.0],"natyra":[0,15,0.0],"naudiya":[0,10,0.0],"ndey":[0,5,0.0],"neilyn":[0,16,0.0],"neriya":[0,74,0.0],"nevach":[0,5,0.0],"nierra":[0,22,0.0],"nihitha":[0,24,0.0],"nikaiyah":[0,10,0.0],"nilyn":[0,10,0.0],"nirja":[0,15,0.0],"nissy":[0,27,0.0],"niyia":[0,5,0.0],"noalani":[0,24,0.0],"nube":[0,56,0.0],"nyaijah":[0,5,0.0],"nyalee":[0,59,0.0],"nyari":[0,400,0.5204],"nyemia":[0,5,0.0],"nyiema":[0,22,0.0],"nylen":[103,5,0.3879],"osmary":[0,51,0.0],"pacience":[0,25,0.0],"paislie":[0,480,0.5362],"paradyce":[0,5,0.0],"paree":[0,15,0.0],"pariz":[0,16,0.0],"parmida":[0,26,0.0],"peightyn":[0,162,0.4419],"phallyn":[0,23,0.0],"poet":[113,212,0.3277],"poorvi":[0,30,0.0],"prajna":[0,135,0.4261],"quimora":[0,5,0.0],"raely":[0,75,0.0],"raigyn":[0,22,0.0],"rakeb":[0,174,0.4481],"ramatoulie":[0,5,0.0],"rayiona":[0,11,0.0],"raylei":[0,105,0.4042],"reylynn":[0,139,0.4286],"rielyn":[5,226,0.4625],"rihan":[318,72,0.4225],"ritisha":[0,108,0.4067],"roarie":[0,5,0.0],"rodrianna":[0,10,0.0],"rokiya":[0,5,0.0],"rubianna":[0,15,0.0],"rugiatu":[0,5,0.0],"rylah":[0,421,0.5249],"saakshi":[0,10,0.0],"saaniya":[0,10,0.0],"sabriye":[0,5,0.0],"sadeel":[0,83,0.0],"samanthagrace":[0,22,0.0],"sameia":[0,5,0.0],"samijah":[0,15,0.0],"samorah":[0,71,0.0],"saniye":[0,5,0.0],"sanjitha":[0,10,0.0],"sanniyah":[0,24,0.0],"saraswati":[0,10,0.0],"sariha":[0,5,0.0],"sayali":[0,15,0.0],"sayri":[0,12,0.0],"seidi":[0,17,0.0],"semajah":[0,26,0.0],"serenety":[0,11,0.0],"shaiyan":[0,5,0.0],"shanely":[0,5,0.0],"shaniyha":[0,10,0.0],"shaniyla":[0,15,0.0],"shanylah":[0,44,0.0],"shanze":[0,10,0.0],"shayera":[0,37,0.0],"sheniyah":[0,22,0.0],"shouana":[0,12,0.0],"shyaira":[0,10,0.0],"shykerria":[0,5,0.0],"siclaly":[0,22,0.0],"siriyah":[0,75,0.0],"snezhana":[0,15,0.0],"sniyah":[0,58,0.0],"sofina":[0,59,0.0],"sohani":[0,11,0.0],"sohni":[0,15,0.0],"somarah":[0,5,0.0],"srinija":[0,5,0.0],"sthefani":[0,5,0.0],"strawberry":[0,16,0.0],"suhur":[0,5,0.0],"suleymi":[0,19,0.0],"sumehra":[0,10,0.0],"summerrain":[0,19,0.0],"sunem":[0,36,0.0],"sunniva":[0,153,0.4369],"surely":[0,10,0.0],"sveva":[0,5,0.0],"symaya":[0,5,0.0],"symora":[0,37,0.0],"taara":[0,99,0.0],"tabassum":[0,28,0.0],"tahmya":[0,11,0.0],"takaylah":[0,16,0.0],"tanaeja":[0,15,0.0],"tanihya":[0,11,0.0],"tanilah":[0,14,0.0],"taqwa":[0,192,0.4567],"tashyla":[0,10,0.0],"tavey":[0,5,0.0],"teagyn":[18,276,0.4634],"teighan":[5,227,0.4629],"telise":[0,5,0.0],"tenijah":[0,5,0.0],"teslyn":[0,41,0.0],"teyani":[0,11,0.0],"tilley":[0,229,0.472],"travianna":[0,5,0.0],"travionna":[0,19,0.0],"trenadi":[0,5,0.0],"trenasia":[0,5,0.0],"trennedy":[0,10,0.0],"tyairah":[0,5,0.0],"tyazia":[0,10,0.0],"tydaisha":[0,5,0.0],"tydrianna":[0,5,0.0],"tykaria":[0,5,0.0],"tyranae":[0,5,0.0],"tziry":[0,60,0.0],"vaani":[0,561,0.5498],"valyssa":[0,5,0.0],"vayla":[0,276,0.4882],"vianay":[0,5,0.0],"vylet":[0,91,0.0],"widad":[0,18,0.0],"wilniya":[0,5,0.0],"xally":[0,5,0.0],"xinyi":[0,132,0.4241],"xiomari":[0,48,0.0],"yaelis":[0,152,0.4364],"yaharia":[0,5,0.0],"yaili":[0,5,0.0],"yalana":[0,5,0.0],"yanesa":[0,11,0.0],"yanetzy":[0,15,0.0],"yaniz":[0,10,0.0],"yarett":[0,5,0.0],"yazmarie":[0,15,0.0],"yeili":[0,45,0.0],"yitsel":[0,5,0.0],"yosan":[0,27,0.0],"yukina":[0,26,0.0],"yunnuen":[0,5,0.0],"yuritzia":[0,5,0.0],"zaela":[0,183,0.4525],"zahmya":[0,21,0.0],"zailee":[0,478,0.5359],"zailyn":[193,312,0.334],"zaleigh":[0,215,0.4665],"zenai":[0,20,0.0],"zenaiya":[0,5,0.0],"zymeria":[0,68,0.0],"zyniya":[0,27,0.0],"jayceon":[13087,35,0.8214],"yadier":[821,0,0.5829],"khriz":[184,0,0.453],"matix":[610,0,0.5571],"ashmit":[44,0,0.0],"gurshaan":[207,0,0.4632],"daddy":[21,0,0.0],"davari":[207,0,0.4632],"johnbenedict":[14,0,0.0],"ayven":[975,198,0.5102],"fardy":[13,0,0.0],"jhace":[226,0,0.4708],"anhuar":[12,0,0.0],"aidric":[465,0,0.5335],"azarion":[262,0,0.4837],"gahel":[106,0,0.4051],"gianlucca":[188,0,0.4548],"greko":[17,0,0.0],"krishiv":[1079,0,0.6066],"neyzer":[11,0,0.0],"abdikadir":[185,0,0.4534],"antrel":[10,0,0.0],"jecaryous":[59,0,0.0],"kaian":[146,0,0.4329],"kailand":[168,14,0.4172],"keymarion":[99,0,0.0],"malekai":[244,0,0.4775],"tmarion":[10,0,0.0],"traiton":[23,0,0.0],"zaidyn":[1587,31,0.6295],"geovonnie":[38,0,0.0],"giankarlo":[61,0,0.0],"hicham":[14,0,0.0],"jarmarion":[9,0,0.0],"karmine":[115,5,0.3985],"mohib":[68,0,0.0],"rodner":[49,0,0.0],"samanyu":[186,0,0.4539],"siddhanth":[168,0,0.4451],"talus":[44,0,0.0],"yuniel":[131,0,0.4235],"zyquarius":[29,0,0.0],"abukar":[38,0,0.0],"ademir":[37,0,0.0],"adonias":[296,0,0.4943],"ahan":[320,0,0.501],"akilles":[54,0,0.0],"ale":[18,5,0.0],"anyelo":[128,0,0.4214],"aydian":[119,0,0.4151],"dainian":[13,0,0.0],"dakarri":[172,0,0.4471],"daycen":[44,0,0.0],"deken":[34,0,0.0],"demaj":[26,0,0.0],"devari":[49,0,0.0],"izaan":[419,0,0.5244],"jadier":[77,0,0.0],"jex":[110,0,0.4083],"juanesteban":[8,0,0.0],"kobyn":[96,0,0.0],"laksh":[377,0,0.5153],"leelan":[537,0,0.546],"melaki":[24,0,0.0],"nakye":[39,0,0.0],"natavious":[20,0,0.0],"navier":[124,0,0.4187],"nehan":[126,0,0.4201],"omarii":[123,0,0.418],"saharsh":[414,0,0.5234],"samik":[180,0,0.4511],"tegen":[32,5,0.0],"teodor":[428,0,0.5263],"zaravion":[8,0,0.0],"abshir":[93,0,0.0],"achillies":[98,0,0.0],"achyut":[58,0,0.0],"adhitya":[17,0,0.0],"aiven":[436,8,0.5199],"aiydan":[32,0,0.0],"ajax":[416,0,0.5238],"akarsh":[41,0,0.0],"allijah":[47,0,0.0],"amartya":[35,0,0.0],"artorius":[71,0,0.0],"ashaz":[131,0,0.4235],"aydrian":[380,56,0.4601],"aymaan":[54,0,0.0],"bhuvan":[55,0,0.0],"bisher":[12,0,0.0],"braycen":[342,0,0.5068],"camauri":[163,76,0.3244],"camp":[159,0,0.4403],"carmyne":[47,0,0.0],"dacion":[30,0,0.0],"dellen":[7,0,0.0],"demeir":[67,0,0.0],"dominykas":[7,0,0.0],"eloi":[65,0,0.0],"espyn":[7,137,0.4107],"fardi":[7,0,0.0],"fayt":[14,0,0.0],"ginobili":[7,0,0.0],"grissom":[31,0,0.0],"ilai":[230,0,0.4723],"jacarion":[56,0,0.0],"jahtavious":[7,0,0.0],"jakyren":[95,0,0.0],"jassir":[71,0,0.0],"jonhenry":[7,0,0.0],"jymere":[56,0,0.0],"kailor":[138,56,0.3255],"kaius":[1793,0,0.6507],"kalix":[269,0,0.486],"kamaehu":[35,0,0.0],"kanton":[150,0,0.4352],"karder":[315,13,0.4832],"kaysar":[18,0,0.0],"keimarion":[51,0,0.0],"kentin":[17,0,0.0],"khamir":[109,0,0.4075],"khye":[149,0,0.4346],"kohan":[169,0,0.4456],"lastat":[12,0,0.0],"laydon":[115,0,0.4121],"maan":[102,0,0.4017],"maddoc":[85,0,0.0],"makal":[7,0,0.0],"makeen":[85,0,0.0],"mantas":[23,0,0.0],"manuelle":[14,0,0.0],"masun":[49,0,0.0],"mavrik":[676,0,0.566],"megh":[22,0,0.0],"nahzier":[18,0,0.0],"nasr":[83,0,0.0],"pilot":[160,0,0.4408],"piyush":[35,0,0.0],"raafay":[7,0,0.0],"raahil":[86,0,0.0],"rafuel":[21,0,0.0],"ruhan":[291,0,0.4928],"safir":[126,0,0.4201],"sakariye":[58,0,0.0],"saksham":[85,0,0.0],"silus":[220,0,0.4685],"taysir":[24,0,0.0],"teyo":[96,0,0.0],"thomias":[7,0,0.0],"trayten":[38,0,0.0],"tyhler":[7,0,0.0],"tyjhawn":[7,0,0.0],"vuk":[239,0,0.4757],"xandar":[27,0,0.0],"yandy":[12,20,0.0],"yaviel":[63,0,0.0],"yiovanni":[40,0,0.0],"yussuf":[224,0,0.47],"zadin":[93,0,0.0],"zethan":[74,0,0.0],"zinedine":[156,0,0.4386],"aadhav":[311,0,0.4986],"abdiqani":[27,0,0.0],"abdussamad":[6,0,0.0],"abrien":[27,0,0.0],"abubakarr":[47,0,0.0],"aison":[166,0,0.444],"akxel":[25,0,0.0],"alexzandar":[6,0,0.0],"amirr":[166,0,0.444],"amyrion":[6,0,0.0],"antorion":[6,0,0.0],"arshaan":[105,0,0.4042],"cadel":[134,0,0.4254],"cadge":[6,0,0.0],"cadien":[53,0,0.0],"camare":[19,0,0.0],"camerone":[6,0,0.0],"clayden":[106,0,0.4051],"coehn":[23,0,0.0],"crishaun":[6,0,0.0],"dairion":[13,0,0.0],"damajah":[17,0,0.0],"danovan":[6,0,0.0],"darey":[695,0,0.5684],"davohn":[6,0,0.0],"davyan":[42,0,0.0],"daxten":[406,0,0.5217],"denahi":[135,0,0.4261],"detrevion":[11,0,0.0],"dhanesh":[6,0,0.0],"dominicc":[12,0,0.0],"draiven":[16,0,0.0],"dylahn":[12,5,0.0],"eliasz":[20,0,0.0],"eliziah":[29,0,0.0],"elkan":[42,0,0.0],"ethanandrew":[6,0,0.0],"ezavier":[19,0,0.0],"farai":[6,0,0.0],"finnan":[320,0,0.501],"gavvin":[6,0,0.0],"gotti":[123,0,0.418],"hektor":[101,0,0.4009],"henoch":[42,0,0.0],"housten":[11,0,0.0],"isaaq":[17,0,0.0],"isayiah":[6,0,0.0],"jaceon":[1160,0,0.6129],"jaeon":[58,0,0.0],"jakale":[17,0,0.0],"jakavion":[118,0,0.4144],"jakaylon":[12,0,0.0],"jaksen":[72,0,0.0],"jakyi":[60,0,0.0],"jakyrie":[257,0,0.482],"jamirion":[11,0,0.0],"jamontay":[6,0,0.0],"jamyrion":[31,0,0.0],"jandiel":[155,0,0.4381],"janier":[29,0,0.0],"jaqualen":[12,0,0.0],"jasaiah":[159,10,0.4192],"javery":[41,0,0.0],"jaymier":[46,0,0.0],"jaytin":[29,0,0.0],"jeremya":[19,7,0.0],"jhomar":[11,0,0.0],"jibreal":[6,0,0.0],"jisaiah":[43,0,0.0],"jorn":[11,0,0.0],"kabron":[11,0,0.0],"kadeyn":[51,0,0.0],"kaien":[127,0,0.4208],"kairyn":[166,15,0.4141],"kamell":[17,0,0.0],"kamilo":[315,0,0.4997],"kamir":[285,0,0.491],"kannin":[57,0,0.0],"karmyne":[44,0,0.0],"kashus":[256,0,0.4816],"kdyn":[78,0,0.0],"keaden":[105,0,0.4042],"keadon":[11,0,0.0],"keiveon":[6,0,0.0],"kenechi":[31,0,0.0],"keton":[6,0,0.0],"khasim":[17,0,0.0],"khylin":[318,53,0.4405],"koah":[1019,108,0.5519],"koleson":[417,0,0.524],"kouper":[87,0,0.0],"kymarion":[61,0,0.0],"kyston":[145,0,0.4323],"landun":[23,0,0.0],"lasana":[21,0,0.0],"lawsen":[197,5,0.4497],"leam":[337,0,0.5055],"leart":[91,0,0.0],"lelend":[122,0,0.4173],"levyn":[26,22,0.0],"lochlain":[17,0,0.0],"maahir":[240,0,0.476],"macin":[58,0,0.0],"maddock":[166,0,0.444],"mahkel":[20,0,0.0],"makaden":[33,0,0.0],"makario":[31,0,0.0],"malykai":[88,0,0.0],"marcandre":[6,0,0.0],"mclaren":[103,19,0.3523],"mordcha":[58,0,0.0],"motty":[205,0,0.4624],"muse":[77,7,0.0],"naeshaun":[6,0,0.0],"naishawn":[11,0,0.0],"naszire":[6,0,0.0],"nicollas":[32,0,0.0],"nishaan":[88,0,0.0],"nishil":[27,0,0.0],"olurotimi":[6,0,0.0],"omaury":[13,0,0.0],"ozvaldo":[11,0,0.0],"ramazan":[21,0,0.0],"rayder":[190,0,0.4558],"reynier":[11,0,0.0],"ronaldinho":[35,0,0.0],"rubiel":[6,0,0.0],"saboor":[16,0,0.0],"semih":[35,0,0.0],"senay":[153,0,0.4369],"shamore":[6,0,0.0],"shazeb":[6,0,0.0],"shemarion":[6,0,0.0],"shivaan":[239,0,0.4757],"shourya":[482,0,0.5366],"shrish":[29,0,0.0],"statler":[99,0,0.0],"tagert":[6,0,0.0],"tamarious":[18,0,0.0],"tanishq":[42,0,0.0],"tayveion":[11,0,0.0],"tilak":[99,0,0.0],"tquan":[6,0,0.0],"traysean":[6,0,0.0],"tykie":[6,0,0.0],"wilibaldo":[6,0,0.0],"wylder":[2103,206,0.6127],"xavi":[2372,6,0.6735],"xzarion":[6,0,0.0],"yadriel":[448,0,0.5303],"yarley":[6,0,0.0],"yefri":[74,0,0.0],"yosbel":[26,0,0.0],"youseph":[6,0,0.0],"zachi":[11,0,0.0],"ziyun":[11,0,0.0],"zydarius":[37,0,0.0],"zykerion":[16,0,0.0],"zymire":[225,0,0.4704],"aadesh":[22,0,0.0],"aahan":[561,0,0.5498],"aalias":[11,0,0.0],"aamar":[11,0,0.0],"addiel":[149,0,0.4346],"aero":[524,118,0.4583],"ahadu":[55,0,0.0],"aiddan":[17,0,0.0],"akiles":[50,0,0.0],"alijandro":[10,0,0.0],"alius":[90,0,0.0],"aljay":[5,0,0.0],"alusine":[20,0,0.0],"alyias":[24,0,0.0],"alyis":[39,0,0.0],"amont":[5,0,0.0],"anar":[59,0,0.0],"andony":[71,0,0.0],"anjan":[24,0,0.0],"ansumana":[21,0,0.0],"arison":[53,0,0.0],"ariv":[198,0,0.4593],"asahi":[108,0,0.4067],"asdrubal":[5,0,0.0],"ater":[5,0,0.0],"atravion":[5,0,0.0],"averian":[5,0,0.0],"ayomikun":[129,59,0.3121],"bahaa":[15,0,0.0],"barek":[5,0,0.0],"bennjamin":[10,0,0.0],"boomer":[137,0,0.4273],"bracen":[86,0,0.0],"braydenn":[49,0,0.0],"brix":[413,5,0.518],"browdy":[5,0,0.0],"bryceon":[45,0,0.0],"bryice":[5,0,0.0],"brynner":[33,0,0.0],"camerion":[17,0,0.0],"caulder":[127,0,0.4208],"centrell":[11,0,0.0],"chakong":[16,0,0.0],"chrisaun":[5,0,0.0],"chrystyan":[5,0,0.0],"coilin":[10,0,0.0],"corderious":[5,0,0.0],"creedance":[15,7,0.0],"creedon":[89,0,0.0],"cruiz":[47,0,0.0],"cruize":[53,0,0.0],"cuahtemoc":[5,0,0.0],"dacarri":[55,0,0.0],"daemen":[12,0,0.0],"daeson":[65,0,0.0],"daeyon":[15,0,0.0],"dalil":[10,0,0.0],"damarye":[5,0,0.0],"dameko":[10,0,0.0],"damyron":[5,0,0.0],"danek":[48,0,0.0],"dashall":[5,0,0.0],"dauntay":[5,0,0.0],"davinci":[278,0,0.4888],"dayleon":[15,0,0.0],"deivin":[17,0,0.0],"deivy":[48,0,0.0],"dekhari":[129,0,0.4221],"dekon":[21,0,0.0],"dierks":[297,0,0.4946],"divan":[25,0,0.0],"domynik":[11,0,0.0],"dooley":[5,0,0.0],"drace":[78,0,0.0],"dredyn":[232,0,0.4731],"dreyven":[10,0,0.0],"drystan":[78,0,0.0],"edsson":[5,0,0.0],"elih":[138,0,0.428],"elijahjohn":[11,0,0.0],"elijhah":[5,0,0.0],"elior":[158,0,0.4397],"elioth":[23,0,0.0],"elmir":[22,0,0.0],"eryx":[160,0,0.4408],"ethaneal":[5,0,0.0],"eudy":[5,0,0.0],"evrin":[18,0,0.0],"eyvin":[5,0,0.0],"ezikiel":[99,0,0.0],"fahmi":[15,0,0.0],"feysal":[5,0,0.0],"fili":[5,0,0.0],"gatlyn":[237,52,0.4036],"geovonie":[5,0,0.0],"ghavin":[5,0,0.0],"graecen":[5,0,0.0],"greysun":[55,0,0.0],"gwilym":[5,0,0.0],"haedon":[5,0,0.0],"hanniel":[105,0,0.4042],"harveer":[76,0,0.0],"henoc":[11,0,0.0],"iean":[5,0,0.0],"isaiahmichael":[5,0,0.0],"isriel":[5,0,0.0],"izair":[51,0,0.0],"izais":[25,0,0.0],"jabarrie":[5,0,0.0],"jacere":[135,0,0.4261],"jacsen":[33,0,0.0],"jadein":[23,0,0.0],"jaharee":[5,0,0.0],"jahseem":[5,0,0.0],"jahzier":[144,0,0.4317],"jaimari":[11,0,0.0],"jairdan":[17,0,0.0],"jaiveer":[231,0,0.4727],"jaivyn":[245,0,0.4778],"jakylon":[19,0,0.0],"jakyre":[5,0,0.0],"jamarii":[215,5,0.4578],"jamyle":[5,0,0.0],"jasavion":[15,0,0.0],"jasem":[18,0,0.0],"jasire":[133,0,0.4248],"jaterius":[5,0,0.0],"javarrie":[5,0,0.0],"javir":[11,0,0.0],"jayar":[11,0,0.0],"jaylian":[10,0,0.0],"jaymari":[141,0,0.4298],"jeaden":[5,0,0.0],"jentzen":[197,0,0.4589],"jinwoo":[10,0,0.0],"jiri":[16,0,0.0],"johnjack":[5,0,0.0],"johnovan":[11,0,0.0],"joksan":[13,0,0.0],"jonuel":[79,0,0.0],"jorgejr":[5,0,0.0],"josai":[75,0,0.0],"joshep":[5,0,0.0],"josiha":[17,0,0.0],"jovonny":[5,0,0.0],"jsiah":[135,0,0.4261],"juanfelipe":[11,0,0.0],"jugraj":[15,0,0.0],"julioalberto":[5,0,0.0],"julyen":[34,0,0.0],"jumarion":[21,0,0.0],"jungwoo":[5,0,0.0],"justiz":[10,0,0.0],"kahmani":[46,30,0.0],"kahmir":[38,0,0.0],"kaiky":[5,0,0.0],"kaisei":[131,0,0.4235],"kaivan":[27,0,0.0],"kamaj":[10,0,0.0],"kamarrion":[91,0,0.0],"kammron":[17,0,0.0],"kauner":[5,0,0.0],"kavien":[56,0,0.0],"kavish":[366,0,0.5127],"kayke":[11,0,0.0],"kaylup":[21,0,0.0],"kaynon":[77,0,0.0],"kedarian":[5,0,0.0],"keduse":[5,0,0.0],"keetan":[10,0,0.0],"keithin":[5,0,0.0],"keldin":[15,0,0.0],"kemel":[10,0,0.0],"kemontez":[5,0,0.0],"keniel":[362,0,0.5117],"kentreal":[10,0,0.0],"ketch":[68,0,0.0],"khasir":[77,0,0.0],"khemari":[5,0,0.0],"kiaron":[5,0,0.0],"koan":[81,0,0.0],"kolsen":[661,0,0.564],"korden":[5,0,0.0],"kosten":[5,0,0.0],"kyller":[10,0,0.0],"kylun":[5,0,0.0],"kysir":[123,0,0.418],"laker":[207,5,0.4543],"lalit":[5,0,0.0],"lexin":[28,6,0.0],"liran":[28,0,0.0],"luckas":[52,0,0.0],"luigy":[12,0,0.0],"lukacs":[5,0,0.0],"lukaus":[5,0,0.0],"macarius":[148,0,0.4341],"mahleek":[10,0,0.0],"maiki":[5,0,0.0],"makaih":[49,0,0.0],"makao":[5,0,0.0],"makhy":[27,0,0.0],"malikhai":[75,0,0.0],"maliky":[51,0,0.0],"mallaki":[18,0,0.0],"marious":[16,0,0.0],"marrek":[5,0,0.0],"marson":[75,0,0.0],"marvic":[5,0,0.0],"matheos":[15,0,0.0],"maxtin":[68,0,0.0],"mayen":[26,0,0.0],"mckaleb":[5,0,0.0],"meikhi":[25,0,0.0],"mekael":[47,0,0.0],"mickyle":[5,0,0.0],"mikei":[5,0,0.0],"mikeil":[5,0,0.0],"mirnes":[5,0,0.0],"mison":[26,0,0.0],"mj":[166,42,0.37],"moraes":[5,0,0.0],"morocco":[148,0,0.4341],"muaad":[103,0,0.4026],"muhmmad":[5,0,0.0],"murilo":[91,0,0.0],"myaire":[108,44,0.3101],"mylez":[211,0,0.4649],"nahin":[23,0,0.0],"nahmir":[365,0,0.5125],"nashton":[234,0,0.4738],"navario":[5,0,0.0],"nazariy":[31,0,0.0],"nazeir":[25,0,0.0],"nikhilesh":[5,0,0.0],"nikoloz":[99,0,0.0],"ninad":[5,0,0.0],"nkemjika":[5,0,0.0],"noey":[29,10,0.0],"nojus":[10,0,0.0],"nycolas":[10,0,0.0],"obaloluwa":[139,0,0.4286],"omaryon":[5,0,0.0],"oscarjr":[5,0,0.0],"ossian":[98,0,0.0],"owynn":[155,77,0.3161],"prestan":[46,0,0.0],"princewill":[10,0,0.0],"pritam":[11,0,0.0],"priyansh":[171,0,0.4466],"quinlen":[15,0,0.0],"quintae":[5,0,0.0],"qwintin":[5,0,0.0],"rameer":[26,0,0.0],"ramsses":[36,0,0.0],"ranndy":[5,0,0.0],"ranveer":[506,0,0.5408],"rayyaan":[33,0,0.0],"reiken":[10,0,0.0],"reme":[17,0,0.0],"reyly":[42,0,0.0],"rilen":[130,6,0.4079],"rishan":[432,0,0.5271],"ronaldino":[11,0,0.0],"ronil":[11,0,0.0],"ryeland":[88,0,0.0],"samiullah":[32,0,0.0],"savin":[20,0,0.0],"saviour":[169,0,0.4456],"seid":[5,0,0.0],"sergiojr":[10,0,0.0],"shloima":[103,0,0.4026],"shrihan":[331,0,0.504],"shritan":[29,0,0.0],"sibi":[5,5,0.0],"sinuhe":[10,0,0.0],"skylon":[34,0,0.0],"solomona":[10,0,0.0],"sovann":[58,0,0.0],"sovereign":[152,140,0.2567],"sruly":[144,0,0.4317],"strummer":[67,0,0.0],"sunay":[28,0,0.0],"tadarian":[5,0,0.0],"taeven":[16,0,0.0],"tahshawn":[5,0,0.0],"taishan":[10,0,0.0],"tamarrion":[16,0,0.0],"tano":[35,0,0.0],"taveyon":[10,0,0.0],"tavorian":[10,0,0.0],"taydin":[22,0,0.0],"tei":[11,0,0.0],"tejveer":[26,0,0.0],"terriyon":[5,0,0.0],"teysean":[5,0,0.0],"tochukwu":[35,0,0.0],"tomari":[5,0,0.0],"tomiwa":[5,0,0.0],"toprak":[50,0,0.0],"travel":[5,0,0.0],"trigg":[416,0,0.5238],"trystn":[5,0,0.0],"tyell":[5,0,0.0],"tyjir":[10,0,0.0],"tyryn":[15,0,0.0],"valo":[16,0,0.0],"vardan":[72,0,0.0],"vasanth":[15,0,0.0],"vedder":[106,0,0.4051],"vishruth":[257,0,0.482],"wilem":[5,0,0.0],"wyitt":[42,0,0.0],"wylliam":[21,0,0.0],"xazavier":[5,0,0.0],"xzaivier":[5,0,0.0],"yacir":[10,0,0.0],"yanky":[226,0,0.4708],"yansel":[61,0,0.0],"yashir":[12,0,0.0],"yassen":[84,0,0.0],"yavier":[82,0,0.0],"yiming":[92,0,0.0],"yoandri":[224,0,0.47],"yoniel":[137,0,0.4273],"ysrael":[47,0,0.0],"zacharya":[5,0,0.0],"zahin":[26,0,0.0],"zaivion":[120,0,0.4158],"zakye":[125,0,0.4194],"zandon":[142,0,0.4305],"zaquavious":[5,0,0.0],"zierre":[79,0,0.0],"zionn":[44,0,0.0],"zyare":[10,0,0.0],"zylen":[383,0,0.5166],"zylon":[188,0,0.4548],"zymiere":[91,0,0.0],"zyrian":[10,0,0.0],"lizania":[0,85,0.0],"emireth":[0,168,0.4451],"syrianna":[0,79,0.0],"sarela":[0,26,0.0],"betzi":[0,40,0.0],"yarexi":[0,168,0.4451],"yoshigei":[0,21,0.0],"arihanna":[0,657,0.5635],"disaya":[0,67,0.0],"yarethzy":[0,90,0.0],"bethzi":[0,18,0.0],"yaris":[0,82,0.0],"aliyonna":[0,24,0.0],"azera":[0,54,0.0],"bethsy":[0,27,0.0],"dilana":[0,71,0.0],"yarethzi":[0,101,0.4009],"aarilyn":[0,112,0.4098],"marialis":[0,65,0.0],"yaretsy":[0,40,0.0],"yuraima":[0,22,0.0],"akeilah":[0,29,0.0],"jarethzy":[0,24,0.0],"sumiyah":[0,46,0.0],"atyanna":[0,13,0.0],"hailynn":[0,299,0.4951],"lisania":[0,58,0.0],"pipper":[0,36,0.0],"ryhanna":[0,159,0.4403],"veera":[37,610,0.53],"anasol":[0,12,0.0],"azaia":[0,45,0.0],"nilaya":[0,108,0.4067],"sareli":[0,22,0.0],"yarexy":[0,38,0.0],"aivree":[0,40,0.0],"aneyah":[0,91,0.0],"avangeline":[0,485,0.5371],"ghislane":[0,11,0.0],"hadli":[0,180,0.4511],"jakeelah":[0,11,0.0],"jarexy":[0,11,0.0],"lealani":[0,90,0.0],"maytte":[0,88,0.0],"sanieya":[0,20,0.0],"zaharah":[0,160,0.4408],"zahniya":[0,82,0.0],"aviela":[0,182,0.452],"caralina":[0,104,0.4034],"daanya":[0,93,0.0],"dannan":[0,26,0.0],"jemiyah":[0,49,0.0],"liasia":[0,20,0.0],"loreley":[0,119,0.4151],"moxie":[0,674,0.5657],"neeva":[0,286,0.4913],"nyimah":[0,82,0.0],"reminisce":[0,114,0.4114],"shamayia":[0,10,0.0],"zahaira":[0,56,0.0],"zamariyah":[0,108,0.4067],"zaryiah":[0,357,0.5105],"zienna":[0,147,0.4335],"aava":[0,175,0.4486],"addisson":[0,91,0.0],"adelae":[0,192,0.4567],"aerabella":[0,286,0.4913],"annalesia":[0,15,0.0],"anneliesse":[0,14,0.0],"anyka":[0,26,0.0],"aretzy":[0,61,0.0],"ariss":[0,20,0.0],"baelyn":[11,118,0.3861],"caleya":[0,71,0.0],"calyse":[0,81,0.0],"elainah":[0,179,0.4506],"ellieana":[0,491,0.5382],"emberli":[0,177,0.4496],"finlee":[305,1021,0.4809],"hade":[0,65,0.0],"ismary":[0,20,0.0],"jarielys":[0,139,0.4286],"kamariyah":[0,106,0.4051],"kaymin":[0,9,0.0],"keelah":[0,28,0.0],"kyrielle":[0,263,0.484],"marabella":[0,179,0.4506],"mileigh":[0,247,0.4785],"miniyah":[0,9,0.0],"neariah":[0,37,0.0],"ruqiya":[0,64,0.0],"taryah":[0,67,0.0],"tulip":[0,282,0.49],"tylashia":[0,35,0.0],"yurianna":[0,75,0.0],"addysin":[0,123,0.418],"aela":[0,647,0.5622],"aiyla":[0,750,0.575],"aizah":[0,619,0.5583],"aleyiah":[0,50,0.0],"alyonna":[0,50,0.0],"annalei":[0,130,0.4228],"arriyah":[0,193,0.4571],"aurorah":[0,261,0.4833],"autianna":[0,8,0.0],"avalynne":[0,241,0.4764],"avamae":[0,197,0.4589],"bania":[0,32,0.0],"betzhy":[0,8,0.0],"carmindy":[0,50,0.0],"cyriana":[0,17,0.0],"dayleigh":[0,35,0.0],"desiyah":[0,41,0.0],"elayjah":[0,109,0.4075],"elliza":[0,48,0.0],"fatimatou":[0,67,0.0],"greisy":[0,101,0.4009],"hawo":[0,61,0.0],"inioluwa":[130,186,0.2943],"isioma":[0,64,0.0],"ivelin":[0,8,0.0],"ivelyn":[0,20,0.0],"jadayah":[0,53,0.0],"jaici":[0,26,0.0],"jamyriah":[0,56,0.0],"janilah":[0,208,0.4636],"jasarah":[0,14,0.0],"jossalynn":[0,57,0.0],"kaisley":[0,2575,0.6822],"kaleiyah":[0,109,0.4075],"kaliyha":[0,22,0.0],"kamorra":[0,59,0.0],"karlysia":[0,8,0.0],"kaylann":[0,30,0.0],"kemarah":[0,8,0.0],"keymia":[0,13,0.0],"kihanna":[0,77,0.0],"kyrrah":[0,18,0.0],"lamariana":[0,13,0.0],"lauralye":[0,82,0.0],"maecee":[0,25,0.0],"mearah":[0,18,0.0],"milynn":[0,210,0.4644],"miyanah":[0,27,0.0],"myley":[0,160,0.4408],"nahaven":[0,8,0.0],"narjis":[0,157,0.4392],"nayima":[0,21,0.0],"nelah":[0,25,0.0],"oriona":[0,8,0.0],"paycee":[0,14,0.0],"saahithi":[0,23,0.0],"saryia":[0,47,0.0],"serriah":[0,13,0.0],"shaelan":[0,29,0.0],"siannah":[0,26,0.0],"srinitya":[0,8,0.0],"takarah":[0,8,0.0],"tihanna":[0,67,0.0],"uniyah":[0,8,0.0],"yelina":[0,123,0.418],"zabella":[0,238,0.4753],"zarionna":[0,45,0.0],"zaysha":[0,13,0.0],"zeldy":[0,97,0.0],"zeva":[0,266,0.485],"zilah":[0,178,0.4501],"zunairah":[0,398,0.52],"zymirah":[0,58,0.0],"abery":[0,7,0.0],"abigaelle":[0,339,0.506],"addelynn":[0,848,0.5857],"addysyn":[0,134,0.4254],"adysan":[0,7,0.0],"aeona":[0,7,0.0],"ahva":[0,25,0.0],"aibhlinn":[0,139,0.4286],"aji":[0,7,0.0],"akeeyla":[0,7,0.0],"alaris":[0,12,0.0],"aletza":[0,12,0.0],"alilah":[0,227,0.4712],"aliviana":[0,167,0.4445],"analeece":[0,7,0.0],"analize":[0,34,0.0],"anariah":[0,68,0.0],"anberlin":[0,266,0.485],"anirah":[0,38,0.0],"annaliesse":[0,13,0.0],"annalucia":[0,162,0.4419],"annibelle":[0,84,0.0],"annistyn":[0,1471,0.6335],"armony":[5,34,0.0],"austeja":[0,7,0.0],"aviella":[0,382,0.5164],"aviyana":[0,244,0.4775],"ayaana":[0,211,0.4649],"aylla":[0,256,0.4816],"azora":[0,403,0.5211],"behtzy":[0,7,0.0],"bisleidy":[0,7,0.0],"brayah":[0,198,0.4593],"breeah":[0,46,0.0],"brenlyn":[0,115,0.4121],"bryasia":[0,20,0.0],"bryla":[0,100,0.4],"cariel":[0,12,0.0],"charlei":[0,231,0.4727],"daeyonna":[0,7,0.0],"daizee":[0,138,0.428],"dajea":[0,12,0.0],"dalet":[0,61,0.0],"daneah":[0,25,0.0],"davany":[0,12,0.0],"dnijah":[0,7,0.0],"ellakate":[0,125,0.4194],"erza":[97,318,0.4012],"faelyn":[0,203,0.4615],"fia":[0,526,0.5442],"gariella":[0,12,0.0],"grasyn":[92,21,0.3343],"greys":[0,20,0.0],"haasini":[0,194,0.4576],"hadara":[0,85,0.0],"hasini":[0,402,0.5208],"hayleen":[0,108,0.4067],"hazyl":[0,211,0.4649],"hooriya":[0,71,0.0],"jadaliz":[0,26,0.0],"jahiya":[0,36,0.0],"jahonna":[0,7,0.0],"jaimarie":[0,132,0.4241],"jameyah":[0,80,0.0],"jayanah":[0,50,0.0],"jeeya":[0,51,0.0],"jenilca":[0,7,0.0],"jermyia":[0,12,0.0],"jerniah":[0,12,0.0],"jesmin":[0,12,0.0],"joyana":[0,17,0.0],"kagome":[0,20,0.0],"kairie":[28,77,0.2964],"kaliyana":[0,42,0.0],"kamyri":[5,93,0.0],"keyarie":[0,28,0.0],"khamara":[0,23,0.0],"kilei":[0,20,0.0],"kinze":[0,165,0.4435],"laureli":[0,54,0.0],"lemaya":[0,7,0.0],"leyona":[0,28,0.0],"lilikoi":[0,75,0.0],"lyiah":[0,24,0.0],"madylen":[0,13,0.0],"mahee":[0,19,0.0],"maithe":[0,14,0.0],"malanna":[0,25,0.0],"marbely":[0,25,0.0],"mariagabriela":[0,7,0.0],"marialys":[0,7,0.0],"mikaylyn":[0,7,0.0],"milliana":[0,641,0.5614],"minya":[0,12,0.0],"morgandy":[0,25,0.0],"nahia":[0,383,0.5166],"nailani":[0,366,0.5127],"nanditha":[0,13,0.0],"nariana":[0,14,0.0],"nasyah":[0,48,0.0],"nawaal":[0,114,0.4114],"nolani":[0,186,0.4539],"novah":[493,3213,0.6188],"nyangel":[0,12,0.0],"omaris":[0,7,0.0],"padme":[0,206,0.4628],"persaeus":[0,42,0.0],"pharrah":[0,202,0.4611],"qorianka":[0,7,0.0],"raehanna":[0,7,0.0],"remedy":[21,798,0.5677],"riliegh":[0,7,0.0],"riniyah":[0,66,0.0],"rohana":[0,22,0.0],"ryka":[0,105,0.4042],"ryniah":[0,17,0.0],"saylee":[0,112,0.4098],"shrinidhi":[0,32,0.0],"sihaam":[0,90,0.0],"simiyah":[0,63,0.0],"siyanna":[0,79,0.0],"stephy":[0,52,0.0],"suban":[0,7,0.0],"sumeyye":[0,7,0.0],"syndel":[0,7,0.0],"tarajah":[0,25,0.0],"temilade":[0,35,0.0],"tinyah":[0,7,0.0],"vianette":[0,16,0.0],"xoey":[0,431,0.5269],"xola":[0,176,0.4491],"yacquelin":[0,12,0.0],"yanisse":[0,7,0.0],"zaima":[0,83,0.0],"zekiyah":[0,7,0.0],"ziarra":[0,24,0.0],"zionnah":[0,54,0.0],"zohara":[0,109,0.4075],"zyanah":[0,38,0.0],"abhigna":[0,48,0.0],"abryelle":[0,32,0.0],"adamina":[0,27,0.0],"addesyn":[0,18,0.0],"addisynn":[0,253,0.4806],"adee":[0,6,0.0],"aelita":[0,95,0.0],"aeryanna":[0,18,0.0],"aglaia":[0,11,0.0],"ahkeelah":[0,6,0.0],"ahlayah":[0,200,0.4602],"aile":[0,60,0.0],"ailet":[0,6,0.0],"akaria":[0,24,0.0],"alayjia":[0,6,0.0],"aleska":[0,81,0.0],"alonni":[0,195,0.458],"ameriyah":[0,56,0.0],"anabeatriz":[0,12,0.0],"anaee":[0,6,0.0],"anevaeh":[0,41,0.0],"aniyan":[0,17,0.0],"anjelyna":[0,6,0.0],"anousha":[0,20,0.0],"anvika":[0,813,0.582],"anyya":[0,6,0.0],"araiza":[0,31,0.0],"arela":[0,6,0.0],"arelin":[0,6,0.0],"arhianna":[0,202,0.4611],"artiana":[0,11,0.0],"ashwaq":[0,62,0.0],"asmitha":[0,6,0.0],"atiyanna":[0,6,0.0],"attiana":[0,13,0.0],"audrei":[0,34,0.0],"aulona":[0,6,0.0],"avaclaire":[0,59,0.0],"avagail":[0,110,0.4083],"avangelia":[0,6,0.0],"avariella":[0,24,0.0],"avika":[0,550,0.5481],"avishi":[0,49,0.0],"avyonna":[0,122,0.4173],"ayak":[0,63,0.0],"ayantu":[0,16,0.0],"ayled":[0,11,0.0],"aynslie":[0,39,0.0],"azairah":[0,16,0.0],"azriela":[0,45,0.0],"bansi":[0,6,0.0],"blayklee":[0,232,0.4731],"bogdana":[0,11,0.0],"breez":[28,11,0.0],"brisais":[0,6,0.0],"brookleigh":[0,63,0.0],"cabella":[0,199,0.4598],"caleia":[0,33,0.0],"calliana":[0,65,0.0],"camorah":[0,43,0.0],"caniah":[0,12,0.0],"carlyse":[0,6,0.0],"cashlin":[14,16,0.0],"celis":[0,11,0.0],"cenae":[0,6,0.0],"chariya":[0,37,0.0],"cinya":[0,6,0.0],"cithlali":[0,6,0.0],"cyarah":[0,12,0.0],"dagmara":[0,6,0.0],"dalajah":[0,6,0.0],"damayah":[0,29,0.0],"danayla":[0,38,0.0],"danyiah":[0,51,0.0],"darelys":[0,21,0.0],"davinity":[0,110,0.4083],"dayanni":[0,85,0.0],"dayany":[0,35,0.0],"dejamarie":[0,6,0.0],"delayney":[0,11,0.0],"devaeh":[0,122,0.4173],"deycy":[0,6,0.0],"dezariah":[0,94,0.0],"dezlyn":[0,50,0.0],"elizaida":[0,6,0.0],"ellyonna":[0,22,0.0],"emaleah":[0,20,0.0],"embrie":[0,230,0.4723],"enasia":[0,16,0.0],"evangaline":[0,163,0.4424],"evarose":[0,118,0.4144],"evenny":[0,6,0.0],"fayelynn":[0,165,0.4435],"feryal":[0,11,0.0],"gennavive":[0,6,0.0],"germani":[18,341,0.4854],"getzemani":[0,23,0.0],"gniya":[0,12,0.0],"gresa":[0,6,0.0],"greysi":[0,116,0.4129],"guneet":[0,56,0.0],"harbor":[389,782,0.4098],"harlynn":[0,1224,0.6176],"hasly":[0,6,0.0],"hasset":[0,253,0.4806],"haylah":[0,6,0.0],"hayzel":[0,649,0.5624],"heela":[0,133,0.4248],"heilly":[0,6,0.0],"heymi":[0,12,0.0],"honestie":[0,117,0.4136],"icelynn":[0,760,0.5762],"idahlia":[0,32,0.0],"idalyz":[0,16,0.0],"idman":[0,34,0.0],"ileena":[0,16,0.0],"ilenne":[0,6,0.0],"ilette":[0,6,0.0],"imiya":[0,6,0.0],"irmak":[0,6,0.0],"isabelly":[0,136,0.4267],"izsabella":[0,57,0.0],"jaelani":[0,528,0.5445],"jakiyra":[0,6,0.0],"jaleiah":[0,170,0.4461],"jaliayah":[0,23,0.0],"jamily":[0,6,0.0],"jamora":[0,116,0.4129],"janaira":[0,6,0.0],"jaretsy":[0,26,0.0],"jarielis":[0,58,0.0],"jasalin":[0,12,0.0],"jaselin":[0,6,0.0],"jasmely":[0,16,0.0],"javiah":[0,84,0.0],"jayanti":[0,6,0.0],"jaydaliz":[0,65,0.0],"jayleana":[0,79,0.0],"jaylianna":[0,230,0.4723],"jazirah":[0,37,0.0],"jazyia":[0,17,0.0],"jemira":[0,6,0.0],"jennalise":[0,59,0.0],"jerlin":[5,12,0.0],"jermyah":[19,18,0.0],"jesel":[0,6,0.0],"jetzibe":[0,14,0.0],"jezabella":[0,66,0.0],"jkyla":[0,6,0.0],"jlyssa":[0,6,0.0],"jolenna":[0,6,0.0],"jozlynne":[0,12,0.0],"jyniah":[0,12,0.0],"jyzelle":[0,49,0.0],"kalajah":[0,6,0.0],"kamaiyah":[0,372,0.5141],"kamelah":[0,31,0.0],"kamorie":[10,86,0.0],"kandence":[0,6,0.0],"kanyjah":[0,6,0.0],"karcyn":[51,125,0.319],"kaylese":[0,6,0.0],"kayori":[0,195,0.458],"kelela":[0,6,0.0],"kenzleigh":[0,937,0.5943],"keyilah":[0,11,0.0],"keylani":[0,654,0.5631],"keymiah":[0,61,0.0],"kianny":[0,56,0.0],"kindalyn":[0,6,0.0],"kinslie":[0,345,0.5076],"kirpa":[0,76,0.0],"kitsia":[0,6,0.0],"kliyah":[0,61,0.0],"kyajah":[0,6,0.0],"kynzlee":[0,1139,0.6113],"kyoka":[0,11,0.0],"laihla":[0,39,0.0],"lailana":[0,61,0.0],"lamarie":[0,6,0.0],"lamayah":[0,41,0.0],"lanayia":[0,20,0.0],"lavaya":[0,169,0.4456],"leamarie":[0,23,0.0],"leannie":[0,79,0.0],"lehanna":[0,23,0.0],"liliahna":[0,108,0.4067],"linoy":[0,13,0.0],"liriel":[0,19,0.0],"lixy":[0,6,0.0],"lucee":[0,97,0.0],"lyfe":[318,124,0.3807],"lynniah":[0,91,0.0],"macartney":[0,6,0.0],"madaliene":[0,6,0.0],"maeby":[0,91,0.0],"mahalya":[0,6,0.0],"mahawa":[0,22,0.0],"mahya":[0,84,0.0],"mairene":[0,11,0.0],"maive":[0,86,0.0],"makaira":[0,17,0.0],"makamae":[0,11,0.0],"makenleigh":[0,116,0.4129],"manahel":[0,6,0.0],"marcail":[0,16,0.0],"mariabella":[0,75,0.0],"mariangeliz":[0,12,0.0],"marinn":[0,31,0.0],"maryelle":[0,38,0.0],"maryliz":[0,6,0.0],"maylah":[0,123,0.418],"mckelvey":[0,6,0.0],"mckynzee":[0,53,0.0],"meeah":[0,79,0.0],"meilee":[0,39,0.0],"meleya":[0,28,0.0],"milanya":[0,69,0.0],"mileidi":[0,15,0.0],"mirakal":[0,6,0.0],"morghyn":[0,6,0.0],"namine":[0,190,0.4558],"narnia":[0,6,0.0],"nattalee":[0,11,0.0],"nehir":[0,64,0.0],"neviyah":[0,49,0.0],"nisi":[0,29,0.0],"ohemaa":[0,122,0.4173],"olaya":[0,57,0.0],"omotola":[0,11,0.0],"orlaith":[0,43,0.0],"paishance":[0,6,0.0],"paisleigh":[0,3328,0.7044],"paitin":[0,29,0.0],"phaith":[0,73,0.0],"pressly":[0,37,0.0],"rainn":[260,284,0.2856],"ranayah":[0,6,0.0],"razaria":[0,6,0.0],"revathi":[0,6,0.0],"ricayla":[0,6,0.0],"rickiyah":[0,46,0.0],"rihannah":[0,20,0.0],"rileah":[0,6,0.0],"rorrie":[0,6,0.0],"ruqaya":[0,147,0.4335],"ryannah":[0,35,0.0],"ryhana":[0,16,0.0],"sameeksha":[0,11,0.0],"sarinity":[0,102,0.4017],"saryiah":[0,218,0.4677],"secia":[0,6,0.0],"serayah":[0,491,0.5382],"seriana":[0,17,0.0],"shamaiah":[0,6,0.0],"sibora":[0,11,0.0],"sincerely":[0,13,0.0],"siren":[5,137,0.4153],"skyelin":[0,18,0.0],"skylaar":[0,22,0.0],"snya":[0,13,0.0],"sohana":[0,157,0.4392],"suheidy":[0,14,0.0],"surayah":[0,34,0.0],"suriana":[0,20,0.0],"swendy":[0,6,0.0],"sylvi":[0,298,0.4948],"syren":[20,109,0.3567],"tanyja":[0,6,0.0],"teriyah":[0,100,0.4],"tessalynn":[0,17,0.0],"thanvi":[0,163,0.4424],"timora":[0,28,0.0],"twisha":[0,119,0.4151],"tzipa":[0,25,0.0],"vanessah":[0,16,0.0],"varenya":[6,110,0.3915],"wrenna":[0,315,0.4997],"xyomara":[0,6,0.0],"yalia":[0,17,0.0],"yaricelis":[0,6,0.0],"yaritzia":[0,11,0.0],"yasmim":[0,22,0.0],"yazaira":[0,153,0.4369],"yazareth":[0,14,0.0],"yhadira":[0,6,0.0],"yoshigey":[0,6,0.0],"yurely":[0,11,0.0],"zahriya":[0,69,0.0],"zalea":[0,150,0.4352],"zaniaya":[0,14,0.0],"zaory":[0,6,0.0],"zarella":[0,6,0.0],"zariha":[0,27,0.0],"zayleigh":[0,877,0.5886],"zerah":[0,102,0.4017],"zeruiah":[0,73,0.0],"ziarah":[0,58,0.0],"zoeya":[0,70,0.0],"zofie":[0,24,0.0],"zoiey":[0,83,0.0],"zorie":[0,97,0.0],"zuleimy":[0,60,0.0],"zurie":[0,420,0.5246],"zyairra":[0,6,0.0],"zyera":[0,23,0.0],"aalanah":[0,21,0.0],"aallyah":[0,5,0.0],"aamiya":[0,62,0.0],"abaigail":[0,10,0.0],"abianna":[0,10,0.0],"adahlia":[0,200,0.4602],"adairis":[0,5,0.0],"adaleah":[0,186,0.4539],"adannaya":[0,67,0.0],"adassa":[0,78,0.0],"addalie":[0,152,0.4364],"addysan":[0,47,0.0],"adilee":[0,288,0.4919],"adisynne":[0,50,0.0],"admire":[45,145,0.3478],"adryann":[0,5,0.0],"aeralynn":[0,37,0.0],"aeryana":[0,12,0.0],"aeryona":[0,5,0.0],"ahleena":[0,35,0.0],"ahlina":[0,68,0.0],"ailanie":[0,116,0.4129],"airalyn":[0,52,0.0],"airess":[0,141,0.4298],"aisah":[0,10,0.0],"ajuni":[0,87,0.0],"aketzalli":[0,5,0.0],"akiylah":[0,5,0.0],"akon":[97,27,0.3275],"akosha":[0,5,0.0],"alai":[6,59,0.0],"alaziah":[0,29,0.0],"alecsis":[0,5,0.0],"aleighya":[0,66,0.0],"aleily":[0,5,0.0],"alekza":[0,17,0.0],"alela":[0,5,0.0],"aleona":[0,5,0.0],"alexeah":[0,5,0.0],"alexiyana":[0,12,0.0],"alieah":[0,82,0.0],"alivyah":[0,29,0.0],"allinah":[0,5,0.0],"alyciah":[0,11,0.0],"alythia":[0,39,0.0],"amarely":[0,26,0.0],"amarin":[5,5,0.0],"ambellina":[0,73,0.0],"ameiah":[0,60,0.0],"ameilya":[0,76,0.0],"ameiya":[0,5,0.0],"ameliana":[0,412,0.523],"amierah":[0,42,0.0],"amiliya":[0,60,0.0],"amilliyon":[6,5,0.0],"amiyha":[0,59,0.0],"amoree":[0,164,0.443],"amoya":[0,93,0.0],"amythyst":[0,11,0.0],"anaelise":[0,5,0.0],"anesty":[0,10,0.0],"aniyjah":[0,24,0.0],"annalynne":[0,188,0.4548],"annalyss":[0,5,0.0],"annanya":[0,5,0.0],"annaruth":[0,20,0.0],"annastin":[0,26,0.0],"annea":[0,5,0.0],"annecy":[0,23,0.0],"anneliesa":[0,11,0.0],"antalya":[0,23,0.0],"antoniah":[0,10,0.0],"anyelin":[0,354,0.5098],"aponi":[0,75,0.0],"aranya":[0,55,0.0],"arayla":[0,149,0.4346],"arniya":[0,12,0.0],"aryahi":[0,149,0.4346],"aryella":[0,332,0.5042],"ashawni":[0,5,0.0],"aubreona":[0,5,0.0],"aubrianah":[0,36,0.0],"aumya":[0,5,0.0],"auttumn":[0,5,0.0],"avabella":[0,110,0.4083],"avarae":[0,162,0.4419],"avarielle":[0,15,0.0],"avelin":[0,36,0.0],"aydriana":[0,37,0.0],"ayli":[0,78,0.0],"azareah":[0,5,0.0],"azaylia":[0,290,0.4925],"azhanae":[0,5,0.0],"baani":[0,288,0.4919],"balery":[0,10,0.0],"baxley":[54,59,0.2144],"bellarae":[0,120,0.4158],"bentli":[75,120,0.2819],"bernasia":[0,5,0.0],"bethzabeth":[0,5,0.0],"bethzaira":[0,10,0.0],"bhoomika":[0,5,0.0],"birydiana":[0,5,0.0],"bitania":[0,108,0.4067],"breeleigh":[0,24,0.0],"breella":[0,118,0.4144],"breniah":[0,11,0.0],"brenlie":[0,54,0.0],"brynnleigh":[0,744,0.5743],"brynnly":[0,154,0.4375],"cadia":[0,34,0.0],"caitilyn":[0,5,0.0],"calese":[0,15,0.0],"cambel":[0,5,0.0],"carlaysia":[0,25,0.0],"carlyssia":[0,5,0.0],"carmya":[0,20,0.0],"casaya":[0,5,0.0],"caydince":[0,40,0.0],"ceylin":[0,88,0.0],"chamaya":[0,10,0.0],"chanlee":[0,10,0.0],"chedva":[0,40,0.0],"chloemae":[0,16,0.0],"chylah":[0,12,0.0],"cidnie":[0,5,0.0],"crisbel":[0,39,0.0],"cristabella":[0,46,0.0],"cynne":[0,16,0.0],"dacee":[0,10,0.0],"daely":[0,16,0.0],"dahabo":[0,11,0.0],"dalayjah":[0,5,0.0],"dalaynee":[0,11,0.0],"dalaynie":[0,10,0.0],"dalonna":[0,5,0.0],"damirah":[0,22,0.0],"daniaya":[0,5,0.0],"danicah":[0,12,0.0],"danikah":[0,93,0.0],"dannapaola":[0,25,0.0],"daveonna":[0,5,0.0],"daylia":[0,35,0.0],"dayshana":[0,5,0.0],"deianna":[0,10,0.0],"deimy":[0,10,0.0],"delannie":[0,10,0.0],"devoiry":[0,171,0.4466],"deyli":[0,21,0.0],"deztany":[0,5,0.0],"dianeli":[0,5,0.0],"dianeliz":[0,10,0.0],"dimya":[0,13,0.0],"divija":[0,34,0.0],"dmiya":[0,93,0.0],"eabha":[0,70,0.0],"ebanie":[0,11,0.0],"elannah":[0,17,0.0],"elaynah":[0,112,0.4098],"elee":[0,30,0.0],"elissar":[0,5,0.0],"elliahna":[0,78,0.0],"ellianah":[0,249,0.4792],"elmedina":[0,10,0.0],"elyze":[0,21,0.0],"emerey":[0,34,0.0],"emersynn":[0,366,0.5127],"emperess":[0,5,0.0],"eres":[0,15,0.0],"erianah":[0,16,0.0],"esmerai":[0,25,0.0],"euriah":[93,5,0.0],"evalyse":[0,81,0.0],"evangelynn":[0,83,0.0],"eyden":[766,5,0.5737],"faridah":[0,28,0.0],"fatumo":[0,5,0.0],"faylynn":[0,87,0.0],"feyza":[0,31,0.0],"flordemaria":[0,5,0.0],"funmilayo":[0,10,0.0],"gabriely":[0,10,0.0],"gabrylle":[0,5,0.0],"gennessy":[0,5,0.0],"georgiaann":[0,11,0.0],"gianessa":[0,5,0.0],"giya":[0,20,0.0],"gracean":[0,5,0.0],"graceelizabeth":[0,5,0.0],"hada":[0,26,0.0],"hadija":[0,93,0.0],"haivyn":[0,167,0.4445],"haiylee":[0,5,0.0],"hannahrae":[0,5,0.0],"hashley":[0,5,0.0],"hawi":[0,76,0.0],"hawra":[0,56,0.0],"hayleah":[0,12,0.0],"hayvin":[0,55,0.0],"hazley":[0,617,0.5581],"heavenley":[0,17,0.0],"hefziba":[0,27,0.0],"heisy":[0,11,0.0],"heloisa":[0,156,0.4386],"hemani":[0,10,0.0],"heyli":[0,97,0.0],"hollymarie":[0,5,0.0],"honest":[256,301,0.2968],"honorae":[0,5,0.0],"hylie":[0,5,0.0],"icysis":[0,10,0.0],"idaya":[0,5,0.0],"ikhlas":[15,297,0.4748],"ileigh":[0,118,0.4144],"ilianah":[0,17,0.0],"ilianis":[0,17,0.0],"ilsi":[0,5,0.0],"ilynn":[0,137,0.4273],"imena":[10,21,0.0],"inika":[0,98,0.0],"iryanna":[0,16,0.0],"isalei":[0,5,0.0],"isoken":[0,5,0.0],"iycess":[0,5,0.0],"izebella":[0,50,0.0],"jadlynn":[0,5,0.0],"jaeliana":[0,228,0.4716],"jaelinn":[0,15,0.0],"jahmyia":[0,5,0.0],"jahnyia":[0,11,0.0],"jahnyla":[0,111,0.4091],"jaidence":[37,104,0.317],"jailani":[0,500,0.5398],"jailia":[0,49,0.0],"jainaba":[0,30,0.0],"jakilah":[0,17,0.0],"jalaiah":[0,128,0.4214],"jalya":[0,30,0.0],"jamasia":[0,5,0.0],"jamesyn":[166,144,0.2668],"janelee":[0,17,0.0],"janiaha":[0,14,0.0],"janii":[0,22,0.0],"janiza":[0,10,0.0],"jareny":[0,5,0.0],"jaretsi":[0,10,0.0],"jarexi":[0,5,0.0],"jaritzy":[0,48,0.0],"jarya":[0,23,0.0],"jasana":[0,5,0.0],"jashea":[0,5,0.0],"javayah":[0,136,0.4267],"jayahna":[0,11,0.0],"jaydalee":[0,75,0.0],"jaydalin":[0,15,0.0],"jaydalis":[0,27,0.0],"jaydamarie":[0,10,0.0],"jayeda":[0,5,0.0],"jaylese":[0,15,0.0],"jazzel":[0,59,0.0],"jazzlynne":[0,31,0.0],"jeaniyah":[0,5,0.0],"jelany":[0,24,0.0],"jenesy":[0,5,0.0],"jeneya":[0,12,0.0],"jenibelle":[0,5,0.0],"jersy":[0,12,0.0],"jesli":[0,10,0.0],"jessely":[0,10,0.0],"jessimar":[0,5,0.0],"jewl":[0,10,0.0],"jezzel":[0,16,0.0],"jilyan":[0,5,0.0],"jinnah":[0,10,0.0],"jionna":[0,55,0.0],"jissele":[0,11,0.0],"jizzel":[0,17,0.0],"jleigh":[0,72,0.0],"joilyn":[0,5,0.0],"jomiah":[0,5,0.0],"josmary":[0,58,0.0],"josylin":[0,5,0.0],"jovia":[0,62,0.0],"juleny":[0,10,0.0],"julieza":[0,5,0.0],"juliyana":[0,55,0.0],"kadria":[0,5,0.0],"kaeda":[0,41,0.0],"kahlei":[0,25,0.0],"kahleia":[0,32,0.0],"kahmiyah":[0,27,0.0],"kailina":[0,42,0.0],"kaityn":[0,17,0.0],"kalaijah":[0,5,0.0],"kalayshia":[0,17,0.0],"kaleis":[0,5,0.0],"kalesia":[0,16,0.0],"kaliyan":[0,81,0.0],"kaltrina":[0,5,0.0],"kamaurie":[22,11,0.0],"kamayia":[0,22,0.0],"kambel":[0,10,0.0],"kambrey":[0,111,0.4091],"kameal":[0,5,0.0],"kameil":[0,16,0.0],"kamiaya":[0,16,0.0],"kamiria":[0,5,0.0],"kamlyn":[0,48,0.0],"kamrynne":[0,5,0.0],"kamyjah":[0,5,0.0],"kamylah":[0,322,0.5016],"karamia":[0,16,0.0],"karelie":[0,5,0.0],"karionna":[0,11,0.0],"kayannah":[0,5,0.0],"kayedence":[0,18,0.0],"kaylalynn":[0,5,0.0],"kayten":[0,26,0.0],"kaziya":[0,76,0.0],"kdence":[0,15,0.0],"kefira":[0,10,0.0],"keiari":[0,60,0.0],"keimoni":[69,39,0.2598],"keimy":[0,32,0.0],"kellissa":[0,5,0.0],"kemariya":[0,15,0.0],"kenyjah":[0,5,0.0],"keolani":[0,5,0.0],"ketzalli":[0,5,0.0],"keymaya":[0,10,0.0],"keymiyah":[0,5,0.0],"keyonni":[0,101,0.4009],"keyria":[0,5,0.0],"kezaria":[0,32,0.0],"khaylie":[0,10,0.0],"khylei":[0,168,0.4451],"kihana":[0,24,0.0],"kimauri":[0,5,0.0],"kimore":[0,26,0.0],"kioko":[0,5,0.0],"kirynn":[0,5,0.0],"kiyrah":[0,10,0.0],"komora":[0,5,0.0],"kylicia":[0,5,0.0],"kymori":[0,10,0.0],"kyrha":[0,5,0.0],"laicey":[0,18,0.0],"laighla":[0,21,0.0],"laiklyn":[0,359,0.511],"lailanee":[0,23,0.0],"lakiaya":[0,5,0.0],"lamaiya":[0,23,0.0],"lamariah":[0,28,0.0],"lamera":[0,5,0.0],"lanaiyah":[0,35,0.0],"laneigh":[0,16,0.0],"laraea":[0,5,0.0],"lasia":[0,10,0.0],"leaunna":[0,10,0.0],"lehna":[0,12,0.0],"leilahni":[0,120,0.4158],"leilynn":[0,82,0.0],"lenai":[0,5,0.0],"lenci":[0,12,0.0],"leorah":[0,38,0.0],"levity":[0,11,0.0],"lexsie":[0,5,0.0],"liette":[0,5,0.0],"lihanna":[0,66,0.0],"liliany":[0,62,0.0],"liliona":[0,11,0.0],"lillianah":[0,103,0.4026],"lillianrose":[0,22,0.0],"lilliyan":[0,10,0.0],"lincey":[0,11,0.0],"lizneidy":[0,5,0.0],"lundynn":[0,106,0.4051],"luxie":[0,39,0.0],"luzia":[0,90,0.0],"lylee":[0,145,0.4323],"lyrah":[0,185,0.4534],"mabinty":[0,5,0.0],"mackensy":[0,5,0.0],"madilee":[0,63,0.0],"madylynn":[0,66,0.0],"maemi":[0,5,0.0],"magena":[0,5,0.0],"mahkenna":[0,12,0.0],"maica":[0,5,0.0],"makarah":[0,5,0.0],"makeena":[0,48,0.0],"makhiyah":[0,10,0.0],"makiala":[0,5,0.0],"malaiah":[0,221,0.4689],"malanni":[0,87,0.0],"malaysiah":[0,56,0.0],"malenna":[0,5,0.0],"mamediarra":[0,39,0.0],"mariae":[0,5,0.0],"mariaeduard":[0,11,0.0],"mariahna":[0,15,0.0],"mariajulia":[0,84,0.0],"marlaya":[0,142,0.4305],"matasia":[0,5,0.0],"maybree":[0,276,0.4882],"mayliah":[0,20,0.0],"mckylie":[0,5,0.0],"mckynze":[0,5,0.0],"meelah":[0,387,0.5175],"meeyah":[0,73,0.0],"mehret":[0,5,0.0],"meina":[0,11,0.0],"mekelle":[0,5,0.0],"meliya":[0,102,0.4017],"menaal":[0,177,0.4496],"meritxell":[0,38,0.0],"miarah":[0,5,0.0],"mihira":[0,450,0.5306],"mikaylen":[0,5,0.0],"mikeayla":[0,5,0.0],"minhanh":[0,18,0.0],"miriama":[0,5,0.0],"mojolaoluwa":[6,36,0.0],"mumtahina":[0,10,0.0],"myajah":[0,5,0.0],"myanh":[0,5,0.0],"myleisha":[0,5,0.0],"myriana":[0,15,0.0],"naavah":[0,30,0.0],"nadaleigh":[0,5,0.0],"nadilee":[0,10,0.0],"naeomi":[0,86,0.0],"nahlia":[0,232,0.4731],"nanayaa":[0,75,0.0],"nasteha":[0,24,0.0],"nataliee":[0,90,0.0],"nataliz":[0,17,0.0],"natylee":[0,32,0.0],"navae":[0,90,0.0],"nayami":[0,5,0.0],"nayona":[0,5,0.0],"nazaya":[0,15,0.0],"neajah":[0,5,0.0],"neili":[0,5,0.0],"nevae":[0,108,0.4067],"nevaehlee":[0,15,0.0],"nevaehly":[0,17,0.0],"niaira":[0,10,0.0],"niamora":[0,10,0.0],"niarah":[0,29,0.0],"nihira":[0,621,0.5586],"niliyah":[0,22,0.0],"nirah":[0,14,0.0],"nivaeh":[0,25,0.0],"niveditha":[0,10,0.0],"nixmary":[0,5,0.0],"niyat":[0,21,0.0],"noelis":[0,27,0.0],"nuriah":[0,53,0.0],"nyajiah":[0,5,0.0],"nyanah":[0,5,0.0],"nyele":[0,5,0.0],"nyiana":[0,5,0.0],"nyjeria":[0,13,0.0],"nykiera":[0,10,0.0],"nylaya":[0,79,0.0],"nylin":[33,10,0.0],"oaklyn":[350,4567,0.6858],"oliviyah":[0,36,0.0],"paili":[0,5,0.0],"peityn":[0,90,0.0],"penley":[0,60,0.0],"peregrina":[0,5,0.0],"persaius":[0,18,0.0],"persayus":[0,56,0.0],"persephonie":[0,113,0.4106],"prina":[0,10,0.0],"quanya":[0,10,0.0],"quiriat":[0,5,0.0],"racie":[0,11,0.0],"radia":[0,37,0.0],"rakyla":[0,15,0.0],"ramira":[0,90,0.0],"ramsi":[5,43,0.0],"rashyia":[0,12,0.0],"ravleen":[0,68,0.0],"rayelynn":[0,148,0.4341],"rayhana":[0,202,0.4611],"rayhanna":[0,35,0.0],"rayniya":[0,32,0.0],"rayniyah":[0,47,0.0],"rayonah":[0,5,0.0],"reeana":[0,5,0.0],"reggan":[0,5,0.0],"regginae":[0,13,0.0],"rheyanna":[0,5,0.0],"rhiannah":[0,18,0.0],"rhiauna":[0,11,0.0],"rhylea":[0,39,0.0],"rieleigh":[0,5,0.0],"rihonna":[0,42,0.0],"rithi":[0,5,0.0],"rithu":[0,5,0.0],"romaisa":[0,53,0.0],"rossmary":[0,5,0.0],"rreanna":[0,5,0.0],"ruhee":[0,112,0.4098],"ruhika":[0,54,0.0],"ryelin":[23,16,0.0],"ryleeanne":[0,10,0.0],"sabarin":[0,5,0.0],"sadio":[5,5,0.0],"sahniyah":[0,10,0.0],"saiah":[0,40,0.0],"saina":[0,369,0.5134],"saleigh":[0,5,0.0],"saliya":[0,5,0.0],"salomae":[0,5,0.0],"samana":[0,5,0.0],"sameyah":[0,10,0.0],"samiaya":[0,12,0.0],"sanihya":[0,5,0.0],"saniyia":[0,5,0.0],"sannai":[0,5,0.0],"sanyi":[0,57,0.0],"sarell":[0,5,0.0],"satvika":[0,41,0.0],"saveena":[0,46,0.0],"semayah":[0,5,0.0],"senaiya":[0,5,0.0],"sensi":[0,5,0.0],"serennity":[0,5,0.0],"serianna":[0,23,0.0],"shannya":[0,5,0.0],"sharayu":[0,5,0.0],"sharyia":[0,5,0.0],"sheili":[0,5,0.0],"sherlly":[0,5,0.0],"shiah":[81,124,0.2797],"shiffy":[0,63,0.0],"shiyah":[0,27,0.0],"shiyanna":[0,5,0.0],"shuchi":[0,5,0.0],"sieana":[0,10,0.0],"solay":[0,65,0.0],"solaya":[0,53,0.0],"soliyana":[0,253,0.4806],"sophiagrace":[0,183,0.4525],"suah":[0,27,0.0],"suhaani":[0,28,0.0],"surraya":[0,10,0.0],"svara":[0,102,0.4017],"syani":[0,25,0.0],"symarah":[0,5,0.0],"syrene":[0,10,0.0],"syri":[0,26,0.0],"syuri":[0,11,0.0],"tahiyah":[0,5,0.0],"tahlea":[0,10,0.0],"taitym":[0,44,0.0],"takylah":[0,38,0.0],"talaijah":[0,23,0.0],"talayasia":[0,5,0.0],"talullah":[0,125,0.4194],"tamaiah":[0,5,0.0],"tamayia":[0,5,0.0],"tanaiyah":[0,22,0.0],"tanisi":[0,50,0.0],"tatiannah":[0,11,0.0],"tayliana":[0,21,0.0],"teagann":[0,37,0.0],"tekeira":[0,5,0.0],"terriauna":[0,10,0.0],"tesslynn":[0,11,0.0],"theory":[81,142,0.2991],"thereza":[0,10,0.0],"tiany":[0,5,0.0],"tifa":[0,100,0.4],"tiyanni":[0,10,0.0],"traeh":[29,76,0.2926],"tremaya":[0,11,0.0],"tylasha":[0,10,0.0],"tylei":[5,25,0.0],"ugne":[0,5,0.0],"umi":[22,169,0.4037],"vasilisa":[0,257,0.482],"wedad":[0,10,0.0],"willasia":[0,5,0.0],"xarianna":[0,5,0.0],"xaviea":[0,5,0.0],"xiomary":[0,15,0.0],"xiya":[0,79,0.0],"yabsera":[11,15,0.0],"yamiyah":[0,10,0.0],"yanabah":[0,5,0.0],"yaraliz":[0,27,0.0],"yarel":[268,612,0.4096],"yaretci":[0,5,0.0],"yaretcy":[0,5,0.0],"yaretza":[0,15,0.0],"yathziri":[0,11,0.0],"yeilyn":[0,176,0.4491],"yenci":[0,5,0.0],"ylani":[0,5,0.0],"yocelynn":[0,15,0.0],"yoselynn":[0,33,0.0],"yuleydi":[0,10,0.0],"yulie":[0,50,0.0],"zaelynn":[22,526,0.5258],"zahniyah":[0,58,0.0],"zaidah":[0,43,0.0],"zaimah":[0,5,0.0],"zakhiya":[0,5,0.0],"zamayah":[0,79,0.0],"zanajah":[0,10,0.0],"zanieya":[0,5,0.0],"zanijah":[0,28,0.0],"zarely":[0,11,0.0],"zariaha":[0,58,0.0],"zayley":[0,258,0.4823],"zaylynn":[79,416,0.4529],"zayuri":[0,52,0.0],"zhia":[0,52,0.0],"zikira":[0,16,0.0],"zikiya":[0,5,0.0],"ziniah":[0,5,0.0],"ziniyah":[0,26,0.0],"ziyona":[0,47,0.0],"zowey":[0,10,0.0],"zyarah":[0,19,0.0],"zyian":[49,49,0.0],"zyliyah":[0,25,0.0],"zymira":[0,79,0.0],"zyriana":[0,30,0.0],"zyrianna":[0,41,0.0],"balian":[338,0,0.5058],"krrish":[102,0,0.4017],"vivaan":[2650,0,0.6846],"yoandy":[45,0,0.0],"faolan":[188,0,0.4548],"kasch":[191,0,0.4562],"savir":[110,0,0.4083],"sunel":[14,0,0.0],"cordai":[114,0,0.4114],"joandry":[75,0,0.0],"ramzee":[12,5,0.0],"ahyan":[324,0,0.5021],"elionaid":[11,0,0.0],"jaiyon":[73,0,0.0],"kingdavid":[285,0,0.491],"kordae":[251,0,0.4799],"linkon":[295,0,0.494],"malahki":[124,0,0.4187],"xayden":[938,0,0.5944],"braeson":[212,0,0.4653],"breylen":[186,0,0.4539],"daemyn":[130,0,0.4228],"edwuin":[18,0,0.0],"jacaree":[21,0,0.0],"joakim":[150,0,0.4352],"jonahs":[31,0,0.0],"jyon":[15,0,0.0],"lansana":[21,0,0.0],"rayhaan":[113,0,0.4106],"tyzjuan":[10,0,0.0],"zaydin":[591,0,0.5543],"aimon":[51,0,0.0],"amarious":[63,0,0.0],"denari":[61,5,0.0],"gianlucas":[167,0,0.4445],"jabarion":[9,0,0.0],"jezrael":[41,0,0.0],"julez":[212,41,0.4027],"kaua":[57,0,0.0],"lavant":[20,0,0.0],"lindan":[46,0,0.0],"neyo":[61,0,0.0],"sylar":[812,57,0.5492],"tracker":[83,0,0.0],"wyette":[20,0,0.0],"xhaiden":[151,0,0.4358],"zahi":[110,0,0.4083],"amichai":[68,0,0.0],"andreaz":[37,0,0.0],"araf":[182,0,0.452],"castin":[179,0,0.4506],"chrisangel":[96,0,0.0],"cortavion":[19,0,0.0],"damajae":[8,0,0.0],"daxter":[144,0,0.4317],"decimus":[59,0,0.0],"edwynn":[18,0,0.0],"emron":[33,0,0.0],"icker":[132,0,0.4241],"isander":[27,0,0.0],"jazavier":[17,0,0.0],"jeshuah":[36,0,0.0],"jinu":[49,0,0.0],"kadein":[14,0,0.0],"kardin":[29,0,0.0],"keagin":[31,0,0.0],"keden":[47,0,0.0],"kedus":[33,0,0.0],"khemani":[8,9,0.0],"khyrin":[178,0,0.4501],"knoa":[53,12,0.0],"kyng":[2268,0,0.6711],"ladanien":[8,0,0.0],"lelynd":[92,0,0.0],"maddon":[394,5,0.5137],"maxymilian":[26,0,0.0],"mohamadali":[49,0,0.0],"nasrallah":[8,0,0.0],"nedved":[8,0,0.0],"ramere":[93,0,0.0],"redick":[24,0,0.0],"saifan":[283,0,0.4904],"siranthony":[49,0,0.0],"srivatsa":[37,0,0.0],"vinci":[8,5,0.0],"yoandi":[8,0,0.0],"zakhari":[360,26,0.4825],"adontae":[7,0,0.0],"adryel":[157,0,0.4392],"aksh":[120,0,0.4158],"alucard":[264,0,0.4843],"arihant":[118,0,0.4144],"artavian":[7,0,0.0],"azareel":[18,0,0.0],"azariel":[187,0,0.4544],"baiden":[56,0,0.0],"blaiden":[125,0,0.4194],"blaydon":[30,0,0.0],"brannock":[7,0,0.0],"brax":[401,0,0.5206],"brazen":[208,0,0.4636],"christofher":[25,0,0.0],"coryion":[17,0,0.0],"coven":[60,0,0.0],"dainen":[17,0,0.0],"daken":[70,0,0.0],"davyion":[18,0,0.0],"dekan":[18,0,0.0],"dereion":[37,0,0.0],"draegan":[42,0,0.0],"erdem":[134,0,0.4254],"esquire":[15,0,0.0],"fineas":[54,0,0.0],"gelson":[7,0,0.0],"gianluka":[33,0,0.0],"gradey":[38,0,0.0],"harshan":[70,0,0.0],"immanol":[14,0,0.0],"israyel":[7,0,0.0],"itzael":[296,0,0.4943],"jabarius":[7,0,0.0],"jacorrian":[19,0,0.0],"jaimir":[92,0,0.0],"jakylin":[48,0,0.0],"janmarco":[13,0,0.0],"jazael":[91,0,0.0],"jazarion":[40,0,0.0],"jebron":[25,0,0.0],"jedrik":[19,0,0.0],"juanmartin":[12,0,0.0],"julean":[38,0,0.0],"kamai":[105,16,0.3615],"kartikeya":[92,0,0.0],"keighan":[155,34,0.3734],"kemaurion":[26,0,0.0],"kemondre":[13,0,0.0],"lamauri":[7,0,0.0],"landynn":[179,54,0.3637],"loggan":[7,0,0.0],"macari":[206,33,0.41],"makhari":[247,40,0.4231],"meryk":[12,0,0.0],"micahi":[23,0,0.0],"mustafe":[41,0,0.0],"nachmen":[145,0,0.4323],"nand":[28,0,0.0],"nyko":[184,0,0.453],"owan":[19,0,0.0],"oziah":[522,0,0.5435],"panav":[42,0,0.0],"raidan":[73,0,0.0],"rennick":[170,0,0.4461],"roly":[7,0,0.0],"rydan":[143,0,0.4311],"tasir":[12,0,0.0],"teag":[12,0,0.0],"temuulen":[7,0,0.0],"tequarius":[7,0,0.0],"traden":[63,0,0.0],"traevin":[12,0,0.0],"treyshun":[7,0,0.0],"trigo":[68,0,0.0],"tyreion":[20,0,0.0],"tyzell":[7,0,0.0],"vaiden":[73,0,0.0],"xylan":[174,0,0.4481],"yeremy":[95,0,0.0],"yoslan":[7,0,0.0],"zahair":[101,0,0.4009],"zaryan":[247,0,0.4785],"zidan":[499,0,0.5396],"abdala":[6,0,0.0],"adeon":[6,0,0.0],"adner":[12,0,0.0],"adrius":[77,0,0.0],"aethan":[80,0,0.0],"ahzir":[128,0,0.4214],"aithan":[262,0,0.4837],"ajaye":[6,5,0.0],"alaan":[27,0,0.0],"aleki":[94,0,0.0],"aleksy":[58,0,0.0],"angelray":[6,0,0.0],"anterion":[6,0,0.0],"ariano":[39,0,0.0],"asar":[172,0,0.4471],"athens":[154,49,0.3501],"atrayu":[28,0,0.0],"atrell":[6,0,0.0],"aun":[27,0,0.0],"aurick":[41,0,0.0],"avaughn":[16,0,0.0],"ayanle":[16,0,0.0],"aydrien":[236,0,0.4746],"aythan":[88,0,0.0],"baelin":[23,0,0.0],"baylan":[47,0,0.0],"bezalel":[95,0,0.0],"brelon":[29,0,0.0],"broder":[6,0,0.0],"cashen":[41,0,0.0],"cashis":[140,0,0.4292],"caua":[11,0,0.0],"caydyn":[74,0,0.0],"chaos":[144,0,0.4317],"chiebuka":[6,0,0.0],"daiven":[35,0,0.0],"dalziel":[12,0,0.0],"damarieon":[6,0,0.0],"damaurion":[12,0,0.0],"damiere":[50,0,0.0],"damiyan":[6,0,0.0],"dasaan":[6,0,0.0],"davein":[6,0,0.0],"daysen":[143,0,0.4311],"decan":[6,0,0.0],"digby":[11,0,0.0],"diyar":[42,0,0.0],"drayten":[6,0,0.0],"edguin":[6,0,0.0],"elijahpaul":[6,0,0.0],"elion":[232,0,0.4731],"essien":[53,0,0.0],"finneus":[118,0,0.4144],"garran":[11,0,0.0],"gianluigi":[66,0,0.0],"govany":[6,0,0.0],"gradin":[49,0,0.0],"gustas":[11,0,0.0],"haashir":[25,0,0.0],"hafid":[6,0,0.0],"harshaan":[82,0,0.0],"hastin":[58,0,0.0],"heiner":[6,0,0.0],"heitor":[327,0,0.5029],"heydan":[11,0,0.0],"huckleberry":[304,0,0.4966],"iddo":[16,0,0.0],"ish":[6,0,0.0],"iszak":[16,0,0.0],"jabary":[11,0,0.0],"jabdiel":[48,0,0.0],"jabob":[11,0,0.0],"jackthomas":[6,0,0.0],"jahaven":[31,0,0.0],"jahcere":[98,0,0.0],"jakeryan":[30,0,0.0],"jaqari":[22,0,0.0],"jarif":[24,0,0.0],"javori":[11,0,0.0],"jaycin":[13,0,0.0],"jaymeir":[31,0,0.0],"jayvean":[6,0,0.0],"jazaiah":[24,20,0.0],"jereck":[11,0,0.0],"jeremiaha":[13,0,0.0],"jeremiya":[6,0,0.0],"jesiel":[88,0,0.0],"jessiel":[44,0,0.0],"jeydan":[130,0,0.4228],"jezer":[16,0,0.0],"joandri":[30,0,0.0],"joziel":[101,0,0.4009],"juleus":[19,0,0.0],"julienn":[6,0,0.0],"kadenn":[12,0,0.0],"kaisean":[6,0,0.0],"keagyn":[16,16,0.0],"keiten":[6,0,0.0],"khaleal":[28,0,0.0],"khyan":[131,0,0.4235],"kidron":[6,0,0.0],"komari":[39,0,0.0],"krishay":[136,0,0.4267],"labryan":[25,0,0.0],"lamaj":[88,0,0.0],"lasse":[6,0,0.0],"lelen":[6,0,0.0],"leudy":[11,0,0.0],"liiban":[6,0,0.0],"lukian":[38,0,0.0],"malakyi":[18,0,0.0],"malekhi":[47,0,0.0],"manoa":[30,0,0.0],"mikye":[17,0,0.0],"milano":[272,12,0.4699],"myrin":[6,0,0.0],"nathias":[33,0,0.0],"nazavier":[6,0,0.0],"neamiah":[93,0,0.0],"nehamiah":[57,0,0.0],"nehemyah":[100,0,0.4],"ngawang":[76,19,0.0],"niran":[34,0,0.0],"nischal":[44,0,0.0],"niyaz":[6,0,0.0],"nouri":[45,115,0.3168],"nysean":[23,0,0.0],"oconnor":[28,0,0.0],"ohani":[6,0,0.0],"omi":[75,78,0.2228],"onyedikachi":[14,0,0.0],"paten":[13,0,0.0],"pauljoseph":[6,0,0.0],"pedrojose":[6,0,0.0],"philopater":[165,0,0.4435],"quadrevion":[6,0,0.0],"redd":[125,0,0.4194],"reif":[29,0,0.0],"rhion":[6,0,0.0],"richaud":[6,0,0.0],"riquelmer":[14,0,0.0],"ryatt":[2124,173,0.6216],"rydge":[182,0,0.452],"salis":[6,0,0.0],"samed":[6,0,0.0],"samien":[6,0,0.0],"shafeeq":[6,0,0.0],"shriyans":[89,0,0.0],"sidh":[28,0,0.0],"taisen":[6,0,0.0],"thaiden":[18,0,0.0],"trestyn":[33,0,0.0],"tyelar":[6,0,0.0],"tykevion":[6,0,0.0],"viliamu":[11,0,0.0],"vladyslav":[31,0,0.0],"vyas":[34,0,0.0],"wessam":[22,0,0.0],"xyon":[221,7,0.4571],"yadid":[12,0,0.0],"yander":[25,0,0.0],"yavian":[22,0,0.0],"yojhan":[6,0,0.0],"yom":[6,0,0.0],"zacarri":[94,0,0.0],"zaviar":[75,0,0.0],"zayshaun":[11,0,0.0],"zeal":[145,17,0.3955],"zyree":[143,21,0.3862],"zyren":[176,0,0.4491],"aaryon":[15,0,0.0],"aavin":[35,0,0.0],"abdelhadi":[5,0,0.0],"abdourahman":[11,0,0.0],"addicus":[69,0,0.0],"adein":[47,0,0.0],"adryon":[15,0,0.0],"adwin":[61,0,0.0],"aeiden":[10,0,0.0],"afonso":[10,0,0.0],"agel":[5,0,0.0],"ahkil":[11,0,0.0],"ahmauri":[31,0,0.0],"aijahlon":[5,0,0.0],"ajak":[26,0,0.0],"akam":[10,0,0.0],"aliaz":[10,0,0.0],"alii":[79,6,0.0],"allias":[48,0,0.0],"allistair":[84,0,0.0],"alyus":[152,0,0.4364],"angelmanuel":[10,0,0.0],"ansu":[10,0,0.0],"antheny":[5,0,0.0],"antonello":[21,0,0.0],"anvit":[155,0,0.4381],"arfan":[64,0,0.0],"arteen":[50,0,0.0],"athaniel":[23,0,0.0],"atreya":[39,54,0.0],"augusten":[120,0,0.4158],"avyukth":[434,0,0.5275],"aweis":[10,0,0.0],"awwab":[11,0,0.0],"axeel":[10,0,0.0],"azhan":[10,0,0.0],"baeden":[5,0,0.0],"bailor":[57,38,0.0],"banan":[5,0,0.0],"beniah":[152,0,0.4364],"benz":[121,0,0.4166],"bilguun":[11,0,0.0],"blayse":[16,0,0.0],"blazer":[10,0,0.0],"bowyn":[187,39,0.3896],"braxen":[98,0,0.0],"breslin":[151,164,0.2601],"breyen":[27,0,0.0],"brindin":[5,0,0.0],"bryland":[70,0,0.0],"brysyn":[150,0,0.4352],"brytin":[10,0,0.0],"camario":[5,0,0.0],"cameon":[5,0,0.0],"carpenter":[29,0,0.0],"cashious":[16,0,0.0],"cashon":[21,0,0.0],"cauan":[10,0,0.0],"caynan":[72,0,0.0],"ceion":[5,0,0.0],"chaiden":[16,0,0.0],"chamarion":[5,0,0.0],"chaskel":[52,0,0.0],"christianalexan":[5,0,0.0],"dacien":[11,0,0.0],"dametrious":[5,0,0.0],"daneel":[16,0,0.0],"danielson":[5,0,0.0],"danik":[22,0,0.0],"davahn":[5,0,0.0],"davean":[10,0,0.0],"daysun":[20,0,0.0],"decari":[206,0,0.4628],"dekker":[361,0,0.5115],"demarean":[5,0,0.0],"dhamani":[5,0,0.0],"dhir":[21,0,0.0],"dhyan":[352,0,0.5093],"djay":[51,0,0.0],"dreighton":[5,0,0.0],"duban":[11,0,0.0],"eduan":[10,0,0.0],"egor":[88,0,0.0],"einstein":[5,0,0.0],"eivan":[118,0,0.4144],"ekam":[490,156,0.4263],"ekamjot":[60,11,0.0],"ekow":[5,0,0.0],"elyes":[31,0,0.0],"elyijah":[5,0,0.0],"emilson":[82,0,0.0],"ener":[5,0,0.0],"engel":[48,0,0.0],"eragon":[111,0,0.4091],"esat":[5,0,0.0],"ethaen":[5,0,0.0],"ethanjacob":[43,0,0.0],"euriel":[5,0,0.0],"exavion":[10,0,0.0],"eydan":[718,0,0.5712],"eythen":[5,0,0.0],"ezion":[17,0,0.0],"fellipe":[5,0,0.0],"fenn":[53,0,0.0],"gabrieljohn":[5,0,0.0],"gamir":[5,0,0.0],"geomar":[30,0,0.0],"gioni":[57,0,0.0],"gionnie":[35,0,0.0],"haaken":[41,0,0.0],"hadan":[5,0,0.0],"hades":[218,5,0.4591],"hassane":[17,0,0.0],"haygan":[10,0,0.0],"hayz":[23,0,0.0],"heet":[5,0,0.0],"herick":[17,0,0.0],"houstin":[5,0,0.0],"hrishi":[40,0,0.0],"huntur":[16,0,0.0],"hutchison":[54,0,0.0],"iaan":[134,0,0.4254],"isandro":[92,0,0.0],"ivyn":[39,0,0.0],"jaabir":[5,0,0.0],"jaborie":[11,0,0.0],"jabreon":[10,0,0.0],"jacai":[159,0,0.4403],"jaddan":[5,0,0.0],"jaevyn":[57,0,0.0],"jaeyon":[5,0,0.0],"jahare":[5,0,0.0],"jahcari":[91,0,0.0],"jahin":[5,0,0.0],"jahleal":[10,0,0.0],"jahmaad":[15,0,0.0],"jaikub":[5,0,0.0],"jaiquez":[5,0,0.0],"jaithan":[42,0,0.0],"jaiton":[5,0,0.0],"jakaden":[279,0,0.4891],"jakare":[10,0,0.0],"jakylen":[79,0,0.0],"jalill":[12,0,0.0],"jamarey":[10,0,0.0],"jamariun":[5,0,0.0],"jameion":[24,0,0.0],"janaris":[5,0,0.0],"janluis":[16,0,0.0],"jarail":[5,0,0.0],"jarvion":[16,0,0.0],"jassan":[15,0,0.0],"jatavien":[5,0,0.0],"jatyler":[5,0,0.0],"jaunte":[5,0,0.0],"javareon":[5,0,0.0],"jaxan":[120,0,0.4158],"jaxten":[607,0,0.5566],"jaykwan":[5,0,0.0],"jaylein":[5,16,0.0],"jayquin":[5,0,0.0],"jaysson":[20,0,0.0],"jazari":[78,127,0.2864],"jeanmarco":[5,0,0.0],"jecori":[10,0,0.0],"jeden":[5,0,0.0],"jesuan":[5,0,0.0],"jhoniel":[36,0,0.0],"jhosue":[10,0,0.0],"jmauri":[17,0,0.0],"joaovitor":[5,0,0.0],"johary":[5,0,0.0],"jonluca":[5,0,0.0],"joquavious":[5,0,0.0],"josaih":[40,0,0.0],"jozaiah":[22,0,0.0],"juliuz":[22,0,0.0],"jussiah":[15,0,0.0],"juwelz":[10,0,0.0],"kadavion":[5,0,0.0],"kahmel":[16,0,0.0],"kaimani":[214,41,0.4039],"kairan":[74,0,0.0],"kalek":[5,0,0.0],"kamakani":[10,0,0.0],"kamarien":[28,0,0.0],"kanav":[162,0,0.4419],"kardae":[16,0,0.0],"karlito":[76,0,0.0],"karrick":[5,0,0.0],"kashden":[186,0,0.4539],"kavarion":[26,0,0.0],"kavone":[10,0,0.0],"kaycen":[1475,48,0.6165],"kaydenn":[173,0,0.4476],"kaylab":[5,0,0.0],"kaynan":[233,0,0.4735],"kaysin":[353,5,0.5036],"kazden":[72,0,0.0],"keiler":[125,0,0.4194],"keltyn":[23,0,0.0],"kemarri":[27,0,0.0],"kemarrion":[53,0,0.0],"kemarui":[5,0,0.0],"kendryck":[105,0,0.4042],"kensei":[46,0,0.0],"kenyi":[15,0,0.0],"keunta":[5,0,0.0],"keydren":[11,0,0.0],"khadin":[23,0,0.0],"khaiden":[307,0,0.4974],"khaleil":[46,0,0.0],"khayir":[88,0,0.0],"khimani":[11,0,0.0],"kimonte":[5,0,0.0],"kinzer":[30,0,0.0],"kio":[55,0,0.0],"kiyel":[5,0,0.0],"kmani":[15,17,0.0],"kmauri":[11,0,0.0],"koosha":[5,0,0.0],"kristo":[31,0,0.0],"krue":[1288,66,0.5958],"kuol":[16,0,0.0],"kyntrell":[10,0,0.0],"kyzen":[520,0,0.5432],"lakshman":[10,0,0.0],"lamarqus":[5,0,0.0],"lameer":[5,0,0.0],"lavi":[238,10,0.4596],"law":[185,0,0.4534],"laython":[27,0,0.0],"leelynd":[146,0,0.4329],"leighland":[66,0,0.0],"leilan":[152,0,0.4364],"lekhi":[5,0,0.0],"lenix":[208,139,0.3045],"leto":[129,0,0.4221],"lukeanthony":[5,0,0.0],"lukin":[16,0,0.0],"lusvin":[5,0,0.0],"luukas":[5,0,0.0],"machias":[5,0,0.0],"madex":[73,0,0.0],"madyx":[104,61,0.2795],"mahadev":[42,0,0.0],"makio":[5,0,0.0],"manit":[46,0,0.0],"marioni":[10,0,0.0],"markavius":[10,0,0.0],"markeveon":[5,0,0.0],"markuz":[23,0,0.0],"martravius":[5,0,0.0],"marzavion":[5,0,0.0],"masan":[15,0,0.0],"mase":[250,0,0.4796],"mateyo":[32,0,0.0],"maximous":[46,0,0.0],"mayowa":[15,0,0.0],"mehtab":[276,26,0.4533],"messi":[207,0,0.4632],"messiyah":[141,10,0.4069],"michigan":[5,0,0.0],"miken":[110,0,0.4083],"mohamedamin":[269,0,0.486],"mohaned":[16,0,0.0],"montravion":[5,0,0.0],"muhammadali":[650,0,0.5626],"musah":[5,0,0.0],"naden":[22,0,0.0],"naelson":[17,0,0.0],"narain":[27,0,0.0],"natas":[26,0,0.0],"natorian":[5,0,0.0],"nazhir":[46,0,0.0],"neshaun":[11,0,0.0],"nijon":[10,0,0.0],"nikodem":[174,0,0.4481],"nilan":[418,0,0.5242],"nisean":[5,0,0.0],"nithilan":[52,0,0.0],"nyhiem":[5,0,0.0],"nytavious":[5,0,0.0],"nyziah":[36,0,0.0],"obafemi":[10,0,0.0],"ohlin":[5,0,0.0],"oluwatomiwa":[72,0,0.0],"philix":[5,0,0.0],"prabjot":[5,0,0.0],"pratheek":[32,0,0.0],"prayag":[37,0,0.0],"prynce":[607,0,0.5566],"racen":[16,0,0.0],"rakai":[130,0,0.4228],"ralon":[5,0,0.0],"remiel":[310,39,0.4517],"reyaan":[435,0,0.5277],"reyden":[314,0,0.4994],"rhyon":[32,27,0.0],"rhyson":[61,0,0.0],"rishil":[14,0,0.0],"roandy":[5,0,0.0],"roddick":[12,0,0.0],"rowdie":[5,5,0.0],"rykan":[28,0,0.0],"salahaldin":[10,0,0.0],"salahudeen":[10,0,0.0],"samajae":[10,0,0.0],"sammael":[14,0,0.0],"sankeerth":[5,0,0.0],"sentrell":[5,0,0.0],"seraph":[37,21,0.0],"shaydin":[5,0,0.0],"sheperd":[24,0,0.0],"shondre":[5,0,0.0],"shreyansh":[346,0,0.5078],"shreyash":[54,0,0.0],"shriyan":[473,0,0.535],"shuban":[29,0,0.0],"sinceer":[15,11,0.0],"siosaia":[15,0,0.0],"sreeram":[22,0,0.0],"srivanth":[10,0,0.0],"stalyn":[10,0,0.0],"strauss":[5,0,0.0],"suhaan":[213,0,0.4657],"taevyn":[94,0,0.0],"tahjmir":[11,0,0.0],"taig":[5,0,0.0],"tamarian":[17,0,0.0],"tanek":[5,0,0.0],"tarver":[10,0,0.0],"tavean":[5,0,0.0],"tayjuan":[10,0,0.0],"teage":[11,0,0.0],"toa":[152,0,0.4364],"toler":[5,0,0.0],"traeven":[5,0,0.0],"trayse":[5,0,0.0],"tresaun":[10,0,0.0],"treygan":[38,0,0.0],"trotter":[28,0,0.0],"tryan":[23,0,0.0],"tsean":[10,0,0.0],"tylun":[11,0,0.0],"tymarian":[5,0,0.0],"tymerius":[5,0,0.0],"tymond":[5,0,0.0],"tytrell":[10,0,0.0],"udonis":[5,0,0.0],"vedh":[334,0,0.5047],"velan":[15,0,0.0],"vintrell":[10,0,0.0],"viraaj":[560,0,0.5496],"vishwesh":[5,0,0.0],"vohn":[5,0,0.0],"wadee":[5,0,0.0],"wasay":[12,0,0.0],"wayden":[200,0,0.4602],"xaeden":[41,0,0.0],"xanden":[10,0,0.0],"xiomar":[95,0,0.0],"yaasir":[118,0,0.4144],"yaciel":[20,0,0.0],"yancarlo":[45,0,0.0],"yandier":[5,0,0.0],"yannik":[21,0,0.0],"yasine":[10,0,0.0],"yaxye":[5,0,0.0],"yaziel":[402,0,0.5208],"yorvin":[5,0,0.0],"zaafir":[15,0,0.0],"zabriel":[67,0,0.0],"zahiem":[15,0,0.0],"zaky":[5,0,0.0],"zamarius":[26,0,0.0],"zamire":[136,0,0.4267],"zaryab":[15,0,0.0],"zathan":[51,0,0.0],"zavin":[61,0,0.0],"zavyer":[16,0,0.0],"zayion":[63,0,0.0],"zekhi":[61,0,0.0],"zeon":[92,0,0.0],"zeshaun":[5,0,0.0],"zhyaire":[125,0,0.4194],"zier":[50,0,0.0],"zikee":[5,0,0.0],"zinedin":[5,0,0.0],"ziyaad":[22,0,0.0],"zyairr":[5,0,0.0],"zyheir":[302,0,0.496],"zykei":[5,0,0.0],"zykevious":[5,0,0.0],"zymari":[82,0,0.0],"zyquavious":[20,0,0.0],"leilene":[0,157,0.4392],"yumalay":[0,80,0.0],"aidsa":[0,30,0.0],"madelis":[0,30,0.0],"britzy":[0,81,0.0],"yeneisy":[0,33,0.0],"danity":[0,184,0.453],"dannielynn":[0,62,0.0],"yudany":[0,28,0.0],"raengel":[0,22,0.0],"yaslene":[0,81,0.0],"deetya":[0,314,0.4994],"saphyra":[0,121,0.4166],"keltie":[0,92,0.0],"arrayah":[0,195,0.458],"jumalay":[0,14,0.0],"mariamne":[0,14,0.0],"micel":[0,14,0.0],"yumalai":[0,35,0.0],"jazalle":[0,13,0.0],"misel":[0,13,0.0],"sanjaya":[36,13,0.0],"audryna":[0,163,0.4424],"avea":[0,246,0.4782],"dayanis":[0,85,0.0],"katori":[7,184,0.4395],"kolie":[0,42,0.0],"laveah":[0,484,0.537],"leyni":[0,12,0.0],"madeliz":[0,12,0.0],"mahkya":[0,12,0.0],"rhiyanna":[0,30,0.0],"sibylla":[0,57,0.0],"zahriah":[0,97,0.0],"zeah":[0,84,0.0],"addisan":[0,16,0.0],"caasi":[0,94,0.0],"caridee":[0,22,0.0],"dannilynn":[0,60,0.0],"emeree":[0,277,0.4885],"jayel":[86,87,0.2251],"kielyn":[5,91,0.0],"leyani":[0,153,0.4369],"lizmari":[0,31,0.0],"lulani":[0,104,0.4034],"marfil":[0,17,0.0],"rocsi":[0,82,0.0],"ryelynn":[0,194,0.4576],"ryiah":[0,148,0.4341],"saaphyri":[0,11,0.0],"saiyuri":[0,41,0.0],"simora":[0,94,0.0],"aadhya":[0,3208,0.7012],"aashritha":[0,198,0.4593],"angelinah":[0,31,0.0],"aveona":[0,21,0.0],"azarie":[51,192,0.377],"calliegh":[0,54,0.0],"cheza":[0,33,0.0],"cyniya":[0,18,0.0],"danilynn":[0,286,0.4913],"graycin":[39,41,0.0],"haylynn":[0,202,0.4611],"kamijah":[0,15,0.0],"keiryn":[0,62,0.0],"leaja":[0,16,0.0],"leileen":[0,27,0.0],"libi":[0,174,0.4481],"lylla":[0,232,0.4731],"marelly":[0,66,0.0],"naelani":[0,268,0.4856],"sarriah":[0,34,0.0],"storee":[0,55,0.0],"tyrhianna":[0,43,0.0],"viera":[0,224,0.47],"yaitza":[0,33,0.0],"yudani":[0,10,0.0],"zamyrah":[0,87,0.0],"amoura":[0,2653,0.6847],"angelinne":[0,57,0.0],"annelis":[0,36,0.0],"annexie":[0,9,0.0],"avelynn":[0,337,0.5055],"aveyah":[0,423,0.5253],"aylet":[0,9,0.0],"danilyn":[0,151,0.4358],"desiah":[58,49,0.22],"jalayiah":[0,150,0.4352],"jaleiya":[0,37,0.0],"jewelyssa":[0,9,0.0],"jezlynn":[0,47,0.0],"jocylyn":[0,9,0.0],"journy":[0,19,0.0],"kaleeya":[0,117,0.4136],"kat":[0,40,0.0],"khaleya":[0,41,0.0],"mackynze":[0,9,0.0],"marelis":[0,25,0.0],"mayonna":[0,9,0.0],"nasma":[0,24,0.0],"neveaha":[0,26,0.0],"oktober":[0,91,0.0],"saahiti":[0,9,0.0],"samanvi":[0,364,0.5122],"samarri":[0,19,0.0],"siyah":[52,234,0.402],"xienna":[0,84,0.0],"yo":[0,9,0.0],"zymal":[0,15,0.0],"adalae":[0,268,0.4856],"ahriel":[0,14,0.0],"akierra":[0,13,0.0],"alexzandrya":[0,8,0.0],"andilyn":[0,141,0.4298],"auriyana":[0,14,0.0],"aveah":[0,731,0.5728],"azyia":[0,44,0.0],"braniah":[0,34,0.0],"brenleigh":[0,490,0.538],"breslyn":[0,260,0.483],"breyannah":[0,14,0.0],"brezlyn":[0,167,0.4445],"brizia":[0,35,0.0],"chloelynn":[0,34,0.0],"ciella":[0,134,0.4254],"corrianna":[0,19,0.0],"dahlya":[0,92,0.0],"dinara":[0,67,0.0],"evangelin":[0,75,0.0],"florecita":[0,19,0.0],"hadessa":[0,14,0.0],"haleena":[0,14,0.0],"itzabella":[0,237,0.4749],"izzi":[0,66,0.0],"janaii":[0,24,0.0],"janovia":[0,41,0.0],"jasleene":[0,24,0.0],"javeah":[0,444,0.5295],"jazyah":[0,104,0.4034],"jazzlene":[0,93,0.0],"jenniyah":[0,22,0.0],"kahmora":[0,40,0.0],"kaleeah":[0,140,0.4292],"kaniyha":[0,8,0.0],"karaleigh":[0,52,0.0],"kaygan":[0,14,0.0],"kenah":[0,8,0.0],"kenzlie":[0,681,0.5666],"kinberli":[0,25,0.0],"laylana":[0,104,0.4034],"leiara":[0,32,0.0],"liviah":[0,94,0.0],"mailie":[0,17,0.0],"maryeli":[0,35,0.0],"mauli":[0,8,0.0],"miaisabella":[0,173,0.4476],"milley":[0,77,0.0],"narayah":[0,63,0.0],"nasro":[0,55,0.0],"neavah":[0,8,0.0],"neci":[0,8,0.0],"nyelli":[0,269,0.486],"nylee":[0,269,0.486],"nyvaeh":[0,8,0.0],"persaus":[0,8,0.0],"riahnna":[0,20,0.0],"rielynn":[0,202,0.4611],"saani":[0,20,0.0],"sajani":[0,25,0.0],"saniy":[0,18,0.0],"sanniah":[0,8,0.0],"sephira":[0,117,0.4136],"smera":[0,89,0.0],"sumyah":[0,8,0.0],"tashyah":[0,8,0.0],"xariyah":[0,120,0.4158],"xelha":[0,14,0.0],"yanitzia":[0,26,0.0],"yar":[0,72,0.0],"yasuri":[0,58,0.0],"yoleth":[0,8,0.0],"yveth":[0,8,0.0],"zoii":[0,161,0.4414],"aairah":[0,207,0.4632],"aarini":[0,112,0.4098],"addilee":[0,264,0.4843],"adelade":[0,57,0.0],"adlynn":[0,123,0.418],"adoniah":[48,56,0.2172],"ahonesty":[0,86,0.0],"aitza":[0,25,0.0],"alexssa":[0,35,0.0],"aleynah":[0,146,0.4329],"allyra":[0,7,0.0],"ambreal":[0,30,0.0],"ambriella":[0,107,0.4059],"amilah":[0,495,0.5389],"amiliah":[0,119,0.4151],"andilynn":[0,99,0.0],"anjelia":[0,19,0.0],"arhiana":[0,43,0.0],"ariannie":[0,129,0.4221],"arizel":[0,7,0.0],"assiatou":[0,24,0.0],"aubreyann":[0,51,0.0],"audrinna":[0,218,0.4677],"aveya":[0,361,0.5115],"avva":[0,22,0.0],"avyona":[0,7,0.0],"ayira":[0,119,0.4151],"bernicia":[0,7,0.0],"bevyn":[0,29,0.0],"bielka":[0,12,0.0],"binti":[0,46,0.0],"callianne":[0,28,0.0],"cemiyah":[0,12,0.0],"cenai":[0,7,0.0],"daksha":[0,131,0.4235],"damariah":[0,64,0.0],"daneida":[0,19,0.0],"danielynn":[0,7,0.0],"danytza":[0,12,0.0],"davanie":[0,12,0.0],"dazire":[0,64,0.0],"dereona":[0,124,0.4187],"deriya":[0,13,0.0],"devionna":[0,7,0.0],"eleese":[0,7,0.0],"eliahna":[0,106,0.4051],"enayah":[0,54,0.0],"eneri":[0,23,0.0],"ephrata":[0,102,0.4017],"evilyn":[0,32,0.0],"genisse":[0,7,0.0],"ghianna":[0,40,0.0],"graisyn":[76,43,0.2651],"haileyjade":[0,7,0.0],"henlee":[14,520,0.5312],"israella":[0,201,0.4606],"iylah":[0,631,0.56],"jaanna":[0,17,0.0],"janariah":[0,39,0.0],"jarianna":[0,48,0.0],"jaxie":[0,211,0.4649],"jazariyah":[0,48,0.0],"jazya":[0,35,0.0],"jennely":[0,14,0.0],"jevaeh":[0,95,0.0],"jeyleen":[0,64,0.0],"jiayi":[60,112,0.2911],"johniyah":[0,33,0.0],"joryn":[0,13,0.0],"jynna":[0,7,0.0],"kareny":[0,13,0.0],"kaygen":[12,17,0.0],"kayri":[0,24,0.0],"kennley":[0,168,0.4451],"kennyah":[0,7,0.0],"keylei":[0,25,0.0],"khilee":[0,136,0.4267],"kiamora":[0,7,0.0],"kikyo":[0,18,0.0],"klayre":[0,7,0.0],"koey":[0,32,0.0],"kynadie":[0,63,0.0],"lailynn":[0,243,0.4771],"lamayia":[0,7,0.0],"laylynn":[0,173,0.4476],"liannah":[0,96,0.0],"lillieana":[0,27,0.0],"lillyin":[0,32,0.0],"lilybelle":[0,150,0.4352],"liviana":[0,578,0.5524],"lizy":[0,18,0.0],"lundin":[5,33,0.0],"maaya":[0,70,0.0],"machiya":[0,7,0.0],"madalee":[0,116,0.4129],"madian":[5,7,0.0],"maitreya":[25,7,0.0],"mariaangela":[0,7,0.0],"marybella":[0,94,0.0],"mawa":[0,48,0.0],"maylena":[0,28,0.0],"meiya":[0,61,0.0],"miyali":[0,7,0.0],"moraya":[0,12,0.0],"myami":[0,51,0.0],"nahiara":[0,253,0.4806],"naiima":[0,12,0.0],"nayalee":[0,47,0.0],"nazya":[0,7,0.0],"nialani":[0,68,0.0],"nuriya":[0,143,0.4311],"perpetua":[0,177,0.4496],"pragna":[0,59,0.0],"retaj":[0,236,0.4746],"rhiyana":[0,7,0.0],"rianah":[0,13,0.0],"sadaria":[0,7,0.0],"salmo":[0,12,0.0],"samyha":[0,7,0.0],"sanea":[0,7,0.0],"saphera":[0,51,0.0],"sibella":[0,47,0.0],"simayah":[0,7,0.0],"skylei":[0,49,0.0],"somiya":[0,54,0.0],"suzu":[0,49,0.0],"taviah":[0,14,0.0],"temprance":[0,154,0.4375],"tremyah":[0,7,0.0],"tuula":[0,15,0.0],"umaima":[0,95,0.0],"vanaya":[0,13,0.0],"vannya":[0,47,0.0],"yalina":[0,111,0.4091],"yarilyn":[0,7,0.0],"yazlene":[0,47,0.0],"yazuri":[0,19,0.0],"yuxin":[0,60,0.0],"zalie":[0,46,0.0],"zamarria":[0,12,0.0],"zamauria":[0,34,0.0],"zanaiyah":[0,67,0.0],"zaydi":[0,42,0.0],"zhoie":[0,61,0.0],"ziclali":[0,7,0.0],"znyah":[0,12,0.0],"zoriyah":[0,117,0.4136],"zriyah":[0,93,0.0],"zyiona":[0,34,0.0],"zykierra":[0,12,0.0],"zymaria":[0,13,0.0],"zyrihanna":[0,50,0.0],"aamia":[0,22,0.0],"aaryah":[0,119,0.4151],"aashita":[0,6,0.0],"aaylah":[0,125,0.4194],"abriyah":[0,18,0.0],"abryl":[0,14,0.0],"abygael":[0,54,0.0],"adaley":[0,417,0.524],"adelayde":[0,86,0.0],"adisynn":[0,84,0.0],"adly":[5,24,0.0],"adraya":[0,34,0.0],"aeowyn":[0,30,0.0],"ahalya":[0,11,0.0],"ahliana":[0,22,0.0],"ahrya":[0,18,0.0],"aidy":[0,134,0.4254],"aidynn":[85,76,0.233],"aireyana":[0,14,0.0],"akyiah":[0,6,0.0],"aleela":[0,6,0.0],"alilyana":[0,42,0.0],"allizon":[0,271,0.4866],"alyena":[0,37,0.0],"amayra":[0,435,0.5277],"ameliyah":[0,195,0.458],"analey":[0,22,0.0],"analeya":[0,225,0.4704],"annisten":[0,89,0.0],"apolline":[0,87,0.0],"aradhana":[0,152,0.4364],"arashel":[0,6,0.0],"arayana":[0,6,0.0],"ariahnna":[0,30,0.0],"aribel":[0,40,0.0],"ariyal":[0,6,0.0],"aryhanna":[0,21,0.0],"asialynn":[0,28,0.0],"asiamarie":[0,6,0.0],"asmi":[0,160,0.4408],"audreena":[0,81,0.0],"auroara":[0,37,0.0],"avabelle":[0,50,0.0],"avannah":[0,121,0.4166],"avanni":[0,236,0.4746],"aveanna":[0,58,0.0],"avianah":[0,259,0.4827],"ayonah":[0,6,0.0],"azayah":[78,103,0.257],"bellamie":[5,319,0.4944],"bentlie":[87,150,0.3006],"breylynn":[0,27,0.0],"caliann":[0,160,0.4408],"camilah":[0,312,0.4988],"carleigha":[0,11,0.0],"carriana":[0,12,0.0],"chelssy":[0,11,0.0],"chumy":[0,75,0.0],"cionni":[0,6,0.0],"daleth":[0,187,0.4544],"damayia":[0,16,0.0],"damyiah":[0,118,0.4144],"damyla":[0,117,0.4136],"danayara":[0,6,0.0],"dannielyn":[0,6,0.0],"danylah":[0,251,0.4799],"darilynn":[0,12,0.0],"dasiyah":[0,49,0.0],"davinna":[0,46,0.0],"deari":[5,258,0.4748],"dekyla":[0,12,0.0],"destinii":[0,43,0.0],"dilayla":[0,16,0.0],"dinasti":[0,6,0.0],"dlila":[0,29,0.0],"dlilah":[0,33,0.0],"dristi":[0,13,0.0],"eibhlin":[0,56,0.0],"elenis":[0,6,0.0],"elianis":[0,259,0.4827],"ellanie":[0,253,0.4806],"elliannah":[0,134,0.4254],"ellsa":[0,21,0.0],"ellyott":[5,52,0.0],"emah":[0,54,0.0],"emercyn":[0,53,0.0],"emmakay":[0,19,0.0],"euphoria":[0,77,0.0],"evanee":[0,112,0.4098],"ezperanza":[0,24,0.0],"faira":[0,6,0.0],"fatu":[0,17,0.0],"galiana":[0,77,0.0],"gaviota":[0,6,0.0],"ghalia":[0,172,0.4471],"giahna":[0,51,0.0],"giannella":[0,24,0.0],"gihanna":[0,64,0.0],"graecie":[0,6,0.0],"harleyquinn":[0,138,0.428],"harmanie":[0,32,0.0],"haset":[0,306,0.4971],"heavenli":[0,49,0.0],"hetvi":[0,81,0.0],"iannah":[0,11,0.0],"ilinca":[0,38,0.0],"iratze":[0,34,0.0],"irieana":[0,11,0.0],"isavella":[0,26,0.0],"ishaal":[0,6,0.0],"ishanvi":[0,577,0.5522],"isibeal":[0,14,0.0],"issabell":[0,16,0.0],"ivyona":[0,71,0.0],"iyhana":[0,6,0.0],"izariah":[0,51,0.0],"jacella":[0,6,0.0],"jaemarie":[0,84,0.0],"jaeyla":[0,18,0.0],"jahzel":[5,58,0.0],"jakarah":[0,6,0.0],"jakyriah":[0,11,0.0],"jalexi":[0,26,0.0],"jalyza":[0,6,0.0],"jamillette":[0,13,0.0],"jamoria":[0,16,0.0],"janala":[0,44,0.0],"janayja":[0,6,0.0],"jasyia":[0,11,0.0],"jayleena":[0,67,0.0],"jaylianis":[0,89,0.0],"jayvia":[0,6,0.0],"jazahria":[0,13,0.0],"jenali":[0,6,0.0],"jennesy":[0,15,0.0],"jenysis":[0,6,0.0],"jeylene":[0,11,0.0],"jiada":[0,28,0.0],"jizzelle":[0,56,0.0],"jkiyah":[0,6,0.0],"jliyah":[0,18,0.0],"joaneliz":[0,11,0.0],"jocelinne":[0,6,0.0],"johnyla":[0,6,0.0],"jolien":[0,12,0.0],"jordai":[0,6,0.0],"jordinn":[0,6,0.0],"julianie":[0,38,0.0],"jzabehl":[0,6,0.0],"kahmiya":[0,24,0.0],"kalayia":[0,33,0.0],"kaleiya":[0,81,0.0],"kalieah":[0,22,0.0],"kamarii":[219,213,0.2672],"kamariona":[0,29,0.0],"kashmiere":[9,6,0.0],"kayenne":[0,11,0.0],"keimaya":[0,6,0.0],"kenidie":[0,6,0.0],"kennasia":[0,14,0.0],"kenyla":[0,62,0.0],"kerionna":[0,24,0.0],"kharla":[0,11,0.0],"kieriana":[0,6,0.0],"kiniya":[0,11,0.0],"kiomy":[0,11,0.0],"klani":[0,470,0.5344],"kyari":[49,165,0.3594],"kyeleigh":[0,16,0.0],"laeloni":[0,21,0.0],"laiylah":[0,86,0.0],"lali":[0,42,0.0],"laniyha":[0,11,0.0],"lasiyah":[0,17,0.0],"laurianna":[0,29,0.0],"lavayah":[0,170,0.4461],"laylonnie":[0,78,0.0],"layona":[0,70,0.0],"leahla":[0,13,0.0],"leanie":[0,22,0.0],"leilanny":[0,193,0.4571],"lilarose":[0,24,0.0],"liliyana":[0,65,0.0],"lilliahna":[0,86,0.0],"lillyahna":[0,63,0.0],"lilyin":[0,20,0.0],"lismari":[0,6,0.0],"loammi":[0,6,0.0],"lucyana":[0,75,0.0],"lylli":[0,33,0.0],"madee":[0,24,0.0],"madielyn":[0,17,0.0],"maiara":[0,82,0.0],"mailah":[0,81,0.0],"makayda":[0,11,0.0],"malonni":[0,63,0.0],"maneh":[0,122,0.4173],"marabel":[0,20,0.0],"marbeli":[0,6,0.0],"marieanna":[0,11,0.0],"marihanna":[0,41,0.0],"marlasia":[0,36,0.0],"maryory":[0,6,0.0],"mayella":[0,110,0.4083],"mayren":[0,32,0.0],"mckynzi":[0,71,0.0],"meerab":[11,172,0.4253],"melayah":[0,150,0.4352],"mersaydez":[0,6,0.0],"meyling":[0,6,0.0],"milaan":[10,37,0.0],"miliany":[0,45,0.0],"myannah":[0,11,0.0],"naariah":[0,17,0.0],"naily":[0,19,0.0],"nakaiah":[0,6,0.0],"nakijah":[0,6,0.0],"naleyah":[0,128,0.4214],"natalise":[0,12,0.0],"naylee":[0,128,0.4214],"nayomee":[0,13,0.0],"nazyiah":[0,47,0.0],"nemya":[0,6,0.0],"nenah":[0,17,0.0],"nevaehmarie":[0,19,0.0],"ngone":[0,16,0.0],"niamiah":[5,42,0.0],"nickiyah":[0,12,0.0],"niyahna":[0,6,0.0],"niyema":[0,6,0.0],"nolynn":[28,82,0.3044],"nuriyah":[0,152,0.4364],"nyalise":[0,22,0.0],"nyveah":[0,26,0.0],"olivianna":[0,276,0.4882],"preesha":[0,97,0.0],"quiniyah":[0,33,0.0],"rahama":[0,16,0.0],"rasleen":[0,6,0.0],"rayjanae":[0,6,0.0],"reahanna":[0,6,0.0],"reigha":[0,14,0.0],"rhaelyn":[0,116,0.4129],"rhania":[0,6,0.0],"rhaniya":[0,38,0.0],"rhaniyah":[0,12,0.0],"riniya":[0,11,0.0],"rochely":[0,11,0.0],"rosalynne":[0,92,0.0],"ryleeann":[0,111,0.4091],"sabirin":[0,172,0.4471],"sadielynn":[0,50,0.0],"sadiemae":[0,85,0.0],"sahni":[0,32,0.0],"saidie":[0,45,0.0],"sailyn":[0,31,0.0],"saleisha":[0,25,0.0],"salise":[0,11,0.0],"samena":[0,6,0.0],"saniia":[0,18,0.0],"sarye":[0,69,0.0],"savayah":[0,209,0.464],"savea":[0,45,0.0],"semaiah":[0,17,0.0],"senyah":[0,6,0.0],"shadany":[0,6,0.0],"shamauria":[0,6,0.0],"shaniayah":[0,6,0.0],"shariana":[0,6,0.0],"shayah":[0,6,0.0],"shuniya":[0,6,0.0],"simyah":[0,23,0.0],"skyylar":[5,67,0.0],"solyana":[0,140,0.4292],"somaria":[0,11,0.0],"sunehri":[0,6,0.0],"surah":[0,250,0.4796],"surai":[0,98,0.0],"symphani":[0,136,0.4267],"synaya":[0,6,0.0],"syrae":[0,22,0.0],"talayjah":[0,13,0.0],"talim":[0,6,0.0],"tasiyah":[0,22,0.0],"tatevik":[0,6,0.0],"tatiyona":[0,11,0.0],"tecoa":[0,6,0.0],"tehana":[0,6,0.0],"tehilah":[0,16,0.0],"tessalee":[0,6,0.0],"teygan":[15,27,0.0],"tierni":[0,6,0.0],"trillian":[5,37,0.0],"tuleen":[0,198,0.4593],"tyrihanna":[0,77,0.0],"vanae":[0,31,0.0],"vivy":[0,11,0.0],"xaira":[0,11,0.0],"xiomayra":[0,6,0.0],"xylah":[0,476,0.5355],"yaditzel":[0,6,0.0],"yaelle":[0,49,0.0],"yaralis":[0,6,0.0],"yariely":[0,23,0.0],"yatzel":[0,25,0.0],"yeiry":[0,6,0.0],"yurith":[0,6,0.0],"zahari":[194,255,0.3013],"zaharra":[0,81,0.0],"zahmira":[0,6,0.0],"zakyiah":[0,67,0.0],"zalina":[0,88,0.0],"zamera":[0,12,0.0],"zamyiah":[0,122,0.4173],"zarrah":[0,156,0.4386],"ziniya":[0,11,0.0],"zoeyann":[0,53,0.0],"zuzana":[0,29,0.0],"zykerriah":[0,6,0.0],"aahna":[0,119,0.4151],"aamena":[0,10,0.0],"aanshi":[0,167,0.4445],"aariyona":[0,5,0.0],"abiela":[0,20,0.0],"abiella":[0,22,0.0],"abiha":[0,244,0.4775],"addalee":[0,265,0.4846],"addley":[0,292,0.4931],"adelei":[0,118,0.4144],"adelise":[0,233,0.4735],"adiella":[0,75,0.0],"adoncia":[0,5,0.0],"adorabella":[0,35,0.0],"adrieonna":[0,5,0.0],"adryanah":[0,5,0.0],"adysin":[0,40,0.0],"aeries":[5,16,0.0],"afrin":[0,48,0.0],"afrodita":[0,16,0.0],"ahlai":[0,37,0.0],"ahlanna":[0,35,0.0],"ahlyvia":[0,5,0.0],"ahmi":[43,67,0.2487],"ahmoni":[0,80,0.0],"ahnesty":[0,112,0.4098],"ahona":[0,5,0.0],"ahreanna":[0,5,0.0],"aidet":[0,5,0.0],"aishlin":[0,5,0.0],"ajna":[0,126,0.4201],"akaycia":[0,5,0.0],"alaythia":[0,53,0.0],"albrey":[0,13,0.0],"aleezay":[0,20,0.0],"aleira":[0,75,0.0],"alexiona":[0,10,0.0],"aleyla":[0,85,0.0],"alianis":[0,98,0.0],"aliva":[0,19,0.0],"allyonna":[0,5,0.0],"allyria":[0,17,0.0],"alynia":[0,5,0.0],"alysin":[0,10,0.0],"amagine":[0,5,0.0],"amaijah":[0,5,0.0],"amaliah":[0,106,0.4051],"amareah":[0,11,0.0],"amariyae":[0,10,0.0],"amaryss":[0,10,0.0],"ameryst":[0,5,0.0],"amielia":[0,30,0.0],"amirie":[15,46,0.0],"anailah":[0,48,0.0],"anaili":[0,26,0.0],"anaviah":[0,5,0.0],"anayshia":[0,16,0.0],"andersyn":[5,272,0.4797],"aneila":[0,24,0.0],"aneyda":[0,5,0.0],"annaelle":[0,160,0.4408],"annaira":[0,16,0.0],"annaluiza":[0,16,0.0],"anthonella":[0,296,0.4943],"anwitha":[0,94,0.0],"araceliz":[0,5,0.0],"arbay":[0,10,0.0],"arellys":[0,19,0.0],"arisela":[0,20,0.0],"arlea":[0,10,0.0],"armahni":[35,68,0.2658],"aroara":[0,18,0.0],"asaiya":[0,26,0.0],"asasha":[0,5,0.0],"asees":[0,366,0.5127],"asharri":[0,5,0.0],"ashera":[0,5,0.0],"ashirah":[0,22,0.0],"atinuke":[0,5,0.0],"aubreyona":[0,17,0.0],"aubrieana":[0,16,0.0],"audiana":[0,45,0.0],"audriaunna":[0,5,0.0],"auni":[0,20,0.0],"avalise":[0,92,0.0],"avilyn":[0,102,0.4017],"avlynn":[0,66,0.0],"ayaniah":[0,5,0.0],"aybree":[0,88,0.0],"ayliana":[0,112,0.4098],"aylianna":[0,15,0.0],"ayunna":[0,10,0.0],"azani":[34,193,0.4006],"azarae":[0,29,0.0],"azaraya":[0,5,0.0],"azaree":[0,39,0.0],"aziria":[0,5,0.0],"azurie":[0,58,0.0],"azyra":[0,57,0.0],"bailynn":[0,214,0.4661],"baylyn":[0,88,0.0],"belah":[0,21,0.0],"bellagrace":[0,152,0.4364],"betsayda":[0,5,0.0],"bettzy":[0,5,0.0],"beverlin":[0,5,0.0],"biftu":[0,10,0.0],"blerina":[0,5,0.0],"blissany":[0,11,0.0],"bradynn":[15,5,0.0],"braely":[0,44,0.0],"branyah":[0,14,0.0],"breeannah":[0,5,0.0],"brelle":[0,13,0.0],"breyanah":[0,5,0.0],"brookelyne":[0,10,0.0],"brookly":[0,10,0.0],"bryssia":[0,5,0.0],"camyiah":[0,35,0.0],"camyria":[0,5,0.0],"carsynn":[0,120,0.4158],"cayliana":[0,24,0.0],"cemya":[0,5,0.0],"chamiyah":[0,10,0.0],"charitha":[0,5,0.0],"charlieann":[0,78,0.0],"charliese":[0,10,0.0],"cheriah":[0,5,0.0],"cheznie":[0,21,0.0],"ciauna":[0,10,0.0],"coleigh":[0,15,0.0],"crisslyn":[0,5,0.0],"cynii":[0,5,0.0],"cyniyah":[0,62,0.0],"dafni":[0,10,0.0],"dakhia":[0,16,0.0],"dakyah":[0,5,0.0],"dalayah":[0,272,0.4869],"damiracle":[0,16,0.0],"danaira":[0,5,0.0],"dannicka":[0,5,0.0],"dannylynn":[0,5,0.0],"dariely":[0,61,0.0],"darihanna":[0,11,0.0],"dasharia":[0,5,0.0],"daylinn":[0,10,0.0],"dayva":[0,26,0.0],"dellana":[0,10,0.0],"deriah":[0,38,0.0],"derielle":[0,13,0.0],"deriona":[0,87,0.0],"deshiya":[0,10,0.0],"deyannah":[0,5,0.0],"dezya":[0,10,0.0],"dianet":[0,5,0.0],"dihanna":[0,10,0.0],"dishita":[0,11,0.0],"djamila":[0,29,0.0],"dlyla":[0,36,0.0],"dniah":[0,5,0.0],"dnyia":[0,5,0.0],"douaa":[0,5,0.0],"duice":[0,5,0.0],"dzejla":[0,21,0.0],"dzire":[0,17,0.0],"eidel":[0,23,0.0],"eimmy":[0,87,0.0],"eithne":[0,5,0.0],"eleyana":[0,5,0.0],"eliona":[0,73,0.0],"elizabith":[0,5,0.0],"ellani":[0,142,0.4305],"ellionna":[0,151,0.4358],"elliya":[0,46,0.0],"ellorie":[0,332,0.5042],"elsah":[0,12,0.0],"elyvia":[0,11,0.0],"emiree":[0,53,0.0],"eresmia":[0,5,0.0],"eriah":[0,51,0.0],"esteysi":[0,5,0.0],"evaleigh":[0,261,0.4833],"evangelyne":[0,126,0.4201],"evelie":[0,15,0.0],"evionna":[0,5,0.0],"evonny":[0,17,0.0],"evynne":[0,48,0.0],"eydi":[0,5,0.0],"ezabel":[0,5,0.0],"faelynn":[0,238,0.4753],"finnly":[76,15,0.0],"gelen":[0,5,0.0],"ghita":[0,71,0.0],"ginessa":[0,35,0.0],"gioanna":[0,5,0.0],"gyanni":[0,5,0.0],"haadiyah":[0,13,0.0],"haby":[0,64,0.0],"haileyjo":[0,5,0.0],"haiti":[0,50,0.0],"halayah":[0,61,0.0],"haleia":[0,5,0.0],"halye":[0,5,0.0],"harmonei":[0,87,0.0],"hartlee":[5,350,0.5029],"hasitha":[0,5,0.0],"hayah":[0,45,0.0],"hayliee":[0,10,0.0],"heylin":[0,96,0.0],"hifza":[0,35,0.0],"hindel":[0,17,0.0],"hyleigh":[0,12,0.0],"icelyn":[0,249,0.4792],"isabellemarie":[0,5,0.0],"ismaela":[0,11,0.0],"itayetzi":[0,53,0.0],"ivoryana":[0,5,0.0],"ivylynn":[0,153,0.4369],"ixzel":[0,13,0.0],"izara":[0,160,0.4408],"izibella":[0,33,0.0],"jaazaniah":[5,20,0.0],"jabriya":[0,15,0.0],"jaciah":[0,5,0.0],"jadalyse":[0,16,0.0],"jaeci":[0,22,0.0],"jaelei":[0,27,0.0],"jahzari":[0,5,0.0],"jaidalyn":[0,76,0.0],"jaileah":[0,28,0.0],"jainy":[0,5,0.0],"jakailyn":[0,39,0.0],"jakelynn":[0,5,0.0],"jakhira":[0,5,0.0],"jakhyia":[0,5,0.0],"jakhyla":[0,16,0.0],"jalexy":[0,27,0.0],"janavi":[0,22,0.0],"janirah":[0,21,0.0],"janneli":[0,5,0.0],"janniyah":[0,5,0.0],"janyriah":[0,5,0.0],"jariely":[0,10,0.0],"jaryiah":[0,98,0.0],"jasaya":[0,15,0.0],"jaszlyn":[0,5,0.0],"javlyn":[0,5,0.0],"jaycia":[0,10,0.0],"jaylece":[0,5,0.0],"jaylis":[0,22,0.0],"jaylisse":[0,5,0.0],"jazalin":[0,5,0.0],"jazyra":[0,10,0.0],"jazzelyn":[0,21,0.0],"jealyn":[0,11,0.0],"jeira":[0,5,0.0],"jemaya":[0,5,0.0],"jenaliz":[0,11,0.0],"jenalynn":[0,21,0.0],"jenasys":[0,53,0.0],"jencyn":[0,5,0.0],"jennya":[0,5,0.0],"jhaniah":[0,5,0.0],"jinah":[0,5,0.0],"jireth":[6,35,0.0],"jitzel":[0,30,0.0],"jlea":[0,5,0.0],"jnasia":[0,5,0.0],"joceleen":[0,5,0.0],"joelina":[0,20,0.0],"joelliane":[0,17,0.0],"julianny":[0,200,0.4602],"jurnei":[0,141,0.4298],"jyia":[0,5,0.0],"kaajal":[0,5,0.0],"kabree":[0,5,0.0],"kaddy":[0,10,0.0],"kahlina":[0,24,0.0],"kahlis":[0,5,0.0],"kaileeann":[0,10,0.0],"kaizley":[0,354,0.5098],"kamaiah":[0,15,0.0],"kamberlyn":[0,35,0.0],"kameera":[0,5,0.0],"kanaiyah":[0,5,0.0],"kanila":[0,5,0.0],"kanyra":[0,5,0.0],"kaolin":[0,5,0.0],"karai":[0,65,0.0],"karalena":[0,31,0.0],"kashlee":[0,39,0.0],"kayella":[0,16,0.0],"kaylanni":[0,308,0.4977],"kayleene":[0,5,0.0],"kayleigha":[0,44,0.0],"kaylian":[0,5,0.0],"kaylianne":[0,5,0.0],"kaylonie":[0,87,0.0],"kaylonnie":[0,71,0.0],"kazlyn":[0,76,0.0],"kdynce":[0,25,0.0],"kealohi":[0,5,0.0],"keimyah":[0,19,0.0],"keirrah":[0,28,0.0],"kemauria":[0,5,0.0],"kemilly":[0,28,0.0],"kemoria":[0,31,0.0],"kenaria":[0,10,0.0],"keniyha":[0,5,0.0],"kesly":[0,5,0.0],"keziya":[0,5,0.0],"khailee":[0,127,0.4208],"kheira":[0,26,0.0],"khennedi":[0,24,0.0],"khyleigh":[0,214,0.4661],"kily":[0,21,0.0],"kimoree":[0,11,0.0],"kinslea":[0,73,0.0],"kinsly":[0,95,0.0],"kirat":[6,82,0.0],"klariza":[0,11,0.0],"kloye":[0,10,0.0],"kolee":[0,10,0.0],"kornelia":[0,59,0.0],"kotomi":[0,5,0.0],"kymaya":[0,5,0.0],"kyralynn":[0,5,0.0],"kytalin":[0,5,0.0],"laekyn":[0,227,0.4712],"lahni":[0,21,0.0],"laileen":[0,5,0.0],"laityn":[13,246,0.4584],"lajaya":[0,17,0.0],"lakyrah":[0,5,0.0],"laleah":[0,5,0.0],"laliana":[0,10,0.0],"lameya":[0,5,0.0],"lanyra":[0,5,0.0],"larayna":[0,15,0.0],"lavaeh":[0,198,0.4593],"layann":[0,99,0.0],"layleen":[0,36,0.0],"layliah":[0,15,0.0],"laylianna":[0,70,0.0],"laylin":[0,162,0.4419],"laylla":[0,25,0.0],"laziah":[0,10,0.0],"lehiwa":[0,10,0.0],"leilane":[0,10,0.0],"leilanee":[0,81,0.0],"leilena":[0,5,0.0],"leionna":[0,27,0.0],"leliana":[0,314,0.4994],"lensa":[0,15,0.0],"lexci":[0,10,0.0],"lianet":[0,50,0.0],"lilea":[0,22,0.0],"lillienne":[0,64,0.0],"lillya":[0,18,0.0],"lilyani":[0,46,0.0],"lilylynn":[0,5,0.0],"linayah":[0,17,0.0],"liseli":[0,19,0.0],"loralynn":[0,57,0.0],"lucilia":[0,174,0.4481],"lucyanna":[0,71,0.0],"lunah":[0,204,0.4619],"lyllyan":[0,10,0.0],"lyncoln":[447,191,0.393],"lynlie":[0,61,0.0],"lyzandra":[0,5,0.0],"mabelin":[0,5,0.0],"madelys":[0,5,0.0],"mahkyla":[0,5,0.0],"maileen":[0,117,0.4136],"mailen":[0,659,0.5638],"makayiah":[0,5,0.0],"makenlie":[0,60,0.0],"makhaya":[0,5,0.0],"makhila":[0,28,0.0],"makinly":[0,45,0.0],"malacia":[0,5,0.0],"malaeka":[0,10,0.0],"mallia":[0,5,0.0],"malwina":[0,5,0.0],"mamy":[0,5,0.0],"manavi":[0,5,0.0],"mareyah":[0,5,0.0],"mariamawit":[0,191,0.4562],"marianely":[0,5,0.0],"mariangeles":[0,5,0.0],"marieana":[0,5,0.0],"mariolita":[0,5,0.0],"markaysia":[0,5,0.0],"marlayshia":[0,5,0.0],"marsadie":[0,5,0.0],"mattaya":[0,5,0.0],"mattyson":[0,10,0.0],"maybeline":[0,30,0.0],"maybellene":[0,24,0.0],"mayka":[0,26,0.0],"maykaylee":[0,5,0.0],"maylana":[0,29,0.0],"mayleah":[0,30,0.0],"mckaleigh":[0,5,0.0],"mckenli":[0,10,0.0],"mckynlie":[0,108,0.4067],"mclaine":[0,15,0.0],"meea":[0,11,0.0],"mersadiez":[0,5,0.0],"meyly":[0,5,0.0],"miella":[0,73,0.0],"mielle":[0,151,0.4358],"mikeyah":[0,5,0.0],"mikilah":[0,5,0.0],"mikinlee":[0,5,0.0],"milayah":[0,276,0.4882],"milaysia":[0,61,0.0],"miliyah":[0,171,0.4466],"milliani":[0,99,0.0],"mirena":[0,22,0.0],"missel":[0,5,0.0],"monikah":[0,5,0.0],"montanah":[0,10,0.0],"moriana":[0,5,0.0],"munisa":[0,42,0.0],"musiq":[71,44,0.2545],"naaliyah":[0,20,0.0],"nahila":[0,17,0.0],"naimo":[0,5,0.0],"naiyeli":[0,67,0.0],"nalanee":[0,10,0.0],"namiya":[0,61,0.0],"naohmi":[0,5,0.0],"naralie":[0,10,0.0],"natalii":[0,10,0.0],"natylie":[0,17,0.0],"nayelys":[0,5,0.0],"naylanie":[0,49,0.0],"nekya":[0,5,0.0],"nerely":[0,5,0.0],"nevaeah":[0,5,0.0],"neveyah":[0,141,0.4298],"niciah":[0,5,0.0],"nicteha":[0,5,0.0],"nikayah":[0,5,0.0],"nimrat":[0,227,0.4712],"niola":[0,5,0.0],"niranjana":[0,26,0.0],"nisma":[0,15,0.0],"nivaya":[0,31,0.0],"nizeria":[0,5,0.0],"norelys":[0,5,0.0],"nuhamin":[0,80,0.0],"nyarie":[0,72,0.0],"nylani":[0,424,0.5255],"nylla":[0,22,0.0],"olexa":[0,10,0.0],"olyvea":[0,10,0.0],"omarionna":[0,5,0.0],"oriyah":[0,208,0.4636],"ozaria":[0,15,0.0],"paigelynn":[0,21,0.0],"perfect":[12,31,0.0],"pharah":[0,103,0.4026],"pragathi":[0,36,0.0],"praylee":[0,15,0.0],"presslie":[0,10,0.0],"prestley":[0,10,0.0],"promyss":[0,17,0.0],"raeanah":[0,5,0.0],"raeyana":[0,5,0.0],"rahab":[0,33,0.0],"rahniyah":[0,17,0.0],"raiyn":[0,85,0.0],"rashya":[0,21,0.0],"rayva":[0,20,0.0],"reileigh":[0,26,0.0],"reyhana":[0,21,0.0],"rhianah":[0,10,0.0],"rhilynn":[0,272,0.4869],"riahanna":[0,10,0.0],"rickiah":[0,12,0.0],"riddhima":[0,51,0.0],"righley":[0,5,0.0],"rikku":[0,5,0.0],"rinesa":[0,5,0.0],"ripsi":[0,5,0.0],"ritvika":[0,15,0.0],"rokaya":[0,40,0.0],"ronniya":[0,5,0.0],"rosslynn":[0,65,0.0],"roua":[0,5,0.0],"ruwaida":[0,67,0.0],"sabela":[0,51,0.0],"sabiya":[0,5,0.0],"saedi":[0,15,0.0],"safeara":[0,5,0.0],"sahmiya":[0,10,0.0],"sahrai":[0,13,0.0],"sahyra":[0,15,0.0],"sakaiya":[0,5,0.0],"saneya":[0,5,0.0],"saniyha":[0,35,0.0],"sanyu":[0,10,0.0],"saraiyah":[0,269,0.486],"saura":[0,12,0.0],"savaya":[0,162,0.4419],"saviana":[0,22,0.0],"savvy":[0,425,0.5257],"sawda":[0,47,0.0],"sayanna":[0,17,0.0],"saybree":[0,5,0.0],"sehana":[0,5,0.0],"selphie":[0,5,0.0],"selyn":[0,5,0.0],"semyah":[0,17,0.0],"seray":[0,10,0.0],"seryn":[0,23,0.0],"serynity":[0,33,0.0],"shamso":[0,15,0.0],"shaniyia":[0,5,0.0],"shareny":[0,5,0.0],"sharvi":[0,167,0.4445],"shiloah":[0,23,0.0],"sidalee":[0,19,0.0],"sinchana":[0,5,0.0],"sisira":[0,159,0.4403],"skylaa":[0,40,0.0],"somaiya":[0,20,0.0],"sophira":[0,101,0.4009],"srimayi":[0,5,0.0],"srisha":[0,76,0.0],"steely":[5,179,0.4407],"stellina":[0,55,0.0],"sufi":[0,12,0.0],"summerrose":[0,94,0.0],"surenity":[0,36,0.0],"suvi":[0,175,0.4486],"swayzee":[0,276,0.4882],"synaia":[0,5,0.0],"syrie":[0,10,0.0],"talei":[0,60,0.0],"tanari":[0,11,0.0],"tanusha":[0,5,0.0],"tanzila":[0,29,0.0],"tashvi":[0,81,0.0],"tayani":[0,5,0.0],"taylene":[0,5,0.0],"tazanna":[0,52,0.0],"temprence":[0,112,0.4098],"teyahna":[0,5,0.0],"thandie":[0,14,0.0],"tmyra":[0,5,0.0],"tommya":[0,5,0.0],"tranyah":[0,5,0.0],"trenitee":[0,10,0.0],"trynati":[0,5,0.0],"tyley":[0,19,0.0],"ualani":[0,10,0.0],"umu":[0,27,0.0],"vaanya":[0,198,0.4593],"vaitea":[0,5,0.0],"vallyn":[0,33,0.0],"velouria":[0,33,0.0],"viany":[0,27,0.0],"vivyana":[0,54,0.0],"vylette":[0,119,0.4151],"xaniyah":[0,184,0.453],"xyanna":[0,15,0.0],"xymena":[0,33,0.0],"yadelis":[0,5,0.0],"yanahi":[0,10,0.0],"yanari":[0,11,0.0],"yarizel":[0,18,0.0],"yashasvi":[0,44,0.0],"yazline":[0,10,0.0],"yazlynn":[0,161,0.4414],"yeidy":[0,5,0.0],"yeliz":[0,11,0.0],"yesley":[0,5,0.0],"yisleine":[0,5,0.0],"ylan":[13,12,0.0],"yoonseo":[0,5,0.0],"yovela":[0,10,0.0],"yoyo":[0,73,0.0],"yunalesca":[0,59,0.0],"zafira":[0,150,0.4352],"zahiya":[0,21,0.0],"zahniah":[0,12,0.0],"zahyrah":[0,5,0.0],"zamaira":[0,17,0.0],"zanari":[0,92,0.0],"zanylah":[0,309,0.498],"zanyra":[0,5,0.0],"zarahy":[0,16,0.0],"zarhiya":[0,11,0.0],"zarie":[0,109,0.4075],"zavanna":[0,30,0.0],"zeriyah":[0,96,0.0],"zharyah":[0,5,0.0],"ziarre":[0,5,0.0],"zimaria":[0,5,0.0],"ziyanah":[0,10,0.0],"zoelie":[0,29,0.0],"zoeyjane":[0,57,0.0],"zsophia":[0,5,0.0],"zuheily":[0,15,0.0],"zuhra":[0,62,0.0],"zuriya":[0,83,0.0],"zydia":[0,5,0.0],"zykaria":[0,10,0.0],"zykeira":[0,19,0.0],"zyniyah":[0,63,0.0],"yurem":[925,0,0.5932],"nerik":[35,0,0.0],"dracen":[182,0,0.452],"kolben":[47,0,0.0],"kingsten":[767,0,0.577],"yuren":[57,0,0.0],"boedy":[67,0,0.0],"nerick":[39,0,0.0],"paxten":[294,31,0.4545],"ruhaan":[395,0,0.5193],"topher":[137,0,0.4273],"yeraldo":[23,0,0.0],"kenyin":[17,0,0.0],"qwanell":[51,0,0.0],"adahir":[62,0,0.0],"reik":[37,0,0.0],"slevin":[93,0,0.0],"syaire":[753,39,0.5512],"vyncent":[94,0,0.0],"aaqil":[64,0,0.0],"aarish":[331,0,0.504],"donnivin":[26,0,0.0],"jakyrin":[70,0,0.0],"kayser":[20,0,0.0],"laithan":[145,0,0.4323],"traycen":[137,0,0.4273],"wiktor":[41,0,0.0],"yeray":[432,5,0.5221],"adyen":[100,0,0.4],"aizen":[1734,0,0.6478],"aryav":[231,0,0.4727],"coleston":[175,0,0.4486],"darrent":[15,0,0.0],"derlin":[19,0,0.0],"havish":[185,0,0.4534],"hayzen":[308,18,0.4749],"janluca":[14,0,0.0],"jiraiya":[2044,110,0.6326],"jullius":[24,0,0.0],"keidyn":[39,0,0.0],"kemori":[9,5,0.0],"khian":[87,0,0.0],"kingstin":[304,0,0.4966],"kyllian":[297,0,0.4946],"maxsim":[42,0,0.0],"namarion":[14,0,0.0],"neric":[14,0,0.0],"riot":[1138,197,0.5329],"yabdiel":[54,0,0.0],"yeremi":[96,0,0.0],"zaydon":[388,0,0.5178],"zaylyn":[175,110,0.3015],"aajon":[8,0,0.0],"aarjav":[33,0,0.0],"aashrith":[186,0,0.4539],"adriyan":[55,0,0.0],"arhaan":[595,0,0.5549],"cavalli":[69,0,0.0],"daveontae":[8,0,0.0],"dereyon":[16,0,0.0],"deyvid":[42,0,0.0],"donnovin":[8,0,0.0],"halas":[14,0,0.0],"harjas":[74,17,0.0],"isse":[18,0,0.0],"jabien":[8,0,0.0],"jahmarcus":[14,0,0.0],"jediael":[35,0,0.0],"jeremmy":[57,0,0.0],"kallum":[581,0,0.5528],"linkyn":[293,88,0.397],"lynk":[118,0,0.4144],"malhar":[98,0,0.0],"myrion":[21,0,0.0],"neomiah":[86,0,0.0],"phinnaeus":[13,0,0.0],"rohen":[373,0,0.5143],"srihith":[101,0,0.4009],"taavi":[219,0,0.4681],"travyn":[38,0,0.0],"tysaun":[8,0,0.0],"xalen":[15,0,0.0],"yadel":[71,0,0.0],"zaedyn":[769,5,0.574],"aarit":[149,0,0.4346],"aariv":[1070,0,0.6059],"aaven":[61,0,0.0],"aben":[38,0,0.0],"advith":[278,0,0.4888],"aisaiah":[44,0,0.0],"arcel":[12,0,0.0],"arjen":[390,0,0.5182],"avrumi":[101,0,0.4009],"baer":[241,0,0.4764],"behr":[303,0,0.4963],"blayk":[33,0,0.0],"brayland":[57,0,0.0],"cahner":[7,0,0.0],"canyn":[7,0,0.0],"celton":[17,0,0.0],"dahani":[30,0,0.0],"damontrae":[7,0,0.0],"davidalexander":[19,0,0.0],"davyen":[13,0,0.0],"drayce":[215,0,0.4665],"dredon":[40,0,0.0],"elyon":[350,24,0.4816],"eyen":[7,0,0.0],"ezias":[51,0,0.0],"garang":[45,0,0.0],"haidin":[21,5,0.0],"hossain":[13,0,0.0],"izavion":[7,0,0.0],"jackman":[86,0,0.0],"jacorri":[23,0,0.0],"jadn":[7,0,0.0],"jahmi":[36,0,0.0],"jahsier":[79,0,0.0],"javarrion":[12,0,0.0],"javyion":[7,0,0.0],"jaydus":[24,0,0.0],"jayms":[17,0,0.0],"jediel":[34,0,0.0],"johansel":[45,0,0.0],"johnparker":[13,0,0.0],"josiaha":[21,0,0.0],"kacin":[67,0,0.0],"kahliel":[13,0,0.0],"kamario":[14,0,0.0],"kenay":[146,0,0.4329],"kevyon":[14,0,0.0],"kolbyn":[7,0,0.0],"krisztian":[20,0,0.0],"leelen":[48,0,0.0],"liev":[501,0,0.54],"lynkon":[63,0,0.0],"madan":[31,0,0.0],"masi":[43,5,0.0],"mathais":[37,0,0.0],"myking":[250,0,0.4796],"nayden":[193,0,0.4571],"neaven":[23,0,0.0],"nickai":[12,0,0.0],"nohlan":[134,0,0.4254],"obi":[270,0,0.4863],"oluwatimileyin":[82,0,0.0],"olyver":[292,0,0.4931],"oslo":[502,0,0.5401],"phinneas":[143,0,0.4311],"pradyun":[83,0,0.0],"rasim":[7,0,0.0],"reyansh":[2964,0,0.6944],"riyaan":[553,34,0.5217],"ronav":[330,0,0.5037],"roran":[464,0,0.5333],"rowin":[233,12,0.4544],"sasuke":[155,0,0.4381],"savva":[129,0,0.4221],"sei":[7,0,0.0],"shabd":[12,0,0.0],"shrikar":[14,0,0.0],"stylez":[97,0,0.0],"thacher":[19,0,0.0],"traxton":[186,0,0.4539],"trennen":[35,0,0.0],"tripton":[69,0,0.0],"tydon":[12,0,0.0],"tysyn":[7,0,0.0],"vidyuth":[103,0,0.4026],"ville":[15,0,0.0],"vinzent":[19,0,0.0],"waylyn":[234,106,0.3485],"xain":[77,0,0.0],"xayne":[209,0,0.464],"zenen":[7,0,0.0],"zimir":[127,0,0.4208],"zoel":[112,36,0.3285],"abdalah":[6,0,0.0],"abdisalan":[11,0,0.0],"abdulahad":[160,0,0.4408],"achai":[6,0,0.0],"adriean":[18,0,0.0],"adryn":[26,6,0.0],"ahlias":[97,0,0.0],"ahsir":[74,0,0.0],"aidean":[23,0,0.0],"alay":[17,0,0.0],"alistar":[166,0,0.444],"amair":[144,0,0.4317],"amillio":[92,0,0.0],"anaias":[11,0,0.0],"ang":[6,0,0.0],"aniq":[6,0,0.0],"anthuan":[90,0,0.0],"archimedes":[182,0,0.452],"ayyoub":[13,0,0.0],"bralan":[6,0,0.0],"caed":[11,0,0.0],"cardea":[6,0,0.0],"catch":[18,0,0.0],"cobyn":[13,0,0.0],"colbyn":[16,0,0.0],"corlin":[17,0,0.0],"cormack":[21,0,0.0],"corny":[11,0,0.0],"crews":[140,0,0.4292],"creyton":[11,0,0.0],"dacorey":[16,0,0.0],"daevyn":[6,0,0.0],"dahmari":[11,0,0.0],"daigen":[6,0,0.0],"daltry":[6,0,0.0],"dasen":[17,0,0.0],"daughtry":[33,0,0.0],"declin":[89,0,0.0],"devam":[36,0,0.0],"dhru":[11,0,0.0],"draedon":[6,0,0.0],"dyego":[6,0,0.0],"edgerin":[6,0,0.0],"edmilson":[6,0,0.0],"edrey":[13,0,0.0],"eh":[421,272,0.3452],"eithyn":[11,0,0.0],"elay":[55,0,0.0],"elisee":[25,0,0.0],"emmaus":[190,5,0.4463],"emyr":[107,0,0.4059],"eraldo":[6,0,0.0],"essey":[31,0,0.0],"evangel":[12,0,0.0],"eyosias":[50,0,0.0],"ezaiah":[114,0,0.4114],"ezkiel":[32,0,0.0],"gatsby":[141,5,0.418],"geontae":[6,0,0.0],"habraham":[6,0,0.0],"hadriel":[183,0,0.4525],"hamse":[68,0,0.0],"hazin":[6,0,0.0],"hovik":[13,0,0.0],"ilyan":[103,0,0.4026],"imri":[128,24,0.3675],"innocent":[71,5,0.0],"itzcoatl":[6,0,0.0],"itziar":[6,0,0.0],"izaiya":[18,0,0.0],"izeiah":[44,0,0.0],"izyk":[95,0,0.0],"jahai":[11,0,0.0],"jahdon":[6,0,0.0],"jahier":[54,0,0.0],"jahsire":[33,0,0.0],"jaisiah":[39,0,0.0],"jakeveon":[6,0,0.0],"jakyran":[6,0,0.0],"jamariae":[6,0,0.0],"jamiron":[6,0,0.0],"jathniel":[172,0,0.4471],"jaxsun":[131,0,0.4235],"jayllen":[11,0,0.0],"jayriel":[31,0,0.0],"jaystin":[65,0,0.0],"jedric":[6,0,0.0],"jekai":[36,0,0.0],"jeramya":[6,0,0.0],"jeyren":[206,0,0.4628],"jkari":[25,0,0.0],"joeziah":[117,0,0.4136],"johniel":[97,0,0.0],"joscar":[11,0,0.0],"josepablo":[21,0,0.0],"julein":[6,0,0.0],"jusus":[6,0,0.0],"kaigen":[33,5,0.0],"kairav":[383,0,0.5166],"kaiyan":[275,0,0.4879],"kaiyen":[82,0,0.0],"kebron":[90,16,0.3439],"keiser":[59,0,0.0],"keyland":[11,0,0.0],"khyber":[16,0,0.0],"kingsly":[105,0,0.4042],"korbon":[6,0,0.0],"kordai":[58,0,0.0],"kyian":[119,0,0.4151],"kysin":[114,0,0.4114],"kyven":[54,0,0.0],"leelyn":[168,23,0.4013],"leeshaun":[6,0,0.0],"lemaj":[6,0,0.0],"lenden":[23,0,0.0],"lochlin":[112,0,0.4098],"luisgabriel":[6,0,0.0],"lyzander":[39,0,0.0],"maddoxx":[152,0,0.4364],"makhii":[11,0,0.0],"marqwon":[6,0,0.0],"marterrius":[6,0,0.0],"maysin":[100,5,0.385],"melih":[41,0,0.0],"mikayel":[120,0,0.4158],"milez":[71,0,0.0],"milosz":[6,0,0.0],"muhtasim":[6,0,0.0],"myki":[6,0,0.0],"mykolas":[20,0,0.0],"nahki":[13,0,0.0],"naor":[12,0,0.0],"nassiah":[51,12,0.0],"nehimiah":[13,0,0.0],"nesean":[12,0,0.0],"niven":[24,0,0.0],"norrin":[158,0,0.4397],"oberon":[266,0,0.485],"oluwadurotimi":[6,0,0.0],"otavio":[79,0,0.0],"packer":[35,0,0.0],"phinneaus":[6,0,0.0],"qamari":[21,5,0.0],"qualan":[12,0,0.0],"ramesses":[200,0,0.4602],"riggins":[893,5,0.5874],"rmon":[21,0,0.0],"rydon":[6,0,0.0],"rylend":[106,0,0.4051],"saikou":[20,0,0.0],"sait":[11,0,0.0],"shaked":[6,0,0.0],"skyland":[30,22,0.0],"srithan":[62,0,0.0],"suhan":[122,15,0.3806],"taidyn":[56,0,0.0],"tannin":[11,0,0.0],"teegen":[17,0,0.0],"trayshun":[6,0,0.0],"triumph":[90,5,0.0],"tryp":[11,0,0.0],"willibaldo":[6,0,0.0],"wily":[6,0,0.0],"xoaquin":[6,0,0.0],"yamen":[317,0,0.5002],"yeruchem":[6,0,0.0],"yoscar":[31,0,0.0],"zackariya":[55,0,0.0],"zadian":[22,0,0.0],"zaelen":[54,0,0.0],"zaeveon":[17,0,0.0],"zamarcus":[6,0,0.0],"zaydyn":[309,0,0.498],"zeron":[6,0,0.0],"ziion":[23,0,0.0],"zyiere":[100,0,0.4],"aaban":[127,0,0.4208],"abdulrhman":[28,0,0.0],"adason":[5,5,0.0],"adhem":[11,0,0.0],"adhvaith":[80,0,0.0],"adnel":[5,0,0.0],"aerian":[5,5,0.0],"aidien":[5,0,0.0],"aires":[98,27,0.3288],"akilan":[96,0,0.0],"aking":[362,0,0.5117],"akzel":[44,0,0.0],"alexzandyr":[5,0,0.0],"alezandro":[16,0,0.0],"allam":[10,0,0.0],"alyk":[27,0,0.0],"amaari":[10,0,0.0],"amrith":[5,0,0.0],"anderzon":[27,0,0.0],"anikan":[16,0,0.0],"anthani":[5,0,0.0],"arcadian":[25,0,0.0],"arcangel":[242,0,0.4768],"ariz":[188,0,0.4548],"arkadiusz":[18,0,0.0],"aryen":[71,0,0.0],"ashkii":[18,0,0.0],"asier":[198,0,0.4593],"asis":[5,0,0.0],"athon":[11,0,0.0],"atiksh":[59,0,0.0],"avenn":[10,0,0.0],"avieon":[11,0,0.0],"ayhem":[54,0,0.0],"azekiel":[301,0,0.4957],"azer":[21,0,0.0],"azjon":[5,0,0.0],"azryel":[32,0,0.0],"bakr":[55,0,0.0],"barack":[305,0,0.4969],"berat":[34,0,0.0],"berenger":[23,0,0.0],"besart":[10,0,0.0],"blaken":[5,0,0.0],"blayd":[5,0,0.0],"bodan":[12,0,0.0],"boon":[15,0,0.0],"braylend":[5,0,0.0],"brelen":[5,0,0.0],"brensen":[10,0,0.0],"bridan":[5,0,0.0],"brishaun":[5,0,0.0],"broderik":[11,0,0.0],"brolin":[105,0,0.4042],"broly":[453,0,0.5312],"bukhari":[45,0,0.0],"burech":[178,0,0.4501],"cace":[131,0,0.4235],"chaeden":[5,0,0.0],"chayten":[24,0,0.0],"chrishad":[5,0,0.0],"chrissean":[10,0,0.0],"chuma":[5,0,0.0],"cormarion":[15,0,0.0],"creeden":[86,0,0.0],"crewe":[148,0,0.4341],"crissangel":[5,0,0.0],"crisstopher":[5,0,0.0],"cruse":[31,0,0.0],"dahlon":[5,0,0.0],"daigon":[5,0,0.0],"daivian":[15,0,0.0],"dakarii":[52,0,0.0],"damaun":[5,0,0.0],"darwuin":[5,0,0.0],"datavius":[5,0,0.0],"daviere":[15,0,0.0],"daxson":[292,0,0.4931],"daygan":[12,0,0.0],"deareon":[5,0,0.0],"deason":[30,0,0.0],"deiby":[51,0,0.0],"demarien":[47,0,0.0],"deryon":[5,0,0.0],"devraj":[22,0,0.0],"dilshan":[15,0,0.0],"diomar":[48,0,0.0],"divij":[42,0,0.0],"donoban":[5,0,0.0],"dontavias":[5,0,0.0],"draedyn":[113,0,0.4106],"dragen":[10,0,0.0],"draylen":[202,0,0.4611],"dresdyn":[5,0,0.0],"dreson":[53,0,0.0],"eathyn":[24,0,0.0],"edwind":[5,0,0.0],"eliijah":[48,0,0.0],"elyjiah":[29,0,0.0],"emareon":[5,0,0.0],"emmerich":[248,0,0.4789],"erhan":[44,0,0.0],"erwan":[11,0,0.0],"eyuel":[77,0,0.0],"fabrisio":[10,0,0.0],"fanuel":[64,0,0.0],"finton":[71,0,0.0],"gabrielmichael":[10,0,0.0],"gavian":[5,0,0.0],"gavyne":[5,0,0.0],"giano":[120,0,0.4158],"gowtham":[66,0,0.0],"grayer":[161,0,0.4414],"grifin":[5,0,0.0],"grisham":[43,0,0.0],"gryffen":[12,0,0.0],"gurshawn":[11,0,0.0],"guru":[13,0,0.0],"hayson":[37,0,0.0],"holston":[264,0,0.4843],"hykeim":[5,0,0.0],"ibraheim":[5,0,0.0],"iesa":[5,0,0.0],"imere":[29,0,0.0],"ithiel":[170,0,0.4461],"itsuki":[57,0,0.0],"ittai":[28,0,0.0],"izaack":[23,0,0.0],"izyah":[5,0,0.0],"izzaiah":[15,0,0.0],"jabel":[25,0,0.0],"jabian":[10,0,0.0],"jabrandon":[5,0,0.0],"jacaden":[83,0,0.0],"jacaryous":[5,0,0.0],"jaceton":[15,0,0.0],"jacion":[468,0,0.534],"jadarrien":[5,0,0.0],"jaharri":[53,0,0.0],"jahmauri":[21,0,0.0],"jakarion":[62,0,0.0],"jakodi":[23,0,0.0],"jamelvin":[5,0,0.0],"jamerian":[18,0,0.0],"jamesson":[47,0,0.0],"jamiir":[21,0,0.0],"jamykal":[5,0,0.0],"janlucas":[30,0,0.0],"jansel":[76,0,0.0],"jarique":[5,0,0.0],"jasere":[10,0,0.0],"jasias":[58,0,0.0],"jatayvion":[29,0,0.0],"javontaye":[5,0,0.0],"jaybin":[5,0,0.0],"jaycion":[890,0,0.5899],"jaydenlee":[11,0,0.0],"jayin":[79,0,0.0],"jayloni":[17,81,0.0],"jayvius":[10,0,0.0],"jayvn":[20,0,0.0],"jayzier":[5,0,0.0],"jazin":[5,0,0.0],"jeiner":[10,0,0.0],"jekari":[15,0,0.0],"jekori":[5,0,0.0],"jeremai":[50,0,0.0],"jerimiha":[5,0,0.0],"jerrious":[5,0,0.0],"jeshwa":[5,0,0.0],"jessiejames":[5,0,0.0],"jiovannie":[5,0,0.0],"jmere":[5,0,0.0],"jobari":[5,0,0.0],"johvanny":[10,0,0.0],"jolian":[5,0,0.0],"jomei":[10,0,0.0],"jordanalexander":[5,0,0.0],"josael":[20,0,0.0],"josbel":[10,0,0.0],"joseadrian":[5,0,0.0],"josegabriel":[10,0,0.0],"joshuar":[5,0,0.0],"josiahs":[89,0,0.0],"jovahni":[11,0,0.0],"juanenrique":[5,0,0.0],"juanjr":[5,0,0.0],"juelian":[5,0,0.0],"jyion":[5,0,0.0],"jyrelle":[5,0,0.0],"jyshon":[5,0,0.0],"jysir":[10,0,0.0],"kadean":[10,0,0.0],"kailar":[12,0,0.0],"kaique":[75,0,0.0],"kaleth":[423,0,0.5253],"kamarre":[5,0,0.0],"kanyan":[5,0,0.0],"karmari":[5,0,0.0],"kas":[49,0,0.0],"kashius":[351,0,0.5091],"kashten":[260,0,0.483],"kavell":[31,0,0.0],"kaysaan":[10,0,0.0],"kayshon":[15,0,0.0],"kayvin":[46,0,0.0],"kelik":[5,0,0.0],"kemarian":[23,0,0.0],"kendrel":[5,0,0.0],"keveen":[5,0,0.0],"keyler":[405,0,0.5215],"keymar":[10,0,0.0],"kfir":[5,0,0.0],"khelan":[53,0,0.0],"kiai":[49,0,0.0],"kias":[22,0,0.0],"kolston":[333,0,0.5045],"koreyon":[11,0,0.0],"korinthian":[5,0,0.0],"korrigan":[10,0,0.0],"krishtian":[5,0,0.0],"kristhian":[30,0,0.0],"kristobal":[11,0,0.0],"kruze":[553,5,0.5444],"kuno":[10,0,0.0],"kupaa":[29,0,0.0],"kushagra":[44,0,0.0],"kymanie":[5,0,0.0],"kyngston":[918,0,0.5926],"kyreon":[16,0,0.0],"kyvion":[5,0,0.0],"ladaveon":[5,0,0.0],"ladavian":[5,0,0.0],"ladaynian":[5,0,0.0],"laderrian":[5,0,0.0],"landric":[41,0,0.0],"larreon":[5,0,0.0],"laylen":[27,46,0.0],"leilend":[5,0,0.0],"lelind":[5,0,0.0],"lelyn":[22,0,0.0],"leonidus":[157,0,0.4392],"leovanni":[372,0,0.5141],"lerico":[5,0,0.0],"loagen":[5,0,0.0],"lycan":[149,0,0.4346],"mahlek":[10,0,0.0],"maicon":[28,0,0.0],"makieh":[5,0,0.0],"maks":[331,0,0.504],"malicai":[11,0,0.0],"manfredo":[5,0,0.0],"manthan":[5,0,0.0],"marckos":[5,0,0.0],"markiss":[10,0,0.0],"marrick":[21,0,0.0],"mathyas":[13,0,0.0],"mattaniah":[25,0,0.0],"mavryk":[244,5,0.4696],"maxymus":[5,0,0.0],"medhansh":[101,0,0.4009],"mehrab":[56,0,0.0],"mehtaab":[76,0,0.0],"metehan":[26,0,0.0],"mikaal":[38,0,0.0],"miliano":[307,0,0.4974],"monterion":[5,0,0.0],"montevious":[5,0,0.0],"montrevious":[5,0,0.0],"muktar":[33,0,0.0],"munachimso":[122,174,0.2905],"musashi":[20,0,0.0],"musse":[10,0,0.0],"mykeil":[10,0,0.0],"myshon":[24,0,0.0],"naftuly":[52,0,0.0],"najih":[5,0,0.0],"naol":[142,0,0.4305],"napat":[5,0,0.0],"narcizo":[5,0,0.0],"narell":[5,0,0.0],"naryan":[29,0,0.0],"nathael":[23,0,0.0],"navan":[16,0,0.0],"navarius":[5,0,0.0],"nazere":[22,0,0.0],"nechemiah":[5,0,0.0],"nickali":[28,0,0.0],"nikolia":[11,5,0.0],"nishith":[5,0,0.0],"nolawi":[270,0,0.4863],"nouh":[112,0,0.4098],"nussen":[101,0,0.4009],"nyson":[16,0,0.0],"ohan":[5,0,0.0],"ohitika":[5,0,0.0],"or":[37,0,0.0],"parv":[96,0,0.0],"pedrojr":[5,0,0.0],"pradyumna":[33,0,0.0],"pranith":[32,0,0.0],"princemichael":[27,0,0.0],"quameir":[5,0,0.0],"ragav":[5,0,0.0],"rahjon":[24,0,0.0],"raihaan":[5,0,0.0],"rakshan":[52,0,0.0],"rayjay":[15,0,0.0],"raymarion":[12,0,0.0],"redwan":[11,0,0.0],"reyner":[17,0,0.0],"richter":[65,0,0.0],"ridwaan":[11,0,0.0],"romare":[31,0,0.0],"romere":[55,0,0.0],"romio":[46,0,0.0],"ryel":[41,11,0.0],"rykker":[133,0,0.4248],"saicharan":[47,0,0.0],"salaheddine":[5,0,0.0],"samarjit":[5,0,0.0],"sandesh":[10,0,0.0],"sanjan":[5,0,0.0],"savieon":[17,0,0.0],"savit":[5,0,0.0],"semarias":[5,0,0.0],"shardul":[10,0,0.0],"sharmake":[10,0,0.0],"soyer":[12,0,0.0],"srivar":[5,0,0.0],"steeve":[32,0,0.0],"stevion":[12,0,0.0],"success":[87,117,0.2649],"suheib":[5,0,0.0],"suvir":[61,0,0.0],"szander":[5,0,0.0],"taigon":[5,0,0.0],"taizo":[10,0,0.0],"tajmere":[5,0,0.0],"tamorion":[5,0,0.0],"taqi":[15,0,0.0],"tarzan":[15,0,0.0],"tayzen":[5,0,0.0],"temari":[5,233,0.4653],"temuujin":[5,0,0.0],"terryion":[23,0,0.0],"thanasi":[5,0,0.0],"tiegen":[11,0,0.0],"tracyn":[47,0,0.0],"traegan":[31,0,0.0],"traeshaun":[5,0,0.0],"tramari":[15,0,0.0],"tredon":[5,0,0.0],"treycen":[54,0,0.0],"tristam":[5,0,0.0],"troyvon":[10,0,0.0],"trypp":[127,0,0.4208],"tyquarious":[5,0,0.0],"tyvaughn":[5,0,0.0],"tyzaiah":[5,0,0.0],"tyzer":[11,0,0.0],"uciel":[5,0,0.0],"udbhav":[10,0,0.0],"varad":[72,0,0.0],"vineel":[5,0,0.0],"wisin":[27,0,0.0],"witten":[974,57,0.5693],"xamir":[117,0,0.4136],"xizavier":[5,0,0.0],"xzadrian":[25,0,0.0],"yahriel":[20,0,0.0],"yaiden":[187,0,0.4544],"yajat":[21,0,0.0],"yanixan":[95,0,0.0],"yankee":[5,0,0.0],"yashveer":[40,0,0.0],"yaxiel":[169,0,0.4456],"yeabsira":[41,13,0.0],"yediel":[47,0,0.0],"yener":[16,0,0.0],"yeyson":[64,0,0.0],"yissachar":[35,0,0.0],"yitzchock":[10,0,0.0],"yosimar":[11,0,0.0],"youssif":[34,0,0.0],"yusei":[54,0,0.0],"zaavan":[26,0,0.0],"zaccariah":[10,0,0.0],"zace":[5,0,0.0],"zaiveon":[12,0,0.0],"zakariyah":[147,19,0.3932],"zakhai":[157,0,0.4392],"zakori":[15,0,0.0],"zamauri":[101,6,0.3831],"zareb":[5,0,0.0],"zaydn":[152,0,0.4364],"zaydrian":[281,0,0.4897],"zentavious":[5,0,0.0],"zerion":[23,0,0.0],"zhayne":[42,0,0.0],"zione":[5,0,0.0],"zyaun":[5,0,0.0],"zyel":[101,0,0.4009],"zyheem":[33,0,0.0],"zylin":[140,0,0.4292],"zyrese":[5,0,0.0],"aideliz":[0,114,0.4114],"evolet":[0,1542,0.6376],"jennavecia":[0,246,0.4782],"kherington":[0,441,0.5289],"syesha":[0,64,0.0],"chrisette":[0,505,0.5407],"emeraude":[0,51,0.0],"aymar":[23,295,0.4643],"yaindhi":[0,29,0.0],"dayamy":[0,30,0.0],"eiza":[0,1444,0.6319],"dayamin":[0,25,0.0],"marelie":[0,17,0.0],"alizzon":[0,61,0.0],"braelynne":[0,190,0.4558],"jennavicia":[0,40,0.0],"zheneavia":[0,16,0.0],"palin":[0,148,0.4341],"dhiya":[0,231,0.4727],"jaslenne":[0,13,0.0],"javaeh":[0,166,0.444],"jazyiah":[0,136,0.4267],"kardyn":[0,13,0.0],"sahily":[0,594,0.5548],"sanaria":[0,25,0.0],"aidelis":[0,12,0.0],"alanee":[0,125,0.4194],"ameirah":[0,84,0.0],"cardyn":[0,17,0.0],"cortana":[0,198,0.4593],"laveya":[0,65,0.0],"paytton":[0,34,0.0],"ramielle":[0,17,0.0],"zyionna":[0,77,0.0],"aashrita":[0,63,0.0],"evolette":[0,290,0.4925],"gabriellah":[0,98,0.0],"irihanna":[0,33,0.0],"janayshia":[0,11,0.0],"jeslene":[0,18,0.0],"keyniah":[0,11,0.0],"nakshatra":[0,176,0.4491],"pragnya":[0,66,0.0],"tylaysia":[0,34,0.0],"altair":[229,168,0.2998],"eiliyah":[0,293,0.4934],"evelette":[0,157,0.4392],"everleigh":[5,19284,0.8568],"iridessa":[0,197,0.4589],"jaiyanna":[0,124,0.4187],"jenavecia":[0,45,0.0],"jingyi":[5,31,0.0],"kimoralee":[0,10,0.0],"kmora":[0,83,0.0],"niley":[0,76,0.0],"ramiele":[0,10,0.0],"toleen":[0,185,0.4534],"yasline":[0,21,0.0],"yazel":[0,10,0.0],"zailynn":[5,305,0.4902],"zylie":[0,163,0.4424],"aaziyah":[0,39,0.0],"ahnyla":[0,152,0.4364],"aileana":[0,75,0.0],"amilea":[0,91,0.0],"analyah":[0,110,0.4083],"angelline":[0,9,0.0],"aroush":[0,144,0.4317],"aubriegh":[0,79,0.0],"braylinn":[5,139,0.4167],"danayshia":[0,9,0.0],"dayanari":[0,15,0.0],"dhanvi":[0,270,0.4863],"eldana":[0,579,0.5525],"elyanah":[0,139,0.4286],"evalette":[0,111,0.4091],"evelett":[0,38,0.0],"irsa":[0,33,0.0],"jenavicia":[0,9,0.0],"kamiera":[0,30,0.0],"kielynn":[0,64,0.0],"kirana":[0,67,0.0],"layliana":[0,201,0.4606],"lumi":[26,580,0.5326],"maleiya":[0,96,0.0],"munachiso":[17,64,0.0],"natilyn":[0,38,0.0],"nyella":[0,153,0.4369],"paylin":[0,138,0.428],"promize":[0,30,0.0],"remas":[0,180,0.4511],"saffiyah":[0,67,0.0],"saory":[0,97,0.0],"shritha":[0,89,0.0],"tricity":[0,9,0.0],"yanielis":[0,26,0.0],"yazleen":[0,100,0.4],"zarayah":[0,242,0.4768],"adrijana":[0,86,0.0],"alannie":[0,180,0.4511],"alisiana":[0,18,0.0],"allizzon":[0,25,0.0],"amauriah":[0,14,0.0],"annalize":[0,81,0.0],"araiyah":[0,200,0.4602],"aubrina":[0,98,0.0],"aureliana":[0,68,0.0],"avleen":[0,363,0.512],"aye":[0,25,0.0],"besan":[0,116,0.4129],"boey":[0,8,0.0],"byata":[0,8,0.0],"coreyona":[0,8,0.0],"dannalee":[0,14,0.0],"dashyia":[0,8,0.0],"deairah":[0,24,0.0],"dehlila":[0,18,0.0],"dereonna":[0,62,0.0],"dianney":[0,13,0.0],"eera":[0,58,0.0],"emilina":[0,133,0.4248],"esmae":[0,1376,0.6277],"evalani":[0,34,0.0],"evolett":[0,177,0.4496],"farhiyo":[0,13,0.0],"gabriyel":[11,13,0.0],"hollynn":[0,160,0.4408],"irelynne":[0,33,0.0],"jalae":[0,13,0.0],"jameriya":[0,13,0.0],"janelise":[0,18,0.0],"jaylana":[0,44,0.0],"jennesis":[0,133,0.4248],"jenova":[0,92,0.0],"jizele":[0,13,0.0],"kahniyah":[0,8,0.0],"kamarrah":[0,8,0.0],"karidee":[0,13,0.0],"keasiah":[0,14,0.0],"keerat":[10,143,0.4084],"kellyanna":[0,8,0.0],"khamyah":[0,36,0.0],"kinlea":[0,44,0.0],"lanaijah":[0,8,0.0],"leonah":[0,31,0.0],"luzmary":[0,19,0.0],"marelys":[0,8,0.0],"masiela":[0,25,0.0],"mezmariah":[0,13,0.0],"milei":[0,32,0.0],"montserat":[0,8,0.0],"naeli":[0,28,0.0],"olachi":[0,28,0.0],"onisty":[0,13,0.0],"palyn":[0,107,0.4059],"ramatou":[0,8,0.0],"rilynne":[0,127,0.4208],"sakayla":[0,13,0.0],"shylea":[0,8,0.0],"soraiya":[0,146,0.4329],"tanila":[0,8,0.0],"tazariah":[0,8,0.0],"thaliana":[0,44,0.0],"varshitha":[0,8,0.0],"yaheli":[0,50,0.0],"yaindhy":[0,8,0.0],"yilin":[11,94,0.3619],"yvaine":[0,183,0.4525],"zamyriah":[0,21,0.0],"zarriyah":[0,50,0.0],"zila":[0,89,0.0],"zuriyah":[0,233,0.4735],"zyiana":[0,18,0.0],"aariya":[0,225,0.4704],"abygaile":[0,13,0.0],"adabella":[0,187,0.4544],"adrihanna":[0,22,0.0],"afomia":[0,171,0.4466],"aiyahna":[0,28,0.0],"alayzhia":[0,7,0.0],"alecxa":[0,18,0.0],"aleighna":[0,111,0.4091],"amiley":[0,77,0.0],"amriel":[0,17,0.0],"analeigha":[0,321,0.5013],"angellie":[0,13,0.0],"aricella":[0,46,0.0],"aryani":[0,103,0.4026],"asira":[0,18,0.0],"attia":[0,7,0.0],"aubrye":[0,41,0.0],"audriena":[0,24,0.0],"avasophia":[0,18,0.0],"ayelin":[0,41,0.0],"ayuna":[0,7,0.0],"azelynn":[0,60,0.0],"azirah":[0,58,0.0],"baeley":[0,23,0.0],"bryhanna":[0,20,0.0],"callieann":[0,48,0.0],"cambrielle":[0,33,0.0],"caralena":[0,49,0.0],"celiyah":[0,24,0.0],"charlii":[0,129,0.4221],"cimora":[0,7,0.0],"cyane":[0,7,0.0],"cyasia":[0,20,0.0],"dariyana":[0,32,0.0],"davaya":[0,54,0.0],"demarionna":[0,7,0.0],"demyiah":[0,45,0.0],"devlynn":[0,78,0.0],"eknoor":[28,167,0.3922],"elianie":[0,124,0.4187],"eliyanna":[0,192,0.4567],"elleri":[0,134,0.4254],"elliann":[0,37,0.0],"elliyana":[0,127,0.4208],"emanii":[0,134,0.4254],"eveli":[0,7,0.0],"everley":[0,2208,0.6688],"harmoniee":[0,79,0.0],"heilyn":[0,100,0.4],"hilinai":[0,92,0.0],"israelle":[0,55,0.0],"izzabela":[0,12,0.0],"jaleiyah":[0,91,0.0],"jasyiah":[10,17,0.0],"jayva":[0,33,0.0],"jenalise":[0,64,0.0],"jihanna":[0,38,0.0],"jimmiah":[0,7,0.0],"jordeyn":[0,7,0.0],"jovey":[0,91,0.0],"kacyn":[240,54,0.403],"kaibree":[0,14,0.0],"kany":[0,17,0.0],"kayleemarie":[0,12,0.0],"kemarie":[0,22,0.0],"kimarah":[0,13,0.0],"kimayah":[0,25,0.0],"kitzya":[0,13,0.0],"kurumi":[0,7,0.0],"kymbree":[0,61,0.0],"kynsleigh":[0,552,0.5484],"leamsi":[0,59,0.0],"leighna":[0,38,0.0],"leihla":[0,22,0.0],"lilyannah":[0,84,0.0],"lilyen":[0,40,0.0],"liyanna":[0,141,0.4298],"lyli":[0,27,0.0],"lynnleigh":[0,281,0.4897],"marayna":[0,7,0.0],"marelli":[0,12,0.0],"mckenleigh":[0,176,0.4491],"melinah":[0,41,0.0],"mykena":[0,12,0.0],"myliana":[0,13,0.0],"nainika":[0,238,0.4753],"nanaakua":[0,25,0.0],"nylie":[0,57,0.0],"oluwadarasimi":[173,394,0.3827],"paw":[0,255,0.4813],"pessel":[0,89,0.0],"preslyn":[0,142,0.4305],"raniyha":[0,7,0.0],"renyah":[0,7,0.0],"retal":[0,324,0.5021],"rikya":[0,7,0.0],"rileyanne":[0,41,0.0],"rozelyn":[0,90,0.0],"sarrinah":[0,112,0.4098],"serrenity":[0,13,0.0],"skiley":[0,7,0.0],"sophiana":[0,89,0.0],"suli":[0,33,0.0],"sylviana":[0,42,0.0],"tileah":[0,18,0.0],"tramiah":[0,7,0.0],"yaimara":[0,7,0.0],"yanieliz":[0,35,0.0],"yelenis":[0,7,0.0],"yerly":[0,7,0.0],"zali":[0,66,0.0],"zariyana":[0,19,0.0],"zyliah":[0,89,0.0],"zyonah":[0,12,0.0],"aarielle":[0,54,0.0],"abbygayl":[0,6,0.0],"abernathy":[0,33,0.0],"abriyana":[0,6,0.0],"adaleine":[0,59,0.0],"adalise":[0,76,0.0],"adarah":[0,91,0.0],"addilyne":[0,96,0.0],"addysun":[0,13,0.0],"aibhilin":[0,11,0.0],"alayana":[0,23,0.0],"alesana":[0,319,0.5008],"alessya":[0,43,0.0],"alexandrah":[0,6,0.0],"alianne":[0,6,0.0],"alinson":[0,17,0.0],"alixzandria":[0,6,0.0],"allyzon":[0,51,0.0],"alyzon":[0,50,0.0],"amarelys":[0,11,0.0],"amazyn":[0,116,0.4129],"ameeria":[0,6,0.0],"amiela":[0,44,0.0],"amneet":[0,6,0.0],"anahli":[0,108,0.4067],"andalasia":[0,22,0.0],"angeliese":[0,12,0.0],"anilya":[0,16,0.0],"anwesha":[0,41,0.0],"aralynne":[0,17,0.0],"arami":[0,57,0.0],"aricely":[0,6,0.0],"aubriona":[0,38,0.0],"averly":[0,683,0.5669],"averyonna":[0,24,0.0],"aviyanna":[0,200,0.4602],"awbree":[0,27,0.0],"aydeliz":[0,6,0.0],"ayrabella":[0,258,0.4823],"ayvree":[0,58,0.0],"baylynn":[0,199,0.4598],"betanya":[0,22,0.0],"bitia":[0,16,0.0],"braeli":[0,24,0.0],"braydi":[0,12,0.0],"brinlie":[0,20,0.0],"cambrya":[0,6,0.0],"camdynn":[22,73,0.0],"camirah":[0,6,0.0],"camorra":[0,11,0.0],"carabella":[0,57,0.0],"chariyah":[0,47,0.0],"chimamanda":[0,513,0.542],"cleidy":[0,6,0.0],"coraliz":[0,6,0.0],"dahlyla":[0,42,0.0],"dashiyah":[0,6,0.0],"dayzie":[0,27,0.0],"dazlynn":[0,6,0.0],"dedrianna":[0,6,0.0],"denysse":[0,6,0.0],"deriyah":[0,165,0.4435],"dibanhi":[0,18,0.0],"dililah":[0,11,0.0],"divyne":[0,6,0.0],"dlaney":[0,11,0.0],"durriyah":[0,12,0.0],"dvyne":[0,12,0.0],"eilin":[0,16,0.0],"eirinn":[0,19,0.0],"elira":[0,156,0.4386],"emeliana":[0,36,0.0],"emirah":[0,70,0.0],"emyrson":[0,66,0.0],"enyla":[0,117,0.4136],"erabella":[0,280,0.4894],"eseosa":[0,56,0.0],"evangeleen":[0,23,0.0],"eyla":[0,319,0.5008],"fable":[22,261,0.4522],"fawzia":[0,17,0.0],"feben":[0,12,0.0],"filsan":[0,24,0.0],"gania":[0,6,0.0],"graclynn":[0,139,0.4286],"gwenevieve":[0,36,0.0],"harlym":[87,402,0.4422],"hiyab":[63,209,0.3741],"ingrit":[0,6,0.0],"innaya":[0,16,0.0],"iroha":[0,17,0.0],"ishitha":[0,95,0.0],"iyasia":[0,6,0.0],"izelle":[0,55,0.0],"jaeona":[0,11,0.0],"jahiyah":[0,18,0.0],"jahliya":[0,30,0.0],"jahzarra":[0,57,0.0],"jaisy":[0,11,0.0],"jakiyla":[0,30,0.0],"jaleana":[0,18,0.0],"jamayiah":[0,6,0.0],"jamiyha":[0,16,0.0],"janeiah":[0,6,0.0],"janiylah":[0,233,0.4735],"jasley":[0,21,0.0],"javianna":[0,44,0.0],"jayannah":[0,18,0.0],"jayela":[0,11,0.0],"jaylannie":[0,73,0.0],"jazale":[0,41,0.0],"jazyria":[0,17,0.0],"jazziah":[0,6,0.0],"jeanasia":[0,6,0.0],"jennedy":[0,6,0.0],"jerianna":[0,6,0.0],"jerriyah":[0,88,0.0],"jeselyn":[0,11,0.0],"jeyly":[0,6,0.0],"jeziyah":[0,11,0.0],"jiaqi":[5,49,0.0],"jmarie":[0,66,0.0],"johnya":[0,6,0.0],"joslene":[0,6,0.0],"jovianna":[0,40,0.0],"jozephine":[0,11,0.0],"jynesis":[0,145,0.4323],"kaeliana":[0,32,0.0],"kalaiya":[0,110,0.4083],"kaleana":[0,6,0.0],"kallina":[0,6,0.0],"kanishka":[0,70,0.0],"kassydi":[0,23,0.0],"kaydenze":[0,11,0.0],"kaylis":[0,18,0.0],"keemya":[0,6,0.0],"keerah":[0,6,0.0],"keiralyn":[0,6,0.0],"kenlei":[0,185,0.4534],"kenslei":[0,291,0.4928],"keynia":[0,6,0.0],"khamila":[0,272,0.4869],"khamyra":[0,12,0.0],"kialyn":[0,6,0.0],"kiyari":[0,56,0.0],"kiyora":[0,12,0.0],"koley":[0,11,0.0],"kristabella":[0,45,0.0],"kymorra":[0,11,0.0],"kynnidi":[0,6,0.0],"lailene":[0,12,0.0],"laionna":[0,58,0.0],"laylamarie":[0,83,0.0],"laylene":[0,6,0.0],"laylie":[0,64,0.0],"laziya":[0,22,0.0],"leeloo":[0,136,0.4267],"leyiah":[0,6,0.0],"liddia":[0,6,0.0],"lilium":[0,70,0.0],"lillymae":[0,143,0.4311],"lillyrose":[0,96,0.0],"llubia":[0,6,0.0],"mackennah":[0,19,0.0],"madelyngrace":[0,12,0.0],"maelys":[0,203,0.4615],"makyleigh":[0,12,0.0],"maleana":[0,16,0.0],"mallee":[0,6,0.0],"mariaines":[0,45,0.0],"mayden":[0,12,0.0],"maysaa":[0,21,0.0],"maysan":[0,6,0.0],"meekah":[0,76,0.0],"misheel":[0,70,0.0],"mishti":[0,79,0.0],"mitsuki":[10,52,0.0],"moo":[72,49,0.2479],"myleigha":[0,23,0.0],"mylla":[0,17,0.0],"naileen":[0,6,0.0],"nandhana":[0,11,0.0],"narjes":[0,54,0.0],"navika":[0,119,0.4151],"neeyah":[0,15,0.0],"nevaiah":[0,24,0.0],"neveya":[0,34,0.0],"neziyah":[0,6,0.0],"niia":[0,11,0.0],"nikylah":[0,16,0.0],"niyara":[0,63,0.0],"noori":[0,77,0.0],"nusayba":[0,163,0.4424],"olya":[0,6,0.0],"onora":[0,91,0.0],"paiyton":[0,56,0.0],"parvati":[0,23,0.0],"payzlee":[0,268,0.4856],"pennylane":[0,60,0.0],"phoebee":[0,46,0.0],"poem":[0,35,0.0],"pranaya":[0,29,0.0],"pranita":[0,35,0.0],"priyah":[0,98,0.0],"raihana":[0,89,0.0],"raihanna":[0,13,0.0],"raiyna":[0,23,0.0],"rakeria":[0,6,0.0],"remee":[0,115,0.4121],"remmie":[0,234,0.4738],"rheyna":[0,20,0.0],"rhiya":[0,83,0.0],"rutvi":[0,84,0.0],"rydia":[0,33,0.0],"ryliee":[0,159,0.4403],"ryly":[5,6,0.0],"sailee":[0,58,0.0],"sarabella":[0,116,0.4129],"saveah":[0,205,0.4624],"seily":[0,6,0.0],"semyra":[0,6,0.0],"sevaeh":[0,39,0.0],"sianah":[0,6,0.0],"sidona":[0,11,0.0],"siene":[0,6,0.0],"sophey":[0,36,0.0],"srikari":[0,11,0.0],"srividya":[0,6,0.0],"syia":[0,12,0.0],"syla":[0,177,0.4496],"symirah":[0,13,0.0],"tahliya":[0,18,0.0],"tairy":[0,11,0.0],"taliea":[0,6,0.0],"taylianna":[0,6,0.0],"tevy":[0,6,0.0],"tristann":[0,6,0.0],"trulee":[0,202,0.4611],"tulah":[0,22,0.0],"tynijah":[0,6,0.0],"tyunna":[0,6,0.0],"venya":[0,47,0.0],"viktorija":[0,12,0.0],"vivyanna":[0,21,0.0],"yanichel":[0,11,0.0],"yasmeli":[0,6,0.0],"yeleni":[0,12,0.0],"yendy":[0,6,0.0],"yerli":[0,6,0.0],"yhoalibeth":[0,12,0.0],"zadi":[0,11,0.0],"zahnae":[0,6,0.0],"zakaylah":[0,6,0.0],"zamirra":[0,11,0.0],"zanye":[0,6,0.0],"zariyha":[0,32,0.0],"zarra":[0,123,0.418],"zaryn":[55,33,0.0],"zelaya":[0,105,0.4042],"ziham":[0,40,0.0],"zohie":[0,32,0.0],"zuley":[0,159,0.4403],"zyannah":[0,57,0.0],"zyleigh":[0,58,0.0],"aabriella":[0,51,0.0],"aayanah":[0,10,0.0],"adasynn":[0,5,0.0],"addalina":[0,10,0.0],"addelin":[0,22,0.0],"addicyn":[0,33,0.0],"addsion":[0,5,0.0],"adellia":[0,5,0.0],"adellyn":[0,94,0.0],"adielle":[0,20,0.0],"adlie":[0,76,0.0],"adorah":[0,45,0.0],"adriella":[0,237,0.4749],"adrita":[0,69,0.0],"adwita":[0,59,0.0],"adylin":[0,153,0.4369],"adysyn":[0,32,0.0],"aella":[0,589,0.554],"ahlyana":[0,5,0.0],"ahmarie":[0,20,0.0],"ahzaria":[0,69,0.0],"ahziyah":[0,12,0.0],"aidelyn":[0,74,0.0],"aidrianna":[0,5,0.0],"aileigh":[0,15,0.0],"aileny":[0,34,0.0],"ainzley":[0,50,0.0],"airys":[0,12,0.0],"ajayah":[0,5,0.0],"ajiya":[0,5,0.0],"ajooni":[0,316,0.4999],"akaiyah":[0,20,0.0],"akhiya":[0,5,0.0],"akiyra":[0,5,0.0],"alaynia":[0,5,0.0],"aldana":[0,57,0.0],"aleanah":[0,18,0.0],"aleceia":[0,5,0.0],"alerah":[0,5,0.0],"alessi":[9,571,0.5441],"alianny":[0,179,0.4506],"alirah":[0,19,0.0],"alisiah":[0,5,0.0],"aliyahna":[0,52,0.0],"alizet":[0,5,0.0],"allinson":[0,34,0.0],"allize":[0,5,0.0],"allonah":[0,5,0.0],"alyiana":[0,32,0.0],"alynnah":[0,15,0.0],"amarina":[0,5,0.0],"amelyah":[0,46,0.0],"ameriana":[0,5,0.0],"amiriyah":[0,11,0.0],"amiryah":[0,55,0.0],"amisaday":[0,5,0.0],"ammerie":[0,10,0.0],"amolika":[0,10,0.0],"anahla":[0,102,0.4017],"anahly":[0,34,0.0],"andalucia":[0,16,0.0],"aneira":[0,130,0.4228],"angelick":[0,5,0.0],"angenie":[0,5,0.0],"anhar":[0,169,0.4456],"anjelyn":[0,5,0.0],"annalease":[0,10,0.0],"annalecia":[0,22,0.0],"annaleia":[0,171,0.4466],"annaluisa":[0,5,0.0],"annalys":[0,28,0.0],"annayah":[0,119,0.4151],"ansha":[0,30,0.0],"anuoluwa":[5,48,0.0],"anwaar":[0,5,0.0],"anyjha":[0,5,0.0],"anyri":[0,22,0.0],"areionna":[0,5,0.0],"astara":[0,62,0.0],"asul":[0,5,0.0],"atena":[0,33,0.0],"aubriann":[0,10,0.0],"aubriee":[0,283,0.4904],"audrinah":[0,17,0.0],"aulelei":[0,37,0.0],"avaeh":[0,145,0.4323],"avala":[0,5,0.0],"avaley":[0,87,0.0],"avee":[0,28,0.0],"aviannah":[0,306,0.4971],"aydelis":[0,5,0.0],"aydenne":[0,5,0.0],"aydrie":[0,5,0.0],"aylina":[0,44,0.0],"ayoki":[0,5,0.0],"aysenur":[0,5,0.0],"ayza":[0,240,0.476],"azarah":[0,290,0.4925],"azira":[0,85,0.0],"barakah":[0,41,0.0],"batel":[0,5,0.0],"bellatrix":[0,326,0.5026],"berra":[0,26,0.0],"bijoux":[0,33,0.0],"bitanya":[0,38,0.0],"bracelyn":[0,5,0.0],"braileigh":[0,103,0.4026],"brenli":[0,35,0.0],"breslynn":[0,35,0.0],"brinlyn":[0,96,0.0],"brisny":[0,5,0.0],"brisseida":[0,5,0.0],"bristyn":[0,118,0.4144],"brizzia":[0,5,0.0],"brynlei":[0,140,0.4292],"calis":[0,5,0.0],"calliah":[0,63,0.0],"camariah":[0,5,0.0],"camariyah":[0,11,0.0],"cambriah":[0,10,0.0],"camori":[0,25,0.0],"cariss":[0,5,0.0],"caselyn":[0,62,0.0],"caytlen":[0,5,0.0],"cely":[0,33,0.0],"charliegh":[0,95,0.0],"chilyn":[0,5,0.0],"chrishiya":[0,5,0.0],"cianah":[0,5,0.0],"cloi":[0,5,0.0],"connolly":[23,32,0.0],"couture":[0,63,0.0],"crislynn":[0,67,0.0],"dalai":[0,5,0.0],"dalaila":[0,36,0.0],"dalianna":[0,5,0.0],"dalyah":[0,82,0.0],"daneisy":[0,15,0.0],"danera":[0,5,0.0],"dangel":[33,15,0.0],"danilah":[0,77,0.0],"danyca":[0,10,0.0],"darriyah":[0,11,0.0],"davaeh":[0,27,0.0],"davaney":[0,5,0.0],"davani":[0,32,0.0],"dayamir":[0,5,0.0],"dayamit":[0,5,0.0],"dayiana":[0,5,0.0],"deariah":[0,5,0.0],"delianna":[0,11,0.0],"deliany":[0,5,0.0],"demiracle":[0,10,0.0],"deonnie":[0,10,0.0],"desmariah":[0,15,0.0],"deztyni":[0,16,0.0],"dilany":[0,28,0.0],"diny":[0,18,0.0],"diyonna":[0,5,0.0],"dreauna":[0,5,0.0],"dziah":[0,5,0.0],"ecrin":[0,33,0.0],"edyta":[0,10,0.0],"eeliyah":[0,5,0.0],"elazia":[0,5,0.0],"eleya":[0,52,0.0],"eliannie":[0,64,0.0],"eliara":[0,23,0.0],"elieana":[0,5,0.0],"elisya":[0,5,0.0],"ellasandra":[0,43,0.0],"ellivia":[0,26,0.0],"elowen":[0,1745,0.6484],"elowyn":[0,2567,0.6819],"emalei":[0,5,0.0],"emanuelly":[0,87,0.0],"enslee":[0,338,0.5058],"envee":[0,26,0.0],"eriny":[0,11,0.0],"evalen":[0,5,0.0],"evilin":[0,5,0.0],"evoleth":[0,189,0.4553],"evonie":[0,10,0.0],"eyva":[0,77,0.0],"fenley":[5,11,0.0],"feodora":[0,10,0.0],"furaha":[0,81,0.0],"gabrielah":[0,5,0.0],"gamya":[0,10,0.0],"genavecia":[0,5,0.0],"geraldi":[0,10,0.0],"giahnna":[0,15,0.0],"gilliana":[0,25,0.0],"greyce":[0,5,0.0],"gurbani":[0,146,0.4329],"gwendelynn":[0,5,0.0],"haileah":[0,5,0.0],"hailen":[0,32,0.0],"hamsika":[0,39,0.0],"hasanah":[0,5,0.0],"hasita":[0,11,0.0],"hatziry":[0,5,0.0],"hawaii":[0,16,0.0],"heliana":[0,53,0.0],"helly":[0,15,0.0],"henleigh":[0,393,0.5189],"hildana":[0,16,0.0],"hylee":[0,43,0.0],"ianah":[0,5,0.0],"imiyah":[0,10,0.0],"inarah":[0,87,0.0],"indee":[0,112,0.4098],"iralyn":[0,11,0.0],"iryss":[0,15,0.0],"isavela":[0,11,0.0],"ishmeet":[5,10,0.0],"ismah":[0,30,0.0],"itzary":[0,5,0.0],"itzely":[0,24,0.0],"itzury":[0,11,0.0],"ivye":[0,5,0.0],"ixchell":[0,12,0.0],"izabelah":[0,13,0.0],"izavella":[0,15,0.0],"izzibella":[0,31,0.0],"jacianna":[0,18,0.0],"jaciyah":[0,16,0.0],"jadali":[0,5,0.0],"jadilyn":[0,5,0.0],"jaeliah":[0,5,0.0],"jaelina":[0,15,0.0],"jahliah":[0,11,0.0],"jahmyah":[0,15,0.0],"jaidalynn":[0,24,0.0],"jainiya":[0,10,0.0],"jaleyiah":[0,11,0.0],"jamarya":[0,13,0.0],"jameerah":[0,20,0.0],"janaeh":[0,21,0.0],"janeida":[0,5,0.0],"janeidy":[0,5,0.0],"janeisa":[0,5,0.0],"janieliz":[0,12,0.0],"janivea":[0,5,0.0],"janiyaa":[0,5,0.0],"janylia":[0,5,0.0],"jarayah":[0,16,0.0],"jareliz":[0,10,0.0],"jarriah":[0,5,0.0],"jasera":[0,5,0.0],"jashyia":[0,5,0.0],"jaslean":[0,5,0.0],"jasselle":[0,5,0.0],"jasslynn":[0,5,0.0],"jasyra":[0,10,0.0],"jaylicia":[0,5,0.0],"jaymiya":[0,5,0.0],"jayslin":[0,10,0.0],"jazabell":[0,10,0.0],"jazharia":[0,5,0.0],"jazleene":[0,15,0.0],"jazlena":[0,5,0.0],"jazzanae":[0,5,0.0],"jekeria":[0,5,0.0],"jenci":[0,5,0.0],"jenedy":[0,5,0.0],"jerkiya":[0,5,0.0],"jesleen":[0,10,0.0],"jesslene":[0,5,0.0],"jezeniah":[0,5,0.0],"jezzelle":[0,5,0.0],"jizell":[0,19,0.0],"jniaya":[0,5,0.0],"johntavia":[0,5,0.0],"joliette":[0,38,0.0],"joplyn":[0,40,0.0],"joriah":[19,10,0.0],"joriann":[0,5,0.0],"josera":[0,5,0.0],"jovial":[6,36,0.0],"joviana":[0,48,0.0],"jovianne":[0,16,0.0],"juany":[0,10,0.0],"juliahnna":[0,5,0.0],"julibeth":[0,5,0.0],"juwairiyah":[0,33,0.0],"kabella":[0,167,0.4445],"kaeya":[0,95,0.0],"kahmyra":[0,5,0.0],"kaiyden":[171,5,0.4363],"kalaiyah":[0,107,0.4059],"kamiylah":[0,54,0.0],"kanaja":[0,5,0.0],"kanora":[0,5,0.0],"karelys":[0,66,0.0],"kariona":[0,5,0.0],"kariyana":[0,11,0.0],"karliyah":[0,45,0.0],"karmindy":[0,5,0.0],"karoleena":[0,11,0.0],"kataleena":[0,96,0.0],"kaviona":[0,5,0.0],"kaydynn":[6,5,0.0],"kayjah":[0,17,0.0],"kaylieann":[0,10,0.0],"kaymarie":[0,123,0.418],"kaymi":[0,5,0.0],"kayoni":[0,65,0.0],"keemora":[0,5,0.0],"keida":[0,10,0.0],"keiliana":[0,5,0.0],"keirslyn":[0,5,0.0],"keirya":[0,5,0.0],"keiyona":[0,5,0.0],"kendelyn":[0,15,0.0],"keymara":[0,5,0.0],"khenadi":[0,21,0.0],"khmya":[0,5,0.0],"kiahnna":[0,14,0.0],"kiayah":[0,5,0.0],"kiersyn":[0,30,0.0],"kimverly":[0,5,0.0],"kiniyah":[0,23,0.0],"kiomi":[0,73,0.0],"kiyelle":[0,5,0.0],"klhoe":[0,39,0.0],"klohie":[0,48,0.0],"koleigh":[0,5,0.0],"kosisochi":[0,5,0.0],"kyliemarie":[0,11,0.0],"kynnady":[0,5,0.0],"kynsli":[0,147,0.4335],"kynzli":[0,100,0.4],"kyriel":[0,26,0.0],"kyuana":[0,5,0.0],"labraya":[0,5,0.0],"laella":[0,5,0.0],"laelyn":[0,134,0.4254],"laianna":[0,104,0.4034],"lailey":[0,56,0.0],"laiyana":[0,47,0.0],"lalicia":[0,5,0.0],"laylaann":[0,24,0.0],"laylanni":[0,91,0.0],"layleigh":[0,52,0.0],"layra":[0,41,0.0],"laziyah":[0,76,0.0],"leahrose":[0,28,0.0],"leanni":[0,65,0.0],"leeyana":[0,35,0.0],"leilaney":[0,15,0.0],"leilonie":[0,5,0.0],"leriah":[0,5,0.0],"liahona":[0,45,0.0],"lidea":[0,5,0.0],"lilany":[0,5,0.0],"lilienne":[0,77,0.0],"lilliannah":[0,57,0.0],"lindyn":[0,155,0.4381],"livea":[0,5,0.0],"livija":[0,5,0.0],"llayla":[0,5,0.0],"lohgan":[40,48,0.0],"loreyna":[0,16,0.0],"luzmila":[0,5,0.0],"lydianne":[0,5,0.0],"lyniya":[0,5,0.0],"lyricc":[0,65,0.0],"maanvi":[0,242,0.4768],"mabrie":[0,72,0.0],"macelyn":[0,60,0.0],"maebel":[0,253,0.4806],"maebh":[0,78,0.0],"maebry":[0,414,0.5234],"maeda":[0,10,0.0],"maelana":[0,5,0.0],"maeven":[0,327,0.5029],"mahalakshmi":[0,36,0.0],"mahalet":[0,5,0.0],"mahlah":[0,5,0.0],"maiden":[0,22,0.0],"marialicia":[0,5,0.0],"mariaya":[0,5,0.0],"markenzie":[0,32,0.0],"marlaysha":[0,5,0.0],"marleyjane":[0,5,0.0],"marlianna":[0,11,0.0],"marliyah":[0,150,0.4352],"mashari":[0,5,0.0],"matthea":[0,5,0.0],"mckenlie":[0,29,0.0],"mckeyla":[0,12,0.0],"meliame":[0,10,0.0],"metzi":[0,32,0.0],"meztly":[0,5,0.0],"mialyn":[0,22,0.0],"mianicole":[0,21,0.0],"miera":[0,22,0.0],"mikylee":[0,10,0.0],"mikylie":[0,5,0.0],"milianna":[0,115,0.4121],"miracal":[0,5,0.0],"mirae":[0,52,0.0],"mirei":[0,17,0.0],"miriel":[0,23,0.0],"moukthika":[0,26,0.0],"muireann":[0,10,0.0],"muntaz":[0,71,0.0],"muslima":[0,211,0.4649],"myabella":[0,19,0.0],"myamarie":[0,5,0.0],"myar":[0,36,0.0],"myella":[0,51,0.0],"myionna":[0,17,0.0],"myliegh":[0,5,0.0],"mylii":[0,5,0.0],"nalyjah":[0,5,0.0],"narayani":[0,40,0.0],"nastia":[0,5,0.0],"nataniela":[0,5,0.0],"nateyah":[0,5,0.0],"nayaliz":[0,17,0.0],"nazneen":[0,22,0.0],"neasa":[0,5,0.0],"nelina":[0,36,0.0],"nellee":[0,11,0.0],"nevaehia":[0,5,0.0],"neylin":[0,37,0.0],"nhyla":[0,81,0.0],"niang":[0,319,0.5008],"nicoly":[0,5,0.0],"niera":[0,5,0.0],"nilajah":[0,5,0.0],"niree":[0,5,0.0],"nishta":[0,15,0.0],"nissie":[0,5,0.0],"noralynn":[0,103,0.4026],"noriyah":[0,74,0.0],"nouvelle":[0,5,0.0],"nyailah":[0,5,0.0],"nyllah":[0,25,0.0],"nyx":[111,467,0.4463],"oaklynn":[88,9781,0.7917],"okairy":[0,5,0.0],"oluwatofunmi":[11,52,0.0],"omiya":[0,5,0.0],"onyinyechukwu":[0,23,0.0],"payslee":[0,396,0.5195],"persayis":[0,22,0.0],"peyden":[5,16,0.0],"poetri":[0,5,0.0],"prakruti":[0,5,0.0],"pranika":[0,142,0.4305],"purpose":[48,115,0.3121],"raelan":[5,122,0.4042],"rahini":[0,32,0.0],"raiqa":[0,5,0.0],"raphaelle":[0,59,0.0],"rayanah":[0,19,0.0],"rayha":[0,5,0.0],"rediet":[0,76,0.0],"rekayla":[0,5,0.0],"remia":[0,10,0.0],"reut":[0,10,0.0],"revati":[0,5,0.0],"rickyia":[0,5,0.0],"rigley":[156,43,0.3604],"roxxi":[0,11,0.0],"rujuta":[0,5,0.0],"ryasia":[0,11,0.0],"rylynne":[0,108,0.4067],"sabreya":[0,5,0.0],"saedee":[0,10,0.0],"sahai":[0,5,0.0],"sahari":[0,194,0.4576],"sahnya":[0,5,0.0],"saidey":[0,59,0.0],"saile":[0,15,0.0],"sainabou":[0,21,0.0],"salayna":[0,5,0.0],"saleyah":[0,15,0.0],"saniiya":[0,5,0.0],"sapheria":[0,5,0.0],"sashya":[0,5,0.0],"satcha":[0,65,0.0],"sayani":[5,138,0.416],"sayen":[0,5,0.0],"seaanna":[0,5,0.0],"seliyah":[0,5,0.0],"serenitey":[0,23,0.0],"sevena":[0,5,0.0],"shanye":[0,5,0.0],"shauniya":[0,5,0.0],"shavaria":[0,5,0.0],"shiala":[0,5,0.0],"shulamite":[0,5,0.0],"shunashi":[0,5,0.0],"shuri":[0,57,0.0],"shyera":[0,21,0.0],"shyli":[0,25,0.0],"sierralynn":[0,5,0.0],"sifan":[0,48,0.0],"siriya":[0,5,0.0],"sirrah":[0,5,0.0],"sitey":[0,5,0.0],"skylir":[0,16,0.0],"sophiea":[0,96,0.0],"srihita":[0,21,0.0],"srimedha":[0,5,0.0],"srinika":[0,493,0.5386],"srinithya":[0,5,0.0],"sristi":[0,32,0.0],"strella":[0,11,0.0],"suhaily":[0,5,0.0],"suheyla":[0,152,0.4364],"sumiah":[0,10,0.0],"suree":[0,5,0.0],"syeisha":[0,5,0.0],"sylah":[0,84,0.0],"sylee":[0,10,0.0],"syrenna":[0,5,0.0],"tadeja":[0,5,0.0],"tahmia":[0,5,0.0],"taimani":[0,5,0.0],"tamiaya":[0,5,0.0],"tatelynn":[0,30,0.0],"taveah":[0,32,0.0],"tazmeen":[0,17,0.0],"terryana":[0,15,0.0],"teyanah":[0,5,0.0],"thayla":[0,10,0.0],"timmyah":[0,5,0.0],"tinashe":[5,18,0.0],"tinasia":[0,5,0.0],"tindra":[0,5,0.0],"tivoli":[0,5,0.0],"tralaya":[0,5,0.0],"tristianna":[0,10,0.0],"tybee":[0,17,0.0],"tylaisha":[0,10,0.0],"tylajah":[0,15,0.0],"tylayshia":[0,5,0.0],"tynayah":[0,5,0.0],"tyrhiana":[0,5,0.0],"unyque":[0,12,0.0],"uzuri":[0,19,0.0],"vanasia":[0,5,0.0],"vasia":[0,5,0.0],"vierra":[0,16,0.0],"vismaya":[0,44,0.0],"weslynn":[10,505,0.5318],"wuendi":[0,5,0.0],"xailey":[0,15,0.0],"xamara":[0,44,0.0],"xaniah":[0,21,0.0],"xeniya":[0,5,0.0],"xochi":[0,124,0.4187],"yamara":[0,22,0.0],"yanalis":[0,5,0.0],"yaretzie":[0,48,0.0],"yaritzza":[0,5,0.0],"yasiah":[76,5,0.0],"yaslynn":[0,29,0.0],"yelizaveta":[0,5,0.0],"yiran":[10,37,0.0],"yoany":[0,5,0.0],"yoselina":[0,5,0.0],"youstina":[0,22,0.0],"yubin":[5,10,0.0],"yuina":[0,10,0.0],"yukary":[0,5,0.0],"yuleimy":[0,127,0.4208],"yulieth":[0,248,0.4789],"yurani":[0,359,0.511],"yuting":[0,5,0.0],"yvannah":[0,5,0.0],"yvannia":[0,5,0.0],"zahmari":[72,5,0.0],"zakhya":[0,12,0.0],"zalynn":[10,56,0.0],"zanaa":[0,15,0.0],"zanavia":[0,5,0.0],"zaniyha":[0,33,0.0],"zaniyla":[0,93,0.0],"zarhia":[0,15,0.0],"zeasia":[0,5,0.0],"zeza":[0,10,0.0],"zhyon":[126,19,0.3756],"zikayla":[0,5,0.0],"zniah":[0,5,0.0],"zody":[0,5,0.0],"zuli":[0,51,0.0],"zurri":[0,108,0.4067],"zyauna":[0,21,0.0],"zynaria":[0,10,0.0],"yosgart":[278,0,0.4888],"kesan":[39,0,0.0],"jometh":[23,0,0.0],"yosgar":[99,0,0.0],"jurem":[27,0,0.0],"beckem":[258,0,0.4823],"korver":[216,0,0.4669],"albeiro":[147,0,0.4335],"eriksson":[15,0,0.0],"jakayden":[500,0,0.5398],"zaidin":[87,0,0.0],"obama":[30,0,0.0],"ashvik":[358,0,0.5108],"carsin":[126,0,0.4201],"aidrian":[53,0,0.0],"aidenjames":[110,0,0.4083],"caellum":[178,0,0.4501],"dreydan":[61,0,0.0],"ekansh":[133,0,0.4248],"izyan":[226,0,0.4708],"trindon":[107,0,0.4059],"acer":[96,0,0.0],"brayln":[103,0,0.4026],"brenham":[68,0,0.0],"jophy":[10,0,0.0],"jowel":[84,0,0.0],"laythen":[62,0,0.0],"leiam":[144,0,0.4317],"mutaz":[46,0,0.0],"priyam":[32,0,0.0],"sneijder":[129,0,0.4221],"trygg":[85,0,0.0],"aayaan":[68,0,0.0],"adalius":[9,0,0.0],"attikus":[265,0,0.4846],"brave":[469,150,0.423],"dashuan":[9,0,0.0],"diyari":[84,0,0.0],"ishant":[30,0,0.0],"javiyon":[15,0,0.0],"kerolos":[88,0,0.0],"kru":[517,27,0.52],"leonitus":[69,0,0.0],"maden":[37,0,0.0],"neythan":[663,0,0.5643],"nirvaan":[649,0,0.5624],"rajko":[15,0,0.0],"rishaan":[1327,0,0.6246],"rohanpreet":[14,0,0.0],"roxas":[346,0,0.5078],"sushanth":[30,0,0.0],"taos":[160,0,0.4408],"vedaant":[144,0,0.4317],"yomtov":[9,0,0.0],"zubayr":[253,0,0.4806],"aneek":[24,0,0.0],"aung":[68,0,0.0],"azai":[1265,15,0.6142],"bearett":[300,0,0.4954],"braelan":[32,0,0.0],"camoren":[8,0,0.0],"chayston":[15,0,0.0],"crash":[87,0,0.0],"gion":[37,0,0.0],"greyer":[61,0,0.0],"jaxsin":[254,0,0.481],"jaxtyn":[2129,5,0.6643],"jaydden":[50,0,0.0],"jayeden":[28,0,0.0],"kanaloa":[107,0,0.4059],"malakii":[46,0,0.0],"peydon":[24,0,0.0],"rainen":[98,0,0.0],"romyn":[194,13,0.4341],"ryko":[13,0,0.0],"sriyan":[350,0,0.5088],"trelen":[8,0,0.0],"tressel":[16,0,0.0],"zaier":[38,0,0.0],"abdurraheem":[33,0,0.0],"aithen":[58,0,0.0],"avyukt":[465,0,0.5335],"ayvin":[134,0,0.4254],"azazel":[393,11,0.5071],"baxton":[75,0,0.0],"baylian":[7,0,0.0],"bonham":[102,0,0.4017],"braxxton":[177,0,0.4496],"brysun":[98,0,0.0],"canek":[61,0,0.0],"cayl":[22,0,0.0],"caynen":[56,0,0.0],"chezky":[51,0,0.0],"chimdi":[7,0,0.0],"coleden":[17,0,0.0],"copelan":[198,0,0.4593],"correon":[7,0,0.0],"dakori":[7,0,0.0],"deakyn":[38,0,0.0],"demare":[19,0,0.0],"deriyon":[7,0,0.0],"eita":[51,0,0.0],"elmedin":[7,0,0.0],"gabryle":[44,0,0.0],"gibram":[7,0,0.0],"giorgios":[7,0,0.0],"grandin":[7,0,0.0],"havoc":[170,0,0.4461],"hayyan":[59,0,0.0],"ihan":[185,0,0.4534],"ilay":[180,7,0.4374],"jadyel":[21,0,0.0],"jaivien":[30,0,0.0],"jakaylen":[38,6,0.0],"jariell":[12,0,0.0],"javean":[12,0,0.0],"jhadiel":[90,0,0.0],"jhet":[18,0,0.0],"jiancarlo":[46,0,0.0],"josiya":[28,0,0.0],"jysiah":[17,0,0.0],"kalu":[33,0,0.0],"kamorion":[32,0,0.0],"kapone":[58,0,0.0],"kealen":[17,0,0.0],"kemare":[7,0,0.0],"keydan":[32,0,0.0],"khade":[64,0,0.0],"khy":[142,5,0.4187],"kriz":[25,0,0.0],"laiton":[23,0,0.0],"lazavion":[22,0,0.0],"light":[154,67,0.3267],"lynx":[363,65,0.4464],"malichai":[17,0,0.0],"matthis":[17,0,0.0],"maykel":[280,0,0.4894],"nacier":[7,0,0.0],"necalli":[114,0,0.4114],"nissen":[17,0,0.0],"nithish":[7,0,0.0],"nykell":[7,0,0.0],"peyson":[125,127,0.242],"pharez":[17,0,0.0],"piersen":[28,0,0.0],"rafan":[128,0,0.4214],"rhyland":[320,24,0.4719],"rorik":[304,0,0.4966],"ryyan":[30,0,0.0],"sambhav":[28,0,0.0],"saw":[278,0,0.4888],"simao":[24,0,0.0],"siosiua":[19,0,0.0],"sisco":[7,0,0.0],"siyon":[143,0,0.4311],"stratten":[7,0,0.0],"subhaan":[53,0,0.0],"svanik":[27,0,0.0],"taim":[600,0,0.5556],"tamarkus":[7,0,0.0],"tawhid":[100,0,0.4],"tremari":[24,0,0.0],"ubaid":[48,0,0.0],"yinon":[12,0,0.0],"zhion":[113,0,0.4106],"zidaan":[105,0,0.4042],"zyden":[192,0,0.4567],"zymeer":[46,0,0.0],"aaroosh":[6,0,0.0],"abdiasis":[6,0,0.0],"abdiwahab":[19,0,0.0],"aceton":[139,0,0.4286],"achyuth":[59,0,0.0],"adenn":[12,0,0.0],"adhvik":[434,0,0.5275],"aedric":[26,0,0.0],"aesop":[51,0,0.0],"afraz":[83,0,0.0],"ahmier":[76,0,0.0],"ainesh":[11,0,0.0],"akol":[11,0,0.0],"alveiro":[12,0,0.0],"amaire":[11,0,0.0],"andreo":[19,0,0.0],"angeldavid":[11,0,0.0],"anzel":[132,5,0.4117],"archith":[13,0,0.0],"arjav":[23,0,0.0],"arseniy":[104,0,0.4034],"ashvath":[75,0,0.0],"atreju":[6,0,0.0],"auric":[22,0,0.0],"aydun":[6,0,0.0],"azon":[62,0,0.0],"baha":[11,0,0.0],"bairo":[11,0,0.0],"bakar":[6,0,0.0],"blayten":[11,0,0.0],"braxdyn":[29,0,0.0],"brekin":[36,0,0.0],"caled":[52,0,0.0],"calek":[6,0,0.0],"camaree":[11,5,0.0],"canin":[6,0,0.0],"carsan":[11,0,0.0],"cassen":[21,0,0.0],"cleighton":[11,0,0.0],"cohner":[6,0,0.0],"cordey":[11,0,0.0],"cyion":[6,0,0.0],"daerion":[6,0,0.0],"dantes":[16,0,0.0],"daxen":[123,0,0.418],"dayvien":[11,0,0.0],"deizel":[6,0,0.0],"demaurie":[6,0,0.0],"demonie":[80,6,0.0],"dhairya":[119,0,0.4151],"diar":[97,5,0.382],"divit":[234,0,0.4738],"draydin":[13,0,0.0],"drelynn":[36,30,0.0],"eadon":[6,0,0.0],"ederson":[250,0,0.4796],"ekaansh":[6,0,0.0],"elviz":[6,0,0.0],"elway":[39,0,0.0],"emperor":[102,0,0.4017],"ethangabriel":[13,0,0.0],"exael":[6,0,0.0],"gaspard":[95,0,0.0],"haegan":[39,5,0.0],"haize":[76,28,0.2948],"hajari":[6,0,0.0],"hemerson":[6,0,0.0],"iian":[16,0,0.0],"iniyan":[111,0,0.4091],"ishanth":[32,0,0.0],"iskander":[73,0,0.0],"izaeah":[73,0,0.0],"jaccari":[11,0,0.0],"jacir":[51,0,0.0],"jadison":[6,0,0.0],"jadius":[6,0,0.0],"jaimyn":[6,0,0.0],"jakalen":[12,0,0.0],"jakoda":[85,0,0.0],"jamesley":[70,0,0.0],"jamyn":[6,0,0.0],"jannik":[12,0,0.0],"jasahn":[28,0,0.0],"javonie":[13,0,0.0],"jaxiel":[357,0,0.5105],"jaxtin":[378,0,0.5155],"jaycek":[26,0,0.0],"jayzion":[49,0,0.0],"jervin":[6,0,0.0],"jhosmar":[24,0,0.0],"joaogabriel":[16,0,0.0],"josgar":[34,0,0.0],"juvens":[43,0,0.0],"kaesyn":[391,74,0.4486],"kaimipono":[12,0,0.0],"kairos":[596,27,0.5347],"kaos":[86,0,0.0],"karde":[6,0,0.0],"kathen":[6,0,0.0],"kazen":[88,0,0.0],"keegun":[6,0,0.0],"kelechukwu":[6,0,0.0],"kender":[63,0,0.0],"keyin":[6,0,0.0],"khane":[45,0,0.0],"khoen":[152,0,0.4364],"khushal":[26,0,0.0],"kierce":[46,0,0.0],"kohyn":[63,15,0.0],"kolbin":[16,0,0.0],"korday":[13,0,0.0],"kratos":[181,0,0.4515],"kristijan":[33,0,0.0],"lakshya":[86,59,0.2564],"lazarion":[6,0,0.0],"leosvel":[6,0,0.0],"liang":[40,0,0.0],"lynkin":[178,6,0.4382],"marrius":[6,0,0.0],"mathyis":[6,0,0.0],"memphys":[59,53,0.2159],"moaaz":[56,0,0.0],"moad":[22,0,0.0],"mykhail":[27,0,0.0],"neji":[89,0,0.0],"nevo":[66,0,0.0],"nikan":[130,0,0.4228],"nimish":[6,0,0.0],"nived":[59,0,0.0],"novak":[354,0,0.5098],"odyn":[307,0,0.4974],"patron":[11,0,0.0],"pollux":[35,0,0.0],"prakhar":[11,0,0.0],"prodigy":[114,0,0.4114],"raydyn":[74,0,0.0],"renji":[131,0,0.4235],"riken":[6,0,0.0],"riven":[255,188,0.3047],"roanan":[33,0,0.0],"ronon":[124,0,0.4187],"rowley":[57,0,0.0],"rudhra":[26,0,0.0],"ryion":[6,0,0.0],"ryzen":[240,0,0.476],"saheim":[57,0,0.0],"sairam":[16,0,0.0],"sakariya":[6,0,0.0],"sarosh":[11,0,0.0],"sayden":[24,0,0.0],"shreyans":[6,0,0.0],"synceer":[13,0,0.0],"taij":[11,0,0.0],"taym":[341,0,0.5066],"tieson":[6,0,0.0],"tirian":[26,0,0.0],"traedyn":[18,0,0.0],"traeson":[80,0,0.0],"traiten":[6,0,0.0],"vairon":[16,0,0.0],"wakinyan":[44,0,0.0],"wyler":[153,0,0.4369],"xyion":[43,5,0.0],"yaden":[69,0,0.0],"yankarlo":[6,0,0.0],"yashwanth":[20,0,0.0],"yonason":[60,0,0.0],"zahmier":[6,0,0.0],"zayvien":[246,0,0.4782],"zmarion":[11,0,0.0],"zolin":[11,0,0.0],"aahron":[5,0,0.0],"aavion":[42,0,0.0],"abaan":[72,0,0.0],"abdoulaziz":[10,0,0.0],"abduljalil":[5,0,0.0],"abiram":[12,0,0.0],"adbeel":[5,0,0.0],"adedotun":[5,0,0.0],"adhav":[41,0,0.0],"adoniram":[79,0,0.0],"adrianjames":[11,0,0.0],"adriell":[112,0,0.4098],"agasthya":[163,0,0.4424],"ahmeer":[121,0,0.4166],"aisen":[89,0,0.0],"aizayah":[23,0,0.0],"ajavian":[12,0,0.0],"akilesh":[5,0,0.0],"aleron":[10,0,0.0],"amariae":[5,0,0.0],"amonta":[5,0,0.0],"amoz":[17,0,0.0],"andel":[38,0,0.0],"andrek":[5,0,0.0],"anshel":[10,0,0.0],"anthem":[175,49,0.3672],"antoniyo":[5,0,0.0],"anvay":[240,0,0.476],"ardin":[55,0,0.0],"arean":[5,0,0.0],"aritra":[5,0,0.0],"arkady":[16,0,0.0],"ashaud":[27,0,0.0],"asthon":[11,0,0.0],"atem":[53,0,0.0],"atreus":[3024,0,0.6961],"audyn":[10,146,0.4105],"aviral":[5,0,0.0],"avrik":[5,0,0.0],"axtyn":[342,0,0.5068],"aylan":[624,0,0.559],"ayvion":[156,0,0.4386],"bakir":[5,0,0.0],"bassirou":[10,0,0.0],"bayro":[26,0,0.0],"bek":[18,0,0.0],"bikram":[14,0,0.0],"birk":[26,0,0.0],"blace":[25,0,0.0],"bodyn":[63,0,0.0],"bohan":[83,0,0.0],"bradlyn":[34,5,0.0],"braegan":[5,0,0.0],"brander":[10,0,0.0],"braynt":[5,0,0.0],"breidyn":[5,0,0.0],"briayan":[5,0,0.0],"bricyn":[92,0,0.0],"bryand":[5,0,0.0],"burach":[37,0,0.0],"caaden":[5,0,0.0],"cabren":[5,0,0.0],"caleal":[5,0,0.0],"caliel":[33,0,0.0],"camello":[15,0,0.0],"camelo":[41,0,0.0],"cannin":[10,0,0.0],"casius":[42,0,0.0],"chastan":[5,0,0.0],"chol":[27,0,0.0],"coldin":[5,0,0.0],"coletyn":[12,0,0.0],"corvus":[86,0,0.0],"cozmo":[5,0,0.0],"creede":[78,0,0.0],"crishon":[10,0,0.0],"crystofer":[5,0,0.0],"currin":[5,0,0.0],"cyson":[98,0,0.0],"daevian":[10,0,0.0],"daivyon":[10,0,0.0],"damaire":[5,0,0.0],"damaj":[10,0,0.0],"damarii":[61,0,0.0],"damariye":[5,0,0.0],"damarrea":[5,0,0.0],"damaryon":[10,0,0.0],"damiani":[5,0,0.0],"dangkhoa":[5,0,0.0],"daschle":[11,0,0.0],"daviaun":[5,0,0.0],"davidjeremiah":[5,0,0.0],"daxin":[11,0,0.0],"daxtyn":[702,0,0.5693],"dayion":[5,0,0.0],"daysan":[5,0,0.0],"dazavion":[5,0,0.0],"decarion":[11,0,0.0],"deckard":[266,0,0.485],"deklen":[297,0,0.4946],"dekorion":[5,0,0.0],"derean":[5,0,0.0],"dilver":[5,0,0.0],"dimarion":[5,0,0.0],"diyor":[40,0,0.0],"domynick":[5,0,0.0],"draconis":[10,0,0.0],"drelan":[27,0,0.0],"drelen":[5,0,0.0],"drelin":[16,0,0.0],"driver":[15,0,0.0],"dvir":[21,0,0.0],"eaen":[5,0,0.0],"ebraheem":[49,0,0.0],"eddiel":[69,0,0.0],"edir":[5,0,0.0],"eilan":[228,0,0.4716],"eko":[30,5,0.0],"elbis":[5,0,0.0],"elii":[47,0,0.0],"elijay":[26,0,0.0],"emrik":[149,0,0.4346],"erblin":[5,0,0.0],"erlan":[10,0,0.0],"everhett":[606,0,0.5565],"felyx":[17,0,0.0],"frankly":[15,0,0.0],"gavril":[39,0,0.0],"germari":[5,0,0.0],"germarion":[5,0,0.0],"giacobbe":[16,0,0.0],"graedy":[5,0,0.0],"graidy":[11,0,0.0],"graisen":[60,0,0.0],"graven":[11,0,0.0],"greysin":[173,0,0.4476],"guston":[5,0,0.0],"haisten":[28,0,0.0],"haldrin":[5,0,0.0],"hasiel":[42,0,0.0],"hazir":[11,0,0.0],"helam":[5,0,0.0],"htoo":[38,0,0.0],"ien":[16,0,0.0],"ieuan":[5,0,0.0],"ilyass":[21,0,0.0],"isaque":[10,0,0.0],"isen":[41,0,0.0],"jacobjames":[5,0,0.0],"jacoree":[5,0,0.0],"jaderion":[18,0,0.0],"jadhiel":[15,0,0.0],"jaesun":[16,0,0.0],"jahdir":[5,0,0.0],"jahime":[5,0,0.0],"jahzair":[5,0,0.0],"jaidel":[12,0,0.0],"jaidn":[5,0,0.0],"jaimarion":[10,0,0.0],"jakaiden":[324,0,0.5021],"jakerion":[5,0,0.0],"jakk":[16,0,0.0],"jakorie":[10,0,0.0],"jakyrion":[5,0,0.0],"jamaad":[5,0,0.0],"janziel":[119,0,0.4151],"japhy":[5,0,0.0],"jaseer":[38,0,0.0],"jatari":[5,0,0.0],"jaudiel":[5,0,0.0],"jawwad":[10,0,0.0],"jaydenjames":[5,0,0.0],"jaysaun":[16,0,0.0],"jayvaun":[5,0,0.0],"jazai":[92,5,0.0],"jazaih":[5,0,0.0],"jazarian":[10,0,0.0],"jdan":[5,0,0.0],"jdon":[5,0,0.0],"jeeva":[5,18,0.0],"jefrin":[5,0,0.0],"jemauri":[5,0,0.0],"jentezen":[35,0,0.0],"jesaias":[5,0,0.0],"jesiyah":[17,0,0.0],"jetmir":[5,0,0.0],"jhasir":[5,0,0.0],"jiovonni":[91,0,0.0],"johandy":[16,0,0.0],"johanson":[5,0,0.0],"jonlucas":[5,0,0.0],"jorgedavid":[5,0,0.0],"joriel":[191,0,0.4562],"joseiah":[5,0,0.0],"jossiel":[94,0,0.0],"josuhe":[5,0,0.0],"joziyah":[119,0,0.4151],"jrake":[123,0,0.418],"juelze":[5,0,0.0],"juilo":[5,0,0.0],"juliam":[10,0,0.0],"juny":[5,0,0.0],"kaed":[22,0,0.0],"kaileo":[20,0,0.0],"kailub":[22,0,0.0],"kamraan":[5,0,0.0],"kapish":[5,0,0.0],"karas":[630,0,0.5599],"karmell":[21,0,0.0],"kartez":[5,0,0.0],"kaser":[5,0,0.0],"kaveion":[30,0,0.0],"kawai":[100,5,0.385],"kaylo":[28,0,0.0],"keathan":[5,0,0.0],"kedran":[5,0,0.0],"kelman":[5,0,0.0],"keltan":[5,0,0.0],"kemaj":[10,0,0.0],"kemontay":[11,0,0.0],"kendarion":[5,0,0.0],"kentrevious":[5,0,0.0],"keondray":[5,0,0.0],"keysan":[5,0,0.0],"khaos":[170,6,0.4338],"kharan":[5,0,0.0],"kholton":[99,0,0.0],"kinden":[10,0,0.0],"kingdom":[348,0,0.5083],"kingjames":[163,0,0.4424],"kinson":[25,0,0.0],"kirollos":[26,0,0.0],"kiyen":[46,0,0.0],"koh":[39,0,0.0],"kornel":[5,0,0.0],"kovi":[70,19,0.0],"kruse":[76,0,0.0],"krush":[5,0,0.0],"kryton":[5,0,0.0],"kycen":[258,0,0.4823],"kydon":[71,0,0.0],"kyeir":[123,0,0.418],"kymarley":[5,0,0.0],"kysan":[35,0,0.0],"kyse":[5,0,0.0],"laderion":[12,0,0.0],"laeton":[50,0,0.0],"lakel":[5,0,0.0],"lalith":[5,0,0.0],"laquavion":[5,0,0.0],"lataveon":[5,0,0.0],"latrayvion":[5,0,0.0],"latu":[5,0,0.0],"lazare":[21,0,0.0],"leandros":[52,0,0.0],"leonidis":[12,0,0.0],"leylan":[5,0,0.0],"lisander":[19,0,0.0],"locklan":[169,0,0.4456],"loganjames":[16,0,0.0],"lrey":[12,0,0.0],"luar":[38,0,0.0],"maceson":[10,0,0.0],"maddin":[24,0,0.0],"makar":[191,0,0.4562],"malakei":[5,0,0.0],"marcuz":[24,0,0.0],"masih":[86,0,0.0],"maslah":[25,0,0.0],"mathijs":[5,0,0.0],"matten":[5,0,0.0],"matthaus":[17,0,0.0],"matus":[5,0,0.0],"maxten":[134,0,0.4254],"mcalister":[5,0,0.0],"mccarty":[5,5,0.0],"mckeon":[10,0,0.0],"merrek":[5,0,0.0],"midian":[11,0,0.0],"mikiyas":[65,0,0.0],"miloh":[343,7,0.4986],"moataz":[134,0,0.4254],"mordchai":[26,0,0.0],"morrissey":[22,5,0.0],"motaz":[57,0,0.0],"mykhel":[5,0,0.0],"nabi":[36,64,0.256],"najon":[10,0,0.0],"nathanieljames":[12,0,0.0],"navarion":[5,0,0.0],"nayef":[104,0,0.4034],"nikith":[29,0,0.0],"nishaun":[11,0,0.0],"nizear":[5,0,0.0],"nooh":[107,0,0.4059],"norian":[11,0,0.0],"noslen":[5,0,0.0],"nyier":[57,0,0.0],"oen":[10,0,0.0],"oryn":[206,0,0.4628],"osciel":[5,0,0.0],"osean":[43,7,0.0],"osteen":[11,0,0.0],"ozion":[25,0,0.0],"padrick":[5,0,0.0],"philopateer":[152,0,0.4364],"pol":[30,0,0.0],"quadarrious":[5,0,0.0],"qusay":[154,0,0.4375],"rahm":[160,0,0.4408],"rauf":[10,0,0.0],"rauljr":[5,0,0.0],"reiden":[80,0,0.0],"remey":[15,15,0.0],"rennan":[20,0,0.0],"reyad":[16,0,0.0],"reyez":[10,0,0.0],"rhome":[35,0,0.0],"rigden":[48,0,0.0],"rikelme":[5,0,0.0],"rilo":[50,23,0.0],"robinho":[5,0,0.0],"rogen":[139,0,0.4286],"rohnan":[77,0,0.0],"rokko":[10,0,0.0],"rurik":[29,0,0.0],"rylind":[17,0,0.0],"ryott":[146,0,0.4329],"ryuji":[29,0,0.0],"saarim":[27,0,0.0],"saavan":[44,0,0.0],"sabih":[5,0,0.0],"sahl":[11,0,0.0],"savant":[51,0,0.0],"shinobi":[5,0,0.0],"shivraj":[15,0,0.0],"shloak":[28,0,0.0],"shlomy":[36,0,0.0],"siwoo":[21,0,0.0],"sneyder":[54,0,0.0],"sorren":[149,0,0.4346],"souren":[5,0,0.0],"spartan":[5,0,0.0],"statton":[5,0,0.0],"stavro":[40,0,0.0],"stratos":[5,0,0.0],"streeter":[5,0,0.0],"syion":[59,0,0.0],"sylys":[21,0,0.0],"taedyn":[116,5,0.3993],"taehyun":[5,0,0.0],"takori":[5,0,0.0],"tausif":[16,0,0.0],"tavarian":[5,0,0.0],"tayseer":[35,0,0.0],"tayvan":[5,0,0.0],"tein":[5,0,0.0],"thorson":[48,0,0.0],"tobechi":[33,0,0.0],"tobyas":[25,0,0.0],"traiden":[50,0,0.0],"treaven":[5,0,0.0],"treytin":[10,0,0.0],"trill":[5,0,0.0],"tristano":[5,0,0.0],"tuscan":[5,0,0.0],"tyndale":[32,0,0.0],"tyzae":[5,0,0.0],"vardaan":[182,0,0.452],"varish":[36,0,0.0],"vayron":[5,0,0.0],"vili":[11,0,0.0],"vishrut":[25,0,0.0],"waden":[46,0,0.0],"wafi":[40,0,0.0],"wahaj":[41,0,0.0],"waled":[5,0,0.0],"walee":[5,0,0.0],"williamhenry":[5,0,0.0],"winner":[156,75,0.3192],"woojin":[20,0,0.0],"xabian":[20,0,0.0],"xandir":[11,0,0.0],"xsavion":[5,0,0.0],"yandi":[5,13,0.0],"yanko":[5,0,0.0],"yanzel":[37,0,0.0],"yichen":[208,75,0.3604],"yoandry":[49,0,0.0],"yonael":[94,0,0.0],"yosgard":[5,0,0.0],"yosiel":[104,0,0.4034],"yusha":[133,0,0.4248],"zaaire":[17,0,0.0],"zae":[189,5,0.4458],"zahier":[48,0,0.0],"zahyir":[29,0,0.0],"zaidon":[68,0,0.0],"zamarie":[5,19,0.0],"zaon":[5,0,0.0],"zeplin":[113,0,0.4106],"ziyear":[5,0,0.0],"ziyuan":[5,0,0.0],"zkye":[5,0,0.0],"zuko":[258,0,0.4823],"zylar":[78,0,0.0],"greidys":[0,344,0.5073],"chastelyn":[0,158,0.4397],"greydis":[0,181,0.4515],"shastelyn":[0,35,0.0],"chastelin":[0,40,0.0],"greidy":[0,105,0.4042],"aerilyn":[0,325,0.5024],"aileah":[0,51,0.0],"pailyn":[0,140,0.4292],"kherrington":[0,50,0.0],"makynli":[0,195,0.458],"renesmee":[0,1926,0.6569],"tarahji":[7,109,0.388],"paelyn":[0,73,0.0],"edynn":[0,175,0.4486],"greidis":[0,34,0.0],"mayari":[0,227,0.4712],"nyhla":[0,62,0.0],"ahlaam":[0,94,0.0],"emmilyn":[0,267,0.4853],"haylo":[0,223,0.4697],"lexii":[0,201,0.4606],"paeyton":[0,59,0.0],"payslie":[0,138,0.428],"sloka":[0,240,0.476],"chasteline":[0,11,0.0],"jazzleen":[0,39,0.0],"kynlei":[0,190,0.4558],"millee":[0,268,0.4856],"palynn":[0,39,0.0],"shivika":[0,66,0.0],"tarajii":[0,36,0.0],"annleigh":[0,95,0.0],"anzal":[0,311,0.4986],"aubrii":[0,303,0.4963],"daveah":[0,148,0.4341],"greydi":[0,24,0.0],"jameele":[0,10,0.0],"joelis":[0,39,0.0],"kaisyn":[774,223,0.4656],"kelisia":[0,10,0.0],"leanah":[0,81,0.0],"mithra":[5,306,0.4905],"naleigha":[0,81,0.0],"nusaiba":[0,196,0.4585],"raylinn":[0,194,0.4576],"rhylin":[78,172,0.33],"yastelin":[0,10,0.0],"yetzali":[0,411,0.5228],"yuvika":[0,78,0.0],"zhariyah":[0,63,0.0],"aaira":[0,513,0.542],"amilli":[0,93,0.0],"amillie":[0,49,0.0],"anorah":[0,235,0.4742],"avaiah":[0,200,0.4602],"aviyah":[0,356,0.5103],"carmah":[0,14,0.0],"dezira":[0,9,0.0],"fynlee":[5,406,0.5164],"gennesys":[0,20,0.0],"izzabel":[0,34,0.0],"jarieliz":[0,27,0.0],"javaya":[0,106,0.4051],"khaylee":[0,127,0.4208],"krisette":[0,56,0.0],"layani":[0,308,0.4977],"loveah":[0,192,0.4567],"malk":[0,39,0.0],"niveya":[0,9,0.0],"paizli":[0,21,0.0],"seylah":[0,251,0.4799],"tanishi":[0,120,0.4158],"yanexi":[0,21,0.0],"zacara":[0,26,0.0],"zivah":[0,329,0.5034],"zoribel":[0,14,0.0],"adelay":[0,71,0.0],"aizley":[0,136,0.4267],"amileah":[0,57,0.0],"amiyra":[0,86,0.0],"anindita":[0,8,0.0],"bellaann":[0,41,0.0],"chastelyne":[0,8,0.0],"deonni":[0,57,0.0],"dhrithi":[0,146,0.4329],"diliana":[0,8,0.0],"dziyah":[0,47,0.0],"elaf":[0,170,0.4461],"emberleigh":[0,938,0.5944],"emmaree":[0,74,0.0],"gracelee":[0,157,0.4392],"greydys":[0,8,0.0],"hamnah":[0,71,0.0],"hiiaka":[0,8,0.0],"iyanuoluwa":[38,95,0.3034],"jahlaya":[0,93,0.0],"jazlee":[0,28,0.0],"jezabell":[0,44,0.0],"jocalynn":[0,18,0.0],"kalii":[0,183,0.4525],"kameira":[0,15,0.0],"karylle":[0,8,0.0],"kayliee":[0,76,0.0],"kaylii":[0,26,0.0],"kaylnn":[0,47,0.0],"kentley":[104,178,0.3093],"kylasia":[0,8,0.0],"leighlah":[0,41,0.0],"levaeh":[0,91,0.0],"maleiyah":[0,123,0.418],"miaa":[0,130,0.4228],"myleene":[0,22,0.0],"nataylia":[0,8,0.0],"neliyah":[0,15,0.0],"nhuy":[0,8,0.0],"nicayla":[0,8,0.0],"paisli":[0,144,0.4317],"romiyah":[0,29,0.0],"saraii":[0,87,0.0],"skyrah":[0,112,0.4098],"tavaya":[0,13,0.0],"teraji":[0,47,0.0],"yolaine":[0,8,0.0],"yuzuki":[0,42,0.0],"zaelah":[0,60,0.0],"zailah":[0,226,0.4708],"zhoey":[0,93,0.0],"zolie":[0,60,0.0],"aara":[0,227,0.4712],"abbiegayle":[0,18,0.0],"abbilyn":[0,12,0.0],"abbylynn":[0,18,0.0],"adalea":[0,110,0.4083],"adyline":[0,179,0.4506],"ahmara":[0,58,0.0],"akshadha":[0,34,0.0],"alyeska":[0,72,0.0],"amarielle":[0,66,0.0],"anariyah":[0,17,0.0],"aneris":[0,7,0.0],"anistin":[0,7,0.0],"annlee":[0,182,0.452],"arianie":[0,65,0.0],"arijah":[0,29,0.0],"auryanna":[0,13,0.0],"avamaria":[0,27,0.0],"aylanie":[0,111,0.4091],"azariana":[0,7,0.0],"bayah":[0,55,0.0],"breighlyn":[0,50,0.0],"brhianna":[0,7,0.0],"bristyl":[0,157,0.4392],"brithanny":[0,12,0.0],"bryhana":[0,14,0.0],"cabela":[0,86,0.0],"chylar":[0,7,0.0],"dahlilah":[0,25,0.0],"daleyah":[0,25,0.0],"damariana":[0,14,0.0],"danavia":[0,7,0.0],"dayari":[0,20,0.0],"demariyah":[0,22,0.0],"devaya":[0,24,0.0],"dezstany":[0,7,0.0],"dylilah":[0,59,0.0],"ellowyn":[0,823,0.5831],"emagine":[0,12,0.0],"emalin":[0,44,0.0],"emmasophia":[0,47,0.0],"everlyse":[0,13,0.0],"harshika":[0,70,0.0],"henesy":[0,7,0.0],"hunny":[0,7,0.0],"ilanah":[0,12,0.0],"illiyana":[0,13,0.0],"italee":[0,94,0.0],"jaeleah":[0,67,0.0],"jasirah":[0,12,0.0],"jayniyah":[0,7,0.0],"kahana":[0,19,0.0],"kait":[0,18,0.0],"kaizlee":[0,282,0.49],"kamore":[0,29,0.0],"kanilah":[0,23,0.0],"karmia":[0,7,0.0],"khamira":[0,7,0.0],"kharmyn":[0,25,0.0],"koralyn":[0,212,0.4653],"kylieanne":[0,7,0.0],"lakely":[0,416,0.5238],"laynah":[0,34,0.0],"leightyn":[5,280,0.4824],"leryn":[0,7,0.0],"lihi":[0,12,0.0],"lilyane":[0,12,0.0],"liyla":[0,154,0.4375],"lyndah":[0,7,0.0],"maddielynn":[0,60,0.0],"madielynn":[0,7,0.0],"makynley":[0,25,0.0],"makynlie":[0,70,0.0],"mckinlie":[0,30,0.0],"miarae":[0,7,0.0],"miyari":[0,17,0.0],"nahlani":[0,148,0.4341],"natala":[0,7,0.0],"nately":[0,7,0.0],"nivriti":[0,40,0.0],"niyanah":[0,12,0.0],"onaleigh":[0,15,0.0],"rafeef":[0,128,0.4214],"renatha":[0,119,0.4151],"rinah":[0,19,0.0],"saee":[0,7,0.0],"samiyha":[0,13,0.0],"samridhi":[0,46,0.0],"saniyaa":[0,12,0.0],"savaeh":[0,18,0.0],"seaniya":[0,7,0.0],"seleah":[0,30,0.0],"sevda":[0,37,0.0],"shresta":[0,141,0.4298],"stellah":[0,168,0.4451],"sulmy":[0,7,0.0],"tarajai":[0,7,0.0],"temmy":[0,18,0.0],"waniya":[0,139,0.4286],"wareesha":[0,32,0.0],"yaima":[0,17,0.0],"yamiley":[0,22,0.0],"yashi":[0,69,0.0],"yerelin":[0,19,0.0],"zamyla":[0,30,0.0],"zanariah":[0,42,0.0],"zarihanna":[0,20,0.0],"zeeva":[0,141,0.4298],"zephyra":[0,118,0.4144],"ziel":[44,17,0.0],"zonnique":[0,103,0.4026],"zoryana":[0,39,0.0],"zyllah":[0,29,0.0],"aadison":[0,11,0.0],"aaila":[0,109,0.4075],"adaneli":[0,11,0.0],"adylyn":[0,35,0.0],"aerilynn":[0,66,0.0],"afsa":[0,81,0.0],"ainzlee":[0,34,0.0],"ajwa":[0,147,0.4335],"alaiyna":[0,90,0.0],"alazne":[0,210,0.4644],"alessondra":[0,12,0.0],"alezae":[0,19,0.0],"aliannah":[0,651,0.5627],"alixon":[0,6,0.0],"allyanah":[0,11,0.0],"alohi":[5,53,0.0],"alysianna":[0,24,0.0],"amahya":[0,21,0.0],"ameelah":[0,69,0.0],"amoriana":[0,29,0.0],"anahlia":[0,138,0.428],"anjelah":[0,28,0.0],"annalaya":[0,145,0.4323],"annaliah":[0,182,0.452],"aribelle":[0,187,0.4544],"ashdyn":[36,6,0.0],"asyra":[0,6,0.0],"ataliah":[0,18,0.0],"aubreylynn":[0,31,0.0],"aundreah":[0,6,0.0],"avynn":[5,99,0.384],"azaela":[0,131,0.4235],"azoriah":[0,12,0.0],"berkli":[0,42,0.0],"bexley":[240,2969,0.6488],"braelyne":[0,6,0.0],"braylah":[0,81,0.0],"breasya":[0,6,0.0],"breilyn":[0,28,0.0],"briellah":[0,87,0.0],"brynlyn":[0,96,0.0],"charny":[0,56,0.0],"chloeigh":[0,6,0.0],"coraly":[0,6,0.0],"dailynne":[0,6,0.0],"damariona":[0,12,0.0],"daniellah":[0,6,0.0],"dellah":[0,62,0.0],"delycia":[0,6,0.0],"desiya":[0,12,0.0],"dillynn":[0,56,0.0],"dzaria":[0,23,0.0],"elayshia":[0,11,0.0],"elianys":[0,207,0.4632],"elinah":[0,15,0.0],"elisabella":[0,114,0.4114],"ellajane":[0,88,0.0],"elliemae":[0,605,0.5564],"elody":[0,283,0.4904],"emberlie":[0,170,0.4461],"embrey":[0,74,0.0],"emiliah":[0,96,0.0],"eralyn":[0,38,0.0],"eterniti":[0,23,0.0],"fiamma":[0,35,0.0],"galiyah":[0,30,0.0],"geet":[0,73,0.0],"graelyn":[0,241,0.4764],"graidys":[0,6,0.0],"graylee":[0,150,0.4352],"greydy":[0,11,0.0],"gweneviere":[0,81,0.0],"harlequin":[0,41,0.0],"hasika":[0,11,0.0],"haslyn":[0,6,0.0],"hinatea":[0,6,0.0],"isana":[0,45,0.0],"ishaanvi":[0,44,0.0],"ivanya":[0,6,0.0],"jadalys":[0,6,0.0],"jaelia":[0,6,0.0],"jahzarah":[0,34,0.0],"jaidelyn":[0,17,0.0],"jakenzie":[0,108,0.4067],"jakylee":[0,33,0.0],"jaliyiah":[0,41,0.0],"jamyrie":[0,6,0.0],"janayiah":[0,11,0.0],"janielis":[0,22,0.0],"janiyan":[0,6,0.0],"jashiyah":[0,13,0.0],"jayiah":[0,13,0.0],"jaysea":[0,6,0.0],"jazariya":[0,19,0.0],"jazlina":[0,6,0.0],"jazyriah":[0,16,0.0],"jerelin":[0,6,0.0],"johniah":[0,11,0.0],"jordae":[0,6,0.0],"journii":[0,669,0.5651],"journye":[0,36,0.0],"kailanie":[0,106,0.4051],"kailianna":[0,11,0.0],"kalliann":[0,6,0.0],"kamaura":[0,6,0.0],"kamauria":[0,22,0.0],"kameriah":[0,6,0.0],"karthika":[0,85,0.0],"katiemae":[0,16,0.0],"kayahna":[0,6,0.0],"kayliani":[0,116,0.4129],"kelaia":[0,33,0.0],"kermina":[0,12,0.0],"khalayah":[0,55,0.0],"kharmin":[0,6,0.0],"khassidy":[0,77,0.0],"khepri":[70,75,0.2236],"khouri":[11,31,0.0],"kimmori":[0,6,0.0],"kmiyah":[0,64,0.0],"kmyah":[0,11,0.0],"knightley":[33,102,0.3219],"koralynn":[0,254,0.481],"kylaa":[0,11,0.0],"lamyiah":[0,72,0.0],"lashiyah":[0,6,0.0],"latiyah":[0,6,0.0],"layaan":[0,106,0.4051],"leiyla":[0,6,0.0],"lexanni":[0,6,0.0],"liannie":[0,11,0.0],"lierra":[0,6,0.0],"likhita":[0,6,0.0],"lilleah":[0,6,0.0],"lillyanah":[0,60,0.0],"lizah":[0,19,0.0],"lluviana":[0,6,0.0],"londonmarie":[0,18,0.0],"loveaya":[0,6,0.0],"lyniyah":[0,18,0.0],"mackinlee":[0,75,0.0],"madisonrose":[0,24,0.0],"makailynn":[0,27,0.0],"makinsley":[0,192,0.4567],"malieya":[0,6,0.0],"malila":[0,42,0.0],"mariahlynn":[0,43,0.0],"mariangelis":[0,6,0.0],"mavery":[0,344,0.5073],"maziya":[0,36,0.0],"mckaylen":[0,6,0.0],"mckaylynn":[0,13,0.0],"meilah":[0,158,0.4397],"miaandrea":[0,6,0.0],"milahn":[0,33,0.0],"miricale":[0,6,0.0],"munachi":[33,81,0.2923],"myaira":[0,32,0.0],"myiona":[0,6,0.0],"naelah":[0,12,0.0],"naidaly":[0,6,0.0],"nakaylee":[0,6,0.0],"natalei":[0,12,0.0],"nathaya":[0,6,0.0],"nayli":[0,20,0.0],"nazarria":[0,6,0.0],"niaylah":[0,16,0.0],"nileah":[0,6,0.0],"okalani":[0,44,0.0],"oluwabukunmi":[0,15,0.0],"paizleigh":[0,252,0.4803],"parvathy":[0,11,0.0],"paylan":[0,6,0.0],"paylen":[0,40,0.0],"pela":[0,11,0.0],"prayze":[0,6,0.0],"priyasha":[0,17,0.0],"promyce":[0,47,0.0],"raighan":[0,40,0.0],"ramayah":[0,11,0.0],"reylee":[0,28,0.0],"rhemi":[16,209,0.437],"rhylei":[0,169,0.4456],"riella":[0,116,0.4129],"rishima":[0,6,0.0],"ritaj":[0,172,0.4471],"rital":[0,173,0.4476],"saamiyah":[0,6,0.0],"saamya":[0,11,0.0],"safoora":[0,16,0.0],"sairi":[0,6,0.0],"samyriah":[0,12,0.0],"saniiyah":[0,6,0.0],"saraa":[0,6,0.0],"serani":[24,11,0.0],"shilat":[0,6,0.0],"shreenidhi":[0,6,0.0],"shreshta":[0,116,0.4129],"sinem":[0,17,0.0],"siriana":[0,6,0.0],"solash":[0,64,0.0],"sophianna":[0,57,0.0],"symari":[0,11,0.0],"syreniti":[0,13,0.0],"taisiya":[0,69,0.0],"temperence":[0,77,0.0],"trentity":[0,6,0.0],"triniyah":[0,6,0.0],"tyvaeh":[0,6,0.0],"varshita":[0,6,0.0],"violeth":[0,36,0.0],"vriti":[0,11,0.0],"wyllow":[0,239,0.4757],"xiani":[0,29,0.0],"yarazeth":[0,6,0.0],"yareily":[0,6,0.0],"yashita":[0,6,0.0],"zakayah":[0,6,0.0],"zaliah":[0,160,0.4408],"zaphira":[0,45,0.0],"zeilin":[0,6,0.0],"zuree":[0,109,0.4075],"zyrhiana":[0,6,0.0],"aaiyana":[0,10,0.0],"aaiza":[0,47,0.0],"aaleya":[0,22,0.0],"aamoni":[0,15,0.0],"aarshiya":[0,5,0.0],"abeera":[0,105,0.4042],"abigailgrace":[0,24,0.0],"adalen":[0,44,0.0],"adalya":[0,23,0.0],"addieson":[0,15,0.0],"addilynne":[0,147,0.4335],"aderinsola":[0,70,0.0],"adilyne":[0,75,0.0],"adrihana":[0,5,0.0],"adryauna":[0,5,0.0],"adut":[0,50,0.0],"advita":[0,50,0.0],"adylenne":[0,13,0.0],"aesa":[0,10,0.0],"ahavah":[0,90,0.0],"ahlayla":[0,33,0.0],"ahnaleigh":[0,10,0.0],"ahonesti":[0,47,0.0],"ahvianna":[0,20,0.0],"aia":[0,52,0.0],"airlie":[0,138,0.428],"akoya":[0,15,0.0],"akriti":[0,27,0.0],"alaiha":[0,10,0.0],"alaizha":[0,5,0.0],"alauni":[0,112,0.4098],"aleksah":[0,5,0.0],"alexionna":[0,10,0.0],"alexzis":[0,5,0.0],"aliyia":[0,5,0.0],"aliyna":[0,37,0.0],"alylah":[0,190,0.4558],"alyrah":[0,29,0.0],"amareona":[0,5,0.0],"amazen":[0,11,0.0],"amelianna":[0,98,0.0],"amerius":[5,5,0.0],"amiaha":[0,5,0.0],"amielle":[0,16,0.0],"amilie":[0,5,0.0],"amiriya":[0,16,0.0],"amirykal":[0,35,0.0],"amiylah":[0,124,0.4187],"amiyrah":[0,137,0.4273],"amonii":[0,31,0.0],"amyha":[0,10,0.0],"anabia":[0,695,0.5684],"analiha":[0,5,0.0],"analyss":[0,5,0.0],"ananyaa":[0,5,0.0],"aneeya":[0,5,0.0],"aneiyah":[0,5,0.0],"anfisa":[0,17,0.0],"angeliya":[0,5,0.0],"anime":[0,11,0.0],"anivia":[0,39,0.0],"anjaliyah":[0,5,0.0],"anyrie":[0,5,0.0],"aradhya":[5,354,0.5039],"araiah":[0,99,0.0],"arieli":[0,44,0.0],"arielyn":[0,5,0.0],"ariunna":[0,10,0.0],"ariyelle":[0,79,0.0],"asaria":[0,5,0.0],"aset":[0,54,0.0],"asianah":[0,5,0.0],"asianay":[0,5,0.0],"asrar":[0,5,0.0],"atalee":[0,57,0.0],"audrynna":[0,11,0.0],"aunaleigh":[0,10,0.0],"aurey":[0,10,0.0],"avaiya":[0,126,0.4201],"avalea":[0,63,0.0],"avalie":[0,164,0.443],"avalyse":[0,41,0.0],"avenlea":[0,15,0.0],"avenly":[0,112,0.4098],"avera":[0,57,0.0],"avori":[0,62,0.0],"avreigh":[0,10,0.0],"aybrie":[0,19,0.0],"ayeleen":[0,10,0.0],"ayrihanna":[0,5,0.0],"batula":[0,15,0.0],"bellany":[0,178,0.4501],"bhrianna":[0,5,0.0],"bia":[0,112,0.4098],"blakelie":[0,39,0.0],"blakleigh":[0,195,0.458],"braiya":[0,5,0.0],"braylei":[0,166,0.444],"brehea":[0,5,0.0],"brittlynn":[0,26,0.0],"brylinn":[0,69,0.0],"bryndle":[0,274,0.4876],"caidee":[0,5,0.0],"caleiah":[0,5,0.0],"calynne":[0,5,0.0],"camaira":[0,5,0.0],"camea":[0,5,0.0],"cameil":[0,5,0.0],"camillya":[0,5,0.0],"carcyn":[0,5,0.0],"carya":[0,5,0.0],"caylani":[0,178,0.4501],"cayleeann":[0,5,0.0],"ceinna":[0,5,0.0],"cevilla":[0,10,0.0],"ciley":[0,5,0.0],"ciyana":[0,10,0.0],"crystabel":[0,5,0.0],"dalayshia":[0,5,0.0],"danelys":[0,24,0.0],"danielys":[0,99,0.0],"daraly":[0,52,0.0],"dareona":[0,5,0.0],"daryah":[0,72,0.0],"dayri":[0,12,0.0],"dazariah":[0,51,0.0],"deronna":[0,5,0.0],"deslynn":[0,71,0.0],"devanhi":[0,18,0.0],"dezlynn":[0,56,0.0],"dianalee":[0,5,0.0],"dianalys":[0,5,0.0],"dionnah":[0,5,0.0],"dixee":[0,16,0.0],"duniya":[0,11,0.0],"dynesti":[0,5,0.0],"dyuthi":[0,83,0.0],"edalia":[0,5,0.0],"eilah":[0,213,0.4657],"eilley":[0,57,0.0],"elecktra":[0,5,0.0],"eleecia":[0,5,0.0],"elexi":[0,5,0.0],"elianni":[0,109,0.4075],"elisiana":[0,31,0.0],"eliyanah":[0,1427,0.6309],"elliena":[0,11,0.0],"ellisen":[0,80,0.0],"elyah":[5,15,0.0],"emee":[0,15,0.0],"emelye":[0,5,0.0],"emmari":[0,50,0.0],"emmelee":[0,5,0.0],"emmelynn":[0,77,0.0],"emmilynn":[0,91,0.0],"emna":[0,16,0.0],"erieonna":[0,5,0.0],"erionne":[0,5,0.0],"esmay":[0,266,0.485],"esmie":[0,138,0.428],"estefanya":[0,5,0.0],"evaine":[0,11,0.0],"evalet":[0,24,0.0],"evaney":[0,10,0.0],"evangelena":[0,5,0.0],"evangely":[0,11,0.0],"evannah":[0,16,0.0],"evanni":[0,26,0.0],"ezmae":[0,401,0.5206],"faylinn":[0,72,0.0],"ferra":[0,5,0.0],"finna":[0,26,0.0],"fraya":[0,214,0.4661],"gabriellamarie":[0,5,0.0],"garryn":[0,5,0.0],"gella":[0,21,0.0],"genysis":[0,44,0.0],"geordyn":[0,23,0.0],"getsemany":[0,5,0.0],"ghena":[0,15,0.0],"ghina":[0,85,0.0],"gracelan":[0,5,0.0],"gradys":[0,5,0.0],"graicyn":[0,5,0.0],"grishma":[0,39,0.0],"gul":[0,5,0.0],"gursimar":[0,10,0.0],"gwenaelle":[0,5,0.0],"gwennan":[0,5,0.0],"haein":[0,5,0.0],"hafso":[0,5,0.0],"haidynn":[0,91,0.0],"hayam":[0,10,0.0],"henlie":[0,85,0.0],"hla":[0,5,0.0],"hritika":[0,5,0.0],"iceland":[11,79,0.0],"icely":[0,5,0.0],"integrity":[0,16,0.0],"isaabella":[0,5,0.0],"iselin":[0,17,0.0],"ishwaq":[0,10,0.0],"islee":[0,44,0.0],"itzabelle":[0,5,0.0],"ivany":[0,11,0.0],"ixtzel":[0,10,0.0],"izzabellah":[0,11,0.0],"jadaiah":[0,5,0.0],"jainee":[0,5,0.0],"jaini":[0,30,0.0],"jainiyah":[0,5,0.0],"jakaylee":[0,82,0.0],"jakirria":[0,5,0.0],"jalieah":[0,5,0.0],"jameiah":[0,10,0.0],"janalis":[0,5,0.0],"janalyse":[0,5,0.0],"jarhia":[0,5,0.0],"javea":[0,5,0.0],"javina":[0,5,0.0],"jaydann":[0,5,0.0],"jaymiah":[0,16,0.0],"jayviona":[0,5,0.0],"jazaniah":[0,5,0.0],"jazaya":[0,85,0.0],"jazella":[0,5,0.0],"jeilani":[0,188,0.4548],"jemely":[0,5,0.0],"jenalyse":[0,10,0.0],"jenevive":[0,5,0.0],"jessabella":[0,39,0.0],"josmarie":[0,11,0.0],"jozlyne":[0,5,0.0],"jozzlynn":[0,17,0.0],"juleimy":[0,5,0.0],"juneau":[76,163,0.3244],"kahryn":[0,5,0.0],"kalayiah":[0,39,0.0],"kaleece":[0,16,0.0],"kambelle":[0,5,0.0],"kamyle":[0,5,0.0],"kamylla":[0,20,0.0],"karabella":[0,20,0.0],"kasadie":[0,5,0.0],"kaybre":[0,5,0.0],"kaydens":[0,5,0.0],"kaydnce":[0,5,0.0],"kayleeanna":[0,14,0.0],"kayleemae":[0,5,0.0],"kazariah":[0,27,0.0],"kellia":[0,12,0.0],"kendrie":[0,22,0.0],"kexin":[0,23,0.0],"keyliana":[0,5,0.0],"keymi":[0,22,0.0],"khilyn":[60,52,0.2196],"kiary":[0,5,0.0],"kinlei":[0,33,0.0],"kinzleigh":[0,399,0.5202],"korionna":[0,5,0.0],"kourtlynn":[0,176,0.4491],"kouture":[0,81,0.0],"krosby":[143,39,0.3552],"kryztal":[0,5,0.0],"kyairah":[0,11,0.0],"kyalee":[0,5,0.0],"kyliann":[5,10,0.0],"kymarie":[0,10,0.0],"laikynn":[11,346,0.4948],"lainah":[0,10,0.0],"laiona":[0,5,0.0],"lanayshia":[0,5,0.0],"larayah":[0,134,0.4254],"larionna":[0,5,0.0],"larriah":[0,5,0.0],"laveyah":[0,111,0.4091],"layiah":[0,57,0.0],"laylarose":[0,99,0.0],"laylina":[0,5,0.0],"lealah":[0,24,0.0],"learah":[0,24,0.0],"leightan":[0,5,0.0],"leiyana":[0,32,0.0],"leviah":[0,29,0.0],"lexcie":[0,5,0.0],"lialah":[0,10,0.0],"likhitha":[0,5,0.0],"lilan":[0,56,0.0],"lilani":[0,49,0.0],"lillyannah":[0,59,0.0],"lillyjo":[0,5,0.0],"liniyah":[0,5,0.0],"liva":[0,33,0.0],"lucea":[0,15,0.0],"luchia":[0,5,0.0],"lyia":[0,11,0.0],"lyneah":[0,23,0.0],"maelia":[0,35,0.0],"magdaly":[0,5,0.0],"mah":[0,5,0.0],"mahoganee":[0,5,0.0],"maidelyn":[0,26,0.0],"mailea":[0,10,0.0],"majuma":[0,5,0.0],"makaelynn":[0,22,0.0],"makenli":[0,97,0.0],"malaila":[0,18,0.0],"maliaya":[0,11,0.0],"malonnie":[0,35,0.0],"maluhia":[0,15,0.0],"maraam":[0,5,0.0],"mareily":[0,5,0.0],"margaretanne":[0,10,0.0],"mariannah":[0,23,0.0],"mariasha":[0,5,0.0],"marichuy":[0,5,0.0],"marietou":[0,40,0.0],"marniyah":[0,5,0.0],"martianna":[0,5,0.0],"maryellis":[0,10,0.0],"mayani":[0,57,0.0],"maylinn":[0,24,0.0],"mayrelin":[0,13,0.0],"mazani":[0,25,0.0],"mazaria":[0,5,0.0],"meagyn":[0,5,0.0],"meerub":[0,5,0.0],"meghyn":[0,10,0.0],"meikah":[0,12,0.0],"meraya":[0,10,0.0],"merely":[0,10,0.0],"meriwether":[0,23,0.0],"merjem":[0,25,0.0],"merlot":[0,5,0.0],"mikaeyla":[0,5,0.0],"mikaiyah":[0,10,0.0],"mildre":[0,5,0.0],"mileen":[0,5,0.0],"mille":[0,30,0.0],"millia":[0,11,0.0],"mithila":[0,41,0.0],"miyla":[0,79,0.0],"muntas":[0,58,0.0],"mushtaq":[0,88,0.0],"myaisa":[0,5,0.0],"myashia":[0,5,0.0],"nacirema":[0,5,0.0],"nafiso":[0,5,0.0],"nafissa":[0,5,0.0],"nahayla":[0,10,0.0],"nalayna":[0,17,0.0],"nalynn":[0,5,0.0],"naomii":[0,155,0.4381],"narielle":[0,29,0.0],"narriah":[0,10,0.0],"naturell":[0,5,0.0],"naw":[0,113,0.4106],"nayani":[0,83,0.0],"nayeri":[0,5,0.0],"nazariyah":[0,20,0.0],"nelani":[0,183,0.4525],"nesya":[0,16,0.0],"nevara":[0,5,0.0],"ngozichukwu":[0,5,0.0],"nikaylah":[0,5,0.0],"noelli":[0,29,0.0],"norra":[0,25,0.0],"norrah":[0,36,0.0],"novalei":[0,145,0.4323],"nyarai":[0,38,0.0],"nyaziah":[0,5,0.0],"nyrissa":[0,5,0.0],"nyvia":[0,5,0.0],"obehi":[0,5,0.0],"olana":[0,95,0.0],"oliviamarie":[0,52,0.0],"padyn":[0,5,0.0],"paetin":[0,5,0.0],"pailey":[0,43,0.0],"paislei":[0,177,0.4496],"paizlie":[0,79,0.0],"pareesa":[0,46,0.0],"parleen":[0,5,0.0],"pashience":[0,5,0.0],"paycie":[0,5,0.0],"paytten":[0,5,0.0],"pella":[0,66,0.0],"peytynn":[0,16,0.0],"pippin":[49,61,0.2264],"portlynn":[0,46,0.0],"prezley":[0,84,0.0],"quamya":[0,5,0.0],"raaya":[0,118,0.4144],"raghavi":[0,5,0.0],"rahanna":[0,10,0.0],"raily":[7,5,0.0],"raymiah":[0,5,0.0],"razariah":[0,5,0.0],"realynn":[0,116,0.4129],"reiya":[0,81,0.0],"renesme":[0,229,0.472],"reynah":[0,43,0.0],"reyse":[0,11,0.0],"rheese":[0,5,0.0],"rikhia":[0,5,0.0],"rosealynn":[0,137,0.4273],"rougui":[0,10,0.0],"rubylynn":[0,25,0.0],"sadeem":[0,30,0.0],"sadielee":[0,5,0.0],"sahmiyah":[0,12,0.0],"salay":[0,5,0.0],"samarea":[0,5,0.0],"samoni":[0,79,0.0],"sannidhi":[0,16,0.0],"sanura":[0,16,0.0],"sareniti":[0,5,0.0],"sarvia":[0,5,0.0],"sawdah":[0,50,0.0],"sayonna":[0,5,0.0],"seliah":[0,5,0.0],"seryniti":[0,5,0.0],"sevi":[22,108,0.3512],"shastelin":[0,5,0.0],"shniyah":[0,5,0.0],"shubhi":[0,11,0.0],"sidratul":[0,105,0.4042],"silah":[0,57,0.0],"silvi":[0,22,0.0],"siraya":[0,17,0.0],"smiya":[0,5,0.0],"sofiana":[0,48,0.0],"sofiyah":[0,59,0.0],"soleya":[0,36,0.0],"sophialauren":[0,5,0.0],"srivaishnavi":[0,5,0.0],"stellarose":[0,146,0.4329],"stevierae":[0,22,0.0],"sumaiyya":[0,5,0.0],"sumeja":[0,16,0.0],"summa":[0,5,0.0],"surianna":[0,5,0.0],"suyai":[0,5,0.0],"syree":[22,5,0.0],"taeghan":[0,10,0.0],"taegyn":[0,5,0.0],"tahliah":[0,39,0.0],"tairen":[0,5,0.0],"talajha":[0,5,0.0],"taleeah":[0,46,0.0],"tamarrah":[0,5,0.0],"tanyha":[0,5,0.0],"terriya":[0,12,0.0],"theoni":[0,5,0.0],"tishya":[0,40,0.0],"tisya":[0,20,0.0],"tmaya":[0,5,0.0],"toluwalope":[0,5,0.0],"torunn":[0,76,0.0],"tramiyah":[0,31,0.0],"trillium":[0,64,0.0],"triniya":[0,10,0.0],"trisity":[0,5,0.0],"tykeriah":[0,5,0.0],"tyonnah":[0,5,0.0],"vaelyn":[0,55,0.0],"vishva":[40,11,0.0],"waliyah":[0,21,0.0],"xaviona":[0,5,0.0],"xiyah":[0,12,0.0],"yafa":[0,111,0.4091],"yamarie":[0,5,0.0],"yanay":[0,60,0.0],"yarecsi":[0,5,0.0],"yaselin":[0,16,0.0],"yaslen":[0,5,0.0],"yayra":[0,21,0.0],"zadee":[0,17,0.0],"zaileigh":[0,107,0.4059],"zakharia":[0,15,0.0],"zamaiya":[0,15,0.0],"zaniiya":[0,5,0.0],"zanniyah":[0,5,0.0],"zariona":[0,10,0.0],"zaylei":[0,139,0.4286],"zaylia":[0,140,0.4292],"zaysia":[0,5,0.0],"zeilyn":[0,5,0.0],"zeinabou":[0,10,0.0],"zemiyah":[0,5,0.0],"zhaira":[0,5,0.0],"zhianna":[0,5,0.0],"zianny":[0,5,0.0],"zimaya":[0,5,0.0],"zimora":[0,50,0.0],"ziqi":[0,38,0.0],"zirah":[0,46,0.0],"zohe":[0,10,0.0],"zujeily":[0,5,0.0],"zyani":[0,35,0.0],"zyien":[60,12,0.0],"zynique":[0,74,0.0],"zyrie":[76,31,0.2883],"zyriel":[0,16,0.0],"jeremih":[1218,0,0.6171],"kiptyn":[736,22,0.5592],"jencarlos":[1099,0,0.6082],"jayko":[267,0,0.4853],"kypton":[201,0,0.4606],"adhrit":[448,0,0.5303],"kingstyn":[631,0,0.56],"damoney":[86,0,0.0],"jencarlo":[172,0,0.4471],"raynen":[32,0,0.0],"trigger":[261,0,0.4833],"inaky":[29,0,0.0],"castiel":[3660,33,0.7071],"godric":[378,0,0.5155],"jrue":[1594,327,0.5449],"ahmare":[23,0,0.0],"ayeden":[146,0,0.4329],"kydan":[78,0,0.0],"tyten":[51,0,0.0],"zailen":[150,0,0.4352],"dezion":[65,0,0.0],"jackston":[186,0,0.4539],"khyran":[78,0,0.0],"knoxx":[550,0,0.5481],"lakari":[27,0,0.0],"leelin":[60,0,0.0],"mahd":[57,0,0.0],"swarit":[23,0,0.0],"xavy":[64,0,0.0],"zayven":[255,0,0.4813],"ashyr":[150,0,0.4352],"brilan":[25,0,0.0],"brox":[54,0,0.0],"brystin":[19,0,0.0],"doruk":[65,0,0.0],"elrey":[50,0,0.0],"ethanjoseph":[9,0,0.0],"jeliel":[14,0,0.0],"kamorian":[9,0,0.0],"ledion":[55,0,0.0],"mishaun":[20,0,0.0],"monson":[46,0,0.0],"myren":[14,0,0.0],"nikkos":[16,0,0.0],"parson":[61,0,0.0],"rhonin":[160,0,0.4408],"rhylen":[179,79,0.3346],"ryot":[247,0,0.4785],"abhijot":[58,0,0.0],"abubacar":[19,0,0.0],"aceson":[549,0,0.5479],"addai":[52,0,0.0],"adrial":[41,0,0.0],"anhad":[176,32,0.3923],"cashtyn":[176,0,0.4491],"daking":[93,0,0.0],"eiljah":[22,0,0.0],"emare":[13,0,0.0],"fender":[86,0,0.0],"gagik":[8,0,0.0],"jahsai":[181,0,0.4515],"jaier":[56,0,0.0],"jeniel":[128,0,0.4214],"josgart":[8,0,0.0],"kaelum":[165,0,0.4435],"kaivion":[46,0,0.0],"kamariyon":[8,0,0.0],"kinsler":[300,31,0.4568],"mathyus":[48,0,0.0],"maxin":[54,0,0.0],"maxym":[42,0,0.0],"meziah":[149,0,0.4346],"nathanjames":[13,0,0.0],"oleksandr":[76,0,0.0],"rhyker":[432,5,0.5221],"scottland":[13,7,0.0],"shivesh":[26,0,0.0],"shriram":[38,0,0.0],"traysen":[77,0,0.0],"uryah":[36,0,0.0],"wake":[238,0,0.4753],"yosgarth":[8,0,0.0],"zaxton":[536,0,0.5458],"aideyn":[14,0,0.0],"alakay":[92,0,0.0],"aldhair":[7,0,0.0],"alekai":[153,0,0.4369],"amaure":[18,0,0.0],"arjit":[18,0,0.0],"axten":[189,0,0.4553],"axtin":[72,0,0.0],"axyl":[496,6,0.5337],"aysen":[243,0,0.4771],"bracyn":[30,0,0.0],"braddox":[32,0,0.0],"bradyen":[7,0,0.0],"briden":[43,0,0.0],"caylib":[7,0,0.0],"cylar":[42,0,0.0],"dashton":[122,0,0.4173],"davud":[100,0,0.4],"desai":[71,0,0.0],"deylen":[7,0,0.0],"dredan":[40,0,0.0],"handerson":[7,0,0.0],"harihar":[7,0,0.0],"hopper":[84,0,0.0],"huzaifah":[59,0,0.0],"isan":[64,0,0.0],"izen":[195,0,0.458],"jahaire":[101,0,0.4009],"jaico":[7,0,0.0],"jaidden":[7,0,0.0],"jayziah":[107,0,0.4059],"jazib":[17,0,0.0],"jeaven":[19,0,0.0],"jhayce":[52,0,0.0],"jurian":[12,0,0.0],"jymari":[7,0,0.0],"kaemen":[7,0,0.0],"kaisan":[102,0,0.4017],"kalet":[127,5,0.408],"kamdan":[25,0,0.0],"karrson":[49,0,0.0],"kartier":[1524,181,0.5777],"karym":[21,0,0.0],"kashen":[17,0,0.0],"kavaris":[12,0,0.0],"khailen":[17,0,0.0],"khamden":[30,0,0.0],"khenan":[30,0,0.0],"khyir":[99,0,0.0],"kirolos":[39,0,0.0],"kix":[135,0,0.4261],"ladereon":[7,0,0.0],"leyver":[12,0,0.0],"makaii":[50,0,0.0],"maneet":[13,0,0.0],"marick":[12,0,0.0],"padric":[12,0,0.0],"raam":[105,0,0.4042],"rishin":[7,0,0.0],"roko":[69,0,0.0],"rysen":[14,0,0.0],"taelen":[25,0,0.0],"teegun":[7,0,0.0],"trendyn":[26,0,0.0],"velkan":[7,0,0.0],"viraat":[161,0,0.4414],"volvi":[27,0,0.0],"xabi":[121,0,0.4166],"yanziel":[76,0,0.0],"yubal":[7,0,0.0],"zyreon":[14,0,0.0],"aasir":[396,0,0.5195],"abdisamad":[28,0,0.0],"abnel":[6,0,0.0],"abren":[11,0,0.0],"adorion":[6,0,0.0],"agamjot":[111,0,0.4091],"ahmeir":[115,0,0.4121],"ajavion":[25,0,0.0],"akanni":[17,7,0.0],"alaki":[42,0,0.0],"alayn":[11,0,0.0],"alikai":[117,0,0.4136],"altan":[133,0,0.4248],"anatoli":[6,0,0.0],"arkangel":[16,0,0.0],"arnesh":[27,0,0.0],"aro":[93,0,0.0],"asantae":[16,0,0.0],"aveer":[468,0,0.534],"avett":[741,54,0.5407],"ayedin":[37,0,0.0],"ayotunde":[43,0,0.0],"bawi":[217,41,0.4057],"blesson":[52,0,0.0],"branly":[18,0,0.0],"breaden":[11,0,0.0],"brecker":[24,0,0.0],"brennick":[17,0,0.0],"brigden":[16,0,0.0],"brigdon":[11,0,0.0],"bronner":[22,0,0.0],"cadem":[6,0,0.0],"carstyn":[6,0,0.0],"cashten":[102,0,0.4017],"dabriel":[6,0,0.0],"darikson":[86,0,0.0],"darshil":[27,0,0.0],"dazarion":[16,0,0.0],"deybi":[26,0,0.0],"dmarrion":[13,0,0.0],"donjay":[6,0,0.0],"edisson":[49,0,0.0],"edriel":[108,0,0.4067],"edyson":[58,0,0.0],"enam":[54,0,0.0],"endri":[13,0,0.0],"esean":[6,0,0.0],"gaibriel":[6,0,0.0],"gianmarcos":[16,0,0.0],"gianmichael":[17,0,0.0],"godwill":[12,0,0.0],"haydenn":[6,31,0.0],"henach":[6,0,0.0],"hrishik":[6,0,0.0],"jacayden":[58,0,0.0],"jaevien":[11,0,0.0],"jahcure":[6,0,0.0],"jakauri":[20,0,0.0],"jakavian":[11,0,0.0],"janek":[29,0,0.0],"jaxn":[119,0,0.4151],"jaxun":[6,0,0.0],"jaydiel":[61,0,0.0],"jaythian":[6,0,0.0],"jdin":[6,0,0.0],"jermih":[6,0,0.0],"juliean":[6,0,0.0],"kaeon":[6,0,0.0],"kahleil":[21,0,0.0],"kahmal":[6,0,0.0],"kaihan":[92,0,0.0],"kainyn":[33,0,0.0],"kalleb":[37,0,0.0],"kalyx":[35,0,0.0],"kamalu":[22,0,0.0],"kamuri":[6,0,0.0],"kaustav":[6,0,0.0],"kavyn":[44,0,0.0],"khadyn":[62,0,0.0],"khamare":[6,0,0.0],"kilen":[27,0,0.0],"killion":[45,0,0.0],"kingson":[168,0,0.4451],"kiotti":[6,0,0.0],"kjon":[27,0,0.0],"knighton":[48,0,0.0],"kruise":[17,0,0.0],"kutler":[131,0,0.4235],"kuzey":[150,0,0.4352],"kyric":[24,0,0.0],"laithen":[58,0,0.0],"lanndon":[6,0,0.0],"lennex":[131,92,0.2759],"liahm":[164,0,0.443],"lorik":[177,0,0.4496],"madoxx":[28,0,0.0],"makah":[12,0,0.0],"makaleb":[6,0,0.0],"makiy":[6,0,0.0],"maruf":[11,0,0.0],"matrim":[76,0,0.0],"mattheo":[265,0,0.4846],"matvei":[79,0,0.0],"maxxon":[139,0,0.4286],"maysn":[28,0,0.0],"mijael":[6,0,0.0],"moxon":[195,0,0.458],"naiden":[75,0,0.0],"naitik":[75,0,0.0],"naseir":[12,0,0.0],"nayel":[414,5,0.5182],"nazeeh":[6,0,0.0],"nehorai":[32,0,0.0],"nysire":[6,0,0.0],"okan":[11,0,0.0],"osinachi":[99,41,0.3035],"pennington":[12,18,0.0],"prabhat":[6,0,0.0],"quirt":[6,0,0.0],"raidel":[29,0,0.0],"raydrick":[6,0,0.0],"rhyden":[88,0,0.0],"riland":[12,0,0.0],"rodion":[26,0,0.0],"ryett":[361,0,0.5115],"salaar":[177,0,0.4496],"santhiago":[528,0,0.5445],"saurish":[12,0,0.0],"sebastyn":[31,0,0.0],"shrenik":[14,0,0.0],"sohom":[6,0,0.0],"sourya":[26,0,0.0],"sudais":[421,0,0.5249],"tahseen":[11,0,0.0],"tashard":[6,0,0.0],"tevez":[6,0,0.0],"treshad":[6,0,0.0],"trezdon":[19,0,0.0],"tristien":[6,0,0.0],"urijha":[6,0,0.0],"vaishnav":[84,0,0.0],"vidit":[119,0,0.4151],"vidyut":[85,0,0.0],"winsley":[6,238,0.4657],"wylen":[16,0,0.0],"xanti":[36,0,0.0],"xyaire":[241,0,0.4764],"yain":[6,0,0.0],"yairon":[6,0,0.0],"yandriel":[134,0,0.4254],"yasel":[6,0,0.0],"yermi":[11,0,0.0],"yimi":[19,0,0.0],"yoexis":[6,0,0.0],"yudiel":[11,0,0.0],"yuvaan":[999,0,0.5999],"yuvraaj":[13,0,0.0],"zim":[11,0,0.0],"zoravar":[135,0,0.4261],"aadrian":[12,0,0.0],"abdulazeem":[10,0,0.0],"abdulbasit":[42,0,0.0],"abdulmajeed":[59,0,0.0],"abdulwahid":[18,0,0.0],"aceon":[111,0,0.4091],"achilleus":[100,0,0.4],"achraf":[17,0,0.0],"adae":[5,10,0.0],"aevin":[38,0,0.0],"affaan":[5,0,0.0],"ahir":[5,0,0.0],"aidanjohn":[5,0,0.0],"aidyen":[5,0,0.0],"aiedan":[5,0,0.0],"aieden":[12,0,0.0],"aiiden":[58,0,0.0],"airan":[11,0,0.0],"aken":[10,0,0.0],"akhari":[159,56,0.345],"alekay":[5,0,0.0],"alyxzander":[10,0,0.0],"amiin":[18,0,0.0],"amileo":[21,0,0.0],"angeal":[10,0,0.0],"anirvin":[26,0,0.0],"arka":[80,6,0.0],"arseny":[29,0,0.0],"arthas":[75,0,0.0],"auryn":[122,41,0.3311],"averick":[28,0,0.0],"averyn":[10,0,0.0],"avrion":[5,0,0.0],"aweys":[10,0,0.0],"aycen":[440,0,0.5287],"aylon":[18,0,0.0],"azante":[5,0,0.0],"azden":[11,0,0.0],"beka":[52,0,0.0],"brecon":[11,0,0.0],"bredyn":[5,0,0.0],"breighden":[5,0,0.0],"brener":[5,0,0.0],"brex":[109,0,0.4075],"bridon":[11,0,0.0],"brisyn":[95,0,0.0],"brockston":[10,0,0.0],"camrion":[5,0,0.0],"carbon":[76,0,0.0],"carion":[28,0,0.0],"casch":[5,0,0.0],"cashmiere":[5,0,0.0],"caycen":[87,0,0.0],"caylem":[15,0,0.0],"ceron":[11,0,0.0],"chaly":[5,0,0.0],"charlesten":[5,0,0.0],"chazten":[5,0,0.0],"cherif":[56,0,0.0],"chibuzor":[5,0,0.0],"cilas":[56,0,0.0],"coleone":[5,0,0.0],"coltn":[10,0,0.0],"cordea":[5,0,0.0],"dacio":[10,0,0.0],"dagim":[86,0,0.0],"daiwik":[92,0,0.0],"damonnie":[5,0,0.0],"danger":[86,0,0.0],"darwing":[10,0,0.0],"davens":[12,0,0.0],"daxtin":[227,0,0.4712],"dayveion":[5,0,0.0],"degen":[5,0,0.0],"dekai":[44,0,0.0],"dellan":[16,0,0.0],"derryon":[5,0,0.0],"devrim":[24,0,0.0],"dezavion":[5,0,0.0],"diarmuid":[11,0,0.0],"dmarquis":[5,0,0.0],"draylan":[16,0,0.0],"dylian":[10,0,0.0],"dysan":[5,0,0.0],"edier":[5,0,0.0],"effren":[5,0,0.0],"eilam":[202,0,0.4611],"ejaz":[20,0,0.0],"ekrem":[45,0,0.0],"eliezel":[11,0,0.0],"emeryk":[51,0,0.0],"ezael":[111,0,0.4091],"ezekio":[58,0,0.0],"ezera":[47,6,0.0],"ezeriah":[221,7,0.4571],"ezrael":[478,0,0.5359],"fawkes":[81,0,0.0],"fenway":[58,0,0.0],"finnlay":[17,0,0.0],"frantisek":[5,0,0.0],"gabryal":[11,0,0.0],"gerimiah":[15,0,0.0],"ghali":[121,0,0.4166],"giobani":[5,0,0.0],"greylin":[40,15,0.0],"griffey":[207,0,0.4632],"gryffon":[11,0,0.0],"haram":[5,52,0.0],"haroutyun":[5,0,0.0],"hassiel":[20,0,0.0],"havik":[41,0,0.0],"hayston":[96,0,0.0],"haziq":[51,0,0.0],"hishaam":[10,0,0.0],"horeb":[11,0,0.0],"hridhaan":[211,0,0.4649],"ichigo":[16,0,0.0],"illidan":[21,0,0.0],"illijah":[11,0,0.0],"issay":[5,0,0.0],"izriel":[25,0,0.0],"jabrae":[5,0,0.0],"jacksin":[10,0,0.0],"jacquari":[5,0,0.0],"jadereon":[5,0,0.0],"jaderian":[10,0,0.0],"jaece":[152,0,0.4364],"jaggyr":[5,0,0.0],"jahking":[161,0,0.4414],"jahkir":[5,0,0.0],"jahyden":[16,0,0.0],"jainil":[40,0,0.0],"jaival":[5,0,0.0],"jakahri":[15,0,0.0],"jakius":[5,0,0.0],"jakyree":[83,0,0.0],"jaryel":[5,0,0.0],"jaseir":[15,0,0.0],"jashanpreet":[5,0,0.0],"jasye":[5,0,0.0],"javiair":[5,0,0.0],"jaydel":[43,0,0.0],"jaydenmatthew":[5,0,0.0],"jayhden":[5,0,0.0],"jayken":[16,0,0.0],"jayvein":[5,0,0.0],"jazayvion":[5,0,0.0],"jekhari":[24,0,0.0],"jendry":[17,0,0.0],"jeramih":[50,0,0.0],"jeshaiah":[10,0,0.0],"jhaiden":[33,0,0.0],"jhamere":[10,0,0.0],"joakin":[17,0,0.0],"joevan":[28,0,0.0],"johandry":[38,0,0.0],"joniell":[5,0,0.0],"josen":[36,0,0.0],"jshun":[5,0,0.0],"juliyan":[49,0,0.0],"juriah":[54,0,0.0],"jyquavious":[5,0,0.0],"kadel":[5,0,0.0],"kado":[99,0,0.0],"kadrien":[25,0,0.0],"kaesin":[37,0,0.0],"kaeveon":[13,0,0.0],"kahanuola":[5,0,0.0],"kahekili":[50,0,0.0],"kahlo":[82,8,0.0],"kahmar":[5,0,0.0],"kahreem":[41,0,0.0],"kaicen":[271,0,0.4866],"kamaire":[5,0,0.0],"kamelo":[39,0,0.0],"kamion":[5,0,0.0],"kamontae":[10,0,0.0],"karcher":[5,0,0.0],"karden":[82,0,0.0],"kashes":[10,0,0.0],"kaveesh":[5,0,0.0],"kaysun":[31,0,0.0],"kazuhiro":[11,0,0.0],"keadyn":[5,0,0.0],"keenin":[5,0,0.0],"keyair":[22,0,0.0],"khilan":[84,0,0.0],"khing":[108,0,0.4067],"khonner":[31,0,0.0],"kielin":[5,0,0.0],"kingstun":[15,0,0.0],"klyde":[278,0,0.4888],"kreyton":[10,0,0.0],"krishav":[296,0,0.4943],"kydin":[19,0,0.0],"kyndrick":[37,0,0.0],"kyrece":[10,0,0.0],"kyvan":[28,0,0.0],"landonn":[15,0,0.0],"leathan":[15,0,0.0],"leeson":[33,0,0.0],"leeum":[84,0,0.0],"leighlan":[5,0,0.0],"leium":[42,0,0.0],"lenoxx":[119,0,0.4151],"logunn":[5,0,0.0],"luck":[21,0,0.0],"lukka":[159,0,0.4403],"lyjah":[5,0,0.0],"madrox":[11,0,0.0],"mahan":[94,0,0.0],"mahib":[16,0,0.0],"massen":[10,0,0.0],"maung":[5,0,0.0],"mercutio":[17,0,0.0],"meshal":[51,0,0.0],"milosh":[5,0,0.0],"mingus":[5,0,0.0],"mishary":[15,0,0.0],"mithran":[238,0,0.4753],"moctar":[10,0,0.0],"motez":[5,0,0.0],"moyosoreoluwa":[17,17,0.0],"mugilan":[5,0,0.0],"mukil":[5,0,0.0],"munasar":[128,0,0.4214],"murdoc":[43,0,0.0],"myheir":[188,0,0.4548],"nalan":[122,0,0.4173],"nayson":[81,0,0.0],"neerav":[60,0,0.0],"nilmar":[36,0,0.0],"nivedh":[66,0,0.0],"nixson":[65,0,0.0],"nixxon":[153,0,0.4369],"nuraz":[5,0,0.0],"nyzae":[10,0,0.0],"olbin":[5,0,0.0],"oli":[125,17,0.3789],"oluwatise":[51,23,0.0],"padon":[5,0,0.0],"philant":[14,0,0.0],"phinley":[31,77,0.29],"pramit":[5,0,0.0],"praxton":[47,0,0.0],"quannell":[5,0,0.0],"quinncy":[15,10,0.0],"quinnell":[5,0,0.0],"quintavian":[5,0,0.0],"radric":[10,0,0.0],"rais":[5,0,0.0],"rameir":[35,0,0.0],"ramire":[22,0,0.0],"ramson":[5,0,0.0],"raymeir":[15,0,0.0],"reydavid":[12,0,0.0],"reydon":[5,0,0.0],"riaan":[1754,0,0.6488],"ribhi":[5,0,0.0],"rodson":[5,0,0.0],"roxton":[25,0,0.0],"rykar":[100,0,0.4],"ryuu":[52,0,0.0],"sadarion":[5,0,0.0],"sahen":[5,0,0.0],"sahibjot":[38,0,0.0],"salahaldeen":[5,0,0.0],"samhith":[45,0,0.0],"saryan":[5,0,0.0],"seangabriel":[5,0,0.0],"seanjohn":[5,0,0.0],"semere":[10,0,0.0],"serj":[22,0,0.0],"shaarav":[83,0,0.0],"shael":[36,0,0.0],"shakye":[5,0,0.0],"sharvil":[278,0,0.4888],"simione":[5,0,0.0],"sirvon":[5,0,0.0],"smyan":[48,0,0.0],"somil":[5,0,0.0],"sonic":[13,0,0.0],"srisai":[5,0,0.0],"sujan":[38,0,0.0],"symeir":[34,0,0.0],"synceir":[5,0,0.0],"taelan":[12,0,0.0],"taksh":[198,0,0.4593],"tavern":[5,0,0.0],"tegon":[5,0,0.0],"temur":[72,0,0.0],"thiego":[5,0,0.0],"traevyn":[15,0,0.0],"traison":[11,0,0.0],"tred":[10,0,0.0],"tredyn":[26,0,0.0],"treyston":[5,0,0.0],"truce":[289,10,0.4786],"truen":[87,0,0.0],"tryg":[31,0,0.0],"tyjier":[5,0,0.0],"tymarius":[5,0,0.0],"tyzon":[5,0,0.0],"vanderlei":[11,0,0.0],"vaylen":[94,15,0.3514],"vedad":[56,0,0.0],"vedansh":[494,0,0.5387],"vladik":[5,0,0.0],"vukasin":[5,0,0.0],"waiz":[10,0,0.0],"wanderlei":[5,0,0.0],"weslin":[22,0,0.0],"wilde":[142,12,0.4034],"xaidyn":[146,0,0.4329],"xaine":[122,0,0.4173],"xylar":[5,0,0.0],"xzaevion":[5,0,0.0],"yadian":[5,0,0.0],"yaidel":[15,0,0.0],"yaqoob":[73,0,0.0],"yasen":[11,0,0.0],"yashdeep":[5,0,0.0],"yashmit":[5,0,0.0],"yasmany":[10,0,0.0],"yatharth":[17,0,0.0],"yeferson":[116,0,0.4129],"yeiden":[319,0,0.5008],"yelisey":[5,0,0.0],"yeremiah":[49,0,0.0],"yestin":[5,0,0.0],"yll":[5,0,0.0],"yohaan":[89,0,0.0],"yosel":[10,0,0.0],"yosman":[5,0,0.0],"yuchen":[105,18,0.3568],"yunes":[25,0,0.0],"zacarion":[11,0,0.0],"zachai":[40,0,0.0],"zadiel":[125,0,0.4194],"zadon":[10,0,0.0],"zahmere":[28,0,0.0],"zakria":[16,0,0.0],"zalon":[11,0,0.0],"zamarien":[14,0,0.0],"zamonte":[16,0,0.0],"zao":[32,0,0.0],"zayland":[35,0,0.0],"zecharyah":[10,0,0.0],"zekariah":[20,0,0.0],"zepplin":[117,0,0.4136],"zereon":[11,0,0.0],"zhyair":[37,0,0.0],"zlatan":[230,0,0.4723],"zykell":[26,0,0.0],"zyran":[49,0,0.0],"zyreion":[5,0,0.0],"zyvion":[5,0,0.0],"tynlee":[0,446,0.5299],"khloei":[0,118,0.4144],"tensley":[0,286,0.4913],"rossibell":[0,17,0.0],"solanch":[0,28,0.0],"malillany":[0,152,0.4364],"emonii":[0,142,0.4305],"neytiri":[0,220,0.4685],"jazae":[0,75,0.0],"winry":[0,1064,0.6054],"addalynne":[0,145,0.4323],"alhia":[0,21,0.0],"armonii":[27,181,0.4034],"emmelina":[0,102,0.4017],"geleah":[0,20,0.0],"tenli":[0,32,0.0],"bethenny":[0,84,0.0],"kenzly":[0,194,0.4576],"kynzlie":[0,228,0.4716],"naleigh":[0,52,0.0],"paisyn":[0,264,0.4843],"elyzah":[0,78,0.0],"koraline":[0,479,0.5361],"name":[23,11,0.0],"olyviah":[0,36,0.0],"reighlynn":[0,254,0.481],"tynleigh":[0,154,0.4375],"addalyne":[0,122,0.4173],"anberlyn":[0,78,0.0],"ariabella":[0,236,0.4746],"avaiyah":[0,158,0.4397],"chrissette":[0,22,0.0],"collyns":[0,674,0.5657],"fatimazahra":[0,103,0.4026],"kailaya":[0,84,0.0],"kollins":[35,954,0.5778],"mahrosh":[0,74,0.0],"naleia":[0,127,0.4208],"reemas":[0,56,0.0],"sookie":[0,63,0.0],"vaya":[0,135,0.4261],"celiana":[0,19,0.0],"emelynn":[0,188,0.4548],"evelet":[0,9,0.0],"hartleigh":[0,171,0.4466],"javeyah":[0,54,0.0],"jazayah":[0,80,0.0],"josenid":[0,31,0.0],"juiliana":[0,23,0.0],"juleena":[0,9,0.0],"kanylah":[0,136,0.4267],"maielle":[0,20,0.0],"mayukha":[0,160,0.4408],"millani":[0,127,0.4208],"mishika":[0,452,0.531],"rozalie":[0,66,0.0],"ryleighann":[0,35,0.0],"sui":[0,91,0.0],"sukhleen":[0,14,0.0],"tinslee":[0,411,0.5228],"yahvi":[0,96,0.0],"yaila":[0,20,0.0],"zaydie":[0,59,0.0],"agrima":[0,13,0.0],"ahriyah":[0,155,0.4381],"aliiyah":[0,8,0.0],"azula":[0,600,0.5556],"baiya":[0,13,0.0],"bentlea":[0,8,0.0],"breyelle":[0,46,0.0],"ceriyah":[0,80,0.0],"cymphony":[0,30,0.0],"dieynaba":[0,29,0.0],"dynver":[53,350,0.4525],"ellody":[0,78,0.0],"emiliya":[0,139,0.4286],"emuna":[0,79,0.0],"enajiah":[0,8,0.0],"evoleht":[0,171,0.4466],"hailo":[0,116,0.4129],"harloe":[0,63,0.0],"heldana":[0,37,0.0],"honestii":[0,158,0.4397],"insiya":[0,120,0.4158],"jamilyah":[0,8,0.0],"janielys":[0,78,0.0],"kadira":[0,18,0.0],"karmynn":[0,68,0.0],"kinli":[0,25,0.0],"kiralee":[0,20,0.0],"koli":[13,8,0.0],"lilyah":[0,46,0.0],"mahlaya":[0,65,0.0],"malinalli":[0,25,0.0],"mckinsley":[0,237,0.4749],"muniba":[0,20,0.0],"naiyla":[0,23,0.0],"paysli":[0,25,0.0],"petal":[0,30,0.0],"sahanna":[0,38,0.0],"saraji":[0,15,0.0],"sopheya":[0,19,0.0],"tarijah":[0,8,0.0],"tinzley":[0,148,0.4341],"vedanshi":[0,152,0.4364],"veya":[0,117,0.4136],"vung":[0,177,0.4496],"yaara":[0,67,0.0],"zaliya":[0,87,0.0],"zhuri":[0,1835,0.6527],"zylee":[0,174,0.4481],"aareona":[0,7,0.0],"adalayde":[0,13,0.0],"adaleena":[0,112,0.4098],"amairah":[0,101,0.4009],"analyz":[0,7,0.0],"anjeliett":[0,7,0.0],"armiya":[0,67,0.0],"attalia":[0,38,0.0],"aylynn":[0,31,0.0],"brees":[215,38,0.4084],"brennley":[0,102,0.4017],"caylinn":[0,7,0.0],"copelyn":[21,191,0.4192],"coralyne":[0,48,0.0],"crisette":[0,7,0.0],"daisymae":[0,135,0.4261],"dannaly":[0,31,0.0],"daylani":[0,328,0.5032],"daymi":[0,7,0.0],"delaili":[0,7,0.0],"dubraska":[0,7,0.0],"ellye":[0,22,0.0],"emyiah":[0,52,0.0],"giyanna":[0,55,0.0],"guilliana":[0,7,0.0],"hartlyn":[0,248,0.4789],"hazelynn":[0,427,0.5261],"isabelah":[0,13,0.0],"ishwari":[0,14,0.0],"jenisys":[0,19,0.0],"kaashvi":[0,136,0.4267],"kalashia":[0,7,0.0],"kamella":[0,70,0.0],"kealynn":[0,12,0.0],"kerlin":[0,12,0.0],"keylli":[0,12,0.0],"lochlynn":[0,67,0.0],"lunabella":[0,174,0.4481],"luxi":[0,12,0.0],"lyliah":[0,68,0.0],"lyndin":[0,44,0.0],"lynli":[0,19,0.0],"macilynn":[0,69,0.0],"makenzii":[0,38,0.0],"makynleigh":[0,105,0.4042],"malaun":[0,32,0.0],"malillani":[0,7,0.0],"maliyani":[0,42,0.0],"marayla":[0,12,0.0],"mckenzii":[0,14,0.0],"mehjabeen":[0,23,0.0],"monzeratt":[0,7,0.0],"naledi":[0,55,0.0],"nazari":[81,117,0.2714],"nechy":[0,56,0.0],"nesia":[0,18,0.0],"noriana":[0,39,0.0],"oluwasemilore":[98,85,0.2423],"paesyn":[0,21,0.0],"paetynn":[0,48,0.0],"phenyx":[35,116,0.3348],"rosealyn":[0,102,0.4017],"rylenn":[0,47,0.0],"sajda":[0,40,0.0],"sanchi":[0,12,0.0],"tenlie":[0,20,0.0],"tennley":[0,62,0.0],"tinleigh":[0,328,0.5032],"tinzlee":[0,89,0.0],"yoona":[0,128,0.4214],"yorley":[0,136,0.4267],"zriah":[0,7,0.0],"zykayla":[0,13,0.0],"zynah":[0,41,0.0],"abela":[0,22,0.0],"adallyn":[0,51,0.0],"adalyna":[0,176,0.4491],"addisin":[0,35,0.0],"addysn":[0,6,0.0],"adelayne":[0,6,0.0],"ahnalee":[0,18,0.0],"ahnisty":[0,6,0.0],"aidalyn":[0,36,0.0],"aiyani":[0,24,0.0],"akyria":[0,6,0.0],"aleemah":[0,45,0.0],"alianys":[0,149,0.4346],"allieanna":[0,30,0.0],"alyka":[0,6,0.0],"amyliah":[0,11,0.0],"aneeqa":[0,6,0.0],"anleigh":[0,6,0.0],"annalin":[0,20,0.0],"architha":[0,6,0.0],"arielyz":[0,17,0.0],"ariyunna":[0,6,0.0],"aveleen":[0,83,0.0],"avereigh":[0,185,0.4534],"averylynn":[0,29,0.0],"ayati":[0,6,0.0],"aydree":[0,16,0.0],"aydrianna":[0,27,0.0],"ayleigh":[0,48,0.0],"ayvrie":[0,16,0.0],"bellasophia":[0,11,0.0],"benelli":[22,217,0.4319],"bixby":[20,17,0.0],"braelie":[0,44,0.0],"breelee":[0,11,0.0],"brithny":[0,6,0.0],"bryndal":[0,50,0.0],"caselynn":[0,63,0.0],"childnotnamed":[0,6,0.0],"coralina":[0,53,0.0],"daeun":[0,6,0.0],"dahnya":[0,13,0.0],"dannaka":[0,6,0.0],"dannely":[0,34,0.0],"daryna":[0,73,0.0],"dearie":[0,96,0.0],"delajah":[0,6,0.0],"delilha":[0,6,0.0],"denylah":[0,86,0.0],"dezzarae":[0,6,0.0],"dilyla":[0,6,0.0],"ealyn":[0,12,0.0],"eilynn":[0,6,0.0],"elaia":[0,251,0.4799],"emalyne":[0,42,0.0],"emellia":[0,26,0.0],"emelya":[0,16,0.0],"emmelin":[0,24,0.0],"emmrie":[0,59,0.0],"enalina":[0,16,0.0],"ereny":[0,6,0.0],"esmi":[0,133,0.4248],"faya":[0,98,0.0],"haizley":[0,836,0.5844],"haliana":[0,6,0.0],"haydi":[0,6,0.0],"hazelee":[0,325,0.5024],"hikma":[0,108,0.4067],"ilhaan":[0,17,0.0],"inci":[0,25,0.0],"innessa":[0,6,0.0],"ivyunna":[0,14,0.0],"ixareli":[0,6,0.0],"jahlissa":[0,6,0.0],"jahmira":[0,12,0.0],"janihya":[0,6,0.0],"japneet":[0,52,0.0],"jasilynn":[0,12,0.0],"jasya":[0,11,0.0],"jaydelyn":[0,53,0.0],"jaylamarie":[0,13,0.0],"jaylanni":[0,173,0.4476],"jayliany":[0,11,0.0],"jazlean":[0,6,0.0],"jenessis":[0,16,0.0],"jeraldyn":[0,6,0.0],"jerely":[0,6,0.0],"jeriana":[0,6,0.0],"jhourni":[0,58,0.0],"jisha":[0,68,0.0],"kamiyha":[0,6,0.0],"kamyree":[0,6,0.0],"kamyrie":[0,11,0.0],"karizmah":[0,6,0.0],"kawsar":[0,99,0.0],"kayleeanne":[0,14,0.0],"kaymani":[0,49,0.0],"kayzlee":[0,282,0.49],"kemariyah":[0,6,0.0],"kevaeh":[0,6,0.0],"khaelyn":[0,18,0.0],"khaleia":[0,44,0.0],"khloye":[0,6,0.0],"kimyia":[0,6,0.0],"kinzlie":[0,162,0.4419],"kiylie":[0,6,0.0],"kylaya":[0,48,0.0],"kynnlie":[0,6,0.0],"kynzley":[0,186,0.4539],"laliyah":[0,11,0.0],"layelle":[0,46,0.0],"lazariya":[0,6,0.0],"leiahna":[0,6,0.0],"leilanii":[0,159,0.4403],"lexanie":[0,12,0.0],"lianett":[0,6,0.0],"lillyaunna":[0,11,0.0],"lilyiana":[0,6,0.0],"liylah":[0,133,0.4248],"lizsandra":[0,6,0.0],"logynn":[0,63,0.0],"loxley":[133,462,0.4309],"lucillia":[0,93,0.0],"luxx":[92,23,0.3297],"lyannah":[0,11,0.0],"madilene":[0,6,0.0],"maesie":[0,92,0.0],"mafata":[0,13,0.0],"mahal":[0,6,0.0],"mairenn":[0,6,0.0],"makeira":[0,6,0.0],"maleaya":[0,6,0.0],"malinah":[0,25,0.0],"maybelin":[0,18,0.0],"mckynli":[0,11,0.0],"miabelle":[0,98,0.0],"mickaylah":[0,6,0.0],"miika":[0,6,0.0],"milaun":[0,24,0.0],"mishall":[0,6,0.0],"nabella":[0,38,0.0],"nayloni":[0,43,0.0],"nayome":[0,11,0.0],"nayonika":[0,14,0.0],"neomy":[0,6,0.0],"nevaha":[0,6,0.0],"nilani":[0,214,0.4661],"nylayah":[0,86,0.0],"omiyah":[0,21,0.0],"pacifica":[0,6,0.0],"pahal":[0,38,0.0],"paisely":[0,98,0.0],"phoenixx":[75,54,0.2454],"prakriti":[0,102,0.4017],"pushti":[0,6,0.0],"quinlee":[0,279,0.4891],"quinnley":[0,392,0.5187],"raiyah":[0,130,0.4228],"rajana":[0,11,0.0],"rayleah":[0,21,0.0],"reja":[0,6,0.0],"rimya":[0,6,0.0],"ruaa":[0,17,0.0],"ruah":[12,152,0.4106],"rubyrose":[0,107,0.4059],"ruslana":[0,11,0.0],"rylii":[0,6,0.0],"saanvika":[0,255,0.4813],"sachika":[0,11,0.0],"sadora":[0,21,0.0],"salea":[0,11,0.0],"sameriah":[0,6,0.0],"samiira":[0,6,0.0],"samriddhi":[0,94,0.0],"sanylah":[0,64,0.0],"savi":[11,201,0.4411],"shanvi":[0,406,0.5217],"sharleez":[0,11,0.0],"shasmeen":[0,25,0.0],"skilah":[0,25,0.0],"sophiaann":[0,17,0.0],"sukie":[0,12,0.0],"swasti":[0,30,0.0],"swayzie":[0,315,0.4997],"tabata":[0,6,0.0],"tamariana":[0,6,0.0],"tarajhi":[0,6,0.0],"tazkia":[0,6,0.0],"tazlyn":[0,6,0.0],"tenly":[0,27,0.0],"tyjanay":[0,6,0.0],"tylayah":[0,43,0.0],"vidula":[0,6,0.0],"xinyu":[0,30,0.0],"xyliah":[0,31,0.0],"yashaswini":[0,6,0.0],"yaxiry":[0,6,0.0],"zabdy":[0,6,0.0],"zairy":[0,11,0.0],"zaiyah":[0,200,0.4602],"zakarah":[0,6,0.0],"zamoni":[0,66,0.0],"zarihya":[0,12,0.0],"ziannah":[0,14,0.0],"zoeigh":[0,75,0.0],"zoeylynn":[0,34,0.0],"zurielle":[0,160,0.4408],"zyda":[0,6,0.0],"zynae":[0,24,0.0],"zyriyah":[0,16,0.0],"zyyanna":[0,6,0.0],"aaditri":[0,89,0.0],"aalya":[0,67,0.0],"aarnavi":[0,71,0.0],"abigailmarie":[0,11,0.0],"abyssinia":[0,56,0.0],"adalicia":[0,50,0.0],"adavia":[0,5,0.0],"addelina":[0,26,0.0],"addelyne":[0,40,0.0],"addelynne":[0,38,0.0],"addileigh":[0,72,0.0],"addington":[8,10,0.0],"addiston":[0,5,0.0],"addlee":[0,35,0.0],"addylin":[0,153,0.4369],"addylyn":[0,52,0.0],"adelane":[0,5,0.0],"adriela":[0,71,0.0],"adry":[0,12,0.0],"afina":[0,41,0.0],"ahaana":[0,275,0.4879],"ahlena":[0,21,0.0],"ahmiah":[0,34,0.0],"ahmyiah":[0,12,0.0],"ailena":[0,25,0.0],"airalynn":[0,57,0.0],"airyona":[0,5,0.0],"aishlyn":[0,5,0.0],"alaeyah":[0,66,0.0],"alajhia":[0,5,0.0],"alanii":[0,311,0.4986],"aleahya":[0,21,0.0],"aleara":[0,12,0.0],"aleiha":[0,5,0.0],"alexyanna":[0,5,0.0],"aleynna":[0,86,0.0],"aliveya":[0,5,0.0],"alixa":[0,10,0.0],"allenah":[0,5,0.0],"alliannah":[0,39,0.0],"aluna":[0,320,0.501],"amahia":[0,264,0.4843],"amarhi":[0,5,0.0],"ameeyah":[0,30,0.0],"ameleah":[0,17,0.0],"amiia":[0,15,0.0],"amilliona":[0,15,0.0],"amirea":[0,5,0.0],"amitiel":[0,38,0.0],"amorrah":[0,10,0.0],"amukta":[0,5,0.0],"anaisabella":[0,10,0.0],"analily":[0,5,0.0],"anamar":[0,5,0.0],"anamia":[0,5,0.0],"anayis":[0,5,0.0],"andalynn":[0,18,0.0],"aneysha":[0,5,0.0],"angelah":[0,5,0.0],"aniaha":[0,5,0.0],"anisley":[0,5,0.0],"annibella":[0,12,0.0],"annslie":[0,5,0.0],"anupriya":[0,5,0.0],"anvesha":[0,17,0.0],"anyria":[0,11,0.0],"aquetzalli":[0,29,0.0],"aracellie":[0,5,0.0],"arainna":[0,10,0.0],"arayiah":[0,43,0.0],"areigha":[0,5,0.0],"ariee":[0,41,0.0],"arionah":[0,22,0.0],"ariyani":[0,18,0.0],"armonnie":[0,5,0.0],"arriannah":[0,5,0.0],"arriella":[0,56,0.0],"arys":[24,27,0.0],"ashvi":[0,105,0.4042],"audriella":[0,198,0.4593],"aunisti":[0,17,0.0],"aunjel":[0,5,0.0],"aveda":[0,21,0.0],"averlee":[0,166,0.444],"avilee":[0,18,0.0],"avlyn":[0,30,0.0],"awbrey":[0,12,0.0],"axiry":[0,5,0.0],"ayishah":[0,11,0.0],"aylanna":[0,24,0.0],"ayleena":[0,5,0.0],"aylena":[0,15,0.0],"ayriah":[0,28,0.0],"ayslyn":[0,5,0.0],"azaelia":[0,116,0.4129],"azaniah":[5,17,0.0],"azariea":[0,10,0.0],"azaryia":[0,11,0.0],"azury":[0,5,0.0],"azyla":[0,166,0.444],"azyrah":[0,22,0.0],"baelynn":[0,143,0.4311],"bailiegh":[0,5,0.0],"bellamae":[0,90,0.0],"bentlei":[48,27,0.0],"birkley":[0,71,0.0],"bracelynn":[0,5,0.0],"brayle":[0,5,0.0],"breigha":[0,5,0.0],"breylee":[0,16,0.0],"brianalee":[0,5,0.0],"briela":[0,97,0.0],"brilei":[0,12,0.0],"brilynne":[0,10,0.0],"britlynn":[0,19,0.0],"brooksley":[0,20,0.0],"brookyln":[0,29,0.0],"bryniah":[0,5,0.0],"byntlee":[27,5,0.0],"cadhla":[0,35,0.0],"cairah":[0,5,0.0],"calasia":[0,5,0.0],"caliese":[0,5,0.0],"cariyah":[0,82,0.0],"carlianna":[0,10,0.0],"carmynn":[0,24,0.0],"casslyn":[0,5,0.0],"charleah":[0,5,0.0],"charlianne":[0,38,0.0],"charlisia":[0,5,0.0],"chidumebi":[0,5,0.0],"child":[78,53,0.2521],"clarah":[0,16,0.0],"colbee":[6,34,0.0],"corabella":[0,27,0.0],"coralynne":[0,17,0.0],"couri":[0,5,0.0],"dah":[20,17,0.0],"dakyrah":[0,5,0.0],"daniyla":[0,115,0.4121],"dannay":[0,10,0.0],"dannilyn":[0,5,0.0],"danykah":[0,5,0.0],"dariany":[0,86,0.0],"darisley":[0,5,0.0],"daviney":[0,13,0.0],"dayanie":[0,12,0.0],"deethya":[0,72,0.0],"dekiyah":[0,10,0.0],"delainah":[0,5,0.0],"delaylah":[0,55,0.0],"dellanie":[0,5,0.0],"demariona":[0,5,0.0],"demii":[0,113,0.4106],"denaiya":[0,10,0.0],"desinae":[0,5,0.0],"devannie":[0,5,0.0],"deveah":[0,89,0.0],"deveshi":[0,5,0.0],"deylani":[0,157,0.4392],"dhanna":[0,11,0.0],"dilylah":[0,15,0.0],"dioseline":[0,5,0.0],"dmyah":[0,23,0.0],"draylee":[0,5,0.0],"dreniyah":[0,5,0.0],"eadyn":[0,5,0.0],"eileigh":[0,17,0.0],"eillie":[0,5,0.0],"elenah":[0,60,0.0],"eliotte":[0,31,0.0],"elisabeta":[0,5,0.0],"elishka":[0,10,0.0],"eliyahna":[0,39,0.0],"ellanah":[0,5,0.0],"ellasophia":[0,5,0.0],"emmariah":[0,15,0.0],"emryn":[64,850,0.5507],"emslee":[0,93,0.0],"endsley":[0,28,0.0],"enesa":[0,5,0.0],"erianny":[0,54,0.0],"erihanna":[0,5,0.0],"erilynn":[0,69,0.0],"eryss":[0,133,0.4248],"escarlett":[0,34,0.0],"eszter":[0,5,0.0],"etnie":[0,5,0.0],"evaeh":[0,5,0.0],"evaly":[0,57,0.0],"eveanna":[0,21,0.0],"evelinn":[0,15,0.0],"everlie":[0,806,0.5813],"evlin":[0,23,0.0],"evra":[0,26,0.0],"eyani":[0,10,0.0],"fynley":[0,74,0.0],"gerniya":[0,5,0.0],"gerryn":[0,5,0.0],"ghaida":[0,23,0.0],"giavannah":[0,18,0.0],"graysie":[0,12,0.0],"greidi":[0,5,0.0],"haania":[0,5,0.0],"haddasah":[0,10,0.0],"hanalee":[0,5,0.0],"harpar":[0,5,0.0],"hartly":[0,13,0.0],"hatley":[0,125,0.4194],"hawwa":[0,95,0.0],"haylan":[0,10,0.0],"hazely":[0,453,0.5312],"henli":[0,93,0.0],"heyab":[0,50,0.0],"hoor":[0,89,0.0],"hudy":[0,5,0.0],"ilhana":[0,5,0.0],"imyah":[0,5,0.0],"inass":[0,5,0.0],"irah":[78,55,0.2491],"isahbella":[0,5,0.0],"ishbel":[0,10,0.0],"ismat":[0,5,0.0],"ivani":[0,113,0.4106],"iylan":[0,17,0.0],"izybella":[0,13,0.0],"jacarla":[0,5,0.0],"jaciya":[0,5,0.0],"jadielys":[0,5,0.0],"jaedalyn":[0,5,0.0],"jaelea":[0,5,0.0],"jahzlynn":[0,5,0.0],"jailea":[0,5,0.0],"jainah":[0,5,0.0],"jaiylah":[0,28,0.0],"jakalah":[0,5,0.0],"jakeriya":[0,5,0.0],"jamiley":[0,10,0.0],"janahla":[0,12,0.0],"janalise":[0,17,0.0],"jannali":[0,10,0.0],"jasmijn":[0,5,0.0],"jasreet":[0,57,0.0],"jayanne":[0,5,0.0],"jaylianie":[0,48,0.0],"jaynalis":[0,5,0.0],"jayonni":[19,53,0.0],"jdah":[0,5,0.0],"jeilany":[0,97,0.0],"jenaiah":[0,153,0.4369],"jennabelle":[0,26,0.0],"jennevy":[0,5,0.0],"jenyiah":[0,5,0.0],"jessiyah":[0,11,0.0],"jeveah":[0,26,0.0],"jewely":[0,5,0.0],"jeylanie":[0,10,0.0],"jhalia":[0,5,0.0],"jhoselyne":[0,5,0.0],"jhosselyn":[0,5,0.0],"jianah":[0,16,0.0],"jiavanna":[0,35,0.0],"jinayah":[0,5,0.0],"jiyanna":[0,15,0.0],"jnyla":[0,27,0.0],"jolieann":[0,5,0.0],"josalina":[0,11,0.0],"joshika":[0,5,0.0],"joyden":[5,5,0.0],"juilianna":[0,5,0.0],"julianys":[0,59,0.0],"julivette":[0,5,0.0],"kadenze":[0,5,0.0],"kaedynn":[11,16,0.0],"kaery":[0,5,0.0],"kahmyah":[0,5,0.0],"kaleina":[0,5,0.0],"kaliyanna":[0,10,0.0],"kamielle":[0,12,0.0],"kamsiyochi":[5,16,0.0],"karmann":[0,22,0.0],"karstin":[10,5,0.0],"karyana":[0,5,0.0],"kasydi":[0,5,0.0],"kaydia":[0,5,0.0],"kaylisa":[0,34,0.0],"kaylix":[58,10,0.0],"kayvonna":[0,5,0.0],"kayzia":[0,12,0.0],"kealah":[0,5,0.0],"kealana":[0,5,0.0],"keilia":[0,5,0.0],"keiralee":[0,5,0.0],"kelaijah":[0,5,0.0],"kenadey":[0,5,0.0],"kendayl":[0,5,0.0],"keslynn":[0,48,0.0],"khaloni":[0,163,0.4424],"khamyla":[0,13,0.0],"kharli":[0,79,0.0],"khendal":[0,5,0.0],"khileigh":[0,16,0.0],"khimora":[0,5,0.0],"khloeann":[0,19,0.0],"khloemae":[0,5,0.0],"kholie":[0,5,0.0],"khylia":[0,10,0.0],"kieralyn":[0,5,0.0],"klowey":[0,5,0.0],"kmiya":[0,10,0.0],"kohlee":[0,5,0.0],"kollyns":[0,1083,0.6069],"kyerstin":[0,5,0.0],"kylise":[0,20,0.0],"labreyah":[0,5,0.0],"laelynn":[0,297,0.4946],"lahla":[0,5,0.0],"laighton":[0,5,0.0],"lailiana":[0,16,0.0],"lanayja":[0,5,0.0],"lanvy":[0,5,0.0],"lauralai":[0,28,0.0],"lauryne":[0,5,0.0],"laylanna":[0,16,0.0],"leaysia":[0,5,0.0],"legacie":[16,298,0.4739],"leilamarie":[0,15,0.0],"leveah":[0,85,0.0],"lianys":[0,30,0.0],"lilirose":[0,5,0.0],"liliyanna":[0,5,0.0],"lillykate":[0,5,0.0],"lissianna":[0,5,0.0],"liyat":[0,138,0.428],"lizabella":[0,55,0.0],"luelle":[0,77,0.0],"luley":[0,10,0.0],"lunabelle":[0,267,0.4853],"luxe":[123,163,0.28],"luxy":[0,5,0.0],"luzdari":[0,5,0.0],"lyka":[0,10,0.0],"lyliann":[0,5,0.0],"lyllah":[0,56,0.0],"maciee":[0,25,0.0],"madaly":[0,16,0.0],"madisongrace":[0,17,0.0],"maireli":[0,5,0.0],"makelah":[0,5,0.0],"makinleigh":[0,95,0.0],"makinlie":[0,10,0.0],"malajia":[0,5,0.0],"malany":[0,15,0.0],"malayha":[0,16,0.0],"malei":[0,5,0.0],"malyha":[0,10,0.0],"maraiya":[0,35,0.0],"marali":[0,5,0.0],"mariaantonia":[0,20,0.0],"marlii":[0,35,0.0],"maryury":[0,5,0.0],"matilee":[0,5,0.0],"maylet":[0,16,0.0],"mayly":[0,5,0.0],"mayrely":[0,5,0.0],"meti":[0,5,0.0],"mikenley":[0,10,0.0],"mirya":[0,5,0.0],"misk":[0,462,0.5329],"mleah":[0,5,0.0],"mynasia":[0,5,0.0],"naeyli":[0,5,0.0],"naissa":[0,25,0.0],"naiylah":[0,16,0.0],"nanaadwoa":[0,5,0.0],"naryia":[0,10,0.0],"nashlly":[0,5,0.0],"natiley":[0,27,0.0],"natilynn":[0,36,0.0],"navaeha":[0,5,0.0],"navay":[0,5,0.0],"nayalis":[0,13,0.0],"naylen":[27,5,0.0],"neilla":[0,5,0.0],"nesma":[0,10,0.0],"nevaehtnes":[0,5,0.0],"nieva":[0,24,0.0],"nihad":[0,5,0.0],"nikte":[0,24,0.0],"nilayah":[0,44,0.0],"noureen":[0,37,0.0],"nylajah":[0,5,0.0],"oluwatomilola":[0,11,0.0],"orya":[0,27,0.0],"osnas":[0,5,0.0],"paislea":[0,95,0.0],"par":[0,15,0.0],"pariis":[0,15,0.0],"parishay":[0,27,0.0],"patyn":[0,5,0.0],"pessi":[0,29,0.0],"polaris":[0,44,0.0],"queency":[0,5,0.0],"raahi":[18,159,0.4039],"radiya":[0,39,0.0],"raileen":[0,5,0.0],"rashiyah":[0,10,0.0],"rasiyah":[0,15,0.0],"raylah":[0,83,0.0],"raymoni":[0,5,0.0],"razel":[0,5,0.0],"reeselyn":[0,10,0.0],"reginea":[0,5,0.0],"reinna":[0,21,0.0],"reverie":[0,471,0.5346],"rhileigh":[0,5,0.0],"rhilyn":[0,91,0.0],"rhylynn":[0,193,0.4571],"rikyah":[0,5,0.0],"riloh":[0,5,0.0],"rinka":[0,28,0.0],"rithanya":[0,126,0.4201],"riylee":[0,60,0.0],"rosaleah":[0,101,0.4009],"rouguiatou":[0,24,0.0],"ruchie":[0,10,0.0],"ruiqi":[0,5,0.0],"saadiyah":[0,5,0.0],"saaniyah":[0,11,0.0],"sadhvi":[0,5,0.0],"sahitya":[0,10,0.0],"sahiyah":[0,5,0.0],"sakthi":[0,10,0.0],"samare":[0,5,0.0],"sammiyah":[0,5,0.0],"sariaha":[0,5,0.0],"satyana":[0,12,0.0],"savannahlynn":[0,10,0.0],"seianna":[0,5,0.0],"semajae":[10,5,0.0],"serafima":[0,13,0.0],"seriena":[0,5,0.0],"setara":[0,5,0.0],"sheliya":[0,5,0.0],"shiny":[0,33,0.0],"shiphrah":[0,67,0.0],"shreyasi":[0,5,0.0],"shylei":[0,5,0.0],"sibelle":[0,10,0.0],"sidora":[0,5,0.0],"simarpreet":[0,15,0.0],"simia":[0,5,0.0],"sofee":[0,28,0.0],"sofiagrace":[0,38,0.0],"solach":[0,5,0.0],"solarah":[0,12,0.0],"solmary":[0,5,0.0],"sophiee":[0,17,0.0],"sophiyah":[0,20,0.0],"srikrithi":[0,5,0.0],"sucdi":[0,5,0.0],"suhailey":[0,10,0.0],"sukayna":[0,53,0.0],"sulaf":[0,29,0.0],"synneva":[0,5,0.0],"tahel":[0,10,0.0],"takiyla":[0,5,0.0],"talae":[0,5,0.0],"taryiah":[0,30,0.0],"tessalyn":[0,27,0.0],"timarah":[0,5,0.0],"tinnley":[0,12,0.0],"tomoka":[0,11,0.0],"tremiyah":[0,10,0.0],"vamika":[0,225,0.4704],"vanyah":[0,5,0.0],"wengel":[0,5,0.0],"xylie":[0,114,0.4114],"yailet":[0,5,0.0],"yanali":[0,10,0.0],"yarieli":[0,11,0.0],"yaroslava":[0,10,0.0],"yazlen":[0,5,0.0],"yeilen":[0,10,0.0],"yihan":[12,48,0.0],"yitel":[0,5,0.0],"yosilin":[0,5,0.0],"yosmairy":[0,5,0.0],"yukti":[0,10,0.0],"yuleiky":[0,5,0.0],"yureimy":[0,5,0.0],"zafina":[0,28,0.0],"zaionna":[0,10,0.0],"zaneria":[0,5,0.0],"zaraiah":[0,35,0.0],"zaveah":[0,211,0.4649],"zayannah":[0,5,0.0],"zerriah":[0,5,0.0],"zevaeh":[0,39,0.0],"zharya":[0,5,0.0],"ziclaly":[0,5,0.0],"zihanna":[0,10,0.0],"zmiyah":[0,15,0.0],"zoely":[0,37,0.0],"zuleymi":[0,27,0.0],"zulie":[0,27,0.0],"zyira":[0,5,0.0],"zylia":[0,55,0.0],"zylynn":[0,56,0.0],"zyonnah":[0,25,0.0],"vadhir":[273,0,0.4872],"jeffren":[89,0,0.0],"dastan":[324,0,0.5021],"neymar":[2844,5,0.6897],"kiaan":[2585,0,0.6825],"coopar":[14,0,0.0],"khaidyn":[155,0,0.4381],"miking":[322,0,0.5016],"avyan":[1234,0,0.6183],"gurtaj":[130,0,0.4228],"yanuel":[395,0,0.5193],"hezeki":[38,0,0.0],"jaxxen":[177,0,0.4496],"kyryn":[69,0,0.0],"weylyn":[197,24,0.418],"abem":[111,0,0.4091],"ayce":[771,6,0.5736],"aydain":[9,0,0.0],"baze":[55,0,0.0],"beckhem":[120,0,0.4158],"caysin":[94,0,0.0],"haaziq":[19,0,0.0],"jadyen":[15,0,0.0],"jasniel":[9,0,0.0],"makua":[9,0,0.0],"nox":[302,5,0.4893],"pistol":[63,19,0.0],"poseidon":[320,0,0.501],"raizo":[63,0,0.0],"shaddix":[26,0,0.0],"srihaas":[44,0,0.0],"talent":[19,0,0.0],"adrianno":[8,0,0.0],"axil":[128,0,0.4214],"beckum":[75,0,0.0],"benhur":[8,0,0.0],"breaker":[68,0,0.0],"colsten":[74,0,0.0],"devarsh":[84,0,0.0],"goodluck":[8,0,0.0],"jaasir":[14,0,0.0],"jahmell":[8,0,0.0],"jairden":[13,0,0.0],"jayrell":[14,0,0.0],"khonor":[15,0,0.0],"koldyn":[8,0,0.0],"kyier":[128,0,0.4214],"mytrell":[8,0,0.0],"ozil":[136,0,0.4267],"sahibdeep":[8,0,0.0],"smayan":[110,0,0.4083],"tenor":[33,0,0.0],"yoann":[30,0,0.0],"zamaurion":[8,0,0.0],"aceyn":[370,0,0.5136],"ahmire":[34,0,0.0],"alameen":[52,0,0.0],"arihaan":[98,0,0.0],"aws":[237,0,0.4749],"ayiden":[126,0,0.4201],"baize":[12,0,0.0],"bavly":[28,0,0.0],"braham":[12,0,0.0],"cadian":[7,0,0.0],"cayvion":[17,0,0.0],"chaysten":[7,0,0.0],"cormari":[13,0,0.0],"daimarion":[7,0,0.0],"demire":[18,0,0.0],"deriel":[52,0,0.0],"devaj":[28,0,0.0],"dradyn":[20,0,0.0],"eastan":[71,0,0.0],"erdi":[25,0,0.0],"graysin":[142,0,0.4305],"guilian":[7,0,0.0],"haydar":[56,0,0.0],"izekiel":[245,0,0.4778],"jahniel":[7,0,0.0],"jaizen":[43,0,0.0],"jaydean":[12,0,0.0],"jaydem":[33,0,0.0],"jefren":[18,0,0.0],"jemir":[54,0,0.0],"jozyah":[48,0,0.0],"jvontae":[7,0,0.0],"kabel":[58,0,0.0],"kartel":[132,0,0.4241],"kaycin":[36,0,0.0],"kayston":[126,0,0.4201],"kipten":[38,0,0.0],"kiptin":[12,0,0.0],"knolan":[136,0,0.4267],"lakhi":[37,0,0.0],"lealan":[18,0,0.0],"leim":[40,0,0.0],"mauer":[12,0,0.0],"navell":[17,0,0.0],"nikkoli":[7,0,0.0],"nyzair":[23,0,0.0],"nyzere":[22,0,0.0],"pragyan":[66,0,0.0],"princton":[7,0,0.0],"rajab":[13,0,0.0],"riott":[140,0,0.4292],"roony":[13,0,0.0],"ryerson":[87,0,0.0],"shaemus":[12,0,0.0],"shahzain":[215,0,0.4665],"silis":[31,0,0.0],"skyden":[44,0,0.0],"suheb":[35,0,0.0],"suheyb":[92,0,0.0],"suyog":[59,0,0.0],"taraj":[35,0,0.0],"tayem":[19,0,0.0],"tesher":[12,0,0.0],"traigh":[14,0,0.0],"trax":[24,0,0.0],"zaelon":[7,0,0.0],"zameir":[96,0,0.0],"zarious":[7,0,0.0],"zavyon":[12,0,0.0],"zevyn":[31,0,0.0],"aarib":[96,0,0.0],"abdelrhman":[6,0,0.0],"acheron":[73,0,0.0],"ahanu":[57,0,0.0],"ahian":[6,0,0.0],"aidanjames":[6,0,0.0],"aidenmichael":[6,0,0.0],"alhasan":[102,0,0.4017],"alizander":[6,0,0.0],"altay":[49,0,0.0],"amiliano":[137,0,0.4273],"arson":[128,0,0.4214],"aviraj":[345,0,0.5076],"awesome":[89,12,0.3532],"aydric":[33,0,0.0],"aymeric":[18,0,0.0],"azarious":[28,0,0.0],"bayze":[6,0,0.0],"beowulf":[77,0,0.0],"bodhin":[53,0,0.0],"brekkin":[6,0,0.0],"breontae":[6,0,0.0],"brom":[51,0,0.0],"cadillac":[6,0,0.0],"cadrian":[17,10,0.0],"casden":[11,0,0.0],"caylub":[6,0,0.0],"chezkel":[16,0,0.0],"coreyion":[6,0,0.0],"coyer":[41,0,0.0],"cung":[104,0,0.4034],"daidrian":[6,0,0.0],"demajae":[6,0,0.0],"demilade":[70,41,0.258],"derringer":[53,0,0.0],"draeson":[23,0,0.0],"draycen":[134,0,0.4254],"draysen":[90,0,0.0],"dreydin":[6,0,0.0],"eliason":[29,0,0.0],"eliyjah":[18,0,0.0],"elnatan":[47,0,0.0],"ethanjohn":[15,0,0.0],"ethanpaul":[6,0,0.0],"eurijah":[6,0,0.0],"finau":[6,5,0.0],"gambit":[68,0,0.0],"gersain":[6,0,0.0],"hadin":[6,0,0.0],"haruma":[20,0,0.0],"henos":[42,0,0.0],"het":[29,0,0.0],"ilyjah":[17,0,0.0],"izaeh":[6,0,0.0],"jacks":[69,0,0.0],"jacoury":[6,0,0.0],"jaetyn":[28,0,0.0],"jagjot":[6,0,0.0],"jahvel":[6,0,0.0],"jaisal":[6,0,0.0],"jakier":[6,0,0.0],"jakov":[22,0,0.0],"jankarlo":[12,0,0.0],"javare":[6,0,0.0],"jaydhen":[6,0,0.0],"jaylaun":[6,0,0.0],"jaymani":[36,0,0.0],"jaymez":[12,0,0.0],"jazavion":[24,0,0.0],"jeckson":[6,0,0.0],"jenzel":[11,0,0.0],"jesai":[31,0,0.0],"jexiel":[57,0,0.0],"jiho":[87,0,0.0],"jmir":[53,0,0.0],"joacim":[6,0,0.0],"josyiah":[43,0,0.0],"juelez":[14,0,0.0],"kahir":[23,0,0.0],"kailo":[504,16,0.5265],"kajetan":[11,0,0.0],"karrar":[24,0,0.0],"kaspian":[294,0,0.4937],"kayeden":[22,0,0.0],"kayro":[39,0,0.0],"kevari":[35,0,0.0],"kharter":[504,101,0.4635],"kojiro":[6,0,0.0],"korrion":[6,0,0.0],"krishang":[67,0,0.0],"kristiano":[73,0,0.0],"kyaw":[28,0,0.0],"laderian":[6,0,0.0],"lanxton":[27,0,0.0],"laterrion":[12,0,0.0],"lejend":[284,5,0.4837],"levii":[237,0,0.4749],"liamm":[17,0,0.0],"liav":[45,0,0.0],"lipman":[6,0,0.0],"lukyan":[32,0,0.0],"macks":[30,0,0.0],"mahsiah":[12,0,0.0],"majer":[58,0,0.0],"majok":[11,0,0.0],"marcjacob":[18,0,0.0],"masonjames":[24,0,0.0],"mekko":[35,0,0.0],"mouctar":[32,0,0.0],"myion":[18,0,0.0],"nasri":[98,5,0.383],"natanim":[31,0,0.0],"neer":[102,0,0.4017],"nidhish":[6,0,0.0],"nikali":[11,0,0.0],"noahh":[22,0,0.0],"norbu":[23,0,0.0],"nubaid":[35,0,0.0],"paramveer":[11,0,0.0],"paxtin":[68,0,0.0],"phinn":[23,0,0.0],"princejohn":[6,0,0.0],"rawly":[6,0,0.0],"rigg":[12,0,0.0],"rylund":[18,0,0.0],"samonte":[6,0,0.0],"samvit":[27,0,0.0],"serious":[12,0,0.0],"seyon":[128,0,0.4214],"shloke":[6,0,0.0],"shoumik":[6,0,0.0],"siale":[16,0,0.0],"sidak":[42,18,0.0],"statham":[55,0,0.0],"syedmuhammad":[12,0,0.0],"syier":[101,0,0.4009],"tahan":[23,0,0.0],"traeshon":[6,0,0.0],"traydon":[13,0,0.0],"trexton":[83,0,0.0],"trezden":[13,0,0.0],"trippton":[18,0,0.0],"turki":[135,0,0.4261],"vishak":[16,0,0.0],"xael":[71,12,0.0],"xzayden":[59,0,0.0],"xzayvian":[51,0,0.0],"yadon":[39,0,0.0],"yahweh":[107,0,0.4059],"yohel":[21,0,0.0],"yosniel":[24,0,0.0],"yuva":[57,0,0.0],"zaedon":[26,0,0.0],"zaevian":[16,0,0.0],"zerrion":[12,0,0.0],"zevi":[147,0,0.4335],"zhaiden":[16,0,0.0],"zhayden":[79,0,0.0],"zihan":[57,42,0.0],"aadhavan":[83,0,0.0],"aaryav":[277,0,0.4885],"aban":[44,0,0.0],"abdilahi":[10,0,0.0],"abdulhameed":[21,0,0.0],"abdulmalek":[5,0,0.0],"abdulwadud":[5,0,0.0],"abian":[20,0,0.0],"aciano":[11,0,0.0],"adheesh":[11,0,0.0],"adyant":[81,0,0.0],"aidenjoseph":[5,0,0.0],"aizeah":[11,0,0.0],"ajan":[82,0,0.0],"ajitesh":[10,0,0.0],"akadian":[5,0,0.0],"alhan":[17,0,0.0],"angelmiguel":[12,0,0.0],"anirud":[5,0,0.0],"antravion":[5,0,0.0],"anudeep":[5,0,0.0],"arinjay":[16,0,0.0],"arrius":[38,0,0.0],"attis":[21,0,0.0],"avneesh":[58,0,0.0],"axcell":[5,0,0.0],"ayansh":[993,0,0.5994],"ayedan":[11,0,0.0],"ayele":[5,5,0.0],"azi":[107,0,0.4059],"azlaan":[242,0,0.4768],"azmeer":[21,0,0.0],"benten":[18,0,0.0],"bhargava":[5,0,0.0],"bostin":[37,0,0.0],"brannick":[10,0,0.0],"bravon":[5,0,0.0],"brayshaun":[5,0,0.0],"brayven":[61,0,0.0],"brec":[12,0,0.0],"brink":[28,0,0.0],"bronxton":[40,0,0.0],"brookston":[114,0,0.4114],"brycenn":[10,0,0.0],"brycyn":[34,0,0.0],"bryker":[110,0,0.4083],"calian":[287,0,0.4916],"camarii":[5,0,0.0],"camaury":[5,0,0.0],"carlens":[84,0,0.0],"cashden":[52,0,0.0],"cashous":[11,0,0.0],"caylum":[102,0,0.4017],"charleson":[26,0,0.0],"colsyn":[173,0,0.4476],"comari":[11,0,0.0],"copelin":[64,0,0.0],"corentin":[5,0,0.0],"daian":[35,0,0.0],"damarkis":[15,0,0.0],"damori":[25,0,0.0],"darmani":[10,0,0.0],"davuan":[5,0,0.0],"daxyn":[60,0,0.0],"dayland":[5,0,0.0],"deanjelo":[5,0,0.0],"deeken":[10,0,0.0],"dejavion":[5,0,0.0],"delcan":[12,0,0.0],"dhanvin":[93,0,0.0],"dharmik":[12,0,0.0],"dhruvin":[56,0,0.0],"divyam":[64,0,0.0],"dmar":[5,0,0.0],"draike":[5,0,0.0],"draiman":[11,0,0.0],"dreylin":[11,0,0.0],"dreyten":[5,0,0.0],"dylanjacob":[5,0,0.0],"ehaan":[99,0,0.0],"eito":[85,0,0.0],"elikem":[28,0,0.0],"elyus":[16,0,0.0],"erison":[10,0,0.0],"esekiel":[5,0,0.0],"etash":[5,0,0.0],"eternal":[17,0,0.0],"exar":[11,0,0.0],"eylan":[95,0,0.0],"eziel":[110,0,0.4083],"eziquel":[5,0,0.0],"ezreal":[207,0,0.4632],"ezykiel":[79,0,0.0],"fhernando":[5,0,0.0],"garvens":[11,0,0.0],"garytt":[5,0,0.0],"gedaliah":[15,0,0.0],"giobany":[5,0,0.0],"giovonie":[5,0,0.0],"graer":[5,0,0.0],"graesen":[15,0,0.0],"guardian":[10,0,0.0],"harshveer":[5,0,0.0],"hazaiah":[153,0,0.4369],"himmat":[146,0,0.4329],"holdin":[10,0,0.0],"idhant":[35,0,0.0],"iestyn":[5,0,0.0],"iktan":[168,0,0.4451],"iory":[5,0,0.0],"ishaun":[5,0,0.0],"iskandar":[16,0,0.0],"izaiaz":[5,0,0.0],"jacauri":[5,0,0.0],"jacaury":[5,0,0.0],"jaethan":[42,0,0.0],"jaevaughn":[5,0,0.0],"jahair":[52,0,0.0],"jahaziah":[32,0,0.0],"jaking":[189,0,0.4553],"jaksyn":[25,0,0.0],"jamarris":[5,0,0.0],"jarai":[5,0,0.0],"jaxden":[90,0,0.0],"jaydenalexander":[5,0,0.0],"jaydenmichael":[5,0,0.0],"jaykin":[5,0,0.0],"jayze":[25,0,0.0],"jayziel":[58,0,0.0],"jazavian":[5,0,0.0],"jdynn":[5,0,0.0],"jeidyn":[5,0,0.0],"jeramiyah":[5,0,0.0],"jeremiahs":[11,0,0.0],"jeremyiah":[11,0,0.0],"jericko":[18,0,0.0],"jerimiyah":[15,0,0.0],"jeydon":[54,0,0.0],"jiarui":[48,0,0.0],"jkhari":[32,0,0.0],"jkwan":[5,0,0.0],"joahn":[16,0,0.0],"joeliel":[5,0,0.0],"johncarter":[5,0,0.0],"johrdan":[5,0,0.0],"joseduardo":[5,0,0.0],"josmel":[5,0,0.0],"josniel":[69,0,0.0],"jossimar":[5,0,0.0],"jrayden":[10,0,0.0],"juancarlo":[5,0,0.0],"kaeshon":[5,0,0.0],"kaloyan":[41,0,0.0],"kap":[99,0,0.0],"kasahn":[17,0,0.0],"kashtyn":[678,74,0.5186],"kaveen":[5,0,0.0],"kaviyon":[5,0,0.0],"kaydren":[16,0,0.0],"kaysaun":[23,0,0.0],"kazir":[32,0,0.0],"keenyn":[5,0,0.0],"keeson":[5,0,0.0],"keidon":[17,0,0.0],"kemaurie":[5,0,0.0],"khamel":[5,0,0.0],"khamon":[5,0,0.0],"khaseem":[16,0,0.0],"khyden":[92,0,0.0],"khyson":[646,0,0.562],"kiernen":[5,0,0.0],"kierson":[10,0,0.0],"kingslee":[250,169,0.3129],"kingsolomon":[17,0,0.0],"kiyler":[16,0,0.0],"klevis":[10,0,0.0],"kobain":[46,0,0.0],"kobina":[18,0,0.0],"korvyn":[11,0,0.0],"kovan":[26,0,0.0],"kyonne":[5,0,0.0],"kyptin":[5,0,0.0],"kyrien":[28,0,0.0],"laanthony":[5,0,0.0],"lacen":[10,0,0.0],"laik":[26,0,0.0],"lal":[18,15,0.0],"landdon":[5,0,0.0],"landenn":[10,0,0.0],"lauchlin":[5,0,0.0],"lawsyn":[106,163,0.2945],"leiden":[27,0,0.0],"lekai":[27,0,0.0],"leonydus":[5,0,0.0],"liamjames":[77,0,0.0],"lukan":[25,0,0.0],"luxton":[242,0,0.4768],"mahadi":[24,0,0.0],"majik":[64,0,0.0],"makoy":[25,0,0.0],"makson":[31,0,0.0],"mareck":[5,0,0.0],"masion":[10,0,0.0],"massi":[37,0,0.0],"mau":[5,0,0.0],"maxden":[84,0,0.0],"maxxim":[21,0,0.0],"micahjoseph":[5,0,0.0],"micaih":[10,0,0.0],"minhtri":[5,0,0.0],"mirsab":[5,0,0.0],"motley":[133,83,0.2875],"mouhammad":[23,0,0.0],"mugisha":[51,0,0.0],"muscab":[117,0,0.4136],"mycol":[5,0,0.0],"mykl":[5,0,0.0],"naithyn":[5,0,0.0],"nanakwame":[24,0,0.0],"nandhan":[10,0,0.0],"nasrudin":[5,0,0.0],"navian":[28,0,0.0],"nazeef":[15,0,0.0],"nechemya":[23,0,0.0],"nevaan":[178,0,0.4501],"nicere":[5,0,0.0],"nimalan":[48,0,0.0],"nixen":[84,0,0.0],"niyam":[180,0,0.4511],"noahgabriel":[27,0,0.0],"nyshon":[5,0,0.0],"oakly":[40,16,0.0],"oluwamayomikun":[5,0,0.0],"osyris":[45,0,0.0],"platon":[189,0,0.4553],"poe":[81,23,0.3142],"pradhyun":[5,0,0.0],"praveer":[11,0,0.0],"premier":[49,0,0.0],"radyn":[21,0,0.0],"ratan":[5,0,0.0],"raycin":[5,0,0.0],"reyd":[5,0,0.0],"rezon":[5,0,0.0],"rhemy":[10,34,0.0],"rikardo":[17,0,0.0],"rivan":[200,5,0.4511],"rodrion":[5,0,0.0],"safal":[102,0,0.4017],"safee":[5,0,0.0],"saheb":[5,0,0.0],"saion":[5,0,0.0],"saiyan":[113,6,0.3942],"samahj":[19,0,0.0],"samet":[5,0,0.0],"samyr":[33,0,0.0],"serhat":[5,0,0.0],"shanmukh":[43,0,0.0],"shazil":[86,0,0.0],"sheya":[15,0,0.0],"shreyaan":[73,0,0.0],"siddanth":[16,0,0.0],"simitrio":[5,0,0.0],"simms":[5,0,0.0],"sonjay":[10,0,0.0],"stathan":[5,0,0.0],"syr":[15,0,0.0],"tace":[15,0,0.0],"taeyang":[17,0,0.0],"tayce":[5,0,0.0],"theseus":[423,0,0.5253],"tiam":[109,0,0.4075],"trail":[33,0,0.0],"treavion":[5,0,0.0],"tredan":[10,0,0.0],"treymaine":[5,0,0.0],"treymane":[5,0,0.0],"trinden":[12,0,0.0],"tristanjames":[5,0,0.0],"tuf":[46,0,0.0],"tymiere":[19,0,0.0],"tyzir":[45,0,0.0],"umari":[11,0,0.0],"vachan":[5,0,0.0],"vahin":[61,0,0.0],"varen":[39,0,0.0],"vasudev":[22,0,0.0],"vigo":[52,0,0.0],"vyacheslav":[16,0,0.0],"waker":[10,0,0.0],"wenson":[5,0,0.0],"yadhir":[14,0,0.0],"yashwant":[5,0,0.0],"yasniel":[5,0,0.0],"yhael":[16,0,0.0],"yifan":[97,10,0.3679],"yosvany":[5,0,0.0],"yunier":[5,0,0.0],"zacori":[10,0,0.0],"zadien":[38,0,0.0],"zadquiel":[61,0,0.0],"zahkai":[126,0,0.4201],"zahkeem":[15,0,0.0],"zaiyden":[136,0,0.4267],"zakarian":[10,0,0.0],"zakaryah":[40,0,0.0],"zakayden":[12,0,0.0],"zakri":[5,0,0.0],"zamair":[20,0,0.0],"zamareon":[5,0,0.0],"zaviyon":[10,0,0.0],"zaybrien":[10,0,0.0],"zayyan":[436,0,0.5279],"zealan":[58,0,0.0],"zhyier":[5,0,0.0],"zinn":[17,0,0.0],"zmari":[26,5,0.0],"zyeire":[25,0,0.0],"zymaire":[5,0,0.0],"zyonne":[5,0,0.0],"zzyzx":[10,0,0.0],"magaby":[0,154,0.4375],"gredmarie":[0,68,0.0],"jocell":[0,31,0.0],"cataleya":[0,10632,0.8053],"khaleesi":[0,5125,0.7419],"quorra":[0,258,0.4823],"zendaya":[0,3672,0.713],"jorley":[0,35,0.0],"ayelene":[0,38,0.0],"locklyn":[48,422,0.4798],"adrialys":[0,21,0.0],"dim":[0,161,0.4414],"mahniya":[0,50,0.0],"lumen":[56,446,0.4799],"brynlynn":[0,183,0.4525],"calii":[0,78,0.0],"taisley":[0,192,0.4567],"yanilen":[0,82,0.0],"aevah":[0,80,0.0],"amabella":[0,82,0.0],"avaleen":[0,123,0.418],"ilitia":[0,11,0.0],"kaislee":[0,523,0.5437],"naevia":[0,326,0.5026],"auriah":[0,114,0.4114],"davinah":[0,54,0.0],"dennesly":[0,10,0.0],"kataleya":[0,4104,0.7226],"kynzleigh":[0,323,0.5018],"mariyha":[0,10,0.0],"pailynn":[0,106,0.4051],"somiyah":[0,20,0.0],"yorlei":[0,20,0.0],"ahzariah":[0,20,0.0],"anaveah":[0,100,0.4],"anistynn":[0,32,0.0],"arielly":[0,108,0.4067],"brantleigh":[5,87,0.0],"breighlynn":[0,38,0.0],"brilea":[0,21,0.0],"bryella":[0,130,0.4228],"charliann":[0,47,0.0],"dreyah":[0,118,0.4144],"ellesyn":[0,32,0.0],"evaluna":[0,811,0.5818],"finnleigh":[0,239,0.4757],"haelynn":[0,249,0.4792],"janaeyah":[0,9,0.0],"leeonna":[0,41,0.0],"macii":[0,36,0.0],"marriyah":[0,16,0.0],"mckynleigh":[0,81,0.0],"mylaya":[0,27,0.0],"nallah":[0,53,0.0],"truley":[0,9,0.0],"vyla":[0,175,0.4486],"yanisley":[0,9,0.0],"zemora":[0,127,0.4208],"zoeey":[0,30,0.0],"zoli":[0,18,0.0],"zyrielle":[0,54,0.0],"aalaiya":[0,20,0.0],"aaleahya":[0,21,0.0],"addaleigh":[0,118,0.4144],"adrialis":[0,8,0.0],"ahmiracle":[0,98,0.0],"ahriya":[0,73,0.0],"anelie":[0,53,0.0],"annabellee":[0,63,0.0],"avanthika":[0,86,0.0],"braylynne":[0,24,0.0],"briyelle":[0,65,0.0],"cattleya":[0,1897,0.6556],"ciin":[0,109,0.4075],"dnylah":[0,72,0.0],"drishya":[0,68,0.0],"ezzah":[0,59,0.0],"harseerat":[0,48,0.0],"jaelianna":[0,39,0.0],"jahziya":[0,8,0.0],"jaydelynn":[0,20,0.0],"jayliani":[0,133,0.4248],"kaselyn":[0,94,0.0],"kinzly":[0,109,0.4075],"kwynn":[0,150,0.4352],"lamarianna":[0,8,0.0],"laneyah":[0,13,0.0],"lanieya":[0,13,0.0],"laryiah":[0,69,0.0],"lovelynn":[0,234,0.4738],"mylania":[0,19,0.0],"naelle":[0,139,0.4286],"navaiah":[0,18,0.0],"niveyah":[0,22,0.0],"novalynn":[0,748,0.5748],"oumie":[0,8,0.0],"paidyn":[0,63,0.0],"paison":[0,13,0.0],"penelopi":[0,134,0.4254],"raashi":[0,8,0.0],"romeesa":[0,29,0.0],"rozilyn":[0,19,0.0],"sanvika":[0,202,0.4611],"saphina":[0,23,0.0],"saryniti":[0,13,0.0],"seely":[5,19,0.0],"skyee":[0,21,0.0],"taelynne":[0,8,0.0],"tynley":[0,55,0.0],"veeksha":[0,115,0.4121],"vidia":[0,57,0.0],"xophia":[0,38,0.0],"yannel":[0,13,0.0],"zaybree":[0,18,0.0],"aabha":[0,67,0.0],"aarvi":[0,438,0.5283],"abbriella":[0,31,0.0],"addaley":[0,49,0.0],"aksana":[0,18,0.0],"allianah":[0,21,0.0],"allieana":[0,7,0.0],"alliee":[0,7,0.0],"analeia":[0,641,0.5614],"annalya":[0,31,0.0],"arianys":[0,42,0.0],"astella":[0,230,0.4723],"aulbrey":[0,13,0.0],"avalei":[0,60,0.0],"avenley":[0,37,0.0],"averii":[0,70,0.0],"averyona":[0,7,0.0],"avienne":[0,7,0.0],"ayusha":[0,26,0.0],"ayzlee":[0,85,0.0],"azaila":[0,51,0.0],"caraleigh":[0,22,0.0],"dlylah":[0,32,0.0],"embyr":[0,98,0.0],"evaliz":[0,7,0.0],"evvy":[0,78,0.0],"hadly":[0,29,0.0],"henslee":[0,265,0.4846],"ismene":[0,7,0.0],"jaydalise":[0,7,0.0],"jayleanna":[0,27,0.0],"jazire":[13,7,0.0],"jiuliana":[0,13,0.0],"kaleesi":[0,333,0.5045],"kaylanii":[0,153,0.4369],"kennlee":[0,12,0.0],"klohee":[0,7,0.0],"kylenn":[32,28,0.0],"lailamarie":[0,7,0.0],"langstyn":[6,17,0.0],"laxmy":[0,7,0.0],"leighlani":[0,126,0.4201],"locklynn":[0,104,0.4034],"lotti":[0,51,0.0],"magabi":[0,14,0.0],"makiylah":[0,18,0.0],"marziya":[0,18,0.0],"mckynsie":[0,7,0.0],"mikenlee":[0,7,0.0],"millianna":[0,194,0.4576],"naavya":[0,170,0.4461],"nahyeli":[0,18,0.0],"noellie":[0,127,0.4208],"novalea":[0,96,0.0],"nurto":[0,13,0.0],"nyomii":[0,83,0.0],"rosaley":[0,39,0.0],"ruka":[21,20,0.0],"saaliha":[0,23,0.0],"sahaira":[0,17,0.0],"salara":[0,17,0.0],"samanvitha":[0,124,0.4187],"seija":[0,7,0.0],"sophieanne":[0,14,0.0],"suhavi":[0,66,0.0],"talaiya":[0,41,0.0],"tynslee":[0,149,0.4346],"wakely":[10,97,0.3679],"willoe":[0,27,0.0],"yalexi":[0,50,0.0],"zinachidi":[0,30,0.0],"achazia":[0,6,0.0],"adaelyn":[0,6,0.0],"addisun":[0,16,0.0],"ahlayna":[0,26,0.0],"ailanny":[0,220,0.4685],"ailise":[0,6,0.0],"aisla":[0,164,0.443],"aizlee":[0,77,0.0],"aleezah":[0,34,0.0],"alelia":[0,16,0.0],"amaryn":[0,6,0.0],"anayra":[0,347,0.5081],"anilyah":[0,27,0.0],"annabele":[0,12,0.0],"annilyn":[0,12,0.0],"annley":[0,16,0.0],"ardynn":[0,11,0.0],"areeya":[0,21,0.0],"arriyanah":[0,6,0.0],"aryanni":[0,6,0.0],"ashmeet":[0,6,0.0],"astyn":[29,54,0.0],"attalie":[0,103,0.4026],"aubreeana":[0,30,0.0],"avonni":[22,61,0.0],"ayanda":[0,11,0.0],"bethanya":[0,6,0.0],"bilen":[0,70,0.0],"bissan":[0,21,0.0],"braela":[0,24,0.0],"brecklin":[0,12,0.0],"breckynn":[0,28,0.0],"briarrose":[0,166,0.444],"brinlynn":[0,113,0.4106],"cathrynn":[0,6,0.0],"charlyann":[0,6,0.0],"charlytte":[0,58,0.0],"chaylyn":[0,6,0.0],"chigozirim":[33,6,0.0],"claudiajoy":[0,6,0.0],"dallyce":[0,46,0.0],"daryiah":[0,18,0.0],"dawt":[0,111,0.4091],"dearria":[0,6,0.0],"deilany":[0,117,0.4136],"deliylah":[0,44,0.0],"diyala":[0,22,0.0],"draizy":[0,79,0.0],"ellany":[0,74,0.0],"elleona":[0,11,0.0],"elsee":[0,36,0.0],"emmalinn":[0,18,0.0],"evelynrose":[0,81,0.0],"ezme":[0,188,0.4548],"fariza":[0,42,0.0],"havynn":[0,90,0.0],"hazleigh":[0,211,0.4649],"heartlee":[0,52,0.0],"ilithyia":[0,100,0.4],"isarely":[0,6,0.0],"isibella":[0,6,0.0],"ivaya":[0,6,0.0],"jahzelle":[0,34,0.0],"jahziyah":[0,23,0.0],"jalanni":[0,44,0.0],"jamyleth":[0,6,0.0],"janyi":[0,6,0.0],"jaryia":[0,24,0.0],"jazzilyn":[0,30,0.0],"jenevi":[0,17,0.0],"jenivieve":[0,18,0.0],"jermanii":[0,39,0.0],"jersei":[6,190,0.4444],"jlayah":[0,16,0.0],"joplynn":[0,6,0.0],"josaphina":[0,6,0.0],"joshitha":[0,12,0.0],"kamiyra":[0,6,0.0],"karleah":[0,21,0.0],"kaselynn":[0,53,0.0],"kaydree":[0,21,0.0],"kayllie":[0,6,0.0],"kelei":[0,6,0.0],"kemariah":[0,16,0.0],"kendallynn":[0,24,0.0],"kennedii":[0,73,0.0],"kensingtyn":[0,6,0.0],"kentleigh":[0,56,0.0],"kenzlei":[0,149,0.4346],"kesslyn":[0,34,0.0],"keza":[0,59,0.0],"kinslei":[0,144,0.4317],"kleah":[0,23,0.0],"klowi":[0,6,0.0],"kokoro":[0,11,0.0],"kynnadee":[0,6,0.0],"lanaeya":[0,11,0.0],"lasiah":[5,12,0.0],"laylannie":[0,11,0.0],"leabella":[0,18,0.0],"leayla":[0,11,0.0],"lexah":[0,6,0.0],"liliuokalani":[0,15,0.0],"lillea":[0,6,0.0],"lisabella":[0,39,0.0],"liyu":[0,97,0.0],"lolani":[0,52,0.0],"lyanni":[0,55,0.0],"lynnix":[23,258,0.4497],"lyonna":[0,6,0.0],"mackenlie":[0,6,0.0],"maddlynn":[0,6,0.0],"mahia":[0,105,0.4042],"mahlani":[0,408,0.5221],"mahleah":[0,11,0.0],"mahveen":[0,41,0.0],"maileigh":[0,18,0.0],"manija":[0,6,0.0],"marvela":[0,6,0.0],"mayarose":[0,27,0.0],"mazari":[11,21,0.0],"millian":[13,69,0.0],"mulani":[0,310,0.4983],"murphee":[0,77,0.0],"myaa":[0,24,0.0],"nalana":[0,24,0.0],"natelee":[0,6,0.0],"nelena":[0,6,0.0],"nevaehlynn":[0,16,0.0],"neyamiah":[5,6,0.0],"nyakume":[0,6,0.0],"ojasvi":[0,36,0.0],"oliyah":[0,26,0.0],"orlagh":[0,17,0.0],"paelynn":[0,22,0.0],"pavitra":[0,6,0.0],"paysley":[0,111,0.4091],"paytynn":[0,18,0.0],"persephany":[0,24,0.0],"quinnlynn":[0,40,0.0],"raeah":[0,59,0.0],"raiyne":[0,67,0.0],"ranyla":[0,72,0.0],"rhyane":[0,6,0.0],"rhylinn":[0,11,0.0],"rimi":[0,11,0.0],"rosealina":[0,24,0.0],"roux":[111,351,0.4049],"rutva":[0,6,0.0],"safiye":[0,22,0.0],"sahri":[0,6,0.0],"sahriya":[0,6,0.0],"samayiah":[0,17,0.0],"sarynity":[0,30,0.0],"saylem":[0,132,0.4241],"sayumi":[0,48,0.0],"sephina":[0,21,0.0],"seveah":[0,19,0.0],"shaileigh":[0,6,0.0],"shehzeen":[0,6,0.0],"sohanny":[0,14,0.0],"solage":[0,6,0.0],"somayah":[0,12,0.0],"tajsa":[0,6,0.0],"talaiyah":[0,55,0.0],"tamzin":[0,80,0.0],"taylani":[0,131,0.4235],"teriya":[0,6,0.0],"thayli":[0,11,0.0],"tiranke":[0,6,0.0],"urwa":[0,68,0.0],"vanora":[0,17,0.0],"xyana":[0,12,0.0],"yarisleidi":[0,6,0.0],"zakaira":[0,6,0.0],"zakyriah":[0,6,0.0],"zanique":[0,26,0.0],"zanyria":[0,6,0.0],"zema":[0,159,0.4403],"zoeii":[0,70,0.0],"zoelynn":[0,52,0.0],"zophie":[0,21,0.0],"zyariah":[0,6,0.0],"aalyvia":[0,5,0.0],"aashini":[0,5,0.0],"aashirya":[0,48,0.0],"adaliene":[0,46,0.0],"addielynn":[0,28,0.0],"addylan":[0,10,0.0],"adelys":[0,5,0.0],"advaita":[0,89,0.0],"adylinn":[0,11,0.0],"aeyla":[0,29,0.0],"ahlaysia":[0,15,0.0],"ahmonie":[0,5,0.0],"ahnylah":[0,65,0.0],"aimani":[0,10,0.0],"aimsley":[0,64,0.0],"aini":[0,5,0.0],"ajournee":[0,90,0.0],"akeriah":[0,5,0.0],"alchemy":[5,34,0.0],"aleeana":[0,5,0.0],"alei":[0,5,0.0],"alizayah":[0,30,0.0],"allenna":[0,5,0.0],"alliona":[0,5,0.0],"alliyana":[0,16,0.0],"allyannah":[0,17,0.0],"alzahra":[0,29,0.0],"amalyah":[0,12,0.0],"amania":[0,5,0.0],"amayla":[0,98,0.0],"ameliagrace":[0,74,0.0],"amelle":[0,50,0.0],"amrah":[0,19,0.0],"anabele":[0,5,0.0],"anaila":[0,59,0.0],"anavae":[0,29,0.0],"anberlynn":[0,5,0.0],"aneah":[0,17,0.0],"aneria":[0,5,0.0],"anessah":[0,11,0.0],"annaise":[0,21,0.0],"annaleya":[0,55,0.0],"annaliya":[0,32,0.0],"ansli":[0,5,0.0],"anyeline":[0,13,0.0],"anyree":[0,5,0.0],"anyriah":[0,5,0.0],"aqilah":[0,5,0.0],"araylia":[0,30,0.0],"arbrianna":[0,5,0.0],"areia":[0,61,0.0],"ariajade":[0,5,0.0],"arienette":[0,5,0.0],"ariha":[0,48,0.0],"ariyha":[0,10,0.0],"arniyah":[0,18,0.0],"arusha":[0,15,0.0],"ashaunie":[0,5,0.0],"ashriya":[0,15,0.0],"aubreeanna":[0,39,0.0],"aubriannah":[0,23,0.0],"aubryella":[0,27,0.0],"audee":[0,15,0.0],"audreyna":[0,5,0.0],"avaelizabeth":[0,15,0.0],"avalia":[0,53,0.0],"avaliese":[0,5,0.0],"avangelene":[0,5,0.0],"avilynn":[0,68,0.0],"avrora":[0,15,0.0],"azareth":[0,5,0.0],"azaylah":[0,162,0.4419],"azeeza":[0,16,0.0],"beckah":[0,5,0.0],"bellami":[14,324,0.4848],"bellanie":[0,138,0.428],"besiana":[0,5,0.0],"birklee":[0,23,0.0],"blessn":[0,5,0.0],"breese":[0,5,0.0],"breeyah":[0,5,0.0],"breidy":[0,15,0.0],"brekkyn":[0,10,0.0],"brendalynn":[0,64,0.0],"bricelynn":[0,10,0.0],"brieah":[0,5,0.0],"brixley":[5,432,0.5221],"brooklon":[0,5,0.0],"bryleah":[0,5,0.0],"brynnli":[0,35,0.0],"brynsley":[0,5,0.0],"brystle":[0,12,0.0],"caaliyah":[0,21,0.0],"cairi":[10,33,0.0],"caisyn":[162,64,0.3375],"caitryn":[0,5,0.0],"caliee":[0,25,0.0],"calyce":[0,5,0.0],"cambreigh":[0,109,0.4075],"camoni":[13,74,0.0],"ceeanna":[0,10,0.0],"charleeann":[0,26,0.0],"cheylyn":[0,5,0.0],"chrisiyah":[0,12,0.0],"coriah":[0,5,0.0],"corrah":[0,10,0.0],"crystell":[0,5,0.0],"dahianna":[0,5,0.0],"dahliah":[0,27,0.0],"danariah":[0,5,0.0],"dariyelle":[0,5,0.0],"darleni":[0,5,0.0],"davinee":[0,22,0.0],"dayzi":[0,15,0.0],"declynn":[22,201,0.4233],"deklynn":[11,146,0.4084],"delanei":[0,12,0.0],"delayah":[0,84,0.0],"delianys":[0,5,0.0],"demariya":[0,17,0.0],"derriah":[0,11,0.0],"deshaya":[0,5,0.0],"dezariyah":[0,16,0.0],"dhatri":[0,46,0.0],"dhruthi":[0,42,0.0],"dilek":[0,5,0.0],"diviana":[0,5,0.0],"dixy":[0,5,0.0],"dublyn":[0,5,0.0],"duriyah":[0,5,0.0],"eastynn":[7,62,0.0],"effy":[0,83,0.0],"eibhleann":[0,22,0.0],"eilen":[0,33,0.0],"eiva":[0,11,0.0],"elahni":[0,106,0.4051],"elaida":[0,5,0.0],"elisianna":[0,5,0.0],"elithia":[0,5,0.0],"ellamaria":[0,5,0.0],"elleny":[0,21,0.0],"elliauna":[0,39,0.0],"ellyona":[0,10,0.0],"ellys":[0,39,0.0],"elynna":[0,18,0.0],"emayah":[0,16,0.0],"emlynn":[0,56,0.0],"emmasue":[0,5,0.0],"emmelyne":[0,11,0.0],"emmeri":[0,79,0.0],"emora":[0,102,0.4017],"ensleigh":[0,167,0.4445],"eralynn":[0,75,0.0],"eriann":[0,5,0.0],"erioluwa":[62,66,0.2173],"evalett":[0,13,0.0],"evanyelin":[0,5,0.0],"evelyse":[0,12,0.0],"evienne":[0,53,0.0],"evilynn":[0,5,0.0],"evyanna":[0,60,0.0],"eztli":[33,109,0.3304],"faeryn":[0,70,0.0],"fairyn":[0,10,0.0],"farynn":[0,5,0.0],"genendy":[0,15,0.0],"geona":[0,5,0.0],"gwynavere":[0,5,0.0],"hadasha":[0,102,0.4017],"hajirah":[0,5,0.0],"hamidah":[0,16,0.0],"hannabelle":[0,11,0.0],"harjap":[6,5,0.0],"hasya":[0,10,0.0],"heartley":[0,40,0.0],"heartly":[0,82,0.0],"himari":[0,77,0.0],"hrithika":[0,10,0.0],"huntleigh":[0,664,0.5644],"hynlee":[0,63,0.0],"iah":[5,10,0.0],"ikraan":[0,11,0.0],"iksha":[0,22,0.0],"ilanie":[0,35,0.0],"ilenna":[0,5,0.0],"ilianny":[0,10,0.0],"ilithia":[0,5,0.0],"imia":[0,10,0.0],"inesa":[0,10,0.0],"insiyah":[0,44,0.0],"isabeli":[0,5,0.0],"itzany":[0,5,0.0],"iylee":[0,49,0.0],"izahbella":[0,10,0.0],"izobel":[0,10,0.0],"jahzell":[0,10,0.0],"jakayle":[0,5,0.0],"jakzenny":[0,11,0.0],"jalaylah":[0,15,0.0],"jaleela":[0,5,0.0],"janahi":[0,10,0.0],"janelisse":[0,12,0.0],"jaseena":[0,16,0.0],"jayclynn":[0,5,0.0],"jaymya":[0,5,0.0],"jazabella":[0,21,0.0],"jazeera":[0,10,0.0],"jazzabella":[0,22,0.0],"jazzariah":[0,5,0.0],"jazzmarie":[0,11,0.0],"jeilianys":[0,21,0.0],"jenave":[0,5,0.0],"jenesi":[0,5,0.0],"jennalyse":[0,10,0.0],"jennavee":[0,10,0.0],"jennavi":[0,5,0.0],"jenyla":[0,11,0.0],"jerriona":[0,5,0.0],"jeslee":[0,5,0.0],"jessabelle":[0,127,0.4208],"jeylah":[0,60,0.0],"jliana":[0,5,0.0],"jocelle":[0,5,0.0],"jocelynmarie":[0,5,0.0],"johannie":[0,5,0.0],"johnalyn":[0,5,0.0],"jorleny":[0,5,0.0],"josiana":[0,49,0.0],"juliannamarie":[0,5,0.0],"kadri":[24,10,0.0],"kaianne":[0,11,0.0],"kaicy":[0,5,0.0],"kailanni":[0,101,0.4009],"kaiyonna":[0,5,0.0],"kalanii":[0,102,0.4017],"kamarianna":[0,10,0.0],"kamerra":[0,5,0.0],"karyan":[0,5,0.0],"kassiana":[0,16,0.0],"kaymoni":[0,44,0.0],"keiliany":[0,22,0.0],"kellise":[0,10,0.0],"kemanie":[0,5,0.0],"kerala":[0,5,0.0],"ketziah":[0,23,0.0],"khailynn":[0,26,0.0],"khalina":[0,102,0.4017],"kharmen":[0,28,0.0],"kharsyn":[26,24,0.0],"khawla":[0,57,0.0],"khilynn":[0,108,0.4067],"kialani":[0,5,0.0],"kimarri":[0,5,0.0],"kimonie":[0,5,0.0],"kinlynn":[0,54,0.0],"klarity":[0,223,0.4697],"knoelle":[0,97,0.0],"korrah":[0,89,0.0],"kyndalyn":[0,16,0.0],"kynnleigh":[0,36,0.0],"kynslei":[0,181,0.4515],"lachlyn":[0,118,0.4144],"laeken":[5,5,0.0],"laetyn":[10,15,0.0],"laiklynn":[0,223,0.4697],"laksmi":[0,5,0.0],"lamariyah":[0,11,0.0],"lamese":[0,5,0.0],"lamirra":[0,5,0.0],"larsa":[0,31,0.0],"larsyn":[0,61,0.0],"leemarie":[0,5,0.0],"lelianna":[0,24,0.0],"leyat":[0,5,0.0],"liliannah":[0,52,0.0],"lilleeana":[0,5,0.0],"lillybelle":[0,23,0.0],"lorenn":[0,5,0.0],"luciella":[0,86,0.0],"lyela":[0,16,0.0],"lylarose":[0,37,0.0],"lynix":[81,106,0.2576],"mabree":[0,55,0.0],"mackaela":[0,5,0.0],"mackenlee":[0,38,0.0],"maddysin":[0,5,0.0],"maebree":[0,87,0.0],"magavi":[0,5,0.0],"mahaylee":[0,5,0.0],"mahlena":[0,5,0.0],"mahliya":[0,17,0.0],"mahliyah":[0,23,0.0],"makayln":[0,5,0.0],"maleha":[0,5,0.0],"marliegh":[0,5,0.0],"maybrie":[0,95,0.0],"maylanie":[0,92,0.0],"maymouna":[0,15,0.0],"mayrel":[0,5,0.0],"mazyah":[0,5,0.0],"mckinnly":[0,5,0.0],"melaynie":[0,5,0.0],"mextli":[0,5,0.0],"meyra":[0,16,0.0],"miavictoria":[0,20,0.0],"mijoi":[0,11,0.0],"milaniya":[0,5,0.0],"mileni":[0,5,0.0],"mileyah":[0,16,0.0],"miliah":[0,78,0.0],"milove":[0,50,0.0],"miylah":[0,93,0.0],"mkaylah":[0,5,0.0],"mkenzi":[0,16,0.0],"morghen":[0,5,0.0],"morgynn":[0,21,0.0],"myairah":[0,5,0.0],"mylinn":[0,5,0.0],"mythri":[0,20,0.0],"nahide":[0,5,0.0],"nahlah":[0,27,0.0],"naiana":[0,5,0.0],"naihla":[0,17,0.0],"nakenzie":[0,19,0.0],"nalayiah":[0,5,0.0],"naleea":[0,5,0.0],"namirah":[0,93,0.0],"nariman":[0,10,0.0],"natileigh":[0,5,0.0],"nebula":[0,123,0.418],"neidelyn":[0,5,0.0],"nhyira":[5,109,0.3933],"nickyla":[0,5,0.0],"niriyah":[0,10,0.0],"nirmeen":[0,5,0.0],"noorhan":[0,10,0.0],"novi":[15,292,0.4731],"nuray":[0,17,0.0],"nyleve":[0,5,0.0],"oluwafisayo":[0,5,0.0],"oluwatumininu":[0,18,0.0],"omarah":[0,5,0.0],"ostara":[0,75,0.0],"parvina":[0,10,0.0],"pazley":[0,13,0.0],"persaya":[0,5,0.0],"petyon":[0,5,0.0],"phoebi":[0,5,0.0],"plum":[0,10,0.0],"raeniyah":[0,5,0.0],"rahna":[0,5,0.0],"raielle":[0,73,0.0],"railen":[0,5,0.0],"raseel":[0,128,0.4214],"rawa":[0,11,0.0],"rayea":[0,10,0.0],"rayhona":[0,5,0.0],"rheia":[0,88,0.0],"rinad":[0,31,0.0],"rinya":[0,5,0.0],"rosilynn":[0,10,0.0],"rozaria":[0,10,0.0],"ruca":[0,12,0.0],"ruhamah":[0,16,0.0],"ryelyn":[0,49,0.0],"saada":[0,17,0.0],"saegan":[0,20,0.0],"sahrye":[0,5,0.0],"sammya":[0,5,0.0],"sanilah":[0,17,0.0],"sanira":[0,5,0.0],"santanah":[0,5,0.0],"sanyra":[0,5,0.0],"sariyha":[0,5,0.0],"sayah":[0,21,0.0],"setayesh":[0,114,0.4114],"shahrazad":[0,11,0.0],"shanii":[0,5,0.0],"shanniya":[0,5,0.0],"shivany":[0,5,0.0],"shyloe":[0,10,0.0],"sihara":[0,15,0.0],"simoni":[0,5,0.0],"simreet":[0,10,0.0],"sirayah":[0,11,0.0],"sohna":[0,5,0.0],"solenn":[0,65,0.0],"somi":[0,62,0.0],"sophialynn":[0,21,0.0],"sophiamae":[0,10,0.0],"sophieann":[0,21,0.0],"soryn":[67,50,0.2369],"sragvi":[0,5,0.0],"srilaasya":[0,5,0.0],"sriyah":[0,18,0.0],"starlah":[0,11,0.0],"stellamarie":[0,42,0.0],"sudeeksha":[0,10,0.0],"sumalee":[0,5,0.0],"suraiyah":[0,5,0.0],"swecha":[0,51,0.0],"taaliah":[0,75,0.0],"taetym":[0,5,0.0],"tahlya":[0,16,0.0],"talulla":[0,112,0.4098],"tavery":[0,12,0.0],"taybree":[0,10,0.0],"taylenn":[0,5,0.0],"tayln":[0,12,0.0],"taylorgrace":[0,5,0.0],"tayslee":[0,5,0.0],"tayvianna":[0,5,0.0],"telaysia":[0,5,0.0],"temprynce":[0,10,0.0],"toriyah":[0,5,0.0],"truely":[0,32,0.0],"tsubaki":[0,10,0.0],"tyanni":[0,5,0.0],"tynlie":[0,16,0.0],"tzivy":[0,63,0.0],"valentinna":[0,11,0.0],"vanelly":[0,10,0.0],"vasanti":[0,5,0.0],"virsaviya":[0,15,0.0],"willoh":[0,81,0.0],"xalia":[0,85,0.0],"xamiyah":[0,5,0.0],"xinyan":[0,26,0.0],"yarisleidy":[0,5,0.0],"yarleth":[0,15,0.0],"yazhini":[0,107,0.4059],"yensid":[0,5,0.0],"yessina":[0,5,0.0],"yuliette":[0,20,0.0],"yusayrah":[0,5,0.0],"yuuna":[0,5,0.0],"yuxi":[0,81,0.0],"yuxuan":[35,16,0.0],"zaelee":[0,80,0.0],"zahri":[0,21,0.0],"zaiana":[0,5,0.0],"zailie":[0,5,0.0],"zaleyah":[0,74,0.0],"zamaiyah":[0,5,0.0],"zanaiah":[0,16,0.0],"zaraiyah":[0,30,0.0],"zatanna":[0,55,0.0],"zealyn":[0,5,0.0],"zeel":[0,10,0.0],"zenayah":[0,88,0.0],"zeyana":[0,5,0.0],"zianah":[0,5,0.0],"zikeyah":[0,5,0.0],"zoegrace":[0,20,0.0],"zory":[0,15,0.0],"zuhur":[0,30,0.0],"zulai":[0,22,0.0],"zyleah":[0,60,0.0],"jionni":[1404,49,0.6111],"itzae":[890,402,0.4286],"crixus":[232,0,0.4731],"maurkice":[13,0,0.0],"braxson":[202,0,0.4611],"edahi":[209,0,0.464],"noahjames":[95,0,0.0],"huxton":[987,0,0.5989],"maksimus":[11,0,0.0],"vadir":[11,0,0.0],"yeiren":[161,0,0.4414],"aazim":[29,0,0.0],"axiel":[244,0,0.4775],"finch":[183,5,0.4427],"jaesyn":[10,0,0.0],"jayco":[161,0,0.4414],"jermir":[79,0,0.0],"kastle":[72,5,0.0],"radin":[110,0,0.4083],"rayansh":[283,0,0.4904],"ademide":[118,22,0.3618],"aydeen":[93,0,0.0],"burhanuddin":[254,0,0.481],"drevyn":[35,0,0.0],"esad":[9,0,0.0],"javale":[51,0,0.0],"jimmer":[9,0,0.0],"kaw":[33,0,0.0],"lewi":[131,0,0.4235],"nihash":[14,0,0.0],"riyansh":[421,0,0.5249],"ruxin":[175,0,0.4486],"rydin":[32,0,0.0],"yordany":[50,0,0.0],"zytaveon":[17,0,0.0],"advit":[185,0,0.4534],"avren":[8,0,0.0],"aydren":[26,0,0.0],"connley":[16,0,0.0],"dycen":[25,0,0.0],"ensar":[45,0,0.0],"ferney":[14,0,0.0],"jabraylen":[36,0,0.0],"jahleil":[8,0,0.0],"kaeshawn":[13,0,0.0],"kayzen":[183,0,0.4525],"keldyn":[13,0,0.0],"khiyan":[76,0,0.0],"kiyaan":[350,0,0.5088],"kroy":[401,0,0.5206],"laiten":[8,0,0.0],"maasai":[149,0,0.4346],"micaden":[8,0,0.0],"mung":[129,5,0.4095],"neimar":[55,0,0.0],"randiel":[20,0,0.0],"rawlins":[139,31,0.3647],"reylan":[95,0,0.0],"rihaan":[657,0,0.5635],"sriansh":[154,0,0.4375],"syire":[125,0,0.4194],"taio":[40,0,0.0],"track":[8,0,0.0],"tydan":[19,0,0.0],"yadrian":[40,0,0.0],"aaidyn":[71,0,0.0],"aavi":[37,0,0.0],"abdulelah":[44,0,0.0],"abheek":[7,0,0.0],"alexavior":[7,0,0.0],"alyster":[54,0,0.0],"arihan":[42,0,0.0],"arohan":[7,0,0.0],"ayaansh":[559,0,0.5495],"aythen":[15,0,0.0],"badhir":[7,0,0.0],"caydenn":[17,0,0.0],"chukwunonso":[13,0,0.0],"dextin":[62,0,0.0],"ediz":[79,0,0.0],"etzio":[92,0,0.0],"euri":[7,41,0.0],"graem":[7,0,0.0],"grasen":[12,0,0.0],"hay":[7,0,0.0],"hser":[31,78,0.2916],"jamirr":[67,0,0.0],"januell":[7,0,0.0],"jaxxson":[246,0,0.4782],"jhoseph":[18,0,0.0],"jofiel":[31,0,0.0],"keileb":[12,0,0.0],"kenniel":[134,0,0.4254],"lassana":[31,0,0.0],"laycen":[12,0,0.0],"leum":[42,0,0.0],"llandel":[7,0,0.0],"loch":[81,0,0.0],"manvik":[130,0,0.4228],"maveryck":[193,0,0.4571],"milenko":[7,0,0.0],"neelan":[23,0,0.0],"nivaan":[551,0,0.5482],"prynceton":[130,0,0.4228],"reiter":[12,0,0.0],"rexx":[70,0,0.0],"ridhaan":[354,0,0.5098],"samrat":[105,0,0.4042],"saral":[7,0,0.0],"saurya":[12,0,0.0],"soe":[15,46,0.0],"solo":[83,0,0.0],"sosuke":[70,0,0.0],"thaman":[19,0,0.0],"yameen":[49,0,0.0],"yker":[12,0,0.0],"yosif":[37,0,0.0],"yosuel":[7,0,0.0],"zacai":[73,0,0.0],"zailan":[19,0,0.0],"zamare":[17,0,0.0],"zaviyar":[399,0,0.5202],"zhymir":[35,0,0.0],"aadish":[79,0,0.0],"aanav":[146,0,0.4329],"abdirisaq":[12,0,0.0],"adhithya":[6,0,0.0],"adomas":[6,0,0.0],"ajaden":[6,0,0.0],"alastor":[339,0,0.506],"albara":[38,0,0.0],"anav":[222,0,0.4693],"aryaveer":[60,0,0.0],"ashrit":[6,0,0.0],"asser":[165,0,0.4435],"audio":[6,0,0.0],"aydann":[17,0,0.0],"ayhan":[81,0,0.0],"beauen":[20,0,0.0],"bekam":[20,0,0.0],"bekham":[23,0,0.0],"bensyn":[166,0,0.444],"bentely":[6,0,0.0],"bentyn":[39,0,0.0],"berrett":[17,0,0.0],"blaydin":[13,0,0.0],"brailin":[20,0,0.0],"brandtley":[51,0,0.0],"braylenn":[31,5,0.0],"brilliant":[40,16,0.0],"brydin":[6,0,0.0],"cahmari":[6,0,0.0],"cape":[15,0,0.0],"charith":[34,0,0.0],"chrysander":[11,0,0.0],"crosley":[134,108,0.264],"cuauhtli":[6,0,0.0],"cullyn":[11,0,0.0],"cylin":[12,0,0.0],"danijel":[6,0,0.0],"daury":[28,0,0.0],"dayro":[18,0,0.0],"deisel":[11,0,0.0],"diland":[28,0,0.0],"divesh":[6,0,0.0],"doriel":[6,0,0.0],"dyce":[81,0,0.0],"ecker":[25,0,0.0],"eliano":[132,0,0.4241],"elyis":[6,0,0.0],"en":[23,0,0.0],"eroz":[6,0,0.0],"eymen":[77,0,0.0],"ezekias":[39,0,0.0],"fielder":[77,0,0.0],"geonni":[60,0,0.0],"graysyn":[155,5,0.427],"gunnarr":[28,0,0.0],"haamid":[6,0,0.0],"halsten":[33,5,0.0],"haresh":[11,0,0.0],"hobbes":[60,0,0.0],"hrach":[16,0,0.0],"iahn":[6,0,0.0],"iason":[39,0,0.0],"iroh":[301,0,0.4957],"ishayu":[6,0,0.0],"jahseir":[6,0,0.0],"jakii":[6,0,0.0],"jasear":[6,0,0.0],"jaylem":[6,0,0.0],"jeanlucas":[6,0,0.0],"jenuel":[11,0,0.0],"jerimih":[16,0,0.0],"jerymiah":[6,0,0.0],"jeylani":[22,87,0.3252],"jiancarlos":[18,0,0.0],"jionny":[28,0,0.0],"joban":[45,0,0.0],"juden":[30,0,0.0],"judiel":[11,0,0.0],"juellz":[39,0,0.0],"juels":[31,0,0.0],"kadis":[6,0,0.0],"kayaan":[76,0,0.0],"kaydrian":[77,0,0.0],"kayge":[22,0,0.0],"keeden":[32,0,0.0],"keedyn":[13,0,0.0],"kendin":[13,0,0.0],"kensen":[44,0,0.0],"kiaran":[6,0,0.0],"knoxton":[147,0,0.4335],"kolsyn":[235,24,0.4379],"kortlan":[12,0,0.0],"kullin":[6,0,0.0],"leigham":[17,0,0.0],"lynken":[87,0,0.0],"mackson":[278,0,0.4888],"maxy":[11,0,0.0],"mayukh":[64,0,0.0],"mordy":[56,0,0.0],"moriel":[6,0,0.0],"myloh":[72,0,0.0],"nathanim":[17,0,0.0],"nijash":[6,0,0.0],"nyzaire":[24,0,0.0],"paydin":[6,0,0.0],"phanuel":[31,0,0.0],"qumari":[18,0,0.0],"riyon":[40,0,0.0],"roczen":[374,0,0.5146],"rozay":[56,39,0.0],"ruzgar":[37,0,0.0],"sabiel":[16,0,0.0],"sanin":[6,0,0.0],"sevryn":[39,0,0.0],"snayder":[73,0,0.0],"snithik":[18,0,0.0],"stihl":[88,0,0.0],"taeo":[85,0,0.0],"tanielu":[35,0,0.0],"traelyn":[28,0,0.0],"virat":[444,0,0.5295],"weylan":[20,0,0.0],"yannuel":[6,0,0.0],"yarik":[6,0,0.0],"yusof":[11,0,0.0],"zaedin":[34,0,0.0],"zahire":[18,0,0.0],"zamarrion":[24,0,0.0],"zaydenn":[90,0,0.0],"zaydien":[16,0,0.0],"zayid":[43,0,0.0],"zico":[18,0,0.0],"zimarion":[6,0,0.0],"zyell":[22,0,0.0],"zyerre":[6,0,0.0],"zyin":[18,0,0.0],"zymeire":[11,0,0.0],"aadhyan":[34,0,0.0],"aason":[110,0,0.4083],"abdikhaliq":[5,0,0.0],"abdiwali":[5,0,0.0],"abdulaye":[10,0,0.0],"abduljabbar":[39,0,0.0],"abduljaleel":[5,0,0.0],"abdulnasir":[5,0,0.0],"acari":[90,11,0.3572],"adbiel":[21,0,0.0],"adeen":[11,0,0.0],"adhrith":[99,0,0.0],"adlan":[10,0,0.0],"adlar":[5,0,0.0],"adniel":[15,0,0.0],"adris":[49,0,0.0],"adriyel":[35,0,0.0],"agent":[5,0,0.0],"aidenmatthew":[5,0,0.0],"aidrik":[25,0,0.0],"aiham":[31,0,0.0],"ajayden":[10,0,0.0],"akhi":[17,0,0.0],"alastar":[31,0,0.0],"alyjiah":[5,0,0.0],"andols":[5,0,0.0],"anir":[122,0,0.4173],"anjrue":[5,0,0.0],"anon":[5,0,0.0],"antoneyo":[5,0,0.0],"antonny":[5,0,0.0],"arcadius":[68,0,0.0],"arieus":[11,0,0.0],"arnob":[5,0,0.0],"aroosh":[5,47,0.0],"artemy":[5,0,0.0],"asadbek":[46,0,0.0],"atal":[28,0,0.0],"atreu":[5,0,0.0],"axeton":[123,0,0.418],"aydrik":[5,0,0.0],"ayvan":[37,0,0.0],"azayvion":[43,0,0.0],"azerion":[5,0,0.0],"baren":[11,0,0.0],"bashiri":[5,0,0.0],"battal":[51,0,0.0],"benas":[15,0,0.0],"bison":[29,0,0.0],"boede":[18,0,0.0],"bravery":[141,69,0.3118],"brilen":[5,0,0.0],"brixon":[196,0,0.4585],"brogyn":[5,0,0.0],"brohdy":[5,0,0.0],"brycson":[15,0,0.0],"brysonn":[31,0,0.0],"candan":[5,0,0.0],"chaynce":[130,0,0.4228],"chethan":[5,0,0.0],"connal":[5,0,0.0],"corvyn":[11,0,0.0],"cypher":[171,0,0.4466],"damarae":[5,0,0.0],"dasai":[16,0,0.0],"dastyn":[5,0,0.0],"deair":[44,0,0.0],"decklen":[75,0,0.0],"declen":[77,0,0.0],"deyvin":[23,0,0.0],"dezden":[5,0,0.0],"dhyey":[54,0,0.0],"dmarian":[5,0,0.0],"dominus":[42,0,0.0],"dovi":[66,0,0.0],"draelyn":[38,0,0.0],"dreyken":[10,0,0.0],"driscoll":[5,0,0.0],"dwij":[38,0,0.0],"eames":[151,0,0.4358],"ebrahima":[5,0,0.0],"ekamjit":[5,0,0.0],"elijahh":[10,0,0.0],"elijahray":[10,0,0.0],"elom":[33,0,0.0],"emarii":[5,5,0.0],"emmiliano":[53,0,0.0],"emraan":[29,0,0.0],"enderson":[65,0,0.0],"esben":[137,0,0.4273],"esven":[5,0,0.0],"etinosa":[15,0,0.0],"evaan":[350,0,0.5088],"evanjames":[10,0,0.0],"fenris":[150,0,0.4352],"finbarr":[26,0,0.0],"gabrielangelo":[5,0,0.0],"gavien":[5,0,0.0],"ghaith":[393,0,0.5189],"gionny":[34,0,0.0],"graicen":[5,0,0.0],"greycen":[190,11,0.4354],"greylan":[96,0,0.0],"greysyn":[143,11,0.4063],"hageo":[5,0,0.0],"hamdaan":[30,0,0.0],"hanish":[101,0,0.4009],"hansome":[5,0,0.0],"hanzo":[107,0,0.4059],"hasir":[5,0,0.0],"hazyn":[33,0,0.0],"heathcliff":[26,0,0.0],"helo":[17,0,0.0],"horus":[74,0,0.0],"hudayfa":[20,0,0.0],"icarus":[147,0,0.4335],"ivyon":[18,0,0.0],"izayuh":[5,0,0.0],"jaevier":[5,0,0.0],"jafer":[10,0,0.0],"jahdari":[13,0,0.0],"jahriel":[21,0,0.0],"jahzon":[5,0,0.0],"jakameron":[5,0,0.0],"jakhye":[5,0,0.0],"jakolbi":[10,0,0.0],"jamod":[5,0,0.0],"janzel":[22,0,0.0],"jarison":[5,0,0.0],"jasion":[64,0,0.0],"jaydehn":[5,0,0.0],"jaylex":[28,0,0.0],"jaylonn":[5,0,0.0],"jaymion":[5,0,0.0],"jaymire":[5,0,0.0],"jayvonni":[25,0,0.0],"jeadon":[5,0,0.0],"jeel":[5,5,0.0],"jenkarlo":[5,0,0.0],"jeremiel":[11,0,0.0],"jeremyh":[5,0,0.0],"jhael":[68,0,0.0],"jhariel":[17,0,0.0],"jhovan":[5,0,0.0],"jiacheng":[5,0,0.0],"jiahao":[18,0,0.0],"jkobi":[5,0,0.0],"jociel":[5,0,0.0],"johnlucas":[22,0,0.0],"johnmartin":[5,0,0.0],"josaia":[5,0,0.0],"jovaniel":[33,0,0.0],"junxi":[20,0,0.0],"jvian":[16,0,0.0],"jyzaiah":[5,0,0.0],"jzon":[14,0,0.0],"kaenon":[22,0,0.0],"kaimalu":[5,0,0.0],"kalex":[42,0,0.0],"kalo":[84,0,0.0],"kavik":[95,0,0.0],"kaysten":[64,0,0.0],"kayto":[10,0,0.0],"kdrian":[5,0,0.0],"keethan":[5,0,0.0],"keito":[26,0,0.0],"kelab":[5,0,0.0],"kelian":[90,0,0.0],"kholby":[10,0,0.0],"khup":[105,0,0.4042],"khyier":[32,0,0.0],"kiros":[35,0,0.0],"kleb":[5,0,0.0],"kniko":[15,0,0.0],"kohlston":[12,0,0.0],"kolsten":[82,0,0.0],"krayson":[10,0,0.0],"kullyn":[10,0,0.0],"kyeson":[98,0,0.0],"kyhir":[28,0,0.0],"kyleek":[5,0,0.0],"kymauri":[5,0,0.0],"kymeir":[105,0,0.4042],"kymier":[103,0,0.4026],"kyper":[35,11,0.0],"kypten":[5,0,0.0],"lawaia":[27,0,0.0],"laylan":[5,19,0.0],"laylon":[15,0,0.0],"leelend":[29,0,0.0],"leilynd":[5,0,0.0],"lemmy":[98,26,0.3309],"lenyx":[221,237,0.2754],"leyden":[46,0,0.0],"luian":[152,0,0.4364],"lyndan":[5,22,0.0],"macklen":[181,0,0.4515],"madon":[10,0,0.0],"mads":[225,0,0.4704],"maesen":[11,24,0.0],"makhel":[10,0,0.0],"mantra":[10,0,0.0],"marckel":[5,0,0.0],"markayden":[10,0,0.0],"meilich":[27,0,0.0],"menasha":[5,0,0.0],"midas":[269,0,0.486],"modibo":[17,0,0.0],"muizz":[20,0,0.0],"myster":[10,0,0.0],"nadal":[24,0,0.0],"naieem":[16,0,0.0],"naisean":[5,0,0.0],"naishaun":[5,0,0.0],"naysean":[5,0,0.0],"neizan":[451,0,0.5308],"nickan":[58,0,0.0],"nicoy":[5,0,0.0],"niketh":[10,0,0.0],"nio":[104,0,0.4034],"nivan":[179,0,0.4506],"nosakhare":[16,0,0.0],"oaklen":[662,52,0.5292],"olisaemeka":[10,0,0.0],"oluwaseyifunmi":[5,13,0.0],"omere":[231,0,0.4727],"oriyan":[10,0,0.0],"orsen":[16,0,0.0],"ousainou":[10,0,0.0],"ovadia":[143,0,0.4311],"peregrin":[101,0,0.4009],"phineus":[17,0,0.0],"princewilliam":[11,0,0.0],"qwen":[5,0,0.0],"raayan":[56,0,0.0],"raedon":[5,0,0.0],"raian":[18,0,0.0],"rakye":[10,0,0.0],"ramzes":[5,0,0.0],"rayirth":[10,0,0.0],"reider":[17,0,0.0],"rembrandt":[52,0,0.0],"reylin":[21,81,0.319],"reyniel":[51,0,0.0],"ricari":[5,0,0.0],"rivaan":[432,0,0.5271],"ronniel":[23,0,0.0],"ryahn":[5,0,0.0],"rydel":[5,0,0.0],"rythm":[5,5,0.0],"sabur":[5,0,0.0],"safeer":[64,0,0.0],"sahal":[84,0,0.0],"saiden":[17,0,0.0],"saish":[55,0,0.0],"saku":[5,0,0.0],"samith":[11,0,0.0],"samrath":[74,0,0.0],"samrudh":[38,0,0.0],"sardar":[12,0,0.0],"seigo":[5,0,0.0],"severus":[167,0,0.4445],"severyn":[15,0,0.0],"shaik":[10,0,0.0],"shneor":[5,0,0.0],"shreyank":[11,0,0.0],"shrivas":[5,0,0.0],"siddhesh":[5,0,0.0],"sifat":[5,32,0.0],"soufiane":[5,0,0.0],"sriniketh":[15,0,0.0],"striker":[70,0,0.0],"suhrit":[5,0,0.0],"suryansh":[82,0,0.0],"sybastian":[15,0,0.0],"takye":[16,0,0.0],"tamatoa":[46,0,0.0],"tawsif":[10,0,0.0],"taycen":[25,0,0.0],"tedros":[5,0,0.0],"tejus":[19,0,0.0],"thawng":[35,0,0.0],"tianyi":[21,0,0.0],"toretto":[96,0,0.0],"tragen":[15,0,0.0],"tyga":[36,0,0.0],"tyker":[5,0,0.0],"ulyssis":[5,0,0.0],"valencio":[65,0,0.0],"volvy":[68,0,0.0],"waylynn":[120,341,0.3941],"whelan":[74,0,0.0],"wryder":[46,0,0.0],"wuilian":[5,0,0.0],"xannon":[15,0,0.0],"xaviour":[11,0,0.0],"yadin":[10,0,0.0],"yanxiel":[10,0,0.0],"yassiel":[57,0,0.0],"yehezkel":[5,0,0.0],"yian":[114,22,0.3577],"younus":[89,0,0.0],"za":[5,0,0.0],"zaiven":[45,0,0.0],"zakarey":[5,0,0.0],"zakarri":[71,0,0.0],"zakhar":[53,0,0.0],"zamaree":[10,0,0.0],"zamiel":[11,0,0.0],"zamiere":[11,0,0.0],"zandar":[16,0,0.0],"zandyn":[48,0,0.0],"zanthony":[17,0,0.0],"zarrion":[10,0,0.0],"zayen":[76,0,0.0],"zayir":[102,0,0.4017],"zeik":[31,0,0.0],"zephram":[17,0,0.0],"zephyrus":[86,0,0.0],"zeryk":[5,0,0.0],"zeyd":[57,0,0.0],"zeyden":[51,0,0.0],"zhair":[26,0,0.0],"zihao":[36,0,0.0],"ziheir":[5,0,0.0],"zylas":[81,0,0.0],"zytavion":[5,0,0.0],"kimbella":[0,355,0.51],"catalaya":[0,667,0.5648],"cattaleya":[0,819,0.5827],"daleyza":[0,11774,0.8142],"aaradhya":[0,963,0.5967],"catalia":[0,264,0.4843],"katalaya":[0,451,0.5308],"katalia":[0,290,0.4925],"kattleya":[0,311,0.4986],"aayat":[0,465,0.5335],"karliah":[0,200,0.4602],"daenerys":[5,1356,0.6245],"catalea":[0,183,0.4525],"iviona":[0,164,0.443],"kataleah":[0,180,0.4511],"kattaleya":[0,364,0.5122],"katalea":[0,193,0.4571],"nirvi":[0,324,0.5021],"brely":[0,30,0.0],"brenlynn":[0,128,0.4214],"merliah":[0,102,0.4017],"aamilah":[0,121,0.4166],"anabrenda":[0,54,0.0],"carliana":[0,24,0.0],"lynnley":[0,146,0.4329],"adylee":[0,80,0.0],"ahri":[0,450,0.5306],"drayah":[0,71,0.0],"jeiza":[0,12,0.0],"katalayah":[0,32,0.0],"kathaleya":[0,172,0.4471],"katniss":[0,201,0.4606],"noomi":[0,45,0.0],"sebella":[0,24,0.0],"analeyah":[0,134,0.4254],"aubreelynn":[0,52,0.0],"cataleyah":[0,209,0.464],"cateleya":[0,101,0.4009],"ireoluwa":[162,201,0.2835],"jonier":[0,36,0.0],"nahyla":[0,17,0.0],"payzlie":[0,57,0.0],"renesmae":[0,483,0.5368],"addiley":[0,30,0.0],"ahniyla":[0,10,0.0],"ameliarose":[0,209,0.464],"arrietty":[0,165,0.4435],"arybella":[0,65,0.0],"daniylah":[0,86,0.0],"haddi":[0,33,0.0],"hartlynn":[0,146,0.4329],"jeevika":[0,10,0.0],"kataleyah":[0,234,0.4738],"kaylannie":[0,26,0.0],"linleigh":[0,69,0.0],"mathai":[13,10,0.0],"nylaa":[0,96,0.0],"raelinn":[0,66,0.0],"sifa":[0,75,0.0],"zaylaa":[0,28,0.0],"akadia":[0,15,0.0],"annaley":[0,60,0.0],"arrihanna":[0,20,0.0],"aubreyella":[0,56,0.0],"avoree":[0,9,0.0],"ayela":[0,55,0.0],"blaikley":[0,84,0.0],"daleysa":[0,615,0.5578],"daveney":[0,23,0.0],"dhyani":[0,74,0.0],"everlynn":[0,612,0.5574],"fenet":[0,82,0.0],"habeeba":[0,9,0.0],"jazabelle":[0,14,0.0],"jemmah":[0,40,0.0],"joury":[0,268,0.4856],"kathalia":[0,59,0.0],"kaylanee":[0,73,0.0],"kemyiah":[0,20,0.0],"khalessi":[0,350,0.5088],"lielah":[0,9,0.0],"minsa":[0,148,0.4341],"naaya":[0,52,0.0],"scarlettrose":[0,147,0.4335],"suttyn":[9,307,0.4857],"svana":[0,44,0.0],"tinsleigh":[0,198,0.4593],"veralynn":[0,105,0.4042],"wateen":[0,266,0.485],"yorlet":[0,9,0.0],"yuhan":[17,40,0.0],"adeley":[0,47,0.0],"anahii":[0,18,0.0],"anaylah":[0,62,0.0],"audreigh":[0,40,0.0],"avacyn":[0,395,0.5193],"avenleigh":[0,30,0.0],"bhuvi":[0,34,0.0],"bostynn":[0,68,0.0],"breklynn":[0,44,0.0],"cataleah":[0,103,0.4026],"chyles":[0,14,0.0],"dailani":[0,196,0.4585],"darriah":[0,8,0.0],"deem":[0,136,0.4267],"eevee":[0,570,0.5512],"eevie":[0,193,0.4571],"elinam":[0,8,0.0],"enslie":[0,104,0.4034],"hessa":[0,28,0.0],"jaretssi":[0,293,0.4934],"jaxi":[0,57,0.0],"jayanni":[0,45,0.0],"joyful":[0,47,0.0],"kataleia":[0,205,0.4624],"kataliyah":[0,47,0.0],"katelina":[0,42,0.0],"kayslee":[0,196,0.4585],"khamilla":[0,28,0.0],"leylanni":[0,51,0.0],"lilynn":[0,8,0.0],"lynnex":[31,214,0.4174],"lyzah":[0,13,0.0],"maizah":[0,18,0.0],"marypaz":[0,16,0.0],"mckinzley":[0,26,0.0],"nayelii":[0,18,0.0],"nazayah":[0,13,0.0],"olanna":[0,150,0.4352],"reveille":[0,56,0.0],"rhaelynn":[0,108,0.4067],"sadiee":[0,27,0.0],"tasiya":[0,8,0.0],"venba":[0,179,0.4506],"xoi":[0,8,0.0],"yadieliz":[0,8,0.0],"zaniylah":[0,69,0.0],"zayiah":[0,21,0.0],"zimal":[0,269,0.486],"aalayiah":[0,20,0.0],"adiela":[0,50,0.0],"adlei":[0,15,0.0],"adylynn":[0,90,0.0],"ahmyra":[0,40,0.0],"alarah":[0,49,0.0],"aliee":[0,7,0.0],"aliyya":[0,20,0.0],"amilla":[0,29,0.0],"anally":[0,7,0.0],"annyston":[0,25,0.0],"ariellah":[0,187,0.4544],"aubreeann":[0,14,0.0],"aubriahna":[0,7,0.0],"averleigh":[0,226,0.4708],"avonlee":[0,17,0.0],"aybri":[0,7,0.0],"azori":[0,111,0.4091],"breiah":[0,13,0.0],"charliee":[0,190,0.4558],"coralei":[0,66,0.0],"corniyah":[0,12,0.0],"deepshika":[0,7,0.0],"dezirey":[0,7,0.0],"diti":[0,12,0.0],"edelynn":[0,87,0.0],"elilah":[0,103,0.4026],"elliemay":[0,105,0.4042],"enara":[0,75,0.0],"enylah":[0,36,0.0],"eponine":[0,50,0.0],"evaya":[0,71,0.0],"ezmariah":[0,36,0.0],"giuliette":[0,72,0.0],"haizlee":[0,465,0.5335],"havisha":[0,54,0.0],"hinley":[0,114,0.4114],"ilayah":[0,60,0.0],"japji":[0,165,0.4435],"jeilynn":[0,20,0.0],"journiee":[0,180,0.4511],"kaizlyn":[0,87,0.0],"karmoni":[0,39,0.0],"kataliya":[0,44,0.0],"katilaya":[0,42,0.0],"keilianys":[0,46,0.0],"kenslea":[0,13,0.0],"krimsyn":[0,45,0.0],"krishika":[0,141,0.4298],"lamirah":[0,7,0.0],"leeani":[0,117,0.4136],"loyalti":[0,136,0.4267],"lynnox":[182,424,0.3894],"mabyn":[0,13,0.0],"maidah":[0,108,0.4067],"maisley":[0,336,0.5053],"makensley":[0,60,0.0],"marciella":[0,20,0.0],"mckinli":[0,20,0.0],"nashlie":[0,17,0.0],"paizly":[0,32,0.0],"reighn":[5,189,0.4458],"renlee":[22,475,0.5154],"saanchi":[0,24,0.0],"saffiya":[0,29,0.0],"shaam":[0,31,0.0],"sofiarose":[0,29,0.0],"suvali":[0,7,0.0],"swayzi":[0,32,0.0],"tynsley":[0,50,0.0],"vihana":[0,271,0.4866],"walela":[0,33,0.0],"yanileth":[0,7,0.0],"yaressi":[0,7,0.0],"zadah":[0,7,0.0],"zelah":[0,69,0.0],"zoeh":[0,84,0.0],"aadhira":[0,265,0.4846],"aavah":[0,70,0.0],"abriannah":[0,15,0.0],"adalinn":[0,85,0.0],"addlie":[0,6,0.0],"adelaina":[0,26,0.0],"adelind":[0,65,0.0],"adellynn":[0,11,0.0],"adilena":[0,44,0.0],"adylan":[0,28,0.0],"aeliana":[0,286,0.4913],"aelynn":[0,44,0.0],"ahleigha":[0,17,0.0],"ahmina":[0,102,0.4017],"aisleigh":[0,30,0.0],"akiana":[0,6,0.0],"alayjiah":[0,6,0.0],"amabelle":[0,22,0.0],"amillianna":[0,39,0.0],"andelin":[0,6,0.0],"anelah":[0,6,0.0],"anemone":[0,11,0.0],"annilee":[0,46,0.0],"annistin":[0,6,0.0],"annorah":[0,86,0.0],"anuska":[0,23,0.0],"aoibheann":[0,30,0.0],"arabellah":[0,47,0.0],"areyah":[0,85,0.0],"arriya":[0,52,0.0],"asauni":[0,6,0.0],"asoni":[0,6,0.0],"aubriela":[0,17,0.0],"aurellia":[0,75,0.0],"avaani":[0,25,0.0],"avakate":[0,24,0.0],"avalyne":[0,24,0.0],"avishka":[0,47,0.0],"ayami":[0,23,0.0],"aylie":[0,47,0.0],"ayverie":[0,30,0.0],"azaliya":[0,39,0.0],"azleigh":[0,18,0.0],"bashy":[0,11,0.0],"beautyful":[0,11,0.0],"beesan":[0,6,0.0],"beily":[0,56,0.0],"bellissa":[0,21,0.0],"blakesley":[0,28,0.0],"brayelle":[0,32,0.0],"brooklenn":[0,6,0.0],"bryani":[0,6,0.0],"brynlin":[0,11,0.0],"caiah":[0,66,0.0],"caleesi":[0,160,0.4408],"calisi":[0,38,0.0],"cataleia":[0,164,0.443],"celaya":[0,27,0.0],"christlynn":[0,21,0.0],"cyrine":[0,59,0.0],"davayah":[0,47,0.0],"davynn":[0,6,0.0],"dmaria":[0,6,0.0],"eavie":[0,6,0.0],"eelyn":[0,6,0.0],"eleyah":[0,30,0.0],"ellynor":[0,28,0.0],"emalise":[0,17,0.0],"emariya":[0,6,0.0],"emarosa":[0,63,0.0],"emeliah":[0,27,0.0],"emmalani":[0,18,0.0],"eriella":[0,79,0.0],"esmerie":[0,16,0.0],"eveleigh":[0,112,0.4098],"ewaoluwa":[0,54,0.0],"ezara":[0,37,0.0],"fairah":[0,6,0.0],"finnlee":[206,127,0.3121],"fotima":[0,90,0.0],"galaxie":[0,43,0.0],"giovannah":[0,6,0.0],"graciee":[0,18,0.0],"haajar":[0,17,0.0],"haaniya":[0,54,0.0],"hadlyn":[0,119,0.4151],"hayzlee":[0,356,0.5103],"henzley":[0,87,0.0],"hidayah":[0,132,0.4241],"hiyam":[0,18,0.0],"hunnie":[0,11,0.0],"itzayani":[0,56,0.0],"itzuri":[0,30,0.0],"ivyrose":[0,249,0.4792],"jabrayah":[0,16,0.0],"jaeliyah":[0,14,0.0],"jaliea":[0,6,0.0],"janilya":[0,6,0.0],"jaydelin":[0,55,0.0],"jayliannie":[0,16,0.0],"jeylianis":[0,11,0.0],"jiaxin":[0,6,0.0],"kaimarie":[0,11,0.0],"kaislyn":[0,199,0.4598],"kambreigh":[0,55,0.0],"keilanie":[0,49,0.0],"kenyiah":[0,6,0.0],"kesar":[0,18,0.0],"khaleyah":[0,34,0.0],"khalisa":[0,21,0.0],"khloemarie":[0,6,0.0],"kynidee":[0,6,0.0],"laundyn":[0,26,0.0],"lavani":[0,6,0.0],"leelou":[0,12,0.0],"leiliany":[0,18,0.0],"lenalee":[0,6,0.0],"lilliani":[0,59,0.0],"lively":[0,566,0.5506],"londynmarie":[0,6,0.0],"loriyah":[0,6,0.0],"loukya":[0,73,0.0],"lourd":[0,6,0.0],"lun":[0,137,0.4273],"macynn":[0,11,0.0],"maelei":[0,6,0.0],"mahra":[0,79,0.0],"maricielo":[0,12,0.0],"marloe":[0,95,0.0],"mayven":[0,202,0.4611],"mckinlea":[0,11,0.0],"meerah":[0,13,0.0],"millyana":[0,11,0.0],"mlak":[0,6,0.0],"music":[12,17,0.0],"nagham":[0,6,0.0],"nahliyah":[0,18,0.0],"nalei":[0,6,0.0],"nashli":[0,6,0.0],"nazeli":[0,50,0.0],"ngun":[5,54,0.0],"niarose":[0,11,0.0],"nuam":[0,18,0.0],"olani":[0,128,0.4214],"omarianna":[0,6,0.0],"otylia":[0,21,0.0],"paislyn":[0,182,0.452],"paislynn":[0,325,0.5024],"parizoda":[0,36,0.0],"penelopy":[0,88,0.0],"preslynn":[0,122,0.4173],"prezleigh":[0,11,0.0],"rahela":[0,6,0.0],"rateel":[0,152,0.4364],"rauri":[5,13,0.0],"remii":[5,139,0.4167],"remingtyn":[24,165,0.3975],"renezmae":[0,233,0.4735],"rodas":[8,30,0.0],"rosemarry":[0,6,0.0],"sadika":[0,11,0.0],"safeerah":[0,11,0.0],"sahriyah":[0,11,0.0],"sarhiya":[0,6,0.0],"savanh":[0,6,0.0],"seela":[0,98,0.0],"semora":[0,6,0.0],"sevinch":[0,6,0.0],"shahina":[0,29,0.0],"shanyk":[0,6,0.0],"sirin":[0,21,0.0],"sohpia":[0,11,0.0],"stevii":[0,6,0.0],"syrinity":[0,16,0.0],"taiyari":[34,61,0.0],"taniylah":[0,24,0.0],"tavleen":[0,6,0.0],"tayma":[0,17,0.0],"tenzley":[0,6,0.0],"tomiyah":[0,6,0.0],"tyleyah":[0,6,0.0],"tynli":[0,6,0.0],"vainavi":[0,16,0.0],"vanille":[0,16,0.0],"velanie":[0,6,0.0],"vynessa":[0,6,0.0],"xaida":[0,6,0.0],"yardena":[0,6,0.0],"yeleini":[0,6,0.0],"yufei":[0,11,0.0],"zaaliyah":[0,54,0.0],"zalaiyah":[0,59,0.0],"zalee":[0,6,0.0],"zayleen":[0,100,0.4],"zaylene":[0,23,0.0],"zeyah":[0,47,0.0],"zhiya":[0,11,0.0],"zikora":[30,72,0.2836],"ziley":[0,28,0.0],"zixuan":[46,25,0.0],"zurii":[0,180,0.4511],"zyri":[0,18,0.0],"aaliyahrose":[0,40,0.0],"aarabella":[0,22,0.0],"aaradhana":[0,91,0.0],"aaratrika":[0,5,0.0],"aaronae":[0,5,0.0],"aarshi":[0,43,0.0],"aavyn":[6,5,0.0],"adalisse":[0,5,0.0],"adalye":[0,10,0.0],"addylynn":[0,115,0.4121],"adelice":[0,5,0.0],"adelinah":[0,11,0.0],"adiley":[0,28,0.0],"adiline":[0,53,0.0],"adlea":[0,5,0.0],"adn":[0,5,0.0],"adylen":[0,40,0.0],"aevry":[0,5,0.0],"afiyah":[0,145,0.4323],"ahbree":[0,10,0.0],"aiylah":[0,95,0.0],"alaana":[0,15,0.0],"alanoud":[0,85,0.0],"alayhia":[0,5,0.0],"albee":[11,15,0.0],"aliannie":[0,5,0.0],"aliauna":[0,5,0.0],"alidiya":[0,5,0.0],"aliyannah":[0,55,0.0],"allanie":[0,5,0.0],"allisin":[0,5,0.0],"amaryana":[0,5,0.0],"amerikiss":[0,5,0.0],"ameyaa":[0,39,0.0],"aminna":[0,5,0.0],"amorra":[0,69,0.0],"amyna":[0,51,0.0],"analayah":[0,214,0.4661],"anarah":[0,57,0.0],"ancika":[0,5,0.0],"angelike":[0,5,0.0],"anijae":[0,5,0.0],"anilyn":[0,5,0.0],"anjalika":[0,5,0.0],"anjola":[0,17,0.0],"annabellelee":[0,10,0.0],"annalyne":[0,5,0.0],"ansal":[0,10,0.0],"arahi":[0,10,0.0],"ariamarie":[0,16,0.0],"armiah":[0,76,0.0],"arrya":[0,35,0.0],"ashalina":[0,10,0.0],"ataly":[0,15,0.0],"aubreah":[0,5,0.0],"aubrilyn":[0,10,0.0],"aubriyana":[0,15,0.0],"auraya":[0,12,0.0],"avamay":[0,5,0.0],"avangaline":[0,5,0.0],"avayiah":[0,5,0.0],"avayla":[0,95,0.0],"avrilynn":[0,5,0.0],"aydali":[0,5,0.0],"ayoola":[10,12,0.0],"ayria":[0,24,0.0],"ayten":[0,40,0.0],"ayzlin":[0,10,0.0],"azailya":[0,23,0.0],"azaleia":[0,116,0.4129],"azaleigh":[0,46,0.0],"azaylee":[0,71,0.0],"azilyn":[0,15,0.0],"azmariah":[0,58,0.0],"bae":[5,28,0.0],"baisley":[0,54,0.0],"bayliegh":[0,12,0.0],"belany":[0,5,0.0],"beliz":[0,5,0.0],"bellaluna":[0,55,0.0],"beyah":[0,15,0.0],"blaklie":[0,5,0.0],"blithe":[0,18,0.0],"bradli":[0,10,0.0],"bralynne":[0,10,0.0],"breilynn":[0,15,0.0],"brezlynn":[0,26,0.0],"bristin":[6,12,0.0],"cahlia":[0,17,0.0],"caiyah":[0,79,0.0],"calice":[0,5,0.0],"calirose":[0,105,0.4042],"callalily":[0,18,0.0],"calliemae":[0,5,0.0],"camoya":[0,10,0.0],"camyri":[0,5,0.0],"cataliyah":[0,30,0.0],"catilaya":[0,16,0.0],"catileya":[0,12,0.0],"cemre":[0,11,0.0],"charlyee":[0,11,0.0],"chenxi":[5,39,0.0],"chrisly":[0,5,0.0],"clairity":[0,24,0.0],"cymphonique":[0,12,0.0],"daelani":[0,90,0.0],"dannee":[0,5,0.0],"darleth":[0,153,0.4369],"dasanii":[0,5,0.0],"dashari":[0,5,0.0],"deekshitha":[0,5,0.0],"demariana":[0,5,0.0],"detzani":[0,11,0.0],"devanae":[0,5,0.0],"dharshini":[0,5,0.0],"dixielynn":[0,18,0.0],"diyaa":[0,16,0.0],"dmiracle":[0,5,0.0],"driyah":[0,10,0.0],"dzya":[0,5,0.0],"edlynn":[0,11,0.0],"eilonwy":[0,27,0.0],"elanur":[0,10,0.0],"elaynna":[0,10,0.0],"eleigh":[0,5,0.0],"eleigha":[0,10,0.0],"eliciana":[0,16,0.0],"ellayah":[0,5,0.0],"elleora":[0,5,0.0],"elliett":[0,120,0.4158],"elliyanna":[0,49,0.0],"ellyot":[5,10,0.0],"elyahna":[0,5,0.0],"elyannah":[0,40,0.0],"emaliya":[0,5,0.0],"emilyah":[0,27,0.0],"emmorie":[0,36,0.0],"eniylah":[0,17,0.0],"eriannah":[0,5,0.0],"evalia":[0,34,0.0],"evangalene":[0,5,0.0],"evera":[0,23,0.0],"evlynn":[0,70,0.0],"evyana":[0,54,0.0],"eyram":[30,37,0.0],"eziya":[0,5,0.0],"falynne":[0,5,0.0],"fraidel":[0,5,0.0],"frimmy":[0,90,0.0],"fynleigh":[0,85,0.0],"fynnleigh":[0,5,0.0],"gaurika":[0,10,0.0],"genelia":[0,5,0.0],"giyana":[0,17,0.0],"goodness":[16,45,0.0],"gynesis":[0,43,0.0],"haileen":[0,5,0.0],"hanlee":[0,5,0.0],"hannabella":[0,5,0.0],"harita":[0,5,0.0],"heartlynn":[0,56,0.0],"hirah":[0,5,0.0],"icesys":[0,5,0.0],"ilanny":[0,5,0.0],"ilianie":[0,5,0.0],"ilythia":[0,5,0.0],"inchara":[0,5,0.0],"islarose":[0,73,0.0],"islynn":[0,53,0.0],"jabrielle":[0,11,0.0],"jacenia":[0,5,0.0],"jacyra":[0,5,0.0],"jadeah":[0,11,0.0],"jadynce":[0,5,0.0],"jaede":[0,10,0.0],"jahanara":[0,10,0.0],"jaiani":[0,35,0.0],"jaleny":[0,5,0.0],"jaslena":[0,5,0.0],"jaslinn":[0,5,0.0],"jaybree":[0,5,0.0],"jaylany":[0,58,0.0],"jayliyah":[0,16,0.0],"jayliz":[0,21,0.0],"jayvionna":[0,10,0.0],"jelise":[0,5,0.0],"jennabel":[0,5,0.0],"jennaliz":[0,5,0.0],"jernei":[0,30,0.0],"jesalee":[0,5,0.0],"jessalee":[0,37,0.0],"jessianna":[0,5,0.0],"jewlz":[0,15,0.0],"jiahna":[0,5,0.0],"jianne":[0,5,0.0],"jlaya":[0,10,0.0],"jordanmarie":[0,5,0.0],"jorelys":[0,5,0.0],"josabet":[0,157,0.4392],"joumana":[0,20,0.0],"jouri":[0,198,0.4593],"jovienne":[0,11,0.0],"joyse":[0,5,0.0],"juliella":[0,5,0.0],"juliyanna":[0,5,0.0],"jyelle":[0,10,0.0],"jyena":[0,5,0.0],"kacelynn":[0,130,0.4228],"kahlaya":[0,65,0.0],"kahleya":[0,5,0.0],"kaileemarie":[0,5,0.0],"kalexy":[0,5,0.0],"kaliona":[0,5,0.0],"kalionna":[0,16,0.0],"kamarionna":[0,5,0.0],"kameyah":[0,11,0.0],"kaniylah":[0,29,0.0],"kannyn":[21,44,0.0],"karismah":[0,5,0.0],"karlyee":[0,5,0.0],"katalynna":[0,35,0.0],"kaveah":[0,97,0.0],"kehara":[0,5,0.0],"kenalee":[0,5,0.0],"kentlee":[19,66,0.0],"kenylah":[0,5,0.0],"kenzlea":[0,14,0.0],"kerani":[0,5,0.0],"khadence":[0,10,0.0],"khalei":[7,34,0.0],"khamilah":[0,29,0.0],"khaylani":[0,89,0.0],"khloii":[0,10,0.0],"kholette":[0,5,0.0],"kinnidy":[0,11,0.0],"kinsely":[0,58,0.0],"kmaya":[0,10,0.0],"koralie":[0,43,0.0],"krystabella":[0,5,0.0],"kylese":[0,5,0.0],"kymbella":[0,20,0.0],"kyndi":[0,5,0.0],"kynnlee":[0,37,0.0],"laeyah":[0,5,0.0],"lah":[0,11,0.0],"lakeley":[0,17,0.0],"lamaiyah":[0,5,0.0],"lamyla":[0,20,0.0],"laveen":[0,5,0.0],"layanah":[0,34,0.0],"layanie":[0,5,0.0],"laylanii":[0,76,0.0],"laylyn":[0,68,0.0],"lazariyah":[0,5,0.0],"leahgrace":[0,10,0.0],"leeanah":[0,10,0.0],"leilaann":[0,5,0.0],"leilla":[0,12,0.0],"leire":[0,76,0.0],"levani":[0,5,0.0],"levee":[45,74,0.2581],"levian":[65,13,0.0],"lillymay":[0,5,0.0],"lilymay":[0,16,0.0],"lingxi":[0,16,0.0],"lionna":[0,10,0.0],"livinia":[0,23,0.0],"liyanah":[0,22,0.0],"lizabelle":[0,16,0.0],"lojain":[0,84,0.0],"londonrose":[0,5,0.0],"loreina":[0,25,0.0],"louna":[0,155,0.4381],"loveya":[0,17,0.0],"lucienna":[0,15,0.0],"lucyrose":[0,5,0.0],"lyanie":[0,5,0.0],"lyelah":[0,5,0.0],"lynnlea":[0,36,0.0],"lyrix":[62,23,0.0],"maahika":[0,5,0.0],"maddylynn":[0,10,0.0],"maebri":[0,46,0.0],"maebrie":[0,21,0.0],"maeta":[0,5,0.0],"maicyn":[0,29,0.0],"makennzie":[0,5,0.0],"malanii":[0,167,0.4445],"mariyan":[0,11,0.0],"mariyonna":[0,5,0.0],"matiya":[0,5,0.0],"maybre":[0,10,0.0],"mayeda":[0,15,0.0],"mayreni":[0,5,0.0],"meile":[0,5,0.0],"merleah":[0,5,0.0],"merola":[0,23,0.0],"mileya":[0,52,0.0],"mirabell":[0,29,0.0],"misgana":[0,25,0.0],"munha":[0,5,0.0],"myalin":[0,5,0.0],"myjoy":[0,5,0.0],"myrianna":[0,5,0.0],"nahya":[0,42,0.0],"nakiyla":[0,5,0.0],"namaya":[0,23,0.0],"narae":[0,13,0.0],"nashaley":[0,5,0.0],"nataliegh":[0,5,0.0],"nataniah":[0,5,0.0],"navroop":[0,10,0.0],"nayvi":[0,86,0.0],"nerya":[0,5,0.0],"nishma":[0,16,0.0],"niyeli":[0,45,0.0],"nymeria":[0,175,0.4486],"nyomee":[0,11,0.0],"oakli":[0,71,0.0],"oliviaann":[0,37,0.0],"olivyah":[0,10,0.0],"oluwajomiloju":[39,29,0.0],"oluwalonimi":[5,23,0.0],"pavni":[0,5,0.0],"peshy":[0,15,0.0],"pfeiffer":[0,63,0.0],"phia":[0,25,0.0],"pypper":[0,5,0.0],"qirat":[0,39,0.0],"raaina":[0,18,0.0],"racelyn":[0,15,0.0],"raynne":[0,16,0.0],"rehmat":[13,301,0.4787],"reiny":[0,11,0.0],"renley":[284,1022,0.4877],"reyyan":[0,78,0.0],"rodaina":[0,5,0.0],"rosalei":[0,29,0.0],"rosebella":[0,83,0.0],"rowann":[0,21,0.0],"roxii":[0,5,0.0],"rudaina":[0,5,0.0],"ryeli":[0,10,0.0],"ryilee":[0,57,0.0],"ryma":[0,10,0.0],"saela":[0,32,0.0],"saham":[0,5,0.0],"sailer":[0,54,0.0],"sajidah":[0,10,0.0],"samija":[0,5,0.0],"sanavi":[0,24,0.0],"sarahya":[0,5,0.0],"sarem":[0,40,0.0],"sargun":[0,163,0.4424],"sarriyah":[0,5,0.0],"satsha":[0,5,0.0],"saviah":[0,29,0.0],"selebrity":[0,5,0.0],"seriniti":[0,10,0.0],"seya":[0,5,0.0],"shalymar":[0,5,0.0],"sharimar":[0,5,0.0],"sharini":[0,5,0.0],"sheylynn":[0,5,0.0],"shivanshi":[0,62,0.0],"sirat":[0,85,0.0],"sistine":[0,74,0.0],"siwar":[0,5,0.0],"siyuri":[0,5,0.0],"smaya":[0,125,0.4194],"sohany":[0,5,0.0],"sophiaisabelle":[0,11,0.0],"sophiemarie":[0,5,0.0],"sorella":[0,16,0.0],"starri":[0,5,0.0],"summayah":[0,5,0.0],"surrey":[0,20,0.0],"sutten":[13,40,0.0],"sydalee":[0,5,0.0],"taeryn":[0,5,0.0],"tapasya":[0,5,0.0],"taurasi":[0,5,0.0],"tayleah":[0,5,0.0],"tayyibah":[0,10,0.0],"tayzlee":[0,56,0.0],"terralynn":[0,18,0.0],"thaissa":[0,5,0.0],"thira":[0,10,0.0],"thistle":[0,10,0.0],"thuraya":[0,5,0.0],"timberlynn":[0,144,0.4317],"tinslie":[0,10,0.0],"tinzleigh":[0,10,0.0],"tlalli":[0,29,0.0],"torynn":[0,16,0.0],"tzivi":[0,28,0.0],"uli":[0,5,0.0],"uswa":[0,21,0.0],"vaila":[0,59,0.0],"vivienna":[0,20,0.0],"vladislava":[0,10,0.0],"vritika":[0,16,0.0],"vyanna":[0,21,0.0],"wiam":[0,5,0.0],"wrynn":[0,114,0.4114],"xiomy":[0,5,0.0],"xylee":[0,39,0.0],"yanairis":[0,5,0.0],"yanaliz":[0,5,0.0],"yaqeen":[22,49,0.0],"yarisley":[0,5,0.0],"yasna":[0,139,0.4286],"yeisy":[0,10,0.0],"yetzaly":[0,26,0.0],"yuika":[0,13,0.0],"yuleimi":[0,47,0.0],"yuni":[0,44,0.0],"yura":[0,33,0.0],"zadaya":[0,94,0.0],"zady":[0,29,0.0],"zaeleigh":[0,85,0.0],"zahmaria":[0,5,0.0],"zainb":[0,5,0.0],"zaiyanna":[0,5,0.0],"zanayla":[0,10,0.0],"zanilah":[0,24,0.0],"zarhianna":[0,5,0.0],"zayani":[0,67,0.0],"zayia":[0,11,0.0],"zeinah":[0,15,0.0],"zendayah":[0,195,0.458],"zeyneb":[0,58,0.0],"zixi":[0,33,0.0],"zoeygrace":[0,16,0.0],"naksh":[453,0,0.5312],"viaan":[1560,0,0.6386],"shenouda":[88,0,0.0],"tyrann":[132,0,0.4241],"dmoni":[139,11,0.4033],"ardan":[63,0,0.0],"uwais":[62,0,0.0],"kaydien":[43,0,0.0],"arkan":[199,0,0.4598],"brettly":[16,0,0.0],"maejor":[106,0,0.4051],"viyan":[388,0,0.5178],"aaro":[143,0,0.4311],"cesc":[21,0,0.0],"demaryius":[98,0,0.0],"ibaad":[83,0,0.0],"jaceion":[497,0,0.5393],"pranish":[118,0,0.4144],"prayan":[196,0,0.4585],"renly":[411,181,0.3849],"saarth":[84,0,0.0],"taysom":[727,7,0.5677],"wale":[77,0,0.0],"adiyan":[42,0,0.0],"ayushman":[67,0,0.0],"banx":[324,11,0.4884],"brettley":[48,0,0.0],"bryken":[29,0,0.0],"eiker":[59,0,0.0],"exton":[61,0,0.0],"finnick":[1339,0,0.6254],"guransh":[20,0,0.0],"jaxzon":[72,0,0.0],"kiing":[127,0,0.4208],"koamalu":[15,0,0.0],"maxtyn":[133,5,0.4125],"vishwak":[63,0,0.0],"aagam":[48,0,0.0],"aeyden":[13,0,0.0],"carwyn":[89,0,0.0],"chander":[8,0,0.0],"dexten":[28,0,0.0],"drexton":[19,0,0.0],"dreysen":[33,0,0.0],"dristan":[13,0,0.0],"elimelec":[8,0,0.0],"eyian":[13,0,0.0],"faelan":[69,10,0.0],"hadeed":[19,0,0.0],"haoxuan":[20,0,0.0],"jersiah":[62,0,0.0],"johaun":[13,0,0.0],"khilen":[24,0,0.0],"khodee":[8,0,0.0],"lium":[31,0,0.0],"maveryk":[221,5,0.4604],"mayjor":[119,0,0.4151],"pinches":[94,0,0.0],"princetin":[34,0,0.0],"savage":[125,0,0.4194],"syir":[88,0,0.0],"traesean":[13,0,0.0],"vardhan":[18,0,0.0],"vyan":[98,0,0.0],"aerius":[14,0,0.0],"aryash":[81,0,0.0],"ateeb":[7,0,0.0],"avrumy":[143,0,0.4311],"avyaan":[1965,0,0.6587],"ayushmaan":[7,0,0.0],"canelo":[174,0,0.4481],"daymar":[20,0,0.0],"dhruvan":[149,0,0.4346],"draylin":[23,0,0.0],"dryver":[7,0,0.0],"eker":[28,0,0.0],"emar":[28,0,0.0],"ghael":[27,0,0.0],"grigoriy":[25,0,0.0],"haoyu":[46,0,0.0],"heiden":[71,0,0.0],"jahsi":[60,0,0.0],"jahvari":[16,0,0.0],"jaiceon":[776,0,0.578],"jamesly":[18,0,0.0],"jannuel":[7,0,0.0],"jionnie":[7,0,0.0],"jovanii":[12,0,0.0],"kahden":[12,0,0.0],"kenrich":[7,0,0.0],"kimarley":[7,0,0.0],"lelynn":[14,0,0.0],"logic":[132,0,0.4241],"macallen":[29,0,0.0],"maijor":[209,0,0.464],"makis":[7,0,0.0],"markon":[124,0,0.4187],"maxsen":[46,0,0.0],"maxston":[47,0,0.0],"mikayeel":[7,0,0.0],"nixin":[31,0,0.0],"radlee":[72,24,0.0],"reyaansh":[259,0,0.4827],"reydan":[27,0,0.0],"rustam":[83,0,0.0],"sarvin":[60,0,0.0],"shriyansh":[56,0,0.0],"stylz":[7,0,0.0],"syden":[7,0,0.0],"timaeus":[13,0,0.0],"traesyn":[19,0,0.0],"zeddicus":[95,0,0.0],"aadiv":[28,0,0.0],"aadvik":[531,0,0.545],"aahaan":[70,0,0.0],"aaydan":[11,0,0.0],"abdulloh":[246,0,0.4782],"abtin":[6,0,0.0],"adahy":[6,0,0.0],"aderemi":[6,0,0.0],"ailan":[79,0,0.0],"akhilleus":[17,0,0.0],"alagie":[6,0,0.0],"anania":[54,0,0.0],"anzar":[49,0,0.0],"aryes":[35,10,0.0],"aryion":[32,0,0.0],"asai":[256,12,0.4639],"ayomiposi":[33,12,0.0],"ayzen":[84,0,0.0],"azizjon":[6,0,0.0],"baqir":[6,0,0.0],"bexton":[204,0,0.4619],"braesyn":[33,0,0.0],"branlee":[14,0,0.0],"braxtynn":[58,10,0.0],"caffrey":[66,0,0.0],"caidenn":[6,0,0.0],"caseton":[31,0,0.0],"cayn":[12,0,0.0],"chaitan":[6,0,0.0],"chale":[14,0,0.0],"chaplin":[32,0,0.0],"chestin":[6,0,0.0],"colesyn":[71,0,0.0],"crisangel":[6,0,0.0],"curtavious":[6,0,0.0],"dakayden":[19,0,0.0],"damauni":[11,0,0.0],"decarri":[18,0,0.0],"dharius":[109,0,0.4075],"dkaiden":[6,0,0.0],"draidyn":[6,0,0.0],"draxton":[144,0,0.4317],"ekamveer":[55,0,0.0],"elik":[6,0,0.0],"enso":[85,0,0.0],"enzzo":[12,0,0.0],"faaz":[11,0,0.0],"gabrielalexande":[6,0,0.0],"garrus":[98,0,0.0],"giovanii":[11,0,0.0],"greatness":[39,10,0.0],"grimm":[94,0,0.0],"hawkeye":[22,0,0.0],"holter":[36,0,0.0],"huckston":[82,0,0.0],"izaic":[6,0,0.0],"jaddiel":[11,0,0.0],"jahkhi":[11,0,0.0],"jaiiden":[6,0,0.0],"jansiel":[56,0,0.0],"jayonn":[21,0,0.0],"jeiren":[83,0,0.0],"jonam":[6,0,0.0],"jysaiah":[6,0,0.0],"jziah":[6,0,0.0],"kaibren":[6,0,0.0],"kaiiden":[6,0,0.0],"kaladin":[695,0,0.5684],"keeng":[6,0,0.0],"kentyn":[23,0,0.0],"khyair":[127,0,0.4208],"kingjosiah":[76,0,0.0],"kivan":[6,0,0.0],"knightly":[61,42,0.2384],"konley":[13,21,0.0],"kyrei":[36,0,0.0],"liiam":[18,0,0.0],"lontrell":[6,0,0.0],"macklan":[132,0,0.4241],"macson":[55,0,0.0],"maddan":[11,0,0.0],"makeo":[44,0,0.0],"maksen":[17,0,0.0],"matviy":[80,0,0.0],"maxamis":[6,0,0.0],"mayko":[12,0,0.0],"mesut":[6,0,0.0],"moxley":[92,22,0.332],"muzik":[11,0,0.0],"neako":[11,0,0.0],"niccoli":[6,0,0.0],"nishal":[43,0,0.0],"noahalexander":[38,0,0.0],"nouman":[75,0,0.0],"noureddine":[6,0,0.0],"nyxon":[111,0,0.4091],"oakes":[226,0,0.4708],"odinn":[109,0,0.4075],"olamiposi":[21,12,0.0],"palash":[28,0,0.0],"poyraz":[91,0,0.0],"rhoen":[65,0,0.0],"riggen":[35,0,0.0],"rockston":[25,0,0.0],"roham":[28,0,0.0],"rueger":[56,0,0.0],"rufio":[17,0,0.0],"ryston":[6,0,0.0],"saarang":[17,0,0.0],"saugat":[19,0,0.0],"sennett":[6,0,0.0],"sharav":[43,0,0.0],"sj":[42,0,0.0],"srithik":[34,0,0.0],"sudeys":[42,0,0.0],"swapnil":[11,0,0.0],"syhir":[28,0,0.0],"tatsuki":[12,0,0.0],"taymur":[11,0,0.0],"tennison":[44,7,0.0],"thienlong":[6,0,0.0],"tilan":[6,0,0.0],"veeraj":[43,0,0.0],"venture":[75,0,0.0],"xaivion":[6,0,0.0],"xaniel":[11,0,0.0],"xzayvien":[18,0,0.0],"yafi":[16,0,0.0],"yahli":[19,17,0.0],"yoriel":[34,0,0.0],"yuze":[17,0,0.0],"zaydian":[35,0,0.0],"zohan":[495,0,0.5389],"zymair":[18,0,0.0],"aadrit":[27,0,0.0],"aansh":[41,0,0.0],"aarohan":[24,0,0.0],"aathan":[5,0,0.0],"aazan":[5,0,0.0],"abdalrhman":[5,0,0.0],"abderrahman":[5,0,0.0],"abdulbari":[10,0,0.0],"acein":[10,0,0.0],"adikus":[5,0,0.0],"ahaziah":[5,0,0.0],"aian":[11,0,0.0],"aidar":[11,0,0.0],"aiyan":[46,0,0.0],"akayden":[5,0,0.0],"akos":[5,0,0.0],"akshan":[5,0,0.0],"aldrik":[11,0,0.0],"anagh":[38,0,0.0],"anchor":[141,0,0.4298],"annon":[5,0,0.0],"anshveer":[5,0,0.0],"anze":[33,0,0.0],"ar":[5,0,0.0],"archan":[12,0,0.0],"arhant":[29,0,0.0],"arkadian":[5,0,0.0],"arlex":[11,0,0.0],"arshveer":[10,0,0.0],"ashoka":[10,0,0.0],"ashor":[23,0,0.0],"aswath":[5,0,0.0],"augustyn":[20,0,0.0],"aumi":[5,0,0.0],"avighna":[15,11,0.0],"axal":[16,0,0.0],"bekett":[11,0,0.0],"benjammin":[5,0,0.0],"benley":[5,0,0.0],"bentz":[5,0,0.0],"biel":[68,0,0.0],"bodhan":[5,0,0.0],"boyan":[102,0,0.4017],"braesen":[5,0,0.0],"braxley":[211,49,0.392],"braxx":[30,0,0.0],"breiden":[20,0,0.0],"brekon":[5,0,0.0],"camm":[5,0,0.0],"campton":[16,0,0.0],"cardier":[47,0,0.0],"carrion":[5,0,0.0],"cavari":[10,0,0.0],"chimaobim":[28,0,0.0],"chinomso":[5,0,0.0],"cohyn":[17,0,0.0],"collynn":[5,11,0.0],"corbon":[5,0,0.0],"cosmas":[42,0,0.0],"crossley":[5,0,0.0],"cyaire":[187,0,0.4544],"cylen":[25,0,0.0],"dainan":[5,0,0.0],"dakarion":[23,0,0.0],"daler":[41,0,0.0],"damiann":[10,0,0.0],"damonee":[15,0,0.0],"damonii":[30,12,0.0],"damyrion":[5,0,0.0],"dashal":[18,0,0.0],"daziel":[57,0,0.0],"delantae":[5,0,0.0],"dextyn":[33,0,0.0],"deymian":[5,0,0.0],"divyansh":[96,0,0.0],"diyon":[31,0,0.0],"dmir":[100,0,0.4],"domoni":[10,0,0.0],"ducati":[5,0,0.0],"ebben":[5,0,0.0],"eijah":[5,0,0.0],"eivin":[357,0,0.5105],"eldion":[5,0,0.0],"elite":[66,11,0.0],"emric":[255,0,0.4813],"emryk":[45,0,0.0],"esaie":[17,0,0.0],"ethanjay":[5,0,0.0],"evran":[11,0,0.0],"exzander":[5,0,0.0],"gahan":[22,0,0.0],"georden":[5,0,0.0],"geriel":[10,0,0.0],"godrick":[16,0,0.0],"great":[51,0,0.0],"guilmar":[5,0,0.0],"haochen":[36,0,0.0],"haoyang":[10,0,0.0],"hattan":[76,0,0.0],"hawthorn":[102,0,0.4017],"hendryx":[189,49,0.3775],"hsa":[15,0,0.0],"hutchins":[15,0,0.0],"iggy":[69,0,0.0],"ignacy":[14,0,0.0],"ikaia":[86,0,0.0],"ikeer":[17,0,0.0],"irael":[5,0,0.0],"itan":[23,0,0.0],"iyaad":[41,0,0.0],"izzik":[5,0,0.0],"jabrayden":[5,0,0.0],"jacaiden":[33,0,0.0],"jacobmatthew":[10,0,0.0],"jahongir":[33,0,0.0],"jahseer":[23,0,0.0],"jaicion":[110,0,0.4083],"jaidenn":[11,0,0.0],"jaithen":[5,0,0.0],"jakkson":[5,0,0.0],"jameris":[5,0,0.0],"jandriel":[59,0,0.0],"jarimiah":[5,0,0.0],"jaseem":[27,0,0.0],"jaspen":[58,17,0.0],"jaspyr":[5,0,0.0],"jaxsten":[86,0,0.0],"jaxxyn":[65,0,0.0],"jayaun":[5,0,0.0],"jaysion":[85,0,0.0],"jayveer":[29,0,0.0],"jayzin":[17,0,0.0],"jceon":[233,0,0.4735],"jeser":[11,0,0.0],"jeycob":[126,0,0.4201],"jhaki":[11,0,0.0],"jhaziel":[68,0,0.0],"jianny":[5,0,0.0],"jonibek":[17,0,0.0],"jovari":[5,0,0.0],"jsai":[17,0,0.0],"juwell":[10,0,0.0],"jvier":[5,0,0.0],"kadren":[5,0,0.0],"kaecyn":[47,0,0.0],"kaimere":[39,0,0.0],"kaiston":[80,0,0.0],"kanish":[17,0,0.0],"karlson":[11,0,0.0],"kastiel":[203,0,0.4615],"kayceon":[377,0,0.5153],"keeston":[5,0,0.0],"keighton":[10,0,0.0],"keing":[12,0,0.0],"kemran":[5,0,0.0],"kenaan":[54,0,0.0],"kenenna":[29,0,0.0],"kengi":[5,0,0.0],"khase":[57,0,0.0],"khiron":[18,0,0.0],"kiylan":[16,0,0.0],"kjay":[21,0,0.0],"koltynn":[5,0,0.0],"kove":[351,115,0.402],"krispin":[5,0,0.0],"kunsh":[5,0,0.0],"laike":[21,0,0.0],"larsson":[5,0,0.0],"layland":[19,0,0.0],"leallen":[5,0,0.0],"leejay":[5,0,0.0],"leoben":[5,0,0.0],"liedson":[5,0,0.0],"liloa":[5,0,0.0],"linux":[82,5,0.0],"lohan":[53,0,0.0],"maddoux":[5,0,0.0],"mahkhi":[5,0,0.0],"majour":[200,0,0.4602],"makauri":[5,0,0.0],"malikaih":[5,0,0.0],"maric":[5,0,0.0],"marking":[26,0,0.0],"marqell":[5,0,0.0],"marz":[215,63,0.378],"maxxamus":[5,0,0.0],"mayon":[21,0,0.0],"mazhar":[5,0,0.0],"medwin":[5,0,0.0],"melakhi":[10,0,0.0],"melo":[421,0,0.5249],"messer":[63,0,0.0],"meyson":[39,0,0.0],"mezziah":[75,0,0.0],"mikha":[24,0,0.0],"mokshagna":[27,0,0.0],"muhaimin":[5,0,0.0],"munro":[35,0,0.0],"myler":[5,0,0.0],"nahel":[81,0,0.0],"naruto":[12,0,0.0],"nasai":[124,5,0.4058],"neithen":[10,0,0.0],"nikkolai":[28,0,0.0],"niyon":[5,0,0.0],"noelan":[34,0,0.0],"nyeim":[5,0,0.0],"oaklan":[272,0,0.4869],"ogheneruno":[23,6,0.0],"olasunkanmi":[5,0,0.0],"olijah":[35,0,0.0],"optimus":[5,0,0.0],"panth":[26,0,0.0],"patch":[15,0,0.0],"paxston":[13,0,0.0],"petrus":[5,0,0.0],"praharsh":[5,0,0.0],"premiere":[5,0,0.0],"princeten":[16,0,0.0],"racyn":[27,0,0.0],"rawlings":[150,141,0.254],"rhoman":[17,0,0.0],"rhydian":[320,0,0.501],"rixon":[81,0,0.0],"romit":[5,0,0.0],"rowden":[5,0,0.0],"rubio":[5,0,0.0],"ryujin":[14,0,0.0],"ryuki":[5,0,0.0],"samraj":[28,0,0.0],"santrez":[5,0,0.0],"schaffer":[5,0,0.0],"scholar":[10,0,0.0],"sebestian":[5,0,0.0],"sepp":[5,0,0.0],"shashanth":[5,0,0.0],"shuraim":[28,0,0.0],"shylon":[5,0,0.0],"siaki":[10,0,0.0],"sias":[10,0,0.0],"sidhartha":[5,0,0.0],"siyuan":[35,0,0.0],"sodbileg":[5,0,0.0],"steeler":[11,0,0.0],"syer":[89,0,0.0],"syliss":[5,0,0.0],"taddeo":[22,0,0.0],"tahitoa":[5,0,0.0],"tailon":[15,0,0.0],"tawfeeq":[10,0,0.0],"timaj":[5,0,0.0],"traetyn":[5,0,0.0],"travie":[10,0,0.0],"trex":[5,0,0.0],"trintyn":[5,0,0.0],"tugg":[5,0,0.0],"turin":[5,0,0.0],"tuvya":[5,0,0.0],"tygan":[5,0,0.0],"tyquis":[5,0,0.0],"tyzion":[5,0,0.0],"ujjwal":[5,0,0.0],"umit":[5,0,0.0],"vai":[5,0,0.0],"vasilije":[36,0,0.0],"vsevolod":[10,0,0.0],"welker":[10,0,0.0],"wulfric":[81,0,0.0],"xabriel":[5,0,0.0],"xachery":[5,0,0.0],"xaedyn":[5,0,0.0],"yabriel":[5,0,0.0],"yadhiel":[5,0,0.0],"yasiin":[90,0,0.0],"yaxel":[26,0,0.0],"yeniel":[44,0,0.0],"yuda":[32,0,0.0],"yuga":[10,0,0.0],"yuv":[25,0,0.0],"zahar":[103,0,0.4026],"zahmire":[15,0,0.0],"zakiel":[12,0,0.0],"zandur":[5,0,0.0],"zaryk":[10,0,0.0],"zavi":[80,5,0.0],"zaylor":[92,0,0.0],"zaymir":[47,0,0.0],"zayvin":[72,0,0.0],"zekai":[125,0,0.4194],"zephyn":[10,0,0.0],"zhyir":[15,0,0.0],"zkai":[25,0,0.0],"zorien":[5,0,0.0],"zubeyr":[21,0,0.0],"zyhier":[24,0,0.0],"zyrin":[27,0,0.0],"zytaevius":[5,0,0.0],"vanellope":[0,780,0.5784],"delayza":[0,341,0.5066],"adalind":[0,778,0.5782],"jonylah":[0,28,0.0],"daleiza":[0,160,0.4408],"daleisa":[0,79,0.0],"dalayza":[0,232,0.4731],"daleyssa":[0,127,0.4208],"ariebella":[0,46,0.0],"jennicka":[0,15,0.0],"stassi":[0,350,0.5088],"jayceona":[0,50,0.0],"dalexa":[0,184,0.453],"graceleigh":[0,99,0.0],"kemely":[0,39,0.0],"lennan":[5,140,0.4174],"pihu":[0,142,0.4305],"spruha":[0,100,0.4],"hypatia":[0,91,0.0],"idalie":[0,118,0.4144],"mayalen":[0,11,0.0],"mirola":[0,32,0.0],"sansa":[0,244,0.4775],"akemy":[0,16,0.0],"aleciram":[0,10,0.0],"ashvika":[0,94,0.0],"blakeli":[0,84,0.0],"burklee":[0,100,0.4],"eriane":[0,48,0.0],"eribella":[0,10,0.0],"kaliannah":[0,30,0.0],"maevyn":[0,370,0.5136],"mckynley":[0,27,0.0],"paysleigh":[0,67,0.0],"sanvitha":[0,38,0.0],"sofiamarie":[0,21,0.0],"zaleigha":[0,45,0.0],"aaima":[0,120,0.4158],"aavya":[0,814,0.5821],"azealia":[0,84,0.0],"caisley":[0,182,0.452],"elliekate":[0,26,0.0],"eriyan":[0,31,0.0],"faraday":[0,30,0.0],"jayceonna":[0,26,0.0],"joory":[0,76,0.0],"kabri":[0,9,0.0],"kahleesi":[0,122,0.4173],"karyah":[0,20,0.0],"kausar":[0,71,0.0],"maewyn":[0,9,0.0],"malala":[0,95,0.0],"marseille":[0,34,0.0],"nadalynn":[0,48,0.0],"pragati":[0,9,0.0],"renesmay":[0,119,0.4151],"renezmee":[0,34,0.0],"rylieann":[0,15,0.0],"vanelope":[0,87,0.0],"venelope":[0,76,0.0],"wrenly":[15,802,0.5718],"adileigh":[0,42,0.0],"alanood":[0,30,0.0],"alesiram":[0,13,0.0],"azayliah":[0,78,0.0],"cariya":[0,8,0.0],"cathaleya":[0,105,0.4042],"ellieann":[0,96,0.0],"elliemarie":[0,23,0.0],"ellika":[0,15,0.0],"emmasofia":[0,16,0.0],"emyree":[0,8,0.0],"esmarie":[0,85,0.0],"gracely":[0,45,0.0],"happiness":[0,112,0.4098],"hollynd":[0,58,0.0],"jacionna":[0,8,0.0],"jahriah":[5,8,0.0],"jaiannah":[0,30,0.0],"juman":[0,81,0.0],"jurie":[0,21,0.0],"kashaf":[0,14,0.0],"macilyn":[0,13,0.0],"makenzlee":[0,38,0.0],"paridhi":[0,26,0.0],"pemberley":[0,56,0.0],"prim":[0,217,0.4673],"rahf":[0,23,0.0],"riyanshi":[0,137,0.4273],"rosellie":[0,13,0.0],"rubyjane":[0,8,0.0],"sahiry":[0,8,0.0],"sinit":[0,13,0.0],"sirine":[0,35,0.0],"trinley":[0,18,0.0],"udy":[0,79,0.0],"valentyna":[0,61,0.0],"wrenley":[110,6077,0.7448],"yalexia":[0,8,0.0],"zakylah":[0,25,0.0],"zmaya":[0,13,0.0],"zoiie":[0,8,0.0],"aalea":[0,7,0.0],"aaliana":[0,23,0.0],"aanyla":[0,7,0.0],"adithri":[0,29,0.0],"aenea":[0,17,0.0],"aeriella":[0,47,0.0],"akerra":[0,7,0.0],"alizabella":[0,12,0.0],"amoure":[0,53,0.0],"annalayah":[0,63,0.0],"annelee":[0,12,0.0],"annily":[0,7,0.0],"aralee":[0,25,0.0],"avnoor":[0,202,0.4611],"azria":[0,17,0.0],"benni":[17,94,0.3464],"braelei":[0,7,0.0],"carlyrose":[0,23,0.0],"chikaima":[0,82,0.0],"diyora":[0,76,0.0],"ellysen":[0,7,0.0],"emillianna":[0,7,0.0],"envie":[0,13,0.0],"eylul":[0,23,0.0],"fadak":[0,12,0.0],"farzeen":[0,7,0.0],"greylyn":[10,40,0.0],"hadelyn":[0,44,0.0],"harbour":[24,109,0.3481],"hartlie":[0,28,0.0],"ivoryanna":[0,7,0.0],"ivoryrose":[0,7,0.0],"izna":[0,85,0.0],"jaswiry":[0,7,0.0],"jayciana":[0,27,0.0],"jazzilynn":[0,7,0.0],"jeanney":[0,7,0.0],"jenabelle":[0,12,0.0],"josianna":[0,22,0.0],"kaylahni":[0,164,0.443],"keleni":[0,7,0.0],"kinsli":[0,40,0.0],"kinzli":[0,25,0.0],"koemi":[0,12,0.0],"kyleerae":[0,7,0.0],"laklynn":[0,84,0.0],"laylanee":[0,15,0.0],"lennyx":[129,209,0.3127],"lovea":[0,12,0.0],"marillany":[0,13,0.0],"markan":[0,91,0.0],"mayada":[0,7,0.0],"maydelyn":[0,7,0.0],"miagrace":[0,60,0.0],"miiangel":[0,7,0.0],"millah":[0,18,0.0],"niralya":[0,129,0.4221],"penellope":[0,92,0.0],"rarity":[0,108,0.4067],"reeselynn":[0,7,0.0],"renezmay":[0,23,0.0],"rileyn":[0,7,0.0],"rinley":[6,199,0.4488],"romilly":[0,112,0.4098],"spriha":[0,19,0.0],"stellamae":[0,42,0.0],"summaya":[0,7,0.0],"thisbe":[0,23,0.0],"troian":[0,38,0.0],"vidisha":[0,7,0.0],"vivenne":[0,7,0.0],"wynnie":[0,189,0.4553],"xaylee":[0,92,0.0],"xyra":[0,84,0.0],"yitong":[0,17,0.0],"yixin":[0,54,0.0],"zayliana":[0,80,0.0],"zendaiya":[0,17,0.0],"zolah":[0,65,0.0],"aadvika":[0,132,0.4241],"aalimah":[0,11,0.0],"aaniylah":[0,11,0.0],"aarolyn":[0,11,0.0],"abry":[0,13,0.0],"abryella":[0,17,0.0],"adalize":[0,6,0.0],"adalynd":[0,99,0.0],"addylen":[0,6,0.0],"adhara":[0,1320,0.6241],"aelani":[0,40,0.0],"aemelia":[0,21,0.0],"agnessa":[0,11,0.0],"aibileen":[0,22,0.0],"alivianna":[0,54,0.0],"amanat":[0,125,0.4194],"amarley":[0,6,0.0],"amella":[0,18,0.0],"analeiah":[0,57,0.0],"anavaeh":[0,16,0.0],"anibella":[0,6,0.0],"annayeli":[0,29,0.0],"annzlee":[0,13,0.0],"ariarose":[0,77,0.0],"arieah":[0,22,0.0],"arii":[0,92,0.0],"arleena":[0,6,0.0],"aroha":[0,12,0.0],"athira":[0,120,0.4158],"aubreerose":[0,16,0.0],"aurbree":[0,42,0.0],"avaa":[0,90,0.0],"avareigh":[0,11,0.0],"averley":[0,93,0.0],"ayzel":[0,307,0.4974],"azylah":[0,99,0.0],"balqis":[0,18,0.0],"beah":[0,6,0.0],"beighley":[0,11,0.0],"biak":[22,57,0.0],"bralei":[0,6,0.0],"brentleigh":[0,35,0.0],"calaysia":[0,6,0.0],"calimarie":[0,16,0.0],"carabelle":[0,11,0.0],"carlaya":[0,16,0.0],"catalya":[0,33,0.0],"catelaya":[0,41,0.0],"chiemela":[0,14,0.0],"chizitere":[5,18,0.0],"daliylah":[0,40,0.0],"danielis":[0,18,0.0],"daviyah":[0,6,0.0],"deeasia":[0,6,0.0],"derriyah":[0,12,0.0],"dezyah":[0,6,0.0],"elynne":[0,6,0.0],"emalynne":[0,11,0.0],"embri":[0,73,0.0],"emerlee":[0,141,0.4298],"emerlynn":[0,155,0.4381],"emilliana":[0,33,0.0],"ephratah":[0,12,0.0],"farzona":[0,68,0.0],"gemmalynn":[0,6,0.0],"genisys":[0,36,0.0],"ghala":[0,70,0.0],"haileyrose":[0,11,0.0],"haislee":[0,503,0.5403],"hazeleigh":[0,243,0.4771],"hinsley":[0,70,0.0],"jaenelle":[0,6,0.0],"janeily":[0,6,0.0],"jazay":[0,6,0.0],"jeliana":[0,6,0.0],"jiyu":[0,6,0.0],"joeylynn":[0,6,0.0],"jourdynn":[0,25,0.0],"juliemarie":[0,6,0.0],"kaalyn":[0,12,0.0],"kaebri":[0,6,0.0],"kaielle":[0,60,0.0],"kailanny":[0,55,0.0],"kailayah":[0,12,0.0],"kaithleen":[0,11,0.0],"kaleemah":[0,6,0.0],"kaliee":[0,31,0.0],"kalirose":[0,76,0.0],"kalisse":[0,6,0.0],"kamaliyah":[0,6,0.0],"kamilyah":[0,11,0.0],"kataleiya":[0,16,0.0],"keauri":[0,12,0.0],"keimiyah":[0,11,0.0],"kinzington":[0,6,0.0],"kiyann":[0,6,0.0],"kmarie":[0,55,0.0],"kylierose":[0,14,0.0],"kynder":[0,6,0.0],"kynndal":[0,6,0.0],"lakelee":[0,107,0.4059],"leddy":[0,153,0.4369],"lulya":[0,6,0.0],"luzma":[0,135,0.4261],"lynnly":[0,30,0.0],"mabelyn":[0,16,0.0],"mackynzi":[0,26,0.0],"maclynn":[0,61,0.0],"maelis":[0,15,0.0],"malahni":[0,207,0.4632],"mariyani":[0,11,0.0],"marleyann":[0,28,0.0],"maruska":[0,35,0.0],"mawada":[0,119,0.4151],"mayaar":[0,6,0.0],"merolla":[0,13,0.0],"miaha":[0,6,0.0],"namyia":[0,6,0.0],"nasly":[0,134,0.4254],"nicasia":[0,11,0.0],"niyelle":[0,45,0.0],"novalyn":[0,316,0.4999],"ofri":[0,6,0.0],"omotara":[0,17,0.0],"oswyn":[11,6,0.0],"paightyn":[0,6,0.0],"paitlynn":[0,6,0.0],"pratiksha":[0,6,0.0],"prezlee":[0,28,0.0],"raheemah":[0,11,0.0],"raida":[0,35,0.0],"raifah":[0,6,0.0],"reetal":[0,11,0.0],"remley":[0,22,0.0],"rhyla":[0,60,0.0],"robiya":[0,62,0.0],"rocklynn":[0,59,0.0],"rushda":[0,60,0.0],"sadan":[0,42,0.0],"seleyna":[0,6,0.0],"siba":[0,12,0.0],"skailar":[0,36,0.0],"skiilar":[0,6,0.0],"snowy":[0,11,0.0],"sopheia":[0,6,0.0],"storii":[0,128,0.4214],"syonna":[0,13,0.0],"umamah":[0,12,0.0],"urielle":[0,59,0.0],"vincci":[0,6,0.0],"xuri":[0,281,0.4897],"zanoviah":[0,28,0.0],"zarmina":[0,14,0.0],"zaryha":[0,6,0.0],"zasia":[0,6,0.0],"zeenia":[0,6,0.0],"zilin":[0,6,0.0],"zirel":[0,23,0.0],"zoelyn":[0,6,0.0],"zyahna":[0,12,0.0],"zymya":[0,6,0.0],"aadrika":[0,33,0.0],"aaliyaa":[0,5,0.0],"aarie":[0,10,0.0],"abilyn":[0,5,0.0],"adalade":[0,5,0.0],"adaleya":[0,125,0.4194],"adaliyah":[0,61,0.0],"adelais":[0,27,0.0],"adelinn":[0,34,0.0],"adelinne":[0,84,0.0],"adirah":[0,44,0.0],"adorae":[0,5,0.0],"advitha":[0,48,0.0],"adylina":[0,12,0.0],"aeri":[0,32,0.0],"aheli":[0,5,0.0],"ahlanie":[0,16,0.0],"aiona":[0,5,0.0],"airabelle":[0,11,0.0],"aivery":[0,5,0.0],"aizleigh":[0,5,0.0],"akosita":[0,5,0.0],"alae":[0,21,0.0],"aleighana":[0,12,0.0],"alexavia":[0,5,0.0],"aleyza":[0,443,0.5293],"alhanouf":[0,10,0.0],"aliliana":[0,40,0.0],"alinea":[0,95,0.0],"aljoharah":[0,10,0.0],"alleigha":[0,17,0.0],"allessa":[0,5,0.0],"allimae":[0,5,0.0],"allionna":[0,5,0.0],"alohna":[0,5,0.0],"amaleah":[0,17,0.0],"amariani":[0,5,0.0],"amariauna":[0,5,0.0],"ameeya":[0,15,0.0],"amino":[0,5,0.0],"amvi":[0,5,0.0],"amyrikal":[0,5,0.0],"analah":[0,33,0.0],"anariya":[0,5,0.0],"anayaa":[0,14,0.0],"angelith":[0,11,0.0],"arahbella":[0,15,0.0],"aralis":[0,5,0.0],"arayeli":[0,10,0.0],"arrabelle":[0,10,0.0],"aryane":[0,10,0.0],"ashadieeyah":[0,5,0.0],"athenna":[0,57,0.0],"atoli":[0,5,0.0],"aubreauna":[0,5,0.0],"aubreella":[0,12,0.0],"aubryelle":[0,16,0.0],"auroralynn":[0,5,0.0],"avahlyn":[0,5,0.0],"avaia":[0,69,0.0],"avamonroe":[0,5,0.0],"avanthi":[0,5,0.0],"aveana":[0,17,0.0],"avelle":[0,5,0.0],"averiee":[0,19,0.0],"avivah":[0,10,0.0],"avreet":[0,33,0.0],"avriella":[0,70,0.0],"ayanne":[0,5,0.0],"aysu":[0,17,0.0],"ayvani":[0,5,0.0],"ayviana":[0,54,0.0],"azaireyah":[0,5,0.0],"azalaya":[0,63,0.0],"azaleigha":[0,5,0.0],"azaleya":[0,108,0.4067],"azilynn":[0,10,0.0],"baylaa":[0,5,0.0],"bayleen":[0,5,0.0],"behati":[0,63,0.0],"bexlee":[0,468,0.534],"bexleigh":[0,362,0.5117],"blaiklee":[0,70,0.0],"braelinn":[0,5,0.0],"braeya":[0,43,0.0],"brantlie":[0,16,0.0],"brianney":[0,5,0.0],"brighley":[0,20,0.0],"brinnly":[0,10,0.0],"brixtyn":[93,147,0.2916],"brynnlea":[0,31,0.0],"cahya":[0,15,0.0],"calani":[0,370,0.5136],"camyrah":[0,5,0.0],"carielle":[0,12,0.0],"cattalaya":[0,5,0.0],"ceyana":[0,5,0.0],"charlierae":[0,34,0.0],"charlotterose":[0,59,0.0],"chikamara":[0,5,0.0],"chikamso":[66,43,0.2467],"chrisel":[0,5,0.0],"citori":[0,5,0.0],"coralai":[0,40,0.0],"coralea":[0,17,0.0],"corii":[0,5,0.0],"crosslyn":[0,5,0.0],"cya":[0,5,0.0],"daciana":[0,29,0.0],"dalanee":[0,5,0.0],"dalexia":[0,5,0.0],"daleyzah":[0,44,0.0],"deleyza":[0,68,0.0],"denyah":[0,5,0.0],"dezani":[0,5,0.0],"dhakirah":[0,5,0.0],"durva":[0,11,0.0],"dyuti":[0,16,0.0],"edenrose":[0,10,0.0],"eireen":[0,5,0.0],"eizabella":[0,16,0.0],"eizley":[0,10,0.0],"elaiya":[0,94,0.0],"elayiah":[0,5,0.0],"elayla":[0,16,0.0],"elionna":[0,37,0.0],"ellajo":[0,22,0.0],"elliora":[0,60,0.0],"ellodie":[0,68,0.0],"ellynn":[0,14,0.0],"ellyza":[0,20,0.0],"elsabeth":[0,12,0.0],"elyda":[0,5,0.0],"emilyna":[0,5,0.0],"emiry":[0,5,0.0],"emmabella":[0,11,0.0],"emmey":[0,5,0.0],"emyrie":[0,19,0.0],"eriani":[0,5,0.0],"eslem":[0,5,0.0],"esohe":[0,10,0.0],"essined":[0,5,0.0],"estellise":[0,10,0.0],"ettalyn":[0,24,0.0],"ezariyah":[0,22,0.0],"eziyah":[26,10,0.0],"fabriana":[0,5,0.0],"fayha":[0,10,0.0],"faylin":[0,12,0.0],"feride":[0,11,0.0],"finlea":[0,5,0.0],"fynnley":[38,51,0.0],"gatlynn":[13,55,0.0],"geraldinne":[0,5,0.0],"gillianna":[0,10,0.0],"gracelynd":[0,5,0.0],"gracilynn":[0,22,0.0],"graycelyn":[0,27,0.0],"graziana":[0,5,0.0],"hajara":[0,33,0.0],"hannalise":[0,5,0.0],"haripriya":[0,5,0.0],"harlequinn":[0,21,0.0],"harsimrat":[0,5,0.0],"hazlee":[0,199,0.4598],"hendley":[0,5,0.0],"heylen":[0,43,0.0],"hulali":[0,5,0.0],"huxlee":[264,102,0.3698],"ibtihaj":[0,35,0.0],"ilihia":[0,16,0.0],"illythia":[0,5,0.0],"ilyza":[0,5,0.0],"imisioluwa":[6,39,0.0],"inaayah":[0,83,0.0],"ipsa":[0,5,0.0],"irani":[0,12,0.0],"isabellasophia":[0,5,0.0],"isabeya":[0,5,0.0],"jadiana":[0,5,0.0],"jaelanie":[0,13,0.0],"jakalynn":[0,5,0.0],"jakiylah":[0,5,0.0],"jakylia":[0,5,0.0],"jalayha":[0,5,0.0],"janiely":[0,5,0.0],"jasiana":[0,5,0.0],"jaunie":[0,5,0.0],"jaydeliz":[0,12,0.0],"jaylanis":[0,49,0.0],"jayly":[0,5,0.0],"jazilynn":[0,12,0.0],"jazzmynn":[0,10,0.0],"jelaina":[0,5,0.0],"jeneba":[0,5,0.0],"jennabella":[0,5,0.0],"jenyka":[0,5,0.0],"jesara":[0,5,0.0],"jezebell":[0,10,0.0],"jhiya":[0,5,0.0],"jhournee":[0,39,0.0],"jialin":[0,5,0.0],"jleah":[0,11,0.0],"joelyne":[0,5,0.0],"jordee":[0,5,0.0],"josielynn":[0,28,0.0],"josslynne":[0,5,0.0],"jurnii":[0,26,0.0],"jyiah":[0,5,0.0],"kaileigha":[0,5,0.0],"kailiah":[0,16,0.0],"kalanni":[0,71,0.0],"kaleela":[0,5,0.0],"kaliey":[0,5,0.0],"kalisee":[0,5,0.0],"kambriah":[0,5,0.0],"kamdynn":[34,70,0.2715],"karielys":[0,52,0.0],"karliee":[0,58,0.0],"kateleya":[0,16,0.0],"kavayah":[0,35,0.0],"kayleeana":[0,20,0.0],"kayleeonna":[0,10,0.0],"kayleh":[0,5,0.0],"kayzlie":[0,42,0.0],"kemarii":[5,17,0.0],"kendley":[0,5,0.0],"kenzingtyn":[0,5,0.0],"keylianis":[0,67,0.0],"keyren":[58,5,0.0],"kharlee":[0,51,0.0],"khaydence":[0,5,0.0],"khylynn":[0,36,0.0],"khymani":[5,5,0.0],"kierslyn":[0,5,0.0],"kimoya":[0,5,0.0],"kimura":[0,23,0.0],"kinneret":[0,5,0.0],"kleopatra":[0,25,0.0],"kloeigh":[0,5,0.0],"kreelynn":[0,5,0.0],"kumani":[0,21,0.0],"kundana":[0,10,0.0],"kyhlee":[0,5,0.0],"lacelyn":[0,5,0.0],"laileigh":[0,5,0.0],"lailonnie":[0,15,0.0],"lakenzi":[0,5,0.0],"lakley":[0,5,0.0],"lariel":[0,16,0.0],"leighlynn":[0,20,0.0],"leonnah":[0,10,0.0],"leriyah":[0,25,0.0],"lexilynn":[0,5,0.0],"lillyah":[0,5,0.0],"linen":[0,17,0.0],"livee":[0,10,0.0],"londonn":[0,10,0.0],"lucja":[0,5,0.0],"lucya":[0,10,0.0],"lunamarie":[0,74,0.0],"lwren":[0,14,0.0],"macelynn":[0,56,0.0],"madiyson":[0,5,0.0],"maeliyah":[0,5,0.0],"maezy":[0,10,0.0],"mahie":[0,5,0.0],"mahirah":[0,27,0.0],"maiha":[0,5,0.0],"makanalei":[0,10,0.0],"makkiyah":[0,5,0.0],"makynlei":[0,15,0.0],"malaisia":[0,15,0.0],"malanya":[0,5,0.0],"malulani":[0,11,0.0],"manogna":[0,11,0.0],"marleigha":[0,19,0.0],"masynn":[0,5,0.0],"mauriella":[0,5,0.0],"mayher":[0,5,0.0],"mayiah":[0,5,0.0],"mayssa":[0,28,0.0],"mazarine":[0,41,0.0],"mckensley":[0,5,0.0],"mckenziee":[0,11,0.0],"melanya":[0,10,0.0],"meleyah":[0,5,0.0],"mellodie":[0,5,0.0],"meredy":[0,15,0.0],"meret":[0,5,0.0],"midhuna":[0,21,0.0],"mijoy":[0,17,0.0],"mileyna":[0,11,0.0],"milliona":[0,5,0.0],"miori":[0,56,0.0],"misheeta":[0,5,0.0],"miura":[0,45,0.0],"moxxi":[0,16,0.0],"mubina":[0,114,0.4114],"myair":[46,10,0.0],"mylaa":[0,29,0.0],"myrra":[0,5,0.0],"nahely":[0,5,0.0],"nalaiyah":[0,50,0.0],"nalyn":[0,5,0.0],"navee":[0,150,0.4352],"navey":[0,173,0.4476],"nayanah":[0,5,0.0],"nayna":[0,19,0.0],"nayvia":[0,5,0.0],"nayvie":[0,209,0.464],"neylah":[0,11,0.0],"niamarie":[0,5,0.0],"nivayah":[0,10,0.0],"niyomi":[0,108,0.4067],"nooriya":[0,24,0.0],"noraleigh":[0,17,0.0],"nouf":[0,51,0.0],"nyahlee":[0,11,0.0],"nylae":[0,5,0.0],"oghosa":[0,5,0.0],"olianna":[0,26,0.0],"olivija":[0,5,0.0],"oluwadunmininu":[0,15,0.0],"parvathi":[0,5,0.0],"pashyn":[0,18,0.0],"pasleigh":[0,42,0.0],"pasley":[0,5,0.0],"paxley":[0,36,0.0],"payzli":[0,14,0.0],"peighten":[0,11,0.0],"persephony":[0,12,0.0],"phalynn":[0,10,0.0],"phebee":[0,5,0.0],"portlyn":[0,68,0.0],"potter":[20,5,0.0],"pranitha":[0,10,0.0],"pranshi":[0,150,0.4352],"priella":[0,10,0.0],"prudance":[0,5,0.0],"quinnlee":[0,152,0.4364],"quora":[0,19,0.0],"qynn":[0,5,0.0],"raelah":[0,64,0.0],"raeliegh":[0,13,0.0],"rainne":[0,11,0.0],"rakshitha":[0,5,0.0],"ramzie":[0,12,0.0],"ranezmae":[0,33,0.0],"rayegan":[0,5,0.0],"rayelyn":[0,26,0.0],"realyn":[0,10,0.0],"rebelle":[0,51,0.0],"reinaliz":[0,5,0.0],"relynn":[0,5,0.0],"retag":[0,10,0.0],"rhiyan":[0,60,0.0],"riha":[0,26,0.0],"riverlyn":[0,524,0.5439],"riyann":[0,31,0.0],"ro":[34,24,0.0],"roze":[0,69,0.0],"ruqaiya":[0,40,0.0],"saavi":[0,232,0.4731],"sadeigh":[0,27,0.0],"saedie":[0,5,0.0],"samonie":[0,5,0.0],"samyla":[0,42,0.0],"sanibel":[0,5,0.0],"sarahbella":[0,11,0.0],"sarani":[0,10,0.0],"savara":[0,5,0.0],"saveya":[0,26,0.0],"seerit":[0,16,0.0],"sehajpreet":[5,16,0.0],"seoyeon":[0,5,0.0],"serae":[0,5,0.0],"sevynn":[58,290,0.4236],"shaikha":[0,15,0.0],"shekhinah":[0,11,0.0],"sibilla":[0,5,0.0],"sierraleone":[0,5,0.0],"siqi":[0,11,0.0],"skilee":[0,5,0.0],"skylarmarie":[0,23,0.0],"skylarrae":[0,18,0.0],"skylit":[0,5,0.0],"skyly":[0,5,0.0],"solaine":[0,5,0.0],"sophiaisabella":[0,5,0.0],"steysi":[0,5,0.0],"surveen":[0,39,0.0],"tansi":[0,5,0.0],"tanushka":[0,5,0.0],"taraf":[0,41,0.0],"tayvionna":[0,5,0.0],"temprince":[0,5,0.0],"tennasyn":[0,10,0.0],"tleah":[0,5,0.0],"trejure":[0,27,0.0],"truli":[0,16,0.0],"tynzlee":[0,16,0.0],"vaira":[0,25,0.0],"vayah":[0,51,0.0],"verah":[0,33,0.0],"versavia":[0,16,0.0],"vitani":[0,27,0.0],"wareef":[0,5,0.0],"winrey":[0,27,0.0],"winterrose":[0,71,0.0],"xendaya":[0,35,0.0],"xyriah":[0,5,0.0],"yaalini":[0,20,0.0],"yahani":[0,10,0.0],"yahari":[6,30,0.0],"yailynn":[0,19,0.0],"yeicelyn":[0,5,0.0],"yiqing":[0,5,0.0],"yizelle":[0,5,0.0],"zaelia":[0,28,0.0],"zaely":[0,39,0.0],"zahmiya":[0,5,0.0],"zaney":[0,5,0.0],"zayleah":[0,53,0.0],"zayliah":[0,35,0.0],"zayona":[0,5,0.0],"zoeymarie":[0,15,0.0],"zoyah":[0,26,0.0],"zuheyla":[0,11,0.0],"zuleikha":[0,21,0.0],"zuriela":[0,22,0.0],"jaceyon":[570,0,0.5512],"jaeceon":[235,0,0.4742],"jayceion":[362,0,0.5117],"jaecion":[143,0,0.4311],"jcion":[65,0,0.0],"jayseon":[73,0,0.0],"kitai":[267,0,0.4853],"yetzael":[172,0,0.4471],"jaycean":[33,0,0.0],"jru":[724,199,0.4652],"goku":[122,0,0.4173],"hridaan":[135,0,0.4261],"jaiceion":[36,0,0.0],"jceion":[19,0,0.0],"nikson":[18,0,0.0],"oaks":[237,0,0.4749],"gurfateh":[241,0,0.4764],"jacieon":[98,0,0.0],"kendryk":[52,0,0.0],"makbel":[127,0,0.4208],"pranesh":[38,0,0.0],"raycen":[61,0,0.0],"roane":[48,0,0.0],"rydder":[17,0,0.0],"dechlan":[72,0,0.0],"gadsden":[45,0,0.0],"jayceeon":[21,0,0.0],"jayzeon":[21,0,0.0],"jazhiel":[110,0,0.4083],"kashtin":[101,0,0.4009],"minato":[116,0,0.4129],"vihas":[51,0,0.0],"zeiden":[33,0,0.0],"aayansh":[528,0,0.5445],"aidrick":[14,0,0.0],"ajayceon":[21,0,0.0],"alo":[84,5,0.0],"altaf":[14,0,0.0],"anmar":[29,0,0.0],"autzen":[13,0,0.0],"behruz":[34,0,0.0],"benzino":[21,0,0.0],"branham":[8,0,0.0],"brextyn":[147,0,0.4335],"copen":[51,0,0.0],"dheer":[46,0,0.0],"eldan":[13,0,0.0],"emmytt":[24,0,0.0],"esrael":[37,0,0.0],"hatch":[31,0,0.0],"huntlee":[166,215,0.2913],"ikher":[15,0,0.0],"jabraylin":[8,0,0.0],"jetziel":[33,0,0.0],"johnse":[51,0,0.0],"kahaan":[122,0,0.4173],"kaseton":[38,0,0.0],"kaze":[81,0,0.0],"loken":[42,0,0.0],"mantej":[13,0,0.0],"mordekai":[89,0,0.0],"rorke":[47,0,0.0],"saveer":[26,0,0.0],"zaroon":[45,0,0.0],"zorawar":[421,0,0.5249],"zylis":[19,0,0.0],"aadhi":[109,0,0.4075],"aciel":[63,0,0.0],"andino":[14,0,0.0],"arnay":[7,0,0.0],"aybel":[58,0,0.0],"bensley":[37,0,0.0],"blayson":[26,0,0.0],"boran":[23,0,0.0],"bourne":[22,0,0.0],"braxlee":[64,27,0.0],"brexten":[121,0,0.4166],"brookson":[83,0,0.0],"caesyn":[75,0,0.0],"calev":[57,0,0.0],"dabriyon":[7,0,0.0],"daedric":[56,0,0.0],"deelan":[7,0,0.0],"diyan":[186,0,0.4539],"duvier":[7,0,0.0],"dylhan":[7,0,0.0],"faaiz":[53,0,0.0],"getzel":[7,0,0.0],"gurtaaj":[7,0,0.0],"havok":[88,0,0.0],"imrane":[29,0,0.0],"jaceson":[23,0,0.0],"jacyon":[35,0,0.0],"jadeveon":[51,0,0.0],"jaseon":[43,0,0.0],"jaxstin":[39,0,0.0],"jaycian":[12,0,0.0],"jaycieon":[57,0,0.0],"jiyan":[160,0,0.4408],"jrew":[26,0,0.0],"kandyn":[7,0,0.0],"katai":[174,0,0.4481],"kawhi":[386,0,0.5173],"kayvien":[7,0,0.0],"khiryn":[15,0,0.0],"kroix":[79,0,0.0],"kyere":[64,0,0.0],"lhiam":[7,0,0.0],"liyam":[37,0,0.0],"lloyal":[42,0,0.0],"mo":[20,7,0.0],"navtej":[12,0,0.0],"nayvadius":[20,0,0.0],"noaah":[52,5,0.0],"nofer":[14,0,0.0],"oxford":[103,0,0.4026],"prometheus":[92,0,0.0],"rekker":[21,0,0.0],"sebaztian":[13,0,0.0],"shawaiz":[12,0,0.0],"shrihaan":[115,0,0.4121],"thyago":[58,0,0.0],"vidhur":[64,0,0.0],"viyaan":[226,0,0.4708],"xadyn":[20,0,0.0],"xyan":[84,0,0.0],"xzaiden":[34,0,0.0],"zyhaire":[39,0,0.0],"aayu":[12,0,0.0],"abdulmohsen":[21,0,0.0],"agrim":[33,0,0.0],"ahkai":[55,0,0.0],"aibel":[11,0,0.0],"alesso":[144,0,0.4317],"alyosha":[17,0,0.0],"amrik":[6,0,0.0],"ashim":[6,0,0.0],"blaidyn":[6,0,0.0],"bolaji":[6,0,0.0],"braxsten":[6,0,0.0],"braxstyn":[17,0,0.0],"brodix":[38,0,0.0],"brynson":[6,0,0.0],"cashion":[11,0,0.0],"charger":[6,0,0.0],"chesten":[6,0,0.0],"chidiebube":[38,0,0.0],"crayson":[11,0,0.0],"credence":[122,21,0.3678],"dayren":[99,0,0.0],"deker":[37,0,0.0],"devereux":[37,0,0.0],"dexx":[6,0,0.0],"deymar":[34,0,0.0],"dierick":[6,0,0.0],"draevyn":[6,0,0.0],"dzion":[6,0,0.0],"emarri":[12,0,0.0],"emerik":[96,0,0.0],"emeth":[23,0,0.0],"erfan":[47,0,0.0],"ezaan":[71,0,0.0],"filippos":[6,0,0.0],"froy":[6,0,0.0],"greycin":[6,0,0.0],"haythem":[11,0,0.0],"hobbs":[24,0,0.0],"ibrohim":[176,0,0.4491],"iremide":[130,100,0.267],"issei":[33,0,0.0],"jacetin":[6,0,0.0],"jaecyon":[14,0,0.0],"jakyrian":[6,0,0.0],"jaxs":[44,0,0.0],"jayandre":[6,0,0.0],"jayceyon":[19,0,0.0],"jaysian":[6,0,0.0],"jenziel":[34,0,0.0],"jepson":[57,0,0.0],"jiaming":[17,0,0.0],"jio":[70,0,0.0],"kaben":[6,0,0.0],"kamarcus":[6,0,0.0],"karm":[28,0,0.0],"kavalli":[12,0,0.0],"kayedon":[6,0,0.0],"khalijah":[6,0,0.0],"khaydin":[11,0,0.0],"khysen":[141,0,0.4298],"kingelijah":[23,0,0.0],"kiro":[165,0,0.4435],"kson":[14,0,0.0],"lazario":[12,0,0.0],"mahbeer":[12,0,0.0],"makaiden":[11,0,0.0],"marzel":[22,0,0.0],"mascud":[40,0,0.0],"maxus":[27,0,0.0],"mccai":[6,0,0.0],"meba":[135,22,0.3776],"meier":[12,0,0.0],"meyers":[38,11,0.0],"minjae":[6,0,0.0],"mirac":[24,0,0.0],"mucaad":[29,0,0.0],"muhab":[13,0,0.0],"naetochukwu":[79,0,0.0],"neeson":[27,0,0.0],"obaida":[41,0,0.0],"power":[132,22,0.375],"pray":[6,0,0.0],"prithiv":[6,0,0.0],"quill":[384,21,0.4945],"raviv":[6,0,0.0],"rhory":[23,0,0.0],"rigsby":[52,0,0.0],"rorick":[48,0,0.0],"ryzer":[18,0,0.0],"samridh":[42,0,0.0],"samyog":[42,0,0.0],"seleem":[53,0,0.0],"semahj":[6,0,0.0],"shoma":[24,0,0.0],"siddhan":[56,0,0.0],"slayder":[44,0,0.0],"sohaan":[18,0,0.0],"stokely":[151,20,0.3944],"syiere":[6,0,0.0],"tadyn":[11,0,0.0],"tathan":[16,0,0.0],"taydum":[6,0,0.0],"tycere":[11,0,0.0],"warrior":[118,0,0.4144],"xhavier":[12,0,0.0],"xylen":[52,0,0.0],"xylus":[43,0,0.0],"yaqoub":[68,0,0.0],"yered":[6,0,0.0],"yetziel":[6,0,0.0],"yiyang":[41,0,0.0],"yusupha":[6,0,0.0],"zaelin":[27,0,0.0],"zahkir":[6,0,0.0],"zamil":[11,0,0.0],"zamorion":[6,0,0.0],"zekial":[6,0,0.0],"zye":[37,0,0.0],"aashman":[5,0,0.0],"aashray":[14,0,0.0],"abdinajib":[5,0,0.0],"abubacarr":[25,0,0.0],"acesyn":[127,0,0.4208],"adym":[5,0,0.0],"aharshi":[5,0,0.0],"aicen":[5,0,0.0],"airius":[10,0,0.0],"aizel":[5,94,0.0],"ajhani":[5,0,0.0],"akachi":[49,0,0.0],"alexiel":[52,5,0.0],"alexson":[10,0,0.0],"alxavier":[5,0,0.0],"ameire":[5,0,0.0],"amirbek":[5,0,0.0],"amirjon":[65,0,0.0],"arko":[5,0,0.0],"artemiy":[19,0,0.0],"aryo":[70,0,0.0],"aslam":[58,0,0.0],"aten":[29,0,0.0],"atreo":[5,0,0.0],"avaan":[62,0,0.0],"avir":[358,0,0.5108],"baelor":[10,0,0.0],"bennington":[60,0,0.0],"beric":[91,0,0.0],"bradson":[5,0,0.0],"brayzen":[52,0,0.0],"brettlee":[5,0,0.0],"briceston":[5,0,0.0],"bridyn":[5,0,0.0],"brycn":[5,0,0.0],"cahari":[15,0,0.0],"caiyden":[16,0,0.0],"calisto":[20,0,0.0],"callister":[27,0,0.0],"capp":[5,0,0.0],"cashtin":[17,0,0.0],"chambers":[33,0,0.0],"chastyn":[16,0,0.0],"chayzen":[5,0,0.0],"chidalu":[5,0,0.0],"chuna":[5,0,0.0],"cinar":[11,0,0.0],"creo":[22,0,0.0],"dake":[11,0,0.0],"dcarlo":[5,0,0.0],"deking":[5,0,0.0],"demid":[28,0,0.0],"derlis":[5,0,0.0],"divin":[17,0,0.0],"dylam":[62,0,0.0],"dylenn":[5,0,0.0],"ebaad":[18,0,0.0],"ehlijah":[5,0,0.0],"eiler":[10,0,0.0],"eilon":[31,0,0.0],"eiven":[33,0,0.0],"eldad":[23,0,0.0],"elisei":[31,0,0.0],"elroi":[106,45,0.3059],"emeris":[28,13,0.0],"emryck":[5,0,0.0],"emytt":[10,0,0.0],"esey":[18,0,0.0],"estarlin":[5,0,0.0],"ethynn":[5,0,0.0],"eyvan":[10,0,0.0],"ezekeal":[5,0,0.0],"ezekyel":[79,0,0.0],"eziquiel":[21,0,0.0],"fariz":[42,0,0.0],"gani":[5,0,0.0],"gannen":[30,0,0.0],"gattlin":[20,0,0.0],"geovan":[5,0,0.0],"ghanem":[5,0,0.0],"giovannii":[19,0,0.0],"gospel":[5,0,0.0],"gracian":[5,0,0.0],"griffinn":[10,0,0.0],"habil":[5,0,0.0],"haku":[50,0,0.0],"haxton":[47,0,0.0],"helius":[5,0,0.0],"helix":[157,0,0.4392],"hoku":[15,0,0.0],"hudhayfah":[33,0,0.0],"ilirian":[5,0,0.0],"irmuun":[10,0,0.0],"jacavion":[5,0,0.0],"jaciyon":[5,0,0.0],"jacorrion":[5,0,0.0],"jaeceyon":[5,0,0.0],"jahneil":[5,0,0.0],"jaiseon":[10,0,0.0],"jameis":[157,0,0.4392],"jangelo":[28,0,0.0],"jassar":[26,0,0.0],"jassem":[5,0,0.0],"jasuan":[5,0,0.0],"jaxonjames":[5,0,0.0],"jaxper":[5,0,0.0],"jaxxin":[21,0,0.0],"jaxzyn":[19,0,0.0],"jayben":[11,0,0.0],"jaybriel":[10,0,0.0],"jaycon":[11,0,0.0],"jayiden":[5,0,0.0],"jcyon":[11,0,0.0],"jeanluca":[5,0,0.0],"jemier":[5,0,0.0],"jenish":[11,0,0.0],"jeremah":[5,0,0.0],"jeyceon":[5,0,0.0],"jihoo":[15,0,0.0],"jokari":[5,0,0.0],"jonoah":[10,0,0.0],"julianno":[10,0,0.0],"junhao":[22,0,0.0],"jyler":[12,0,0.0],"kabriel":[10,0,0.0],"kabryn":[5,0,0.0],"kaidenn":[21,0,0.0],"kaikane":[37,0,0.0],"kalp":[5,0,0.0],"kaptain":[55,0,0.0],"karsan":[21,0,0.0],"kartell":[22,0,0.0],"kashtian":[23,0,0.0],"kaysn":[53,0,0.0],"keadrian":[5,0,0.0],"keerthan":[5,0,0.0],"keisel":[5,0,0.0],"kemarley":[5,0,0.0],"kemone":[5,0,0.0],"khash":[48,0,0.0],"khattab":[11,0,0.0],"khelen":[5,0,0.0],"knixon":[42,0,0.0],"kohlson":[125,0,0.4194],"kordan":[5,0,0.0],"kovid":[12,0,0.0],"krishen":[5,0,0.0],"kubrick":[5,0,0.0],"kylem":[5,0,0.0],"kymar":[16,0,0.0],"lakelan":[27,0,0.0],"lakye":[5,0,0.0],"lannon":[31,0,0.0],"leihum":[10,0,0.0],"lemari":[5,0,0.0],"lochlen":[29,0,0.0],"locksley":[12,0,0.0],"louka":[84,0,0.0],"lugman":[5,0,0.0],"lyiam":[16,0,0.0],"maadhav":[15,0,0.0],"machiavelli":[17,0,0.0],"maclan":[173,0,0.4476],"maelo":[28,0,0.0],"mahith":[37,0,0.0],"maier":[24,0,0.0],"majur":[39,0,0.0],"makarie":[5,0,0.0],"malex":[16,0,0.0],"marcion":[11,0,0.0],"marcusjames":[5,0,0.0],"maverix":[32,0,0.0],"maxyn":[22,0,0.0],"maz":[5,0,0.0],"mazon":[44,0,0.0],"mekiel":[5,0,0.0],"melech":[22,0,0.0],"mohamedamine":[5,0,0.0],"mokshith":[42,0,0.0],"motoki":[5,0,0.0],"moutaz":[5,0,0.0],"nebil":[10,0,0.0],"neilesh":[5,0,0.0],"nickolie":[5,0,0.0],"nowa":[5,0,0.0],"nuradin":[5,0,0.0],"oaken":[163,0,0.4424],"obsidian":[118,0,0.4144],"oh":[5,0,0.0],"olamilekan":[5,0,0.0],"oluwafolahanmi":[5,0,0.0],"oluwakorede":[26,0,0.0],"ostap":[36,0,0.0],"parx":[49,0,0.0],"pavly":[16,0,0.0],"phin":[5,0,0.0],"priansh":[40,0,0.0],"prish":[92,0,0.0],"raaed":[5,0,0.0],"radamel":[5,0,0.0],"ranvijay":[5,0,0.0],"raqeeb":[5,0,0.0],"razin":[10,0,0.0],"relic":[75,0,0.0],"rember":[5,0,0.0],"revelation":[11,0,0.0],"rhylon":[5,0,0.0],"richman":[5,0,0.0],"riddic":[5,0,0.0],"rinor":[5,0,0.0],"riyaz":[48,0,0.0],"rojan":[11,6,0.0],"rostin":[5,0,0.0],"rozario":[5,0,0.0],"ryton":[5,0,0.0],"ryze":[104,0,0.4034],"sahishnu":[16,0,0.0],"saianish":[5,0,0.0],"samandar":[5,0,0.0],"sandino":[5,0,0.0],"saveliy":[32,0,0.0],"savya":[5,22,0.0],"sehej":[15,28,0.0],"selasi":[15,0,0.0],"shamuel":[5,0,0.0],"sharva":[51,0,0.0],"sheku":[20,0,0.0],"shiye":[10,0,0.0],"sier":[27,0,0.0],"sritan":[5,0,0.0],"subaru":[10,0,0.0],"sudays":[19,0,0.0],"syrius":[5,0,0.0],"tailen":[5,0,0.0],"tawheed":[21,0,0.0],"tenuun":[58,0,0.0],"thoreau":[32,0,0.0],"thoryn":[87,0,0.0],"tioluwani":[5,0,0.0],"tokyo":[22,82,0.3181],"towa":[20,0,0.0],"trasen":[5,0,0.0],"treble":[17,0,0.0],"trennan":[10,0,0.0],"trinay":[5,0,0.0],"uilliam":[52,0,0.0],"uyiosa":[17,0,0.0],"veyron":[22,0,0.0],"vice":[5,0,0.0],"vidhu":[5,0,0.0],"vikhyath":[10,0,0.0],"volf":[5,0,0.0],"wyhatt":[5,0,0.0],"yansiel":[18,0,0.0],"yatziel":[5,0,0.0],"yeico":[98,0,0.0],"yuito":[22,0,0.0],"zadrien":[11,0,0.0],"zaivian":[5,0,0.0],"zake":[5,0,0.0],"zam":[33,0,0.0],"zamarious":[5,0,0.0],"zaviere":[5,0,0.0],"zavyn":[5,0,0.0],"zayceon":[5,0,0.0],"zhian":[5,0,0.0],"ziyang":[26,0,0.0],"zyeer":[5,0,0.0],"dalary":[0,2936,0.6936],"yazleemar":[0,66,0.0],"sunjai":[0,131,0.4235],"hannaley":[0,21,0.0],"tauriel":[0,215,0.4665],"naiovy":[0,27,0.0],"rynlee":[0,564,0.5503],"arliz":[0,13,0.0],"everli":[0,419,0.5244],"tessanne":[0,19,0.0],"eisele":[0,29,0.0],"aidana":[0,121,0.4166],"aransa":[0,24,0.0],"posy":[0,100,0.4],"tiwatope":[0,135,0.4261],"xairexis":[0,11,0.0],"enzley":[0,253,0.4806],"graycelynn":[0,51,0.0],"lais":[0,47,0.0],"nzuri":[0,84,0.0],"payzley":[0,23,0.0],"sochi":[0,22,0.0],"viya":[0,142,0.4305],"yixuan":[10,28,0.0],"zolee":[0,25,0.0],"adaleyza":[0,101,0.4009],"adeliah":[0,29,0.0],"ayrah":[0,143,0.4311],"calirae":[0,30,0.0],"clairabelle":[0,15,0.0],"copelynn":[0,204,0.4619],"crystianna":[0,40,0.0],"daleysha":[0,24,0.0],"everlea":[0,168,0.4451],"ezmay":[0,112,0.4098],"jaleyza":[0,73,0.0],"jinora":[0,321,0.5013],"kaoir":[13,411,0.5094],"londynne":[0,14,0.0],"maevis":[0,311,0.4986],"mayzi":[0,38,0.0],"myraa":[0,14,0.0],"oaklei":[0,105,0.4042],"quinnly":[0,119,0.4151],"samus":[0,57,0.0],"yailenys":[0,9,0.0],"addalin":[0,21,0.0],"aketzaly":[0,15,0.0],"aleyssa":[0,148,0.4341],"amiliyah":[0,61,0.0],"anahia":[0,101,0.4009],"andelynn":[0,20,0.0],"arnavi":[0,18,0.0],"audraya":[0,8,0.0],"avahlynn":[0,22,0.0],"avalanna":[0,8,0.0],"chrisley":[11,83,0.0],"eislee":[0,71,0.0],"ellyette":[0,35,0.0],"emerlyn":[0,231,0.4727],"emeryn":[0,150,0.4352],"everdeen":[0,14,0.0],"gursirat":[0,43,0.0],"jaxlynn":[0,34,0.0],"jeyshangelise":[0,8,0.0],"khaleesia":[0,124,0.4187],"khodi":[66,88,0.25],"knylah":[0,19,0.0],"lucyna":[0,30,0.0],"lynnon":[0,146,0.4329],"nadilyn":[0,13,0.0],"noire":[0,41,0.0],"persephoni":[0,8,0.0],"royalti":[0,369,0.5134],"saminah":[0,13,0.0],"savreen":[0,109,0.4075],"serana":[0,131,0.4235],"taraoluwa":[0,72,0.0],"xzariah":[0,13,0.0],"yaileny":[0,19,0.0],"yutong":[0,52,0.0],"aanaya":[0,108,0.4067],"adhvika":[0,86,0.0],"adrika":[0,53,0.0],"agna":[0,7,0.0],"ahnalise":[0,13,0.0],"ainhara":[0,173,0.4476],"airah":[0,120,0.4158],"aljawhara":[0,25,0.0],"aljohara":[0,17,0.0],"anibelle":[0,7,0.0],"anyliah":[0,12,0.0],"aralia":[0,34,0.0],"aunah":[0,13,0.0],"auriya":[0,41,0.0],"auriyah":[0,66,0.0],"avaleena":[0,7,0.0],"avanya":[0,53,0.0],"ayalah":[0,7,0.0],"ayeza":[0,241,0.4764],"aynara":[0,141,0.4298],"ayveri":[0,38,0.0],"dailany":[0,187,0.4544],"daylany":[0,7,0.0],"divisha":[0,227,0.4712],"divyanshi":[0,19,0.0],"elizzabeth":[0,7,0.0],"elovie":[0,54,0.0],"ferryn":[0,38,0.0],"gabbanelli":[0,74,0.0],"geissie":[0,19,0.0],"hadarah":[0,31,0.0],"hayslee":[0,142,0.4305],"hennley":[0,19,0.0],"ilithya":[0,7,0.0],"inshirah":[0,45,0.0],"iryna":[0,23,0.0],"jahleya":[0,7,0.0],"jaylarose":[0,22,0.0],"jazzabelle":[0,17,0.0],"jessamae":[0,25,0.0],"jessimae":[0,7,0.0],"kaleila":[0,25,0.0],"kaliyanei":[0,25,0.0],"karcynn":[0,7,0.0],"kehila":[0,7,0.0],"keriyah":[0,7,0.0],"khalisi":[0,18,0.0],"kimimela":[0,27,0.0],"kween":[0,175,0.4486],"leahnna":[0,12,0.0],"maedot":[0,69,0.0],"miamore":[0,50,0.0],"nalyah":[0,17,0.0],"nesochi":[0,7,0.0],"norielle":[0,152,0.4364],"nyleigh":[0,40,0.0],"promisse":[0,7,0.0],"quinnleigh":[0,79,0.0],"raavi":[0,68,0.0],"ranezmay":[0,12,0.0],"rejoyce":[0,7,0.0],"reynaliz":[0,7,0.0],"rithvika":[0,43,0.0],"riverlynn":[0,742,0.5741],"ruoxi":[0,22,0.0],"saindhavi":[0,7,0.0],"samreet":[0,52,0.0],"skylette":[0,44,0.0],"tamzyn":[0,52,0.0],"xinyue":[0,56,0.0],"yalini":[0,62,0.0],"yanetzi":[0,25,0.0],"abigailrose":[0,31,0.0],"abilynn":[0,6,0.0],"adyleigh":[0,6,0.0],"ahnah":[0,6,0.0],"ahriah":[0,61,0.0],"aivley":[0,6,0.0],"akenzie":[0,11,0.0],"alannys":[0,28,0.0],"alaynnah":[0,6,0.0],"alisynn":[0,11,0.0],"ameina":[0,38,0.0],"amida":[0,6,0.0],"ananshi":[0,6,0.0],"anatolia":[0,6,0.0],"andrijana":[0,6,0.0],"annahbella":[0,6,0.0],"annapaula":[0,31,0.0],"anyieth":[0,6,0.0],"arbrielle":[0,11,0.0],"areah":[0,6,0.0],"aretzi":[0,57,0.0],"ariadny":[0,32,0.0],"ariahana":[0,6,0.0],"asenat":[0,103,0.4026],"asteria":[0,178,0.4501],"audriel":[5,11,0.0],"avajane":[0,24,0.0],"avanicole":[0,13,0.0],"avira":[0,274,0.4876],"bailasan":[0,6,0.0],"barkot":[87,16,0.34],"briamarie":[0,6,0.0],"brinli":[0,6,0.0],"carliee":[0,16,0.0],"chizitelu":[0,16,0.0],"coralin":[0,11,0.0],"coralline":[0,12,0.0],"crimsyn":[0,77,0.0],"dalery":[0,59,0.0],"dalida":[0,134,0.4254],"delyza":[0,26,0.0],"denilah":[0,6,0.0],"dileydi":[0,6,0.0],"drashti":[0,6,0.0],"einin":[0,6,0.0],"ellierose":[0,101,0.4009],"emerii":[0,62,0.0],"emmielou":[0,25,0.0],"empris":[0,6,0.0],"enzlee":[0,151,0.4358],"enzlie":[0,23,0.0],"evina":[0,35,0.0],"ezmie":[0,12,0.0],"fadila":[0,18,0.0],"faiha":[0,12,0.0],"freyah":[0,103,0.4026],"fynnlee":[0,78,0.0],"haddley":[0,11,0.0],"hadlynn":[0,77,0.0],"harliee":[0,15,0.0],"hawwaa":[0,6,0.0],"hinaea":[0,6,0.0],"insley":[0,62,0.0],"irha":[0,367,0.5129],"ivymarie":[0,16,0.0],"iyleen":[0,6,0.0],"jaasritha":[0,29,0.0],"jailiyah":[0,17,0.0],"jasielle":[0,6,0.0],"jaylaah":[0,6,0.0],"jehilyn":[0,506,0.5408],"jerzei":[0,36,0.0],"jhenae":[0,43,0.0],"journeii":[0,122,0.4173],"kacei":[6,25,0.0],"kaiann":[0,11,0.0],"kamellia":[0,48,0.0],"kamsi":[22,12,0.0],"kasadee":[0,6,0.0],"katalya":[0,11,0.0],"kaydrie":[0,6,0.0],"kenari":[5,30,0.0],"khalii":[0,6,0.0],"khalisah":[0,6,0.0],"kholee":[0,23,0.0],"kileyann":[0,6,0.0],"kinsington":[0,11,0.0],"kopelynn":[0,92,0.0],"koralyne":[0,6,0.0],"korbynn":[8,21,0.0],"korilynn":[0,16,0.0],"kristhel":[0,12,0.0],"kyleighann":[0,6,0.0],"kynslea":[0,17,0.0],"lailarose":[0,6,0.0],"lateen":[0,32,0.0],"lavie":[77,31,0.29],"layahna":[0,11,0.0],"laykyn":[0,53,0.0],"laylagrace":[0,11,0.0],"leddi":[0,6,0.0],"liera":[0,6,0.0],"lijana":[0,6,0.0],"lilyrae":[0,6,0.0],"lingyi":[0,11,0.0],"linneah":[0,6,0.0],"lisanna":[0,78,0.0],"loah":[0,62,0.0],"lumin":[0,33,0.0],"lyllia":[0,6,0.0],"madrona":[0,12,0.0],"maelah":[0,12,0.0],"mahaela":[0,6,0.0],"mahjabeen":[0,11,0.0],"mariacecilia":[0,54,0.0],"marliah":[0,11,0.0],"maryjune":[0,6,0.0],"maryona":[0,6,0.0],"meilany":[0,97,0.0],"meiyi":[0,6,0.0],"melodyrose":[0,24,0.0],"mumtas":[0,11,0.0],"musfirah":[0,59,0.0],"nagisa":[0,26,0.0],"nahiomy":[0,6,0.0],"natalierose":[0,18,0.0],"neeah":[0,6,0.0],"niyahlee":[0,11,0.0],"nyemiah":[0,32,0.0],"oluwatoniloba":[10,6,0.0],"parina":[0,6,0.0],"pauleth":[0,76,0.0],"payshance":[0,6,0.0],"peneloperose":[0,55,0.0],"pranisha":[0,76,0.0],"raeyah":[0,70,0.0],"rayella":[0,42,0.0],"renleigh":[0,354,0.5098],"rinyah":[0,6,0.0],"ritage":[0,6,0.0],"rosaliyah":[0,44,0.0],"royaltee":[0,155,0.4381],"samanvita":[0,23,0.0],"sare":[0,54,0.0],"serenityrose":[0,30,0.0],"sevara":[0,6,0.0],"sharvani":[0,6,0.0],"sicilee":[0,6,0.0],"siryah":[0,6,0.0],"sophyia":[0,6,0.0],"srilakshmi":[0,6,0.0],"synnove":[0,23,0.0],"taizlee":[0,18,0.0],"talayiah":[0,16,0.0],"tirenioluwa":[0,36,0.0],"toltu":[0,12,0.0],"umaira":[0,11,0.0],"venellope":[0,11,0.0],"vihaa":[0,55,0.0],"winslet":[0,171,0.4466],"wyndsor":[0,19,0.0],"xi":[44,47,0.0],"xinran":[0,6,0.0],"yaleiza":[0,6,0.0],"yarianny":[0,24,0.0],"yasina":[0,98,0.0],"yeabsera":[0,6,0.0],"yensy":[0,6,0.0],"yessi":[0,14,0.0],"yilia":[0,74,0.0],"yiyi":[0,100,0.4],"yvianna":[0,6,0.0],"zandaya":[0,30,0.0],"zhari":[0,74,0.0],"zowii":[0,6,0.0],"zuriana":[0,44,0.0],"zurina":[0,33,0.0],"zynovia":[0,11,0.0],"aayra":[0,277,0.4885],"aayusha":[0,11,0.0],"abhinaya":[0,5,0.0],"abrihet":[0,5,0.0],"addiline":[0,41,0.0],"adelah":[0,5,0.0],"adelya":[0,21,0.0],"adwitiya":[0,5,0.0],"adysun":[0,5,0.0],"ahnari":[0,11,0.0],"ahsoka":[0,253,0.4806],"ailiana":[0,52,0.0],"alalah":[0,5,0.0],"alaunah":[0,10,0.0],"aleecya":[0,5,0.0],"alegacy":[0,56,0.0],"aleighanna":[0,5,0.0],"alezandria":[0,5,0.0],"alienna":[0,5,0.0],"allaynah":[0,10,0.0],"alohalani":[0,5,0.0],"amaylee":[0,5,0.0],"ameelia":[0,42,0.0],"amelah":[0,58,0.0],"amsey":[0,5,0.0],"amzee":[0,11,0.0],"amzi":[26,10,0.0],"anashe":[0,11,0.0],"anavay":[0,10,0.0],"aniye":[0,5,0.0],"anlin":[0,5,0.0],"annabellah":[0,5,0.0],"annajoy":[0,5,0.0],"annelyn":[0,13,0.0],"annelynn":[0,5,0.0],"anova":[0,185,0.4534],"anyila":[0,5,0.0],"anzlie":[0,12,0.0],"araelynn":[0,10,0.0],"araoluwa":[37,103,0.3158],"ariadnne":[0,22,0.0],"arianamarie":[0,5,0.0],"ariiana":[0,5,0.0],"arliana":[0,5,0.0],"aryela":[0,22,0.0],"asil":[64,16,0.0],"asuna":[0,242,0.4768],"athenamarie":[0,15,0.0],"atifa":[0,10,0.0],"aubrelle":[0,24,0.0],"aubreyelle":[0,5,0.0],"aubreyrose":[0,43,0.0],"audrii":[0,5,0.0],"auree":[0,61,0.0],"aurra":[0,5,0.0],"avae":[0,14,0.0],"avali":[0,5,0.0],"avanah":[0,20,0.0],"aveigha":[0,5,0.0],"avelie":[0,36,0.0],"avellina":[0,22,0.0],"averymarie":[0,5,0.0],"awna":[0,5,0.0],"ayin":[10,5,0.0],"aylamae":[0,5,0.0],"ayzlyn":[0,5,0.0],"azayleah":[0,26,0.0],"azelya":[0,29,0.0],"azlynne":[0,5,0.0],"azurah":[0,22,0.0],"baela":[0,52,0.0],"baja":[0,5,0.0],"bareerah":[0,52,0.0],"believe":[32,72,0.2793],"bellamay":[0,5,0.0],"bellani":[0,46,0.0],"brezlin":[6,5,0.0],"brinlea":[0,10,0.0],"brooklynrose":[0,10,0.0],"bryell":[0,5,0.0],"canyla":[0,20,0.0],"casiyah":[0,5,0.0],"cataleena":[0,5,0.0],"cataliya":[0,21,0.0],"cathalia":[0,5,0.0],"cayslee":[0,5,0.0],"cennedy":[0,5,0.0],"chaaya":[0,5,0.0],"charliemae":[0,22,0.0],"chavah":[0,10,0.0],"chloegrace":[0,24,0.0],"chrisalynn":[0,5,0.0],"cristaly":[0,5,0.0],"crosbie":[0,16,0.0],"dalany":[0,45,0.0],"dalaylah":[0,18,0.0],"daleya":[0,5,0.0],"daleysi":[0,5,0.0],"daliyla":[0,10,0.0],"dannalyn":[0,5,0.0],"darshi":[0,26,0.0],"daylanie":[0,21,0.0],"dayvanee":[0,5,0.0],"deilani":[0,122,0.4173],"delaysha":[0,5,0.0],"delilahrose":[0,27,0.0],"devayah":[0,10,0.0],"devenny":[0,5,0.0],"djene":[0,5,0.0],"dyala":[0,10,0.0],"eirian":[14,11,0.0],"elanny":[0,38,0.0],"elhana":[0,10,0.0],"elianagrace":[0,10,0.0],"elizabethgrace":[0,31,0.0],"elizajane":[0,42,0.0],"ellaya":[0,21,0.0],"elleanora":[0,26,0.0],"ellieanne":[0,45,0.0],"ellymae":[0,5,0.0],"elssa":[0,10,0.0],"elysian":[88,53,0.2683],"emalena":[0,5,0.0],"emeilia":[0,26,0.0],"emmabeth":[0,5,0.0],"emmelene":[0,10,0.0],"emmilou":[0,32,0.0],"emslie":[0,28,0.0],"emyri":[0,10,0.0],"emzley":[0,5,0.0],"enari":[0,10,0.0],"etsub":[0,5,0.0],"everlei":[0,95,0.0],"eversyn":[5,13,0.0],"eylah":[0,61,0.0],"ezlynn":[0,305,0.4969],"filipa":[0,16,0.0],"fiorenza":[0,5,0.0],"firdous":[0,5,0.0],"fouzia":[0,5,0.0],"franyelis":[0,21,0.0],"gewel":[0,5,0.0],"giahan":[0,12,0.0],"giannarose":[0,17,0.0],"graylynn":[0,184,0.453],"greylynn":[0,113,0.4106],"gurnaaz":[0,130,0.4228],"gurseerat":[0,41,0.0],"gwenyvere":[0,25,0.0],"hadilyn":[0,17,0.0],"hadleyann":[0,5,0.0],"haevynn":[0,10,0.0],"halleli":[0,5,0.0],"hanane":[0,5,0.0],"harpyr":[0,11,0.0],"hartli":[0,5,0.0],"hasanat":[0,78,0.0],"hayoon":[0,10,0.0],"hayzlie":[0,33,0.0],"hazelmarie":[0,24,0.0],"hitha":[0,5,0.0],"hridya":[0,11,0.0],"hudsynn":[0,20,0.0],"iba":[0,5,0.0],"ibiza":[0,15,0.0],"ibtihal":[0,18,0.0],"idalynn":[0,19,0.0],"iftu":[0,5,0.0],"iiyana":[0,5,0.0],"ikra":[0,26,0.0],"inayat":[0,119,0.4151],"iqlas":[0,61,0.0],"iralynn":[0,15,0.0],"iriee":[0,10,0.0],"isalena":[0,5,0.0],"ishta":[0,5,0.0],"israe":[0,5,0.0],"ithalia":[0,5,0.0],"ivary":[0,5,0.0],"izalea":[0,31,0.0],"izzybella":[0,11,0.0],"jaecia":[0,5,0.0],"jahlena":[0,5,0.0],"jailei":[0,36,0.0],"jaisley":[0,167,0.4445],"jalexie":[0,5,0.0],"janelyz":[0,5,0.0],"japnoor":[0,29,0.0],"jasibe":[0,214,0.4661],"javeya":[0,10,0.0],"jaxlyn":[0,35,0.0],"jaylianiz":[0,15,0.0],"jazaiya":[0,5,0.0],"jelanie":[0,27,0.0],"jenikka":[0,5,0.0],"jeniveve":[0,15,0.0],"jeryiah":[0,5,0.0],"jetlyn":[0,5,0.0],"joneer":[0,5,0.0],"joule":[0,35,0.0],"journeigh":[0,109,0.4075],"jraya":[0,18,0.0],"julep":[0,15,0.0],"kaithlynn":[0,5,0.0],"kaizleigh":[0,74,0.0],"kalilyn":[0,5,0.0],"kallea":[0,5,0.0],"kalonie":[0,22,0.0],"kamayla":[0,10,0.0],"kamor":[0,29,0.0],"karaya":[0,30,0.0],"karieliz":[0,5,0.0],"karmani":[15,60,0.0],"kayelle":[0,11,0.0],"kayleeh":[0,5,0.0],"kayzley":[0,14,0.0],"keaysia":[0,5,0.0],"kendree":[0,11,0.0],"kennydi":[0,5,0.0],"kently":[0,5,0.0],"kenz":[0,57,0.0],"kenzye":[0,10,0.0],"kessley":[0,40,0.0],"khaelynn":[0,5,0.0],"khaleesy":[0,37,0.0],"khalli":[0,5,0.0],"kharley":[0,15,0.0],"khawlah":[0,24,0.0],"kingsleigh":[0,155,0.4381],"knova":[0,164,0.443],"kokomi":[0,5,0.0],"koraleigh":[0,69,0.0],"kortana":[0,5,0.0],"krisley":[0,67,0.0],"kwinn":[0,28,0.0],"kyndyl":[0,5,0.0],"lakshmy":[0,5,0.0],"lanaea":[0,5,0.0],"lanye":[0,5,0.0],"lanylah":[0,21,0.0],"leelani":[0,42,0.0],"leihlani":[0,53,0.0],"lexiee":[0,5,0.0],"leyka":[0,5,0.0],"leyre":[0,25,0.0],"lieve":[0,5,0.0],"lilica":[0,5,0.0],"lilliyn":[0,5,0.0],"lilyaunna":[0,5,0.0],"lorde":[31,11,0.0],"lorilai":[0,18,0.0],"lucchese":[24,19,0.0],"luxanna":[0,21,0.0],"maahira":[0,10,0.0],"mackeyla":[0,5,0.0],"maddielyn":[0,5,0.0],"maelynne":[0,60,0.0],"maevry":[0,169,0.4456],"majestie":[0,16,0.0],"makenzly":[0,16,0.0],"mallina":[0,5,0.0],"mariaemilia":[0,18,0.0],"marliee":[0,21,0.0],"masal":[0,25,0.0],"mayha":[0,5,0.0],"meenah":[0,15,0.0],"meilanie":[0,40,0.0],"meiqi":[0,5,0.0],"mellani":[0,53,0.0],"meyla":[0,5,0.0],"miamour":[0,46,0.0],"mickinley":[0,5,0.0],"milett":[0,5,0.0],"mileva":[0,71,0.0],"mileyshka":[0,5,0.0],"mirajane":[0,92,0.0],"misri":[0,5,0.0],"mofiyinfoluwa":[0,13,0.0],"mokshitha":[0,5,0.0],"monreaux":[0,11,0.0],"morah":[0,23,0.0],"morolaoluwa":[0,5,0.0],"myalyn":[0,5,0.0],"myunique":[0,5,0.0],"nadalia":[0,34,0.0],"nahari":[5,25,0.0],"neemah":[0,15,0.0],"nelliel":[0,131,0.4235],"nerys":[0,10,0.0],"noorjahan":[0,5,0.0],"nureen":[0,10,0.0],"oluwabusola":[0,5,0.0],"oluwadabira":[0,23,0.0],"oluwafunmilola":[0,5,0.0],"onnaleigh":[0,5,0.0],"ovee":[0,80,0.0],"ozara":[0,33,0.0],"penelopea":[0,11,0.0],"petunia":[0,32,0.0],"peytonn":[0,5,0.0],"pharyn":[0,5,0.0],"porcelain":[0,5,0.0],"prynn":[0,5,0.0],"quinleigh":[0,43,0.0],"raelean":[0,5,0.0],"raika":[0,5,0.0],"railynne":[0,5,0.0],"ranylah":[0,22,0.0],"ravya":[0,61,0.0],"raylenn":[0,26,0.0],"renezme":[0,11,0.0],"reyelle":[0,10,0.0],"rhyin":[0,5,0.0],"rianshi":[0,25,0.0],"ridlee":[0,41,0.0],"ridleigh":[0,33,0.0],"rihab":[0,5,0.0],"rilah":[0,71,0.0],"rittal":[0,10,0.0],"riyaq":[0,44,0.0],"romia":[0,16,0.0],"roqaya":[0,35,0.0],"rozalee":[0,39,0.0],"roziya":[0,10,0.0],"rozzlyn":[0,10,0.0],"ruman":[0,68,0.0],"ruzanna":[0,5,0.0],"rynleigh":[0,194,0.4576],"saanjh":[0,88,0.0],"samaara":[0,5,0.0],"saphirah":[0,5,0.0],"sarii":[0,5,0.0],"savannahgrace":[0,10,0.0],"savannahjo":[0,5,0.0],"scarlytt":[0,45,0.0],"seras":[0,48,0.0],"shahzoda":[0,30,0.0],"sheikha":[0,11,0.0],"siyam":[32,5,0.0],"skyana":[0,5,0.0],"skyelee":[0,5,0.0],"soffie":[0,5,0.0],"somiah":[0,5,0.0],"sopia":[0,5,0.0],"steicy":[0,5,0.0],"sujood":[0,17,0.0],"szofia":[0,5,0.0],"tahlaya":[0,5,0.0],"taizley":[0,10,0.0],"taly":[0,5,0.0],"tayhlor":[0,5,0.0],"tayviona":[0,5,0.0],"theophilia":[0,11,0.0],"torriyah":[0,5,0.0],"tsunade":[0,49,0.0],"tyndall":[0,16,0.0],"ume":[0,5,0.0],"urenna":[0,56,0.0],"vaimoana":[0,5,0.0],"vaishvi":[0,20,0.0],"valaysia":[0,10,0.0],"valetina":[0,10,0.0],"varna":[0,37,0.0],"varshika":[0,11,0.0],"vedhika":[0,60,0.0],"veyah":[0,29,0.0],"violetrose":[0,31,0.0],"wajd":[0,5,0.0],"wimberley":[0,32,0.0],"wyleigh":[0,54,0.0],"xareny":[0,45,0.0],"xaylie":[0,17,0.0],"xea":[0,12,0.0],"xeniyah":[0,15,0.0],"xinrui":[0,5,0.0],"xyliana":[0,66,0.0],"yaely":[0,15,0.0],"yahav":[5,5,0.0],"yahna":[0,40,0.0],"yami":[0,45,0.0],"yarismar":[0,5,0.0],"yazayra":[0,12,0.0],"yazlee":[0,5,0.0],"yelaina":[0,5,0.0],"yiru":[0,5,0.0],"yulemi":[0,5,0.0],"yunxi":[0,16,0.0],"zaeya":[0,19,0.0],"zahro":[0,18,0.0],"zamayra":[0,5,0.0],"zayanah":[0,10,0.0],"zayriah":[0,10,0.0],"zazil":[0,26,0.0],"zeenah":[0,22,0.0],"zeilah":[0,5,0.0],"zeily":[0,11,0.0],"zellah":[0,30,0.0],"zendiya":[0,5,0.0],"zeplynn":[0,81,0.0],"zeylah":[0,10,0.0],"zilynn":[0,35,0.0],"zoja":[0,22,0.0],"zoree":[0,5,0.0],"zyelle":[5,93,0.0],"llewyn":[517,11,0.5332],"keylor":[689,0,0.5676],"feynman":[63,0,0.0],"sanav":[178,0,0.4501],"jadaveon":[32,0,0.0],"rudransh":[374,0,0.5146],"cavani":[103,0,0.4026],"haigen":[44,6,0.0],"amirali":[33,0,0.0],"kharson":[127,0,0.4208],"teller":[200,13,0.4373],"alisher":[35,0,0.0],"kavir":[198,0,0.4593],"raynav":[46,0,0.0],"thoran":[17,0,0.0],"zacardi":[33,0,0.0],"crusoe":[30,0,0.0],"frey":[73,0,0.0],"jacyeon":[10,0,0.0],"kaceon":[116,0,0.4129],"keyner":[95,0,0.0],"maizen":[31,0,0.0],"nehemiyah":[21,0,0.0],"thorian":[21,0,0.0],"abdihafid":[38,0,0.0],"adagio":[20,0,0.0],"ahking":[76,0,0.0],"ahrian":[9,0,0.0],"briggston":[161,0,0.4414],"dayceon":[31,0,0.0],"enner":[20,0,0.0],"eyas":[80,0,0.0],"haloa":[9,0,0.0],"rixton":[44,0,0.0],"taejzon":[9,0,0.0],"ackley":[48,10,0.0],"alrik":[37,0,0.0],"augus":[34,0,0.0],"axis":[52,0,0.0],"brigston":[59,0,0.0],"dauda":[8,0,0.0],"jaicyon":[22,0,0.0],"jetzael":[8,0,0.0],"kesten":[8,0,0.0],"legen":[48,0,0.0],"macksen":[53,0,0.0],"matthijs":[13,0,0.0],"mavryck":[92,0,0.0],"moayad":[48,0,0.0],"nahyan":[103,0,0.4026],"namit":[8,0,0.0],"ozric":[14,0,0.0],"pars":[47,0,0.0],"ronyn":[75,0,0.0],"rooke":[24,0,0.0],"ruckus":[24,0,0.0],"santiel":[485,0,0.5371],"tegh":[115,17,0.3695],"trager":[15,0,0.0],"tyking":[55,0,0.0],"voss":[42,0,0.0],"whitton":[104,0,0.4034],"xaylen":[106,0,0.4051],"yerai":[41,0,0.0],"archivaldo":[188,0,0.4548],"arkham":[88,0,0.0],"aryus":[52,0,0.0],"brycon":[7,0,0.0],"caelix":[15,0,0.0],"coast":[490,55,0.492],"cobalt":[23,0,0.0],"deucalion":[30,0,0.0],"elliston":[32,34,0.0],"flash":[20,0,0.0],"gannyn":[7,0,0.0],"ganyn":[7,0,0.0],"hajun":[25,0,0.0],"izyck":[7,0,0.0],"jamarley":[12,0,0.0],"jasek":[12,0,0.0],"jaxxton":[101,0,0.4009],"jeysen":[18,0,0.0],"joesiyah":[7,0,0.0],"kaceton":[97,0,0.0],"kaeto":[13,0,0.0],"kaynin":[35,0,0.0],"kengston":[12,0,0.0],"khason":[19,0,0.0],"khaza":[1632,153,0.5946],"kingmichael":[35,0,0.0],"krishaan":[12,0,0.0],"kyreece":[53,0,0.0],"liamgabriel":[13,0,0.0],"liammatthew":[7,0,0.0],"liammichael":[12,0,0.0],"manaf":[25,0,0.0],"messai":[63,0,0.0],"moayed":[7,0,0.0],"princetyn":[91,0,0.0],"qassam":[7,0,0.0],"revyn":[42,18,0.0],"rhonan":[86,0,0.0],"saikrishna":[12,0,0.0],"swastik":[13,0,0.0],"yaksh":[16,0,0.0],"yicheng":[52,0,0.0],"zaiyon":[30,0,0.0],"zevulun":[12,0,0.0],"aaraiz":[6,0,0.0],"acamas":[11,0,0.0],"ademar":[11,0,0.0],"adhiraj":[54,0,0.0],"adrith":[58,0,0.0],"alperen":[11,0,0.0],"anisjon":[6,0,0.0],"arhaam":[58,0,0.0],"ariyeh":[6,0,0.0],"ashaan":[26,0,0.0],"avash":[18,0,0.0],"averett":[89,0,0.0],"ayveon":[11,0,0.0],"azimjon":[6,0,0.0],"baler":[6,0,0.0],"bevis":[6,0,0.0],"bohen":[69,7,0.0],"bravo":[11,0,0.0],"brayston":[6,0,0.0],"bryxton":[59,0,0.0],"bulut":[11,0,0.0],"cailum":[17,0,0.0],"cassin":[13,0,0.0],"cieran":[25,0,0.0],"clutch":[16,0,0.0],"connall":[14,0,0.0],"dakhi":[11,0,0.0],"dasael":[6,0,0.0],"decarter":[6,0,0.0],"dhyaan":[41,0,0.0],"driggs":[11,0,0.0],"elshaddai":[13,15,0.0],"eriksen":[90,0,0.0],"eze":[92,0,0.0],"fitzwilliam":[92,0,0.0],"ghaleb":[6,0,0.0],"graydin":[11,0,0.0],"haizen":[60,0,0.0],"hajj":[19,0,0.0],"hamim":[6,0,0.0],"haoran":[26,0,0.0],"haowen":[6,0,0.0],"harfateh":[62,0,0.0],"harshiv":[93,0,0.0],"havick":[6,0,0.0],"hein":[11,0,0.0],"hezekiel":[25,0,0.0],"hixon":[39,0,0.0],"hrehaan":[16,0,0.0],"ianto":[12,0,0.0],"jacyion":[6,0,0.0],"jaiceyon":[17,0,0.0],"jaik":[6,0,0.0],"jasian":[24,0,0.0],"jayace":[33,0,0.0],"jetton":[6,0,0.0],"jeyko":[43,0,0.0],"jiyaan":[182,0,0.452],"jociah":[17,0,0.0],"jophiel":[24,8,0.0],"junyi":[11,0,0.0],"kaiicen":[6,0,0.0],"kaliber":[37,0,0.0],"kartar":[23,0,0.0],"kashdyn":[118,0,0.4144],"kaydian":[11,5,0.0],"kendo":[13,0,0.0],"kennyel":[6,0,0.0],"kepa":[19,0,0.0],"kestyn":[17,0,0.0],"kingcharles":[18,0,0.0],"kingman":[6,0,0.0],"knoxley":[69,75,0.2248],"kovu":[78,0,0.0],"kuyper":[29,0,0.0],"kynden":[6,0,0.0],"kyriee":[175,7,0.4346],"kyzier":[225,0,0.4704],"lachlann":[49,0,0.0],"laking":[18,0,0.0],"lanston":[11,0,0.0],"levitt":[58,0,0.0],"lewyn":[54,0,0.0],"locklin":[40,5,0.0],"mackai":[6,0,0.0],"marcon":[37,0,0.0],"maximilano":[41,0,0.0],"maxxton":[54,0,0.0],"mayhem":[28,0,0.0],"mcclane":[31,0,0.0],"menachemmendel":[18,0,0.0],"michaelgabriel":[6,0,0.0],"mihit":[24,0,0.0],"naymar":[6,0,0.0],"nicson":[6,0,0.0],"obiora":[6,0,0.0],"ollivander":[311,0,0.4986],"prayas":[6,0,0.0],"radly":[6,0,0.0],"raxton":[33,0,0.0],"reddington":[99,0,0.0],"renat":[11,0,0.0],"renegade":[21,0,0.0],"rownan":[56,0,0.0],"sardor":[17,0,0.0],"savar":[25,0,0.0],"semyon":[6,0,0.0],"shohjahon":[20,0,0.0],"stallone":[19,0,0.0],"suhanth":[6,0,0.0],"suveer":[22,0,0.0],"sylias":[41,0,0.0],"thackery":[56,0,0.0],"tifeoluwa":[61,5,0.0],"tobiloba":[26,0,0.0],"torstein":[11,0,0.0],"tyrael":[53,0,0.0],"vedat":[12,0,0.0],"vihaanreddy":[82,0,0.0],"vyaan":[23,0,0.0],"wensley":[80,0,0.0],"winchester":[99,0,0.0],"wrett":[36,0,0.0],"yejun":[14,0,0.0],"yinuo":[24,46,0.0],"yohandry":[31,0,0.0],"yuvansh":[69,0,0.0],"zaen":[6,0,0.0],"zainaldeen":[11,0,0.0],"zyking":[74,0,0.0],"zyyon":[6,0,0.0],"aadian":[5,0,0.0],"aari":[64,30,0.0],"aariyan":[21,0,0.0],"aaroh":[17,0,0.0],"aarvin":[42,0,0.0],"aaser":[12,0,0.0],"aavyan":[141,0,0.4298],"aayam":[61,0,0.0],"addix":[10,0,0.0],"adwaith":[23,0,0.0],"alshon":[16,0,0.0],"amais":[194,0,0.4576],"amerson":[11,5,0.0],"angelou":[5,0,0.0],"angler":[5,0,0.0],"anri":[49,13,0.0],"aous":[132,0,0.4241],"aquinas":[5,0,0.0],"ariaan":[5,0,0.0],"asaya":[122,16,0.3784],"aseda":[15,65,0.0],"aurik":[22,0,0.0],"aurin":[5,0,0.0],"avraj":[71,0,0.0],"axwell":[5,0,0.0],"ayres":[31,0,0.0],"azarael":[5,0,0.0],"bangaly":[10,0,0.0],"bartu":[5,0,0.0],"bash":[124,0,0.4187],"bibek":[5,0,0.0],"billion":[104,0,0.4034],"blaz":[5,0,0.0],"bohannon":[148,0,0.4341],"braston":[5,0,0.0],"bravyn":[10,0,0.0],"brij":[23,0,0.0],"buruk":[12,0,0.0],"camarri":[19,5,0.0],"campion":[56,0,0.0],"carterjames":[10,0,0.0],"caseyn":[5,0,0.0],"castyn":[16,0,0.0],"charvik":[111,0,0.4091],"chasetin":[5,0,0.0],"cin":[39,0,0.0],"coalson":[29,0,0.0],"cohutta":[5,0,0.0],"common":[5,0,0.0],"creedan":[5,0,0.0],"dagger":[41,0,0.0],"daiceon":[11,0,0.0],"dakobe":[22,0,0.0],"damilare":[11,0,0.0],"damonni":[5,0,0.0],"darvens":[5,0,0.0],"deloni":[11,29,0.0],"demier":[27,0,0.0],"demitrio":[5,0,0.0],"demonei":[5,0,0.0],"dheera":[27,23,0.0],"dhiago":[21,0,0.0],"dilann":[5,0,0.0],"domari":[11,0,0.0],"dut":[5,0,0.0],"eddyson":[10,0,0.0],"eelijah":[12,0,0.0],"ehvan":[5,0,0.0],"ekambir":[5,0,0.0],"elikai":[194,0,0.4576],"elixander":[25,0,0.0],"elizander":[16,0,0.0],"emerich":[29,0,0.0],"emier":[5,0,0.0],"emmeric":[40,0,0.0],"ezayah":[23,0,0.0],"ezmael":[11,0,0.0],"fawzan":[25,0,0.0],"fuzail":[5,0,0.0],"gannicus":[45,0,0.0],"gatlen":[39,0,0.0],"giannis":[947,32,0.5786],"goshen":[17,0,0.0],"grantlee":[35,0,0.0],"grigory":[5,0,0.0],"gurdit":[10,0,0.0],"hael":[16,10,0.0],"hajin":[17,0,0.0],"hantz":[5,0,0.0],"hardison":[35,0,0.0],"harjaap":[10,0,0.0],"harsimar":[5,0,0.0],"hastiin":[5,0,0.0],"henon":[10,0,0.0],"hinson":[60,0,0.0],"holder":[26,0,0.0],"holsten":[59,0,0.0],"hongyu":[5,0,0.0],"hriyaan":[5,0,0.0],"hudeyfa":[25,0,0.0],"illyas":[10,0,0.0],"imron":[158,0,0.4397],"izah":[5,0,0.0],"jaad":[59,0,0.0],"jacarter":[20,0,0.0],"jacione":[5,0,0.0],"jacoub":[5,0,0.0],"jaeceion":[5,0,0.0],"jaell":[5,0,0.0],"jaisyn":[15,5,0.0],"jaks":[5,0,0.0],"jalonni":[5,47,0.0],"janick":[5,0,0.0],"janko":[5,0,0.0],"jarmani":[5,0,0.0],"jasik":[5,0,0.0],"jaxel":[105,0,0.4042],"jaykon":[63,0,0.0],"jaymis":[5,0,0.0],"jaysan":[5,0,0.0],"jaysik":[5,0,0.0],"jeidan":[5,0,0.0],"jettsen":[115,0,0.4121],"jioni":[11,15,0.0],"jodiel":[5,0,0.0],"junjie":[17,0,0.0],"kaceson":[42,0,0.0],"kaceyon":[92,0,0.0],"kager":[5,0,0.0],"kahtai":[5,0,0.0],"kaido":[82,0,0.0],"kaisin":[11,0,0.0],"kamarious":[5,0,0.0],"kamm":[5,0,0.0],"kaon":[33,0,0.0],"kastyn":[49,22,0.0],"keiner":[51,0,0.0],"kenil":[22,0,0.0],"kensyn":[5,0,0.0],"kershaw":[47,0,0.0],"keymonie":[5,0,0.0],"kezion":[11,0,0.0],"kholten":[10,0,0.0],"khristan":[5,0,0.0],"khyaire":[122,0,0.4173],"khylar":[55,63,0.2212],"kiean":[10,0,0.0],"kinganthony":[13,0,0.0],"kingjoseph":[16,0,0.0],"kingstan":[68,0,0.0],"knoxville":[10,0,0.0],"kollier":[15,5,0.0],"krishal":[65,0,0.0],"krishil":[5,0,0.0],"kriyansh":[97,0,0.0],"kruize":[16,0,0.0],"kyiren":[5,0,0.0],"kystin":[5,0,0.0],"kyten":[5,0,0.0],"lajayceon":[5,0,0.0],"lakayden":[10,0,0.0],"lameir":[40,0,0.0],"legendary":[106,5,0.3906],"leithan":[5,0,0.0],"lens":[31,0,0.0],"leoul":[10,0,0.0],"leveon":[270,0,0.4863],"levion":[16,0,0.0],"lexandro":[5,0,0.0],"liamalexander":[30,0,0.0],"lobsang":[11,0,0.0],"logahn":[5,7,0.0],"lonan":[49,0,0.0],"maaseiah":[16,0,0.0],"maceon":[44,0,0.0],"mach":[11,0,0.0],"madiba":[5,0,0.0],"makston":[5,0,0.0],"malakhy":[5,0,0.0],"mamadu":[10,0,0.0],"mascen":[5,0,0.0],"maxxen":[10,0,0.0],"maykol":[88,0,0.0],"mcconnell":[5,0,0.0],"melky":[5,0,0.0],"messias":[53,0,0.0],"messyah":[34,0,0.0],"minjoon":[5,0,0.0],"mohamedamiin":[15,0,0.0],"mojtaba":[5,0,0.0],"mourya":[28,0,0.0],"mubin":[5,0,0.0],"mugen":[25,0,0.0],"muhammadamin":[152,0,0.4364],"mukarram":[5,0,0.0],"nabhya":[5,0,0.0],"nazih":[10,0,0.0],"neron":[11,0,0.0],"nirek":[5,0,0.0],"nivin":[145,0,0.4323],"niyan":[46,0,0.0],"nowah":[10,0,0.0],"oleksiy":[20,0,0.0],"oluwafolajimi":[5,0,0.0],"oluwajoba":[15,0,0.0],"oluwakayode":[5,0,0.0],"orryn":[20,0,0.0],"parmeet":[5,0,0.0],"pierston":[11,0,0.0],"prabhas":[11,0,0.0],"prabin":[5,0,0.0],"prajin":[5,0,0.0],"prakrit":[5,0,0.0],"pranil":[38,0,0.0],"prayash":[25,0,0.0],"princecharles":[16,0,0.0],"purab":[5,0,0.0],"qaiden":[10,0,0.0],"raaid":[5,0,0.0],"racin":[10,0,0.0],"radeen":[28,0,0.0],"rayfe":[10,0,0.0],"raylend":[10,0,0.0],"raysen":[15,0,0.0],"reeyan":[18,0,0.0],"reicher":[11,0,0.0],"reus":[11,0,0.0],"rev":[81,0,0.0],"reymi":[5,0,0.0],"rhoads":[15,0,0.0],"rhye":[60,5,0.0],"ridger":[71,0,0.0],"rihansh":[23,0,0.0],"rocker":[66,0,0.0],"rockson":[5,0,0.0],"rooks":[24,0,0.0],"roxen":[17,0,0.0],"rushank":[54,0,0.0],"ruxton":[55,0,0.0],"ryanpaul":[5,0,0.0],"ryat":[53,0,0.0],"sadman":[5,0,0.0],"sahaan":[27,0,0.0],"saidou":[30,0,0.0],"saifaldeen":[5,0,0.0],"saji":[11,0,0.0],"samarpreet":[5,0,0.0],"samuil":[21,0,0.0],"shahaan":[22,0,0.0],"shivaansh":[123,0,0.418],"shmeil":[38,0,0.0],"shreehan":[10,0,0.0],"shriyaan":[94,0,0.0],"sidahmed":[5,0,0.0],"sixten":[5,0,0.0],"soran":[18,0,0.0],"srihaan":[156,0,0.4386],"sriyansh":[123,0,0.418],"syere":[93,0,0.0],"syheem":[5,0,0.0],"taeson":[11,0,0.0],"tajveer":[25,0,0.0],"taneesh":[20,0,0.0],"taymour":[5,0,0.0],"teghveer":[17,0,0.0],"tevye":[10,0,0.0],"thadeo":[100,0,0.4],"thailen":[5,0,0.0],"timote":[11,0,0.0],"trapp":[5,0,0.0],"trendan":[5,0,0.0],"trishan":[33,0,0.0],"tywin":[33,0,0.0],"uzay":[78,0,0.0],"vihaas":[10,0,0.0],"vinn":[53,0,0.0],"viper":[5,5,0.0],"wailyn":[21,6,0.0],"wildan":[11,0,0.0],"wizdom":[44,0,0.0],"wylde":[95,5,0.38],"wynnston":[10,0,0.0],"yarell":[5,0,0.0],"yazziel":[5,0,0.0],"yeidan":[24,0,0.0],"yexiel":[5,0,0.0],"yule":[5,5,0.0],"yushin":[11,0,0.0],"yuven":[73,0,0.0],"yuyang":[5,0,0.0],"zachariyah":[10,0,0.0],"zahran":[65,0,0.0],"zaimar":[5,0,0.0],"zaiyan":[72,0,0.0],"zaydren":[5,0,0.0],"zaymere":[5,0,0.0],"zaysean":[5,0,0.0],"zedan":[5,0,0.0],"zedek":[5,0,0.0],"zeidan":[11,0,0.0],"zekeriah":[5,0,0.0],"zhalen":[5,0,0.0],"zichen":[46,0,0.0],"ziden":[5,0,0.0],"zijun":[5,0,0.0],"zilas":[19,0,0.0],"zirui":[18,0,0.0],"zoraiz":[119,0,0.4151],"kehlani":[46,12487,0.8166],"dayelin":[0,97,0.0],"abrish":[0,106,0.4051],"alahia":[0,425,0.5257],"hazelgrace":[0,159,0.4403],"nadyalee":[0,17,0.0],"hoorain":[0,376,0.515],"aitanna":[0,340,0.5063],"aithana":[0,399,0.5202],"aytana":[0,204,0.4619],"brexley":[59,513,0.4946],"jeshia":[0,55,0.0],"averyrose":[0,46,0.0],"absalat":[0,95,0.0],"kassiani":[0,99,0.0],"ovi":[34,85,0.2965],"viyona":[0,79,0.0],"charlestyn":[0,38,0.0],"ditya":[0,165,0.4435],"kylierae":[0,11,0.0],"mansirat":[0,27,0.0],"adecyn":[0,28,0.0],"amiyla":[0,93,0.0],"avaeah":[0,36,0.0],"beckley":[5,118,0.401],"dalarie":[0,40,0.0],"penelopie":[0,26,0.0],"shrinika":[0,269,0.486],"tanvika":[0,102,0.4017],"ahinara":[0,56,0.0],"aishvi":[0,41,0.0],"amalina":[0,16,0.0],"anamta":[0,50,0.0],"dahliana":[0,27,0.0],"heavenlyjoy":[0,42,0.0],"irelia":[0,103,0.4026],"irhaa":[0,56,0.0],"jhenesis":[0,73,0.0],"keyrah":[0,9,0.0],"khorie":[0,9,0.0],"mantasha":[0,9,0.0],"meylani":[0,75,0.0],"royalle":[0,46,0.0],"soraia":[0,27,0.0],"yemariam":[0,219,0.4681],"zendeya":[0,56,0.0],"adailyn":[0,16,0.0],"addlynn":[0,39,0.0],"adelline":[0,24,0.0],"aleinah":[0,13,0.0],"arshika":[0,49,0.0],"ayrie":[0,8,0.0],"ayslee":[0,24,0.0],"ayzah":[0,27,0.0],"brightly":[0,53,0.0],"burkleigh":[0,54,0.0],"dalari":[0,70,0.0],"edalyn":[0,91,0.0],"edelweiss":[0,79,0.0],"geysha":[0,19,0.0],"gloricely":[0,8,0.0],"hadalyn":[0,18,0.0],"hemen":[0,170,0.4461],"lasiya":[0,8,0.0],"leyann":[0,8,0.0],"maiven":[0,56,0.0],"marjona":[0,27,0.0],"mayve":[0,76,0.0],"mikynlee":[0,8,0.0],"mirha":[0,821,0.5829],"naylaa":[0,31,0.0],"nayvee":[0,194,0.4576],"oracle":[16,37,0.0],"rubani":[0,145,0.4323],"selihom":[0,43,0.0],"sreenika":[0,65,0.0],"tiaraoluwa":[0,239,0.4757],"yadelin":[0,32,0.0],"yessia":[0,24,0.0],"zalaysia":[0,13,0.0],"zixin":[0,14,0.0],"aaravi":[0,81,0.0],"addlyn":[0,40,0.0],"adelen":[0,7,0.0],"adesewa":[0,54,0.0],"adey":[0,27,0.0],"ahdia":[0,20,0.0],"ahnalia":[0,17,0.0],"alreem":[0,13,0.0],"amreet":[0,7,0.0],"arkadia":[0,7,0.0],"azrah":[0,78,0.0],"baileyrae":[0,7,0.0],"braisley":[0,16,0.0],"breelan":[0,21,0.0],"calilynn":[0,7,0.0],"charlierose":[0,85,0.0],"chylie":[0,12,0.0],"darasimi":[5,70,0.0],"deila":[0,7,0.0],"eisleigh":[0,19,0.0],"elanni":[0,57,0.0],"emlee":[0,7,0.0],"ezoza":[0,13,0.0],"ghofran":[0,7,0.0],"irely":[0,7,0.0],"ishaani":[0,71,0.0],"izarra":[0,30,0.0],"jahlayah":[0,30,0.0],"jessabell":[0,7,0.0],"jhonni":[0,7,0.0],"johileny":[0,12,0.0],"jolani":[5,91,0.0],"kayzlyn":[0,7,0.0],"keissy":[0,27,0.0],"kyelynn":[0,21,0.0],"laklyn":[0,76,0.0],"lilagrace":[0,7,0.0],"luthien":[0,74,0.0],"lylarae":[0,7,0.0],"lynox":[41,31,0.0],"maggiemae":[0,31,0.0],"maizlyn":[0,49,0.0],"malysia":[0,7,0.0],"mckenzlie":[0,12,0.0],"morireoluwa":[22,58,0.0],"nabaa":[0,7,0.0],"nadilynn":[0,7,0.0],"namyah":[0,18,0.0],"natlee":[0,7,0.0],"nian":[5,7,0.0],"orianthi":[0,33,0.0],"paizlea":[0,7,0.0],"pariza":[0,7,0.0],"peytonmarie":[0,7,0.0],"rafif":[0,50,0.0],"raifa":[0,22,0.0],"remedi":[0,145,0.4323],"rominna":[0,19,0.0],"rumaysah":[0,23,0.0],"savannahmarie":[0,7,0.0],"shanvika":[0,92,0.0],"shreeja":[0,75,0.0],"siyan":[48,7,0.0],"sophiaanne":[0,7,0.0],"veeha":[0,44,0.0],"willah":[0,52,0.0],"yaleyza":[0,23,0.0],"yeji":[0,7,0.0],"zabel":[0,7,0.0],"zaleena":[0,13,0.0],"zeppelyn":[0,32,0.0],"aafia":[0,25,0.0],"aaleiah":[0,11,0.0],"aalinah":[0,6,0.0],"adaleia":[0,71,0.0],"adalyse":[0,17,0.0],"addyline":[0,35,0.0],"ahrayah":[0,6,0.0],"ailyah":[0,6,0.0],"aishleen":[0,39,0.0],"aketzali":[0,21,0.0],"aksha":[0,41,0.0],"alaiia":[0,216,0.4669],"alennah":[0,6,0.0],"alhena":[0,22,0.0],"aliaa":[0,45,0.0],"aliss":[0,54,0.0],"ameline":[0,12,0.0],"amiena":[0,6,0.0],"amitis":[0,6,0.0],"anannya":[0,6,0.0],"anarae":[0,11,0.0],"angye":[0,6,0.0],"annapurna":[0,22,0.0],"ariaa":[0,16,0.0],"atenea":[0,121,0.4166],"athenarose":[0,32,0.0],"aurelya":[0,6,0.0],"avaah":[0,6,0.0],"aviree":[0,11,0.0],"avynlee":[0,11,0.0],"aynur":[0,34,0.0],"azaiyah":[6,49,0.0],"azeen":[0,11,0.0],"azhari":[5,31,0.0],"brexlyn":[0,60,0.0],"brinslee":[0,20,0.0],"briyith":[0,11,0.0],"calionna":[0,6,0.0],"charlotteann":[0,12,0.0],"charlottemarie":[0,6,0.0],"chiziterem":[0,29,0.0],"chlo":[0,34,0.0],"chrissiana":[0,6,0.0],"clairah":[0,6,0.0],"dallee":[0,23,0.0],"deemah":[0,6,0.0],"dheeksha":[0,16,0.0],"dilreet":[0,13,0.0],"eilani":[0,101,0.4009],"ellalee":[0,21,0.0],"ellalynn":[0,6,0.0],"ellyanah":[0,52,0.0],"eriss":[0,28,0.0],"eslyn":[0,55,0.0],"evanora":[0,106,0.4051],"fayelyn":[0,18,0.0],"gaely":[0,6,0.0],"gazal":[0,13,0.0],"gracesyn":[0,6,0.0],"graelynn":[0,119,0.4151],"halani":[0,104,0.4034],"harvi":[0,35,0.0],"havya":[0,21,0.0],"hudis":[0,6,0.0],"huxlie":[0,6,0.0],"jasreen":[0,14,0.0],"javelin":[0,6,0.0],"jeisy":[0,20,0.0],"jiayue":[0,6,0.0],"kaisleigh":[0,177,0.4496],"kaliese":[0,11,0.0],"kalonni":[0,49,0.0],"kalypso":[0,75,0.0],"kaslynn":[0,22,0.0],"kenzlynn":[0,17,0.0],"khalynn":[0,11,0.0],"korlee":[0,6,0.0],"kynzlei":[0,42,0.0],"lailanni":[0,45,0.0],"lanarose":[0,6,0.0],"laylonni":[0,16,0.0],"leneah":[0,6,0.0],"leonnie":[0,24,0.0],"lolana":[0,6,0.0],"lunarae":[0,114,0.4114],"lynex":[23,18,0.0],"maeya":[0,12,0.0],"maguette":[0,19,0.0],"makenzley":[0,11,0.0],"malenny":[0,6,0.0],"masah":[0,13,0.0],"mckenzlee":[0,17,0.0],"miasophia":[0,6,0.0],"milarose":[0,189,0.4553],"murphie":[0,246,0.4782],"nadelynn":[0,6,0.0],"naelynn":[0,6,0.0],"naseeb":[5,72,0.0],"nerriah":[0,12,0.0],"nuna":[0,29,0.0],"paisleyann":[0,43,0.0],"paisynn":[0,6,0.0],"paizlyn":[0,21,0.0],"parkyr":[5,20,0.0],"payzleigh":[0,36,0.0],"rakshana":[0,6,0.0],"raylnn":[0,12,0.0],"rexalynn":[0,6,0.0],"rhowyn":[0,12,0.0],"roseabella":[0,6,0.0],"rousey":[0,6,0.0],"rushika":[0,80,0.0],"ruthvika":[0,29,0.0],"rylene":[0,6,0.0],"saelor":[0,28,0.0],"sameenah":[0,6,0.0],"serel":[0,49,0.0],"seyram":[0,6,0.0],"shivya":[0,84,0.0],"shreenika":[0,100,0.4],"siahna":[0,20,0.0],"skylarrose":[0,50,0.0],"steisy":[0,34,0.0],"temilayo":[0,6,0.0],"thaya":[0,11,0.0],"vivvian":[0,6,0.0],"viyana":[0,66,0.0],"yarizmar":[0,6,0.0],"yeilani":[0,87,0.0],"yeshi":[0,11,0.0],"yulema":[0,29,0.0],"yuliani":[0,32,0.0],"zaha":[0,101,0.4009],"zahlia":[0,77,0.0],"zanelle":[0,11,0.0],"zymiah":[0,11,0.0],"aada":[0,19,0.0],"aaleena":[0,5,0.0],"aalena":[0,5,0.0],"aalieyah":[0,5,0.0],"aalisa":[0,5,0.0],"aaliyanna":[0,11,0.0],"aalyna":[0,5,0.0],"aamanee":[0,16,0.0],"aarabhi":[0,17,0.0],"aaraya":[0,12,0.0],"aarilynn":[0,15,0.0],"aaruhi":[0,69,0.0],"aaryahi":[0,67,0.0],"aarza":[0,48,0.0],"abidah":[0,5,0.0],"adalinne":[0,5,0.0],"adaure":[0,5,0.0],"addallee":[0,10,0.0],"adelaya":[0,43,0.0],"adeleen":[0,5,0.0],"adelilah":[0,17,0.0],"adesire":[0,42,0.0],"adorable":[0,21,0.0],"adrey":[0,5,0.0],"aevyn":[0,5,0.0],"ainsly":[0,5,0.0],"aishini":[0,18,0.0],"alaurah":[0,5,0.0],"alayda":[0,11,0.0],"alfiya":[0,11,0.0],"alisana":[0,5,0.0],"aloe":[0,47,0.0],"alori":[0,116,0.4129],"amarillys":[0,5,0.0],"amiyiah":[0,11,0.0],"amylea":[0,5,0.0],"amyrical":[0,32,0.0],"anaahat":[0,5,0.0],"anahat":[0,99,0.0],"anauri":[0,5,0.0],"aniyahlee":[0,10,0.0],"annaline":[0,10,0.0],"annzley":[0,5,0.0],"antheia":[0,10,0.0],"aonesti":[0,5,0.0],"aralin":[0,5,0.0],"arbri":[0,5,0.0],"archi":[6,5,0.0],"areni":[0,69,0.0],"ariayah":[0,17,0.0],"arieya":[0,33,0.0],"ariyella":[0,38,0.0],"ariyiah":[0,10,0.0],"armoney":[0,5,0.0],"aroya":[0,5,0.0],"aryadne":[0,5,0.0],"asfiya":[0,11,0.0],"aubreyjo":[0,5,0.0],"aubriaunna":[0,5,0.0],"aureli":[0,13,0.0],"auroura":[0,10,0.0],"avenlee":[0,27,0.0],"averlie":[0,22,0.0],"aviary":[0,10,0.0],"ayanami":[0,5,0.0],"ayni":[0,17,0.0],"ayomi":[0,100,0.4],"ayriauna":[0,5,0.0],"ayvia":[0,23,0.0],"ayvri":[0,5,0.0],"ayzaria":[0,10,0.0],"azaleyah":[0,36,0.0],"aziriah":[0,5,0.0],"baxlee":[0,11,0.0],"beckette":[5,15,0.0],"bellalynn":[0,5,0.0],"berkly":[0,5,0.0],"betselot":[0,85,0.0],"bexli":[0,41,0.0],"binisha":[0,5,0.0],"braxleigh":[0,5,0.0],"brealeigh":[0,5,0.0],"breayla":[0,10,0.0],"breelin":[0,5,0.0],"brexlee":[5,214,0.4574],"brexlie":[0,39,0.0],"breydi":[0,5,0.0],"brinnlee":[0,21,0.0],"brizleth":[0,5,0.0],"brynzlee":[0,14,0.0],"cambrynn":[0,5,0.0],"capella":[0,5,0.0],"carmani":[0,21,0.0],"cascia":[0,5,0.0],"chaarvi":[0,53,0.0],"chaylynn":[0,5,0.0],"chayni":[0,5,0.0],"chevee":[0,5,0.0],"clarajane":[0,20,0.0],"crisanna":[0,5,0.0],"cynthiana":[0,5,0.0],"daileigh":[0,21,0.0],"daisylynn":[0,10,0.0],"dalayssa":[0,5,0.0],"dalyss":[6,5,0.0],"darianys":[0,5,0.0],"darlenys":[0,25,0.0],"dazay":[0,5,0.0],"dazaya":[0,5,0.0],"delaenie":[0,5,0.0],"delillah":[0,15,0.0],"deshna":[0,5,0.0],"deyala":[0,5,0.0],"drisha":[0,17,0.0],"dwija":[0,19,0.0],"edengrace":[0,21,0.0],"eilany":[0,81,0.0],"elannie":[0,22,0.0],"elauna":[0,10,0.0],"elilta":[0,44,0.0],"eliorah":[0,33,0.0],"elizabethrose":[0,43,0.0],"elliegrace":[0,21,0.0],"elodee":[0,12,0.0],"elyzza":[0,5,0.0],"emerleigh":[0,92,0.0],"emmeryn":[0,18,0.0],"empryss":[0,83,0.0],"erzsebet":[0,5,0.0],"esmia":[0,12,0.0],"evaleena":[0,18,0.0],"evalei":[0,5,0.0],"eveah":[0,21,0.0],"evnika":[0,13,0.0],"faby":[0,5,0.0],"faora":[0,5,0.0],"fayrouz":[0,83,0.0],"fikir":[0,5,0.0],"fira":[0,28,0.0],"fridda":[0,5,0.0],"fuka":[0,5,0.0],"fynlie":[0,24,0.0],"gracelinn":[0,13,0.0],"gracella":[0,5,0.0],"greicy":[0,73,0.0],"habon":[0,10,0.0],"hameedah":[0,5,0.0],"hannaleigh":[0,5,0.0],"hanvitha":[0,16,0.0],"harleequinn":[0,5,0.0],"harminnie":[0,5,0.0],"hazelrose":[0,5,0.0],"hazlyn":[0,39,0.0],"heartlyn":[0,15,0.0],"heeya":[0,16,0.0],"henzlee":[0,30,0.0],"heysel":[0,46,0.0],"huai":[0,10,0.0],"humeyra":[0,5,0.0],"hynleigh":[0,10,0.0],"ikhlaas":[0,26,0.0],"iri":[0,5,0.0],"itzamaray":[0,5,0.0],"ivyann":[0,11,0.0],"iyinoluwa":[5,10,0.0],"jadealynn":[0,5,0.0],"jalanie":[0,34,0.0],"janaila":[0,5,0.0],"jaoni":[0,11,0.0],"jarelin":[0,5,0.0],"jasabelle":[0,5,0.0],"jaycii":[0,5,0.0],"jekalyn":[0,25,0.0],"jemyah":[0,5,0.0],"jennevieve":[0,5,0.0],"jessabel":[0,5,0.0],"jmyiah":[0,5,0.0],"joleigha":[0,5,0.0],"joules":[11,37,0.0],"journae":[0,10,0.0],"juliagrace":[0,5,0.0],"kahmila":[0,37,0.0],"kaimya":[0,5,0.0],"kaiylee":[0,5,0.0],"karslyn":[0,16,0.0],"kasima":[0,17,0.0],"katherynn":[0,5,0.0],"kaylonni":[0,78,0.0],"kayslie":[0,16,0.0],"kenayah":[0,18,0.0],"kennasyn":[0,5,0.0],"keylanie":[0,43,0.0],"khairah":[0,15,0.0],"kopelyn":[7,118,0.3959],"korlyn":[0,5,0.0],"kressida":[0,5,0.0],"krisslyn":[0,11,0.0],"kyda":[0,5,0.0],"kylieanna":[0,5,0.0],"kymiyah":[0,11,0.0],"lakinzi":[0,5,0.0],"lakshana":[0,23,0.0],"lameese":[0,5,0.0],"layane":[0,10,0.0],"laylarae":[0,10,0.0],"layoni":[0,81,0.0],"legacee":[23,155,0.3919],"leianah":[0,11,0.0],"leilarose":[0,5,0.0],"leotie":[0,5,0.0],"levicy":[0,5,0.0],"leynah":[0,5,0.0],"lileeann":[0,5,0.0],"lilliangrace":[0,5,0.0],"liyan":[63,11,0.0],"lizbella":[0,10,0.0],"lorayna":[0,5,0.0],"lordina":[0,10,0.0],"loyaltee":[0,48,0.0],"ludovica":[0,42,0.0],"luniva":[0,13,0.0],"lusi":[0,5,0.0],"luziana":[0,41,0.0],"lybertie":[0,5,0.0],"lyleigh":[0,12,0.0],"lyllianna":[0,5,0.0],"lyndyn":[0,10,0.0],"mackenziee":[0,5,0.0],"macklynn":[0,110,0.4083],"maeanna":[0,5,0.0],"maesynn":[0,5,0.0],"mahibah":[0,5,0.0],"mailany":[0,5,0.0],"maiyana":[0,10,0.0],"maizley":[0,119,0.4151],"makynsie":[0,5,0.0],"malaeya":[0,5,0.0],"malaysa":[0,5,0.0],"maleficent":[0,16,0.0],"malonna":[0,5,0.0],"maori":[0,5,0.0],"marlayah":[0,74,0.0],"mavyn":[0,41,0.0],"maycin":[0,5,0.0],"mayrah":[0,5,0.0],"mckynlei":[0,5,0.0],"mehjabin":[0,10,0.0],"meigha":[0,5,0.0],"meirah":[0,5,0.0],"melaniee":[0,18,0.0],"merali":[0,5,0.0],"mialuna":[0,16,0.0],"milamarie":[0,5,0.0],"milanee":[0,32,0.0],"milanii":[0,76,0.0],"milyana":[0,16,0.0],"mirin":[0,5,0.0],"mkaela":[0,5,0.0],"modesireoluwa":[0,19,0.0],"monioluwa":[0,5,0.0],"mushtaaq":[0,5,0.0],"muska":[0,70,0.0],"myalise":[0,5,0.0],"mylayah":[0,48,0.0],"naeva":[0,43,0.0],"naihomy":[0,5,0.0],"naomigrace":[0,11,0.0],"nathanaelle":[0,17,0.0],"navira":[0,101,0.4009],"naylia":[0,5,0.0],"nelya":[0,80,0.0],"nevayiah":[0,5,0.0],"neylani":[0,176,0.4491],"nhala":[0,5,0.0],"nix":[85,5,0.0],"noree":[0,47,0.0],"norianna":[0,22,0.0],"nuoyi":[0,5,0.0],"oaklea":[0,64,0.0],"oghenemine":[0,5,0.0],"oluwafikayomi":[17,26,0.0],"omina":[0,43,0.0],"osiria":[0,5,0.0],"paisleyrose":[0,10,0.0],"paylee":[0,10,0.0],"pranvi":[0,28,0.0],"princy":[0,10,0.0],"raighlyn":[0,5,0.0],"ramlah":[0,11,0.0],"raziela":[0,5,0.0],"rebyl":[0,5,0.0],"remilynn":[0,81,0.0],"retage":[0,5,0.0],"rijja":[0,5,0.0],"riplee":[31,48,0.0],"rokiatou":[0,5,0.0],"ronza":[0,23,0.0],"roohi":[0,115,0.4121],"rutila":[0,81,0.0],"safiyo":[0,5,0.0],"scarletrose":[0,15,0.0],"seliana":[0,5,0.0],"serly":[0,5,0.0],"shaanvi":[0,82,0.0],"shafia":[0,5,0.0],"shakhzoda":[0,5,0.0],"shesia":[0,5,0.0],"siddhiksha":[0,10,0.0],"simbo":[0,5,0.0],"similoluwa":[0,17,0.0],"skielynn":[0,5,0.0],"soleigh":[0,5,0.0],"soliha":[0,168,0.4451],"sriaadya":[0,5,0.0],"sridha":[0,13,0.0],"stellaluna":[0,64,0.0],"stuthi":[0,10,0.0],"swadha":[0,10,0.0],"syreen":[0,5,0.0],"tabriya":[0,5,0.0],"tamaryn":[0,5,0.0],"tamriel":[0,5,0.0],"tarteel":[0,18,0.0],"tenslee":[0,5,0.0],"thiya":[0,75,0.0],"trishika":[0,163,0.4424],"vaeh":[0,5,0.0],"vaiga":[0,10,0.0],"vaile":[0,5,0.0],"vildan":[0,5,0.0],"viviani":[0,25,0.0],"vydia":[0,5,0.0],"wejdan":[0,5,0.0],"westlyn":[35,423,0.4915],"westlynn":[0,262,0.4837],"wila":[0,10,0.0],"willowgrace":[0,36,0.0],"wrylee":[0,25,0.0],"wryn":[0,85,0.0],"xaela":[0,43,0.0],"xaelah":[0,22,0.0],"xirena":[0,5,0.0],"xochiquetzal":[0,15,0.0],"yalaina":[0,10,0.0],"yaleni":[0,31,0.0],"yashoda":[0,5,0.0],"yazbeth":[0,16,0.0],"yerani":[0,5,0.0],"yuleisi":[0,5,0.0],"yuzu":[0,33,0.0],"zadey":[0,5,0.0],"zalaiya":[0,40,0.0],"zarmeen":[0,5,0.0],"zaylani":[0,205,0.4624],"zeineb":[0,5,0.0],"zephora":[0,24,0.0],"zikra":[0,42,0.0],"zinachimdi":[0,42,0.0],"zitong":[0,18,0.0],"ziyi":[5,20,0.0],"ziyla":[0,37,0.0],"zizi":[0,15,0.0],"zoeiy":[0,5,0.0],"zosha":[0,5,0.0],"zulia":[0,5,0.0],"zurianna":[0,20,0.0],"gotham":[220,0,0.4685],"jersen":[21,0,0.0],"meshilem":[152,0,0.4364],"jacquees":[166,0,0.444],"oberyn":[111,0,0.4091],"nihan":[67,188,0.3548],"oxley":[75,0,0.0],"aniv":[55,0,0.0],"jidenna":[396,0,0.5195],"azhaan":[78,0,0.0],"cyrie":[149,0,0.4346],"jhonael":[22,0,0.0],"mudassir":[39,0,0.0],"aadhvik":[167,0,0.4445],"ahil":[167,0,0.4445],"beorn":[80,0,0.0],"beshoy":[33,0,0.0],"esneider":[20,0,0.0],"mucad":[62,0,0.0],"princeamir":[47,0,0.0],"salix":[42,6,0.0],"tharan":[9,0,0.0],"amius":[36,0,0.0],"axe":[59,0,0.0],"daxston":[57,0,0.0],"devaansh":[110,0,0.4083],"dipson":[19,0,0.0],"firdavs":[22,0,0.0],"januelle":[8,0,0.0],"joaolucas":[44,0,0.0],"jonahel":[18,0,0.0],"kaise":[29,0,0.0],"kendriel":[122,0,0.4173],"mahid":[63,0,0.0],"maxxis":[8,0,0.0],"mendeecee":[13,0,0.0],"mivaan":[232,0,0.4731],"mofeoluwa":[19,0,0.0],"yazn":[68,0,0.0],"yeicob":[68,0,0.0],"aarien":[7,0,0.0],"agustya":[30,0,0.0],"almeer":[7,0,0.0],"arsyn":[19,0,0.0],"averyon":[7,0,0.0],"bandar":[18,0,0.0],"barkon":[143,0,0.4311],"bex":[89,23,0.3257],"brais":[18,0,0.0],"brasi":[37,0,0.0],"calhan":[24,0,0.0],"crowley":[57,0,0.0],"cub":[62,0,0.0],"daedalus":[15,0,0.0],"darkiel":[96,0,0.0],"dawens":[57,0,0.0],"deimos":[38,0,0.0],"denaro":[7,0,0.0],"emmerick":[63,0,0.0],"evrhett":[30,0,0.0],"ezriah":[52,10,0.0],"fordham":[67,0,0.0],"greison":[37,0,0.0],"henil":[7,0,0.0],"himansh":[7,0,0.0],"hrihaan":[48,0,0.0],"jaxstyn":[122,0,0.4173],"josziah":[7,0,0.0],"judsen":[56,0,0.0],"karlyle":[17,0,0.0],"kaung":[18,0,0.0],"keizer":[90,0,0.0],"keraun":[37,0,0.0],"khingston":[34,0,0.0],"kingzley":[12,0,0.0],"koba":[40,0,0.0],"mackston":[39,0,0.0],"manvith":[47,0,0.0],"maru":[26,11,0.0],"moaz":[34,0,0.0],"murari":[17,0,0.0],"olli":[49,5,0.0],"samraat":[33,0,0.0],"samyar":[67,0,0.0],"shivin":[113,0,0.4106],"sitiveni":[12,0,0.0],"tazeem":[7,0,0.0],"yoenis":[7,0,0.0],"zarrar":[65,0,0.0],"zidon":[12,0,0.0],"zyvon":[7,0,0.0],"aadithya":[19,0,0.0],"aahir":[27,0,0.0],"aali":[6,0,0.0],"aariketh":[6,0,0.0],"aaryash":[30,0,0.0],"abdirahin":[6,0,0.0],"abhiraam":[6,0,0.0],"acacius":[6,0,0.0],"adhyan":[39,0,0.0],"adoraim":[12,0,0.0],"adyaan":[6,0,0.0],"agamveer":[59,0,0.0],"akhilles":[30,0,0.0],"akiro":[46,0,0.0],"akrish":[6,0,0.0],"akyrie":[15,0,0.0],"aleix":[56,0,0.0],"antares":[36,0,0.0],"asire":[58,0,0.0],"attley":[6,14,0.0],"auberon":[24,0,0.0],"azyan":[22,0,0.0],"behrett":[33,0,0.0],"berrin":[6,0,0.0],"brasher":[6,0,0.0],"buxton":[71,0,0.0],"charming":[65,5,0.0],"chetanna":[13,0,0.0],"chiagoziem":[12,0,0.0],"chiemerie":[6,0,0.0],"creedyn":[25,0,0.0],"daxxon":[45,0,0.0],"daygen":[6,0,0.0],"dilshaan":[11,0,0.0],"dimar":[6,0,0.0],"drax":[74,0,0.0],"draymond":[55,0,0.0],"elet":[6,0,0.0],"emere":[20,0,0.0],"esneyder":[6,0,0.0],"gaell":[12,0,0.0],"gennady":[83,0,0.0],"goliath":[49,0,0.0],"greyston":[27,0,0.0],"haegen":[11,0,0.0],"hezekyah":[31,0,0.0],"hoytt":[6,0,0.0],"iakona":[6,0,0.0],"jaxion":[6,0,0.0],"jazyon":[6,0,0.0],"jceyon":[6,0,0.0],"jendriel":[19,0,0.0],"jephthah":[17,0,0.0],"jeresiah":[11,0,0.0],"jikai":[6,0,0.0],"jiram":[24,0,0.0],"johnael":[6,0,0.0],"jonesy":[25,19,0.0],"jonniel":[12,0,0.0],"jorim":[6,0,0.0],"kaiyel":[6,0,0.0],"kardier":[55,0,0.0],"kartyr":[13,23,0.0],"kefren":[24,0,0.0],"khairo":[197,0,0.4589],"kiba":[11,0,0.0],"kieden":[6,0,0.0],"kingmessiah":[25,0,0.0],"knoll":[12,0,0.0],"korede":[40,0,0.0],"kristofferson":[11,0,0.0],"laurenzo":[16,0,0.0],"lynkoln":[30,0,0.0],"malahkai":[36,0,0.0],"masir":[53,0,0.0],"mehaan":[6,0,0.0],"mowgli":[38,0,0.0],"mudaser":[6,0,0.0],"mudasir":[76,0,0.0],"myssiah":[13,0,0.0],"nahoa":[6,0,0.0],"najair":[6,0,0.0],"nakhai":[21,0,0.0],"nasi":[39,0,0.0],"nikit":[12,0,0.0],"nirvik":[42,0,0.0],"oaklin":[130,85,0.2821],"obsa":[16,0,0.0],"omeir":[35,0,0.0],"phynn":[6,0,0.0],"priyan":[46,0,0.0],"raymier":[11,0,0.0],"remsen":[6,0,0.0],"rhyatt":[356,5,0.5044],"rhyett":[166,0,0.444],"riansh":[27,0,0.0],"rudraksh":[55,0,0.0],"ryeker":[12,0,0.0],"sehajveer":[6,0,0.0],"shashvat":[6,0,0.0],"srinav":[11,0,0.0],"stoic":[43,0,0.0],"swayde":[154,31,0.3775],"tahmeed":[30,0,0.0],"tamem":[12,0,0.0],"thian":[47,0,0.0],"tidiane":[6,0,0.0],"tilian":[171,5,0.4363],"udochukwu":[16,0,0.0],"varik":[6,0,0.0],"vasisht":[6,0,0.0],"vishaan":[85,0,0.0],"winsten":[46,0,0.0],"yad":[6,0,0.0],"yefim":[16,0,0.0],"yendriel":[6,0,0.0],"yugan":[142,0,0.4305],"zamarii":[11,5,0.0],"zaraan":[12,0,0.0],"zenden":[6,0,0.0],"zender":[6,0,0.0],"aaradhy":[5,0,0.0],"aavash":[42,0,0.0],"abdulkhaliq":[18,0,0.0],"abdulrazaq":[5,0,0.0],"abdurahmon":[31,0,0.0],"abhyuday":[10,0,0.0],"achaius":[5,0,0.0],"adryian":[5,0,0.0],"afa":[5,0,0.0],"ahkari":[58,0,0.0],"ahzab":[42,0,0.0],"ajang":[5,0,0.0],"akachukwu":[22,0,0.0],"akain":[5,0,0.0],"aker":[60,0,0.0],"akorede":[35,0,0.0],"aksil":[80,0,0.0],"amajae":[5,0,0.0],"ameere":[5,0,0.0],"amill":[5,0,0.0],"amittai":[10,0,0.0],"amorian":[16,0,0.0],"arha":[5,272,0.4797],"astraeus":[26,0,0.0],"aswin":[5,0,0.0],"aureus":[20,0,0.0],"avitaj":[50,0,0.0],"axiom":[10,0,0.0],"azaad":[92,0,0.0],"baelfire":[10,0,0.0],"bendrick":[5,0,0.0],"bilol":[68,0,0.0],"blin":[46,0,0.0],"brayce":[5,0,0.0],"bremen":[10,0,0.0],"brennus":[5,0,0.0],"brextin":[21,0,0.0],"calebjames":[5,0,0.0],"carper":[5,0,0.0],"carterlee":[10,0,0.0],"chengyu":[5,0,0.0],"clash":[11,0,0.0],"damariay":[5,0,0.0],"damonei":[5,0,0.0],"dannyray":[5,0,0.0],"daxel":[18,0,0.0],"daxxton":[74,0,0.0],"deprince":[5,0,0.0],"devonair":[5,0,0.0],"deyren":[56,0,0.0],"dresyn":[11,0,0.0],"edonis":[31,0,0.0],"eeyan":[5,0,0.0],"ehitan":[83,0,0.0],"eirnin":[5,0,0.0],"ekamjeet":[5,0,0.0],"elijames":[5,0,0.0],"ellet":[5,0,0.0],"elyott":[5,0,0.0],"enea":[37,0,0.0],"enki":[72,0,0.0],"eries":[22,5,0.0],"ermis":[5,0,0.0],"eshin":[5,0,0.0],"esnaider":[5,0,0.0],"fennec":[117,5,0.4002],"finland":[12,0,0.0],"flex":[16,0,0.0],"freylin":[5,0,0.0],"fynnegan":[25,0,0.0],"fynnigan":[24,0,0.0],"gadi":[23,0,0.0],"gadriel":[39,0,0.0],"ghian":[5,0,0.0],"gioanni":[5,0,0.0],"greylon":[17,0,0.0],"greyton":[10,0,0.0],"haddox":[12,0,0.0],"haneesh":[16,0,0.0],"hanzalah":[26,0,0.0],"harker":[26,0,0.0],"hayaan":[55,0,0.0],"hemingway":[33,0,0.0],"hendrex":[25,0,0.0],"hickson":[5,0,0.0],"hiyan":[74,0,0.0],"holbrook":[10,0,0.0],"hudaifa":[5,0,0.0],"hudayfi":[10,0,0.0],"hudeyfi":[10,0,0.0],"ibhan":[30,0,0.0],"ioseph":[5,0,0.0],"ivaniel":[10,0,0.0],"izyaan":[47,0,0.0],"jahlee":[10,0,0.0],"jahsiyah":[11,0,0.0],"jaiyce":[20,0,0.0],"jakhy":[12,0,0.0],"janniel":[12,0,0.0],"janxiel":[11,0,0.0],"jaxcyn":[5,0,0.0],"jazeel":[5,0,0.0],"jedriel":[5,0,0.0],"jensiel":[10,0,0.0],"jensin":[16,0,0.0],"jenssen":[5,0,0.0],"jesco":[5,0,0.0],"jettrin":[5,0,0.0],"jexton":[10,0,0.0],"joanel":[5,0,0.0],"joryel":[5,0,0.0],"jotaro":[5,0,0.0],"junming":[5,0,0.0],"junzhe":[5,0,0.0],"juwel":[5,0,0.0],"kaicyn":[68,5,0.0],"kailum":[38,0,0.0],"kaiming":[5,0,0.0],"kalahikiola":[5,0,0.0],"kalino":[77,0,0.0],"kamronbek":[16,0,0.0],"karbon":[10,0,0.0],"kasher":[55,0,0.0],"kashmeir":[43,0,0.0],"khance":[10,0,0.0],"khayr":[55,0,0.0],"khine":[5,0,0.0],"khymari":[10,0,0.0],"kiedis":[11,0,0.0],"kilean":[5,0,0.0],"kilyan":[87,0,0.0],"kingg":[20,0,0.0],"kingisaiah":[12,0,0.0],"kinzler":[5,0,0.0],"krishnav":[18,0,0.0],"kronos":[11,0,0.0],"kruger":[5,0,0.0],"kyeden":[5,0,0.0],"kymiere":[18,0,0.0],"kyrein":[16,0,0.0],"kyzin":[17,0,0.0],"landyon":[5,0,0.0],"laughlin":[17,0,0.0],"laveon":[17,0,0.0],"leoh":[38,0,0.0],"leovani":[68,0,0.0],"luthor":[15,0,0.0],"luziano":[13,0,0.0],"mahrus":[5,0,0.0],"mailo":[57,0,0.0],"majic":[22,0,0.0],"makaius":[22,0,0.0],"makarius":[5,0,0.0],"masonlee":[10,0,0.0],"maxmiliano":[5,0,0.0],"mayceon":[21,0,0.0],"mesai":[16,0,0.0],"miiking":[5,0,0.0],"milio":[29,0,0.0],"miraan":[36,0,0.0],"missiah":[5,0,0.0],"mubarik":[5,0,0.0],"mukunda":[5,0,0.0],"mustaqeem":[5,0,0.0],"nachshon":[5,0,0.0],"naqeeb":[5,0,0.0],"nashville":[31,0,0.0],"neemias":[5,0,0.0],"nidish":[5,0,0.0],"nihaan":[94,0,0.0],"noahanthony":[5,0,0.0],"noahmichael":[5,0,0.0],"oliber":[5,0,0.0],"oliverjames":[18,0,0.0],"oluwafikayo":[5,0,0.0],"parshva":[5,0,0.0],"peterjames":[5,0,0.0],"prabal":[5,0,0.0],"precieux":[10,0,0.0],"priam":[74,0,0.0],"princeanthony":[15,0,0.0],"princedavid":[19,0,0.0],"princejames":[5,0,0.0],"prinz":[5,0,0.0],"quayden":[5,0,0.0],"rainan":[10,0,0.0],"rakari":[34,0,0.0],"rangler":[5,0,0.0],"rayion":[5,0,0.0],"rayvonn":[5,0,0.0],"revaan":[40,0,0.0],"reyland":[5,0,0.0],"rheece":[5,0,0.0],"rhyis":[24,0,0.0],"rieker":[5,0,0.0],"rishvik":[46,0,0.0],"roam":[55,0,0.0],"robsan":[10,0,0.0],"romaan":[28,0,0.0],"rostam":[24,0,0.0],"rostislav":[5,0,0.0],"rudhvi":[5,0,0.0],"ryad":[16,0,0.0],"sahim":[12,0,0.0],"salinger":[10,0,0.0],"sameir":[51,0,0.0],"saras":[5,0,0.0],"seidon":[5,0,0.0],"semion":[5,0,0.0],"shahraan":[5,0,0.0],"sidon":[21,0,0.0],"siem":[33,0,0.0],"sitka":[30,0,0.0],"snaider":[5,0,0.0],"sosa":[100,0,0.4],"sotaro":[5,0,0.0],"souta":[5,0,0.0],"tajwar":[5,0,0.0],"thys":[5,0,0.0],"tr":[5,0,0.0],"treysin":[5,0,0.0],"trijal":[5,0,0.0],"tyheir":[11,0,0.0],"tyzen":[11,0,0.0],"ubaidullah":[5,0,0.0],"uzias":[26,0,0.0],"vahagn":[5,0,0.0],"vegeta":[10,0,0.0],"vidhaan":[34,0,0.0],"viransh":[99,0,0.0],"vishv":[5,0,0.0],"waaris":[10,0,0.0],"xaire":[109,0,0.4075],"xannder":[5,0,0.0],"yahushua":[5,0,0.0],"yaidden":[5,0,0.0],"yamajesty":[10,0,0.0],"yandry":[5,0,0.0],"yannai":[25,0,0.0],"yiddy":[48,0,0.0],"yien":[15,0,0.0],"yirmeyah":[13,0,0.0],"yordanny":[5,0,0.0],"yoshiyah":[10,0,0.0],"yurik":[5,0,0.0],"ywa":[16,0,0.0],"zafer":[5,0,0.0],"zaheen":[34,0,0.0],"zarar":[10,0,0.0],"zareon":[5,0,0.0],"zarrien":[5,0,0.0],"zecharya":[5,0,0.0],"ziheng":[22,0,0.0],"ziyu":[11,5,0.0],"zykir":[10,0,0.0],"zyus":[11,0,0.0],"khelani":[0,763,0.5765],"yurany":[0,29,0.0],"eretria":[0,152,0.4364],"cirilla":[0,468,0.534],"mehlani":[0,448,0.5303],"iselis":[0,23,0.0],"ahitana":[0,83,0.0],"shivanya":[0,96,0.0],"amei":[0,107,0.4059],"ayslinn":[0,63,0.0],"hathaway":[0,71,0.0],"kelahni":[0,162,0.4419],"dashly":[0,87,0.0],"kalahni":[0,153,0.4369],"navisha":[0,21,0.0],"oluwatishe":[0,17,0.0],"romee":[5,443,0.5243],"danahe":[0,15,0.0],"jeamileth":[0,16,0.0],"jiyana":[0,132,0.4241],"laibah":[0,15,0.0],"raelani":[0,103,0.4026],"remyngton":[13,17,0.0],"safreen":[0,31,0.0],"aadhvika":[0,38,0.0],"annlynn":[0,19,0.0],"averielle":[0,9,0.0],"dawsynn":[0,9,0.0],"kelayah":[0,39,0.0],"midna":[0,46,0.0],"riverly":[0,146,0.4329],"sayesha":[0,70,0.0],"wrenlee":[0,2152,0.6666],"xamira":[0,109,0.4075],"yailem":[0,16,0.0],"anabiya":[0,73,0.0],"anori":[0,106,0.4051],"arialynn":[0,58,0.0],"ase":[110,116,0.2417],"aurabella":[0,26,0.0],"bellemy":[54,34,0.0],"chaithra":[0,38,0.0],"dalaysa":[0,13,0.0],"durrani":[0,8,0.0],"eastlyn":[0,81,0.0],"ellaria":[0,111,0.4091],"evleen":[0,8,0.0],"ezria":[0,58,0.0],"frayah":[0,24,0.0],"furiosa":[0,8,0.0],"joliee":[0,19,0.0],"kaislynn":[0,113,0.4106],"lehlani":[0,270,0.4863],"lowyn":[0,58,0.0],"maroska":[0,8,0.0],"mazikeen":[11,1414,0.6259],"melianna":[0,34,0.0],"mishita":[0,47,0.0],"myreen":[0,16,0.0],"naileth":[0,28,0.0],"raeleah":[0,13,0.0],"rayia":[0,8,0.0],"salice":[0,103,0.4026],"siersha":[0,14,0.0],"skaii":[0,36,0.0],"tillee":[0,30,0.0],"yaz":[0,35,0.0],"yuranni":[0,8,0.0],"zaylea":[0,31,0.0],"zoelys":[0,48,0.0],"zyva":[0,62,0.0],"aadvi":[0,12,0.0],"aagna":[0,13,0.0],"alifa":[0,29,0.0],"aliyahmarie":[0,7,0.0],"anayalee":[0,13,0.0],"anqi":[0,19,0.0],"aviahna":[0,89,0.0],"avryn":[5,7,0.0],"azeemah":[0,23,0.0],"demyla":[0,23,0.0],"eider":[538,7,0.5403],"ellaclaire":[0,7,0.0],"elonie":[0,23,0.0],"eloria":[0,12,0.0],"ersheen":[0,7,0.0],"haddison":[0,7,0.0],"israt":[0,13,0.0],"iymona":[0,94,0.0],"kahmiah":[0,7,0.0],"kainaat":[0,63,0.0],"kayrah":[0,7,0.0],"kaysleigh":[0,34,0.0],"keicy":[0,7,0.0],"khalees":[0,20,0.0],"kiiara":[0,25,0.0],"lagertha":[0,89,0.0],"livanna":[0,7,0.0],"madianna":[0,12,0.0],"mahera":[0,33,0.0],"makenlei":[0,13,0.0],"manahal":[0,7,0.0],"mariavalentina":[0,12,0.0],"mayva":[0,76,0.0],"melanierose":[0,7,0.0],"mihrimah":[0,55,0.0],"nialynn":[0,12,0.0],"nihara":[0,23,0.0],"pelia":[0,42,0.0],"rahmat":[0,14,0.0],"reimi":[0,7,0.0],"richlynn":[0,41,0.0],"sochikaima":[0,19,0.0],"sylvanas":[0,70,0.0],"testimony":[5,28,0.0],"veeya":[0,7,0.0],"veira":[0,49,0.0],"waverlee":[0,80,0.0],"yusrah":[0,48,0.0],"zhoemi":[0,17,0.0],"ziani":[0,61,0.0],"zirwa":[0,71,0.0],"aafiya":[0,102,0.4017],"adau":[0,11,0.0],"adelea":[0,6,0.0],"adianey":[0,15,0.0],"aeiress":[0,51,0.0],"ahmora":[0,54,0.0],"akhira":[0,22,0.0],"amalthea":[0,19,0.0],"amata":[0,6,0.0],"ameliamae":[0,22,0.0],"aniva":[0,11,0.0],"arabellarose":[0,6,0.0],"arhea":[0,6,0.0],"ariadnna":[0,12,0.0],"ariaha":[0,11,0.0],"ariaya":[0,11,0.0],"arielah":[0,12,0.0],"aspenn":[0,6,0.0],"avajames":[0,11,0.0],"avellana":[0,34,0.0],"azhani":[0,108,0.4067],"bareera":[0,29,0.0],"breeland":[0,6,0.0],"brilliance":[0,49,0.0],"britynn":[0,6,0.0],"caislynn":[0,6,0.0],"callianna":[0,6,0.0],"catalayah":[0,16,0.0],"caziyah":[0,12,0.0],"colynn":[0,6,0.0],"daiyah":[0,6,0.0],"divleen":[0,6,0.0],"dliyah":[0,18,0.0],"edaline":[0,17,0.0],"emberlynne":[0,40,0.0],"emmaleen":[0,11,0.0],"emmerly":[0,29,0.0],"emmori":[0,11,0.0],"emylah":[0,6,0.0],"evagrace":[0,17,0.0],"fatimetou":[0,6,0.0],"finely":[0,6,0.0],"germanii":[0,6,0.0],"harleyrose":[0,29,0.0],"harliv":[0,16,0.0],"harpergrace":[0,28,0.0],"hazlie":[0,55,0.0],"hestia":[0,62,0.0],"hikmah":[0,6,0.0],"hirva":[0,16,0.0],"hrisha":[0,12,0.0],"hurain":[0,47,0.0],"inori":[0,48,0.0],"jaelys":[0,11,0.0],"jalylah":[0,29,0.0],"jasmeh":[0,6,0.0],"juliena":[0,6,0.0],"kahloni":[0,80,0.0],"kalki":[6,43,0.0],"kamiyla":[0,28,0.0],"kavisha":[0,6,0.0],"kayenat":[0,6,0.0],"kaylauni":[0,12,0.0],"keelani":[0,32,0.0],"kemma":[0,19,0.0],"khadi":[0,16,0.0],"kiori":[6,66,0.0],"kova":[104,145,0.2791],"kylayah":[0,25,0.0],"laniakea":[0,41,0.0],"lisabelle":[0,6,0.0],"liss":[0,12,0.0],"lorelay":[0,6,0.0],"lynly":[0,12,0.0],"maera":[0,12,0.0],"magy":[0,6,0.0],"maklynn":[0,6,0.0],"marjaan":[0,12,0.0],"marliana":[0,23,0.0],"mazlynn":[0,35,0.0],"melahni":[0,83,0.0],"mercygrace":[0,6,0.0],"merveille":[0,23,0.0],"michla":[0,6,0.0],"miila":[0,17,0.0],"milianys":[0,6,0.0],"milleigh":[0,25,0.0],"mirakel":[0,24,0.0],"mirycal":[0,6,0.0],"nafas":[0,13,0.0],"natilea":[0,6,0.0],"nikolija":[0,6,0.0],"niniola":[0,17,0.0],"noorain":[0,22,0.0],"noorulain":[0,31,0.0],"nozanin":[0,11,0.0],"nyaomi":[0,41,0.0],"oliviamae":[0,43,0.0],"pippi":[0,6,0.0],"ralayah":[0,11,0.0],"reighna":[0,43,0.0],"reyleigh":[0,13,0.0],"rianny":[0,6,0.0],"rileymae":[0,11,0.0],"ritanya":[0,22,0.0],"riverlee":[0,142,0.4305],"rosalyna":[0,28,0.0],"roseleigh":[0,76,0.0],"royalte":[0,28,0.0],"shiqi":[0,6,0.0],"siari":[0,17,0.0],"sitora":[0,12,0.0],"syiah":[0,11,0.0],"tikva":[0,11,0.0],"xarielys":[0,6,0.0],"xariya":[0,6,0.0],"xiah":[0,64,0.0],"yaleena":[0,6,0.0],"yarelii":[0,6,0.0],"yasmely":[0,11,0.0],"yeyetzi":[0,54,0.0],"yuliett":[0,48,0.0],"yvie":[0,57,0.0],"zaleia":[0,51,0.0],"zamina":[0,37,0.0],"zeplyn":[22,98,0.3396],"zhamira":[0,198,0.4593],"zoanna":[0,11,0.0],"aadriti":[0,56,0.0],"aafiyah":[0,88,0.0],"aaleayah":[0,5,0.0],"aaloni":[0,5,0.0],"aamora":[0,16,0.0],"aariella":[0,5,0.0],"aarynn":[0,5,0.0],"aazeen":[0,12,0.0],"abdia":[0,5,0.0],"abhirami":[0,5,0.0],"abraya":[0,5,0.0],"acelee":[0,5,0.0],"adaela":[0,5,0.0],"adalinna":[0,5,0.0],"addaly":[0,5,0.0],"addelaide":[0,18,0.0],"ador":[13,30,0.0],"aelia":[0,141,0.4298],"aelin":[0,304,0.4966],"aeriss":[0,5,0.0],"ahviana":[0,29,0.0],"ainslei":[0,5,0.0],"ajwan":[0,5,0.0],"akali":[0,29,0.0],"akshada":[0,5,0.0],"akur":[0,10,0.0],"alaeya":[0,45,0.0],"alaiiah":[0,5,0.0],"alianie":[0,5,0.0],"aliannys":[0,15,0.0],"aliyani":[0,5,0.0],"alonii":[0,21,0.0],"alzain":[0,5,0.0],"amanah":[0,87,0.0],"amaranth":[0,16,0.0],"amareli":[0,5,0.0],"ameiyah":[0,5,0.0],"ameliajane":[0,5,0.0],"ameyali":[0,72,0.0],"amiina":[0,10,0.0],"amilliah":[0,28,0.0],"amirya":[0,22,0.0],"amiyaah":[0,5,0.0],"anaica":[0,15,0.0],"analiegh":[0,5,0.0],"aneeksha":[0,11,0.0],"aneley":[0,26,0.0],"anllely":[0,27,0.0],"annamolly":[0,5,0.0],"arishka":[0,5,0.0],"arlowe":[23,104,0.3446],"arveen":[0,5,0.0],"athulya":[0,15,0.0],"auroralee":[0,5,0.0],"auvianna":[0,5,0.0],"avajo":[0,10,0.0],"avajoy":[0,21,0.0],"avalyna":[0,20,0.0],"aveaha":[0,5,0.0],"avelene":[0,15,0.0],"averiella":[0,46,0.0],"avyanah":[0,5,0.0],"awi":[0,5,0.0],"aylanni":[0,110,0.4083],"ayvee":[0,12,0.0],"azaley":[0,5,0.0],"azzahra":[0,12,0.0],"bakhita":[0,5,0.0],"bayoleth":[0,42,0.0],"becklyn":[0,35,0.0],"bellamee":[0,16,0.0],"bexlie":[0,96,0.0],"bisharo":[0,5,0.0],"blaque":[0,5,0.0],"blaykleigh":[0,21,0.0],"blessence":[0,108,0.4067],"brinlei":[0,11,0.0],"brixten":[126,10,0.3953],"brooklynmarie":[0,5,0.0],"bryliee":[0,5,0.0],"cambriella":[0,10,0.0],"camillah":[0,29,0.0],"cayda":[0,5,0.0],"ceridwen":[0,5,0.0],"charlirae":[0,5,0.0],"chiamanda":[0,11,0.0],"chierika":[0,5,0.0],"chimamaka":[0,10,0.0],"chisimdi":[0,30,0.0],"clararose":[0,5,0.0],"corbynn":[0,5,0.0],"coriyah":[0,11,0.0],"curie":[0,24,0.0],"cylia":[0,23,0.0],"daleyzza":[0,10,0.0],"dallace":[5,11,0.0],"dallary":[0,5,0.0],"daveya":[0,5,0.0],"davlynn":[0,5,0.0],"eastlynn":[0,27,0.0],"eava":[0,5,0.0],"ehlena":[0,5,0.0],"elaan":[5,5,0.0],"elien":[0,5,0.0],"elinn":[0,5,0.0],"ellenah":[0,5,0.0],"elliani":[0,68,0.0],"ellya":[0,5,0.0],"elowynn":[0,151,0.4358],"elyne":[0,5,0.0],"emaliah":[0,5,0.0],"emmyrose":[0,5,0.0],"emreigh":[0,29,0.0],"eni":[0,5,0.0],"enzleigh":[0,82,0.0],"eona":[0,5,0.0],"etti":[0,5,0.0],"evelien":[0,5,0.0],"everliegh":[0,103,0.4026],"ezichi":[0,5,0.0],"faida":[0,5,0.0],"fari":[0,5,0.0],"fionnula":[0,5,0.0],"flourish":[0,23,0.0],"franklynn":[0,39,0.0],"genevi":[0,15,0.0],"gilia":[0,5,0.0],"goldyn":[5,50,0.0],"habsa":[0,11,0.0],"hadiza":[0,10,0.0],"hanika":[0,20,0.0],"hanvika":[0,220,0.4685],"hariah":[0,5,0.0],"harliquinn":[0,5,0.0],"harperlee":[0,5,0.0],"hasinah":[0,5,0.0],"hasnaa":[0,10,0.0],"hazelmae":[0,34,0.0],"hazlynn":[0,46,0.0],"hensleigh":[0,88,0.0],"hinami":[0,29,0.0],"hinlee":[0,5,0.0],"hurrem":[0,25,0.0],"husaina":[0,45,0.0],"huxleigh":[0,46,0.0],"ifechukwu":[28,5,0.0],"ineza":[0,101,0.4009],"ioni":[0,11,0.0],"isalia":[0,24,0.0],"iselys":[0,5,0.0],"iseult":[0,5,0.0],"iyali":[0,39,0.0],"iyonnie":[0,5,0.0],"izelia":[0,5,0.0],"izidora":[0,5,0.0],"jadarose":[0,16,0.0],"jaeliani":[0,5,0.0],"jahriyah":[0,10,0.0],"jazbel":[0,31,0.0],"jazuri":[0,32,0.0],"jenalys":[0,5,0.0],"jiamei":[0,5,0.0],"jinane":[0,5,0.0],"jolaoluwa":[0,5,0.0],"julianis":[0,13,0.0],"jurany":[0,5,0.0],"juwayria":[0,5,0.0],"juwayriya":[0,35,0.0],"kahani":[0,37,0.0],"kailahni":[0,52,0.0],"kalauni":[0,10,0.0],"kalinah":[0,5,0.0],"kallieann":[0,5,0.0],"kamouri":[0,10,0.0],"karlianys":[0,10,0.0],"kavleen":[0,5,0.0],"kaymiah":[0,5,0.0],"kaysley":[0,69,0.0],"keirin":[0,5,0.0],"kenzlyn":[0,11,0.0],"kerlyht":[0,5,0.0],"khallie":[0,24,0.0],"kimbrielle":[0,5,0.0],"kireina":[0,19,0.0],"kloni":[0,59,0.0],"krishvi":[0,63,0.0],"kyleerose":[0,5,0.0],"kyreona":[0,5,0.0],"laiyanna":[0,5,0.0],"lakshita":[0,5,0.0],"lalelei":[0,10,0.0],"lamyrah":[0,5,0.0],"lazuli":[0,84,0.0],"leighvi":[0,5,0.0],"leiliani":[0,22,0.0],"leolani":[0,5,0.0],"lesedi":[0,27,0.0],"leyanni":[0,16,0.0],"lilieth":[0,189,0.4553],"lindarose":[0,5,0.0],"liorah":[0,39,0.0],"loulou":[0,10,0.0],"loveth":[0,5,0.0],"lozen":[0,32,0.0],"lulwa":[0,28,0.0],"luzmar":[0,5,0.0],"lyrric":[0,5,0.0],"madelinerose":[0,5,0.0],"mahani":[0,36,0.0],"maiella":[0,48,0.0],"maislynn":[0,32,0.0],"maitha":[0,5,0.0],"maklyn":[0,14,0.0],"malalai":[0,5,0.0],"manat":[0,5,0.0],"mariasofia":[0,22,0.0],"marlye":[0,5,0.0],"maryamawit":[0,10,0.0],"marziah":[0,5,0.0],"maslynn":[0,5,0.0],"maxlynn":[0,29,0.0],"maxxine":[0,36,0.0],"mayala":[0,5,0.0],"mazelyn":[0,35,0.0],"mazelynn":[0,53,0.0],"mealea":[0,5,0.0],"mehrimah":[0,5,0.0],"meilahni":[0,5,0.0],"meixi":[0,10,0.0],"melanin":[0,80,0.0],"mersiha":[0,5,0.0],"miaamor":[0,10,0.0],"miavalentina":[0,5,0.0],"miaysia":[0,5,0.0],"milahni":[0,93,0.0],"milarae":[0,39,0.0],"milauni":[0,15,0.0],"miriella":[0,11,0.0],"mofetoluwa":[5,5,0.0],"muyi":[0,5,0.0],"myarose":[0,23,0.0],"myrikle":[0,5,0.0],"nailee":[0,5,0.0],"naliana":[0,15,0.0],"navera":[0,5,0.0],"nazuri":[0,18,0.0],"nefertary":[0,26,0.0],"neiah":[0,5,0.0],"neilina":[0,5,0.0],"neorah":[0,12,0.0],"nirgun":[0,5,0.0],"norajean":[0,17,0.0],"norakate":[0,5,0.0],"novaley":[0,30,0.0],"novalise":[0,35,0.0],"novarae":[0,119,0.4151],"novaya":[0,37,0.0],"nylei":[0,5,0.0],"nylyn":[0,5,0.0],"oaklynd":[55,22,0.0],"ogheneruona":[0,5,0.0],"oreofeoluwa":[6,5,0.0],"osariemen":[0,5,0.0],"osiyo":[0,47,0.0],"oyinlola":[0,5,0.0],"paij":[0,5,0.0],"paisleyanne":[0,5,0.0],"paisleyjo":[0,5,0.0],"paisleymae":[0,29,0.0],"pakhi":[0,12,0.0],"parineeti":[0,5,0.0],"pasiley":[0,5,0.0],"payslei":[0,5,0.0],"ramirah":[0,5,0.0],"rayln":[0,5,0.0],"reeham":[0,5,0.0],"reilani":[0,18,0.0],"rekik":[0,5,0.0],"remeigh":[0,48,0.0],"reyanshi":[0,12,0.0],"reylyn":[0,24,0.0],"rhedyn":[0,5,0.0],"rias":[0,62,0.0],"ritvi":[0,41,0.0],"riyansika":[0,5,0.0],"rizwana":[0,10,0.0],"romila":[0,5,0.0],"romyna":[0,5,0.0],"rosmely":[0,10,0.0],"rozyn":[0,5,0.0],"rukaiya":[0,22,0.0],"ryeitt":[0,5,0.0],"ryleeh":[0,5,0.0],"sadiegrace":[0,17,0.0],"safana":[0,15,0.0],"safura":[0,15,0.0],"sahani":[0,22,0.0],"sanara":[0,10,0.0],"savine":[0,12,0.0],"sayeda":[0,10,0.0],"seenaa":[0,5,0.0],"shanvitha":[0,10,0.0],"shehrbano":[0,5,0.0],"sherezade":[0,5,0.0],"shiera":[0,10,0.0],"shivi":[0,32,0.0],"shyona":[0,5,0.0],"siyaa":[0,5,0.0],"skyia":[0,5,0.0],"skylann":[0,11,0.0],"solveigh":[0,16,0.0],"sophiamaria":[0,5,0.0],"sovilla":[0,5,0.0],"srikruthi":[0,12,0.0],"suhaira":[0,20,0.0],"summitt":[12,12,0.0],"taalia":[0,10,0.0],"taislee":[0,10,0.0],"tariel":[0,5,0.0],"tavifa":[0,5,0.0],"tesley":[0,23,0.0],"tessley":[0,11,0.0],"tiwaloluwa":[0,12,0.0],"tzofia":[0,18,0.0],"umeyma":[0,5,0.0],"ummehani":[0,23,0.0],"umrah":[0,29,0.0],"versailles":[7,22,0.0],"veruca":[0,5,0.0],"vishika":[0,15,0.0],"waelynn":[0,33,0.0],"whynter":[0,16,0.0],"wrenleigh":[0,951,0.5956],"xiaoxi":[0,5,0.0],"yadah":[0,5,0.0],"yifei":[0,5,0.0],"yodahe":[32,5,0.0],"yolandi":[0,15,0.0],"yulani":[0,94,0.0],"zaelie":[0,10,0.0],"zafreen":[0,27,0.0],"zahnia":[0,5,0.0],"zamiaya":[0,5,0.0],"zarlish":[0,5,0.0],"zavaeh":[0,10,0.0],"zeonna":[0,5,0.0],"zerayah":[0,10,0.0],"zing":[0,10,0.0],"zorrie":[0,5,0.0],"zumra":[0,12,0.0],"zyndaya":[0,5,0.0],"yuvin":[260,0,0.483],"kaulder":[162,0,0.4419],"anuel":[322,0,0.5016],"noxx":[91,0,0.0],"huckson":[141,0,0.4298],"shivaay":[235,0,0.4742],"bento":[139,0,0.4286],"eizan":[45,0,0.0],"dansby":[197,12,0.4374],"eadric":[29,0,0.0],"jenoah":[42,0,0.0],"rydar":[30,0,0.0],"sreehan":[11,0,0.0],"yeab":[78,5,0.0],"zende":[46,0,0.0],"aaraf":[27,0,0.0],"dheeran":[148,0,0.4341],"hartaj":[15,0,0.0],"noar":[109,0,0.4075],"oseias":[293,0,0.4934],"aanay":[33,0,0.0],"adharv":[108,0,0.4067],"anduin":[87,0,0.0],"borja":[33,0,0.0],"bryshere":[35,0,0.0],"cairee":[57,5,0.0],"jaivyon":[9,0,0.0],"jiaan":[34,0,0.0],"locryn":[33,0,0.0],"matthius":[19,0,0.0],"virlan":[178,0,0.4501],"yohandri":[9,0,0.0],"zisha":[68,0,0.0],"albus":[80,0,0.0],"aliyaan":[20,0,0.0],"amiyr":[8,0,0.0],"amulek":[8,0,0.0],"anikyn":[8,0,0.0],"azier":[84,0,0.0],"benham":[13,0,0.0],"bexar":[13,0,0.0],"calcifer":[117,0,0.4136],"dakaiden":[13,0,0.0],"dhrish":[24,0,0.0],"divam":[8,0,0.0],"eyoab":[123,0,0.418],"jakarii":[49,0,0.0],"jenil":[23,0,0.0],"jorawar":[106,0,0.4051],"kahan":[33,0,0.0],"kheelan":[8,0,0.0],"khymir":[102,0,0.4017],"kiansh":[160,0,0.4408],"kobimtochukwu":[14,0,0.0],"kuhao":[18,0,0.0],"maccabee":[39,0,0.0],"meison":[18,0,0.0],"revansh":[31,0,0.0],"taedon":[8,0,0.0],"xadiel":[27,0,0.0],"yunqi":[8,0,0.0],"adefolarin":[19,0,0.0],"anakyn":[50,0,0.0],"anmay":[64,0,0.0],"arkyn":[133,0,0.4248],"aroyal":[18,43,0.0],"atai":[18,0,0.0],"benaniah":[7,0,0.0],"benning":[21,0,0.0],"bolin":[25,0,0.0],"boyer":[23,0,0.0],"bronn":[50,0,0.0],"cyon":[18,0,0.0],"drish":[12,0,0.0],"eiren":[45,0,0.0],"enok":[48,0,0.0],"ezren":[245,0,0.4778],"greighson":[12,0,0.0],"grizzly":[92,0,0.0],"haiyden":[7,0,0.0],"hajoon":[32,0,0.0],"hanssel":[13,0,0.0],"hirving":[83,0,0.0],"hucksley":[37,0,0.0],"huxon":[96,0,0.0],"isco":[28,0,0.0],"jayansh":[19,0,0.0],"jedikiah":[15,0,0.0],"jeice":[14,0,0.0],"kaiveon":[12,0,0.0],"karcen":[33,0,0.0],"khaleo":[79,0,0.0],"khazi":[183,16,0.4228],"kyzar":[42,0,0.0],"machlan":[7,0,0.0],"mayor":[26,0,0.0],"megaa":[13,0,0.0],"mox":[62,0,0.0],"moxen":[54,0,0.0],"muhammadyusuf":[224,0,0.47],"natsu":[42,0,0.0],"nihit":[100,0,0.4],"paulson":[7,0,0.0],"raking":[29,0,0.0],"rapha":[55,0,0.0],"riggan":[7,0,0.0],"rizzo":[50,5,0.0],"sharvesh":[18,0,0.0],"tillian":[50,27,0.0],"vishakan":[7,0,0.0],"wakiyan":[7,0,0.0],"whitson":[18,0,0.0],"yazin":[35,0,0.0],"yedaiah":[16,0,0.0],"zakyrie":[62,0,0.0],"zoraver":[12,0,0.0],"zylus":[109,0,0.4075],"aaravreddy":[22,0,0.0],"aazil":[11,0,0.0],"abaas":[6,0,0.0],"abdulwali":[27,0,0.0],"aceston":[52,0,0.0],"adish":[6,0,0.0],"adoniyah":[6,12,0.0],"ahmednur":[6,0,0.0],"aiker":[6,0,0.0],"akaden":[6,0,0.0],"armir":[17,0,0.0],"arnit":[6,0,0.0],"arro":[13,0,0.0],"astro":[299,0,0.4951],"avander":[23,0,0.0],"ayotomi":[6,0,0.0],"bair":[27,0,0.0],"bihaan":[12,0,0.0],"brahms":[22,0,0.0],"brayshawn":[6,0,0.0],"chosyn":[175,205,0.2783],"claydon":[6,0,0.0],"crown":[37,0,0.0],"daehan":[6,0,0.0],"daewon":[11,0,0.0],"dune":[88,5,0.0],"eddin":[6,0,0.0],"elend":[47,0,0.0],"elyh":[6,0,0.0],"endrick":[218,0,0.4677],"enzogabriel":[27,0,0.0],"esmail":[19,0,0.0],"feish":[12,0,0.0],"fionnlagh":[6,0,0.0],"folarin":[65,0,0.0],"ganza":[13,0,0.0],"griezmann":[70,0,0.0],"hamiz":[6,0,0.0],"hawkens":[6,0,0.0],"hendric":[25,0,0.0],"hesher":[6,0,0.0],"hridan":[6,0,0.0],"jacarii":[13,0,0.0],"jamih":[6,0,0.0],"jasur":[11,0,0.0],"jhosep":[23,0,0.0],"joc":[30,0,0.0],"johnoliver":[6,0,0.0],"junot":[25,0,0.0],"kainaan":[6,0,0.0],"karthikeyan":[6,0,0.0],"kaspen":[99,0,0.0],"kassel":[6,0,0.0],"kaveer":[139,0,0.4286],"kaysyn":[91,10,0.3612],"kdynn":[6,0,0.0],"keshava":[12,0,0.0],"keyser":[12,0,0.0],"khyng":[17,0,0.0],"kingamir":[28,0,0.0],"kingzton":[13,0,0.0],"kiyansh":[190,0,0.4558],"krash":[6,0,0.0],"krithin":[16,0,0.0],"kritin":[17,0,0.0],"kylier":[17,0,0.0],"laison":[6,0,0.0],"lathem":[6,0,0.0],"madax":[6,0,0.0],"marceau":[41,0,0.0],"marwaan":[19,0,0.0],"massiyah":[6,0,0.0],"mathys":[25,0,0.0],"meraj":[12,0,0.0],"naayel":[6,0,0.0],"neyan":[6,0,0.0],"novan":[41,0,0.0],"olivander":[124,0,0.4187],"olivar":[18,0,0.0],"pinny":[44,0,0.0],"rahyl":[30,0,0.0],"range":[25,0,0.0],"rawling":[33,0,0.0],"rehansh":[25,0,0.0],"rhyus":[16,0,0.0],"ridaan":[19,0,0.0],"riddhish":[6,0,0.0],"rigved":[11,0,0.0],"riser":[18,0,0.0],"ronik":[19,0,0.0],"ruichen":[6,0,0.0],"rushan":[6,0,0.0],"safaree":[52,0,0.0],"saiansh":[22,0,0.0],"sajal":[6,0,0.0],"samid":[6,0,0.0],"samwell":[49,0,0.0],"sarva":[14,0,0.0],"shazain":[54,0,0.0],"shivay":[167,0,0.4445],"sirach":[17,0,0.0],"sirking":[35,0,0.0],"sourik":[6,0,0.0],"sriyaan":[102,0,0.4017],"stavya":[18,0,0.0],"tadeas":[6,0,0.0],"taskin":[6,0,0.0],"taves":[6,0,0.0],"temuge":[6,0,0.0],"tikhon":[21,0,0.0],"timileyin":[13,0,0.0],"toviah":[19,0,0.0],"ventus":[64,0,0.0],"vishanth":[6,0,0.0],"wrennyn":[6,5,0.0],"xaydin":[6,0,0.0],"yanal":[49,0,0.0],"yexian":[17,0,0.0],"yosief":[6,0,0.0],"yunay":[83,0,0.0],"yuvi":[24,0,0.0],"zackariyah":[6,0,0.0],"zahyan":[19,0,0.0],"zantiago":[19,0,0.0],"zekharyah":[12,0,0.0],"zylyn":[22,0,0.0],"aabir":[19,0,0.0],"aaseem":[5,0,0.0],"aavish":[11,0,0.0],"abdelhamid":[5,0,0.0],"abdulhaadi":[10,0,0.0],"abisaid":[5,0,0.0],"abrem":[5,0,0.0],"aceion":[84,0,0.0],"adamjames":[5,0,0.0],"adarrion":[5,0,0.0],"adwit":[5,0,0.0],"ahanna":[5,5,0.0],"ahyaan":[10,0,0.0],"akillian":[11,0,0.0],"alaz":[17,0,0.0],"alborz":[10,0,0.0],"alduin":[16,0,0.0],"alegend":[176,0,0.4491],"alistaire":[16,0,0.0],"andiel":[5,0,0.0],"anvik":[36,0,0.0],"arfaan":[11,0,0.0],"ariat":[35,18,0.0],"arsam":[16,0,0.0],"asaan":[77,0,0.0],"asem":[30,0,0.0],"atlis":[33,0,0.0],"audvik":[19,0,0.0],"avet":[30,0,0.0],"avinoam":[5,0,0.0],"aviraaj":[28,0,0.0],"avitaz":[5,0,0.0],"avyansh":[74,0,0.0],"avyion":[10,0,0.0],"awwal":[5,0,0.0],"axon":[24,0,0.0],"badi":[5,0,0.0],"bale":[10,0,0.0],"barok":[70,0,0.0],"beckman":[35,0,0.0],"bennit":[5,0,0.0],"bohde":[24,0,0.0],"braecyn":[5,0,0.0],"braisen":[11,0,0.0],"brantlyn":[5,0,0.0],"breitlin":[5,0,0.0],"brenston":[10,0,0.0],"brixen":[32,0,0.0],"brixtin":[31,0,0.0],"brixx":[128,8,0.4016],"brodhi":[52,0,0.0],"camper":[5,0,0.0],"casein":[17,0,0.0],"caseson":[5,0,0.0],"chamberlin":[5,0,0.0],"chaucer":[5,0,0.0],"chenyu":[10,0,0.0],"chimereze":[5,0,0.0],"chrisander":[5,0,0.0],"daigo":[5,0,0.0],"daithi":[22,0,0.0],"darshik":[5,0,0.0],"daxden":[5,0,0.0],"deivid":[70,0,0.0],"dekayden":[5,0,0.0],"deluca":[263,0,0.484],"diab":[5,0,0.0],"divith":[39,0,0.0],"drizzt":[5,0,0.0],"dumar":[5,0,0.0],"edzel":[11,0,0.0],"eelis":[5,0,0.0],"engels":[5,0,0.0],"enric":[20,0,0.0],"esher":[10,0,0.0],"etham":[37,0,0.0],"ezai":[22,0,0.0],"faiq":[5,0,0.0],"fayden":[11,0,0.0],"fenrir":[114,0,0.4114],"finly":[5,0,0.0],"fysher":[12,0,0.0],"gavriil":[5,0,0.0],"gensen":[5,0,0.0],"gerver":[5,0,0.0],"gervin":[5,0,0.0],"gioele":[10,0,0.0],"giorgos":[5,0,0.0],"goten":[46,0,0.0],"halit":[5,0,0.0],"hap":[19,0,0.0],"hasen":[22,0,0.0],"haval":[5,0,0.0],"hendrixx":[439,6,0.5225],"hilo":[16,0,0.0],"hubery":[10,0,0.0],"hux":[130,0,0.4228],"ibad":[11,0,0.0],"ifenna":[5,0,0.0],"ikai":[5,0,0.0],"ilam":[5,0,0.0],"ivri":[28,0,0.0],"izra":[32,20,0.0],"izzack":[5,0,0.0],"jaemeson":[5,0,0.0],"jaemir":[10,0,0.0],"jaheer":[5,0,0.0],"jahkobi":[10,0,0.0],"jahmiel":[74,0,0.0],"javere":[5,0,0.0],"jayshan":[5,0,0.0],"jazeer":[5,0,0.0],"jeicob":[56,0,0.0],"jenzen":[16,0,0.0],"jetsen":[59,0,0.0],"jey":[24,0,0.0],"jinay":[5,0,0.0],"joandre":[5,0,0.0],"jodhveer":[5,0,0.0],"josiiah":[5,0,0.0],"jowen":[15,0,0.0],"joxiel":[18,0,0.0],"juansebastian":[5,0,0.0],"junhee":[5,0,0.0],"junyu":[5,0,0.0],"kaeston":[10,0,0.0],"kalder":[30,0,0.0],"kathir":[29,0,0.0],"kaycion":[43,0,0.0],"kazier":[15,0,0.0],"kceon":[11,0,0.0],"keangelo":[5,0,0.0],"kendrys":[5,0,0.0],"kenuel":[5,0,0.0],"keriel":[5,0,0.0],"khaysen":[11,0,0.0],"khyion":[5,0,0.0],"kiazer":[16,0,0.0],"killien":[5,0,0.0],"kingzion":[17,0,0.0],"kirthik":[5,0,0.0],"kitson":[10,0,0.0],"kloud":[26,0,0.0],"klutch":[10,0,0.0],"knoel":[5,0,0.0],"kodan":[32,0,0.0],"kriday":[42,0,0.0],"krithvik":[75,0,0.0],"kshon":[5,0,0.0],"kwincy":[5,0,0.0],"kyir":[37,0,0.0],"kylend":[10,0,0.0],"kyleon":[5,0,0.0],"kyngsten":[63,0,0.0],"kyrii":[31,0,0.0],"kyzir":[199,0,0.4598],"laeth":[5,0,0.0],"lakshan":[10,0,0.0],"lanceton":[5,0,0.0],"lavith":[15,0,0.0],"laysen":[12,0,0.0],"ledge":[5,0,0.0],"leoanthony":[5,0,0.0],"lexiel":[28,0,0.0],"luffy":[56,0,0.0],"makayo":[5,0,0.0],"makoi":[12,0,0.0],"mallex":[37,0,0.0],"mankirat":[39,22,0.0],"mates":[16,0,0.0],"matthaeus":[5,0,0.0],"maxis":[5,0,0.0],"maxuel":[5,0,0.0],"mekaal":[12,0,0.0],"mendeecees":[5,0,0.0],"meru":[10,5,0.0],"minho":[11,0,0.0],"moa":[10,0,0.0],"moaad":[5,0,0.0],"mobin":[5,0,0.0],"motti":[10,0,0.0],"muhammedali":[5,0,0.0],"muslim":[22,0,0.0],"nalej":[20,0,0.0],"nawaz":[5,0,0.0],"nexus":[16,0,0.0],"nikshay":[11,0,0.0],"noyan":[66,0,0.0],"nurmuhammad":[43,0,0.0],"ocelotl":[5,0,0.0],"olek":[24,0,0.0],"onyekachukwu":[5,0,0.0],"ozlo":[67,0,0.0],"peleg":[10,0,0.0],"prasoon":[5,0,0.0],"prime":[35,0,0.0],"princeelijah":[5,0,0.0],"quigley":[11,0,0.0],"raey":[5,0,0.0],"ramana":[5,0,0.0],"raury":[5,0,0.0],"remingtin":[5,0,0.0],"rennen":[18,0,0.0],"renzel":[11,0,0.0],"reylen":[10,0,0.0],"rhiver":[5,0,0.0],"rhowen":[5,0,0.0],"rish":[32,0,0.0],"rishank":[15,0,0.0],"riyaansh":[11,0,0.0],"rodeen":[5,0,0.0],"rodnell":[5,0,0.0],"rodrik":[10,0,0.0],"rozen":[20,0,0.0],"ruaridh":[5,0,0.0],"rudr":[12,0,0.0],"rykir":[5,0,0.0],"rylo":[540,0,0.5465],"ryner":[16,0,0.0],"ryse":[17,0,0.0],"safwat":[10,0,0.0],"saheem":[16,0,0.0],"saifuddin":[22,0,0.0],"sattam":[5,0,0.0],"seanix":[12,0,0.0],"shaarwin":[5,0,0.0],"shaher":[5,0,0.0],"shameir":[5,0,0.0],"sharwin":[11,0,0.0],"shresht":[5,0,0.0],"sumir":[5,0,0.0],"taaraz":[5,0,0.0],"tengis":[11,0,0.0],"teyden":[5,0,0.0],"thabit":[16,0,0.0],"theeran":[21,0,0.0],"thobias":[10,0,0.0],"thon":[5,0,0.0],"tiberias":[15,0,0.0],"tiller":[53,0,0.0],"tinsae":[10,0,0.0],"toviyah":[12,5,0.0],"tremir":[44,0,0.0],"trevathan":[5,0,0.0],"tytin":[5,0,0.0],"ujwal":[5,0,0.0],"umarbek":[18,0,0.0],"uros":[5,0,0.0],"vaahin":[5,0,0.0],"valik":[15,0,0.0],"varek":[5,0,0.0],"varin":[5,0,0.0],"waard":[5,0,0.0],"wais":[5,0,0.0],"wessen":[10,0,0.0],"wilco":[5,0,0.0],"wystan":[5,0,0.0],"yahve":[5,0,0.0],"yahveh":[5,0,0.0],"yankel":[11,0,0.0],"yashwin":[40,0,0.0],"yatniel":[10,0,0.0],"yeshwin":[5,0,0.0],"yezan":[5,0,0.0],"yordyn":[5,0,0.0],"yucheng":[22,0,0.0],"yusufbek":[5,0,0.0],"zaedan":[5,0,0.0],"zaevon":[20,0,0.0],"zahan":[62,0,0.0],"zahkari":[58,0,0.0],"zahyr":[10,0,0.0],"zaiiden":[5,0,0.0],"zailin":[5,0,0.0],"zaivier":[10,0,0.0],"zakaiden":[10,0,0.0],"zariyan":[5,0,0.0],"zaxon":[35,0,0.0],"zaxtyn":[54,0,0.0],"zaye":[31,0,0.0],"zaymar":[15,0,0.0],"zaynn":[12,0,0.0],"zecharias":[10,0,0.0],"zelan":[12,0,0.0],"zimo":[5,0,0.0],"zyahir":[22,0,0.0],"camreigh":[0,223,0.4697],"taishmara":[0,38,0.0],"teylie":[0,44,0.0],"kior":[123,317,0.3809],"aaleiya":[0,29,0.0],"kamreigh":[0,62,0.0],"sayyora":[0,77,0.0],"mohana":[0,18,0.0],"avajade":[0,21,0.0],"cersei":[0,43,0.0],"imona":[0,158,0.4397],"lunarose":[0,127,0.4208],"miraclle":[0,19,0.0],"novahlee":[0,42,0.0],"alisanne":[0,16,0.0],"avianni":[0,80,0.0],"brexleigh":[0,86,0.0],"janova":[0,180,0.4511],"lunafreya":[0,90,0.0],"mayuka":[0,15,0.0],"ning":[0,16,0.0],"acelia":[0,26,0.0],"aleissa":[0,47,0.0],"ameela":[0,59,0.0],"arev":[0,56,0.0],"averyann":[0,9,0.0],"cahlani":[0,93,0.0],"cemile":[0,14,0.0],"dhanvika":[0,55,0.0],"dvorah":[0,25,0.0],"eleia":[0,205,0.4624],"harsirat":[0,26,0.0],"jyn":[0,56,0.0],"kaionna":[0,25,0.0],"kayzleigh":[0,50,0.0],"kehlanie":[0,101,0.4009],"keloni":[0,85,0.0],"kylahni":[0,15,0.0],"laylany":[0,21,0.0],"olenna":[0,121,0.4166],"rufta":[0,64,0.0],"sabali":[23,34,0.0],"yanah":[0,9,0.0],"ablakat":[0,49,0.0],"addleigh":[0,14,0.0],"amaiia":[0,34,0.0],"aniso":[0,8,0.0],"arwaa":[0,39,0.0],"aydelin":[0,25,0.0],"cailani":[0,133,0.4248],"eliyannah":[0,64,0.0],"haysley":[0,64,0.0],"hazeley":[0,64,0.0],"henslie":[0,41,0.0],"iveigh":[0,63,0.0],"joori":[0,13,0.0],"kaior":[42,267,0.4303],"kaniyla":[0,21,0.0],"kardi":[0,56,0.0],"khlani":[0,102,0.4017],"lakeleigh":[0,89,0.0],"madeleina":[0,8,0.0],"mylarose":[0,29,0.0],"naomika":[0,60,0.0],"normani":[5,340,0.5002],"noveah":[0,56,0.0],"renessmae":[0,8,0.0],"rishvi":[0,15,0.0],"riverleigh":[0,136,0.4267],"sayora":[0,68,0.0],"sutherlyn":[0,19,0.0],"xayah":[0,144,0.4317],"yunet":[0,8,0.0],"zayva":[0,14,0.0],"zenley":[0,27,0.0],"aerolynn":[0,58,0.0],"ahzari":[0,21,0.0],"ailanni":[0,94,0.0],"aivyn":[0,7,0.0],"amaliyah":[0,32,0.0],"amayarose":[0,13,0.0],"aminarose":[0,7,0.0],"brixlee":[0,259,0.4827],"corabeth":[0,7,0.0],"dilnura":[0,21,0.0],"dylani":[0,60,0.0],"eleven":[36,69,0.2656],"eliena":[0,36,0.0],"elliyanah":[0,32,0.0],"ellorah":[0,7,0.0],"evaley":[0,12,0.0],"evanka":[0,12,0.0],"everyn":[5,42,0.0],"evryn":[42,95,0.2963],"haisleigh":[0,250,0.4796],"hanaya":[0,28,0.0],"hylia":[0,52,0.0],"iang":[0,7,0.0],"idhika":[0,25,0.0],"imela":[0,13,0.0],"isleigh":[0,36,0.0],"jabella":[0,7,0.0],"jaisvi":[0,7,0.0],"jayonnie":[0,7,0.0],"jesia":[0,7,0.0],"kairaluchi":[0,12,0.0],"kaizlynn":[0,59,0.0],"kalyla":[0,45,0.0],"kehloni":[0,39,0.0],"kenjal":[0,20,0.0],"knoxlee":[54,115,0.3032],"krislee":[0,7,0.0],"kulani":[0,23,0.0],"kwyn":[0,24,0.0],"lachlynn":[0,7,0.0],"laiani":[0,69,0.0],"laiklee":[0,7,0.0],"laykn":[0,7,0.0],"legacii":[0,168,0.4451],"lunamia":[0,33,0.0],"maddelena":[0,12,0.0],"manelyk":[0,150,0.4352],"mariatou":[0,13,0.0],"maristella":[0,60,0.0],"mckinslee":[0,7,0.0],"melanii":[0,44,0.0],"moanna":[0,18,0.0],"niamyah":[0,18,0.0],"noragrace":[0,7,0.0],"renli":[0,72,0.0],"rinlee":[0,48,0.0],"roa":[12,57,0.0],"rylnn":[0,40,0.0],"sahab":[0,20,0.0],"shukrona":[0,98,0.0],"sianney":[0,40,0.0],"sojoud":[0,7,0.0],"tanushree":[0,7,0.0],"telayah":[0,12,0.0],"viara":[0,29,0.0],"vihaana":[0,74,0.0],"williow":[0,27,0.0],"xaila":[0,131,0.4235],"yaana":[0,18,0.0],"ylva":[0,35,0.0],"zahlee":[0,29,0.0],"zalayna":[0,7,0.0],"zinovia":[0,49,0.0],"zoah":[13,32,0.0],"zoriya":[0,7,0.0],"adaiya":[0,21,0.0],"adelynd":[0,6,0.0],"adori":[0,13,0.0],"adrielys":[0,18,0.0],"adriti":[0,11,0.0],"ahmena":[0,6,0.0],"ajourney":[0,22,0.0],"aleithia":[0,6,0.0],"amaara":[0,16,0.0],"amiaa":[0,6,0.0],"annalyah":[0,11,0.0],"arale":[0,46,0.0],"aranea":[0,39,0.0],"araylee":[0,6,0.0],"arebella":[0,6,0.0],"aryabella":[0,36,0.0],"assil":[0,11,0.0],"assiya":[0,6,0.0],"aulbree":[0,6,0.0],"avaleah":[0,11,0.0],"aylish":[0,6,0.0],"beauti":[0,28,0.0],"bhavishya":[0,6,0.0],"bhuvika":[0,22,0.0],"birdy":[0,76,0.0],"brexlynn":[0,55,0.0],"brimley":[0,12,0.0],"cahira":[0,18,0.0],"callynn":[0,6,0.0],"charlirose":[0,19,0.0],"chleo":[0,28,0.0],"daloni":[6,71,0.0],"decklynn":[0,21,0.0],"dellarae":[0,32,0.0],"devanni":[0,13,0.0],"dhaani":[0,6,0.0],"divi":[0,29,0.0],"doba":[0,18,0.0],"eiress":[0,88,0.0],"elizabell":[0,6,0.0],"ellalouise":[0,11,0.0],"eloah":[0,192,0.4567],"emmerlyn":[0,13,0.0],"eto":[0,33,0.0],"eviee":[0,32,0.0],"eyvah":[0,6,0.0],"fala":[0,16,0.0],"farhia":[0,11,0.0],"ghazl":[0,6,0.0],"greyleigh":[0,26,0.0],"hailah":[0,6,0.0],"harlynne":[0,17,0.0],"hayeslee":[0,21,0.0],"hermosa":[0,28,0.0],"hialeah":[0,18,0.0],"hriti":[0,6,0.0],"idaira":[0,6,0.0],"ifza":[0,34,0.0],"iskra":[0,28,0.0],"jonaliz":[0,6,0.0],"julietha":[0,6,0.0],"junainah":[0,6,0.0],"kabela":[0,6,0.0],"karasi":[0,11,0.0],"kerenza":[0,11,0.0],"khilani":[0,24,0.0],"knovah":[0,30,0.0],"kristynn":[0,6,0.0],"kynzly":[0,6,0.0],"ladraya":[0,6,0.0],"lanova":[0,67,0.0],"lilabeth":[0,6,0.0],"luminara":[0,18,0.0],"luxley":[0,40,0.0],"luzmarina":[0,11,0.0],"lynnen":[0,18,0.0],"maheera":[0,29,0.0],"markyiah":[0,6,0.0],"mave":[0,47,0.0],"mayalee":[0,11,0.0],"mehnoor":[0,35,0.0],"mercee":[0,11,0.0],"milya":[0,6,0.0],"mirana":[0,52,0.0],"nahili":[0,6,0.0],"navii":[0,48,0.0],"niilah":[0,6,0.0],"ninarose":[0,6,0.0],"nithara":[0,23,0.0],"nivi":[0,57,0.0],"nmachi":[0,6,0.0],"octaviah":[0,42,0.0],"odesza":[0,58,0.0],"oluwafifehanmi":[0,16,0.0],"olyssa":[0,6,0.0],"paighten":[0,18,0.0],"prynne":[0,6,0.0],"raimy":[0,11,0.0],"reel":[0,6,0.0],"reeti":[0,6,0.0],"revy":[5,77,0.0],"riyen":[0,6,0.0],"rosaleena":[0,20,0.0],"rovan":[6,26,0.0],"royality":[0,11,0.0],"royaltie":[0,17,0.0],"sador":[5,21,0.0],"safwana":[0,11,0.0],"serat":[0,6,0.0],"siman":[0,11,0.0],"sinachi":[0,6,0.0],"siouxsie":[0,6,0.0],"siyani":[0,15,0.0],"skadi":[0,148,0.4341],"skylett":[0,12,0.0],"smira":[0,6,0.0],"stellamaris":[0,35,0.0],"sublime":[0,13,0.0],"tayeba":[0,6,0.0],"thanishka":[0,11,0.0],"valaya":[0,17,0.0],"valeigh":[0,11,0.0],"vea":[0,41,0.0],"wynnifred":[0,6,0.0],"xahria":[0,11,0.0],"xenovia":[0,105,0.4042],"yabsira":[0,6,0.0],"yasma":[0,55,0.0],"yelani":[0,30,0.0],"yostina":[0,91,0.0],"yuneth":[0,6,0.0],"zahavah":[0,11,0.0],"zalani":[0,171,0.4466],"zanora":[0,24,0.0],"zielle":[0,23,0.0],"zulaikha":[0,37,0.0],"aadilynn":[0,5,0.0],"aaheli":[0,10,0.0],"aalilah":[0,5,0.0],"aashriya":[0,24,0.0],"adalynna":[0,5,0.0],"addilyna":[0,5,0.0],"adeliza":[0,16,0.0],"adelynna":[0,11,0.0],"adriany":[0,10,0.0],"aera":[0,85,0.0],"afruza":[0,27,0.0],"agnia":[0,15,0.0],"ahloni":[0,23,0.0],"ahmyla":[0,11,0.0],"ailla":[0,5,0.0],"aimslee":[0,5,0.0],"aireen":[0,10,0.0],"akaylee":[0,5,0.0],"alaaya":[0,5,0.0],"alahya":[0,29,0.0],"amogha":[0,21,0.0],"amoriel":[0,5,0.0],"anarii":[0,16,0.0],"anavia":[0,38,0.0],"anayat":[0,76,0.0],"annael":[0,15,0.0],"anura":[0,20,0.0],"anvie":[0,5,0.0],"aramide":[0,10,0.0],"araneli":[0,5,0.0],"areina":[0,27,0.0],"arlia":[0,10,0.0],"arpana":[0,5,0.0],"arzoi":[0,164,0.443],"ashtrid":[0,5,0.0],"asima":[0,5,0.0],"asmah":[0,10,0.0],"astraia":[0,20,0.0],"aswan":[0,5,0.0],"autumnrayne":[0,5,0.0],"avaeya":[0,64,0.0],"avalinn":[0,5,0.0],"avreen":[0,72,0.0],"avrilyn":[0,5,0.0],"awtumn":[0,13,0.0],"ayvianna":[0,26,0.0],"azarii":[0,28,0.0],"azeema":[0,5,0.0],"baia":[0,5,0.0],"baislee":[0,5,0.0],"balqees":[0,19,0.0],"basra":[0,5,0.0],"baylinn":[0,5,0.0],"bellen":[0,28,0.0],"brendley":[0,5,0.0],"brenlei":[0,5,0.0],"brynnae":[0,5,0.0],"calliann":[0,5,0.0],"camberlynn":[0,5,0.0],"caslynn":[0,10,0.0],"cataline":[0,5,0.0],"cypris":[0,5,0.0],"daileny":[0,31,0.0],"damylah":[0,18,0.0],"danixsa":[0,5,0.0],"dhriya":[0,5,0.0],"dilani":[0,16,0.0],"dlani":[0,40,0.0],"dreem":[0,14,0.0],"drithi":[0,63,0.0],"eadlyn":[0,10,0.0],"eberly":[0,12,0.0],"ecclesia":[0,10,0.0],"eclipse":[0,27,0.0],"eevi":[0,13,0.0],"ehlani":[0,843,0.5852],"elaiyah":[0,51,0.0],"elessia":[0,36,0.0],"elizamae":[0,10,0.0],"elodi":[0,35,0.0],"emalani":[0,5,0.0],"emberlei":[0,19,0.0],"emberrose":[0,30,0.0],"emmajoy":[0,11,0.0],"eniko":[6,35,0.0],"esmy":[0,22,0.0],"europa":[0,5,0.0],"evaliah":[0,12,0.0],"evayah":[0,43,0.0],"everlyrose":[0,46,0.0],"eviemarie":[0,5,0.0],"ewurabena":[0,5,0.0],"eylem":[0,5,0.0],"fabeha":[0,31,0.0],"falaq":[0,45,0.0],"felomina":[0,5,0.0],"freshta":[0,5,0.0],"fridah":[0,5,0.0],"fyona":[0,5,0.0],"gnesis":[0,12,0.0],"grai":[0,10,0.0],"gursanjh":[5,34,0.0],"hadilynn":[0,20,0.0],"haislyn":[0,22,0.0],"hariyah":[0,5,0.0],"harleymae":[0,5,0.0],"harmehar":[0,5,0.0],"harperlynn":[0,5,0.0],"hauwa":[0,5,0.0],"havilyn":[0,5,0.0],"hayaat":[0,11,0.0],"hazellynn":[0,26,0.0],"iayla":[0,5,0.0],"idina":[0,5,0.0],"illari":[0,22,0.0],"imelia":[0,5,0.0],"innila":[0,5,0.0],"iraa":[0,33,0.0],"iretomiwa":[31,5,0.0],"islamae":[0,52,0.0],"ithaca":[0,5,0.0],"ivvy":[0,46,0.0],"iwinosa":[0,17,0.0],"iyra":[0,78,0.0],"izana":[0,10,0.0],"jahani":[36,14,0.0],"jalyrica":[0,23,0.0],"janvika":[0,10,0.0],"jarielyz":[0,10,0.0],"jaysleen":[0,5,0.0],"jazhari":[0,5,0.0],"jermoni":[29,17,0.0],"jhalae":[0,5,0.0],"jlani":[0,102,0.4017],"joeley":[0,5,0.0],"journni":[0,24,0.0],"jreem":[0,5,0.0],"judayah":[0,10,0.0],"kahira":[0,5,0.0],"kaibella":[0,5,0.0],"kalirae":[0,10,0.0],"kallaway":[5,10,0.0],"kalylah":[0,45,0.0],"kamiliah":[0,5,0.0],"kamoura":[0,179,0.4506],"karoma":[0,5,0.0],"karslynn":[0,15,0.0],"kaushiki":[0,5,0.0],"kaylarose":[0,5,0.0],"kaylianie":[0,5,0.0],"kehlanii":[0,111,0.4091],"kehlany":[0,156,0.4386],"kelaysia":[0,5,0.0],"kennleigh":[0,5,0.0],"kenzliee":[0,5,0.0],"keshvi":[0,42,0.0],"keyziah":[0,5,0.0],"khailani":[0,107,0.4059],"kharri":[6,16,0.0],"kiarie":[0,10,0.0],"kionni":[0,12,0.0],"kiplyn":[0,5,0.0],"kisanet":[0,5,0.0],"kleio":[0,55,0.0],"klementine":[0,30,0.0],"kmoni":[0,15,0.0],"kopper":[14,5,0.0],"koto":[0,10,0.0],"kueen":[0,42,0.0],"kyza":[27,37,0.0],"lareena":[0,5,0.0],"larkynn":[0,5,0.0],"layaal":[0,5,0.0],"laylahni":[0,5,0.0],"lazayah":[0,5,0.0],"lealynn":[0,5,0.0],"leiba":[0,5,0.0],"leilanis":[0,11,0.0],"leiyani":[0,38,0.0],"leja":[0,5,0.0],"leliani":[0,11,0.0],"lexxa":[0,5,0.0],"leyi":[0,5,0.0],"liannys":[0,10,0.0],"linkynn":[0,5,0.0],"lisbella":[0,5,0.0],"loxli":[0,5,0.0],"loyaltii":[0,10,0.0],"lucyanne":[0,10,0.0],"luli":[0,15,0.0],"lulua":[0,10,0.0],"lumiere":[32,28,0.0],"lunara":[0,45,0.0],"lynnora":[0,23,0.0],"lyricah":[0,5,0.0],"maella":[0,53,0.0],"maise":[0,25,0.0],"maisynn":[0,16,0.0],"makinzley":[0,5,0.0],"malaylah":[0,16,0.0],"marabell":[0,5,0.0],"maramawit":[0,13,0.0],"marchesa":[0,27,0.0],"mariaximena":[0,5,0.0],"marii":[0,12,0.0],"mavy":[0,11,0.0],"maximiliana":[0,33,0.0],"mayze":[7,65,0.0],"mckayleigh":[0,5,0.0],"medli":[0,5,0.0],"miala":[0,5,0.0],"miayah":[0,5,0.0],"mibella":[0,17,0.0],"miruna":[0,5,0.0],"mishri":[0,20,0.0],"momoreoluwa":[0,5,0.0],"morayah":[0,5,0.0],"myrielle":[0,21,0.0],"naelyn":[0,5,0.0],"naitri":[0,5,0.0],"naleya":[0,64,0.0],"namuun":[0,5,0.0],"nanki":[0,11,0.0],"navana":[0,5,0.0],"navani":[0,116,0.4129],"navianna":[0,16,0.0],"nayleigh":[0,5,0.0],"neilia":[0,5,0.0],"nemah":[0,5,0.0],"nithika":[0,5,0.0],"noriella":[0,20,0.0],"novaeh":[0,15,0.0],"novaleah":[0,15,0.0],"novarayne":[0,5,0.0],"novelyn":[0,5,0.0],"nylarose":[0,17,0.0],"nyri":[0,18,0.0],"oaklynne":[0,163,0.4424],"odeya":[0,62,0.0],"ojaswi":[0,5,0.0],"oktavia":[0,27,0.0],"oliviafaith":[0,5,0.0],"olliana":[0,18,0.0],"oluwafeyikemi":[0,5,0.0],"oryana":[0,10,0.0],"owsley":[25,5,0.0],"oya":[0,38,0.0],"parinika":[0,5,0.0],"petehn":[0,5,0.0],"prielle":[0,5,0.0],"quinly":[0,5,0.0],"radhya":[0,72,0.0],"raidah":[0,5,0.0],"razaan":[0,31,0.0],"reinah":[0,5,0.0],"remaya":[0,5,0.0],"remijo":[0,5,0.0],"renlie":[0,38,0.0],"revi":[0,16,0.0],"reynna":[0,5,0.0],"rhaine":[0,5,0.0],"rileygrace":[0,5,0.0],"rinleigh":[0,5,0.0],"riziki":[0,66,0.0],"roewyn":[0,5,0.0],"roziyah":[0,11,0.0],"rumaan":[0,11,0.0],"ruthila":[0,5,0.0],"rwby":[0,11,0.0],"rysa":[0,42,0.0],"saanvireddy":[0,22,0.0],"sabeeha":[0,5,0.0],"sahasya":[0,5,0.0],"saniha":[0,5,0.0],"saphirra":[0,5,0.0],"sayat":[0,21,0.0],"scylla":[0,33,0.0],"sedna":[0,15,0.0],"senara":[0,15,0.0],"sereia":[0,78,0.0],"shalem":[0,5,0.0],"shikhara":[0,5,0.0],"signy":[0,30,0.0],"solvi":[0,75,0.0],"starbella":[0,5,0.0],"steeley":[0,65,0.0],"stellarae":[0,13,0.0],"stevielynn":[0,15,0.0],"stormii":[0,118,0.4144],"sunayana":[0,5,0.0],"tahli":[0,31,0.0],"talilah":[0,24,0.0],"tansley":[0,5,0.0],"taslim":[0,5,0.0],"tehlani":[0,55,0.0],"thylane":[0,5,0.0],"timberleigh":[0,5,0.0],"tipper":[0,5,0.0],"tiwalade":[0,10,0.0],"torvi":[0,232,0.4731],"tselmuun":[0,5,0.0],"tsinat":[0,5,0.0],"tylani":[0,72,0.0],"tyraji":[0,5,0.0],"vaia":[0,38,0.0],"valayah":[0,12,0.0],"varya":[0,5,0.0],"vaydah":[0,10,0.0],"veah":[0,23,0.0],"vedah":[0,5,0.0],"vivianah":[0,10,0.0],"vylett":[0,11,0.0],"wynterrose":[0,31,0.0],"xella":[0,15,0.0],"ximmena":[0,5,0.0],"yanxin":[0,5,0.0],"yemaryam":[0,40,0.0],"yessy":[0,5,0.0],"yishan":[0,5,0.0],"yohanny":[0,5,0.0],"yuleymi":[0,5,0.0],"zaeley":[0,5,0.0],"zalah":[0,12,0.0],"zalayia":[0,5,0.0],"zalla":[0,5,0.0],"zariella":[0,35,0.0],"zarii":[0,15,0.0],"zarish":[0,25,0.0],"zarnish":[0,19,0.0],"zarwa":[0,10,0.0],"zazie":[0,94,0.0],"zinaida":[0,5,0.0],"ziyue":[0,10,0.0],"zohet":[0,5,0.0],"asahd":[495,0,0.5389],"kashdon":[72,0,0.0],"kassian":[222,0,0.4693],"draxler":[102,0,0.4017],"ikeni":[17,0,0.0],"noctis":[142,0,0.4305],"dakston":[20,0,0.0],"amunra":[57,0,0.0],"arjunreddy":[140,0,0.4292],"irtaza":[25,0,0.0],"ledgen":[48,0,0.0],"gurbaaz":[337,0,0.5055],"meliodas":[148,0,0.4341],"aakil":[29,0,0.0],"caspen":[114,0,0.4114],"sreyan":[10,0,0.0],"tewodros":[29,0,0.0],"yeziel":[20,0,0.0],"aarushreddy":[23,0,0.0],"aavir":[73,0,0.0],"amenadiel":[270,0,0.4863],"haysen":[121,0,0.4166],"imronbek":[43,0,0.0],"jiren":[269,0,0.486],"khyro":[155,0,0.4381],"killean":[9,0,0.0],"osian":[41,0,0.0],"syedali":[9,0,0.0],"zagan":[32,0,0.0],"abdriel":[33,0,0.0],"adhan":[22,0,0.0],"aerys":[49,16,0.0],"aether":[58,0,0.0],"arshiv":[65,0,0.0],"audrik":[13,0,0.0],"aviyan":[65,0,0.0],"aynan":[8,0,0.0],"benjen":[45,0,0.0],"cota":[8,0,0.0],"dawsin":[13,0,0.0],"guile":[8,0,0.0],"hilkiah":[15,0,0.0],"iyaan":[62,0,0.0],"jaivik":[29,0,0.0],"kaizon":[58,0,0.0],"khaison":[39,0,0.0],"khyza":[36,12,0.0],"mikyng":[49,0,0.0],"naing":[8,0,0.0],"nihith":[43,0,0.0],"rafsan":[55,0,0.0],"sharvin":[98,0,0.0],"yazdan":[41,0,0.0],"yordani":[52,0,0.0],"aavan":[43,0,0.0],"adrit":[48,0,0.0],"ajwad":[19,0,0.0],"areez":[18,0,0.0],"aseer":[35,0,0.0],"ashwanth":[7,0,0.0],"aurelian":[105,0,0.4042],"ayokunle":[7,0,0.0],"balor":[30,0,0.0],"brio":[41,0,0.0],"colesen":[41,0,0.0],"doniyor":[29,0,0.0],"eizen":[92,0,0.0],"erlis":[7,0,0.0],"eyder":[65,0,0.0],"eziekiel":[7,0,0.0],"ezryn":[90,11,0.3572],"greysan":[28,0,0.0],"gurvansh":[7,0,0.0],"hayan":[66,0,0.0],"hrithvik":[7,0,0.0],"ikeny":[7,0,0.0],"ilerioluwa":[7,18,0.0],"kadafi":[19,0,0.0],"khyzer":[121,0,0.4166],"killiam":[41,0,0.0],"kyheir":[61,0,0.0],"kynng":[28,0,0.0],"kynston":[7,0,0.0],"legynd":[147,0,0.4335],"leveigh":[7,0,0.0],"leyon":[23,0,0.0],"liangelo":[167,0,0.4445],"malakhiy":[7,0,0.0],"mankirt":[7,0,0.0],"mantaj":[23,0,0.0],"mustafo":[147,0,0.4335],"orik":[13,0,0.0],"princeisaiah":[7,0,0.0],"ranav":[43,0,0.0],"sahaad":[28,0,0.0],"sauyer":[13,0,0.0],"shahem":[64,0,0.0],"shivom":[7,0,0.0],"solanus":[35,0,0.0],"takhari":[51,0,0.0],"uhtred":[111,0,0.4091],"uzziyah":[7,0,0.0],"vidhun":[15,0,0.0],"wealth":[23,0,0.0],"wolfric":[7,0,0.0],"xeno":[68,0,0.0],"xenos":[13,0,0.0],"yiheng":[20,0,0.0],"zaheir":[32,0,0.0],"zamyr":[21,0,0.0],"zero":[27,0,0.0],"abdulghani":[16,0,0.0],"addae":[17,0,0.0],"adrijan":[11,0,0.0],"agambir":[6,0,0.0],"aikam":[24,0,0.0],"aion":[14,0,0.0],"aleo":[43,0,0.0],"almighty":[29,0,0.0],"amayas":[16,0,0.0],"aoun":[27,0,0.0],"arzaan":[59,0,0.0],"avtej":[6,0,0.0],"axelson":[16,0,0.0],"ayaaz":[47,0,0.0],"azil":[32,0,0.0],"bamlak":[17,0,0.0],"becks":[30,0,0.0],"behzad":[12,0,0.0],"bodhe":[6,0,0.0],"caladin":[62,0,0.0],"cerulean":[28,0,0.0],"chimeremeze":[19,0,0.0],"dakshith":[33,0,0.0],"davilucas":[6,0,0.0],"derlyn":[6,0,0.0],"diyaan":[39,0,0.0],"dovud":[12,0,0.0],"ebube":[6,0,0.0],"eeshaan":[20,0,0.0],"eyren":[15,0,0.0],"fayzan":[6,0,0.0],"genius":[34,0,0.0],"greigh":[6,0,0.0],"hezekiyah":[59,0,0.0],"holcomb":[11,0,0.0],"huxen":[27,0,0.0],"ianis":[6,0,0.0],"isagani":[6,0,0.0],"israfil":[21,0,0.0],"jahvoni":[6,0,0.0],"jaiking":[12,0,0.0],"jayovanni":[6,0,0.0],"jaysyn":[6,0,0.0],"jettison":[13,0,0.0],"joshniel":[6,0,0.0],"josu":[6,0,0.0],"kaliko":[41,0,0.0],"kalmin":[6,0,0.0],"karsun":[6,0,0.0],"kashious":[39,0,0.0],"kemen":[6,0,0.0],"khion":[6,0,0.0],"kuiper":[68,0,0.0],"lacari":[17,0,0.0],"leegan":[6,0,0.0],"leonnel":[17,0,0.0],"loen":[12,0,0.0],"lykan":[22,0,0.0],"mahaad":[22,0,0.0],"maikah":[6,0,0.0],"makan":[6,0,0.0],"muawiyah":[12,0,0.0],"muhammadarham":[11,0,0.0],"munther":[6,0,0.0],"nirvair":[150,6,0.4218],"nyeir":[48,0,0.0],"olaoluwakitan":[6,0,0.0],"oluwatoba":[6,0,0.0],"orrick":[6,0,0.0],"ozzi":[20,22,0.0],"pheonyx":[6,19,0.0],"pryson":[12,0,0.0],"qassim":[6,0,0.0],"radvin":[22,0,0.0],"reyanshreddy":[21,0,0.0],"rhodri":[11,0,0.0],"rockett":[6,0,0.0],"roenick":[6,0,0.0],"saair":[14,0,0.0],"samved":[18,0,0.0],"samvid":[6,0,0.0],"saven":[6,0,0.0],"shivai":[6,0,0.0],"sirryan":[6,0,0.0],"sivansh":[25,0,0.0],"slayer":[6,0,0.0],"sobhan":[36,0,0.0],"sturgill":[70,0,0.0],"taemin":[17,0,0.0],"talos":[12,0,0.0],"taw":[12,0,0.0],"tirion":[18,0,0.0],"tolkien":[20,0,0.0],"treden":[11,0,0.0],"tuang":[6,0,0.0],"tuguldur":[6,0,0.0],"vandawt":[6,0,0.0],"vedhanth":[13,0,0.0],"vetri":[38,0,0.0],"wild":[40,7,0.0],"wilks":[12,0,0.0],"xylas":[27,0,0.0],"yazmani":[6,0,0.0],"yitzy":[25,0,0.0],"yoab":[23,0,0.0],"yuhao":[12,0,0.0],"yvenson":[11,0,0.0],"zaevyn":[6,0,0.0],"zage":[6,0,0.0],"zahavi":[56,0,0.0],"zahian":[6,0,0.0],"zakeriah":[6,0,0.0],"zealous":[6,0,0.0],"zeegan":[6,0,0.0],"zylo":[167,0,0.4445],"aary":[5,0,0.0],"aayon":[10,0,0.0],"abdelkader":[5,0,0.0],"abdulazim":[5,0,0.0],"abdurahim":[5,0,0.0],"aceyon":[26,0,0.0],"achilleas":[16,0,0.0],"achim":[21,0,0.0],"adhvay":[19,0,0.0],"advikreddy":[10,0,0.0],"adwik":[5,0,0.0],"aesir":[65,0,0.0],"agamjit":[5,0,0.0],"agamvir":[27,0,0.0],"agniv":[17,0,0.0],"ahki":[5,0,0.0],"ahmil":[20,0,0.0],"ahseem":[12,0,0.0],"ajayi":[11,0,0.0],"akhai":[34,0,0.0],"akillies":[5,0,0.0],"akshiv":[29,0,0.0],"akyng":[21,0,0.0],"amhir":[10,0,0.0],"amirion":[147,0,0.4335],"anveer":[31,0,0.0],"aoto":[21,0,0.0],"aryansh":[43,0,0.0],"ashen":[15,0,0.0],"assiah":[34,0,0.0],"ates":[5,0,0.0],"athreya":[10,0,0.0],"aurelien":[33,0,0.0],"ayash":[40,0,0.0],"ayato":[24,0,0.0],"aymir":[5,0,0.0],"ayston":[11,0,0.0],"azen":[29,0,0.0],"bearick":[5,0,0.0],"beauman":[53,0,0.0],"bender":[5,0,0.0],"benzley":[16,0,0.0],"bhavith":[5,0,0.0],"bihan":[21,0,0.0],"bishesh":[5,0,0.0],"bisrat":[10,0,0.0],"bodhisattva":[15,0,0.0],"bohdie":[34,0,0.0],"boyu":[5,0,0.0],"brayner":[53,0,0.0],"breckston":[21,0,0.0],"breyner":[59,0,0.0],"brylor":[5,0,0.0],"cahir":[34,0,0.0],"cannyn":[15,5,0.0],"caspin":[37,0,0.0],"chaleb":[5,0,0.0],"chev":[5,0,0.0],"chevrolet":[5,0,0.0],"chimdiebube":[10,0,0.0],"chinguun":[5,0,0.0],"corrick":[5,0,0.0],"corvo":[15,0,0.0],"cygnus":[5,0,0.0],"dakaden":[5,0,0.0],"dassiah":[5,0,0.0],"daston":[5,0,0.0],"dawkins":[5,0,0.0],"deian":[51,0,0.0],"dekklan":[5,0,0.0],"demoney":[10,0,0.0],"deyvis":[39,0,0.0],"dimitrije":[15,0,0.0],"divyan":[39,0,0.0],"dleh":[10,0,0.0],"dyaire":[5,0,0.0],"edens":[5,0,0.0],"eesah":[21,0,0.0],"eijaz":[25,0,0.0],"eisuke":[5,0,0.0],"ekjot":[5,0,0.0],"ektor":[5,0,0.0],"eldyn":[5,0,0.0],"elishama":[11,0,0.0],"elyam":[12,0,0.0],"enlil":[23,0,0.0],"eyler":[10,0,0.0],"eyup":[5,0,0.0],"ezan":[62,0,0.0],"ezekiell":[10,0,0.0],"ezrajames":[28,0,0.0],"fayyad":[5,0,0.0],"go":[5,0,0.0],"goutham":[5,0,0.0],"greylen":[68,0,0.0],"grim":[29,0,0.0],"gurmehar":[16,74,0.0],"haysten":[48,0,0.0],"hazard":[11,0,0.0],"henrich":[5,0,0.0],"humayl":[5,0,0.0],"huxtyn":[72,0,0.0],"idin":[5,0,0.0],"iokua":[12,0,0.0],"irlan":[26,0,0.0],"isser":[11,0,0.0],"iyas":[5,0,0.0],"jacksonjames":[5,0,0.0],"jacksten":[5,0,0.0],"jadwin":[5,0,0.0],"jagraj":[10,0,0.0],"jahmarri":[5,0,0.0],"jahzi":[11,0,0.0],"jaibir":[5,0,0.0],"janav":[15,0,0.0],"janciel":[12,0,0.0],"jannick":[5,0,0.0],"jaymus":[5,0,0.0],"jebril":[5,0,0.0],"jefe":[38,0,0.0],"jetsyn":[22,0,0.0],"jhosua":[22,0,0.0],"josiahh":[5,0,0.0],"jovens":[5,0,0.0],"julyus":[5,0,0.0],"kabiel":[10,0,0.0],"kaceion":[37,0,0.0],"kadric":[5,0,0.0],"kahi":[5,0,0.0],"kaice":[5,0,0.0],"kaiceon":[15,0,0.0],"kailem":[5,0,0.0],"kallahan":[93,11,0.3607],"kampton":[19,0,0.0],"kanyn":[13,0,0.0],"karev":[23,0,0.0],"kastor":[10,0,0.0],"kaydeen":[5,0,0.0],"kayeson":[25,0,0.0],"keilor":[10,0,0.0],"kessel":[5,0,0.0],"khaisen":[5,0,0.0],"khiren":[10,0,0.0],"kierran":[5,0,0.0],"kingden":[5,0,0.0],"kingjulian":[5,0,0.0],"kingkarter":[5,0,0.0],"kingzlee":[19,0,0.0],"knash":[25,0,0.0],"kopelan":[12,0,0.0],"kopelin":[10,0,0.0],"kosmos":[5,0,0.0],"kreedence":[27,5,0.0],"krewe":[53,0,0.0],"ksyn":[38,0,0.0],"kubo":[5,0,0.0],"kyas":[10,0,0.0],"kyiel":[5,0,0.0],"kying":[5,0,0.0],"kyire":[45,0,0.0],"kyne":[10,0,0.0],"kyrelle":[5,0,0.0],"kysyn":[23,0,0.0],"lavion":[11,0,0.0],"lehan":[5,0,0.0],"leoric":[33,0,0.0],"lir":[24,0,0.0],"lovensky":[35,0,0.0],"loxton":[5,0,0.0],"lupin":[40,0,0.0],"madixx":[5,0,0.0],"mahilan":[15,0,0.0],"maichail":[5,0,0.0],"maik":[10,0,0.0],"maklin":[5,0,0.0],"malachite":[77,0,0.0],"markhai":[5,0,0.0],"mavrix":[19,0,0.0],"mayas":[5,0,0.0],"mayjer":[5,0,0.0],"messiahs":[5,0,0.0],"mihalis":[5,0,0.0],"mihan":[42,0,0.0],"milliano":[79,0,0.0],"milson":[10,0,0.0],"moti":[38,0,0.0],"muaath":[5,0,0.0],"muchen":[30,0,0.0],"mudathir":[5,0,0.0],"mussiah":[5,0,0.0],"nahil":[17,0,0.0],"naqi":[5,0,0.0],"nasib":[27,0,0.0],"navari":[78,11,0.0],"navilan":[27,0,0.0],"neekon":[22,0,0.0],"negasi":[5,0,0.0],"nibras":[5,0,0.0],"nioh":[5,0,0.0],"nirmaan":[15,0,0.0],"nohwa":[5,0,0.0],"nuraiz":[5,0,0.0],"oban":[23,0,0.0],"obichukwu":[5,0,0.0],"oheneba":[23,0,0.0],"olatomiwa":[5,0,0.0],"parid":[10,0,0.0],"princeeli":[5,0,0.0],"princeethan":[5,0,0.0],"princezion":[5,0,0.0],"ramzan":[11,0,0.0],"ranvit":[5,0,0.0],"rari":[30,18,0.0],"raycer":[5,0,0.0],"reiland":[5,0,0.0],"rennon":[26,0,0.0],"rhettley":[49,5,0.0],"ridan":[5,0,0.0],"ridhan":[41,0,0.0],"rishaank":[5,0,0.0],"rivansh":[63,0,0.0],"rivington":[5,0,0.0],"romann":[21,0,0.0],"ryance":[5,0,0.0],"saayan":[24,0,0.0],"sabal":[17,0,0.0],"sameep":[5,0,0.0],"samim":[5,0,0.0],"samip":[10,0,0.0],"sarfaraz":[26,0,0.0],"sayhan":[5,0,0.0],"sefa":[5,0,0.0],"shmaryahu":[12,0,0.0],"shreeyan":[47,0,0.0],"shuo":[5,0,0.0],"sinncere":[5,0,0.0],"sirlegend":[10,0,0.0],"sirprince":[12,0,0.0],"stilez":[10,0,0.0],"subeer":[5,0,0.0],"superior":[15,12,0.0],"sutherland":[16,0,0.0],"tamjeed":[5,0,0.0],"teodore":[5,0,0.0],"theodorejames":[13,0,0.0],"theos":[40,0,0.0],"thomaz":[5,0,0.0],"thorbjorn":[10,0,0.0],"titobiloluwa":[5,0,0.0],"tybias":[5,0,0.0],"unai":[37,0,0.0],"vanbawi":[5,0,0.0],"varric":[5,0,0.0],"vedarth":[16,0,0.0],"waldir":[5,0,0.0],"wesston":[5,0,0.0],"westynn":[36,0,0.0],"xayn":[61,0,0.0],"xayvien":[5,0,0.0],"xenon":[5,0,0.0],"yagiz":[5,0,0.0],"yuheng":[22,0,0.0],"yujun":[5,0,0.0],"zafeer":[12,0,0.0],"zaidenn":[10,0,0.0],"zailon":[5,0,0.0],"zamin":[21,0,0.0],"zaran":[5,0,0.0],"zavdiel":[5,0,0.0],"zavonte":[5,0,0.0],"zayer":[5,0,0.0],"zechari":[5,0,0.0],"zennith":[5,0,0.0],"zeo":[63,0,0.0],"zhixing":[5,0,0.0],"zhiyuan":[11,0,0.0],"zkari":[5,0,0.0],"zohaan":[123,0,0.418],"zykai":[11,0,0.0],"zhavia":[7,1058,0.6015],"kattaleia":[0,115,0.4121],"ezlyn":[0,403,0.5211],"anifer":[0,65,0.0],"jhavia":[0,49,0.0],"kiyanne":[0,66,0.0],"maevery":[0,144,0.4317],"zaviah":[0,82,0.0],"ainoha":[0,162,0.4419],"yarishna":[0,46,0.0],"fiadh":[0,321,0.5013],"dehlani":[0,139,0.4286],"jentree":[0,28,0.0],"laureline":[0,24,0.0],"cevyn":[76,110,0.2684],"stoni":[0,49,0.0],"alishka":[0,18,0.0],"aloy":[0,86,0.0],"elanese":[0,33,0.0],"imrie":[0,106,0.4051],"lys":[0,32,0.0],"shaarvi":[0,61,0.0],"wynnter":[0,81,0.0],"adalayah":[0,58,0.0],"ainoa":[0,104,0.4034],"annifer":[0,19,0.0],"deava":[0,41,0.0],"haizleigh":[0,106,0.4051],"katyayani":[0,31,0.0],"khalesi":[0,24,0.0],"khlo":[0,15,0.0],"lunamae":[0,76,0.0],"maezlyn":[0,21,0.0],"mazuri":[0,59,0.0],"aadaya":[0,9,0.0],"aisel":[0,27,0.0],"ajourni":[0,23,0.0],"amaaya":[0,9,0.0],"ayvie":[0,9,0.0],"coralena":[0,9,0.0],"elieth":[0,65,0.0],"elyria":[0,44,0.0],"jhalani":[0,52,0.0],"khalyla":[0,202,0.4611],"loujain":[0,30,0.0],"madani":[0,69,0.0],"maiar":[0,9,0.0],"pravya":[0,48,0.0],"takshvi":[0,67,0.0],"yamilah":[0,9,0.0],"adeliene":[0,8,0.0],"amoha":[0,17,0.0],"andrra":[0,26,0.0],"daenarys":[0,21,0.0],"dilnoor":[0,8,0.0],"eimie":[0,8,0.0],"elitza":[0,22,0.0],"ellowynn":[0,28,0.0],"emryss":[0,23,0.0],"essi":[0,18,0.0],"ginevieve":[0,19,0.0],"hayzley":[0,34,0.0],"kassaia":[0,8,0.0],"kehlanni":[0,70,0.0],"meliani":[0,18,0.0],"nayva":[0,14,0.0],"orabella":[0,24,0.0],"reyla":[0,56,0.0],"roop":[0,26,0.0],"seraphima":[0,25,0.0],"treslyn":[0,8,0.0],"viaana":[0,57,0.0],"xaiya":[0,48,0.0],"xyleena":[0,13,0.0],"zavayah":[0,40,0.0],"adalaina":[0,7,0.0],"aelianna":[0,20,0.0],"aerolyn":[0,7,0.0],"ainoah":[0,107,0.4059],"alyani":[0,25,0.0],"amalah":[0,22,0.0],"avajean":[0,12,0.0],"avalisse":[0,7,0.0],"aviani":[0,68,0.0],"azaelea":[0,7,0.0],"azhara":[0,24,0.0],"banu":[0,7,0.0],"brexli":[0,23,0.0],"brixxon":[31,29,0.0],"calila":[0,12,0.0],"danerys":[0,14,0.0],"dearri":[0,20,0.0],"elegance":[0,32,0.0],"eliannys":[0,44,0.0],"elliee":[0,20,0.0],"grisha":[0,7,0.0],"hazelanne":[0,7,0.0],"imarah":[0,13,0.0],"javiyah":[0,21,0.0],"kajsiab":[0,7,0.0],"kalessi":[0,7,0.0],"kaura":[0,7,0.0],"kelliana":[0,7,0.0],"khadicha":[0,34,0.0],"khleo":[0,44,0.0],"kinnsley":[0,17,0.0],"kritisha":[0,7,0.0],"kyleana":[0,7,0.0],"kyreigh":[5,7,0.0],"layonni":[0,39,0.0],"leahny":[0,12,0.0],"lolade":[0,24,0.0],"mckinnleigh":[0,12,0.0],"nahira":[0,12,0.0],"nevaehrose":[0,7,0.0],"nyayla":[0,20,0.0],"pera":[0,71,0.0],"raynn":[0,31,0.0],"remilia":[0,13,0.0],"rosealeigh":[0,7,0.0],"royaltii":[0,31,0.0],"savvi":[0,17,0.0],"selayah":[0,22,0.0],"shiyu":[0,7,0.0],"sithara":[0,88,0.0],"stassia":[0,26,0.0],"tanvitha":[0,7,0.0],"universe":[5,42,0.0],"yosra":[0,65,0.0],"zahvia":[0,7,0.0],"zhaviah":[0,36,0.0],"zyna":[0,18,0.0],"aadhyareddy":[0,43,0.0],"aadhyasri":[0,28,0.0],"adalayna":[0,11,0.0],"ahed":[0,6,0.0],"ahraya":[0,39,0.0],"ahrie":[0,16,0.0],"alilet":[0,69,0.0],"alouette":[0,27,0.0],"anfa":[0,11,0.0],"anyfer":[0,6,0.0],"ariagrace":[0,6,0.0],"arinya":[0,12,0.0],"arjwan":[0,6,0.0],"ataleigh":[0,6,0.0],"avaeyah":[0,30,0.0],"averygrace":[0,6,0.0],"ayara":[0,55,0.0],"beimnet":[0,6,0.0],"bilge":[0,6,0.0],"brayzlee":[0,6,0.0],"cardi":[0,27,0.0],"charlieanne":[0,11,0.0],"chimbusomma":[0,11,0.0],"daleny":[0,6,0.0],"delahni":[0,78,0.0],"diari":[0,11,0.0],"dyxie":[0,6,0.0],"ehva":[0,6,0.0],"elidi":[0,39,0.0],"ellara":[0,19,0.0],"elsiana":[0,6,0.0],"emereigh":[0,32,0.0],"eryan":[0,6,0.0],"esmira":[0,17,0.0],"evelyngrace":[0,11,0.0],"fadilah":[0,6,0.0],"farisha":[0,45,0.0],"faylen":[0,6,0.0],"fenyx":[57,36,0.0],"frejya":[0,12,0.0],"frumi":[0,6,0.0],"geles":[0,6,0.0],"gentree":[0,6,0.0],"gilly":[0,6,0.0],"greeicy":[0,85,0.0],"gretl":[0,6,0.0],"hadicha":[0,85,0.0],"hafiza":[0,11,0.0],"hanvi":[0,17,0.0],"haseya":[0,12,0.0],"hayzleigh":[0,48,0.0],"hosna":[0,72,0.0],"ihana":[0,22,0.0],"ikora":[0,16,0.0],"imery":[0,6,0.0],"imina":[0,11,0.0],"jadoir":[0,6,0.0],"jakayln":[0,6,0.0],"jatzibe":[0,18,0.0],"josleny":[0,6,0.0],"jozefina":[0,6,0.0],"kaelahni":[0,16,0.0],"kaelanie":[0,6,0.0],"kaislei":[0,28,0.0],"kaleesa":[0,6,0.0],"kalesi":[0,20,0.0],"kalisia":[0,6,0.0],"kalonnie":[0,6,0.0],"kathaleia":[0,12,0.0],"kayari":[0,82,0.0],"keavy":[0,6,0.0],"kenndi":[0,13,0.0],"kennsley":[0,11,0.0],"kennzie":[0,6,0.0],"kezlyn":[0,21,0.0],"khaleesie":[0,12,0.0],"kyanni":[0,28,0.0],"kycie":[0,6,0.0],"kylann":[19,14,0.0],"kymbrie":[0,6,0.0],"kynnsley":[0,6,0.0],"layanni":[0,12,0.0],"lika":[0,6,0.0],"lovanna":[0,18,0.0],"lunagrace":[0,6,0.0],"maevah":[0,11,0.0],"maislee":[0,74,0.0],"maizi":[0,6,0.0],"makenzlie":[0,6,0.0],"malyla":[0,6,0.0],"marleyrae":[0,23,0.0],"maryevelyn":[0,6,0.0],"menorah":[0,30,0.0],"miayla":[0,20,0.0],"mikasa":[0,60,0.0],"modesire":[0,6,0.0],"myari":[0,47,0.0],"myrcella":[0,39,0.0],"naielle":[0,36,0.0],"nakhyla":[0,6,0.0],"nalaiah":[0,15,0.0],"nalaiya":[0,32,0.0],"nalanii":[0,42,0.0],"nehlani":[0,92,0.0],"niyelli":[0,22,0.0],"novae":[0,16,0.0],"oliviarae":[0,18,0.0],"ozlynn":[0,45,0.0],"presha":[0,24,0.0],"pyrrha":[0,22,0.0],"raleah":[0,6,0.0],"rawdah":[0,22,0.0],"raylani":[0,63,0.0],"rheign":[0,13,0.0],"rhenlee":[0,31,0.0],"riverrose":[0,19,0.0],"rynley":[0,36,0.0],"saaral":[0,11,0.0],"saarya":[0,19,0.0],"shwe":[0,6,0.0],"sihi":[0,12,0.0],"siloam":[0,6,0.0],"siloe":[0,11,0.0],"solani":[0,80,0.0],"suyana":[0,6,0.0],"symphonee":[0,6,0.0],"syriyah":[0,6,0.0],"tanitoluwa":[5,11,0.0],"taseefa":[0,6,0.0],"thyri":[10,299,0.4819],"trinityrose":[0,6,0.0],"truleigh":[0,69,0.0],"willianny":[0,11,0.0],"xahlia":[0,13,0.0],"xailee":[0,29,0.0],"xintong":[0,6,0.0],"yelianny":[0,23,0.0],"zaeli":[0,57,0.0],"zanova":[0,106,0.4051],"zaviyah":[0,12,0.0],"zelilah":[0,25,0.0],"zhaviyah":[0,6,0.0],"zohemi":[0,6,0.0],"aabidah":[0,5,0.0],"aalasia":[0,5,0.0],"aamorah":[0,5,0.0],"aarunya":[0,20,0.0],"abhaya":[0,12,0.0],"abiya":[0,16,0.0],"adaiyah":[0,15,0.0],"adeeva":[0,5,0.0],"adelyse":[0,5,0.0],"aerynn":[0,5,0.0],"ahlanni":[0,38,0.0],"ahriella":[0,5,0.0],"aidalynn":[0,10,0.0],"aihnoa":[0,20,0.0],"alayaa":[0,28,0.0],"aleiny":[0,5,0.0],"alery":[0,10,0.0],"aliia":[0,20,0.0],"alliegrace":[0,5,0.0],"ameliarae":[0,5,0.0],"ameriie":[0,5,0.0],"amiiyah":[0,5,0.0],"amiko":[17,41,0.0],"anifa":[0,10,0.0],"annajames":[0,10,0.0],"anousheh":[0,5,0.0],"anran":[0,10,0.0],"anvee":[0,10,0.0],"araea":[0,5,0.0],"arevik":[0,16,0.0],"armaya":[0,5,0.0],"aroyalty":[0,5,0.0],"arrowyn":[0,10,0.0],"aryarose":[0,5,0.0],"ashlesha":[0,5,0.0],"athaleyah":[0,5,0.0],"aubreey":[0,5,0.0],"auroragrace":[0,5,0.0],"aurya":[0,23,0.0],"aveera":[0,77,0.0],"averykate":[0,5,0.0],"aviyanah":[0,5,0.0],"avonleigh":[0,5,0.0],"ayarie":[0,19,0.0],"aydria":[0,5,0.0],"ayma":[0,26,0.0],"aymelia":[0,5,0.0],"aynoor":[0,20,0.0],"ayoni":[0,22,0.0],"azahara":[0,27,0.0],"azzurra":[0,34,0.0],"becklynn":[0,30,0.0],"beia":[0,5,0.0],"bellanova":[0,15,0.0],"blaykelee":[0,5,0.0],"braizlee":[0,5,0.0],"brennex":[30,5,0.0],"brightynn":[0,5,0.0],"brynslee":[0,11,0.0],"bulma":[0,5,0.0],"camariya":[0,5,0.0],"camina":[0,40,0.0],"camylah":[0,17,0.0],"carleny":[0,5,0.0],"cataleiya":[0,16,0.0],"caybree":[0,5,0.0],"chinenyenwa":[0,5,0.0],"cisse":[0,5,0.0],"collynns":[0,5,0.0],"corlee":[0,10,0.0],"cyn":[0,17,0.0],"daleia":[0,16,0.0],"damila":[0,16,0.0],"damyrah":[0,11,0.0],"delyliah":[0,5,0.0],"demirose":[0,31,0.0],"devna":[0,5,0.0],"dhruvika":[0,17,0.0],"divyanka":[0,5,0.0],"ediany":[0,15,0.0],"edrielle":[0,10,0.0],"eileithyia":[0,33,0.0],"elinna":[0,11,0.0],"ellanese":[0,5,0.0],"elys":[0,10,0.0],"embersyn":[0,24,0.0],"emela":[0,5,0.0],"emerys":[8,5,0.0],"emiliani":[0,5,0.0],"emrynn":[0,50,0.0],"enley":[0,15,0.0],"enzly":[0,16,0.0],"erabelle":[0,5,0.0],"eshanvi":[0,5,0.0],"eslee":[0,10,0.0],"esmeray":[0,248,0.4789],"evieanna":[0,5,0.0],"evika":[0,5,0.0],"evonni":[0,5,0.0],"ezralynn":[0,18,0.0],"farhat":[0,25,0.0],"fatihah":[0,5,0.0],"fayre":[0,5,0.0],"feyre":[0,65,0.0],"ffion":[0,10,0.0],"fiammetta":[0,13,0.0],"foreign":[22,10,0.0],"freia":[0,5,0.0],"galaxi":[0,11,0.0],"gianelli":[0,31,0.0],"gilah":[0,5,0.0],"graylie":[0,5,0.0],"gwinevere":[0,5,0.0],"haislynn":[0,31,0.0],"harmonni":[0,5,0.0],"hatteras":[0,15,0.0],"haukea":[0,16,0.0],"honorah":[0,5,0.0],"houstyn":[18,24,0.0],"hyab":[0,10,0.0],"ichika":[0,10,0.0],"iknoor":[0,11,0.0],"intisaar":[0,5,0.0],"iriss":[0,5,0.0],"ixora":[0,10,0.0],"iyland":[0,22,0.0],"jackielynn":[0,5,0.0],"jakylie":[0,20,0.0],"janhvi":[0,30,0.0],"jashlyn":[0,10,0.0],"jaylahni":[0,20,0.0],"jayleeana":[0,5,0.0],"jaylianni":[0,10,0.0],"jayoni":[5,33,0.0],"jayvianna":[0,5,0.0],"jhara":[0,17,0.0],"jhelani":[0,37,0.0],"jholie":[0,5,0.0],"jhream":[16,156,0.4055],"jiaying":[0,18,0.0],"joeleigh":[0,5,0.0],"josalee":[0,10,0.0],"jourie":[0,5,0.0],"jovelyn":[0,5,0.0],"jurzi":[0,5,0.0],"jurzie":[0,5,0.0],"kaihlani":[0,5,0.0],"kailanee":[0,5,0.0],"kamrii":[0,5,0.0],"kassaya":[0,5,0.0],"katileya":[0,5,0.0],"kayoir":[0,26,0.0],"kayzlynn":[0,32,0.0],"keerthika":[0,5,0.0],"keior":[5,44,0.0],"kemery":[0,5,0.0],"khaleesa":[0,5,0.0],"khalessy":[0,5,0.0],"khanyla":[0,5,0.0],"kharii":[0,10,0.0],"khyasia":[0,5,0.0],"khylani":[0,79,0.0],"kihlani":[0,5,0.0],"korii":[0,25,0.0],"kotone":[0,5,0.0],"krisleigh":[0,5,0.0],"kyahna":[0,5,0.0],"kyarie":[5,27,0.0],"laionni":[0,11,0.0],"lanaeh":[0,5,0.0],"larai":[0,5,0.0],"lavynder":[0,17,0.0],"layahni":[0,5,0.0],"leahni":[0,14,0.0],"lehani":[0,18,0.0],"leiauna":[0,5,0.0],"leighlyn":[0,15,0.0],"leighonna":[0,5,0.0],"leika":[0,5,0.0],"lennen":[0,17,0.0],"leonni":[0,15,0.0],"lirah":[0,5,0.0],"lolarose":[0,5,0.0],"lorelia":[0,5,0.0],"luisanny":[0,10,0.0],"lunamaria":[0,17,0.0],"lyannie":[0,5,0.0],"lyv":[0,5,0.0],"madiana":[0,20,0.0],"mahpiya":[0,5,0.0],"maizlee":[0,89,0.0],"majestee":[0,30,0.0],"malahn":[0,5,0.0],"malauni":[0,55,0.0],"maleyiah":[0,5,0.0],"malilah":[0,15,0.0],"mardiya":[0,5,0.0],"marleyah":[0,5,0.0],"marlize":[0,5,0.0],"marron":[0,10,0.0],"marynn":[0,20,0.0],"mastani":[0,5,0.0],"mattel":[0,29,0.0],"mazayah":[0,5,0.0],"melaher":[0,17,0.0],"melenia":[0,5,0.0],"melodyann":[0,5,0.0],"milagrace":[0,17,0.0],"miqueen":[0,13,0.0],"miyahna":[0,5,0.0],"nalahni":[0,40,0.0],"nalanni":[0,16,0.0],"naleiah":[0,13,0.0],"navami":[0,5,0.0],"nihasvi":[0,5,0.0],"nimar":[0,13,0.0],"noir":[51,70,0.241],"norajane":[0,11,0.0],"novajean":[0,5,0.0],"novamae":[0,19,0.0],"novareign":[0,66,0.0],"novea":[0,5,0.0],"nyaylah":[0,5,0.0],"nyibol":[0,5,0.0],"odina":[0,10,0.0],"paesley":[0,10,0.0],"paizlei":[0,5,0.0],"peru":[0,5,0.0],"peysley":[0,5,0.0],"promisee":[0,16,0.0],"raedynn":[0,5,0.0],"raeni":[0,31,0.0],"raiin":[0,5,0.0],"reitzy":[0,5,0.0],"remlee":[0,10,0.0],"reneesme":[0,5,0.0],"rhealee":[0,15,0.0],"rhenn":[5,17,0.0],"rhettlee":[20,22,0.0],"rhyian":[0,10,0.0],"rithvi":[0,15,0.0],"rous":[0,26,0.0],"rubyrae":[0,5,0.0],"ruzainah":[0,5,0.0],"saatvika":[0,5,0.0],"safwa":[0,5,0.0],"samairah":[0,21,0.0],"sanmita":[0,5,0.0],"saveyah":[0,15,0.0],"selahgrace":[0,11,0.0],"semma":[0,16,0.0],"seran":[0,5,0.0],"sereyah":[0,18,0.0],"shaielle":[0,5,0.0],"shreeda":[0,5,0.0],"shrija":[0,15,0.0],"shrivika":[0,5,0.0],"shuyao":[0,5,0.0],"shyaire":[9,5,0.0],"snithika":[0,5,0.0],"sohvi":[0,10,0.0],"sokona":[0,5,0.0],"stefaniya":[0,5,0.0],"sumnima":[0,5,0.0],"susu":[0,5,0.0],"teari":[0,19,0.0],"teilynn":[0,5,0.0],"thali":[0,5,0.0],"theya":[0,16,0.0],"thianna":[0,5,0.0],"tomiris":[0,23,0.0],"uinise":[0,5,0.0],"vayle":[0,5,0.0],"vayolet":[0,18,0.0],"verily":[0,15,0.0],"videlle":[0,13,0.0],"vyana":[0,15,0.0],"waelyn":[61,38,0.0],"waverleigh":[0,40,0.0],"weam":[0,5,0.0],"willowmae":[0,43,0.0],"xamora":[0,35,0.0],"xaylah":[0,25,0.0],"xerenity":[0,5,0.0],"ximara":[0,5,0.0],"ximora":[0,46,0.0],"xiyue":[0,12,0.0],"yadelyn":[0,5,0.0],"yanielys":[0,11,0.0],"yannah":[0,5,0.0],"yanxi":[0,13,0.0],"yining":[0,17,0.0],"youssra":[0,5,0.0],"yulenny":[0,10,0.0],"yuzuha":[0,5,0.0],"zahli":[0,11,0.0],"zaleiah":[0,10,0.0],"zamirha":[0,5,0.0],"zarayiah":[0,5,0.0],"zavanah":[0,5,0.0],"zehira":[0,5,0.0],"zehlani":[0,32,0.0],"zhoemy":[0,20,0.0],"zinat":[0,34,0.0],"zodi":[0,5,0.0],"zoela":[0,5,0.0],"zoellie":[0,29,0.0],"zumar":[0,5,0.0],"zylaa":[0,5,0.0],"zynlee":[0,21,0.0],"jahseh":[850,0,0.5859],"thielen":[112,0,0.4098],"daer":[52,0,0.0],"amell":[89,0,0.0],"daesyn":[82,0,0.0],"rhaegar":[35,0,0.0],"ulugbek":[17,0,0.0],"vayu":[204,0,0.4619],"liano":[29,0,0.0],"sirroyal":[30,0,0.0],"truu":[133,75,0.2964],"usmon":[74,0,0.0],"weller":[152,0,0.4364],"xylo":[169,48,0.3639],"acesen":[34,0,0.0],"alihan":[56,0,0.0],"baz":[85,0,0.0],"abiy":[9,0,0.0],"ahsiah":[64,0,0.0],"euro":[73,0,0.0],"ikal":[99,0,0.0],"khal":[14,0,0.0],"khody":[9,0,0.0],"kyzah":[27,0,0.0],"lamelo":[101,0,0.4009],"sensei":[29,0,0.0],"sicario":[32,0,0.0],"amiyas":[23,0,0.0],"amnen":[117,31,0.3431],"ayyash":[28,0,0.0],"azizbek":[14,0,0.0],"ezer":[30,0,0.0],"gaurik":[20,0,0.0],"huxson":[100,0,0.4],"ishank":[32,0,0.0],"jayniel":[28,0,0.0],"kaxton":[8,0,0.0],"khayson":[36,0,0.0],"ludo":[26,0,0.0],"mahzi":[212,11,0.4465],"nylo":[117,0,0.4136],"soldier":[14,0,0.0],"taika":[101,0,0.4009],"tritt":[73,0,0.0],"vaelin":[26,0,0.0],"weylen":[19,0,0.0],"xade":[27,0,0.0],"aasiah":[19,0,0.0],"armelo":[7,0,0.0],"arvik":[64,0,0.0],"azair":[122,0,0.4173],"bayek":[7,0,0.0],"behren":[21,0,0.0],"bryaire":[24,0,0.0],"cainaan":[17,0,0.0],"chimdindu":[7,0,0.0],"christensen":[18,0,0.0],"dakson":[13,0,0.0],"daniyar":[7,0,0.0],"elhanan":[17,0,0.0],"ellioth":[7,0,0.0],"elorm":[7,0,0.0],"eyoas":[23,0,0.0],"gurjas":[19,0,0.0],"hetvik":[27,0,0.0],"ishay":[19,0,0.0],"jasahd":[7,0,0.0],"jaxdon":[7,0,0.0],"jepsen":[7,0,0.0],"joaniel":[7,0,0.0],"jubran":[30,0,0.0],"kaanan":[28,0,0.0],"kaceyn":[21,0,0.0],"kaitochukwu":[7,0,0.0],"kaizyn":[144,0,0.4317],"karsyon":[7,0,0.0],"kashston":[33,0,0.0],"khabib":[33,0,0.0],"kiezer":[7,0,0.0],"kolesyn":[36,0,0.0],"krishanth":[7,0,0.0],"kyzaiah":[20,0,0.0],"leriel":[7,0,0.0],"liham":[44,0,0.0],"lochland":[31,0,0.0],"madyan":[7,0,0.0],"muir":[7,0,0.0],"nalij":[17,0,0.0],"nebras":[7,0,0.0],"olias":[7,0,0.0],"oryen":[7,0,0.0],"ozymandias":[50,0,0.0],"perceus":[13,0,0.0],"rahmier":[7,0,0.0],"riyom":[7,0,0.0],"romeir":[18,0,0.0],"rutvij":[7,0,0.0],"shahar":[7,0,0.0],"shaqir":[7,0,0.0],"siaan":[7,0,0.0],"tanvik":[34,0,0.0],"tanvish":[7,0,0.0],"thanatos":[7,0,0.0],"theophilos":[7,0,0.0],"wylin":[19,0,0.0],"yulien":[7,0,0.0],"zaair":[7,0,0.0],"zeyn":[35,0,0.0],"aadhiran":[95,0,0.0],"aadyant":[12,0,0.0],"aanik":[6,0,0.0],"aarvik":[102,0,0.4017],"aegon":[38,0,0.0],"ahsaad":[16,0,0.0],"aizaiah":[11,0,0.0],"akelius":[15,0,0.0],"alicio":[12,0,0.0],"aliyus":[24,0,0.0],"annuel":[6,0,0.0],"ao":[13,0,0.0],"arrison":[11,0,0.0],"artorias":[48,0,0.0],"ashvith":[13,0,0.0],"athiran":[58,0,0.0],"ayton":[6,0,0.0],"ayvian":[22,0,0.0],"badri":[6,0,0.0],"bearon":[19,0,0.0],"beaudry":[22,0,0.0],"bentzy":[12,0,0.0],"camir":[12,0,0.0],"daemar":[6,0,0.0],"decland":[32,0,0.0],"dhven":[16,0,0.0],"dwade":[6,0,0.0],"ekemini":[6,0,0.0],"eliann":[28,0,0.0],"eliphaz":[19,0,0.0],"erixon":[6,0,0.0],"evers":[19,0,0.0],"eylon":[6,0,0.0],"ezar":[11,0,0.0],"ezran":[304,0,0.4966],"freyr":[42,0,0.0],"garrix":[13,0,0.0],"geoni":[6,0,0.0],"grayston":[26,0,0.0],"gursehaj":[12,0,0.0],"hian":[26,0,0.0],"hrishaan":[6,0,0.0],"iliyas":[6,0,0.0],"izhan":[64,0,0.0],"jahdani":[11,0,0.0],"jalex":[18,0,0.0],"jaxcen":[23,0,0.0],"jedson":[32,0,0.0],"jezekiel":[14,0,0.0],"johnniel":[6,0,0.0],"jozhiel":[48,0,0.0],"kahleo":[50,0,0.0],"kairin":[16,0,0.0],"kashmier":[34,0,0.0],"kaspien":[6,0,0.0],"kavani":[28,11,0.0],"keab":[30,0,0.0],"kenmari":[11,0,0.0],"kezlin":[6,6,0.0],"knighten":[6,0,0.0],"knoble":[24,0,0.0],"koe":[461,0,0.5327],"kyloren":[17,0,0.0],"kyroe":[20,0,0.0],"legennd":[19,0,0.0],"lesandro":[38,0,0.0],"locklen":[21,0,0.0],"ludovico":[40,0,0.0],"lukaz":[18,0,0.0],"mahil":[6,0,0.0],"manil":[6,0,0.0],"manuia":[6,0,0.0],"matua":[37,0,0.0],"maximilio":[6,0,0.0],"mesias":[35,0,0.0],"mixon":[24,0,0.0],"muhaymin":[12,0,0.0],"naviel":[6,0,0.0],"obai":[30,0,0.0],"odynn":[6,0,0.0],"onyxx":[102,16,0.3582],"oso":[49,0,0.0],"rajay":[6,0,0.0],"rayaansh":[6,0,0.0],"rithvin":[12,0,0.0],"ronish":[6,0,0.0],"rovanio":[31,0,0.0],"rudhran":[11,0,0.0],"saer":[6,0,0.0],"selleck":[6,0,0.0],"sharv":[6,0,0.0],"shrage":[6,0,0.0],"sosefo":[6,0,0.0],"springer":[6,0,0.0],"sunwoo":[18,0,0.0],"swae":[38,38,0.0],"tafsir":[6,0,0.0],"tayceon":[6,0,0.0],"wulf":[12,0,0.0],"yenziel":[6,0,0.0],"yeshayah":[6,0,0.0],"zaqueo":[27,0,0.0],"zekarias":[6,0,0.0],"zulqarnain":[12,0,0.0],"aakif":[5,0,0.0],"aalam":[32,0,0.0],"abdirizaq":[5,0,0.0],"abdulmannan":[5,0,0.0],"abhir":[18,0,0.0],"abniel":[5,0,0.0],"acai":[38,6,0.0],"acton":[5,0,0.0],"adidev":[10,0,0.0],"agaran":[40,0,0.0],"aito":[5,0,0.0],"akaius":[26,0,0.0],"akoi":[5,0,0.0],"akori":[5,0,0.0],"aleckzander":[5,0,0.0],"alef":[15,0,0.0],"aleksej":[22,0,0.0],"amirkhan":[16,0,0.0],"angadveer":[5,0,0.0],"angelgael":[15,0,0.0],"aprameya":[10,0,0.0],"ariyaan":[5,0,0.0],"arshith":[10,0,0.0],"aryas":[5,0,0.0],"asahn":[76,0,0.0],"ashal":[12,0,0.0],"asrith":[15,0,0.0],"atreyus":[72,0,0.0],"averitt":[5,0,0.0],"axen":[26,0,0.0],"axston":[29,0,0.0],"axxton":[30,0,0.0],"ayaanreddy":[28,0,0.0],"aymer":[5,0,0.0],"azeil":[54,0,0.0],"bahram":[16,0,0.0],"barrow":[5,0,0.0],"beacon":[34,0,0.0],"beltran":[15,0,0.0],"benayah":[5,0,0.0],"benayas":[5,0,0.0],"benjin":[10,0,0.0],"berrick":[16,0,0.0],"bhodi":[42,0,0.0],"bigyan":[5,0,0.0],"brancen":[5,0,0.0],"brennox":[5,0,0.0],"caire":[5,0,0.0],"caledon":[63,0,0.0],"calihan":[179,17,0.4187],"cassien":[12,0,0.0],"caydren":[5,0,0.0],"chalil":[10,0,0.0],"chaytan":[5,0,0.0],"chinemelum":[5,0,0.0],"chozyn":[266,138,0.3432],"codah":[59,0,0.0],"covan":[5,0,0.0],"cynsere":[13,0,0.0],"daetyn":[5,0,0.0],"daniyyel":[5,0,0.0],"davlat":[5,0,0.0],"daymir":[15,0,0.0],"deiren":[5,0,0.0],"deyaa":[5,0,0.0],"diaan":[5,0,0.0],"dmere":[10,0,0.0],"dmytro":[26,0,0.0],"domitri":[5,0,0.0],"dreylen":[10,0,0.0],"druv":[10,0,0.0],"dutton":[1126,45,0.5901],"east":[65,5,0.0],"eiland":[5,0,0.0],"elissandro":[5,0,0.0],"emris":[36,19,0.0],"ericksen":[30,0,0.0],"erish":[21,0,0.0],"esjay":[5,0,0.0],"ezeqiel":[5,0,0.0],"faraja":[23,0,0.0],"filipp":[5,0,0.0],"finnik":[19,0,0.0],"folajimi":[5,0,0.0],"gakai":[5,0,0.0],"gebriel":[5,0,0.0],"genji":[15,0,0.0],"geralt":[104,0,0.4034],"gessiah":[5,0,0.0],"glauk":[20,0,0.0],"glavine":[5,0,0.0],"graysan":[5,0,0.0],"gurekam":[5,0,0.0],"hadid":[31,0,0.0],"hanief":[5,0,0.0],"hayu":[16,0,0.0],"hongyi":[5,0,0.0],"hukam":[37,0,0.0],"humaid":[25,0,0.0],"ibrahiim":[5,0,0.0],"ikemsinachi":[5,0,0.0],"ikshan":[5,0,0.0],"ilaan":[5,0,0.0],"ilyes":[18,0,0.0],"ishir":[89,0,0.0],"islombek":[5,0,0.0],"iyanu":[16,21,0.0],"jaaire":[55,0,0.0],"jabryson":[5,0,0.0],"jaciere":[18,0,0.0],"jackstin":[5,0,0.0],"jacxon":[5,0,0.0],"jaicere":[5,0,0.0],"jaizion":[5,0,0.0],"jaqson":[5,0,0.0],"jasaad":[17,0,0.0],"jasiir":[5,0,0.0],"javohir":[5,0,0.0],"jaxxston":[5,0,0.0],"jaycier":[12,0,0.0],"jeiko":[12,0,0.0],"johaniel":[5,0,0.0],"johnwayne":[18,0,0.0],"jokubas":[5,0,0.0],"jorniel":[5,0,0.0],"josiaah":[5,0,0.0],"joviah":[5,0,0.0],"jprince":[5,0,0.0],"kachiside":[10,0,0.0],"kaenen":[16,0,0.0],"kahel":[12,0,0.0],"kahmi":[5,0,0.0],"kaimir":[102,0,0.4017],"kamello":[24,0,0.0],"kamere":[15,0,0.0],"kaneki":[59,0,0.0],"kasius":[31,0,0.0],"kaymari":[15,29,0.0],"keao":[5,0,0.0],"keisen":[5,0,0.0],"kentucky":[5,0,0.0],"keyansh":[24,0,0.0],"khannon":[11,0,0.0],"khiran":[5,0,0.0],"khison":[11,0,0.0],"khyel":[11,0,0.0],"khyzir":[43,0,0.0],"kiaire":[31,0,0.0],"kiliam":[56,0,0.0],"kingarthur":[5,0,0.0],"kingjudah":[5,0,0.0],"kinglsey":[5,0,0.0],"klayden":[5,0,0.0],"kohin":[5,0,0.0],"kreek":[17,0,0.0],"krishank":[5,0,0.0],"kriv":[23,0,0.0],"krizal":[12,0,0.0],"kumayl":[5,0,0.0],"kyber":[34,0,0.0],"kyias":[5,0,0.0],"kyiree":[19,0,0.0],"kyliam":[166,0,0.444],"kyrae":[5,0,0.0],"kysun":[5,0,0.0],"kyzere":[12,0,0.0],"kyzic":[5,0,0.0],"laione":[5,0,0.0],"leeiam":[5,0,0.0],"lejin":[16,0,0.0],"leunam":[5,0,0.0],"lono":[15,0,0.0],"louca":[5,0,0.0],"lucis":[5,0,0.0],"lyons":[5,0,0.0],"lyte":[12,0,0.0],"mahavir":[5,0,0.0],"makalo":[15,0,0.0],"makyrie":[17,0,0.0],"messian":[5,0,0.0],"mesziah":[5,0,0.0],"mohammadomar":[27,0,0.0],"mohith":[5,0,0.0],"mosawer":[5,0,0.0],"muhammadibrahim":[48,0,0.0],"muhammadmustafa":[29,0,0.0],"myzell":[5,0,0.0],"naiel":[15,0,0.0],"nakoah":[47,0,0.0],"natanem":[5,0,0.0],"nicolau":[10,0,0.0],"nyklaus":[5,0,0.0],"nymere":[57,0,0.0],"oconner":[5,0,0.0],"oghenebrume":[5,0,0.0],"ollyver":[35,0,0.0],"onir":[25,0,0.0],"palvit":[5,0,0.0],"pransh":[56,0,0.0],"prayaan":[15,0,0.0],"precise":[5,0,0.0],"prevail":[5,0,0.0],"qwest":[5,0,0.0],"rahiim":[5,0,0.0],"rahki":[5,0,0.0],"rehoboth":[5,0,0.0],"rezwan":[47,0,0.0],"richland":[5,0,0.0],"rohi":[15,0,0.0],"rosen":[5,0,0.0],"rron":[11,0,0.0],"ryansh":[5,0,0.0],"ryell":[17,0,0.0],"ryus":[5,0,0.0],"safan":[10,0,0.0],"safe":[5,0,0.0],"saier":[5,0,0.0],"samaksh":[17,0,0.0],"sanji":[58,0,0.0],"sarhan":[5,0,0.0],"sebastiann":[5,0,0.0],"selik":[11,0,0.0],"seojun":[5,0,0.0],"serhan":[5,0,0.0],"seti":[20,0,0.0],"severide":[38,0,0.0],"shafay":[5,0,0.0],"shamshon":[23,0,0.0],"shanav":[22,0,0.0],"sharaf":[10,0,0.0],"sidhan":[5,0,0.0],"siere":[5,0,0.0],"sircarter":[5,0,0.0],"siyer":[5,0,0.0],"solar":[91,97,0.2347],"stetsyn":[59,38,0.0],"svojas":[24,0,0.0],"swar":[5,0,0.0],"syeir":[33,0,0.0],"tamerlan":[10,0,0.0],"tamjid":[5,0,0.0],"taymen":[5,0,0.0],"temir":[10,0,0.0],"tenneson":[5,0,0.0],"timir":[43,0,0.0],"truthe":[5,0,0.0],"tylann":[44,5,0.0],"tylenn":[5,0,0.0],"valan":[5,0,0.0],"vantha":[5,0,0.0],"viaansh":[89,0,0.0],"vishant":[5,0,0.0],"vivaansh":[30,0,0.0],"vyktor":[5,0,0.0],"wentz":[5,0,0.0],"westbrook":[18,0,0.0],"wylden":[19,0,0.0],"xoel":[22,0,0.0],"yaheem":[5,0,0.0],"yanciel":[5,0,0.0],"yangel":[5,0,0.0],"yasar":[10,0,0.0],"yayden":[13,0,0.0],"yihao":[5,0,0.0],"yonnis":[10,0,0.0],"yosiyah":[10,0,0.0],"zaaki":[5,0,0.0],"zaeed":[5,0,0.0],"zaidrian":[5,0,0.0],"zakobe":[5,0,0.0],"zakyi":[10,0,0.0],"zalik":[5,0,0.0],"zanoah":[5,0,0.0],"zaviel":[25,0,0.0],"zaytoven":[5,0,0.0],"zhiheng":[5,0,0.0],"ziaan":[82,0,0.0],"zihir":[5,0,0.0],"zin":[5,0,0.0],"zuber":[11,0,0.0],"adeya":[0,211,0.4649],"kayslin":[0,27,0.0],"malaynah":[0,73,0.0],"chevel":[0,22,0.0],"kulture":[61,230,0.3895],"ahveya":[0,20,0.0],"kaavia":[0,41,0.0],"sakani":[122,61,0.3017],"akyli":[0,54,0.0],"jhazelle":[0,14,0.0],"grayli":[0,42,0.0],"qira":[0,66,0.0],"aarnika":[0,48,0.0],"nalaia":[0,64,0.0],"zonaira":[0,12,0.0],"axara":[0,26,0.0],"azahra":[0,37,0.0],"maisel":[0,38,0.0],"miraal":[0,150,0.4352],"noorseen":[0,11,0.0],"nurvi":[0,72,0.0],"peach":[0,85,0.0],"ramoni":[0,11,0.0],"rhaella":[0,26,0.0],"ivelle":[0,31,0.0],"marsai":[26,114,0.3495],"rileyrose":[0,15,0.0],"sihana":[0,45,0.0],"aarvika":[0,61,0.0],"arjana":[0,14,0.0],"aruvi":[0,26,0.0],"ayshe":[0,15,0.0],"bloom":[10,206,0.4453],"cameila":[0,14,0.0],"cereza":[0,38,0.0],"dennhi":[0,15,0.0],"elihana":[0,28,0.0],"ezmia":[0,30,0.0],"halime":[0,52,0.0],"jadior":[0,15,0.0],"kynd":[0,72,0.0],"maev":[0,25,0.0],"naimal":[0,80,0.0],"novaa":[0,71,0.0],"oluwashindara":[0,17,0.0],"pure":[19,50,0.0],"rayyona":[0,27,0.0],"sailah":[0,50,0.0],"xyah":[0,17,0.0],"ahmelia":[0,13,0.0],"aryzona":[0,14,0.0],"atlanna":[0,13,0.0],"elleanore":[0,18,0.0],"fenleigh":[0,8,0.0],"gamora":[0,20,0.0],"hili":[0,8,0.0],"ishaana":[0,8,0.0],"kaiani":[0,50,0.0],"kaiva":[0,18,0.0],"karya":[0,8,0.0],"kayomi":[0,159,0.4403],"keilanny":[0,63,0.0],"leiza":[0,13,0.0],"luxury":[5,90,0.0],"marleyrose":[0,13,0.0],"melodii":[0,30,0.0],"naveigh":[0,23,0.0],"neslihan":[0,50,0.0],"nyza":[0,37,0.0],"rhylyn":[0,20,0.0],"saiyr":[89,62,0.2569],"skylarose":[0,8,0.0],"smyra":[0,18,0.0],"sondor":[0,15,0.0],"wysdom":[22,48,0.0],"ziylah":[0,26,0.0],"aleesi":[0,20,0.0],"althaea":[0,14,0.0],"amilianna":[0,21,0.0],"amoray":[0,7,0.0],"asinat":[0,12,0.0],"azal":[0,39,0.0],"azorah":[0,55,0.0],"birdee":[0,56,0.0],"brida":[0,58,0.0],"cahri":[0,7,0.0],"crisbell":[0,39,0.0],"edalynn":[0,20,0.0],"edianny":[0,7,0.0],"emerlie":[0,13,0.0],"emmara":[0,7,0.0],"evalea":[0,7,0.0],"ganeev":[0,12,0.0],"grayleigh":[0,16,0.0],"halstyn":[5,140,0.4174],"harminee":[0,7,0.0],"honeste":[0,7,0.0],"ivanshi":[0,25,0.0],"jind":[0,120,0.4158],"journnie":[0,7,0.0],"kahlanie":[0,7,0.0],"kelhani":[0,35,0.0],"kimoura":[0,12,0.0],"klahni":[0,12,0.0],"kriva":[0,62,0.0],"leilianna":[0,13,0.0],"loxleigh":[0,18,0.0],"luah":[0,24,0.0],"magizhini":[0,21,0.0],"marlay":[0,7,0.0],"mazelee":[0,64,0.0],"mazilynn":[0,13,0.0],"meraki":[5,7,0.0],"myahna":[0,7,0.0],"mykie":[0,29,0.0],"natti":[0,12,0.0],"nausicaa":[0,29,0.0],"nayella":[0,12,0.0],"norvina":[0,7,0.0],"paizlynn":[0,23,0.0],"penelopee":[0,12,0.0],"phoibe":[0,12,0.0],"praisley":[0,12,0.0],"prinsha":[0,18,0.0],"rahlee":[0,7,0.0],"rhyah":[0,39,0.0],"solome":[0,7,0.0],"syven":[37,48,0.0],"thailah":[0,7,0.0],"yadielis":[0,7,0.0],"zamylah":[0,22,0.0],"ziora":[0,85,0.0],"aaral":[0,11,0.0],"aavani":[0,16,0.0],"adajames":[0,12,0.0],"adalaine":[0,11,0.0],"addiah":[0,17,0.0],"aittana":[0,6,0.0],"akanesi":[0,6,0.0],"alealani":[0,11,0.0],"alimae":[0,6,0.0],"alyamamah":[0,6,0.0],"amayalynn":[0,6,0.0],"amiraa":[0,6,0.0],"arieyah":[0,6,0.0],"arlani":[0,30,0.0],"armeena":[0,6,0.0],"averlyn":[0,13,0.0],"balsam":[0,6,0.0],"camarah":[0,6,0.0],"citrine":[0,28,0.0],"clove":[0,50,0.0],"colibri":[0,22,0.0],"corleigh":[0,6,0.0],"cynniah":[0,15,0.0],"dalyza":[0,36,0.0],"deauri":[0,23,0.0],"dellarose":[0,11,0.0],"delysia":[0,6,0.0],"dira":[0,16,0.0],"dlayah":[0,6,0.0],"dreami":[0,6,0.0],"eloa":[0,111,0.4091],"elonnie":[0,27,0.0],"emiola":[0,11,0.0],"emorii":[0,43,0.0],"erys":[6,29,0.0],"gaella":[0,17,0.0],"ginebra":[0,28,0.0],"gracelen":[0,6,0.0],"gurasees":[0,25,0.0],"gurnaz":[0,29,0.0],"harleyrae":[0,6,0.0],"heavenn":[0,6,0.0],"iklas":[0,6,0.0],"immaculee":[0,6,0.0],"jailiana":[0,6,0.0],"jalahni":[0,33,0.0],"jazyla":[0,17,0.0],"jovy":[5,26,0.0],"kahory":[0,6,0.0],"kaiari":[0,24,0.0],"kanarie":[0,13,0.0],"kayva":[0,12,0.0],"keilahni":[0,25,0.0],"keilanys":[0,11,0.0],"kind":[0,53,0.0],"kosem":[0,6,0.0],"leilanirose":[0,6,0.0],"lilionna":[0,11,0.0],"lirael":[0,12,0.0],"majestii":[0,17,0.0],"malian":[0,6,0.0],"mariaalice":[0,101,0.4009],"meisa":[0,18,0.0],"meva":[0,16,0.0],"mohani":[0,6,0.0],"moyosore":[0,6,0.0],"nakhari":[19,6,0.0],"nehara":[0,6,0.0],"nitiksha":[0,6,0.0],"niyyah":[0,20,0.0],"novagrace":[0,17,0.0],"nyori":[0,44,0.0],"oshin":[12,11,0.0],"palwasha":[0,11,0.0],"rhyelle":[0,12,0.0],"rivki":[0,6,0.0],"roshna":[0,6,0.0],"sadierose":[0,19,0.0],"sesasi":[0,6,0.0],"shula":[0,6,0.0],"siella":[0,18,0.0],"sirrenity":[0,6,0.0],"siyu":[0,6,0.0],"soluna":[0,35,0.0],"starlie":[0,44,0.0],"sunnah":[0,6,0.0],"survi":[0,6,0.0],"tavayah":[0,12,0.0],"tayiba":[0,6,0.0],"teeda":[0,6,0.0],"tymberlee":[0,6,0.0],"tymberlynn":[0,6,0.0],"tynsleigh":[0,11,0.0],"valhalla":[0,6,0.0],"vayoleth":[0,12,0.0],"winterlynn":[0,6,0.0],"xiamora":[0,35,0.0],"yadvi":[0,6,0.0],"yiseth":[0,53,0.0],"yulianny":[0,23,0.0],"yuyan":[0,6,0.0],"zaada":[0,6,0.0],"zeona":[0,6,0.0],"zhori":[0,6,0.0],"zolani":[0,68,0.0],"zorielle":[0,19,0.0],"aadiya":[0,17,0.0],"aalin":[0,5,0.0],"aaranya":[0,10,0.0],"aathira":[0,16,0.0],"aatikah":[0,5,0.0],"adelani":[0,47,0.0],"adelheide":[0,5,0.0],"ahlaiyah":[0,5,0.0],"ahryah":[0,10,0.0],"ahyoka":[0,26,0.0],"airiella":[0,12,0.0],"ajournei":[0,10,0.0],"ajournie":[0,5,0.0],"akylie":[0,11,0.0],"aleali":[0,28,0.0],"alondyn":[0,5,0.0],"amahle":[0,48,0.0],"amarirose":[0,5,0.0],"ambla":[0,5,0.0],"amima":[0,5,0.0],"ammelia":[0,5,0.0],"amourah":[0,60,0.0],"anaam":[0,5,0.0],"anaile":[0,5,0.0],"anaizah":[0,11,0.0],"analyiah":[0,5,0.0],"aneska":[0,10,0.0],"annakat":[0,5,0.0],"anyrah":[0,11,0.0],"aprilia":[0,5,0.0],"araeyah":[0,24,0.0],"aramani":[0,5,0.0],"aramay":[0,5,0.0],"ariamae":[0,5,0.0],"ariia":[0,10,0.0],"arija":[0,5,0.0],"armyah":[0,5,0.0],"arorah":[0,5,0.0],"arzoyi":[0,124,0.4187],"asanii":[0,5,0.0],"atlys":[32,10,0.0],"atrisa":[0,5,0.0],"attlee":[0,5,0.0],"aurorarose":[0,30,0.0],"aviannie":[0,5,0.0],"ayalguu":[0,5,0.0],"ayonni":[0,12,0.0],"azariella":[0,48,0.0],"azina":[0,26,0.0],"aziylah":[0,5,0.0],"bellarosa":[0,10,0.0],"betiel":[0,10,0.0],"blainey":[0,5,0.0],"blesyn":[0,38,0.0],"braiyah":[0,5,0.0],"bravely":[0,20,0.0],"callaia":[0,5,0.0],"caloni":[0,29,0.0],"carolay":[0,10,0.0],"ceraphina":[0,5,0.0],"charlielynn":[0,5,0.0],"chiyah":[0,5,0.0],"cirel":[0,5,0.0],"dalaiyah":[0,17,0.0],"danneth":[0,10,0.0],"daveyah":[0,5,0.0],"deily":[0,31,0.0],"deka":[0,5,0.0],"delphi":[0,23,0.0],"demeigh":[0,11,0.0],"demyri":[0,5,0.0],"dewa":[0,10,0.0],"dharvi":[0,22,0.0],"dhea":[0,5,0.0],"dreamy":[0,33,0.0],"dria":[0,5,0.0],"driti":[0,30,0.0],"durdona":[0,5,0.0],"ehani":[0,10,0.0],"eile":[0,10,0.0],"eisla":[0,29,0.0],"eislyn":[0,30,0.0],"elahi":[0,84,0.0],"elaiah":[0,12,0.0],"elanii":[0,37,0.0],"elaph":[0,10,0.0],"ellaann":[0,5,0.0],"ellay":[0,5,0.0],"elleyna":[0,5,0.0],"elliejo":[0,34,0.0],"ellieonna":[0,5,0.0],"elorie":[0,39,0.0],"elouisa":[0,26,0.0],"emaza":[0,16,0.0],"emberlea":[0,10,0.0],"embrii":[0,17,0.0],"emiliarose":[0,22,0.0],"emmilyne":[0,5,0.0],"emonei":[0,5,0.0],"emsleigh":[0,5,0.0],"eriifeoluwa":[0,5,0.0],"ethereal":[0,22,0.0],"evabella":[0,5,0.0],"evanshi":[0,24,0.0],"everlygrace":[0,5,0.0],"evielynn":[0,5,0.0],"ezmi":[0,5,0.0],"farishta":[0,26,0.0],"giannys":[0,5,0.0],"gifti":[0,5,0.0],"haadia":[0,5,0.0],"hadalynn":[0,21,0.0],"haezel":[0,15,0.0],"haizlie":[0,5,0.0],"hanay":[0,5,0.0],"hareer":[0,40,0.0],"hasenat":[0,10,0.0],"hattiemae":[0,11,0.0],"haysel":[0,5,0.0],"hermajesty":[0,5,0.0],"hilani":[0,10,0.0],"ibby":[0,5,0.0],"irya":[0,5,0.0],"islie":[0,18,0.0],"itiya":[0,5,0.0],"ivanshika":[0,21,0.0],"ivymae":[0,33,0.0],"izalia":[0,37,0.0],"izaura":[0,5,0.0],"izla":[0,38,0.0],"jadagrace":[0,5,0.0],"jaderose":[0,5,0.0],"jaelanii":[0,10,0.0],"jailoni":[0,37,0.0],"jaislynn":[0,5,0.0],"jalai":[0,27,0.0],"janovah":[0,27,0.0],"jaylanee":[0,12,0.0],"jazayla":[0,15,0.0],"jensi":[0,5,0.0],"jeswitha":[0,5,0.0],"jhournei":[0,5,0.0],"jiavonna":[0,5,0.0],"jnayah":[0,5,0.0],"joali":[0,10,0.0],"justicee":[0,5,0.0],"jystice":[0,5,0.0],"kaimora":[0,5,0.0],"kaislie":[0,5,0.0],"kalees":[0,5,0.0],"katalinna":[0,5,0.0],"kaviyah":[0,5,0.0],"kaycei":[0,5,0.0],"keevah":[0,16,0.0],"keihlani":[0,36,0.0],"kelanni":[0,11,0.0],"kerielle":[0,5,0.0],"keylianiz":[0,5,0.0],"khalanie":[0,18,0.0],"khalanii":[0,27,0.0],"khalyse":[0,5,0.0],"kharie":[7,5,0.0],"khavia":[0,5,0.0],"khlaya":[0,5,0.0],"khyliah":[0,5,0.0],"killari":[0,10,0.0],"kiloni":[0,10,0.0],"kinari":[0,5,0.0],"knori":[0,27,0.0],"kotoha":[0,5,0.0],"kourage":[23,21,0.0],"kovah":[5,5,0.0],"kyella":[0,5,0.0],"kyraa":[0,5,0.0],"lacelynn":[0,5,0.0],"ladi":[0,5,0.0],"laikley":[0,5,0.0],"lanamae":[0,5,0.0],"lava":[0,5,0.0],"laviah":[0,5,0.0],"legacey":[0,17,0.0],"lenash":[0,17,0.0],"levanna":[0,11,0.0],"lianeth":[0,5,0.0],"liby":[0,10,0.0],"liliyan":[0,5,0.0],"liviann":[0,5,0.0],"livienne":[0,23,0.0],"loanny":[0,5,0.0],"lohany":[0,10,0.0],"lunella":[0,16,0.0],"maddelin":[0,5,0.0],"madizon":[0,5,0.0],"maelahni":[0,5,0.0],"mahaa":[0,5,0.0],"maian":[0,5,0.0],"maimunah":[0,21,0.0],"manara":[0,5,0.0],"margaery":[0,10,0.0],"maxlyn":[0,22,0.0],"mayleth":[0,11,0.0],"mayloni":[0,5,0.0],"mayzlee":[0,27,0.0],"miliyana":[0,5,0.0],"millina":[0,5,0.0],"myomi":[0,29,0.0],"naella":[0,16,0.0],"nakova":[0,10,0.0],"nane":[0,10,0.0],"natiri":[0,5,0.0],"nawa":[0,5,0.0],"nelinha":[0,11,0.0],"nevalyn":[0,5,0.0],"nevi":[0,11,0.0],"nevie":[0,5,0.0],"nhien":[0,5,0.0],"niaa":[0,5,0.0],"nivisha":[0,36,0.0],"novarose":[0,47,0.0],"nyeelah":[0,5,0.0],"nylaiah":[0,5,0.0],"oceann":[13,48,0.0],"onice":[0,5,0.0],"paisliegh":[0,5,0.0],"palace":[0,28,0.0],"parizay":[0,5,0.0],"pavika":[0,11,0.0],"paxtynn":[0,5,0.0],"perola":[0,23,0.0],"primm":[0,5,0.0],"promysse":[0,10,0.0],"queensley":[0,5,0.0],"raani":[0,5,0.0],"raella":[0,23,0.0],"rahmatullah":[11,5,0.0],"rehat":[0,10,0.0],"reighlee":[0,5,0.0],"remidee":[0,5,0.0],"roah":[0,12,0.0],"romely":[0,10,0.0],"rousse":[0,20,0.0],"rozaya":[0,5,0.0],"ryinn":[0,5,0.0],"sadiejane":[0,5,0.0],"salora":[0,5,0.0],"sarelle":[0,5,0.0],"sariaya":[0,5,0.0],"savianna":[0,5,0.0],"sekhani":[56,5,0.0],"senua":[0,32,0.0],"shirina":[0,10,0.0],"skyemarie":[0,5,0.0],"solvei":[0,21,0.0],"sulem":[0,5,0.0],"sunai":[0,5,0.0],"sylvee":[0,47,0.0],"taanvi":[0,5,0.0],"taloni":[0,12,0.0],"tehzeeb":[0,5,0.0],"thanvika":[0,48,0.0],"tirtza":[0,5,0.0],"treazzure":[0,5,0.0],"truee":[6,28,0.0],"truvy":[0,30,0.0],"tyari":[17,17,0.0],"tzuri":[0,5,0.0],"uwase":[0,31,0.0],"vaela":[0,48,0.0],"vallentina":[0,5,0.0],"valyria":[0,16,0.0],"vanadey":[0,5,0.0],"vedya":[0,10,0.0],"vintage":[0,10,0.0],"viridian":[10,33,0.0],"vyomi":[0,5,0.0],"vysion":[0,5,0.0],"wailynn":[0,10,0.0],"winnter":[0,5,0.0],"wrylie":[0,10,0.0],"wrynlee":[0,152,0.4364],"wuraola":[0,12,0.0],"xailynn":[0,10,0.0],"xalynn":[0,5,0.0],"xiyan":[0,10,0.0],"xora":[0,56,0.0],"yachy":[0,28,0.0],"yahra":[0,31,0.0],"yahri":[13,65,0.0],"yaletzi":[0,16,0.0],"yaliah":[0,18,0.0],"zaleya":[0,39,0.0],"zamiyrah":[0,5,0.0],"zavaya":[0,37,0.0],"zeliah":[0,10,0.0],"zemi":[7,20,0.0],"zephyrine":[0,5,0.0],"zhalia":[0,5,0.0],"zhenya":[0,10,0.0],"zhiyi":[0,5,0.0],"ziamara":[0,12,0.0],"zimmal":[0,5,0.0],"ziyani":[0,11,0.0],"zoeyrose":[0,5,0.0],"zolana":[0,22,0.0],"zuhri":[0,32,0.0],"zuni":[0,31,0.0],"zurah":[0,11,0.0],"armias":[223,0,0.4697],"izhaan":[381,0,0.5162],"jsan":[42,0,0.0],"jaiari":[42,0,0.0],"ripp":[547,0,0.5476],"jardani":[164,5,0.4324],"iskender":[27,0,0.0],"kamiri":[125,51,0.319],"siar":[67,0,0.0],"zaxai":[19,0,0.0],"emias":[77,0,0.0],"finan":[309,0,0.498],"kario":[65,0,0.0],"saire":[64,0,0.0],"ermais":[17,0,0.0],"icon":[26,0,0.0],"kyroh":[34,0,0.0],"rishiv":[118,0,0.4144],"skender":[11,0,0.0],"viansh":[39,0,0.0],"killua":[104,0,0.4034],"mihaan":[59,0,0.0],"vivansh":[31,0,0.0],"acre":[122,0,0.4173],"ahmias":[58,0,0.0],"eneko":[43,0,0.0],"floki":[33,0,0.0],"jakaii":[29,0,0.0],"jyri":[9,0,0.0],"kodak":[32,0,0.0],"malix":[15,0,0.0],"rah":[36,0,0.0],"sirkingston":[9,0,0.0],"tavior":[9,0,0.0],"viraansh":[15,0,0.0],"xakai":[47,0,0.0],"zyer":[33,0,0.0],"action":[33,0,0.0],"acyn":[69,0,0.0],"aesyn":[8,0,0.0],"akaiden":[8,0,0.0],"amazi":[159,19,0.402],"amyis":[8,0,0.0],"bronxx":[51,5,0.0],"casher":[18,0,0.0],"dalex":[57,0,0.0],"dubai":[13,0,0.0],"ermyas":[15,0,0.0],"gurbaaj":[8,0,0.0],"hanzala":[37,0,0.0],"huxten":[38,0,0.0],"jabal":[62,0,0.0],"jahsiel":[52,0,0.0],"jayari":[13,0,0.0],"jermias":[22,0,0.0],"jiyansh":[55,0,0.0],"kaiyo":[27,0,0.0],"khasai":[31,0,0.0],"kiash":[8,0,0.0],"lennoxx":[25,0,0.0],"lowsan":[35,0,0.0],"magizhan":[21,0,0.0],"night":[13,0,0.0],"nyir":[52,0,0.0],"odonis":[17,0,0.0],"phor":[58,0,0.0],"prestige":[8,0,0.0],"ruaan":[31,0,0.0],"sanish":[29,0,0.0],"sevn":[83,7,0.0],"silem":[15,0,0.0],"tamen":[55,0,0.0],"yuvaansh":[20,0,0.0],"zakani":[40,0,0.0],"zyeon":[14,0,0.0],"aaryansh":[33,0,0.0],"aashvik":[13,0,0.0],"adelso":[23,0,0.0],"adyah":[14,0,0.0],"ahkir":[14,0,0.0],"atli":[17,6,0.0],"audemar":[31,0,0.0],"azario":[35,0,0.0],"beckhym":[7,0,0.0],"caleo":[32,0,0.0],"dacre":[72,0,0.0],"dilsher":[36,0,0.0],"eastwood":[7,0,0.0],"escanor":[68,0,0.0],"eson":[12,0,0.0],"feivel":[17,0,0.0],"gurbaj":[21,0,0.0],"gurnav":[7,0,0.0],"henryjames":[7,0,0.0],"huk":[39,0,0.0],"irmias":[7,0,0.0],"jakaidyn":[7,0,0.0],"jakarter":[7,0,0.0],"jhacari":[196,0,0.4585],"jhakari":[79,0,0.0],"jrae":[12,0,0.0],"jyrie":[25,0,0.0],"kasriel":[15,0,0.0],"kaydem":[50,0,0.0],"khasen":[14,0,0.0],"khyland":[18,0,0.0],"kudus":[35,0,0.0],"kyelin":[12,0,0.0],"lucario":[34,0,0.0],"manzi":[13,0,0.0],"matais":[7,0,0.0],"nyyear":[153,0,0.4369],"parkerjames":[7,0,0.0],"ralo":[50,0,0.0],"rhysand":[60,0,0.0],"russo":[24,0,0.0],"sekanii":[12,0,0.0],"siyaan":[12,0,0.0],"syles":[7,0,0.0],"tadgh":[19,0,0.0],"umarjon":[7,0,0.0],"vaayu":[145,0,0.4323],"varro":[22,0,0.0],"vedan":[7,0,0.0],"verse":[34,0,0.0],"wirth":[24,0,0.0],"zakarii":[38,0,0.0],"zekani":[38,0,0.0],"zekari":[28,0,0.0],"zhakai":[13,0,0.0],"zyaan":[18,0,0.0],"aadhan":[23,0,0.0],"acetyn":[43,0,0.0],"adiyat":[16,0,0.0],"aegis":[11,0,0.0],"akeno":[20,0,0.0],"akicita":[16,0,0.0],"aloniab":[11,0,0.0],"alparslan":[27,0,0.0],"amiris":[108,17,0.3623],"arjunram":[6,0,0.0],"armonn":[6,0,0.0],"arsham":[11,0,0.0],"asayah":[26,0,0.0],"atlan":[56,0,0.0],"atum":[19,0,0.0],"ayceon":[17,0,0.0],"benek":[19,0,0.0],"bivan":[27,0,0.0],"brexon":[6,0,0.0],"cactus":[6,0,0.0],"cairen":[11,0,0.0],"classic":[6,0,0.0],"coasten":[6,0,0.0],"cormelo":[6,0,0.0],"davilucca":[24,0,0.0],"dekarri":[29,0,0.0],"dilawar":[11,0,0.0],"dimir":[23,0,0.0],"dries":[6,0,0.0],"eliad":[22,0,0.0],"eliantte":[44,0,0.0],"elios":[67,0,0.0],"emarius":[6,0,0.0],"ermiyas":[6,0,0.0],"giaan":[12,0,0.0],"giam":[20,0,0.0],"gionnis":[6,0,0.0],"graceon":[6,0,0.0],"gurjaap":[23,0,0.0],"hanes":[18,0,0.0],"ibhaan":[12,0,0.0],"ibsa":[6,0,0.0],"ishar":[6,0,0.0],"itachi":[62,0,0.0],"jaiaire":[16,0,0.0],"jakhel":[6,0,0.0],"jaswin":[6,0,0.0],"jehoshaphat":[26,0,0.0],"juddah":[12,0,0.0],"junkai":[11,0,0.0],"kaetochukwu":[6,0,0.0],"kakashi":[31,0,0.0],"kamaro":[12,0,0.0],"kasion":[12,0,0.0],"kazmere":[11,0,0.0],"keahilani":[6,0,0.0],"kenver":[11,0,0.0],"kerwens":[30,0,0.0],"khailan":[17,0,0.0],"khiro":[52,0,0.0],"khoda":[36,0,0.0],"kholson":[23,0,0.0],"kiaansh":[47,0,0.0],"kiaro":[37,0,0.0],"kiza":[23,19,0.0],"kosmas":[6,0,0.0],"kreedyn":[11,0,0.0],"kroi":[82,0,0.0],"kycere":[12,0,0.0],"kyver":[6,0,0.0],"lav":[6,0,0.0],"levias":[6,0,0.0],"lucasalexander":[6,0,0.0],"magilan":[11,0,0.0],"meek":[18,0,0.0],"monel":[6,0,0.0],"mozzy":[49,0,0.0],"neevan":[13,0,0.0],"nikoa":[33,0,0.0],"nishav":[6,0,0.0],"nyere":[6,0,0.0],"pauly":[11,0,0.0],"prabh":[6,0,0.0],"recker":[6,0,0.0],"redeem":[6,0,0.0],"reeyansh":[19,0,0.0],"rowdey":[20,0,0.0],"samueljames":[6,0,0.0],"shahwaiz":[6,0,0.0],"sinsere":[6,0,0.0],"smyth":[6,0,0.0],"solis":[30,16,0.0],"spade":[48,0,0.0],"swarnim":[12,0,0.0],"syx":[88,25,0.3198],"taymir":[27,0,0.0],"tayyib":[11,0,0.0],"thorben":[12,0,0.0],"tolson":[26,0,0.0],"tui":[16,0,0.0],"vaidik":[6,0,0.0],"wyld":[25,0,0.0],"yahzir":[19,0,0.0],"yog":[6,0,0.0],"yosohn":[99,0,0.0],"zabir":[25,0,0.0],"zaiel":[56,0,0.0],"zar":[6,0,0.0],"zaydrien":[6,0,0.0],"zedd":[11,0,0.0],"zeremiah":[20,0,0.0],"aadav":[24,0,0.0],"aasher":[5,0,0.0],"addax":[10,0,0.0],"advaithreddy":[25,0,0.0],"aermias":[10,0,0.0],"agampreet":[5,0,0.0],"ahmeen":[15,0,0.0],"ahsad":[15,0,0.0],"ahzaab":[5,0,0.0],"aliyar":[57,0,0.0],"amahj":[5,0,0.0],"amilliano":[29,0,0.0],"amiyus":[5,0,0.0],"ananiya":[5,0,0.0],"andr":[5,0,0.0],"anyel":[15,0,0.0],"archangel":[17,0,0.0],"archy":[24,0,0.0],"aros":[5,0,0.0],"arshak":[5,0,0.0],"artreus":[10,0,0.0],"asiris":[5,0,0.0],"atiq":[5,0,0.0],"atreaus":[5,0,0.0],"audun":[5,0,0.0],"auley":[17,0,0.0],"avyaansh":[46,0,0.0],"ax":[5,0,0.0],"azayden":[10,0,0.0],"azius":[5,0,0.0],"baustin":[5,0,0.0],"bearen":[5,0,0.0],"bellomy":[11,0,0.0],"bivaan":[17,0,0.0],"blitz":[5,0,0.0],"bohdee":[5,0,0.0],"brisan":[5,0,0.0],"brixxton":[30,0,0.0],"bronny":[16,0,0.0],"candor":[5,0,0.0],"cartyr":[5,0,0.0],"caydien":[5,0,0.0],"cheikhahmadou":[10,0,0.0],"chimebuka":[5,0,0.0],"cinco":[27,0,0.0],"coah":[21,0,0.0],"cooke":[5,0,0.0],"cuban":[20,0,0.0],"currency":[18,0,0.0],"daario":[11,0,0.0],"danico":[5,0,0.0],"dcari":[5,0,0.0],"deekan":[5,0,0.0],"delian":[5,0,0.0],"demarii":[13,0,0.0],"dhevan":[5,0,0.0],"dhruvah":[5,0,0.0],"djoser":[5,0,0.0],"dracarys":[21,0,0.0],"draison":[5,0,0.0],"drayko":[16,0,0.0],"duece":[10,0,0.0],"eizik":[5,0,0.0],"eniel":[18,0,0.0],"erkhes":[5,0,0.0],"ethiel":[5,0,0.0],"fabiel":[5,0,0.0],"fincher":[5,0,0.0],"finnic":[16,0,0.0],"graysun":[12,0,0.0],"gursahib":[17,0,0.0],"haikeem":[5,0,0.0],"heir":[62,0,0.0],"henric":[24,0,0.0],"hetansh":[15,0,0.0],"hiero":[10,0,0.0],"howl":[53,0,0.0],"icaro":[5,0,0.0],"ilie":[5,0,0.0],"ilyane":[5,0,0.0],"iranzi":[5,0,0.0],"islom":[5,0,0.0],"ivansh":[20,0,0.0],"jadonis":[21,0,0.0],"jador":[5,5,0.0],"jahar":[5,0,0.0],"jahvonni":[5,0,0.0],"jakobii":[5,0,0.0],"jameshenry":[5,0,0.0],"jaxdyn":[10,0,0.0],"jaxxsyn":[5,0,0.0],"jaycyn":[5,0,0.0],"jaydriel":[5,0,0.0],"jehsiah":[5,0,0.0],"jehziel":[5,0,0.0],"jerahmeel":[5,0,0.0],"jesed":[5,0,0.0],"jhaleel":[5,0,0.0],"jiajun":[5,0,0.0],"jiale":[5,0,0.0],"jibraeel":[5,0,0.0],"jiel":[5,0,0.0],"jimir":[5,0,0.0],"joiner":[5,0,0.0],"jondriel":[5,0,0.0],"jonziel":[11,0,0.0],"josuan":[5,0,0.0],"kacion":[30,0,0.0],"kadiel":[5,0,0.0],"kaivalya":[10,0,0.0],"kaize":[10,0,0.0],"kalais":[5,0,0.0],"kamp":[46,0,0.0],"kasian":[31,0,0.0],"kassious":[5,0,0.0],"kawelo":[5,0,0.0],"kazee":[5,0,0.0],"keilian":[5,0,0.0],"kelil":[5,0,0.0],"kendrixx":[49,0,0.0],"kendryx":[11,0,0.0],"kevani":[5,0,0.0],"khaire":[31,0,0.0],"khelil":[5,0,0.0],"khosen":[34,0,0.0],"khylo":[103,0,0.4026],"khyzen":[47,0,0.0],"killyan":[11,0,0.0],"kiylen":[10,0,0.0],"koast":[61,10,0.0],"koleston":[11,0,0.0],"kommon":[5,0,0.0],"konway":[12,0,0.0],"kovyn":[10,0,0.0],"kreedon":[10,0,0.0],"kurrency":[40,5,0.0],"kuzma":[5,0,0.0],"kyam":[13,0,0.0],"kyanite":[5,0,0.0],"kyngstin":[5,0,0.0],"lakeson":[5,0,0.0],"legand":[50,0,0.0],"lenier":[52,0,0.0],"liander":[10,0,0.0],"lihan":[18,0,0.0],"lukai":[19,0,0.0],"maijer":[5,0,0.0],"maji":[17,0,0.0],"malakaii":[5,0,0.0],"marceon":[5,0,0.0],"masonalexander":[5,0,0.0],"mav":[57,0,0.0],"mechy":[10,0,0.0],"mello":[64,10,0.0],"mergen":[11,0,0.0],"micaias":[20,0,0.0],"mighty":[22,0,0.0],"mikyas":[5,0,0.0],"milkias":[11,0,0.0],"mirvaan":[5,0,0.0],"moshie":[5,0,0.0],"muhammadjon":[59,0,0.0],"muhammadmusa":[32,0,0.0],"muhammadumar":[46,0,0.0],"muhammadwali":[5,0,0.0],"mutty":[5,0,0.0],"muzaffar":[5,0,0.0],"mykyng":[5,0,0.0],"naataanii":[5,0,0.0],"nahlij":[18,0,0.0],"nataanii":[17,0,0.0],"negun":[5,0,0.0],"nickoy":[10,0,0.0],"nihansh":[21,0,0.0],"nishaad":[5,0,0.0],"niyar":[5,0,0.0],"noahray":[11,0,0.0],"nykai":[5,0,0.0],"oladeji":[5,0,0.0],"olasubomi":[5,0,0.0],"ozai":[36,0,0.0],"ozwald":[28,0,0.0],"perceval":[5,0,0.0],"qairo":[17,0,0.0],"qari":[10,0,0.0],"ragnarok":[5,0,0.0],"raiyaan":[5,0,0.0],"ransh":[15,0,0.0],"region":[29,0,0.0],"rezin":[5,0,0.0],"rilian":[5,0,0.0],"rockefeller":[5,0,0.0],"rooster":[28,0,0.0],"rousseau":[5,0,0.0],"rozae":[5,0,0.0],"sairus":[5,0,0.0],"saiyon":[15,0,0.0],"sakhani":[5,0,0.0],"samirjon":[5,0,0.0],"saqr":[15,0,0.0],"sargis":[17,0,0.0],"shahm":[27,0,0.0],"shahveer":[30,0,0.0],"shazier":[5,0,0.0],"shehbaaz":[49,0,0.0],"siaire":[57,5,0.0],"simir":[20,0,0.0],"soulayman":[5,0,0.0],"sreeyansh":[5,0,0.0],"srianshreddy":[5,0,0.0],"sultaan":[15,0,0.0],"syllas":[11,0,0.0],"tahjere":[5,0,0.0],"tejansh":[5,0,0.0],"tobiaz":[10,0,0.0],"towns":[5,0,0.0],"tramir":[5,0,0.0],"trishaan":[44,0,0.0],"tuli":[16,5,0.0],"ullr":[5,0,0.0],"uraz":[14,0,0.0],"valak":[5,0,0.0],"valentim":[11,0,0.0],"valiente":[10,0,0.0],"versai":[62,5,0.0],"vukan":[14,0,0.0],"watsyn":[5,0,0.0],"wattson":[51,0,0.0],"wilondja":[23,0,0.0],"wittman":[5,0,0.0],"xaydrian":[5,0,0.0],"xeven":[10,0,0.0],"yajur":[5,0,0.0],"yetzel":[45,0,0.0],"yonasan":[5,0,0.0],"yy":[5,0,0.0],"zahvier":[10,0,0.0],"zakiy":[10,0,0.0],"zavontae":[5,0,0.0],"ziayre":[5,0,0.0],"zio":[5,0,0.0],"zire":[5,0,0.0],"zoser":[5,0,0.0],"zurain":[10,0,0.0],"zyn":[29,25,0.0],"dalett":[0,640,0.5612],"cennet":[0,202,0.4611],"ulanni":[0,99,0.0],"souline":[0,313,0.4991],"amavi":[30,73,0.2853],"ayzal":[0,496,0.5391],"brixleigh":[0,56,0.0],"kazleigh":[0,57,0.0],"yoatzi":[0,100,0.4],"morwenna":[0,31,0.0],"siaani":[0,16,0.0],"zeynet":[0,47,0.0],"kouvr":[5,84,0.0],"marlani":[0,65,0.0],"marsali":[0,99,0.0],"nahbi":[0,17,0.0],"sanova":[0,77,0.0],"xari":[0,42,0.0],"ahinoa":[0,53,0.0],"danileigh":[0,32,0.0],"zailani":[0,63,0.0],"zepplyn":[6,28,0.0],"zohemy":[0,84,0.0],"blessynn":[0,54,0.0],"darlett":[0,50,0.0],"kearri":[0,10,0.0],"zeyneth":[0,50,0.0],"ailahni":[0,16,0.0],"anayka":[0,22,0.0],"izley":[0,15,0.0],"kayonni":[0,44,0.0],"keyomi":[0,64,0.0],"khione":[0,34,0.0],"kovie":[7,28,0.0],"leianni":[0,25,0.0],"raila":[0,14,0.0],"soulene":[0,67,0.0],"yariyah":[0,28,0.0],"yennefer":[0,44,0.0],"adaliya":[0,37,0.0],"almaas":[0,15,0.0],"amayalee":[0,13,0.0],"anavah":[0,32,0.0],"asel":[0,31,0.0],"breyleigh":[0,16,0.0],"caislee":[0,8,0.0],"chozynn":[5,28,0.0],"dreame":[0,41,0.0],"ezriella":[0,21,0.0],"haizyl":[0,13,0.0],"ilwaad":[0,25,0.0],"khelsi":[0,8,0.0],"kridha":[0,63,0.0],"leviana":[0,8,0.0],"nayrobi":[0,26,0.0],"novalynne":[0,13,0.0],"ozlyn":[0,25,0.0],"riverlin":[0,22,0.0],"sailey":[0,8,0.0],"sareyah":[0,14,0.0],"scarrlett":[0,8,0.0],"skailynn":[0,30,0.0],"snoh":[0,147,0.4335],"vallolet":[0,52,0.0],"vriha":[0,32,0.0],"zalaia":[0,24,0.0],"aidette":[0,31,0.0],"alianiz":[0,7,0.0],"arinas":[0,19,0.0],"arzoe":[0,32,0.0],"azaiya":[0,33,0.0],"azala":[0,7,0.0],"banksy":[5,26,0.0],"bareen":[0,43,0.0],"ellori":[0,29,0.0],"elyra":[0,21,0.0],"esmerae":[0,41,0.0],"evermore":[0,41,0.0],"fenan":[0,14,0.0],"heizel":[0,25,0.0],"italeigh":[0,22,0.0],"ivyrae":[0,7,0.0],"jaycei":[0,7,0.0],"jesaaelys":[0,22,0.0],"kalimarie":[0,7,0.0],"kenlani":[0,12,0.0],"knaomi":[0,13,0.0],"levvy":[5,12,0.0],"lianie":[0,7,0.0],"loxlee":[0,24,0.0],"lucyjane":[0,7,0.0],"maxlee":[0,12,0.0],"mazekeen":[0,7,0.0],"miloni":[0,25,0.0],"nahvi":[0,12,0.0],"poema":[0,17,0.0],"reejh":[0,27,0.0],"rehtaeh":[0,7,0.0],"rhenley":[0,30,0.0],"rouse":[0,43,0.0],"rubyjean":[0,17,0.0],"tiwalola":[0,7,0.0],"valerin":[0,18,0.0],"xorri":[0,14,0.0],"yulanni":[0,7,0.0],"zhurie":[0,7,0.0],"zoeth":[0,17,0.0],"adajane":[0,19,0.0],"aehlani":[0,6,0.0],"ahadi":[0,6,0.0],"alenny":[0,11,0.0],"alianni":[0,23,0.0],"aljawharah":[0,6,0.0],"allahni":[0,15,0.0],"allaia":[0,6,0.0],"almila":[0,6,0.0],"amariella":[0,13,0.0],"aminaa":[0,6,0.0],"amoraa":[0,6,0.0],"amynah":[0,6,0.0],"analaia":[0,40,0.0],"analeiya":[0,6,0.0],"anavrin":[0,18,0.0],"anha":[0,19,0.0],"aragsan":[0,6,0.0],"athieng":[0,6,0.0],"auslynn":[0,6,0.0],"avanii":[0,38,0.0],"avarenee":[0,6,0.0],"avoni":[0,38,0.0],"avyannah":[0,12,0.0],"aykiz":[0,6,0.0],"aylahni":[0,20,0.0],"aytanna":[0,18,0.0],"aythana":[0,49,0.0],"azeena":[0,28,0.0],"becklee":[0,18,0.0],"birdi":[0,12,0.0],"braxlynn":[0,16,0.0],"brielly":[0,6,0.0],"brookllyn":[0,6,0.0],"charliejo":[0,17,0.0],"cisne":[0,26,0.0],"claudeth":[0,6,0.0],"dalayiah":[0,6,0.0],"derrielle":[0,6,0.0],"dreme":[0,21,0.0],"dyor":[0,12,0.0],"eitana":[0,28,0.0],"elettra":[0,6,0.0],"eliada":[0,12,0.0],"elladee":[0,31,0.0],"ellyannah":[0,11,0.0],"elynnor":[0,6,0.0],"eveliina":[0,6,0.0],"ezrielle":[0,12,0.0],"fraeya":[0,6,0.0],"geanni":[0,6,0.0],"greya":[0,12,0.0],"haizlyn":[0,27,0.0],"historia":[0,69,0.0],"ilianys":[0,6,0.0],"jailany":[0,48,0.0],"jalanii":[0,39,0.0],"jaydaa":[0,6,0.0],"josalie":[0,6,0.0],"joudia":[0,30,0.0],"kaleesia":[0,55,0.0],"kaliza":[0,6,0.0],"kameila":[0,23,0.0],"kaylianis":[0,16,0.0],"kenzii":[0,6,0.0],"keyori":[8,32,0.0],"khapri":[0,12,0.0],"kinzlei":[0,6,0.0],"larajean":[0,6,0.0],"leyra":[0,6,0.0],"luani":[0,27,0.0],"lunari":[0,6,0.0],"lusma":[0,6,0.0],"maevelyn":[0,45,0.0],"makka":[0,6,0.0],"marais":[0,6,0.0],"mayahuel":[0,18,0.0],"maybri":[0,6,0.0],"mealla":[0,24,0.0],"mehrish":[0,32,0.0],"minnow":[0,24,0.0],"moxi":[0,6,0.0],"nafanua":[0,6,0.0],"nasara":[0,6,0.0],"nazara":[0,25,0.0],"nooreh":[0,21,0.0],"novasky":[0,11,0.0],"novayah":[0,6,0.0],"noviah":[0,6,0.0],"nyxie":[0,29,0.0],"raegynn":[0,6,0.0],"rayleena":[0,6,0.0],"rhettlynn":[0,15,0.0],"rivi":[7,67,0.0],"riyasha":[0,21,0.0],"romeli":[0,19,0.0],"saavya":[0,6,0.0],"solanna":[0,24,0.0],"solvej":[0,11,0.0],"tailani":[0,31,0.0],"tieghan":[0,46,0.0],"wrinley":[0,32,0.0],"wyomi":[0,6,0.0],"xaya":[0,19,0.0],"xila":[0,20,0.0],"yomii":[0,70,0.0],"zaianna":[0,6,0.0],"zalilah":[0,33,0.0],"zaneri":[0,13,0.0],"zhurii":[0,13,0.0],"zhyla":[0,19,0.0],"zirachi":[0,34,0.0],"zorii":[0,17,0.0],"zylani":[0,50,0.0],"aahlani":[0,5,0.0],"aaleia":[0,10,0.0],"aamara":[0,12,0.0],"adahlynn":[0,5,0.0],"adalet":[0,189,0.4553],"adalynnrose":[0,5,0.0],"adassah":[0,22,0.0],"advaitha":[0,17,0.0],"aeda":[0,5,0.0],"aelina":[0,23,0.0],"afnaan":[0,17,0.0],"afraa":[0,5,0.0],"ahlonni":[0,5,0.0],"ahzani":[0,12,0.0],"ahzara":[0,17,0.0],"akarri":[20,5,0.0],"alaiaa":[0,5,0.0],"alaiarose":[0,5,0.0],"aleiana":[0,5,0.0],"alerie":[0,5,0.0],"alyaanah":[0,5,0.0],"amadia":[0,5,0.0],"amaleigh":[0,5,0.0],"amaralee":[0,5,0.0],"ameliajoy":[0,5,0.0],"amorea":[0,5,0.0],"anami":[0,22,0.0],"anareidy":[0,5,0.0],"aneles":[0,10,0.0],"annaiah":[0,5,0.0],"anovia":[0,21,0.0],"anuri":[0,19,0.0],"anyx":[27,10,0.0],"arani":[0,5,0.0],"areyna":[0,5,0.0],"ariael":[0,5,0.0],"ariahlynn":[0,5,0.0],"arilee":[0,5,0.0],"arirose":[0,16,0.0],"ariyaah":[0,5,0.0],"arreis":[0,5,0.0],"ascia":[0,5,0.0],"astelle":[0,18,0.0],"asu":[0,5,0.0],"atiye":[0,16,0.0],"aubriell":[0,5,0.0],"aunestee":[0,5,0.0],"aurah":[0,5,0.0],"autumnmarie":[0,5,0.0],"avareign":[0,5,0.0],"aveia":[0,16,0.0],"avesta":[0,5,0.0],"avianny":[0,5,0.0],"avonnie":[0,5,0.0],"aylarose":[0,15,0.0],"ayraa":[0,5,0.0],"ayu":[0,5,0.0],"azalayah":[0,33,0.0],"azhuri":[0,35,0.0],"azrin":[0,10,0.0],"azu":[0,5,0.0],"azurii":[0,30,0.0],"azzura":[0,17,0.0],"balencia":[0,10,0.0],"bexly":[0,5,0.0],"bexlynn":[0,16,0.0],"boudica":[0,5,0.0],"briayla":[0,12,0.0],"brinnleigh":[0,11,0.0],"brinzlee":[0,5,0.0],"caelani":[0,5,0.0],"caislyn":[0,5,0.0],"dalette":[0,51,0.0],"daleyla":[0,10,0.0],"dalialah":[0,5,0.0],"dalit":[0,5,0.0],"damora":[0,15,0.0],"deior":[10,12,0.0],"deor":[24,10,0.0],"deyonni":[0,5,0.0],"diosa":[0,24,0.0],"diyara":[0,10,0.0],"dreamie":[0,5,0.0],"dreka":[0,16,0.0],"ehlany":[0,5,0.0],"eka":[0,18,0.0],"elianarose":[0,5,0.0],"elleia":[0,5,0.0],"elleonna":[0,5,0.0],"ellisandra":[0,5,0.0],"ellymay":[0,5,0.0],"elshaday":[0,5,0.0],"embla":[0,13,0.0],"emerley":[0,18,0.0],"eram":[0,5,0.0],"eska":[0,10,0.0],"eveangeline":[0,10,0.0],"ezarah":[0,18,0.0],"freiya":[0,5,0.0],"gaurangi":[0,5,0.0],"ghalya":[0,5,0.0],"giaa":[0,5,0.0],"giannalee":[0,5,0.0],"girasol":[0,44,0.0],"giyanni":[0,5,0.0],"gravity":[0,10,0.0],"greycie":[0,5,0.0],"gwynivere":[0,5,0.0],"haizlynn":[0,35,0.0],"hamta":[0,10,0.0],"hanani":[0,14,0.0],"harnaaz":[0,79,0.0],"harperann":[0,5,0.0],"harperrae":[0,11,0.0],"hatleigh":[0,5,0.0],"havengrace":[0,5,0.0],"hennessi":[0,5,0.0],"hirie":[0,5,0.0],"humairah":[0,20,0.0],"huntlie":[0,11,0.0],"ilyasah":[0,5,0.0],"indyca":[0,5,0.0],"ino":[0,11,0.0],"isely":[0,5,0.0],"ishimwe":[23,27,0.0],"ivyy":[0,5,0.0],"jailanee":[0,5,0.0],"jaionni":[0,23,0.0],"jaiyonna":[0,5,0.0],"jennaly":[0,5,0.0],"jexi":[0,5,0.0],"josiee":[0,11,0.0],"josielys":[0,5,0.0],"jouree":[0,5,0.0],"judeyah":[0,5,0.0],"juilette":[0,5,0.0],"kaelany":[0,19,0.0],"kaeslyn":[0,5,0.0],"kahlanii":[0,15,0.0],"kahlanni":[0,12,0.0],"kahlayah":[0,10,0.0],"kahmaya":[0,5,0.0],"kaiella":[0,10,0.0],"kailanii":[0,37,0.0],"kambrielle":[0,5,0.0],"kamonii":[0,19,0.0],"kanak":[0,5,0.0],"kanary":[0,16,0.0],"kanza":[0,5,0.0],"kayhlani":[0,16,0.0],"kayior":[0,21,0.0],"khalayla":[0,5,0.0],"khataleya":[0,5,0.0],"kirklynn":[0,5,0.0],"klanii":[0,32,0.0],"kreation":[0,10,0.0],"kudrat":[0,35,0.0],"kymanii":[0,5,0.0],"kyoni":[0,16,0.0],"kyzlee":[0,5,0.0],"laidyn":[0,5,0.0],"lailahni":[0,5,0.0],"lakshitha":[0,5,0.0],"lavish":[5,11,0.0],"legaciee":[0,5,0.0],"lianis":[0,18,0.0],"livv":[0,10,0.0],"lovee":[0,20,0.0],"loveen":[0,5,0.0],"loveli":[0,10,0.0],"luciani":[0,5,0.0],"lunaria":[0,44,0.0],"luoyi":[0,10,0.0],"luxlee":[0,15,0.0],"luzmari":[0,5,0.0],"lynndee":[0,5,0.0],"mabri":[0,5,0.0],"maizleigh":[0,5,0.0],"mariale":[0,5,0.0],"mariluna":[0,26,0.0],"mayalynn":[0,5,0.0],"mayliana":[0,5,0.0],"maymun":[0,5,0.0],"mckenzly":[0,5,0.0],"mellodi":[0,5,0.0],"melona":[0,130,0.4228],"miheeka":[0,15,0.0],"milanis":[0,5,0.0],"milann":[0,5,0.0],"miyuri":[0,37,0.0],"moremi":[0,23,0.0],"msgana":[0,11,0.0],"murael":[0,11,0.0],"myoni":[0,15,0.0],"nadifo":[0,5,0.0],"nafissatou":[0,5,0.0],"namaste":[0,5,0.0],"nashad":[0,5,0.0],"navella":[0,5,0.0],"naylet":[0,5,0.0],"nialee":[0,5,0.0],"nichy":[0,5,0.0],"nienna":[0,10,0.0],"nior":[0,21,0.0],"nirvika":[0,32,0.0],"nivrithi":[0,10,0.0],"niyani":[0,25,0.0],"nooriyah":[0,5,0.0],"novalina":[0,18,0.0],"novalis":[0,5,0.0],"novani":[0,31,0.0],"nuzairah":[0,5,0.0],"nyava":[0,45,0.0],"nylahh":[0,5,0.0],"nylai":[0,10,0.0],"nyoki":[0,5,0.0],"nyrareddy":[0,12,0.0],"oaklinn":[0,33,0.0],"olori":[0,25,0.0],"ophira":[0,12,0.0],"oraya":[0,38,0.0],"ovianna":[0,5,0.0],"paesleigh":[0,5,0.0],"prashi":[0,16,0.0],"praylynn":[0,5,0.0],"prunelle":[0,14,0.0],"qiyana":[0,5,0.0],"reeman":[0,5,0.0],"remilee":[0,12,0.0],"remilyn":[0,26,0.0],"revna":[0,53,0.0],"rhettlyn":[0,10,0.0],"rileyrae":[0,11,0.0],"roo":[5,26,0.0],"rosealine":[0,10,0.0],"ruelle":[0,41,0.0],"ryverlynn":[0,11,0.0],"saeda":[0,5,0.0],"saiee":[0,5,0.0],"sarahii":[0,5,0.0],"sarvani":[0,13,0.0],"saule":[0,5,0.0],"scarlitt":[0,5,0.0],"seah":[0,5,0.0],"selaya":[0,10,0.0],"selenah":[0,5,0.0],"shailoh":[0,12,0.0],"shreesha":[0,26,0.0],"siennarose":[0,10,0.0],"sorai":[0,5,0.0],"sosi":[0,16,0.0],"soulana":[0,5,0.0],"sriaadhya":[0,5,0.0],"srinitha":[0,5,0.0],"stiorra":[0,111,0.4091],"summyr":[0,5,0.0],"tahlani":[0,35,0.0],"tenney":[0,5,0.0],"theadosia":[0,35,0.0],"torielle":[0,5,0.0],"tuuli":[0,27,0.0],"tylaiyah":[0,10,0.0],"uriella":[0,30,0.0],"vaelynn":[0,11,0.0],"veada":[0,5,0.0],"vivee":[0,5,0.0],"wyntr":[0,5,0.0],"xharia":[0,5,0.0],"xiomaria":[0,5,0.0],"yarizbeth":[0,11,0.0],"yidis":[0,10,0.0],"yomi":[0,55,0.0],"yris":[0,19,0.0],"zaahira":[0,5,0.0],"zarri":[0,5,0.0],"zeineth":[0,25,0.0],"zenniyah":[0,5,0.0],"zibiah":[0,5,0.0],"zuraya":[0,5,0.0],"zyari":[0,36,0.0],"zyarie":[23,5,0.0],"aarnik":[69,0,0.0],"itzan":[55,0,0.0],"jahkor":[46,0,0.0],"krown":[34,0,0.0],"azhir":[29,0,0.0],"deluka":[36,0,0.0],"ezrin":[34,0,0.0],"hardyn":[71,0,0.0],"baaz":[62,0,0.0],"bexten":[33,0,0.0],"hachalu":[11,0,0.0],"natael":[47,0,0.0],"naujour":[85,0,0.0],"xzayveon":[18,0,0.0],"gaith":[28,0,0.0],"givenchy":[28,0,0.0],"josohn":[47,0,0.0],"naledge":[20,0,0.0],"raddix":[31,0,0.0],"tormund":[10,0,0.0],"aazir":[36,0,0.0],"ashriel":[21,0,0.0],"dharshik":[9,0,0.0],"fjord":[15,0,0.0],"kamazi":[155,7,0.4228],"legin":[9,0,0.0],"masten":[27,0,0.0],"miransh":[16,0,0.0],"solaire":[38,20,0.0],"yeiko":[34,0,0.0],"zaheed":[9,0,0.0],"zaviyan":[47,0,0.0],"abaddon":[19,0,0.0],"adhiyan":[31,0,0.0],"dakyrie":[32,0,0.0],"ellion":[20,0,0.0],"hirwa":[30,0,0.0],"jakor":[14,0,0.0],"keyleth":[28,8,0.0],"kyndrix":[22,0,0.0],"levius":[17,0,0.0],"mazir":[30,0,0.0],"melson":[8,0,0.0],"minkah":[20,0,0.0],"mozzi":[20,0,0.0],"ocyrus":[19,0,0.0],"ridham":[8,0,0.0],"sankara":[8,0,0.0],"sonder":[79,0,0.0],"tremani":[38,0,0.0],"xamari":[41,6,0.0],"zorin":[16,0,0.0],"abubakir":[7,0,0.0],"acee":[24,0,0.0],"aegan":[12,0,0.0],"ahlegend":[12,0,0.0],"ansem":[13,0,0.0],"athiyan":[29,0,0.0],"ayyad":[7,0,0.0],"azias":[60,0,0.0],"balaj":[12,0,0.0],"barley":[19,0,0.0],"basin":[13,0,0.0],"braylnn":[12,0,0.0],"brinx":[21,0,0.0],"bryx":[14,0,0.0],"eleon":[27,0,0.0],"ellio":[39,0,0.0],"epik":[32,0,0.0],"eremias":[12,0,0.0],"frabian":[30,0,0.0],"francky":[7,0,0.0],"hezekai":[34,0,0.0],"kaelo":[25,0,0.0],"karaun":[7,0,0.0],"kenobi":[53,0,0.0],"khubaib":[7,0,0.0],"kyiro":[21,0,0.0],"kyloh":[47,0,0.0],"kyngstyn":[12,0,0.0],"lemeir":[7,0,0.0],"matija":[17,0,0.0],"meelo":[62,0,0.0],"moncler":[17,0,0.0],"musawer":[7,0,0.0],"nipsey":[7,0,0.0],"obidiah":[16,0,0.0],"rextyn":[25,0,0.0],"sahaaj":[7,0,0.0],"shipley":[7,0,0.0],"theodorus":[30,0,0.0],"trhue":[18,11,0.0],"truss":[18,0,0.0],"wyse":[15,0,0.0],"xahir":[13,0,0.0],"yahkeem":[13,0,0.0],"yefferson":[23,0,0.0],"aashrit":[13,0,0.0],"abhyant":[39,0,0.0],"abrams":[6,0,0.0],"adhiran":[43,0,0.0],"adolin":[44,0,0.0],"ahryan":[11,0,0.0],"amaius":[11,0,0.0],"amiaz":[12,0,0.0],"archibaldo":[40,0,0.0],"archis":[6,0,0.0],"arez":[24,0,0.0],"aristos":[29,0,0.0],"atharvreddy":[23,0,0.0],"bearrett":[6,0,0.0],"belamy":[27,5,0.0],"bexon":[6,0,0.0],"bumi":[6,0,0.0],"canai":[6,0,0.0],"casai":[14,0,0.0],"ceven":[27,0,0.0],"colstyn":[21,0,0.0],"cymir":[31,0,0.0],"darlens":[25,0,0.0],"daze":[15,0,0.0],"deyler":[12,0,0.0],"dhaksh":[11,0,0.0],"dreko":[23,0,0.0],"elyaas":[6,0,0.0],"exauce":[11,0,0.0],"fatehveer":[35,0,0.0],"folsom":[14,0,0.0],"garvit":[6,0,0.0],"habakkuk":[20,0,0.0],"havi":[41,0,0.0],"inba":[23,0,0.0],"iro":[13,0,0.0],"jalias":[11,0,0.0],"jatziel":[19,0,0.0],"jaxe":[6,0,0.0],"jaxziel":[11,0,0.0],"jayaire":[16,0,0.0],"jhay":[39,0,0.0],"jiannis":[31,0,0.0],"jiraiyah":[35,0,0.0],"josani":[6,0,0.0],"kaash":[38,0,0.0],"kaku":[6,0,0.0],"kanoah":[6,0,0.0],"kasien":[11,0,0.0],"kasino":[11,0,0.0],"khailo":[18,0,0.0],"laxus":[12,0,0.0],"layker":[6,0,0.0],"leonello":[22,0,0.0],"leovonni":[28,0,0.0],"lyanno":[11,0,0.0],"maazi":[15,0,0.0],"magni":[19,0,0.0],"malachias":[6,0,0.0],"mateu":[12,0,0.0],"matthaios":[11,0,0.0],"mikhailo":[48,0,0.0],"mirek":[6,0,0.0],"mukhammad":[29,0,0.0],"navish":[31,0,0.0],"neytan":[24,0,0.0],"nezha":[6,0,0.0],"niyansh":[11,0,0.0],"nohan":[25,0,0.0],"nymeir":[50,0,0.0],"oliwer":[6,0,0.0],"oliwier":[6,0,0.0],"ondreaz":[6,0,0.0],"onias":[22,0,0.0],"osaid":[14,0,0.0],"ozman":[16,0,0.0],"phox":[6,0,0.0],"quazir":[6,0,0.0],"reazon":[16,0,0.0],"reehan":[6,0,0.0],"rhemington":[6,0,0.0],"rivaansh":[6,0,0.0],"rudraveer":[13,0,0.0],"rymir":[32,0,0.0],"shimmy":[31,0,0.0],"taif":[6,0,0.0],"theodin":[24,0,0.0],"tide":[11,0,0.0],"turbo":[6,0,0.0],"tushig":[12,0,0.0],"vamir":[6,0,0.0],"wynsten":[6,0,0.0],"wyze":[13,0,0.0],"xadriel":[6,0,0.0],"xayven":[6,0,0.0],"xyair":[48,0,0.0],"xyrus":[11,0,0.0],"yahson":[6,0,0.0],"zal":[6,0,0.0],"zayce":[16,0,0.0],"zyre":[28,0,0.0],"aahid":[10,0,0.0],"abdullateef":[13,0,0.0],"abdulwahhab":[5,0,0.0],"abuzar":[31,0,0.0],"adanis":[5,0,0.0],"adexe":[5,0,0.0],"afan":[11,0,0.0],"agamdeep":[5,0,0.0],"agni":[5,0,0.0],"ahnyx":[31,6,0.0],"ahsaan":[43,0,0.0],"airo":[30,0,0.0],"alahn":[5,0,0.0],"aliakbar":[16,0,0.0],"alimou":[10,0,0.0],"amael":[41,0,0.0],"amelo":[10,0,0.0],"arhab":[12,0,0.0],"arken":[5,0,0.0],"arloh":[10,0,0.0],"armez":[10,0,0.0],"aryanreddy":[15,0,0.0],"atri":[5,0,0.0],"avyel":[5,0,0.0],"axson":[10,0,0.0],"aydriel":[5,0,0.0],"aysin":[10,0,0.0],"azayzel":[5,0,0.0],"azyel":[14,0,0.0],"barsam":[5,0,0.0],"bawitha":[5,0,0.0],"beaudin":[5,0,0.0],"bextyn":[11,0,0.0],"boiken":[5,0,0.0],"bou":[5,0,0.0],"braxyn":[5,0,0.0],"breiner":[17,0,0.0],"bristan":[5,0,0.0],"bryner":[5,0,0.0],"bryzon":[5,0,0.0],"cairyn":[11,0,0.0],"calet":[5,0,0.0],"calister":[5,0,0.0],"cayston":[10,0,0.0],"chazaiah":[5,0,0.0],"creason":[5,0,0.0],"cyro":[28,0,0.0],"daimir":[10,0,0.0],"damiri":[125,27,0.3589],"dayce":[5,0,0.0],"dilam":[16,0,0.0],"diyansh":[5,0,0.0],"dmazi":[5,0,0.0],"dominance":[5,0,0.0],"drais":[5,0,0.0],"drakko":[10,0,0.0],"easa":[5,0,0.0],"ehsaan":[16,0,0.0],"eliasjames":[10,0,0.0],"emillion":[5,0,0.0],"enze":[5,0,0.0],"etiel":[5,0,0.0],"etziel":[5,0,0.0],"ezekieo":[5,0,0.0],"ezhaan":[11,0,0.0],"ezrial":[5,0,0.0],"falah":[5,0,0.0],"fen":[28,0,0.0],"flinn":[12,0,0.0],"ghost":[10,0,0.0],"glacier":[10,6,0.0],"gleyber":[17,0,0.0],"granth":[5,0,0.0],"greysonn":[5,0,0.0],"gurniwaz":[25,0,0.0],"hafez":[11,0,0.0],"haydrian":[5,0,0.0],"hesler":[5,0,0.0],"heyansh":[22,0,0.0],"hezekian":[5,0,0.0],"highland":[10,0,0.0],"huckley":[10,0,0.0],"hucksen":[5,0,0.0],"humble":[18,0,0.0],"iham":[21,0,0.0],"image":[5,0,0.0],"imeir":[5,0,0.0],"inan":[5,0,0.0],"iorek":[5,0,0.0],"iversen":[5,0,0.0],"izayis":[11,0,0.0],"jahcier":[25,0,0.0],"jaider":[16,0,0.0],"jamillion":[5,0,0.0],"jaream":[11,0,0.0],"jasaih":[5,0,0.0],"jayy":[5,0,0.0],"jazair":[10,0,0.0],"jecht":[5,0,0.0],"jeisson":[19,0,0.0],"jendrick":[5,0,0.0],"jensel":[5,0,0.0],"jesler":[5,0,0.0],"jevoni":[5,0,0.0],"jonsi":[5,0,0.0],"jozian":[5,0,0.0],"jreux":[10,0,0.0],"jsaan":[5,0,0.0],"juke":[13,0,0.0],"jycere":[5,0,0.0],"kahzi":[10,0,0.0],"kaialexander":[5,0,0.0],"kaisun":[16,0,0.0],"kanek":[5,0,0.0],"kanelo":[39,0,0.0],"kashel":[10,0,0.0],"kavier":[5,0,0.0],"kemario":[5,0,0.0],"kendri":[5,0,0.0],"khizr":[10,0,0.0],"khymeir":[10,0,0.0],"kike":[5,0,0.0],"knolyn":[5,0,0.0],"kriyan":[33,0,0.0],"kuma":[19,0,0.0],"kygo":[12,0,0.0],"kyleem":[5,0,0.0],"kymire":[40,0,0.0],"kymonie":[5,0,0.0],"kyrio":[5,0,0.0],"kysaun":[5,0,0.0],"kysier":[31,0,0.0],"kyyon":[5,0,0.0],"kyzeir":[92,0,0.0],"lakshay":[5,0,0.0],"lakshith":[10,0,0.0],"leiv":[5,0,0.0],"loha":[5,0,0.0],"maes":[10,0,0.0],"maijour":[5,0,0.0],"maiwand":[14,0,0.0],"marsiah":[10,0,0.0],"martins":[5,0,0.0],"mathewos":[5,0,0.0],"mauzi":[13,0,0.0],"mawuli":[5,0,0.0],"mayaken":[10,0,0.0],"mesyah":[16,0,0.0],"mikari":[20,0,0.0],"milyon":[10,0,0.0],"modaser":[5,0,0.0],"mohammadyousuf":[5,0,0.0],"moisha":[5,0,0.0],"mursalin":[5,0,0.0],"murti":[5,0,0.0],"mustaqim":[5,0,0.0],"naire":[5,0,0.0],"nashtyn":[44,0,0.0],"nateo":[22,0,0.0],"nayr":[5,0,0.0],"nebi":[10,0,0.0],"nidhaan":[17,0,0.0],"nirvin":[5,0,0.0],"nizier":[5,0,0.0],"odhran":[31,0,0.0],"otter":[5,0,0.0],"ozni":[20,0,0.0],"paari":[11,0,0.0],"priceton":[5,0,0.0],"ptah":[5,0,0.0],"qion":[5,0,0.0],"quantum":[5,0,0.0],"raei":[5,0,0.0],"rarri":[5,0,0.0],"rheon":[5,0,0.0],"rhettson":[11,0,0.0],"rhyes":[5,0,0.0],"riff":[5,0,0.0],"ritam":[12,0,0.0],"romik":[5,0,0.0],"rudraansh":[12,0,0.0],"ryser":[27,0,0.0],"sailas":[18,0,0.0],"sanaf":[20,0,0.0],"sanan":[5,0,0.0],"sanson":[10,0,0.0],"sartaaj":[11,0,0.0],"sayansh":[10,0,0.0],"saynt":[46,0,0.0],"sihan":[5,0,0.0],"simere":[5,0,0.0],"siosifa":[11,0,0.0],"sirak":[10,0,0.0],"sirkyng":[5,0,0.0],"siul":[10,0,0.0],"sofyan":[5,0,0.0],"stellen":[15,0,0.0],"suho":[11,0,0.0],"syi":[5,0,0.0],"sylo":[28,0,0.0],"tahiyan":[5,0,0.0],"tanjiro":[29,0,0.0],"tayion":[5,0,0.0],"tegvir":[5,0,0.0],"thanvik":[33,0,0.0],"tharak":[5,0,0.0],"treu":[83,60,0.2502],"ubayd":[10,0,0.0],"vedanshreddy":[10,0,0.0],"veeransh":[5,0,0.0],"viraan":[5,0,0.0],"viyansh":[10,0,0.0],"wabi":[5,0,0.0],"walfre":[5,0,0.0],"waylonn":[11,0,0.0],"wenston":[5,0,0.0],"wiles":[5,0,0.0],"xackery":[5,0,0.0],"xailyn":[17,5,0.0],"xiaire":[31,0,0.0],"xymir":[49,0,0.0],"xzekiel":[11,0,0.0],"yahyo":[5,0,0.0],"yason":[5,0,0.0],"yasten":[5,0,0.0],"yeicon":[5,0,0.0],"yidi":[11,0,0.0],"yissocher":[5,0,0.0],"zachariya":[11,0,0.0],"zackarias":[5,0,0.0],"zaeon":[5,0,0.0],"zaidynn":[13,0,0.0],"zakaius":[22,0,0.0],"zeref":[5,0,0.0],"zevy":[13,0,0.0],"zig":[5,0,0.0],"ziyere":[5,0,0.0],"zmere":[5,0,0.0],"zomari":[5,0,0.0],"zykier":[5,0,0.0],"namaari":[11,191,0.436],"sayori":[0,282,0.49],"parklynn":[0,185,0.4534],"arianelly":[0,187,0.4544],"sanem":[0,63,0.0],"nezuko":[0,103,0.4026],"adrielly":[0,67,0.0],"imaray":[0,37,0.0],"franyeli":[0,88,0.0],"kaiori":[5,54,0.0],"kaliani":[0,15,0.0],"arzoey":[0,18,0.0],"daneliya":[0,19,0.0],"emrielle":[0,51,0.0],"hiraya":[0,82,0.0],"namani":[0,37,0.0],"rivia":[0,38,0.0],"daneiris":[0,21,0.0],"dini":[0,11,0.0],"ixia":[0,23,0.0],"knoxleigh":[0,33,0.0],"kyori":[0,34,0.0],"novamarie":[0,11,0.0],"oyku":[0,11,0.0],"zunaisha":[0,70,0.0],"harir":[0,69,0.0],"jehiely":[0,21,0.0],"keilanni":[0,27,0.0],"kolly":[0,20,0.0],"kuvira":[0,28,0.0],"meiomi":[0,36,0.0],"nylynn":[0,21,0.0],"renfri":[0,17,0.0],"rinn":[0,18,0.0],"arlenny":[0,21,0.0],"azley":[0,28,0.0],"celaena":[0,30,0.0],"eclipsa":[0,14,0.0],"elysani":[0,28,0.0],"emmaluna":[0,14,0.0],"este":[0,53,0.0],"europe":[0,15,0.0],"giannagrace":[0,9,0.0],"giorgiana":[0,23,0.0],"lailonni":[0,19,0.0],"livvi":[0,22,0.0],"miyanni":[0,27,0.0],"shreyanvi":[0,38,0.0],"xori":[0,31,0.0],"xureila":[0,29,0.0],"yoadan":[0,70,0.0],"ellowen":[0,23,0.0],"emoriee":[0,8,0.0],"himawari":[0,33,0.0],"hiraeth":[7,25,0.0],"invy":[0,8,0.0],"isani":[0,8,0.0],"jaior":[16,29,0.0],"khemistry":[0,46,0.0],"kyloni":[0,31,0.0],"lupine":[0,28,0.0],"nareth":[0,8,0.0],"rhue":[0,13,0.0],"saivi":[0,8,0.0],"savae":[0,8,0.0],"siylah":[0,8,0.0],"solaia":[0,8,0.0],"suleidy":[0,13,0.0],"summerreign":[0,23,0.0],"wrenlie":[0,73,0.0],"xilenia":[0,72,0.0],"xiomora":[0,22,0.0],"yeilany":[0,16,0.0],"zaiyana":[0,8,0.0],"zaloni":[0,15,0.0],"aadhini":[0,59,0.0],"alijana":[0,7,0.0],"alileth":[0,7,0.0],"alyanis":[0,12,0.0],"amajesty":[0,13,0.0],"amariel":[0,7,0.0],"amiirah":[0,7,0.0],"aristella":[0,18,0.0],"arvaeyah":[0,41,0.0],"aunystee":[0,20,0.0],"ayzlynn":[0,7,0.0],"baylah":[0,35,0.0],"cristhel":[0,12,0.0],"dandelion":[0,15,0.0],"deilah":[0,7,0.0],"ehlanie":[0,7,0.0],"ehvie":[0,7,0.0],"elowin":[0,14,0.0],"eluney":[0,182,0.452],"elvana":[0,7,0.0],"elyani":[0,14,0.0],"emmilene":[0,13,0.0],"everlynne":[0,12,0.0],"faatiha":[0,20,0.0],"iverly":[0,19,0.0],"ivylee":[0,18,0.0],"jaislee":[0,13,0.0],"jayella":[0,7,0.0],"jaylanii":[0,27,0.0],"joseane":[0,7,0.0],"kamsiyonna":[0,20,0.0],"karii":[0,12,0.0],"kathena":[0,7,0.0],"kiyomii":[0,7,0.0],"mariazel":[0,7,0.0],"mazeleigh":[0,17,0.0],"miyae":[0,7,0.0],"mwajuma":[0,29,0.0],"najd":[0,17,0.0],"nesrin":[0,7,0.0],"odelya":[0,7,0.0],"paradyse":[0,14,0.0],"parklyn":[0,53,0.0],"reigh":[0,13,0.0],"rivyr":[0,7,0.0],"saafia":[0,7,0.0],"sevgi":[0,7,0.0],"seyven":[31,25,0.0],"seyvn":[12,17,0.0],"siyara":[0,37,0.0],"sorel":[0,7,0.0],"telani":[0,31,0.0],"theori":[7,49,0.0],"virsavia":[0,7,0.0],"waverli":[0,7,0.0],"yaqoot":[0,7,0.0],"yemariyam":[0,7,0.0],"yimo":[0,12,0.0],"zalayla":[0,18,0.0],"zuleyha":[0,7,0.0],"aakifah":[0,34,0.0],"aami":[0,6,0.0],"aavni":[0,6,0.0],"adagrace":[0,11,0.0],"adelany":[0,12,0.0],"adelola":[0,6,0.0],"ahari":[5,12,0.0],"ahziya":[0,12,0.0],"ailauni":[0,6,0.0],"ailuani":[0,6,0.0],"alayan":[5,6,0.0],"amaila":[0,23,0.0],"amiliyana":[0,6,0.0],"amiriana":[0,41,0.0],"amris":[0,23,0.0],"aneliya":[0,6,0.0],"anilee":[0,6,0.0],"anthym":[5,6,0.0],"ariellie":[0,11,0.0],"auraelia":[0,12,0.0],"avaluna":[0,12,0.0],"avaria":[0,32,0.0],"aviauna":[0,6,0.0],"avionnah":[0,6,0.0],"aylaa":[0,19,0.0],"azalyah":[0,6,0.0],"azuria":[0,38,0.0],"bitaniya":[0,6,0.0],"bruchie":[0,11,0.0],"calliejo":[0,12,0.0],"charleerose":[0,6,0.0],"chezni":[0,20,0.0],"cirice":[0,6,0.0],"cleobella":[0,6,0.0],"culture":[15,13,0.0],"dahia":[0,12,0.0],"darlet":[0,13,0.0],"deariyah":[0,6,0.0],"dhrisha":[0,6,0.0],"driya":[0,6,0.0],"elayza":[0,6,0.0],"elianiz":[0,11,0.0],"ellimae":[0,6,0.0],"ettalie":[0,6,0.0],"eylani":[0,31,0.0],"giselise":[0,6,0.0],"giyah":[0,6,0.0],"haelo":[0,6,0.0],"hainsley":[0,6,0.0],"herani":[0,18,0.0],"ice":[40,6,0.0],"icylinn":[0,12,0.0],"ivalynn":[0,17,0.0],"izely":[0,6,0.0],"janaat":[0,6,0.0],"javannah":[0,6,0.0],"jeah":[0,6,0.0],"jerusalema":[0,19,0.0],"jhianna":[0,17,0.0],"joseany":[0,6,0.0],"joshvika":[0,6,0.0],"juwayriyah":[0,17,0.0],"jynx":[0,11,0.0],"kaezleigh":[0,6,0.0],"kaizlei":[0,6,0.0],"kalhani":[0,6,0.0],"kaylanis":[0,21,0.0],"khadiza":[0,6,0.0],"kiyori":[0,14,0.0],"laiyani":[0,27,0.0],"lakelynne":[0,17,0.0],"lolia":[0,11,0.0],"luciela":[0,6,0.0],"maevynn":[0,6,0.0],"malaini":[0,6,0.0],"malanah":[0,6,0.0],"maneli":[0,6,0.0],"mauwa":[0,32,0.0],"mawata":[0,11,0.0],"melkam":[0,6,0.0],"miluna":[0,11,0.0],"miraslava":[0,6,0.0],"miyori":[0,195,0.458],"monarch":[0,6,0.0],"mukti":[0,6,0.0],"naevi":[0,6,0.0],"naiza":[0,12,0.0],"namarie":[0,6,0.0],"naret":[0,6,0.0],"nelliana":[0,11,0.0],"nissah":[0,22,0.0],"nixyn":[0,6,0.0],"niyari":[0,34,0.0],"onyxia":[0,6,0.0],"oryah":[0,6,0.0],"princesse":[0,23,0.0],"quimby":[0,6,0.0],"quinsley":[0,6,0.0],"rainleigh":[0,6,0.0],"ramora":[0,6,0.0],"rayzel":[0,12,0.0],"reila":[0,11,0.0],"rhenleigh":[0,6,0.0],"ripleigh":[0,16,0.0],"rischel":[0,11,0.0],"rize":[0,6,0.0],"ruri":[0,6,0.0],"saviona":[0,6,0.0],"summerrae":[0,6,0.0],"taelani":[0,12,0.0],"tarlaysia":[0,6,0.0],"tatev":[0,6,0.0],"thendral":[0,6,0.0],"vaiana":[0,11,0.0],"vaylin":[0,11,0.0],"willowrose":[0,6,0.0],"wrenli":[0,38,0.0],"wrennley":[0,19,0.0],"xhuri":[0,11,0.0],"yailani":[0,27,0.0],"yemi":[0,17,0.0],"youyou":[0,6,0.0],"zalya":[0,6,0.0],"zamoura":[0,34,0.0],"zaraiya":[0,24,0.0],"zaviya":[0,6,0.0],"zaza":[0,6,0.0],"zuriella":[0,14,0.0],"aadhirai":[0,5,0.0],"aariaani":[0,12,0.0],"aaryiah":[0,5,0.0],"aayara":[0,5,0.0],"acela":[0,10,0.0],"addalia":[0,5,0.0],"adior":[0,11,0.0],"aeryss":[0,5,0.0],"ahilani":[0,5,0.0],"ahleyah":[0,5,0.0],"ahvi":[0,11,0.0],"aife":[0,5,0.0],"ajream":[5,27,0.0],"akuol":[0,5,0.0],"alaea":[0,5,0.0],"alankrita":[0,5,0.0],"alegaci":[0,12,0.0],"alleia":[0,15,0.0],"amineh":[0,5,0.0],"amirii":[26,11,0.0],"amla":[0,18,0.0],"anikha":[0,5,0.0],"aonani":[0,5,0.0],"ariayl":[0,10,0.0],"aritzia":[0,52,0.0],"arzoie":[0,45,0.0],"aslihan":[0,11,0.0],"aslinn":[0,5,0.0],"astreya":[0,5,0.0],"athar":[0,33,0.0],"audelina":[0,5,0.0],"ayasofia":[0,5,0.0],"azami":[0,15,0.0],"balenci":[0,5,0.0],"bellezza":[0,5,0.0],"berkely":[0,5,0.0],"blaklyn":[0,5,0.0],"braislee":[0,5,0.0],"brinzley":[0,11,0.0],"briselle":[0,5,0.0],"callidora":[0,5,0.0],"camilarose":[0,5,0.0],"camoura":[0,10,0.0],"cleissy":[0,10,0.0],"dahlani":[0,29,0.0],"daivy":[0,16,0.0],"dalanii":[0,21,0.0],"dallyss":[0,5,0.0],"damor":[0,5,0.0],"delanni":[0,5,0.0],"dhritireddy":[0,10,0.0],"diorr":[5,14,0.0],"ditza":[0,5,0.0],"divika":[0,5,0.0],"dvosia":[0,5,0.0],"dynastii":[0,5,0.0],"ebtisam":[0,5,0.0],"edisyn":[0,5,0.0],"eemaan":[0,5,0.0],"ejla":[0,5,0.0],"ekhlas":[0,5,0.0],"elei":[0,5,0.0],"eliett":[0,17,0.0],"elleighana":[0,5,0.0],"elu":[0,5,0.0],"emmerlynn":[0,5,0.0],"emyra":[0,10,0.0],"ese":[0,5,0.0],"esmea":[0,5,0.0],"falasteen":[0,12,0.0],"freyia":[0,17,0.0],"furtu":[0,5,0.0],"graceigh":[0,5,0.0],"harvee":[0,21,0.0],"hasha":[0,5,0.0],"hasleigh":[0,10,0.0],"hassatou":[0,10,0.0],"hella":[0,5,0.0],"hinza":[0,5,0.0],"hiyabel":[0,10,0.0],"ilaiah":[0,5,0.0],"ilyena":[0,5,0.0],"ishvi":[0,15,0.0],"islabelle":[0,5,0.0],"islagrace":[0,14,0.0],"itzcali":[0,5,0.0],"iveel":[0,5,0.0],"ivrie":[0,5,0.0],"ivygrace":[0,13,0.0],"jayliene":[0,5,0.0],"jaylonni":[0,5,0.0],"jazani":[0,5,0.0],"jelianny":[0,5,0.0],"jelianys":[0,5,0.0],"jelilah":[0,10,0.0],"jhenai":[0,5,0.0],"josieann":[0,5,0.0],"jurzee":[0,12,0.0],"kaashi":[0,10,0.0],"kaezlee":[0,5,0.0],"kaisly":[0,5,0.0],"kaiyani":[0,32,0.0],"kaiyomi":[0,27,0.0],"kalini":[0,5,0.0],"kalonii":[0,5,0.0],"kamour":[0,18,0.0],"kashindi":[11,5,0.0],"kayanni":[0,19,0.0],"keilanii":[0,5,0.0],"keiloni":[0,5,0.0],"kendaya":[0,5,0.0],"keylanni":[0,10,0.0],"keyloni":[0,15,0.0],"khayra":[0,5,0.0],"khelanie":[0,10,0.0],"khyrah":[0,5,0.0],"kiarybel":[0,5,0.0],"kilayah":[0,10,0.0],"kiore":[0,5,0.0],"kiswa":[0,36,0.0],"kohinoor":[0,5,0.0],"kolynns":[0,5,0.0],"kshetra":[0,5,0.0],"laceigh":[0,5,0.0],"lahlani":[0,5,0.0],"lamoura":[0,5,0.0],"landreigh":[0,5,0.0],"laraia":[0,5,0.0],"laylamae":[0,5,0.0],"lehla":[0,5,0.0],"leiko":[0,5,0.0],"leilamae":[0,5,0.0],"leilanys":[0,18,0.0],"leilianys":[0,5,0.0],"leiluna":[0,5,0.0],"leiyanna":[0,5,0.0],"leyu":[0,5,0.0],"liamani":[0,23,0.0],"lisaira":[0,5,0.0],"loelle":[0,5,0.0],"lulana":[0,5,0.0],"lyz":[0,5,0.0],"madany":[0,5,0.0],"maelanie":[0,5,0.0],"maeverly":[0,11,0.0],"mahla":[0,5,0.0],"maizelynn":[0,5,0.0],"maravilla":[0,10,0.0],"marialucia":[0,11,0.0],"mariarose":[0,5,0.0],"marleaux":[0,10,0.0],"maveri":[0,5,0.0],"mayura":[0,11,0.0],"mazilyn":[0,17,0.0],"mehza":[0,5,0.0],"melodygrace":[0,5,0.0],"miarie":[0,5,0.0],"milaia":[0,5,0.0],"milanny":[0,10,0.0],"mileydy":[0,5,0.0],"millieann":[0,23,0.0],"milliemae":[0,19,0.0],"mmasinachi":[0,5,0.0],"moli":[0,5,0.0],"muqadas":[0,13,0.0],"myayla":[0,11,0.0],"naomirose":[0,22,0.0],"narina":[0,5,0.0],"nayture":[0,5,0.0],"nesryn":[0,5,0.0],"nihana":[0,5,0.0],"niori":[0,5,0.0],"nirobi":[0,5,0.0],"nivika":[0,19,0.0],"nolvia":[0,5,0.0],"nyarii":[0,18,0.0],"nymira":[0,5,0.0],"oakliegh":[0,5,0.0],"ororo":[0,5,0.0],"oysha":[0,18,0.0],"ozzlynn":[0,15,0.0],"paisleyrae":[0,5,0.0],"praisely":[0,5,0.0],"qetsiyah":[0,15,0.0],"radiyah":[0,12,0.0],"raeliana":[0,21,0.0],"raeyna":[0,5,0.0],"rahmiya":[0,5,0.0],"ranesmae":[0,5,0.0],"reignah":[0,5,0.0],"reileen":[0,5,0.0],"renas":[0,5,0.0],"renni":[0,24,0.0],"revelyn":[0,5,0.0],"rexley":[5,5,0.0],"rexlynn":[0,5,0.0],"reyva":[0,5,0.0],"rimna":[0,5,0.0],"rissy":[0,5,0.0],"rohanna":[0,5,0.0],"rosaluna":[0,10,0.0],"ruthlynn":[0,5,0.0],"sahla":[0,10,0.0],"sajida":[0,11,0.0],"saleigha":[0,5,0.0],"samrudhi":[0,5,0.0],"savani":[0,91,0.0],"savia":[0,12,0.0],"scotlynd":[0,32,0.0],"sefina":[0,5,0.0],"selenie":[0,5,0.0],"serein":[0,10,0.0],"serriyah":[0,5,0.0],"seveyn":[12,13,0.0],"shrisha":[0,30,0.0],"sif":[0,5,0.0],"sika":[0,5,0.0],"silya":[0,10,0.0],"sitra":[0,12,0.0],"skailyn":[0,24,0.0],"solaria":[0,5,0.0],"storri":[0,23,0.0],"sunisa":[0,24,0.0],"syanni":[0,5,0.0],"sylphrena":[0,24,0.0],"sypha":[0,5,0.0],"taeleigh":[0,5,0.0],"tahleea":[0,5,0.0],"taibah":[0,5,0.0],"thyrie":[0,11,0.0],"thyrii":[0,18,0.0],"vignette":[0,5,0.0],"willarae":[0,5,0.0],"winley":[0,10,0.0],"woodlyn":[0,5,0.0],"wudase":[0,5,0.0],"wynlee":[0,5,0.0],"wynnona":[0,13,0.0],"wynslow":[0,11,0.0],"xenova":[0,5,0.0],"yakout":[0,5,0.0],"yashfa":[0,11,0.0],"ymir":[46,12,0.0],"zahlani":[0,16,0.0],"zaidie":[0,5,0.0],"zakora":[0,5,0.0],"zaleiya":[0,5,0.0],"zamilah":[0,5,0.0],"zaylianna":[0,10,0.0],"zealynn":[0,5,0.0],"zeilani":[0,36,0.0],"zelyna":[0,5,0.0],"zenniah":[0,5,0.0],"zeveah":[0,5,0.0],"zior":[5,5,0.0],"zorey":[0,5,0.0],"zuna":[0,10,0.0],"azaire":[264,0,0.4843],"gediz":[23,0,0.0],"jeyvier":[29,0,0.0],"ripton":[40,0,0.0],"zakius":[43,0,0.0],"khaizer":[31,0,0.0],"biden":[11,0,0.0],"nuta":[17,0,0.0],"oleander":[54,13,0.0],"shrithik":[52,0,0.0],"amaias":[16,0,0.0],"azekial":[16,0,0.0],"maclen":[17,0,0.0],"oceano":[29,0,0.0],"aathiran":[15,0,0.0],"anansi":[16,0,0.0],"atlus":[86,0,0.0],"avyaanreddy":[45,0,0.0],"cymere":[9,0,0.0],"dhamir":[14,0,0.0],"eleo":[27,0,0.0],"kenshi":[9,0,0.0],"riftyn":[27,0,0.0],"three":[16,0,0.0],"yankiel":[9,0,0.0],"aadrik":[32,0,0.0],"aurum":[32,0,0.0],"bucklee":[30,0,0.0],"dame":[25,0,0.0],"emerett":[14,0,0.0],"gervonta":[34,0,0.0],"hiyaan":[28,0,0.0],"hyndrix":[14,0,0.0],"inzo":[19,0,0.0],"jetzyn":[8,0,0.0],"jhayco":[75,0,0.0],"karlisle":[8,0,0.0],"kyngdom":[13,0,0.0],"ledgend":[22,0,0.0],"lobo":[21,0,0.0],"maaran":[32,0,0.0],"ovin":[14,0,0.0],"rhiatt":[16,0,0.0],"sicarii":[8,0,0.0],"svar":[13,0,0.0],"wilden":[21,0,0.0],"yahnis":[13,0,0.0],"yasuke":[20,0,0.0],"yzael":[14,0,0.0],"zeldris":[35,0,0.0],"zulu":[8,0,0.0],"abhayram":[34,0,0.0],"airav":[7,0,0.0],"arcturus":[25,0,0.0],"arminius":[24,0,0.0],"arshman":[7,0,0.0],"aunyx":[30,20,0.0],"axael":[7,0,0.0],"beniyas":[7,0,0.0],"bohdy":[7,0,0.0],"brixson":[7,0,0.0],"damias":[18,0,0.0],"darlington":[12,0,0.0],"delegend":[7,0,0.0],"elyias":[13,0,0.0],"emorett":[14,0,0.0],"eramias":[7,0,0.0],"finnin":[12,0,0.0],"habibullah":[18,0,0.0],"harbaaz":[38,0,0.0],"jaair":[7,0,0.0],"jahvani":[17,0,0.0],"jamiri":[76,12,0.0],"jasvik":[7,0,0.0],"jaycere":[7,0,0.0],"kaimari":[29,0,0.0],"keem":[7,0,0.0],"kimir":[7,0,0.0],"kiyear":[7,0,0.0],"kiyro":[12,0,0.0],"kodin":[7,0,0.0],"luuk":[19,0,0.0],"luxen":[36,0,0.0],"makarri":[12,0,0.0],"masaad":[13,0,0.0],"midoriya":[7,0,0.0],"mu":[7,10,0.0],"neptune":[16,0,0.0],"osaro":[7,0,0.0],"riften":[30,0,0.0],"ropyr":[37,0,0.0],"teghbir":[7,0,0.0],"vidharth":[39,0,0.0],"vishrudh":[19,0,0.0],"yahmari":[18,0,0.0],"yamaan":[23,0,0.0],"yaseem":[12,0,0.0],"zagreus":[35,0,0.0],"zahaire":[12,0,0.0],"zaiyaan":[7,0,0.0],"zakaii":[29,0,0.0],"zevadiah":[17,0,0.0],"zhakari":[7,0,0.0],"zias":[42,0,0.0],"zino":[18,0,0.0],"aaransh":[6,0,0.0],"adrianos":[6,0,0.0],"afaan":[6,0,0.0],"ahmiri":[52,21,0.0],"ahmyr":[28,0,0.0],"alioth":[6,0,0.0],"anwyll":[6,0,0.0],"anyis":[13,0,0.0],"arrio":[6,0,0.0],"arsin":[12,0,0.0],"asohn":[12,0,0.0],"aydenjames":[6,0,0.0],"ayur":[12,0,0.0],"cardinal":[6,0,0.0],"carlier":[6,0,0.0],"caylus":[13,0,0.0],"cyair":[26,0,0.0],"davinchi":[59,0,0.0],"debonair":[6,0,0.0],"dembe":[6,0,0.0],"dkyrie":[6,0,0.0],"dylangael":[6,0,0.0],"eitham":[38,0,0.0],"eivor":[43,13,0.0],"ekaksh":[16,0,0.0],"ekas":[6,0,0.0],"elessar":[11,0,0.0],"evansh":[6,0,0.0],"ezaias":[40,0,0.0],"five":[11,0,0.0],"giangelo":[11,0,0.0],"gilber":[6,0,0.0],"hamoud":[6,0,0.0],"harsahib":[6,0,0.0],"hesed":[25,11,0.0],"huxtin":[6,0,0.0],"iasonas":[6,0,0.0],"jacq":[6,0,0.0],"jaxlee":[6,0,0.0],"jhakai":[12,0,0.0],"kelenna":[6,0,0.0],"khrome":[34,0,0.0],"kinaan":[6,0,0.0],"kinglee":[13,0,0.0],"knoxson":[6,0,0.0],"knoxtyn":[17,0,0.0],"koufax":[6,0,0.0],"kwest":[11,0,0.0],"kyrill":[6,0,0.0],"lightning":[11,0,0.0],"lodi":[6,0,0.0],"lugh":[6,0,0.0],"makylan":[6,0,0.0],"maverek":[6,0,0.0],"mazii":[13,0,0.0],"mehraab":[6,0,0.0],"meshulam":[11,0,0.0],"minhaj":[6,0,0.0],"musawir":[11,0,0.0],"najour":[37,0,0.0],"nimir":[20,0,0.0],"niqo":[6,0,0.0],"nirved":[25,0,0.0],"obrempong":[24,0,0.0],"princeley":[16,0,0.0],"prithvik":[6,0,0.0],"radix":[6,0,0.0],"raizen":[11,0,0.0],"reaux":[16,0,0.0],"rizvan":[6,0,0.0],"sejun":[6,0,0.0],"shayar":[6,0,0.0],"silo":[40,0,0.0],"subham":[11,0,0.0],"suhayl":[11,0,0.0],"sykes":[6,0,0.0],"tawaf":[11,0,0.0],"taysum":[6,0,0.0],"torbjorn":[11,0,0.0],"tramere":[6,0,0.0],"umayr":[19,0,0.0],"viven":[13,0,0.0],"whiskey":[6,6,0.0],"wickham":[6,0,0.0],"wriggs":[11,0,0.0],"wyattjames":[6,0,0.0],"xaelyn":[14,0,0.0],"yosias":[11,0,0.0],"zadriel":[18,0,0.0],"zeelan":[6,0,0.0],"zemichael":[14,0,0.0],"zivaan":[6,0,0.0],"zykari":[13,0,0.0],"aang":[5,0,0.0],"abdulkabir":[10,0,0.0],"addler":[5,0,0.0],"aelius":[16,0,0.0],"aeros":[18,0,0.0],"ahiyan":[5,0,0.0],"ahlee":[5,0,0.0],"ahsai":[10,0,0.0],"ahsaun":[5,0,0.0],"aisyn":[5,0,0.0],"alesio":[13,0,0.0],"alessandre":[10,0,0.0],"aliano":[10,0,0.0],"allistor":[5,0,0.0],"amillyon":[5,0,0.0],"amisi":[16,0,0.0],"amnon":[5,0,0.0],"anaken":[5,0,0.0],"arhansh":[5,0,0.0],"arnik":[15,0,0.0],"asyn":[11,0,0.0],"augden":[5,0,0.0],"avran":[5,0,0.0],"avyanreddy":[13,0,0.0],"axley":[5,0,0.0],"ayaad":[16,0,0.0],"ayker":[5,0,0.0],"aysah":[5,0,0.0],"azian":[20,0,0.0],"azraq":[10,0,0.0],"ba":[5,0,0.0],"bahran":[5,0,0.0],"barima":[5,0,0.0],"barlas":[15,0,0.0],"baroke":[5,0,0.0],"bashton":[5,0,0.0],"benjiro":[5,0,0.0],"caique":[5,0,0.0],"carti":[5,0,0.0],"cashtian":[5,0,0.0],"caspien":[12,0,0.0],"cherno":[5,0,0.0],"conri":[26,0,0.0],"costner":[10,0,0.0],"dakaree":[15,0,0.0],"dakauri":[5,0,0.0],"deonis":[5,0,0.0],"deriq":[5,0,0.0],"deyner":[14,0,0.0],"dhario":[5,0,0.0],"dhev":[11,0,0.0],"dominicus":[5,0,0.0],"elyot":[17,0,0.0],"emeir":[10,0,0.0],"endymion":[22,0,0.0],"enix":[5,0,0.0],"eramis":[5,0,0.0],"everen":[18,0,0.0],"ezikio":[5,0,0.0],"ezralee":[5,0,0.0],"finlan":[10,0,0.0],"fredd":[5,0,0.0],"geva":[5,0,0.0],"graysonn":[5,0,0.0],"grit":[11,0,0.0],"gulliver":[5,0,0.0],"haaland":[43,0,0.0],"hakoda":[10,0,0.0],"hakon":[5,0,0.0],"haro":[5,0,0.0],"henzo":[5,0,0.0],"hotchner":[5,0,0.0],"huttson":[5,0,0.0],"hyker":[5,0,0.0],"iangael":[5,0,0.0],"ikena":[5,0,0.0],"ilkay":[17,0,0.0],"ivarr":[13,0,0.0],"izzan":[5,0,0.0],"jahsaan":[5,0,0.0],"jahzai":[5,0,0.0],"jaraiya":[25,11,0.0],"jayler":[25,0,0.0],"jehkai":[10,0,0.0],"jeyder":[44,0,0.0],"jhamil":[5,0,0.0],"jheico":[5,0,0.0],"jiyon":[5,0,0.0],"joaomiguel":[30,0,0.0],"jocari":[5,0,0.0],"joham":[5,0,0.0],"josaan":[5,0,0.0],"juanmateo":[5,0,0.0],"kadrick":[5,0,0.0],"kahawai":[5,0,0.0],"kaiir":[49,0,0.0],"kaiyer":[10,0,0.0],"kalahan":[10,0,0.0],"kallai":[21,0,0.0],"kasein":[5,0,0.0],"kashh":[19,0,0.0],"kashmire":[26,0,0.0],"kashtynn":[11,0,0.0],"kaycyn":[10,0,0.0],"kayleon":[5,0,0.0],"kazarion":[5,0,0.0],"kedon":[5,0,0.0],"keenai":[5,0,0.0],"keeper":[5,0,0.0],"keliel":[5,0,0.0],"keneil":[5,0,0.0],"khace":[11,0,0.0],"khailand":[5,0,0.0],"khaizen":[16,0,0.0],"khaz":[5,0,0.0],"khazir":[21,0,0.0],"khymere":[16,0,0.0],"kiram":[18,0,0.0],"kivaan":[11,0,0.0],"knightlee":[5,0,0.0],"kope":[10,0,0.0],"koulson":[5,0,0.0],"kreece":[16,0,0.0],"kyzair":[17,0,0.0],"kyzaire":[21,0,0.0],"laiku":[5,0,0.0],"lakaiden":[5,0,0.0],"leonas":[10,0,0.0],"levai":[5,0,0.0],"liamjohn":[5,0,0.0],"lorenc":[5,0,0.0],"luccah":[5,0,0.0],"luismateo":[5,0,0.0],"maajid":[5,0,0.0],"maestro":[5,0,0.0],"mahaan":[14,0,0.0],"maiky":[5,0,0.0],"makias":[14,0,0.0],"marianno":[5,0,0.0],"masego":[14,0,0.0],"maxximo":[5,0,0.0],"mazier":[5,0,0.0],"mazion":[38,0,0.0],"mesac":[5,0,0.0],"mitansh":[5,0,0.0],"muhammadhasan":[5,0,0.0],"mukhammadyusuf":[5,0,0.0],"myeir":[34,0,0.0],"naeco":[5,0,0.0],"neegan":[5,0,0.0],"neitan":[14,0,0.0],"nhial":[5,0,0.0],"nihir":[5,0,0.0],"nikolo":[5,0,0.0],"nishiv":[10,0,0.0],"nosiah":[5,0,0.0],"noven":[23,0,0.0],"nykko":[5,0,0.0],"nymire":[5,0,0.0],"nyne":[31,5,0.0],"nyzel":[5,0,0.0],"ohtli":[15,0,0.0],"oluwadunsin":[11,0,0.0],"omaet":[5,0,0.0],"orgil":[5,0,0.0],"oto":[5,0,0.0],"ozais":[20,0,0.0],"pavit":[5,0,0.0],"pheenix":[5,0,0.0],"preacher":[16,0,0.0],"quban":[11,0,0.0],"raafi":[10,0,0.0],"radnor":[11,0,0.0],"raijin":[12,0,0.0],"rayed":[5,0,0.0],"regulus":[11,0,0.0],"reu":[5,0,0.0],"revv":[5,0,0.0],"reyson":[5,0,0.0],"rhavi":[16,0,0.0],"rhettly":[5,0,0.0],"rhip":[5,0,0.0],"rippley":[12,0,0.0],"riyu":[5,0,0.0],"rodrygo":[37,0,0.0],"ronix":[5,0,0.0],"rowlyn":[5,0,0.0],"roycen":[5,0,0.0],"rymer":[5,0,0.0],"saaj":[5,0,0.0],"sail":[5,0,0.0],"sajjan":[5,0,0.0],"sane":[5,0,0.0],"sango":[5,0,0.0],"sansar":[5,0,0.0],"sauvage":[5,0,0.0],"science":[5,0,0.0],"sebastijan":[5,0,0.0],"shaakir":[5,0,0.0],"simonpeter":[5,0,0.0],"sreeyan":[11,0,0.0],"tancredi":[5,0,0.0],"tashfin":[16,0,0.0],"telmo":[5,0,0.0],"theojames":[10,0,0.0],"tilson":[5,0,0.0],"time":[5,0,0.0],"tymoni":[5,0,0.0],"tysier":[5,0,0.0],"veeran":[5,0,0.0],"vikyath":[10,0,0.0],"virajreddy":[17,0,0.0],"waiks":[24,0,0.0],"weslan":[16,0,0.0],"woodensley":[10,0,0.0],"xantiago":[26,0,0.0],"xoan":[14,0,0.0],"yahsiah":[5,0,0.0],"yerson":[16,0,0.0],"yester":[10,0,0.0],"yoseth":[5,0,0.0],"yoshiyahu":[5,0,0.0],"yuvanreddy":[5,0,0.0],"zaed":[5,0,0.0],"zaiyr":[11,0,0.0],"zakoda":[5,0,0.0],"zayre":[10,0,0.0],"zehaan":[36,0,0.0],"zeland":[23,0,0.0],"zemariam":[5,0,0.0],"zhayd":[5,0,0.0],"jazaiyah":[0,169,0.4456],"yahritza":[0,112,0.4098],"rhaenyra":[0,261,0.4833],"brisley":[0,68,0.0],"navany":[0,107,0.4059],"jhersi":[0,111,0.4091],"aidanna":[0,39,0.0],"soleen":[0,28,0.0],"jeizy":[0,27,0.0],"aizal":[0,125,0.4194],"yasani":[5,44,0.0],"yasaniy":[0,22,0.0],"ayuri":[0,42,0.0],"kheumani":[0,54,0.0],"lextyn":[0,14,0.0],"arnaaz":[0,38,0.0],"malenia":[0,43,0.0],"nogivenname":[28,18,0.0],"taqdeer":[0,51,0.0],"wrenlynn":[0,46,0.0],"debani":[0,17,0.0],"keyoir":[6,46,0.0],"sirey":[0,12,0.0],"yavani":[0,21,0.0],"ezmeray":[0,11,0.0],"makkari":[0,16,0.0],"vihika":[0,11,0.0],"xalani":[0,29,0.0],"arhareddy":[0,17,0.0],"bonnibelle":[0,17,0.0],"debahni":[0,10,0.0],"illiyeen":[0,10,0.0],"mariahelena":[0,28,0.0],"meilanni":[0,15,0.0],"monaco":[38,20,0.0],"ozzlyn":[0,26,0.0],"pualena":[0,32,0.0],"zenni":[0,15,0.0],"gwynnevere":[0,18,0.0],"kaiomi":[0,50,0.0],"keylany":[0,26,0.0],"malonii":[0,14,0.0],"nyloni":[0,15,0.0],"ratza":[0,9,0.0],"satouri":[0,9,0.0],"silayah":[0,14,0.0],"xile":[0,15,0.0],"xoemi":[0,17,0.0],"zamiri":[20,22,0.0],"adaleigha":[0,13,0.0],"ahilany":[0,31,0.0],"celani":[0,29,0.0],"elladora":[0,8,0.0],"elyanis":[0,8,0.0],"ensly":[0,8,0.0],"ermani":[0,13,0.0],"heimy":[0,16,0.0],"iversyn":[10,18,0.0],"izlani":[0,8,0.0],"jaiyori":[0,16,0.0],"kaelanni":[0,8,0.0],"kaoni":[0,16,0.0],"kheilani":[0,25,0.0],"kiptynn":[0,8,0.0],"leialani":[0,8,0.0],"lulwah":[0,8,0.0],"miyomi":[0,16,0.0],"myori":[0,27,0.0],"ozma":[0,8,0.0],"rishy":[0,13,0.0],"rivie":[0,42,0.0],"rufaida":[0,13,0.0],"rynnlee":[0,14,0.0],"wrenlyn":[0,24,0.0],"wrennly":[0,8,0.0],"xyelle":[0,35,0.0],"yesbeth":[0,59,0.0],"yulibeth":[0,8,0.0],"aagya":[0,19,0.0],"adaleth":[0,55,0.0],"afomiya":[0,7,0.0],"alienor":[0,7,0.0],"alisaie":[0,7,0.0],"allara":[0,7,0.0],"amihan":[0,7,0.0],"annaisha":[0,7,0.0],"arianely":[0,18,0.0],"atla":[0,7,0.0],"auriela":[0,27,0.0],"ayeli":[0,7,0.0],"ayrareddy":[0,12,0.0],"azilah":[0,7,0.0],"bibiaisha":[0,7,0.0],"cerai":[0,12,0.0],"chiloh":[15,14,0.0],"darelis":[0,20,0.0],"dazari":[0,7,0.0],"dovelyn":[0,15,0.0],"efat":[0,13,0.0],"effat":[0,29,0.0],"elisaria":[0,7,0.0],"esmeriah":[0,7,0.0],"ezmee":[0,7,0.0],"fall":[0,7,0.0],"hazelie":[0,7,0.0],"hazie":[0,14,0.0],"ihlani":[0,7,0.0],"junee":[0,15,0.0],"kehlana":[0,7,0.0],"khalesia":[0,7,0.0],"layklynn":[0,15,0.0],"luissa":[0,7,0.0],"macklee":[0,12,0.0],"mahanya":[0,7,0.0],"mehlanii":[0,7,0.0],"mehrin":[0,13,0.0],"mlani":[0,7,0.0],"musfira":[0,18,0.0],"naty":[0,7,0.0],"nazare":[0,12,0.0],"nelin":[0,7,0.0],"nixi":[0,7,0.0],"rubii":[0,7,0.0],"ryleejo":[0,7,0.0],"sabeel":[0,7,0.0],"selyse":[0,20,0.0],"sersi":[0,13,0.0],"tabasom":[0,7,0.0],"tilli":[0,12,0.0],"tomyris":[0,7,0.0],"vaiya":[0,7,0.0],"vaylynn":[0,7,0.0],"xilena":[0,28,0.0],"xylani":[0,56,0.0],"yumeko":[0,7,0.0],"zaura":[0,7,0.0],"zeneth":[0,7,0.0],"zephra":[0,7,0.0],"zouri":[0,7,0.0],"adyra":[0,6,0.0],"ahsani":[5,6,0.0],"alari":[0,49,0.0],"alayni":[0,25,0.0],"allenis":[0,11,0.0],"amayrah":[0,11,0.0],"amelyn":[0,6,0.0],"amni":[0,6,0.0],"analuna":[0,6,0.0],"anoria":[0,6,0.0],"aoibhinn":[0,6,0.0],"aphelia":[0,6,0.0],"arafa":[0,6,0.0],"arilena":[0,12,0.0],"arraiyah":[0,6,0.0],"arvika":[0,11,0.0],"aryha":[0,6,0.0],"asina":[0,6,0.0],"aunusti":[0,12,0.0],"aurelle":[0,6,0.0],"azeliah":[0,6,0.0],"bailani":[0,11,0.0],"blaykley":[0,6,0.0],"blesynn":[0,6,0.0],"catalella":[0,6,0.0],"dahab":[0,29,0.0],"debhani":[0,13,0.0],"eana":[0,11,0.0],"elaahi":[0,27,0.0],"ellanoir":[0,6,0.0],"ellinora":[0,6,0.0],"elonni":[0,17,0.0],"emeryrose":[0,13,0.0],"energi":[0,6,0.0],"erha":[0,31,0.0],"ethiopia":[0,6,0.0],"evalucia":[0,6,0.0],"ezelia":[0,6,0.0],"hallow":[0,13,0.0],"hanabi":[0,6,0.0],"harleaux":[0,12,0.0],"hayami":[0,26,0.0],"heisel":[0,6,0.0],"hermoni":[0,13,0.0],"ibadat":[0,32,0.0],"idelette":[0,6,0.0],"ilhaam":[0,6,0.0],"imora":[0,6,0.0],"imori":[0,6,0.0],"inayra":[0,11,0.0],"iylani":[0,14,0.0],"jamoura":[0,19,0.0],"janori":[0,11,0.0],"jawhara":[0,6,0.0],"jehylin":[0,6,0.0],"jeilanie":[0,6,0.0],"jherzi":[0,24,0.0],"kaizee":[0,6,0.0],"kanvi":[0,11,0.0],"kataleigha":[0,6,0.0],"kayarie":[0,6,0.0],"kaylonii":[0,6,0.0],"keioni":[0,6,0.0],"keoir":[0,6,0.0],"keveah":[0,11,0.0],"kiella":[0,6,0.0],"knoxlynn":[0,22,0.0],"koir":[0,21,0.0],"kollie":[0,6,0.0],"laielle":[0,6,0.0],"laioni":[0,11,0.0],"leera":[0,6,0.0],"leomi":[0,6,0.0],"lunalee":[0,6,0.0],"lunasofia":[0,6,0.0],"luxtyn":[0,6,0.0],"lynnlie":[0,6,0.0],"maevee":[0,12,0.0],"maezi":[0,6,0.0],"mahalina":[0,6,0.0],"masoka":[0,13,0.0],"melonnie":[0,6,0.0],"mesk":[0,13,0.0],"millierose":[0,11,0.0],"milou":[0,6,0.0],"nalai":[0,6,0.0],"nanala":[0,6,0.0],"naori":[0,21,0.0],"nasima":[0,6,0.0],"octavya":[0,13,0.0],"phyre":[0,6,0.0],"plumeria":[0,6,0.0],"queenesther":[0,6,0.0],"quinniyah":[0,6,0.0],"racelynn":[0,11,0.0],"rainlee":[0,6,0.0],"reichel":[0,11,0.0],"rhori":[0,6,0.0],"ridhika":[0,13,0.0],"rileyjo":[0,6,0.0],"rolynn":[0,6,0.0],"rufaidah":[0,11,0.0],"ryella":[0,36,0.0],"sagelynn":[0,21,0.0],"salamatu":[0,6,0.0],"samadhy":[0,22,0.0],"saniylah":[0,6,0.0],"sanvee":[0,6,0.0],"sarata":[0,6,0.0],"savannahrae":[0,6,0.0],"scarlettann":[0,6,0.0],"seilah":[0,28,0.0],"seine":[0,6,0.0],"seli":[0,11,0.0],"selvi":[0,11,0.0],"solette":[0,6,0.0],"solikha":[0,11,0.0],"sumira":[0,6,0.0],"synova":[0,15,0.0],"synphony":[0,6,0.0],"thayra":[0,11,0.0],"tiabeanie":[0,6,0.0],"trulynn":[0,17,0.0],"vini":[0,6,0.0],"vivenna":[0,11,0.0],"winslee":[0,13,0.0],"xailah":[0,13,0.0],"xailani":[0,6,0.0],"xayda":[0,12,0.0],"xyleigh":[0,12,0.0],"yameena":[0,6,0.0],"yangchen":[0,14,0.0],"yarina":[0,6,0.0],"yeri":[0,6,0.0],"yosuani":[0,44,0.0],"zaireth":[0,6,0.0],"zamila":[0,6,0.0],"zanovah":[0,18,0.0],"zelayah":[0,17,0.0],"zenaura":[0,6,0.0],"aadhvi":[0,5,0.0],"aailani":[0,5,0.0],"aarzu":[0,5,0.0],"aashvireddy":[0,5,0.0],"abigailjoy":[0,5,0.0],"achara":[0,5,0.0],"ahlanii":[0,16,0.0],"ahmila":[0,5,0.0],"ailanna":[0,27,0.0],"aivi":[0,5,0.0],"akame":[0,5,0.0],"alaunie":[0,5,0.0],"alexani":[0,5,0.0],"aleyzah":[0,5,0.0],"aloragrace":[0,5,0.0],"amelys":[0,5,0.0],"amirakle":[0,5,0.0],"amiralynn":[0,5,0.0],"amouria":[0,5,0.0],"anacaona":[0,5,0.0],"anovah":[0,10,0.0],"apricity":[0,5,0.0],"arelina":[0,5,0.0],"arianeli":[0,10,0.0],"arianeth":[0,5,0.0],"armauni":[0,5,0.0],"armoniee":[0,5,0.0],"arsheen":[0,5,0.0],"arvayah":[0,5,0.0],"aryzbeth":[0,5,0.0],"asrah":[0,5,0.0],"asude":[0,5,0.0],"athara":[0,5,0.0],"atlie":[0,5,0.0],"aveayah":[0,5,0.0],"avnee":[0,5,0.0],"ayansha":[0,5,0.0],"aylany":[0,56,0.0],"ayress":[0,5,0.0],"azahni":[0,5,0.0],"azalei":[0,5,0.0],"azalina":[0,5,0.0],"azela":[0,5,0.0],"azly":[0,5,0.0],"azoni":[0,5,0.0],"azouri":[0,5,0.0],"azraelle":[0,5,0.0],"banah":[0,5,0.0],"bardot":[0,5,0.0],"beautii":[0,5,0.0],"bellissima":[0,10,0.0],"blaklynn":[0,5,0.0],"blaykely":[0,5,0.0],"blaykelynn":[0,5,0.0],"blessiyn":[0,5,0.0],"brettleigh":[0,5,0.0],"brilani":[0,5,0.0],"calaia":[0,5,0.0],"castalia":[0,5,0.0],"chenai":[0,5,0.0],"cleodora":[0,5,0.0],"cloudy":[0,5,0.0],"cyxx":[43,5,0.0],"daanvi":[0,5,0.0],"dahila":[0,5,0.0],"daileth":[0,5,0.0],"daivi":[0,5,0.0],"danais":[0,13,0.0],"danelli":[0,10,0.0],"dassine":[0,5,0.0],"dayleni":[0,5,0.0],"deayla":[0,5,0.0],"demirah":[0,5,0.0],"denvyr":[5,10,0.0],"devanhy":[0,5,0.0],"deyanni":[0,5,0.0],"dhasia":[0,5,0.0],"dsani":[0,5,0.0],"ediani":[0,5,0.0],"eiyla":[0,10,0.0],"elaani":[0,5,0.0],"elaira":[0,11,0.0],"eleanorah":[0,12,0.0],"eliahana":[0,5,0.0],"eliiana":[0,5,0.0],"elladie":[0,11,0.0],"ellajade":[0,5,0.0],"elocin":[0,5,0.0],"elori":[0,5,0.0],"emrakel":[0,24,0.0],"enai":[6,5,0.0],"erya":[0,5,0.0],"esmarae":[0,5,0.0],"esmeree":[0,5,0.0],"ethena":[0,10,0.0],"ettalynn":[0,11,0.0],"evaleah":[0,5,0.0],"evangeli":[0,5,0.0],"evangelique":[0,5,0.0],"ezamae":[0,10,0.0],"fabianny":[0,5,0.0],"faila":[0,10,0.0],"fariya":[0,5,0.0],"fera":[0,10,0.0],"feyra":[0,11,0.0],"frayja":[0,5,0.0],"frimie":[0,5,0.0],"gemiah":[0,5,0.0],"gemmalee":[0,48,0.0],"genendel":[0,5,0.0],"gianara":[0,5,0.0],"giannamaria":[0,5,0.0],"giauna":[0,5,0.0],"gilani":[0,5,0.0],"gursifat":[0,15,0.0],"haizea":[0,5,0.0],"haper":[0,5,0.0],"havva":[0,5,0.0],"hecate":[0,5,0.0],"hollins":[0,21,0.0],"hoora":[0,5,0.0],"idun":[0,5,0.0],"iga":[0,5,0.0],"illumi":[0,10,0.0],"imade":[0,10,0.0],"inala":[0,5,0.0],"irareddy":[0,5,0.0],"isbah":[0,5,0.0],"italei":[0,11,0.0],"itzali":[0,5,0.0],"itze":[0,5,0.0],"izlah":[0,5,0.0],"jaanvika":[0,5,0.0],"jaap":[0,5,0.0],"jaiasia":[0,5,0.0],"jazylah":[0,5,0.0],"jehilin":[0,5,0.0],"jhea":[0,5,0.0],"joyella":[0,5,0.0],"jursi":[0,5,0.0],"jylah":[0,5,0.0],"kaizly":[0,5,0.0],"kalessy":[0,10,0.0],"kalsoom":[0,11,0.0],"kamanii":[0,5,0.0],"kanala":[0,5,0.0],"kanami":[0,10,0.0],"katla":[0,5,0.0],"kawehilani":[0,5,0.0],"kazari":[14,11,0.0],"kearii":[0,11,0.0],"kehlanirose":[0,5,0.0],"kelianys":[0,5,0.0],"kemistry":[0,26,0.0],"keytlin":[0,17,0.0],"khelany":[0,10,0.0],"khlover":[0,18,0.0],"klonni":[0,5,0.0],"knoxli":[0,5,0.0],"ksana":[0,5,0.0],"ksenija":[0,5,0.0],"kylanie":[0,5,0.0],"lailanii":[0,10,0.0],"lilithrose":[0,5,0.0],"lilyjo":[0,18,0.0],"loraleigh":[0,5,0.0],"lorelli":[0,5,0.0],"lorianny":[0,5,0.0],"losaline":[0,5,0.0],"lunar":[6,15,0.0],"lunaray":[0,10,0.0],"luxleigh":[0,5,0.0],"lyndis":[0,5,0.0],"maana":[0,5,0.0],"mackinsley":[0,5,0.0],"maeble":[0,5,0.0],"maeleen":[0,5,0.0],"maelly":[0,5,0.0],"maevalynn":[0,5,0.0],"maevelynn":[0,10,0.0],"maevrie":[0,5,0.0],"mahara":[0,5,0.0],"mahriam":[0,5,0.0],"maizlynn":[0,11,0.0],"malyun":[0,5,0.0],"manyla":[0,5,0.0],"marryjane":[0,5,0.0],"maverie":[0,12,0.0],"maydeli":[0,5,0.0],"maylanni":[0,5,0.0],"mayori":[0,5,0.0],"mazakeen":[0,5,0.0],"mazna":[0,12,0.0],"medusa":[0,5,0.0],"melala":[0,10,0.0],"menaye":[0,5,0.0],"mercan":[0,10,0.0],"milajade":[0,5,0.0],"mileina":[0,5,0.0],"miluv":[0,10,0.0],"milyanna":[0,5,0.0],"miyoni":[0,11,0.0],"monsae":[0,5,0.0],"moonee":[0,5,0.0],"moonlight":[0,5,0.0],"moska":[0,5,0.0],"mumtaaz":[0,5,0.0],"muri":[0,5,0.0],"mylyn":[0,5,0.0],"namal":[0,5,0.0],"namarii":[5,10,0.0],"namasvi":[0,11,0.0],"namii":[0,5,0.0],"nanati":[0,5,0.0],"naralee":[0,5,0.0],"nattalia":[0,5,0.0],"neilany":[0,22,0.0],"niella":[0,5,0.0],"nilou":[0,12,0.0],"nimari":[0,5,0.0],"nimerah":[0,10,0.0],"nishvika":[0,5,0.0],"noorie":[0,5,0.0],"norarose":[0,5,0.0],"norii":[0,13,0.0],"norseen":[0,5,0.0],"nyleia":[0,15,0.0],"nynaeve":[0,5,0.0],"nyraa":[0,5,0.0],"oana":[0,10,0.0],"oisha":[0,13,0.0],"oliv":[0,5,0.0],"oliviajane":[0,5,0.0],"ozra":[0,5,0.0],"parwana":[0,5,0.0],"pendo":[0,5,0.0],"posh":[0,5,0.0],"presslee":[0,5,0.0],"prophecy":[10,10,0.0],"qualani":[0,11,0.0],"raavee":[0,5,0.0],"rabaab":[6,21,0.0],"rahlynn":[0,5,0.0],"raign":[0,11,0.0],"ranni":[0,18,0.0],"rayaa":[0,5,0.0],"rhettleigh":[0,5,0.0],"rhowan":[5,5,0.0],"rhyn":[0,5,0.0],"rhynn":[0,5,0.0],"rienne":[0,5,0.0],"riverlynne":[0,10,0.0],"rivy":[0,5,0.0],"rooh":[0,17,0.0],"rosaliah":[0,10,0.0],"rozzi":[0,5,0.0],"ru":[0,12,0.0],"rubaani":[0,5,0.0],"rukhsana":[0,5,0.0],"sadiejo":[0,11,0.0],"saha":[0,5,0.0],"saiesha":[0,10,0.0],"saleya":[0,10,0.0],"salym":[0,5,0.0],"samadi":[0,13,0.0],"saphari":[0,5,0.0],"saphir":[5,5,0.0],"saylin":[0,5,0.0],"sedinam":[0,5,0.0],"seoul":[9,10,0.0],"seyori":[0,10,0.0],"sharvari":[0,10,0.0],"shefa":[0,5,0.0],"shivaya":[5,5,0.0],"sisa":[0,5,0.0],"skarlit":[0,5,0.0],"skylark":[0,5,0.0],"sophiaelizabeth":[0,5,0.0],"sossy":[0,11,0.0],"souleen":[0,5,0.0],"starly":[0,5,0.0],"suanny":[0,5,0.0],"suheila":[0,5,0.0],"surry":[0,5,0.0],"sylvianna":[0,10,0.0],"tayloni":[0,18,0.0],"temah":[0,5,0.0],"theorie":[0,10,0.0],"tildyn":[0,5,0.0],"tissaia":[0,15,0.0],"traylynn":[0,5,0.0],"tridha":[0,19,0.0],"tsiyon":[0,5,0.0],"vaanika":[0,5,0.0],"vaeya":[0,11,0.0],"valani":[0,15,0.0],"valeryn":[0,5,0.0],"valyrie":[0,5,0.0],"velour":[0,10,0.0],"velzy":[0,18,0.0],"veyla":[0,5,0.0],"villanelle":[0,5,0.0],"visenya":[0,25,0.0],"vylah":[0,10,0.0],"wedu":[0,5,0.0],"winterr":[0,5,0.0],"withney":[0,12,0.0],"wrennlee":[0,11,0.0],"wrynley":[0,10,0.0],"xaliyah":[0,11,0.0],"xeilani":[0,5,0.0],"xelena":[0,10,0.0],"xenaida":[0,5,0.0],"xiomi":[0,12,0.0],"xoco":[0,5,0.0],"xyliyah":[0,5,0.0],"xzyla":[0,5,0.0],"yahretzi":[0,5,0.0],"yazari":[0,11,0.0],"yhari":[0,5,0.0],"yhuri":[0,5,0.0],"yildiz":[0,10,0.0],"youmna":[0,12,0.0],"youran":[0,5,0.0],"yuiza":[0,10,0.0],"yusairah":[0,5,0.0],"zaiba":[0,5,0.0],"zalora":[0,5,0.0],"zamadhi":[0,12,0.0],"zary":[0,5,0.0],"zaveyah":[0,11,0.0],"zayeli":[0,12,0.0],"zhalani":[0,5,0.0],"zuhaira":[0,5,0.0],"zylayah":[0,5,0.0],"zymani":[0,5,0.0],"maziyon":[128,0,0.4214],"kaiyzen":[87,0,0.0],"jahkarri":[69,0,0.0],"xacari":[35,0,0.0],"amiriyon":[41,0,0.0],"heziah":[34,0,0.0],"airmiess":[32,0,0.0],"kaymere":[14,0,0.0],"khyrein":[51,0,0.0],"yoisel":[14,0,0.0],"caylix":[44,0,0.0],"xaivius":[13,0,0.0],"enael":[33,0,0.0],"jaimeer":[37,0,0.0],"kaymir":[19,0,0.0],"neyzan":[35,0,0.0],"asen":[11,0,0.0],"caizer":[11,0,0.0],"nawab":[30,0,0.0],"uziyah":[11,0,0.0],"zoro":[30,0,0.0],"boman":[15,0,0.0],"drakeo":[23,0,0.0],"jahzeir":[10,0,0.0],"jettsyn":[16,0,0.0],"kalian":[22,0,0.0],"ahziel":[22,0,0.0],"asun":[14,0,0.0],"cheskal":[14,0,0.0],"claysen":[9,0,0.0],"dawensky":[28,0,0.0],"ezz":[29,0,0.0],"giveon":[21,0,0.0],"kreid":[9,0,0.0],"raymari":[9,0,0.0],"record":[65,0,0.0],"xailen":[9,0,0.0],"aarshiv":[8,0,0.0],"ahson":[13,0,0.0],"arqam":[8,0,0.0],"baheer":[8,0,0.0],"bhodie":[13,0,0.0],"cardiff":[13,0,0.0],"cazmir":[8,0,0.0],"demiri":[63,0,0.0],"densley":[20,0,0.0],"hendon":[53,0,0.0],"iganze":[25,0,0.0],"ikaris":[8,0,0.0],"kaiyir":[34,0,0.0],"kosmo":[17,0,0.0],"marvensky":[19,0,0.0],"meruem":[8,0,0.0],"muhammadomar":[8,0,0.0],"siddhik":[8,0,0.0],"subhanullah":[13,0,0.0],"xandro":[21,0,0.0],"zyland":[15,0,0.0],"amanaki":[7,0,0.0],"arceus":[7,0,0.0],"artyst":[19,0,0.0],"asce":[28,0,0.0],"boudreaux":[17,0,0.0],"breckett":[15,0,0.0],"bru":[16,0,0.0],"dasher":[21,0,0.0],"dejounte":[7,0,0.0],"edian":[12,0,0.0],"eliante":[7,0,0.0],"eliyan":[16,0,0.0],"ezrakai":[12,0,0.0],"farmanullah":[7,0,0.0],"holstyn":[62,0,0.0],"izar":[31,0,0.0],"jahsani":[13,0,0.0],"jakhyree":[7,0,0.0],"jasoor":[12,0,0.0],"jaydens":[33,0,0.0],"jodh":[18,0,0.0],"johnkerry":[28,0,0.0],"kaikena":[7,0,0.0],"kailoh":[44,5,0.0],"khyzier":[19,0,0.0],"kiyaansh":[7,0,0.0],"mino":[18,0,0.0],"mirio":[12,0,0.0],"naziir":[7,0,0.0],"nikari":[7,0,0.0],"nyzeir":[14,0,0.0],"onnix":[7,0,0.0],"pluto":[12,0,0.0],"rachamim":[7,0,0.0],"rohm":[7,0,0.0],"roylan":[7,0,0.0],"rudiger":[7,0,0.0],"sabr":[27,6,0.0],"sanmay":[14,0,0.0],"sevenn":[20,0,0.0],"shukuru":[13,0,0.0],"skandha":[7,0,0.0],"sofonias":[7,0,0.0],"spruce":[7,0,0.0],"srijay":[7,0,0.0],"tegveer":[7,0,0.0],"woodensky":[16,0,0.0],"yahziel":[19,0,0.0],"yisen":[7,0,0.0],"yuno":[7,0,0.0],"zeeland":[17,0,0.0],"zunair":[20,0,0.0],"zyiel":[7,0,0.0],"aaryanreddy":[6,0,0.0],"aayce":[6,0,0.0],"aizan":[13,0,0.0],"alhagie":[6,0,0.0],"alqasim":[6,0,0.0],"alteo":[12,0,0.0],"aransh":[14,0,0.0],"arteo":[19,0,0.0],"asafe":[14,0,0.0],"audren":[6,0,0.0],"azare":[6,0,0.0],"azarye":[30,0,0.0],"azat":[6,0,0.0],"bahir":[6,0,0.0],"baki":[13,0,0.0],"belami":[6,0,0.0],"binyumin":[13,0,0.0],"caelus":[28,0,0.0],"caizen":[24,0,0.0],"cashmier":[6,0,0.0],"coa":[19,0,0.0],"davensky":[16,0,0.0],"deyron":[6,0,0.0],"dixxon":[13,0,0.0],"dumier":[6,0,0.0],"eidhan":[17,0,0.0],"estyn":[6,0,0.0],"ezyiah":[6,0,0.0],"fiorenzo":[6,0,0.0],"francklin":[6,0,0.0],"giosue":[6,0,0.0],"grand":[6,0,0.0],"gurwaris":[6,0,0.0],"hareth":[6,0,0.0],"huxly":[13,0,0.0],"hyperion":[6,0,0.0],"ibrar":[6,0,0.0],"ionut":[6,0,0.0],"ismoil":[12,0,0.0],"izayus":[16,0,0.0],"jabr":[6,0,0.0],"jaiere":[6,0,0.0],"jaimeir":[11,0,0.0],"jamazi":[17,0,0.0],"jayair":[11,0,0.0],"jeyco":[14,0,0.0],"kadhir":[6,0,0.0],"kahni":[6,0,0.0],"kaicere":[6,0,0.0],"kairell":[6,0,0.0],"kaiyair":[19,0,0.0],"kelix":[6,0,0.0],"kerlens":[16,0,0.0],"khaiza":[6,0,0.0],"khiair":[6,0,0.0],"khiza":[11,0,0.0],"kigen":[6,0,0.0],"kobra":[6,0,0.0],"kopeland":[14,0,0.0],"kopen":[12,0,0.0],"langsten":[6,0,0.0],"leio":[6,0,0.0],"lias":[11,0,0.0],"lukasey":[13,0,0.0],"luxon":[11,0,0.0],"majhor":[6,0,0.0],"malkom":[6,0,0.0],"malohi":[6,0,0.0],"manay":[12,0,0.0],"masimo":[6,0,0.0],"mmunga":[13,0,0.0],"mohammadosman":[6,0,0.0],"novin":[11,0,0.0],"nysier":[6,0,0.0],"odysseas":[6,0,0.0],"osayd":[20,0,0.0],"parvaan":[6,0,0.0],"paxxton":[11,0,0.0],"rakhari":[6,0,0.0],"rawi":[6,0,0.0],"rejan":[6,0,0.0],"roodley":[19,0,0.0],"rudved":[13,0,0.0],"sacai":[13,0,0.0],"sahad":[6,0,0.0],"sahm":[6,0,0.0],"samire":[12,0,0.0],"seviin":[6,0,0.0],"sneider":[6,0,0.0],"steevens":[6,0,0.0],"tarlo":[11,0,0.0],"tevari":[6,0,0.0],"truist":[6,0,0.0],"winstyn":[11,0,0.0],"wit":[6,0,0.0],"wyzdom":[6,5,0.0],"xiyon":[11,0,0.0],"yoshon":[6,0,0.0],"zeydan":[6,0,0.0],"zillion":[26,0,0.0],"ziyaan":[20,0,0.0],"zydn":[26,0,0.0],"zypher":[11,0,0.0],"aadhrit":[5,0,0.0],"aavyaan":[5,0,0.0],"ababacar":[5,0,0.0],"abdulmateen":[5,0,0.0],"addox":[5,0,0.0],"adino":[15,0,0.0],"ahmadi":[5,0,0.0],"ahmadullah":[11,0,0.0],"ahonor":[5,0,0.0],"aidoneus":[10,0,0.0],"ailo":[5,0,0.0],"aimilios":[11,0,0.0],"akan":[5,0,0.0],"alonsso":[5,0,0.0],"alphaeus":[5,0,0.0],"amirian":[10,0,0.0],"andor":[16,0,0.0],"aniyas":[5,0,0.0],"arcelio":[5,0,0.0],"armanullah":[5,0,0.0],"ashmir":[10,0,0.0],"asmodeus":[17,0,0.0],"auro":[5,0,0.0],"aviano":[10,0,0.0],"axxl":[5,0,0.0],"axziel":[5,0,0.0],"aysar":[5,0,0.0],"ayzin":[10,0,0.0],"azakai":[5,0,0.0],"azane":[5,0,0.0],"azurite":[5,0,0.0],"bahari":[10,0,0.0],"bahr":[17,0,0.0],"bilolbek":[5,0,0.0],"briggsten":[5,0,0.0],"brinxton":[10,0,0.0],"bruer":[13,0,0.0],"brynjar":[5,0,0.0],"buraq":[5,0,0.0],"caiser":[10,0,0.0],"carim":[12,0,0.0],"caysyn":[5,0,0.0],"cazimir":[11,0,0.0],"cosmin":[5,0,0.0],"crux":[5,0,0.0],"dacarii":[5,0,0.0],"dahvi":[5,0,0.0],"danero":[5,0,0.0],"davonni":[5,0,0.0],"dayaan":[5,0,0.0],"dekyrie":[5,0,0.0],"demirr":[5,0,0.0],"dessalines":[5,0,0.0],"devik":[5,0,0.0],"dilmer":[10,0,0.0],"dmiri":[5,0,0.0],"dmitrii":[5,0,0.0],"eklavya":[15,0,0.0],"eleos":[5,0,0.0],"elijahkai":[5,0,0.0],"elouan":[5,0,0.0],"elrik":[5,0,0.0],"endrik":[14,0,0.0],"enkidu":[5,0,0.0],"euler":[5,0,0.0],"eydrian":[11,0,0.0],"ezden":[5,0,0.0],"feranmi":[5,0,0.0],"ferdows":[5,0,0.0],"fyn":[5,0,0.0],"gavrilo":[5,0,0.0],"gazi":[5,0,0.0],"gifted":[5,0,0.0],"haciel":[5,0,0.0],"hail":[5,0,0.0],"haisen":[5,0,0.0],"hami":[5,0,0.0],"hayez":[13,0,0.0],"hazam":[5,0,0.0],"heytor":[5,0,0.0],"hikmatullah":[5,0,0.0],"huddson":[12,0,0.0],"huxston":[5,0,0.0],"ikemba":[5,0,0.0],"ilio":[5,0,0.0],"illian":[14,0,0.0],"imperial":[5,0,0.0],"inder":[14,0,0.0],"irakoze":[5,0,0.0],"izon":[5,0,0.0],"jachari":[5,0,0.0],"jahmyr":[59,0,0.0],"jaiyer":[5,0,0.0],"jayder":[22,0,0.0],"jaymoni":[5,0,0.0],"jaysiel":[5,0,0.0],"jeneral":[5,0,0.0],"jepp":[5,0,0.0],"jhi":[5,0,0.0],"jokobe":[5,0,0.0],"joravar":[10,0,0.0],"juancamilo":[5,0,0.0],"kaier":[21,0,0.0],"kaijai":[5,0,0.0],"kairus":[22,0,0.0],"kaiyro":[5,0,0.0],"kaiz":[5,0,0.0],"kajai":[12,0,0.0],"kajani":[12,0,0.0],"karrion":[10,0,0.0],"kaydrien":[5,0,0.0],"kaysion":[5,0,0.0],"kazar":[10,0,0.0],"kells":[5,0,0.0],"kemir":[5,0,0.0],"keythan":[5,0,0.0],"khavon":[10,0,0.0],"khisyn":[5,0,0.0],"khysin":[5,0,0.0],"kiair":[5,0,0.0],"kingly":[5,0,0.0],"kohenn":[5,0,0.0],"kozmo":[10,0,0.0],"kredence":[5,0,0.0],"kreo":[5,0,0.0],"kriyaan":[5,0,0.0],"kyior":[12,5,0.0],"kylain":[11,0,0.0],"kymeire":[5,0,0.0],"kyriq":[14,0,0.0],"laprince":[5,0,0.0],"lassen":[5,0,0.0],"lauchlan":[5,0,0.0],"leano":[15,0,0.0],"leonydas":[5,0,0.0],"lokela":[5,0,0.0],"luam":[11,0,0.0],"luey":[5,0,0.0],"luxor":[5,0,0.0],"luxxen":[32,0,0.0],"lynnx":[15,5,0.0],"mahe":[5,0,0.0],"mahkari":[13,0,0.0],"majai":[5,0,0.0],"makoah":[18,0,0.0],"malachiah":[5,0,0.0],"malachii":[10,0,0.0],"mardoche":[5,0,0.0],"matius":[5,0,0.0],"matvii":[23,0,0.0],"mazai":[5,0,0.0],"mehraj":[5,0,0.0],"mekari":[11,0,0.0],"miheir":[13,0,0.0],"mikolai":[5,0,0.0],"mohammadyusuf":[5,0,0.0],"mojave":[5,0,0.0],"mosaic":[5,0,0.0],"muhammadamir":[11,0,0.0],"muhammadhassan":[11,0,0.0],"muhammadyahya":[5,0,0.0],"munasir":[5,0,0.0],"muyang":[5,0,0.0],"myier":[11,0,0.0],"naem":[5,0,0.0],"nakobe":[16,0,0.0],"nanakofi":[5,0,0.0],"nasaan":[10,0,0.0],"navir":[10,0,0.0],"nehaan":[5,0,0.0],"nikoah":[11,0,0.0],"niyear":[15,0,0.0],"noraiz":[17,0,0.0],"nyheir":[10,0,0.0],"nyire":[5,0,0.0],"nyzire":[13,0,0.0],"obaidullah":[10,0,0.0],"obieze":[5,0,0.0],"oguzhan":[5,0,0.0],"ohlen":[5,0,0.0],"oles":[5,0,0.0],"orhaan":[11,0,0.0],"pamir":[5,0,0.0],"phorever":[5,6,0.0],"raffaello":[10,0,0.0],"raim":[5,0,0.0],"ramiri":[5,0,0.0],"reacher":[24,0,0.0],"rennix":[22,0,0.0],"rexlee":[5,0,0.0],"rez":[20,0,0.0],"rhoyal":[10,0,0.0],"rhyme":[11,0,0.0],"ripkin":[5,0,0.0],"riv":[5,0,0.0],"rival":[5,0,0.0],"riverton":[10,0,0.0],"roronoa":[13,0,0.0],"ryles":[13,0,0.0],"ryuk":[5,0,0.0],"safiullah":[5,0,0.0],"saiyam":[5,0,0.0],"sakhari":[5,0,0.0],"samman":[5,0,0.0],"sanvik":[5,0,0.0],"sanvith":[5,0,0.0],"sehvyn":[5,0,0.0],"serignesaliou":[5,0,0.0],"shivik":[5,0,0.0],"shoal":[5,0,0.0],"sihtric":[10,0,0.0],"skyis":[5,0,0.0],"sofiane":[5,0,0.0],"suade":[5,0,0.0],"suvam":[5,0,0.0],"swede":[5,0,0.0],"tahiel":[5,0,0.0],"tayzin":[5,0,0.0],"temidire":[5,0,0.0],"tiamo":[5,0,0.0],"tribe":[5,0,0.0],"trishiv":[13,0,0.0],"tumaini":[5,0,0.0],"tykari":[5,0,0.0],"tyrinn":[5,0,0.0],"tyzier":[12,0,0.0],"tzadik":[5,0,0.0],"tzemach":[5,0,0.0],"udham":[5,0,0.0],"vandal":[5,0,0.0],"vedhant":[5,0,0.0],"vidar":[11,0,0.0],"vikramaditya":[16,0,0.0],"vitto":[5,0,0.0],"wedson":[5,0,0.0],"westlan":[5,0,0.0],"xakari":[16,0,0.0],"xandros":[5,0,0.0],"xylin":[14,0,0.0],"yahdiel":[5,0,0.0],"yahyaa":[5,0,0.0],"yashvin":[12,0,0.0],"yisreal":[5,0,0.0],"yoakin":[12,0,0.0],"ysai":[5,0,0.0],"zahaan":[13,0,0.0],"zahed":[5,0,0.0],"zakarion":[5,0,0.0],"zamaar":[5,0,0.0],"zehn":[5,0,0.0],"ziri":[5,0,0.0],"ziyaire":[5,0,0.0],"zorro":[12,0,0.0],"zoumana":[5,0,0.0],"rumani":[11,200,0.4406],"cimani":[5,176,0.4391],"naiari":[0,261,0.4833],"azaylie":[0,87,0.0],"nizaraly":[0,38,0.0],"seoni":[0,95,0.0],"aryya":[0,41,0.0],"aluney":[0,35,0.0],"yanaisy":[0,26,0.0],"yuleini":[0,24,0.0],"yameiry":[0,18,0.0],"deriany":[0,17,0.0],"adalett":[0,26,0.0],"alicent":[0,40,0.0],"waziha":[0,29,0.0],"dayali":[0,38,0.0],"ketzali":[0,27,0.0],"aesira":[0,22,0.0],"biani":[0,19,0.0],"izariya":[0,13,0.0],"jazaely":[0,23,0.0],"mariham":[0,25,0.0],"nazaia":[0,37,0.0],"shrivi":[0,29,0.0],"zelyiana":[0,29,0.0],"axyla":[0,22,0.0],"storiee":[0,29,0.0],"yelenny":[0,20,0.0],"ahlora":[0,11,0.0],"barkat":[0,26,0.0],"ishira":[0,27,0.0],"jaretssy":[0,19,0.0],"keyorie":[0,11,0.0],"nehmat":[0,17,0.0],"rhayn":[0,28,0.0],"savanni":[0,22,0.0],"sheynnis":[0,33,0.0],"solomiia":[0,20,0.0],"xanthi":[0,21,0.0],"ahzuri":[0,10,0.0],"ailiany":[0,22,0.0],"aquetzali":[0,16,0.0],"ifora":[0,18,0.0],"maisleigh":[0,10,0.0],"marliya":[0,10,0.0],"mulanii":[0,15,0.0],"oveah":[0,10,0.0],"rhaena":[0,31,0.0],"riani":[0,10,0.0],"alessie":[0,9,0.0],"azary":[0,9,0.0],"croia":[0,20,0.0],"ehika":[0,9,0.0],"eilaf":[0,18,0.0],"hrida":[0,26,0.0],"kaihlany":[0,9,0.0],"luxuri":[0,14,0.0],"mawaddah":[0,14,0.0],"mehra":[0,14,0.0],"meiarra":[0,9,0.0],"miyouri":[0,14,0.0],"naiella":[0,9,0.0],"saiyori":[0,9,0.0],"truveya":[0,9,0.0],"tsireya":[0,18,0.0],"zayvia":[0,9,0.0],"zyanni":[0,9,0.0],"zynecia":[0,9,0.0],"adalette":[0,14,0.0],"adaolisa":[0,8,0.0],"anggy":[0,8,0.0],"auzaria":[0,8,0.0],"ayori":[0,14,0.0],"cehlani":[0,8,0.0],"chosynn":[0,13,0.0],"dalahni":[0,16,0.0],"deleiza":[0,22,0.0],"digiannia":[0,8,0.0],"elunay":[0,8,0.0],"eylen":[0,18,0.0],"ezalea":[0,8,0.0],"ishareddy":[0,17,0.0],"kailiani":[0,8,0.0],"kayora":[0,17,0.0],"lewhat":[0,8,0.0],"maevie":[0,20,0.0],"milki":[0,13,0.0],"naiayla":[0,22,0.0],"navvy":[0,13,0.0],"nyielle":[0,18,0.0],"parla":[0,22,0.0],"rennley":[0,8,0.0],"rouss":[0,15,0.0],"samoura":[0,8,0.0],"wrynleigh":[0,21,0.0],"xenobia":[0,8,0.0],"yahlani":[0,14,0.0],"yuniza":[0,8,0.0],"zaelani":[0,16,0.0],"ablessyn":[0,12,0.0],"adeera":[0,7,0.0],"aemma":[0,7,0.0],"ahmeira":[0,12,0.0],"airee":[0,7,0.0],"aleinad":[0,7,0.0],"amirianna":[0,13,0.0],"anelysse":[0,7,0.0],"anuli":[0,12,0.0],"aunysti":[0,7,0.0],"auriani":[0,7,0.0],"avyuktha":[0,17,0.0],"chimnora":[0,7,0.0],"darelin":[0,7,0.0],"delaneigh":[0,7,0.0],"eeshani":[0,7,0.0],"ezalia":[0,7,0.0],"feza":[0,14,0.0],"freydis":[0,21,0.0],"helany":[0,13,0.0],"heleni":[0,7,0.0],"heyzel":[0,7,0.0],"idaliah":[0,7,0.0],"jaioni":[0,7,0.0],"jasoni":[0,12,0.0],"kaelli":[0,7,0.0],"kayzie":[0,7,0.0],"keshavi":[0,13,0.0],"khalanni":[0,7,0.0],"layklyn":[0,12,0.0],"lehia":[0,7,0.0],"leysi":[0,7,0.0],"maileny":[0,12,0.0],"mior":[0,7,0.0],"miyonni":[0,7,0.0],"namora":[0,13,0.0],"nihirareddy":[0,14,0.0],"noramae":[0,7,0.0],"poetic":[0,7,0.0],"rayiah":[0,7,0.0],"renzi":[0,7,0.0],"rivyn":[0,7,0.0],"row":[0,13,0.0],"ruanshi":[0,17,0.0],"ruemani":[0,20,0.0],"ruhaani":[0,17,0.0],"seonie":[0,7,0.0],"sevani":[0,7,0.0],"seyani":[0,13,0.0],"sheni":[0,7,0.0],"shlay":[0,12,0.0],"solany":[0,7,0.0],"tullulah":[0,14,0.0],"vaamika":[0,7,0.0],"valloleth":[0,14,0.0],"vaylee":[0,7,0.0],"viradhya":[0,15,0.0],"winonna":[0,12,0.0],"xanna":[0,7,0.0],"yassira":[0,7,0.0],"zameera":[0,7,0.0],"zavina":[0,13,0.0],"zepplynn":[0,13,0.0],"zeylani":[0,12,0.0],"zuany":[0,7,0.0],"zuhrah":[0,7,0.0],"aani":[0,6,0.0],"adanaya":[0,6,0.0],"aeilani":[0,6,0.0],"ahado":[0,6,0.0],"alainy":[0,11,0.0],"ameliamarie":[0,6,0.0],"amhara":[0,6,0.0],"amouraa":[0,6,0.0],"anthonela":[0,6,0.0],"anylee":[0,6,0.0],"aryna":[0,13,0.0],"asari":[0,6,0.0],"ashaia":[0,17,0.0],"asiye":[0,6,0.0],"aurely":[0,6,0.0],"avaly":[0,6,0.0],"avanie":[0,11,0.0],"ayella":[0,6,0.0],"aylarae":[0,6,0.0],"azahri":[0,6,0.0],"bexlei":[0,6,0.0],"bibihawa":[0,12,0.0],"chantzy":[0,6,0.0],"cieyana":[0,15,0.0],"dalanni":[0,13,0.0],"danaica":[0,11,0.0],"danova":[0,6,0.0],"dayliani":[0,6,0.0],"dearii":[0,6,0.0],"delizah":[0,14,0.0],"devahni":[0,6,0.0],"dhemilly":[0,6,0.0],"eilla":[0,6,0.0],"elianet":[0,6,0.0],"elliany":[0,6,0.0],"elsea":[0,6,0.0],"elswyth":[0,6,0.0],"emerynn":[0,6,0.0],"emiliyah":[0,6,0.0],"emmaliz":[0,6,0.0],"emriella":[0,24,0.0],"enayat":[0,12,0.0],"estherline":[0,6,0.0],"evara":[0,30,0.0],"evelynmae":[0,6,0.0],"ezari":[5,6,0.0],"feya":[0,11,0.0],"flynne":[0,6,0.0],"giyani":[0,6,0.0],"hasrat":[0,13,0.0],"haumea":[0,6,0.0],"henza":[0,13,0.0],"heysell":[0,12,0.0],"idiatou":[0,11,0.0],"iluminada":[0,6,0.0],"iraya":[0,6,0.0],"irza":[0,6,0.0],"iselynn":[0,12,0.0],"islyn":[0,6,0.0],"itotiani":[0,6,0.0],"izari":[0,6,0.0],"izayana":[0,6,0.0],"jalonii":[0,6,0.0],"jazhara":[0,6,0.0],"jleia":[0,6,0.0],"kaheli":[0,6,0.0],"kaieli":[0,12,0.0],"kayeli":[0,11,0.0],"kazelyn":[0,6,0.0],"kellani":[0,6,0.0],"keyior":[5,6,0.0],"kindness":[0,6,0.0],"kismat":[0,6,0.0],"knoxly":[5,6,0.0],"kymeria":[0,6,0.0],"lahia":[0,12,0.0],"laniee":[0,6,0.0],"leihana":[0,6,0.0],"lilyjane":[0,6,0.0],"liyara":[0,6,0.0],"loveleigh":[0,6,0.0],"lylamae":[0,6,0.0],"lyryc":[0,6,0.0],"maelen":[0,6,0.0],"maeloni":[0,6,0.0],"mahidevran":[0,6,0.0],"mahloni":[0,6,0.0],"marianie":[0,6,0.0],"marieth":[0,11,0.0],"marthina":[0,6,0.0],"mayvee":[0,12,0.0],"mlasi":[0,11,0.0],"mwangaza":[0,13,0.0],"mylarae":[0,6,0.0],"nahmi":[0,13,0.0],"naica":[0,12,0.0],"namoni":[0,6,0.0],"native":[0,6,0.0],"nizarely":[0,6,0.0],"omaima":[0,6,0.0],"oslin":[0,11,0.0],"prahi":[0,6,0.0],"radleigh":[0,6,0.0],"railani":[0,6,0.0],"raphtalia":[0,6,0.0],"rawaa":[0,6,0.0],"rora":[0,6,0.0],"rosemina":[0,6,0.0],"ruh":[0,6,0.0],"ryklynn":[0,6,0.0],"ryza":[0,6,0.0],"saigelynn":[0,6,0.0],"saiori":[0,12,0.0],"seetha":[0,6,0.0],"selani":[0,6,0.0],"sofiia":[0,21,0.0],"syha":[0,6,0.0],"tayyiba":[0,6,0.0],"tearii":[0,21,0.0],"tesni":[0,11,0.0],"tullsa":[0,6,0.0],"tzila":[0,6,0.0],"uni":[0,6,0.0],"vagmi":[0,13,0.0],"vrisha":[0,6,0.0],"wilianny":[0,14,0.0],"winslie":[0,27,0.0],"xilah":[0,6,0.0],"xilei":[0,6,0.0],"xiolani":[0,6,0.0],"xoelie":[0,12,0.0],"xolany":[0,12,0.0],"yanaya":[0,6,0.0],"yaniyla":[0,6,0.0],"yarra":[0,6,0.0],"yaryna":[0,12,0.0],"yaseera":[0,6,0.0],"yuleiny":[0,12,0.0],"zaiori":[0,12,0.0],"zarissa":[0,6,0.0],"zaveya":[0,21,0.0],"zeanni":[0,6,0.0],"zoeli":[0,11,0.0],"zurmani":[0,21,0.0],"zynn":[0,6,0.0],"zynnia":[0,6,0.0],"adelayna":[0,5,0.0],"adriely":[0,12,0.0],"ahrin":[0,5,0.0],"ainnara":[0,5,0.0],"airareddy":[0,10,0.0],"airella":[0,5,0.0],"aliylah":[0,10,0.0],"alizeth":[0,5,0.0],"allira":[0,5,0.0],"alluka":[0,5,0.0],"alorra":[0,5,0.0],"alveera":[0,12,0.0],"amarigrace":[0,5,0.0],"ameliajames":[0,5,0.0],"anastasiia":[0,5,0.0],"anayaliz":[0,5,0.0],"aneyla":[0,5,0.0],"anoud":[0,5,0.0],"aomi":[0,13,0.0],"araela":[0,5,0.0],"araylah":[0,12,0.0],"arelyz":[0,5,0.0],"arietty":[0,5,0.0],"ariiyah":[0,5,0.0],"ariyaa":[0,5,0.0],"armi":[0,5,0.0],"atheia":[0,5,0.0],"athenah":[0,5,0.0],"athenas":[0,10,0.0],"audynn":[0,5,0.0],"avany":[0,12,0.0],"aveiyah":[0,5,0.0],"avienna":[0,5,0.0],"ayanfeoluwa":[0,5,0.0],"aydana":[0,5,0.0],"aylanny":[0,10,0.0],"aylette":[0,5,0.0],"aynaz":[0,5,0.0],"azailah":[0,10,0.0],"azhaar":[0,5,0.0],"bessan":[0,5,0.0],"bethesda":[0,5,0.0],"blume":[0,5,0.0],"brazyl":[0,5,0.0],"briyani":[0,5,0.0],"bryxlee":[0,5,0.0],"calaiyah":[0,13,0.0],"calliandra":[0,5,0.0],"calluna":[0,5,0.0],"camiri":[7,5,0.0],"carmoni":[0,5,0.0],"catleya":[0,5,0.0],"ceilani":[0,5,0.0],"chise":[0,5,0.0],"chyloh":[0,5,0.0],"daani":[0,5,0.0],"daislynn":[0,5,0.0],"dakylah":[0,5,0.0],"dalailah":[0,5,0.0],"dameli":[0,5,0.0],"darii":[0,10,0.0],"darlyng":[0,5,0.0],"devisha":[0,11,0.0],"dharani":[0,11,0.0],"divyana":[0,5,0.0],"doxa":[0,5,0.0],"druvika":[0,5,0.0],"ebadat":[0,5,0.0],"ebyan":[0,5,0.0],"ehi":[0,5,0.0],"elenarose":[0,5,0.0],"elevyn":[0,12,0.0],"elijana":[0,5,0.0],"ellaia":[0,5,0.0],"ellawynn":[0,11,0.0],"elloa":[0,5,0.0],"elyiana":[0,5,0.0],"embrace":[0,5,0.0],"emelisse":[0,10,0.0],"emeriee":[0,5,0.0],"emoura":[0,5,0.0],"energy":[0,10,0.0],"esmei":[0,5,0.0],"esmery":[0,5,0.0],"ettalee":[0,5,0.0],"euriyah":[0,5,0.0],"everlyee":[0,5,0.0],"excellence":[0,5,0.0],"ezmarie":[0,5,0.0],"feriha":[0,5,0.0],"fiia":[0,5,0.0],"fnu":[0,5,0.0],"gaeli":[0,5,0.0],"glika":[0,11,0.0],"greyshell":[0,5,0.0],"hadisa":[0,5,0.0],"haimi":[0,10,0.0],"haiza":[0,5,0.0],"hanami":[0,5,0.0],"harperrose":[0,5,0.0],"hatten":[0,5,0.0],"ikeoluwa":[0,5,0.0],"ilyah":[0,5,0.0],"ivanni":[0,5,0.0],"ivara":[0,10,0.0],"iyal":[0,18,0.0],"iyris":[0,5,0.0],"izarayla":[0,13,0.0],"izariyah":[0,5,0.0],"jahnova":[0,10,0.0],"jailahni":[0,5,0.0],"jalonie":[0,5,0.0],"japnaaz":[0,10,0.0],"jashly":[0,5,0.0],"jashvi":[0,5,0.0],"jaylanna":[0,5,0.0],"jazarae":[0,5,0.0],"jazarie":[0,5,0.0],"jherzee":[0,5,0.0],"johely":[0,5,0.0],"joriyah":[0,5,0.0],"josiemae":[0,11,0.0],"julan":[0,11,0.0],"junissa":[0,5,0.0],"juree":[0,5,0.0],"jurmani":[0,5,0.0],"kabrielle":[0,5,0.0],"kaezlynn":[0,5,0.0],"kahmyla":[0,5,0.0],"kaimoni":[7,5,0.0],"kaioni":[0,5,0.0],"kaiora":[0,13,0.0],"kaisynn":[0,5,0.0],"kaiyori":[0,5,0.0],"karti":[0,5,0.0],"kataliah":[0,10,0.0],"katorah":[0,5,0.0],"kavery":[0,10,0.0],"keanii":[0,5,0.0],"kehilany":[0,5,0.0],"kehlanee":[0,5,0.0],"keihlany":[0,5,0.0],"kelonni":[0,5,0.0],"kenziee":[0,5,0.0],"ketzy":[0,5,0.0],"keylahni":[0,5,0.0],"keylanis":[0,5,0.0],"khalari":[0,10,0.0],"khemistri":[0,5,0.0],"khyleah":[0,5,0.0],"kiami":[0,5,0.0],"kiansha":[0,12,0.0],"klayah":[0,5,0.0],"knavi":[0,5,0.0],"knola":[0,5,0.0],"kristaly":[0,5,0.0],"kuhlani":[0,5,0.0],"kuromi":[0,14,0.0],"kyalynn":[0,5,0.0],"laineyjo":[0,13,0.0],"laniylah":[0,5,0.0],"layklen":[0,16,0.0],"leylahni":[0,5,0.0],"liena":[0,5,0.0],"luany":[0,5,0.0],"lunasol":[0,5,0.0],"lyara":[0,5,0.0],"maellie":[0,5,0.0],"maevin":[0,5,0.0],"maevlyn":[0,5,0.0],"maevy":[0,5,0.0],"mafer":[0,13,0.0],"maleini":[0,10,0.0],"malieah":[0,5,0.0],"mariavitoria":[0,5,0.0],"mariia":[0,5,0.0],"marycollins":[0,5,0.0],"mavisha":[0,5,0.0],"maxinne":[0,5,0.0],"mayoni":[0,5,0.0],"mazleigh":[0,5,0.0],"meiyani":[0,5,0.0],"melaniia":[0,5,0.0],"millaray":[0,5,0.0],"murphi":[0,10,0.0],"muxi":[0,5,0.0],"myelin":[0,5,0.0],"myrrah":[0,5,0.0],"naivee":[0,10,0.0],"namila":[0,5,0.0],"nasani":[0,5,0.0],"nataleya":[0,5,0.0],"naumi":[0,5,0.0],"nawi":[0,5,0.0],"naxhieli":[0,5,0.0],"nayoni":[0,5,0.0],"nayve":[0,5,0.0],"nazani":[0,5,0.0],"niyairi":[0,10,0.0],"nogaye":[0,10,0.0],"novaann":[0,5,0.0],"novahleigh":[0,5,0.0],"novalia":[0,5,0.0],"nyaela":[0,5,0.0],"nyameye":[0,5,0.0],"oakleymae":[0,5,0.0],"oshian":[5,5,0.0],"oshynn":[0,11,0.0],"osleen":[0,5,0.0],"peridot":[0,5,0.0],"pravi":[0,5,0.0],"prestynn":[0,5,0.0],"qeyanni":[0,10,0.0],"rahmani":[0,10,0.0],"raleigha":[0,5,0.0],"ramsee":[0,5,0.0],"rayyana":[0,5,0.0],"reignbow":[0,5,0.0],"remidy":[0,5,0.0],"remirose":[0,5,0.0],"revekka":[0,5,0.0],"revlynn":[0,5,0.0],"rivee":[0,5,0.0],"roulette":[0,5,0.0],"rowdi":[0,5,0.0],"rozelynn":[0,5,0.0],"sabar":[11,11,0.0],"safrin":[0,5,0.0],"sahmara":[0,5,0.0],"sailani":[0,5,0.0],"sarvi":[0,5,0.0],"sayorii":[0,5,0.0],"sayouri":[0,5,0.0],"scottlynd":[0,5,0.0],"seedra":[0,5,0.0],"sephorah":[0,5,0.0],"sery":[0,11,0.0],"shanaika":[0,5,0.0],"shiyi":[0,5,0.0],"sianny":[0,19,0.0],"sipara":[0,5,0.0],"siyanni":[0,11,0.0],"solielle":[0,11,0.0],"soule":[0,5,0.0],"syari":[0,5,0.0],"syxx":[22,5,0.0],"tazara":[0,10,0.0],"thaswika":[0,10,0.0],"thrishika":[0,5,0.0],"trulove":[0,5,0.0],"tsumugi":[0,10,0.0],"tyloni":[0,5,0.0],"tziri":[0,10,0.0],"ujin":[0,5,0.0],"ungwa":[0,10,0.0],"viyanshi":[0,5,0.0],"waniyah":[0,5,0.0],"wyyomi":[0,5,0.0],"xaleigh":[0,5,0.0],"xamaya":[0,5,0.0],"xeraphina":[0,5,0.0],"xio":[0,12,0.0],"xitali":[0,5,0.0],"xyani":[0,5,0.0],"yalit":[0,5,0.0],"yarleny":[0,5,0.0],"yavi":[0,12,0.0],"yera":[0,5,0.0],"yisraela":[0,5,0.0],"yoalli":[0,5,0.0],"zabibu":[0,5,0.0],"zafeera":[0,5,0.0],"zalylah":[0,5,0.0],"zamiria":[0,5,0.0],"zarha":[0,5,0.0],"zayari":[0,5,0.0],"zaydia":[0,5,0.0],"zayrah":[0,5,0.0],"zelaia":[0,11,0.0],"zelani":[0,5,0.0],"zeneyda":[0,5,0.0],"zenyah":[0,5,0.0],"zilani":[0,18,0.0],"zilyana":[0,5,0.0],"zimara":[0,5,0.0],"zoemi":[0,5,0.0],"zoemy":[0,5,0.0],"zulett":[0,5,0.0],"kaiyr":[103,0,0.4026],"neteyam":[67,0,0.0],"tulsen":[43,0,0.0],"shubhdeep":[30,0,0.0],"rhyzen":[33,0,0.0],"aysun":[30,0,0.0],"zakyius":[43,0,0.0],"kalias":[34,0,0.0],"namor":[19,0,0.0],"takrim":[25,0,0.0],"yeider":[37,0,0.0],"ahsaias":[19,0,0.0],"azaias":[19,0,0.0],"azire":[18,0,0.0],"jacaerys":[26,0,0.0],"elhan":[28,0,0.0],"mazieon":[87,0,0.0],"azaylion":[11,0,0.0],"chrome":[28,7,0.0],"deivis":[20,0,0.0],"jeyler":[19,0,0.0],"kaizir":[11,0,0.0],"kassaius":[11,0,0.0],"khozen":[21,7,0.0],"muhammadyasin":[18,0,0.0],"rizen":[11,0,0.0],"shedeur":[24,0,0.0],"yeiler":[19,0,0.0],"ethic":[15,0,0.0],"hassiah":[10,0,0.0],"jazaire":[10,0,0.0],"keyder":[16,0,0.0],"shritik":[27,0,0.0],"yoridan":[10,0,0.0],"aemond":[21,0,0.0],"ahmazi":[21,0,0.0],"azeal":[9,0,0.0],"dakavion":[9,0,0.0],"jesser":[14,0,0.0],"keol":[9,0,0.0],"kervenson":[14,0,0.0],"kycion":[17,0,0.0],"kyius":[18,0,0.0],"liams":[15,0,0.0],"naamari":[19,0,0.0],"rookie":[18,0,0.0],"xilo":[16,0,0.0],"yefry":[9,0,0.0],"yuthiel":[14,0,0.0],"anirved":[8,0,0.0],"arjunkrishna":[13,0,0.0],"bakhari":[13,0,0.0],"dahian":[17,0,0.0],"forge":[8,0,0.0],"irham":[8,0,0.0],"ishaanreddy":[14,0,0.0],"khiaire":[8,0,0.0],"khimir":[14,0,0.0],"navarri":[13,0,0.0],"noen":[8,0,0.0],"ramadhani":[14,0,0.0],"rithav":[13,0,0.0],"roic":[8,0,0.0],"royalton":[13,0,0.0],"thorfinn":[17,0,0.0],"vedaansh":[13,0,0.0],"access":[7,0,0.0],"akarii":[13,0,0.0],"akoa":[37,0,0.0],"ameeri":[7,0,0.0],"amillieon":[7,0,0.0],"anoah":[7,0,0.0],"asukulu":[12,0,0.0],"aunix":[7,0,0.0],"avyukthram":[7,0,0.0],"cyx":[12,0,0.0],"daecari":[7,0,0.0],"daiir":[22,0,0.0],"dakyan":[7,0,0.0],"dayran":[7,0,0.0],"dice":[14,0,0.0],"enzon":[13,0,0.0],"essiel":[15,0,0.0],"hakam":[15,0,0.0],"hartlen":[56,8,0.0],"israr":[7,0,0.0],"izir":[7,0,0.0],"jerze":[7,0,0.0],"jiayir":[14,0,0.0],"jlexis":[7,0,0.0],"josahn":[7,0,0.0],"kaziel":[7,0,0.0],"kazon":[7,0,0.0],"keilijah":[7,0,0.0],"kingstynn":[12,0,0.0],"krishivreddy":[15,0,0.0],"mezekiah":[14,0,0.0],"miqdad":[16,0,0.0],"muhammadadam":[7,0,0.0],"navaan":[7,0,0.0],"nine":[7,0,0.0],"omavi":[13,0,0.0],"ridit":[7,0,0.0],"riggsley":[7,0,0.0],"roodensley":[7,0,0.0],"rza":[17,0,0.0],"sakar":[7,0,0.0],"samarpan":[12,0,0.0],"shulim":[12,0,0.0],"sullen":[7,0,0.0],"syheir":[13,0,0.0],"thaylor":[7,0,0.0],"tresyn":[7,0,0.0],"tylus":[7,0,0.0],"valtteri":[7,0,0.0],"varrick":[16,0,0.0],"vasileios":[7,0,0.0],"vidharthreddy":[7,0,0.0],"viserys":[7,0,0.0],"viyom":[7,0,0.0],"vizion":[7,0,0.0],"wessyn":[7,0,0.0],"whelen":[7,0,0.0],"xaylin":[15,0,0.0],"yahki":[7,0,0.0],"yoas":[7,0,0.0],"adejare":[6,0,0.0],"adelio":[17,0,0.0],"ahsias":[6,0,0.0],"ahzai":[12,0,0.0],"aider":[6,0,0.0],"airris":[6,0,0.0],"amireon":[6,0,0.0],"ayanshreddy":[6,0,0.0],"azeir":[6,0,0.0],"baaj":[6,0,0.0],"bolt":[6,0,0.0],"cailo":[13,0,0.0],"casian":[14,0,0.0],"casio":[6,0,0.0],"chosenn":[6,0,0.0],"darickson":[6,0,0.0],"dayner":[15,0,0.0],"deriam":[11,0,0.0],"dharvik":[6,0,0.0],"divino":[6,0,0.0],"dunamis":[6,0,0.0],"dyshun":[6,0,0.0],"eliath":[11,0,0.0],"emmir":[6,0,0.0],"endry":[12,0,0.0],"enias":[6,0,0.0],"enyel":[11,0,0.0],"etson":[11,0,0.0],"everyx":[6,0,0.0],"eyner":[6,0,0.0],"ezekieljames":[6,0,0.0],"hazoor":[6,0,0.0],"hridaya":[12,5,0.0],"hutcheson":[6,0,0.0],"izyais":[6,0,0.0],"jakoa":[12,0,0.0],"jaylens":[12,0,0.0],"johander":[11,0,0.0],"jyheir":[6,0,0.0],"kaiair":[12,0,0.0],"kaiaire":[15,0,0.0],"kair":[6,0,0.0],"kalio":[6,0,0.0],"kaydden":[6,0,0.0],"kayzon":[6,0,0.0],"kehlan":[6,0,0.0],"khaiel":[6,0,0.0],"kiyair":[11,0,0.0],"kotah":[11,0,0.0],"kyairo":[6,0,0.0],"lawler":[6,0,0.0],"leduar":[6,0,0.0],"leonhart":[6,0,0.0],"liamgael":[11,0,0.0],"maazin":[6,0,0.0],"mooney":[6,0,0.0],"muhammadisa":[11,0,0.0],"muhammadyunus":[11,0,0.0],"muhammadzayd":[6,0,0.0],"murillo":[6,0,0.0],"mykhailo":[13,0,0.0],"nahor":[6,0,0.0],"neamin":[6,0,0.0],"nethran":[6,0,0.0],"niaire":[6,0,0.0],"nkai":[6,0,0.0],"noahkai":[13,0,0.0],"nylon":[6,0,0.0],"nyzeer":[6,0,0.0],"oaklon":[6,0,0.0],"oladayo":[6,0,0.0],"olympus":[6,0,0.0],"ozriel":[6,0,0.0],"radd":[17,0,0.0],"raslan":[11,0,0.0],"ressiah":[11,0,0.0],"richarlison":[6,0,0.0],"rifton":[12,0,0.0],"rishaanreddy":[6,0,0.0],"saimir":[13,0,0.0],"santiano":[18,0,0.0],"sayir":[6,0,0.0],"sega":[11,0,0.0],"sevyen":[6,0,0.0],"shahim":[12,0,0.0],"shazim":[6,0,0.0],"surem":[6,0,0.0],"taicyn":[13,0,0.0],"tasrif":[6,0,0.0],"tateyn":[6,0,0.0],"tedy":[6,0,0.0],"tymoteusz":[6,0,0.0],"udayveer":[6,0,0.0],"unik":[6,0,0.0],"valens":[11,0,0.0],"vishagan":[6,0,0.0],"wafiq":[6,0,0.0],"yansh":[6,0,0.0],"yeiner":[6,0,0.0],"yeral":[6,0,0.0],"zehan":[6,0,0.0],"zenn":[13,0,0.0],"aaryaveer":[5,0,0.0],"abdumalik":[5,0,0.0],"adhyansh":[5,0,0.0],"adhyuth":[11,0,0.0],"aeko":[5,0,0.0],"aeven":[5,0,0.0],"agon":[5,0,0.0],"ahzire":[5,0,0.0],"aiyon":[5,0,0.0],"akaree":[5,0,0.0],"alador":[5,0,0.0],"amarjae":[5,0,0.0],"amirious":[5,0,0.0],"amirus":[5,0,0.0],"amiryon":[5,0,0.0],"annur":[5,0,0.0],"ansor":[5,0,0.0],"arelio":[5,0,0.0],"aritz":[5,0,0.0],"arvand":[5,0,0.0],"asi":[13,0,0.0],"atigun":[5,0,0.0],"auzeir":[5,0,0.0],"avyukthreddy":[5,0,0.0],"ayers":[11,0,0.0],"azaius":[5,0,0.0],"azayel":[5,0,0.0],"bayou":[14,0,0.0],"beneil":[5,0,0.0],"biniam":[5,0,0.0],"bonaventure":[5,0,0.0],"borhan":[5,0,0.0],"brassen":[5,0,0.0],"bregman":[5,0,0.0],"camino":[5,0,0.0],"castian":[12,0,0.0],"caxton":[10,0,0.0],"cesur":[5,0,0.0],"coastal":[5,0,0.0],"cyir":[5,0,0.0],"cyren":[5,0,0.0],"daceon":[5,0,0.0],"daim":[12,0,0.0],"dakyri":[5,0,0.0],"damazi":[16,0,0.0],"dameris":[5,0,0.0],"damilo":[5,0,0.0],"damirr":[5,0,0.0],"dariy":[5,0,0.0],"dawensley":[13,0,0.0],"demazi":[11,0,0.0],"devyansh":[5,0,0.0],"dhanvik":[5,0,0.0],"dhanvith":[5,0,0.0],"dharshan":[5,0,0.0],"dhruvreddy":[13,0,0.0],"diell":[5,0,0.0],"dkai":[11,0,0.0],"dkarter":[5,0,0.0],"donati":[5,0,0.0],"drayco":[5,0,0.0],"dyair":[5,0,0.0],"elezar":[10,0,0.0],"elzin":[5,0,0.0],"endeavor":[5,0,0.0],"eney":[5,0,0.0],"eredin":[5,0,0.0],"esiyah":[5,0,0.0],"ethanmateo":[5,0,0.0],"ezaryah":[5,0,0.0],"ezdan":[13,0,0.0],"ezekai":[11,0,0.0],"forrie":[10,0,0.0],"franciel":[5,0,0.0],"gada":[5,0,0.0],"gidon":[5,0,0.0],"giorno":[5,0,0.0],"granit":[5,0,0.0],"gudiel":[5,0,0.0],"gurtaaz":[5,0,0.0],"guzman":[5,0,0.0],"haesten":[5,0,0.0],"hakimi":[5,0,0.0],"harnav":[5,0,0.0],"harwin":[10,0,0.0],"hasibullah":[5,0,0.0],"haweo":[5,0,0.0],"hazer":[5,0,0.0],"hixson":[5,0,0.0],"houd":[5,0,0.0],"ifedayo":[5,0,0.0],"ihaan":[14,0,0.0],"irad":[5,0,0.0],"islo":[5,0,0.0],"ivaansh":[10,0,0.0],"jahsei":[5,0,0.0],"jahsen":[14,0,0.0],"jakail":[5,0,0.0],"jaksh":[12,0,0.0],"jamenson":[5,0,0.0],"jaseh":[5,0,0.0],"jaydeon":[5,0,0.0],"jayliam":[5,0,0.0],"jayvoni":[5,0,0.0],"jeo":[5,0,0.0],"jeymar":[5,0,0.0],"jhasai":[5,0,0.0],"jhettson":[11,0,0.0],"jheyden":[5,0,0.0],"jhonjairo":[5,0,0.0],"joyson":[5,0,0.0],"jozias":[5,0,0.0],"jozion":[5,0,0.0],"jruex":[5,0,0.0],"jukai":[10,0,0.0],"just":[5,0,0.0],"kadriel":[5,0,0.0],"kaharri":[5,0,0.0],"kaiko":[5,0,0.0],"kailiam":[5,0,0.0],"kairoh":[10,0,0.0],"kaizah":[5,0,0.0],"kaizier":[11,0,0.0],"kaliden":[5,0,0.0],"kalloway":[10,0,0.0],"kandhan":[5,0,0.0],"kardiair":[5,0,0.0],"kasden":[5,0,0.0],"kayjay":[5,0,0.0],"kayvian":[5,0,0.0],"kcyn":[5,0,0.0],"kenderson":[5,0,0.0],"kenyer":[5,0,0.0],"keyaire":[5,0,0.0],"keydem":[5,0,0.0],"keyver":[10,0,0.0],"kezra":[5,0,0.0],"khalaf":[5,0,0.0],"khazier":[5,0,0.0],"khidr":[5,0,0.0],"kiyir":[5,0,0.0],"kmiri":[5,0,0.0],"koulter":[5,0,0.0],"kyaiir":[5,0,0.0],"kyiere":[11,0,0.0],"kyiir":[38,0,0.0],"kyison":[5,0,0.0],"kyrenn":[5,0,0.0],"lensky":[11,0,0.0],"leoniel":[5,0,0.0],"louai":[13,0,0.0],"loyale":[5,0,0.0],"lucasey":[5,0,0.0],"lucerys":[11,0,0.0],"luxten":[5,0,0.0],"lysandro":[5,0,0.0],"maanvik":[5,0,0.0],"maleo":[5,0,0.0],"manix":[5,0,0.0],"mbaye":[5,0,0.0],"menua":[11,0,0.0],"miaire":[11,0,0.0],"mictlan":[5,0,0.0],"millieon":[5,0,0.0],"mivan":[5,0,0.0],"mizaan":[10,0,0.0],"modi":[5,0,0.0],"mohammadnabi":[5,0,0.0],"mohammadtaha":[5,0,0.0],"mohammod":[10,0,0.0],"montezuma":[5,0,0.0],"muhammadhamza":[11,0,0.0],"mukhammadali":[10,0,0.0],"muso":[5,0,0.0],"mysiah":[5,0,0.0],"namiri":[10,0,0.0],"nasratullah":[5,0,0.0],"nazai":[92,0,0.0],"nazyr":[5,0,0.0],"nehmiah":[5,0,0.0],"neyler":[5,0,0.0],"neyser":[5,0,0.0],"nihilus":[5,0,0.0],"nikholai":[5,0,0.0],"niklause":[5,0,0.0],"nikodemus":[11,0,0.0],"nyte":[5,0,0.0],"nyyir":[5,0,0.0],"onixx":[5,0,0.0],"oshaun":[5,0,0.0],"oviyan":[5,0,0.0],"ozer":[5,0,0.0],"papi":[5,0,0.0],"pine":[5,0,0.0],"prahan":[10,0,0.0],"prayush":[5,0,0.0],"qubyn":[5,0,0.0],"realm":[5,0,0.0],"reiker":[5,0,0.0],"remzi":[5,0,0.0],"renin":[5,0,0.0],"rhavy":[5,0,0.0],"rhyze":[5,0,0.0],"riday":[10,0,0.0],"ridharv":[5,0,0.0],"risen":[5,0,0.0],"rood":[5,0,0.0],"rudhvik":[11,0,0.0],"ryda":[5,0,0.0],"saayok":[5,0,0.0],"sabeer":[5,0,0.0],"sakoni":[5,0,0.0],"sakori":[5,0,0.0],"samarveer":[5,0,0.0],"sayvior":[11,0,0.0],"sebas":[5,0,0.0],"sehraj":[10,0,0.0],"seo":[5,0,0.0],"sev":[5,0,0.0],"shabani":[11,0,0.0],"shivaksh":[5,0,0.0],"sikandar":[5,0,0.0],"sixx":[5,0,0.0],"siyere":[11,0,0.0],"siyir":[10,0,0.0],"steevenson":[5,0,0.0],"sviatoslav":[5,0,0.0],"sypher":[5,0,0.0],"tadei":[16,0,0.0],"takoa":[10,0,0.0],"tecuani":[5,0,0.0],"thilo":[5,0,0.0],"thorrin":[5,0,0.0],"timotheo":[5,0,0.0],"toccoa":[5,0,0.0],"trophy":[11,0,0.0],"tulson":[13,0,0.0],"tyrson":[5,0,0.0],"ujaan":[5,0,0.0],"vedav":[5,0,0.0],"vedhansh":[10,0,0.0],"volodymyr":[5,0,0.0],"weslen":[5,0,0.0],"widley":[10,0,0.0],"xandri":[5,0,0.0],"xayvian":[5,0,0.0],"xeon":[5,0,0.0],"yaamir":[5,0,0.0],"yakim":[10,0,0.0],"yasai":[5,0,0.0],"yazhan":[5,0,0.0],"yeager":[5,0,0.0],"yoshmel":[5,0,0.0],"yuvik":[5,0,0.0],"yuvinreddy":[5,0,0.0],"zahil":[5,0,0.0],"zaiyn":[5,0,0.0],"zakaiah":[5,0,0.0],"zakiyus":[5,0,0.0],"zaviyaar":[5,0,0.0],"zayair":[5,0,0.0],"zaydaan":[10,0,0.0],"zhyeir":[5,0,0.0],"ziyair":[12,0,0.0],"ziyir":[5,0,0.0],"zorain":[11,0,0.0],"zusha":[5,0,0.0],"zyamir":[5,0,0.0],"zymirr":[5,0,0.0],"yashna":[0,170,0.4461],"azeira":[0,65,0.0],"dalzary":[0,44,0.0],"ailanys":[0,34,0.0],"zayelle":[0,30,0.0],"heyssel":[0,29,0.0],"yeshna":[0,26,0.0],"khamyri":[0,25,0.0],"kohani":[0,24,0.0],"navayla":[0,24,0.0],"dahira":[0,23,0.0],"sveya":[0,23,0.0],"xaelia":[0,22,0.0],"zenayla":[0,22,0.0],"avaylah":[0,21,0.0],"cireya":[0,20,0.0],"nevayla":[0,20,0.0],"amrielle":[0,19,0.0],"mikaely":[0,18,0.0],"ayliani":[0,17,0.0],"rosaya":[0,17,0.0],"yashnareddy":[0,17,0.0],"khailany":[0,16,0.0],"esmari":[0,15,0.0],"hallyn":[0,15,0.0],"xayoni":[0,15,0.0],"zyalani":[0,15,0.0],"alyzzah":[0,14,0.0],"asiri":[0,14,0.0],"islani":[0,14,0.0],"symori":[0,14,0.0],"denayt":[0,13,0.0],"elianeth":[0,13,0.0],"izalyn":[0,13,0.0],"jaziriah":[0,13,0.0],"soulie":[0,13,0.0],"sylphiette":[0,13,0.0],"vihanvi":[0,13,0.0],"xialani":[0,13,0.0],"zaierra":[0,13,0.0],"calissi":[0,12,0.0],"harmyni":[0,12,0.0],"isaliyah":[0,12,0.0],"islarae":[0,12,0.0],"layvani":[0,12,0.0],"tycelyn":[0,12,0.0],"umay":[0,12,0.0],"zuheilyn":[0,12,0.0],"amaeva":[0,11,0.0],"dreamlyn":[0,11,0.0],"haniely":[0,11,0.0],"knourish":[0,11,0.0],"kylanii":[0,11,0.0],"laineymae":[0,11,0.0],"shreeva":[0,11,0.0],"xenayla":[0,11,0.0],"ajorie":[0,10,0.0],"davileth":[0,10,0.0],"ellavie":[0,10,0.0],"esslyn":[0,10,0.0],"kaeor":[0,10,0.0],"kritara":[0,10,0.0],"ozora":[0,10,0.0],"ralani":[0,10,0.0],"rennala":[0,10,0.0],"rouh":[0,10,0.0],"vidhitsa":[0,10,0.0],"zeliana":[0,10,0.0],"zenova":[0,10,0.0],"adeluna":[0,9,0.0],"anayli":[0,9,0.0],"asmira":[0,9,0.0],"gelani":[0,9,0.0],"iclynn":[0,9,0.0],"jazalie":[0,9,0.0],"jessalie":[0,9,0.0],"kaibrienne":[0,9,0.0],"kaylane":[0,9,0.0],"laguna":[0,9,0.0],"nadxheli":[0,9,0.0],"nazayla":[0,9,0.0],"raiha":[0,9,0.0],"reyshell":[0,9,0.0],"samauni":[0,9,0.0],"tahyssia":[0,9,0.0],"wynrie":[0,9,0.0],"xoana":[0,9,0.0],"airelyn":[0,8,0.0],"akaiah":[0,8,0.0],"akaiza":[0,8,0.0],"alaula":[0,8,0.0],"alore":[0,8,0.0],"atzari":[0,8,0.0],"aureya":[0,8,0.0],"avyukta":[0,8,0.0],"aylanis":[0,8,0.0],"azhyra":[0,8,0.0],"bimori":[0,8,0.0],"canari":[0,8,0.0],"daybelis":[0,8,0.0],"eirlys":[0,8,0.0],"ellidy":[0,8,0.0],"eysha":[0,8,0.0],"georgiagrace":[0,8,0.0],"hadis":[0,8,0.0],"hande":[0,8,0.0],"isleya":[0,8,0.0],"issoria":[0,8,0.0],"ivalie":[0,8,0.0],"kailanys":[0,8,0.0],"kalissi":[0,8,0.0],"kayorie":[0,8,0.0],"kayouri":[0,8,0.0],"luseh":[0,8,0.0],"malaica":[0,8,0.0],"mehrima":[0,8,0.0],"moza":[0,8,0.0],"nashlyn":[0,8,0.0],"nazeya":[0,8,0.0],"raaha":[0,8,0.0],"remani":[0,8,0.0],"rumanii":[0,8,0.0],"sanmayi":[0,8,0.0],"shriva":[0,8,0.0],"simani":[0,8,0.0],"vexahlia":[0,8,0.0],"winshaida":[0,8,0.0],"xalayah":[0,8,0.0],"yohaly":[0,8,0.0],"zeari":[0,8,0.0],"ahira":[0,7,0.0],"airy":[0,7,0.0],"aiunii":[0,7,0.0],"akayda":[0,7,0.0],"akeza":[0,7,0.0],"akvira":[0,7,0.0],"aleany":[0,7,0.0],"alehia":[0,7,0.0],"allany":[0,7,0.0],"anahera":[0,7,0.0],"anikareddy":[0,7,0.0],"anzish":[0,7,0.0],"araelyn":[0,7,0.0],"astari":[0,7,0.0],"aylannie":[0,7,0.0],"azoura":[0,7,0.0],"callihan":[7,7,0.0],"charlottegrace":[0,7,0.0],"cymani":[0,7,0.0],"dashely":[0,7,0.0],"eleanny":[0,7,0.0],"faela":[0,7,0.0],"farwah":[0,7,0.0],"francelys":[0,7,0.0],"geminis":[0,7,0.0],"gialani":[0,7,0.0],"itzamari":[0,7,0.0],"itzamary":[0,7,0.0],"ivanny":[0,7,0.0],"jaysley":[0,7,0.0],"kailane":[0,7,0.0],"kenori":[0,7,0.0],"keysie":[0,7,0.0],"kheylani":[0,7,0.0],"koriandr":[0,7,0.0],"liliette":[0,7,0.0],"luenna":[0,7,0.0],"luvlee":[0,7,0.0],"magnoliamae":[0,7,0.0],"malanee":[0,7,0.0],"malou":[0,7,0.0],"mayvie":[0,7,0.0],"medhasvi":[0,7,0.0],"mehrmah":[0,7,0.0],"mersana":[0,7,0.0],"miyelle":[0,7,0.0],"muhlani":[0,7,0.0],"myarii":[0,7,0.0],"nektaria":[0,7,0.0],"niamoni":[0,7,0.0],"niyori":[0,7,0.0],"novaleen":[0,7,0.0],"reazyn":[0,7,0.0],"reichell":[0,7,0.0],"ridhira":[0,7,0.0],"saimani":[0,7,0.0],"saiomi":[0,7,0.0],"seveya":[0,7,0.0],"solayne":[0,7,0.0],"soulani":[0,7,0.0],"takdeer":[0,7,0.0],"tallinn":[0,7,0.0],"wailani":[0,7,0.0],"wrenlea":[0,7,0.0],"xahari":[0,7,0.0],"xalori":[0,7,0.0],"xereni":[0,7,0.0],"xianni":[0,7,0.0],"xior":[0,7,0.0],"zenelle":[0,7,0.0],"zenlee":[0,7,0.0],"ziamani":[0,7,0.0],"zyomi":[0,7,0.0],"abeline":[0,6,0.0],"abigiya":[0,6,0.0],"adeleia":[0,6,0.0],"adepa":[0,6,0.0],"ahilya":[0,6,0.0],"aigy":[0,6,0.0],"ailanis":[0,6,0.0],"aithanna":[0,6,0.0],"alessy":[0,6,0.0],"aliyza":[0,6,0.0],"amareigh":[0,6,0.0],"anellie":[0,6,0.0],"annisty":[0,6,0.0],"arbel":[0,6,0.0],"ariannys":[0,6,0.0],"ariellys":[0,6,0.0],"arletth":[0,6,0.0],"asantewaa":[0,6,0.0],"auora":[0,6,0.0],"aureliah":[0,6,0.0],"avely":[0,6,0.0],"avyah":[0,6,0.0],"aylanii":[0,6,0.0],"ayling":[0,6,0.0],"azanii":[0,6,0.0],"azryah":[0,6,0.0],"azurra":[0,6,0.0],"bayker":[13,6,0.0],"berklynn":[0,6,0.0],"bibihalima":[0,6,0.0],"billieann":[0,6,0.0],"breily":[0,6,0.0],"briannaly":[0,6,0.0],"brynnlyn":[0,6,0.0],"caiani":[0,6,0.0],"calaiya":[0,6,0.0],"calilah":[0,6,0.0],"catelina":[0,6,0.0],"celi":[0,6,0.0],"daiara":[0,6,0.0],"daislyn":[0,6,0.0],"dalexi":[0,6,0.0],"dariannys":[0,6,0.0],"dayrani":[0,6,0.0],"dearrah":[0,6,0.0],"delaiyah":[0,6,0.0],"deluna":[0,6,0.0],"dessi":[0,6,0.0],"diori":[0,6,0.0],"ehliana":[0,6,0.0],"eilanny":[0,6,0.0],"eladie":[0,6,0.0],"ellienna":[0,6,0.0],"elyanni":[0,6,0.0],"emmavictoria":[0,6,0.0],"emzara":[0,6,0.0],"etzli":[0,6,0.0],"eza":[0,6,0.0],"haddassah":[0,6,0.0],"heva":[0,6,0.0],"hossana":[0,6,0.0],"idika":[0,6,0.0],"iraidet":[0,6,0.0],"irisrose":[0,6,0.0],"isheja":[0,6,0.0],"islynd":[0,6,0.0],"itani":[0,6,0.0],"iziana":[0,6,0.0],"jaelany":[0,6,0.0],"jaeloni":[0,6,0.0],"jalauni":[0,6,0.0],"jaxyla":[0,6,0.0],"jennalie":[0,6,0.0],"kaezlie":[0,6,0.0],"kailiany":[0,6,0.0],"karolay":[0,6,0.0],"kayali":[0,6,0.0],"keava":[0,6,0.0],"kenziah":[0,6,0.0],"kenzuri":[0,6,0.0],"khalena":[0,6,0.0],"khalylah":[0,6,0.0],"khulud":[0,6,0.0],"knoxlyn":[0,6,0.0],"kovey":[8,6,0.0],"kridhareddy":[0,6,0.0],"kysleigh":[0,6,0.0],"layomie":[0,6,0.0],"lemi":[0,6,0.0],"lexley":[0,6,0.0],"liha":[0,6,0.0],"liserly":[0,6,0.0],"lovemika":[0,6,0.0],"luhana":[0,6,0.0],"lynni":[0,6,0.0],"mactzil":[0,6,0.0],"mahlanni":[0,6,0.0],"mahva":[0,6,0.0],"maman":[0,6,0.0],"mariaflor":[0,6,0.0],"mauve":[0,6,0.0],"maverly":[0,6,0.0],"mayleni":[0,6,0.0],"mazlee":[0,6,0.0],"mbene":[0,6,0.0],"millerkate":[0,6,0.0],"monsai":[0,6,0.0],"mrida":[0,6,0.0],"mwavita":[0,6,0.0],"naiahri":[0,6,0.0],"nailany":[0,6,0.0],"naivy":[0,6,0.0],"namara":[0,6,0.0],"narel":[0,6,0.0],"nasli":[0,6,0.0],"nephele":[0,6,0.0],"neyomi":[0,6,0.0],"novee":[0,6,0.0],"omisha":[0,6,0.0],"raziella":[0,6,0.0],"rosaleia":[0,6,0.0],"royalynn":[0,6,0.0],"ruha":[0,6,0.0],"rynnleigh":[0,6,0.0],"sadaa":[0,6,0.0],"sagelyn":[0,6,0.0],"samady":[0,6,0.0],"sanoa":[0,6,0.0],"sayara":[0,6,0.0],"scotlin":[0,6,0.0],"seerah":[0,6,0.0],"shadday":[0,6,0.0],"sihaya":[0,6,0.0],"skylani":[0,6,0.0],"sofy":[0,6,0.0],"soleila":[0,6,0.0],"suhaavi":[0,6,0.0],"sulani":[0,6,0.0],"talvi":[0,6,0.0],"tanha":[0,6,0.0],"tezara":[0,6,0.0],"tyomi":[0,6,0.0],"vedaa":[0,6,0.0],"vidhatri":[0,6,0.0],"wrenlei":[0,6,0.0],"xanai":[0,6,0.0],"xanyla":[0,6,0.0],"xenaya":[0,6,0.0],"xylei":[0,6,0.0],"yahnari":[0,6,0.0],"yalayni":[0,6,0.0],"yamaria":[0,6,0.0],"yasbeth":[0,6,0.0],"yaseli":[0,6,0.0],"yehilyn":[0,6,0.0],"yeslyn":[0,6,0.0],"yoonah":[0,6,0.0],"ysabeau":[0,6,0.0],"zareli":[0,6,0.0],"zayeyonni":[0,6,0.0],"zelianna":[0,6,0.0],"zinniah":[0,6,0.0],"zissi":[0,6,0.0],"znylah":[0,6,0.0],"aaina":[0,5,0.0],"abelyn":[0,5,0.0],"abundance":[0,5,0.0],"adanary":[0,5,0.0],"adareli":[0,5,0.0],"adarely":[0,5,0.0],"adayana":[0,5,0.0],"adelaila":[0,5,0.0],"adeyah":[0,5,0.0],"adisha":[0,5,0.0],"ahmylah":[0,5,0.0],"aikol":[0,5,0.0],"ailanee":[0,5,0.0],"airalee":[0,5,0.0],"airyss":[0,5,0.0],"ajori":[0,5,0.0],"akora":[0,5,0.0],"akshvi":[0,5,0.0],"alenni":[0,5,0.0],"alezai":[0,5,0.0],"alloura":[0,5,0.0],"aloisa":[0,5,0.0],"alruna":[0,5,0.0],"altana":[0,5,0.0],"alua":[0,5,0.0],"ameillia":[0,5,0.0],"analeiyah":[0,5,0.0],"anberly":[0,5,0.0],"anikya":[0,5,0.0],"annelia":[0,5,0.0],"anvisha":[0,5,0.0],"aphia":[0,5,0.0],"apolina":[0,5,0.0],"aqra":[0,5,0.0],"arhaa":[0,5,0.0],"arielli":[0,5,0.0],"arishfa":[0,5,0.0],"arloe":[0,5,0.0],"armonei":[0,5,0.0],"aryla":[0,5,0.0],"ashnoor":[0,5,0.0],"asila":[0,5,0.0],"aslhy":[0,5,0.0],"astora":[0,5,0.0],"asvi":[0,5,0.0],"atali":[0,5,0.0],"avahni":[0,5,0.0],"avalani":[0,5,0.0],"avanoelle":[0,5,0.0],"aveley":[0,5,0.0],"ayanshi":[0,5,0.0],"ayida":[0,5,0.0],"azailea":[0,5,0.0],"azailia":[0,5,0.0],"azeri":[0,5,0.0],"azlina":[0,5,0.0],"azorie":[0,5,0.0],"azraella":[0,5,0.0],"azwa":[0,5,0.0],"azzariah":[0,5,0.0],"beylin":[0,5,0.0],"bomi":[0,5,0.0],"briari":[0,5,0.0],"caetana":[0,5,0.0],"caiomi":[0,5,0.0],"canylah":[0,5,0.0],"celeya":[0,5,0.0],"celiah":[0,5,0.0],"chaishvi":[0,5,0.0],"cherna":[0,5,0.0],"chideziri":[0,5,0.0],"chylo":[5,5,0.0],"ciyona":[0,5,0.0],"claraann":[0,5,0.0],"crisleidy":[0,5,0.0],"crisly":[0,5,0.0],"daizlynn":[0,5,0.0],"dalaia":[0,5,0.0],"daletzy":[0,5,0.0],"daleyni":[0,5,0.0],"danaelle":[0,5,0.0],"daraya":[0,5,0.0],"dariani":[0,5,0.0],"dashelly":[0,5,0.0],"dashlyn":[0,5,0.0],"davoni":[0,5,0.0],"dayleth":[0,5,0.0],"daynara":[0,5,0.0],"demonii":[0,5,0.0],"desilyn":[0,5,0.0],"dhiti":[0,5,0.0],"dhream":[0,5,0.0],"diaraye":[0,5,0.0],"dilay":[0,5,0.0],"diriany":[0,5,0.0],"dreamlynn":[0,5,0.0],"dylara":[0,5,0.0],"efnan":[0,5,0.0],"ehleni":[0,5,0.0],"ekaya":[0,5,0.0],"elaha":[0,5,0.0],"eleanorrose":[0,5,0.0],"elizarose":[0,5,0.0],"eloize":[0,5,0.0],"elyf":[0,5,0.0],"emerysn":[0,5,0.0],"envii":[0,5,0.0],"esila":[0,5,0.0],"eslynn":[0,5,0.0],"eylee":[0,5,0.0],"fairlight":[0,5,0.0],"faty":[0,5,0.0],"fayra":[0,5,0.0],"galileia":[0,5,0.0],"geisel":[0,5,0.0],"gianeliz":[0,5,0.0],"gurnadar":[0,5,0.0],"gwiza":[7,5,0.0],"haana":[0,5,0.0],"hadassha":[0,5,0.0],"haliya":[0,5,0.0],"hamani":[0,5,0.0],"hazlei":[0,5,0.0],"heilani":[0,5,0.0],"helani":[0,5,0.0],"himaya":[0,5,0.0],"hridha":[0,5,0.0],"icelynd":[0,5,0.0],"illy":[0,5,0.0],"inali":[0,5,0.0],"ionie":[0,5,0.0],"irismae":[0,5,0.0],"iriyah":[0,5,0.0],"isabellamaria":[0,5,0.0],"ivylyn":[0,5,0.0],"izarah":[0,5,0.0],"jaomi":[0,5,0.0],"jielle":[0,5,0.0],"johanni":[0,5,0.0],"junyper":[0,5,0.0],"kaeori":[0,5,0.0],"kaiore":[0,5,0.0],"kairavi":[0,5,0.0],"kalaylah":[0,5,0.0],"kaybrielle":[0,5,0.0],"kazelynn":[0,5,0.0],"kehilani":[0,5,0.0],"keiyla":[0,5,0.0],"kelanii":[0,5,0.0],"kemoura":[0,5,0.0],"kenzaya":[0,5,0.0],"ketana":[0,5,0.0],"khaliana":[0,5,0.0],"khivi":[0,5,0.0],"kiraz":[0,5,0.0],"kleia":[0,5,0.0],"knyomi":[0,5,0.0],"kolibri":[0,5,0.0],"kollynns":[0,5,0.0],"krisbel":[0,5,0.0],"kyoir":[0,5,0.0],"lainley":[0,5,0.0],"leioni":[0,5,0.0],"lifsha":[0,5,0.0],"lileia":[0,5,0.0],"lilianarose":[0,5,0.0],"lilianny":[0,5,0.0],"loveland":[0,5,0.0],"lovelie":[0,5,0.0],"lumine":[0,5,0.0],"lyane":[0,5,0.0],"mahwa":[0,5,0.0],"maiani":[0,5,0.0],"maiia":[0,5,0.0],"maitane":[0,5,0.0],"malaycia":[0,5,0.0],"maryeleanor":[0,5,0.0],"mavey":[0,5,0.0],"meherima":[0,5,0.0],"mehrunisa":[0,5,0.0],"melaia":[0,5,0.0],"melanna":[0,5,0.0],"mellona":[0,5,0.0],"menata":[0,5,0.0],"mihra":[0,5,0.0],"millar":[0,5,0.0],"molani":[0,5,0.0],"moonie":[0,5,0.0],"munzarin":[0,5,0.0],"naemi":[0,5,0.0],"namaria":[0,5,0.0],"naseera":[0,5,0.0],"naslyn":[0,5,0.0],"naviee":[0,5,0.0],"nayibe":[0,5,0.0],"nimani":[0,5,0.0],"nivira":[0,5,0.0],"niyamat":[0,5,0.0],"nooran":[0,5,0.0],"novva":[0,5,0.0],"nuseyba":[0,5,0.0],"nyad":[0,5,0.0],"nyahri":[0,5,0.0],"nyeri":[0,5,0.0],"nylamae":[0,5,0.0],"nylanii":[0,5,0.0],"nyoami":[0,5,0.0],"nyoni":[0,5,0.0],"nyuri":[0,5,0.0],"olaedo":[0,5,0.0],"olaia":[0,5,0.0],"olalla":[0,5,0.0],"olivemae":[0,5,0.0],"olivie":[0,5,0.0],"pneuma":[0,5,0.0],"pratha":[0,5,0.0],"prisa":[0,5,0.0],"quori":[0,5,0.0],"raenyra":[0,5,0.0],"rahya":[0,5,0.0],"raiella":[0,5,0.0],"ramyla":[0,5,0.0],"rare":[0,5,0.0],"rasta":[0,5,0.0],"reignn":[0,5,0.0],"reishell":[0,5,0.0],"remina":[0,5,0.0],"renlei":[0,5,0.0],"reveah":[0,5,0.0],"rhaenys":[0,5,0.0],"riina":[0,5,0.0],"roksolana":[0,5,0.0],"rovie":[0,5,0.0],"rudhvika":[0,5,0.0],"ruhana":[0,5,0.0],"ruixi":[0,5,0.0],"ruthee":[0,5,0.0],"rylani":[0,5,0.0],"rym":[0,5,0.0],"rynli":[0,5,0.0],"sahasrareddy":[0,5,0.0],"salani":[0,5,0.0],"salish":[0,5,0.0],"samely":[0,5,0.0],"sanaira":[0,5,0.0],"sareign":[0,5,0.0],"sargi":[0,5,0.0],"scottee":[0,5,0.0],"seleya":[0,5,0.0],"serl":[0,5,0.0],"sesina":[0,5,0.0],"seyli":[0,5,0.0],"seylin":[0,5,0.0],"shacarri":[0,5,0.0],"shenny":[0,5,0.0],"shridhi":[0,5,0.0],"sielle":[0,5,0.0],"sifra":[0,5,0.0],"sohee":[0,5,0.0],"sriyanvi":[0,5,0.0],"talanii":[0,5,0.0],"tarai":[0,5,0.0],"tayri":[0,5,0.0],"tezza":[0,5,0.0],"thaissy":[0,5,0.0],"trulei":[0,5,0.0],"tuva":[0,5,0.0],"umaimah":[0,5,0.0],"valeah":[0,5,0.0],"valleigh":[0,5,0.0],"varenna":[0,5,0.0],"vedanya":[0,5,0.0],"vedhya":[0,5,0.0],"virika":[0,5,0.0],"vrindha":[0,5,0.0],"wrynlie":[0,5,0.0],"wynslie":[0,5,0.0],"xaliima":[0,5,0.0],"xarai":[0,5,0.0],"xaylani":[0,5,0.0],"xielo":[0,5,0.0],"xoellie":[0,5,0.0],"xolanii":[0,5,0.0],"yanyla":[0,5,0.0],"yaqut":[0,5,0.0],"yashnasri":[0,5,0.0],"yazzlyn":[0,5,0.0],"yiyao":[0,5,0.0],"zaifa":[0,5,0.0],"zaior":[0,5,0.0],"zanori":[0,5,0.0],"zathena":[0,5,0.0],"zeaira":[0,5,0.0],"zelyianna":[0,5,0.0],"zenara":[0,5,0.0],"zenat":[0,5,0.0],"zenyla":[0,5,0.0],"zianni":[0,5,0.0],"ziari":[0,5,0.0],"ziyaa":[0,5,0.0],"zoet":[0,5,0.0],"zoralyn":[0,5,0.0],"zyaunna":[0,5,0.0],"zyella":[0,5,0.0],"lahiam":[152,0,0.4364],"xyleek":[115,0,0.4121],"ezelio":[53,0,0.0],"kenzai":[37,0,0.0],"rahzi":[34,0,0.0],"akaay":[32,0,0.0],"zeovanni":[32,0,0.0],"kisen":[31,0,0.0],"acyris":[26,0,0.0],"zyro":[24,0,0.0],"arcaius":[22,0,0.0],"neeom":[22,0,0.0],"zyleel":[21,0,0.0],"khamazi":[19,0,0.0],"zyleek":[19,0,0.0],"soan":[18,0,0.0],"mattisyahu":[17,0,0.0],"jasyi":[16,0,0.0],"zamariel":[16,0,0.0],"manoe":[15,0,0.0],"vedang":[15,0,0.0],"mcaiden":[14,0,0.0],"emren":[13,0,0.0],"nivam":[12,0,0.0],"omiras":[12,0,0.0],"syierre":[12,0,0.0],"ziovanni":[12,0,0.0],"aliam":[11,0,0.0],"dovy":[11,0,0.0],"izam":[11,0,0.0],"keiver":[11,0,0.0],"meylan":[11,0,0.0],"tezekiah":[11,0,0.0],"acyrus":[10,0,0.0],"adwait":[10,0,0.0],"arzen":[10,0,0.0],"jeider":[10,0,0.0],"jhyzir":[10,0,0.0],"kameiro":[10,0,0.0],"kazai":[10,0,0.0],"kyis":[10,0,0.0],"naunihal":[10,0,0.0],"ohtani":[10,0,0.0],"ravilucca":[10,0,0.0],"renlen":[10,0,0.0],"santori":[10,0,0.0],"alemi":[9,0,0.0],"bodhie":[9,0,0.0],"giomani":[9,0,0.0],"jakaius":[9,0,0.0],"kavello":[9,0,0.0],"rudeus":[9,0,0.0],"stolas":[9,0,0.0],"xhosen":[9,0,0.0],"xyles":[9,0,0.0],"xyloh":[9,0,0.0],"zaelix":[9,0,0.0],"zayel":[9,0,0.0],"aizhon":[8,0,0.0],"aniyis":[8,0,0.0],"archibold":[8,0,0.0],"avitaaz":[8,0,0.0],"ayzaan":[8,0,0.0],"azaii":[8,0,0.0],"azaylen":[8,0,0.0],"azuryn":[8,0,0.0],"banjo":[8,0,0.0],"briadam":[8,0,0.0],"cassio":[8,0,0.0],"choszen":[8,0,0.0],"dariam":[8,0,0.0],"darwens":[8,0,0.0],"dazir":[8,0,0.0],"dieumerci":[8,0,0.0],"ezzeldin":[8,0,0.0],"heyder":[8,0,0.0],"jahzaire":[8,0,0.0],"jhaycob":[8,0,0.0],"lahyam":[8,0,0.0],"maelan":[8,0,0.0],"maykell":[8,0,0.0],"mias":[8,0,0.0],"miras":[8,0,0.0],"muhammadsodiq":[8,0,0.0],"nischay":[8,0,0.0],"ozian":[8,0,0.0],"raag":[8,0,0.0],"rahmanullah":[8,0,0.0],"sarth":[8,0,0.0],"solano":[8,0,0.0],"syreese":[8,0,0.0],"trayaksh":[8,0,0.0],"tymirr":[8,0,0.0],"tymofiy":[8,0,0.0],"winstin":[8,0,0.0],"xalo":[8,0,0.0],"zairo":[8,0,0.0],"abdulrazak":[7,0,0.0],"agastyareddy":[7,0,0.0],"altai":[7,0,0.0],"amazzi":[7,0,0.0],"amyris":[7,0,0.0],"arize":[7,0,0.0],"arkaius":[7,0,0.0],"armello":[7,0,0.0],"arsiah":[7,0,0.0],"asaias":[7,0,0.0],"bellingham":[7,0,0.0],"bruen":[7,0,0.0],"corum":[7,0,0.0],"cyere":[7,0,0.0],"declann":[7,0,0.0],"esoni":[7,0,0.0],"frantzley":[7,0,0.0],"gurshabad":[7,0,0.0],"gursher":[7,0,0.0],"hakari":[7,0,0.0],"haon":[7,0,0.0],"irav":[7,0,0.0],"johnluca":[7,0,0.0],"kenzin":[7,0,0.0],"khyell":[7,0,0.0],"kimere":[7,0,0.0],"kisyn":[7,0,0.0],"klancy":[7,0,0.0],"kobichimdi":[7,0,0.0],"kodis":[7,0,0.0],"kymiri":[7,0,0.0],"kyzon":[7,0,0.0],"luqa":[7,0,0.0],"lyham":[7,0,0.0],"lyxander":[7,0,0.0],"mayk":[7,0,0.0],"noab":[7,0,0.0],"nonamegiven":[7,0,0.0],"nyyeir":[7,0,0.0],"omiri":[7,0,0.0],"rennox":[7,0,0.0],"rhylo":[7,0,0.0],"rhyz":[7,0,0.0],"ridhay":[7,0,0.0],"sakhai":[7,0,0.0],"sevian":[7,0,0.0],"thiyash":[7,0,0.0],"ustym":[7,0,0.0],"vaan":[7,0,0.0],"vasishta":[7,0,0.0],"wender":[7,0,0.0],"willians":[7,0,0.0],"woodmael":[7,0,0.0],"yam":[7,0,0.0],"yloan":[7,0,0.0],"zaelan":[7,0,0.0],"zayaire":[7,0,0.0],"airmias":[6,0,0.0],"akaal":[6,0,0.0],"akino":[6,0,0.0],"aleko":[6,0,0.0],"alhussein":[6,0,0.0],"alonis":[6,0,0.0],"amonra":[6,0,0.0],"andrii":[6,0,0.0],"anwit":[6,0,0.0],"armell":[6,0,0.0],"arosh":[6,0,0.0],"arvani":[6,0,0.0],"asmund":[6,0,0.0],"axios":[6,0,0.0],"axzael":[6,0,0.0],"aydens":[6,0,0.0],"aysher":[6,0,0.0],"azwad":[6,0,0.0],"baldur":[6,0,0.0],"bandit":[6,0,0.0],"beaudi":[6,0,0.0],"bendjy":[6,0,0.0],"braxxon":[6,0,0.0],"camzen":[6,0,0.0],"cylo":[6,0,0.0],"dakylan":[6,0,0.0],"dezmir":[6,0,0.0],"diaa":[6,0,0.0],"divyaan":[6,0,0.0],"durin":[6,0,0.0],"edwens":[6,0,0.0],"eidrian":[6,0,0.0],"elhaan":[6,0,0.0],"emekai":[6,0,0.0],"esael":[6,0,0.0],"esaia":[6,0,0.0],"estevao":[6,0,0.0],"ezlan":[6,0,0.0],"ezrian":[6,0,0.0],"fadhl":[6,0,0.0],"foden":[6,0,0.0],"franyel":[6,0,0.0],"grizz":[6,0,0.0],"gurtegh":[6,0,0.0],"hallston":[6,0,0.0],"hanvik":[6,0,0.0],"hazur":[6,0,0.0],"higgins":[6,0,0.0],"ilex":[6,0,0.0],"iliam":[6,0,0.0],"imiri":[6,0,0.0],"invictus":[6,0,0.0],"iyeir":[6,0,0.0],"jahangir":[6,0,0.0],"jahsae":[6,0,0.0],"jahyir":[6,0,0.0],"jaikari":[6,0,0.0],"jazeir":[6,0,0.0],"jazias":[6,0,0.0],"jhin":[6,0,0.0],"jhojan":[6,0,0.0],"jiraya":[6,0,0.0],"johani":[6,0,0.0],"joshir":[6,0,0.0],"josthin":[6,0,0.0],"kaelix":[6,0,0.0],"kaimeir":[6,0,0.0],"kaisir":[6,0,0.0],"kaivier":[6,0,0.0],"kaizan":[6,0,0.0],"kaizeir":[6,0,0.0],"kallo":[6,0,0.0],"kambren":[6,0,0.0],"kashous":[6,0,0.0],"kearis":[6,0,0.0],"keomani":[6,0,0.0],"keyller":[6,0,0.0],"khalo":[6,0,0.0],"khamarii":[6,0,0.0],"khycen":[6,0,0.0],"khyeir":[6,0,0.0],"kolstyn":[6,0,0.0],"kyizen":[6,0,0.0],"kynzo":[6,0,0.0],"lawakua":[6,0,0.0],"leojames":[6,0,0.0],"lowens":[6,0,0.0],"lynxx":[6,0,0.0],"madhavan":[6,0,0.0],"makais":[6,0,0.0],"marcielo":[6,0,0.0],"masyah":[6,0,0.0],"milhan":[6,0,0.0],"mohammadhamza":[6,0,0.0],"mpano":[6,0,0.0],"myro":[6,0,0.0],"nahzai":[6,0,0.0],"nehitan":[6,0,0.0],"neydan":[6,0,0.0],"noalen":[6,0,0.0],"noham":[6,0,0.0],"nyhir":[6,0,0.0],"nymeri":[6,0,0.0],"oceanus":[6,0,0.0],"osaiah":[6,0,0.0],"osiyah":[6,0,0.0],"rhazi":[6,0,0.0],"rhodey":[6,0,0.0],"ripper":[6,0,0.0],"ritsu":[6,0,0.0],"ronnan":[6,0,0.0],"rooker":[6,0,0.0],"rozari":[6,0,0.0],"rudriv":[6,0,0.0],"rufael":[6,0,0.0],"ruwan":[6,0,0.0],"rykr":[6,0,0.0],"sangwa":[6,0,0.0],"sayaan":[6,0,0.0],"sayje":[6,0,0.0],"shailo":[6,0,0.0],"shamai":[6,0,0.0],"shriansh":[6,0,0.0],"symeer":[6,0,0.0],"tihago":[6,0,0.0],"vajra":[6,0,0.0],"vidith":[6,0,0.0],"vino":[6,0,0.0],"xaylan":[6,0,0.0],"xaziel":[6,0,0.0],"xolo":[6,0,0.0],"yelson":[6,0,0.0],"yusufjon":[6,0,0.0],"zaiyel":[6,0,0.0],"zaiyre":[6,0,0.0],"zavari":[6,0,0.0],"zayire":[6,0,0.0],"zaylo":[6,0,0.0],"zemari":[6,0,0.0],"aarash":[5,0,0.0],"aaries":[5,0,0.0],"abdulhaleem":[5,0,0.0],"abiner":[5,0,0.0],"abwe":[5,0,0.0],"adamas":[5,0,0.0],"adityaram":[5,0,0.0],"adyanth":[5,0,0.0],"afari":[5,0,0.0],"agan":[5,0,0.0],"ahnest":[5,0,0.0],"aidam":[5,0,0.0],"aidens":[5,0,0.0],"air":[5,0,0.0],"alinur":[5,0,0.0],"alireda":[5,0,0.0],"amanullah":[5,0,0.0],"amayis":[5,0,0.0],"amidio":[5,0,0.0],"anghelo":[5,0,0.0],"anzo":[5,0,0.0],"apharri":[5,0,0.0],"arise":[5,0,0.0],"arith":[5,0,0.0],"arllo":[5,0,0.0],"arres":[5,0,0.0],"arvan":[5,0,0.0],"asherjames":[5,0,0.0],"atlyss":[5,0,0.0],"atrayus":[5,0,0.0],"atreides":[5,0,0.0],"audencio":[5,0,0.0],"aumari":[5,0,0.0],"azaiel":[5,0,0.0],"azayne":[5,0,0.0],"azraan":[5,0,0.0],"beaudie":[5,0,0.0],"benyomin":[5,0,0.0],"berlens":[5,0,0.0],"bian":[5,0,0.0],"brylo":[5,0,0.0],"casteel":[5,0,0.0],"charter":[5,0,0.0],"chrisyius":[5,0,0.0],"ciano":[5,0,0.0],"cilian":[5,0,0.0],"coastyn":[5,0,0.0],"creu":[5,0,0.0],"crow":[5,0,0.0],"dachi":[5,0,0.0],"daharie":[5,0,0.0],"dahkari":[5,0,0.0],"damjan":[5,0,0.0],"deiker":[5,0,0.0],"deyver":[5,0,0.0],"dhruvansh":[5,0,0.0],"diing":[5,0,0.0],"dimitrio":[5,0,0.0],"eilo":[5,0,0.0],"eiram":[5,0,0.0],"elionai":[5,0,0.0],"elliel":[5,0,0.0],"esan":[5,0,0.0],"etzael":[5,0,0.0],"ewens":[5,0,0.0],"eydeen":[5,0,0.0],"eyker":[5,0,0.0],"ezerah":[5,0,0.0],"ezmari":[5,0,0.0],"ezraiah":[5,0,0.0],"fatehbir":[5,0,0.0],"fikayo":[5,0,0.0],"galahad":[5,0,0.0],"gangelo":[5,0,0.0],"gratian":[5,0,0.0],"gurbaz":[5,0,0.0],"haddix":[5,0,0.0],"hansh":[5,0,0.0],"hiam":[5,0,0.0],"humayd":[5,0,0.0],"ilman":[5,0,0.0],"isacar":[5,0,0.0],"isahn":[5,0,0.0],"islan":[5,0,0.0],"izaire":[5,0,0.0],"jaceir":[5,0,0.0],"jaehaerys":[5,0,0.0],"jahsere":[5,0,0.0],"jaimani":[5,0,0.0],"jaiye":[5,0,0.0],"jakazi":[5,0,0.0],"jaster":[5,0,0.0],"jaswik":[5,0,0.0],"jawen":[5,0,0.0],"jeico":[5,0,0.0],"jeyser":[5,0,0.0],"jingze":[5,0,0.0],"judens":[5,0,0.0],"jyere":[5,0,0.0],"jyzir":[5,0,0.0],"kaezen":[5,0,0.0],"kaisten":[5,0,0.0],"kanata":[5,0,0.0],"kanekoa":[5,0,0.0],"kashmyr":[5,0,0.0],"kaymar":[5,0,0.0],"kazmier":[5,0,0.0],"keev":[5,0,0.0],"kemazi":[5,0,0.0],"kemonii":[5,0,0.0],"kenzlo":[5,0,0.0],"kevit":[5,0,0.0],"keyano":[5,0,0.0],"keyes":[5,0,0.0],"khalev":[5,0,0.0],"khalias":[5,0,0.0],"khalys":[5,0,0.0],"khartier":[5,0,0.0],"khasan":[5,0,0.0],"khasi":[5,0,0.0],"khazmir":[5,0,0.0],"kheart":[5,0,0.0],"kiazen":[5,0,0.0],"kilam":[5,0,0.0],"kilyam":[5,0,0.0],"kirav":[5,0,0.0],"knoxen":[5,0,0.0],"knoxsyn":[5,0,0.0],"kreeden":[5,0,0.0],"kreu":[5,0,0.0],"krith":[5,0,0.0],"kwamir":[5,0,0.0],"kylori":[5,0,0.0],"kymeer":[5,0,0.0],"lahian":[5,0,0.0],"lawi":[5,0,0.0],"layvin":[5,0,0.0],"lienzo":[5,0,0.0],"liyansh":[5,0,0.0],"lykos":[5,0,0.0],"lyor":[5,0,0.0],"magdy":[5,0,0.0],"magik":[5,0,0.0],"mahalo":[5,0,0.0],"mairav":[5,0,0.0],"majoure":[5,0,0.0],"manoli":[5,0,0.0],"markari":[5,0,0.0],"masis":[5,0,0.0],"mattathias":[5,0,0.0],"menas":[5,0,0.0],"methuselah":[5,0,0.0],"mhazi":[5,0,0.0],"mingyu":[5,0,0.0],"mohammadadnan":[5,0,0.0],"mohammadazlan":[5,0,0.0],"moheeb":[5,0,0.0],"muhammadayub":[5,0,0.0],"muhammadusman":[5,0,0.0],"musleh":[5,0,0.0],"muyan":[5,0,0.0],"nahaliel":[5,0,0.0],"nahiyan":[5,0,0.0],"nahmari":[5,0,0.0],"nanakwadwo":[5,0,0.0],"naru":[5,0,0.0],"nes":[5,0,0.0],"nezra":[5,0,0.0],"nhoa":[5,0,0.0],"nirvay":[5,0,0.0],"nivansh":[5,0,0.0],"niyer":[5,0,0.0],"nizaire":[5,0,0.0],"noath":[5,0,0.0],"nofal":[5,0,0.0],"nuaym":[5,0,0.0],"nussy":[5,0,0.0],"nyjour":[5,0,0.0],"nyland":[5,0,0.0],"nymari":[5,0,0.0],"nymier":[5,0,0.0],"nymiere":[5,0,0.0],"ocyris":[5,0,0.0],"olukolade":[5,0,0.0],"omyri":[5,0,0.0],"onnyx":[5,0,0.0],"oro":[5,0,0.0],"osai":[5,0,0.0],"oshean":[5,0,0.0],"ozari":[5,0,0.0],"ozi":[5,0,0.0],"prayansh":[5,0,0.0],"pressure":[5,0,0.0],"quil":[5,0,0.0],"raf":[5,0,0.0],"raon":[5,0,0.0],"raseem":[5,0,0.0],"rhoades":[5,0,0.0],"rhy":[5,0,0.0],"riles":[5,0,0.0],"riyanshreddy":[5,0,0.0],"romeh":[5,0,0.0],"rudhav":[5,0,0.0],"rudranshreddy":[5,0,0.0],"ryaire":[5,0,0.0],"ryiot":[5,0,0.0],"rylas":[5,0,0.0],"sacari":[5,0,0.0],"saihan":[5,0,0.0],"sashwat":[5,0,0.0],"searcher":[5,0,0.0],"sevinn":[5,0,0.0],"shivanshreddy":[5,0,0.0],"shragi":[5,0,0.0],"shreeyansh":[5,0,0.0],"siair":[5,0,0.0],"solas":[5,0,0.0],"stunner":[5,0,0.0],"sufjan":[5,0,0.0],"tadey":[5,0,0.0],"tahkari":[5,0,0.0],"tahmaj":[5,0,0.0],"takaius":[5,0,0.0],"teotl":[5,0,0.0],"thrasher":[5,0,0.0],"tiar":[5,0,0.0],"toivy":[5,0,0.0],"truz":[5,0,0.0],"tyeir":[5,0,0.0],"tyro":[5,0,0.0],"vedavid":[5,0,0.0],"veran":[5,0,0.0],"walten":[5,0,0.0],"whip":[5,0,0.0],"wilker":[5,0,0.0],"woodsen":[5,0,0.0],"xhozen":[5,0,0.0],"ximen":[5,0,0.0],"xol":[5,0,0.0],"xyier":[5,0,0.0],"yaaqoub":[5,0,0.0],"yaisel":[5,0,0.0],"yijun":[5,0,0.0],"yitbarek":[5,0,0.0],"yoangel":[5,0,0.0],"yohannan":[5,0,0.0],"yosuan":[5,0,0.0],"yoziah":[5,0,0.0],"zahel":[5,0,0.0],"zakyus":[5,0,0.0],"zanvil":[5,0,0.0],"zemaj":[5,0,0.0],"zenin":[5,0,0.0],"zeril":[5,0,0.0],"zexi":[5,0,0.0],"zimiri":[5,0,0.0],"zohen":[5,0,0.0],"zyloh":[5,0,0.0]}} \ No newline at end of file diff --git a/api/services/gender/test_service.py b/api/services/gender/test_service.py new file mode 100644 index 0000000..cbfab7d --- /dev/null +++ b/api/services/gender/test_service.py @@ -0,0 +1,248 @@ +""" +Test script for the gender prediction service. +""" + +import asyncio + +from api.services.gender.gender_service import GenderService + + +async def test_local_model(): + """Test predictions using local model only.""" + print("\n" + "=" * 60) + print("Testing Local Model Predictions") + print("=" * 60) + + # Initialize service without API key (local model only) + service = GenderService() + + # Test high-confidence names + high_confidence_names = [ + "John", + "Mary", + "Michael", + "Sarah", + "Robert", + "Lisa", + "William", + "Jennifer", + "David", + "Patricia", + ] + + print("\nHigh-confidence predictions (should use local model):") + print("-" * 50) + for name in high_confidence_names: + result = await service.predict(name) + print( + f" {name:12} -> {result.gender:6} (conf: {result.confidence:.3f}, source: {result.source})" + ) + + # Test ambiguous names + ambiguous_names = [ + "Taylor", + "Jordan", + "Casey", + "Alex", + "Morgan", + "Blake", + "Avery", + "Riley", + "Quinn", + "Sage", + ] + + print("\nAmbiguous names (lower confidence):") + print("-" * 50) + for name in ambiguous_names: + result = await service.predict(name) + status = "✓" if result.source == "model" and result.confidence >= 0.85 else "○" + print( + f" {status} {name:12} -> {result.gender:6} (conf: {result.confidence:.3f}, source: {result.source})" + ) + + # Test unknown names + unknown_names = ["Xyzabc", "Qwerty", "Abcdef"] + + print("\nUnknown names (not in dataset):") + print("-" * 50) + for name in unknown_names: + result = await service.predict(name) + print( + f" {name:12} -> {result.gender:7} (conf: {result.confidence:.3f}, source: {result.source})" + ) + + # Get service statistics + stats = await service.get_stats() + print("\nService Statistics:") + print("-" * 50) + print(f" Model version: {stats['model']['version']}") + print(f" Total names: {stats['model']['total_names']:,}") + print(f" High confidence: {stats['model']['high_confidence_names']:,}") + print(f" Threshold: {stats['model']['confidence_threshold']}") + print(f" Cache type: {stats['cache'].get('cache_type', 'unknown')}") + print(f" Cached names: {stats['cache'].get('cached_names', 0)}") + print(f" API enabled: {stats['api']['enabled']}") + + await service.close() + + +async def test_with_api(): + """Test with GenderAPI integration (requires API key).""" + print("\n" + "=" * 60) + print("Testing with GenderAPI Integration") + print("=" * 60) + + # Check if API key is available + import os + + api_key = os.getenv("GENDER_API_KEY") + + if not api_key: + print("\n⚠️ No GENDER_API_KEY found in environment") + print(" Skipping API integration tests") + print(" To test API fallback, set: export GENDER_API_KEY=your_key") + return + + service = GenderService(gender_api_key=api_key) + + # Test names that might need API fallback + test_names = [ + "Priya", # Indian name, might not be in SSA data + "Hiroshi", # Japanese name + "Giovanni", # Italian name + "Olga", # Russian name + "Chen", # Chinese name + ] + + print("\nInternational names (may use API fallback):") + print("-" * 50) + for name in test_names: + result = await service.predict(name) + print( + f" {name:12} -> {result.gender:6} (conf: {result.confidence:.3f}, source: {result.source})" + ) + + # Test batch prediction + print("\nBatch prediction test:") + print("-" * 50) + batch_names = ["Alice", "Bob", "Charlie", "Diana", "Eve"] + results = await service.batch_predict(batch_names) + for name, result in zip(batch_names, results): + print(f" {name:12} -> {result.gender:6} (conf: {result.confidence:.3f})") + + await service.close() + + +async def test_salutation(): + """Test salutation generation.""" + print("\n" + "=" * 60) + print("Testing Salutation Generation") + print("=" * 60) + + service = GenderService() + + # Test high-confidence names + test_cases = [ + ("John", "Mr."), + ("Mary", "Ms."), + ("Michael", "Mr."), + ("Sarah", "Ms."), + ("Robert", "Mr."), + ("Jennifer", "Ms."), + ] + + print("\nHigh-confidence salutations:") + print("-" * 50) + for name, expected in test_cases: + salutation = await service.get_salutation(name) + status = "✓" if salutation == expected else "✗" + print(f" {status} {name:12} -> {salutation:4} (expected: {expected})") + + # Test ambiguous/unknown names + ambiguous_cases = [ + "Xyzabc", # Unknown name + "Qwerty", # Unknown name + "", # Empty string + " ", # Whitespace + "123", # Numbers + ] + + print("\nUnknown/ambiguous names (should return 'Dear'):") + print("-" * 50) + for name in ambiguous_cases: + salutation = await service.get_salutation(name) + display_name = f"'{name}'" if name else "(empty)" + status = "✓" if salutation == "Dear" else "✗" + print(f" {status} {display_name:12} -> {salutation}") + + # Test with custom confidence threshold + print("\nCustom confidence threshold test:") + print("-" * 50) + # Taylor has confidence ~0.744, should be "Dear" with high threshold + salutation_default = await service.get_salutation("Taylor") + salutation_high = await service.get_salutation("Taylor", confidence_threshold=0.9) + print(f" Taylor (default threshold): {salutation_default}") + print(f" Taylor (0.9 threshold): {salutation_high}") + + await service.close() + + +async def test_edge_cases(): + """Test edge cases and error handling.""" + print("\n" + "=" * 60) + print("Testing Edge Cases") + print("=" * 60) + + service = GenderService() + + # Test empty/invalid inputs + edge_cases = [ + "", # Empty string + " ", # Whitespace + "123", # Numbers + "John-Paul", # Hyphenated + "Mary Ann", # Space in name + "O'Brien", # Apostrophe + "José", # Accented + ] + + print("\nEdge case inputs:") + print("-" * 50) + for name in edge_cases: + result = await service.predict(name) + display_name = f"'{name}'" if name else "(empty)" + print( + f" {display_name:12} -> {result.gender:7} (conf: {result.confidence:.3f})" + ) + + # Test case insensitivity + print("\nCase insensitivity test:") + print("-" * 50) + case_variants = ["john", "JOHN", "John", "JoHn"] + for name in case_variants: + result = await service.predict(name) + print(f" {name:12} -> {result.gender:6} (conf: {result.confidence:.3f})") + + await service.close() + + +async def main(): + """Run all tests.""" + print("\n" + "=" * 60) + print("Gender Prediction Service Test Suite") + print("=" * 60) + + # Run tests + await test_local_model() + await test_salutation() + await test_edge_cases() + await test_with_api() + + print("\n" + "=" * 60) + print("✓ All tests completed!") + print("=" * 60) + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/api/services/integrations/__init__.py b/api/services/integrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/services/integrations/nango.py b/api/services/integrations/nango.py new file mode 100644 index 0000000..ce96861 --- /dev/null +++ b/api/services/integrations/nango.py @@ -0,0 +1,253 @@ +import hashlib +import json +import os +from typing import Any, Dict + +import httpx +from fastapi import HTTPException +from loguru import logger +from pydantic import BaseModel + +from api.db import db_client + +NANGO_ALLOWED_INTEGRATIONS = [ + i.strip() for i in os.environ.get("NANGO_ALLOWED_INTEGRATIONS", "slack").split(",") +] + + +class NangoWebhookRequest(BaseModel): + type: str + connectionId: str + providerConfigKey: str + authMode: str + provider: str + environment: str + operation: str + endUser: dict # Contains endUserId and organizationId + success: bool + + +class NangoService: + def __init__(self): + self.base_url = "https://api.nango.dev" + self.secret_key = os.getenv("NANGO_API_KEY") + + def _verify_webhook_signature( + self, request_body: str, signature: str = None + ) -> bool: + """ + Verify the webhook signature using SHA256 hash. + + Args: + request_body: The raw request body as string + signature: The signature from request headers (optional for now) + + Returns: + True if signature is valid + """ + expected_signature = self.secret_key + request_body + expected_hash = hashlib.sha256(expected_signature.encode("utf-8")).hexdigest() + return expected_hash == signature + + async def create_session( + self, user_id: str, organization_id: int + ) -> Dict[str, Any]: + """ + Create a Nango session for the given user and organization. + + Args: + user_id: The end user ID + organization_id: The organization ID + + Returns: + Response from Nango API + """ + if not self.secret_key: + raise ValueError("NANGO_SECRET_KEY environment variable is not set") + + headers = { + "Authorization": f"Bearer {self.secret_key}", + "Content-Type": "application/json", + } + + payload = { + "end_user": {"id": user_id}, + "organization": {"id": str(organization_id)}, + "allowed_integrations": NANGO_ALLOWED_INTEGRATIONS, + } + + async with httpx.AsyncClient() as client: + response = await client.post( + f"{self.base_url}/connect/sessions", headers=headers, json=payload + ) + + if response.status_code != 201: + raise httpx.HTTPStatusError( + f"Nango API error: {response.status_code}", + request=response.request, + response=response, + ) + + return response.json() + + async def process_webhook( + self, raw_body: bytes, signature: str = None + ) -> Dict[str, str]: + """ + Process incoming Nango webhook request. + + Args: + raw_body: The raw request body as bytes + signature: Optional signature from request headers + + Returns: + Dict with status and message + """ + # Decode and parse the request body + try: + body_text = raw_body.decode("utf-8") + webhook_json = json.loads(body_text) if body_text else {} + logger.debug(f"received webhook from nango: {webhook_json}") + except json.JSONDecodeError as e: + logger.error(f"JSON decode error: {e} body_text: {body_text}") + raise HTTPException(status_code=400, detail=f"Invalid JSON: {str(e)}") + + # Verify webhook signature + if not self._verify_webhook_signature(body_text, signature): + raise HTTPException(status_code=401, detail="Invalid webhook signature") + + # Parse webhook data + try: + webhook_data = NangoWebhookRequest(**webhook_json) + except Exception as e: + logger.error(f"Failed to parse webhook data: {e}") + raise HTTPException( + status_code=400, detail=f"Invalid webhook format: {str(e)}" + ) + + # Extract user and organization IDs from the webhook payload + end_user = webhook_data.endUser + if ( + not end_user + or "endUserId" not in end_user + or "organizationId" not in end_user + ): + raise HTTPException( + status_code=400, detail="Missing endUser information in webhook payload" + ) + + user_id = int(end_user["endUserId"]) + organization_id = int(end_user["organizationId"]) + + # Use the connectionId as the integration_id since it's unique per integration + integration_id = webhook_data.connectionId + + # Initialize connection_details + connection_details = {} + + # Fetch connection details if type is auth and provider is slack + if webhook_data.type == "auth": + connection_details = await self._fetch_connection_details( + integration_id, webhook_data.provider + ) + + # Create the integration in the database + integration = await db_client.create_integration( + integration_id=integration_id, + organisation_id=organization_id, + provider=webhook_data.provider, + created_by=user_id, + is_active=True, + connection_details=connection_details, + ) + + return { + "status": "success", + "message": f"Integration created successfully with ID: {integration.id}", + } + + async def _fetch_connection_details( + self, connection_id: str, provider_key: str + ) -> Dict[str, Any]: + """ + Fetch connection details from Nango API for a given connection ID. + + Args: + connection_id: The connection ID from the webhook + + Returns: + Connection details as a dictionary + """ + + headers = { + "Authorization": f"Bearer {self.secret_key}", + "Content-Type": "application/json", + } + + url = f"{self.base_url}/connection/{connection_id}/?provider_config_key={provider_key}" + + async with httpx.AsyncClient() as client: + try: + response = await client.get(url, headers=headers) + + if response.status_code != 200: + logger.error( + f"Failed to fetch connection details: {response.status_code} - {response.text}" + ) + raise httpx.HTTPStatusError( + f"Nango API error while fetching connection: {response.status_code}", + request=response.request, + response=response, + ) + + connection_details = response.json() + return connection_details + + except httpx.HTTPError as e: + logger.error(f"HTTP error while fetching connection details: {e}") + # Return empty dict if API call fails, but log the error + return {} + + async def get_access_token( + self, connection_id: str, provider_config_key: str + ) -> Dict[str, Any]: + """ + Get the latest access token for a connection from Nango. + + Args: + connection_id: The connection ID + provider_config_key: The provider config key (e.g., 'google-sheet') + + Returns: + Dict containing access token and other connection details + """ + headers = { + "Authorization": f"Bearer {self.secret_key}", + "Content-Type": "application/json", + } + + url = f"{self.base_url}/connection/{connection_id}?provider_config_key={provider_config_key}" + + async with httpx.AsyncClient() as client: + try: + response = await client.get(url, headers=headers) + + if response.status_code != 200: + logger.error( + f"Failed to get access token: {response.status_code} - {response.text}" + ) + raise httpx.HTTPStatusError( + f"Nango API error: {response.status_code}", + request=response.request, + response=response, + ) + + return response.json() + + except httpx.HTTPError as e: + logger.error(f"HTTP error while getting access token: {e}") + raise + + +# Create a singleton instance +nango_service = NangoService() diff --git a/api/services/looptalk/__init__.py b/api/services/looptalk/__init__.py new file mode 100644 index 0000000..f959ec5 --- /dev/null +++ b/api/services/looptalk/__init__.py @@ -0,0 +1,3 @@ +from .orchestrator import LoopTalkTestOrchestrator + +__all__ = ["LoopTalkTestOrchestrator"] diff --git a/api/services/looptalk/audio_streamer.py b/api/services/looptalk/audio_streamer.py new file mode 100644 index 0000000..0acdb22 --- /dev/null +++ b/api/services/looptalk/audio_streamer.py @@ -0,0 +1,220 @@ +""" +Audio streaming processor for LoopTalk real-time audio monitoring. + +This processor captures audio from both actor and adversary agents and streams +it to connected WebRTC clients for real-time monitoring. +""" + +import asyncio +from typing import Dict, Set + +from loguru import logger +from pipecat.audio.utils import mix_audio +from pipecat.frames.frames import ( + Frame, + InputAudioRawFrame, + OutputAudioRawFrame, +) +from pipecat.processors.frame_processor import FrameDirection, FrameProcessor + + +class LoopTalkAudioStreamer(FrameProcessor): + """ + Processes audio frames from LoopTalk conversations and streams to WebRTC clients. + + This processor sits in the pipeline and captures all audio frames, then + forwards them to connected WebRTC clients for real-time monitoring. + """ + + def __init__( + self, + test_session_id: str, + role: str, # "actor" or "adversary" + **kwargs, + ): + super().__init__(**kwargs) + self._test_session_id = test_session_id + self._role = role + self._listeners: Set[asyncio.Queue] = set() + self._sample_rate = 16000 # Default sample rate + self._num_channels = 1 + + def add_listener(self, queue: asyncio.Queue): + """Add a listener queue for streaming audio.""" + self._listeners.add(queue) + + def remove_listener(self, queue: asyncio.Queue): + """Remove a listener queue.""" + self._listeners.discard(queue) + + async def process_frame(self, frame: Frame, direction: FrameDirection): + """Process audio frames and stream to listeners.""" + await super().process_frame(frame, direction) + + # Capture both input and output audio + if isinstance(frame, (InputAudioRawFrame, OutputAudioRawFrame)): + # Extract audio data + audio_data = frame.audio + sample_rate = frame.sample_rate + num_channels = frame.num_channels + + # Store sample rate for reference + if sample_rate: + self._sample_rate = sample_rate + if num_channels: + self._num_channels = num_channels + + # Stream to all listeners + if self._listeners and audio_data: + # Create a packet with metadata + packet = { + "test_session_id": self._test_session_id, + "role": self._role, + "audio": audio_data, + "sample_rate": sample_rate, + "num_channels": num_channels, + "is_input": isinstance(frame, InputAudioRawFrame), + } + + # Send to all listeners without blocking + for queue in list(self._listeners): + try: + queue.put_nowait(packet) + except asyncio.QueueFull: + logger.warning( + f"Audio queue full for session {self._test_session_id}" + ) + except Exception as e: + logger.error(f"Error streaming audio: {e}") + self._listeners.discard(queue) + elif self._listeners and not audio_data: + logger.warning( + f"Audio streamer {self._role} received frame with no audio data" + ) + elif audio_data and not self._listeners: + # This is expected early in the session before WebSocket connects + pass + + # Always forward the frame + await self.push_frame(frame, direction) + + +class LoopTalkAudioMixer: + """ + Mixes audio from actor and adversary streams for combined playback. + + This class manages the mixing of two audio streams (actor and adversary) + to create a combined audio stream for monitoring. + """ + + def __init__(self, test_session_id: str): + self._test_session_id = test_session_id + self._actor_buffer = bytearray() + self._adversary_buffer = bytearray() + self._listeners: Set[asyncio.Queue] = set() + self._sample_rate = 16000 + self._num_channels = 1 + self._buffer_size = 8000 # 0.5 seconds at 16kHz + + def add_listener(self, queue: asyncio.Queue): + """Add a listener for mixed audio.""" + self._listeners.add(queue) + + def remove_listener(self, queue: asyncio.Queue): + """Remove a listener.""" + self._listeners.discard(queue) + + async def add_audio( + self, role: str, audio_data: bytes, sample_rate: int, num_channels: int + ): + """Add audio data from actor or adversary.""" + if role == "actor": + self._actor_buffer.extend(audio_data) + elif role == "adversary": + self._adversary_buffer.extend(audio_data) + + # Update audio parameters + self._sample_rate = sample_rate + self._num_channels = num_channels + + # Check if we have enough data to mix + await self._check_and_mix() + + async def _check_and_mix(self): + """Check buffers and mix audio when enough data is available.""" + # Mix when we have at least buffer_size in both buffers + while ( + len(self._actor_buffer) >= self._buffer_size + and len(self._adversary_buffer) >= self._buffer_size + ): + # Extract chunks + actor_chunk = bytes(self._actor_buffer[: self._buffer_size]) + adversary_chunk = bytes(self._adversary_buffer[: self._buffer_size]) + + # Remove from buffers + del self._actor_buffer[: self._buffer_size] + del self._adversary_buffer[: self._buffer_size] + + # Mix audio + mixed_audio = mix_audio(actor_chunk, adversary_chunk) + + # Stream to listeners + if self._listeners and mixed_audio: + packet = { + "test_session_id": self._test_session_id, + "role": "mixed", + "audio": mixed_audio, + "sample_rate": self._sample_rate, + "num_channels": self._num_channels, + "is_input": False, + } + + for queue in list(self._listeners): + try: + queue.put_nowait(packet) + except asyncio.QueueFull: + logger.warning( + f"Mixed audio queue full for session {self._test_session_id}" + ) + except Exception as e: + logger.error(f"Error streaming mixed audio: {e}") + self._listeners.discard(queue) + + +# Global registry for audio streamers and mixers +_audio_streamers: Dict[str, Dict[str, LoopTalkAudioStreamer]] = {} +_audio_mixers: Dict[str, LoopTalkAudioMixer] = {} + + +def get_or_create_audio_streamer( + test_session_id: str, role: str +) -> LoopTalkAudioStreamer: + """Get or create an audio streamer for a test session and role.""" + if test_session_id not in _audio_streamers: + _audio_streamers[test_session_id] = {} + + if role not in _audio_streamers[test_session_id]: + _audio_streamers[test_session_id][role] = LoopTalkAudioStreamer( + test_session_id=test_session_id, role=role + ) + + return _audio_streamers[test_session_id][role] + + +def get_or_create_audio_mixer(test_session_id: str) -> LoopTalkAudioMixer: + """Get or create an audio mixer for a test session.""" + if test_session_id not in _audio_mixers: + _audio_mixers[test_session_id] = LoopTalkAudioMixer(test_session_id) + + return _audio_mixers[test_session_id] + + +def cleanup_audio_streamers(test_session_id: str): + """Clean up audio streamers and mixers for a test session.""" + if test_session_id in _audio_streamers: + del _audio_streamers[test_session_id] + + if test_session_id in _audio_mixers: + del _audio_mixers[test_session_id] + + logger.info(f"Cleaned up audio streamers for test session {test_session_id}") diff --git a/api/services/looptalk/core/__init__.py b/api/services/looptalk/core/__init__.py new file mode 100644 index 0000000..6e4ca1c --- /dev/null +++ b/api/services/looptalk/core/__init__.py @@ -0,0 +1 @@ +"""Core modules for LoopTalk orchestration.""" diff --git a/api/services/looptalk/core/pipeline_builder.py b/api/services/looptalk/core/pipeline_builder.py new file mode 100644 index 0000000..d080e45 --- /dev/null +++ b/api/services/looptalk/core/pipeline_builder.py @@ -0,0 +1,167 @@ +"""Pipeline building logic for LoopTalk agents.""" + +from typing import Any, Dict + +from loguru import logger +from pipecat.pipeline.pipeline import Pipeline +from pipecat.processors.filters.stt_mute_filter import ( + STTMuteConfig, + STTMuteFilter, + STTMuteStrategy, +) +from pipecat.transports import InternalTransport + +from api.db.db_client import DBClient +from api.services.looptalk.audio_streamer import get_or_create_audio_streamer +from api.services.pipecat.audio_config import AudioConfig +from api.services.pipecat.pipeline_builder import ( + create_pipeline_components, + create_pipeline_task, +) +from api.services.pipecat.pipeline_engine_callbacks_processor import ( + PipelineEngineCallbacksProcessor, +) +from api.services.pipecat.service_factory import ( + create_llm_service, + create_stt_service, + create_tts_service, +) +from api.services.workflow.dto import ReactFlowDTO +from api.services.workflow.pipecat_engine import PipecatEngine +from api.services.workflow.workflow import WorkflowGraph + + +class LoopTalkPipelineBuilder: + """Builds pipelines for LoopTalk agents.""" + + def __init__(self, db_client: DBClient): + """Initialize the pipeline builder. + + Args: + db_client: Database client for fetching user configurations + """ + self.db_client = db_client + + async def create_agent_pipeline( + self, + transport: InternalTransport, + workflow: Any, + test_session_id: int, + agent_id: str, + role: str, + ) -> Dict[str, Any]: + """Create a pipeline for an agent (actor or adversary). + + Args: + transport: Internal transport for the agent + workflow: Workflow model from database + test_session_id: ID of the test session + agent_id: Unique identifier for the agent + role: Either "actor" or "adversary" + + Returns: + Dictionary containing pipeline task, engine, and components + """ + # Get user configuration from database + user_config = await self.db_client.get_user_configurations(workflow.user_id) + + # Create pipeline components + audio_config = AudioConfig( + transport_in_sample_rate=16000, + transport_out_sample_rate=16000, + vad_sample_rate=16000, + pipeline_sample_rate=16000, + ) + + # Create services + stt = create_stt_service(user_config) + llm = create_llm_service(user_config) + tts = create_tts_service(user_config, audio_config) + + logger.debug(f"Created services for {role}: STT={stt}, LLM={llm}, TTS={tts}") + + audio_buffer, audio_synchronizer, transcript, context = ( + create_pipeline_components(audio_config) + ) + context_aggregator = llm.create_context_aggregator(context) + + # Get workflow graph + workflow_graph = WorkflowGraph( + ReactFlowDTO.model_validate(workflow.workflow_definition_with_fallback) + ) + + # Create engine + engine = PipecatEngine( + task=None, # Will be set after creating the task + llm=llm, + context=context, + tts=tts, + workflow=workflow_graph, + call_context_vars={}, + audio_buffer=audio_buffer, + workflow_run_id=None, # LoopTalk doesn't have workflow runs + ) + + # Create STT mute filter + stt_mute_filter = STTMuteFilter( + config=STTMuteConfig( + strategies={STTMuteStrategy.FIRST_SPEECH}, + ) + ) + + # Create pipeline engine callback processor + pipeline_engine_callback_processor = PipelineEngineCallbacksProcessor( + max_call_duration_seconds=300, + max_duration_end_task_callback=engine.create_max_duration_callback(), + llm_generated_text_callback=engine.create_llm_generated_text_callback(), + generation_started_callback=engine.create_generation_started_callback(), + ) + + # Get aggregators + user_context_aggregator = context_aggregator.user() + assistant_context_aggregator = context_aggregator.assistant() + + # Register processors with synchronizer for merged audio + audio_synchronizer.register_processors( + audio_buffer.input(), audio_buffer.output() + ) + + # Get audio streamer for real-time streaming + audio_streamer = get_or_create_audio_streamer(str(test_session_id), role) + + # Create pipeline + pipeline = Pipeline( + [ + transport.input(), + audio_buffer.input(), # Record input audio + audio_streamer, # Stream audio to connected clients + stt_mute_filter, + stt, + transcript.user(), + user_context_aggregator, + llm, + pipeline_engine_callback_processor, + tts, + transport.output(), + audio_buffer.output(), # Record output audio + transcript.assistant(), + assistant_context_aggregator, + ] + ) + + # Create pipeline task with unique conversation ID for tracing + conversation_id = f"{test_session_id}-{role}-{agent_id}" + task = create_pipeline_task(pipeline, conversation_id, audio_config) + + # Set the task on the engine + engine.task = task + + return { + "task": task, + "engine": engine, + "audio_buffer": audio_buffer, + "audio_synchronizer": audio_synchronizer, + "transcript": transcript, + "assistant_context_aggregator": assistant_context_aggregator, + "audio_streamer": audio_streamer, + } diff --git a/api/services/looptalk/core/recording_manager.py b/api/services/looptalk/core/recording_manager.py new file mode 100644 index 0000000..1e58e34 --- /dev/null +++ b/api/services/looptalk/core/recording_manager.py @@ -0,0 +1,216 @@ +"""Recording management for LoopTalk sessions.""" + +import wave +from pathlib import Path +from typing import Dict, Optional, Tuple + +from loguru import logger + +from api.enums import StorageBackend +from api.services.storage import storage_fs + + +class RecordingManager: + """Manages audio recording and transcript files for LoopTalk sessions.""" + + def __init__(self, base_dir: Path): + """Initialize the recording manager. + + Args: + base_dir: Base directory for temporary recordings + """ + self.base_dir = base_dir + self.base_dir.mkdir(parents=True, exist_ok=True) + + def get_recording_paths(self, test_session_id: int, role: str) -> Dict[str, Path]: + """Get file paths for recordings. + + Args: + test_session_id: ID of the test session + role: Either "actor" or "adversary" + + Returns: + Dictionary with paths for audio, transcript, and temp audio files + """ + session_dir = self.base_dir / f"session_{test_session_id}" + session_dir.mkdir(parents=True, exist_ok=True) + + return { + "audio": session_dir / f"{role}_audio.wav", + "transcript": session_dir / f"{role}_transcript.txt", + "temp_audio": session_dir / f"{role}_audio_temp.pcm", + } + + def convert_pcm_to_wav( + self, + test_session_id: int, + role: str, + sample_rate: int = 16000, + num_channels: int = 1, + ) -> Optional[Path]: + """Convert PCM audio file to WAV format. + + Args: + test_session_id: ID of the test session + role: Either "actor" or "adversary" + sample_rate: Sample rate of the audio + num_channels: Number of audio channels + + Returns: + Path to the WAV file if successful, None otherwise + """ + paths = self.get_recording_paths(test_session_id, role) + + # Check if PCM file exists + if not paths["temp_audio"].exists(): + logger.warning(f"No audio recorded for {role} in session {test_session_id}") + return None + + try: + # Read PCM data + with open(paths["temp_audio"], "rb") as f: + pcm_data = f.read() + + # Write WAV file + with wave.open(str(paths["audio"]), "wb") as wav_file: + wav_file.setnchannels(num_channels) + wav_file.setsampwidth(2) # 16-bit audio + wav_file.setframerate(sample_rate) + wav_file.writeframes(pcm_data) + + # Remove temporary PCM file + paths["temp_audio"].unlink() + + logger.info( + f"Converted audio to WAV for {role} in session {test_session_id}: {paths['audio']}" + ) + return paths["audio"] + + except Exception as e: + logger.error( + f"Failed to convert audio to WAV for {role} in session {test_session_id}: {e}" + ) + return None + + async def upload_recording_to_s3( + self, test_session_id: int, role: str + ) -> Tuple[Optional[str], Optional[str]]: + """Upload recording and transcript to S3. + + Args: + test_session_id: ID of the test session + role: Either "actor" or "adversary" + + Returns: + Tuple of (audio_url, transcript_url) or (None, None) if failed + """ + paths = self.get_recording_paths(test_session_id, role) + audio_url = None + transcript_url = None + + # Import here to avoid circular imports + + current_backend = StorageBackend.get_current_backend() + logger.info( + f"LOOPTALK UPLOAD: Using {current_backend.label} (code: {current_backend.code}) for session {test_session_id}, role: {role}" + ) + + # Upload audio if exists + if paths["audio"].exists(): + audio_key = f"looptalk/recordings/{test_session_id}/{role}_audio.wav" + try: + success = await storage_fs.aupload_file(str(paths["audio"]), audio_key) + if success: + audio_url = audio_key + logger.info( + f"Uploaded {role} audio to {current_backend.label}: {audio_key}" + ) + else: + logger.error( + f"Failed to upload {role} audio to {current_backend.label}" + ) + except Exception as e: + logger.error( + f"Error uploading {role} audio to {current_backend.label}: {e}" + ) + + # Upload transcript if exists + if paths["transcript"].exists(): + transcript_key = ( + f"looptalk/transcripts/{test_session_id}/{role}_transcript.txt" + ) + try: + success = await storage_fs.aupload_file( + str(paths["transcript"]), transcript_key + ) + if success: + transcript_url = transcript_key + logger.info( + f"Uploaded {role} transcript to {current_backend.label}: {transcript_key}" + ) + else: + logger.error( + f"Failed to upload {role} transcript to {current_backend.label}" + ) + except Exception as e: + logger.error( + f"Error uploading {role} transcript to {current_backend.label}: {e}" + ) + + return audio_url, transcript_url + + def cleanup_session_files(self, test_session_id: int): + """Clean up local files for a session. + + Args: + test_session_id: ID of the test session + """ + session_dir = self.base_dir / f"session_{test_session_id}" + if session_dir.exists(): + try: + import shutil + + shutil.rmtree(session_dir) + logger.debug(f"Cleaned up local files for session {test_session_id}") + except Exception as e: + logger.error(f"Failed to clean up session files: {e}") + + def get_recording_info(self, test_session_id: int) -> Dict[str, any]: + """Get information about recordings for a test session. + + Args: + test_session_id: ID of the test session + + Returns: + Dictionary with recording information + """ + session_dir = self.base_dir / f"session_{test_session_id}" + + info = { + "test_session_id": test_session_id, + "recording_dir": str(session_dir), + "files": {}, + } + + for role in ["actor", "adversary"]: + paths = self.get_recording_paths(test_session_id, role) + role_info = {} + + # Check audio file + if paths["audio"].exists(): + role_info["audio"] = { + "path": str(paths["audio"]), + "size_bytes": paths["audio"].stat().st_size, + } + + # Check transcript file + if paths["transcript"].exists(): + role_info["transcript"] = { + "path": str(paths["transcript"]), + "size_bytes": paths["transcript"].stat().st_size, + } + + if role_info: + info["files"][role] = role_info + + return info diff --git a/api/services/looptalk/core/session_manager.py b/api/services/looptalk/core/session_manager.py new file mode 100644 index 0000000..555e480 --- /dev/null +++ b/api/services/looptalk/core/session_manager.py @@ -0,0 +1,184 @@ +"""Session management for LoopTalk test sessions.""" + +import asyncio +from datetime import UTC, datetime +from typing import Any, Dict, Optional + +from loguru import logger + + +class SessionManager: + """Manages running LoopTalk test sessions.""" + + def __init__(self): + """Initialize the session manager.""" + self._running_sessions: Dict[int, Dict[str, Any]] = {} + self._disconnect_handlers: Dict[int, asyncio.Task] = {} + + def add_session(self, test_session_id: int, session_info: Dict[str, Any]): + """Add a new session to the manager. + + Args: + test_session_id: ID of the test session + session_info: Dictionary containing session information + """ + self._running_sessions[test_session_id] = session_info + + def get_session(self, test_session_id: int) -> Optional[Dict[str, Any]]: + """Get session information. + + Args: + test_session_id: ID of the test session + + Returns: + Session information dictionary or None if not found + """ + return self._running_sessions.get(test_session_id) + + def remove_session(self, test_session_id: int): + """Remove a session from the manager. + + Args: + test_session_id: ID of the test session + """ + if test_session_id in self._running_sessions: + del self._running_sessions[test_session_id] + + # Cancel any disconnect handler for this session + if test_session_id in self._disconnect_handlers: + handler = self._disconnect_handlers.pop(test_session_id) + if not handler.done(): + handler.cancel() + + def get_active_count(self) -> int: + """Get the number of currently active sessions.""" + return len(self._running_sessions) + + def get_active_info(self) -> Dict[str, Any]: + """Get information about all active sessions.""" + return { + "count": len(self._running_sessions), + "sessions": [ + { + "test_session_id": session_id, + "conversation_id": info["conversation"].id, + "start_time": info["start_time"], + "duration_seconds": int( + (datetime.now(UTC) - info["start_time"]).total_seconds() + ), + } + for session_id, info in self._running_sessions.items() + ], + } + + async def handle_agent_disconnect( + self, test_session_id: int, disconnected_role: str, stop_callback: callable + ): + """Handle when one agent disconnects. + + This will cancel the other agent as well to ensure clean shutdown. + + Args: + test_session_id: ID of the test session + disconnected_role: Role that disconnected ("actor" or "adversary") + stop_callback: Callback to stop the session + """ + logger.info( + f"Handling {disconnected_role} disconnect for session {test_session_id}" + ) + + # Check if we already have a disconnect handler running + if test_session_id in self._disconnect_handlers: + logger.debug( + f"Disconnect handler already running for session {test_session_id}" + ) + return + + # Create a task to handle the disconnect + async def _handle_disconnect(): + try: + # Wait a short time to avoid race conditions + await asyncio.sleep(0.5) + + # Check if session still exists + session_info = self.get_session(test_session_id) + if not session_info: + logger.debug(f"Session {test_session_id} already stopped") + return + + # Stop the session (which will cancel both agents) + logger.info( + f"Stopping session {test_session_id} due to {disconnected_role} disconnect" + ) + await stop_callback(test_session_id) + + except asyncio.CancelledError: + logger.debug( + f"Disconnect handler cancelled for session {test_session_id}" + ) + raise + except Exception as e: + logger.error( + f"Error handling disconnect for session {test_session_id}: {e}" + ) + + # Store the task so we can cancel it if needed + self._disconnect_handlers[test_session_id] = asyncio.create_task( + _handle_disconnect() + ) + + def update_audio_metadata( + self, + test_session_id: int, + role: str, + sample_rate: Optional[int] = None, + num_channels: Optional[int] = None, + ): + """Update audio metadata for a role in a session. + + Args: + test_session_id: ID of the test session + role: Either "actor" or "adversary" + sample_rate: Sample rate of the audio + num_channels: Number of audio channels + """ + if test_session_id not in self._running_sessions: + return + + if "audio_metadata" not in self._running_sessions[test_session_id]: + self._running_sessions[test_session_id]["audio_metadata"] = {} + + if role not in self._running_sessions[test_session_id]["audio_metadata"]: + self._running_sessions[test_session_id]["audio_metadata"][role] = {} + + metadata = self._running_sessions[test_session_id]["audio_metadata"][role] + if sample_rate is not None: + metadata["sample_rate"] = sample_rate + if num_channels is not None: + metadata["num_channels"] = num_channels + + def get_audio_metadata(self, test_session_id: int, role: str) -> Dict[str, Any]: + """Get audio metadata for a role in a session. + + Args: + test_session_id: ID of the test session + role: Either "actor" or "adversary" + + Returns: + Dictionary with sample_rate and num_channels + """ + default = {"sample_rate": 16000, "num_channels": 1} + + if test_session_id not in self._running_sessions: + return default + + metadata = ( + self._running_sessions.get(test_session_id, {}) + .get("audio_metadata", {}) + .get(role, {}) + ) + + return { + "sample_rate": metadata.get("sample_rate", 16000), + "num_channels": metadata.get("num_channels", 1), + } diff --git a/api/services/looptalk/orchestrator.py b/api/services/looptalk/orchestrator.py new file mode 100644 index 0000000..11ecb4c --- /dev/null +++ b/api/services/looptalk/orchestrator.py @@ -0,0 +1,553 @@ +import asyncio +import os +import uuid +from datetime import UTC, datetime +from pathlib import Path +from typing import Any, Dict, Optional + +from loguru import logger +from pipecat.pipeline.task import PipelineTask +from pipecat.transports import ( + InternalTransport, + InternalTransportManager, +) +from pipecat.utils.context import set_current_run_id + +from api.db.db_client import DBClient +from api.services.pipecat.transport_setup import create_internal_transport + +from .core.pipeline_builder import LoopTalkPipelineBuilder +from .core.recording_manager import RecordingManager +from .core.session_manager import SessionManager + + +class LoopTalkTestOrchestrator: + """Orchestrates LoopTalk testing sessions with agent-to-agent conversations.""" + + def __init__( + self, db_client: DBClient, network_latency_seconds: Optional[float] = None + ): + self.db_client = db_client + self.transport_manager = InternalTransportManager() + self.session_manager = SessionManager() + self.pipeline_builder = LoopTalkPipelineBuilder(db_client) + self.recording_manager = RecordingManager(Path("/tmp/looptalk_recordings")) + + # Default network latency (can be overridden per session) + # Priority: constructor param > env var > default (100ms) + if network_latency_seconds is not None: + self._default_network_latency = network_latency_seconds + else: + env_latency = os.environ.get("LOOPTALK_NETWORK_LATENCY_MS") + if env_latency: + try: + self._default_network_latency = ( + float(env_latency) / 1000.0 + ) # Convert ms to seconds + except ValueError: + logger.warning( + f"Invalid LOOPTALK_NETWORK_LATENCY_MS value: {env_latency}, using default 100ms" + ) + self._default_network_latency = 0.1 + else: + self._default_network_latency = 0.1 # 100ms default + + async def start_test_session( + self, + test_session_id: int, + organization_id: int, + network_latency_seconds: Optional[float] = None, + ) -> Dict[str, Any]: + """Start a LoopTalk test session.""" + + # Get test session details + test_session = await self.db_client.get_test_session( + test_session_id=test_session_id, organization_id=organization_id + ) + + if not test_session: + raise ValueError(f"Test session {test_session_id} not found") + + if test_session.status != "pending": + raise ValueError(f"Test session {test_session_id} is not in pending state") + + try: + # Update status to running + await self.db_client.update_test_session_status( + test_session_id=test_session_id, status="running" + ) + + # Create conversation record + conversation = await self.db_client.create_conversation( + test_session_id=test_session_id + ) + + # Create audio configuration for LoopTalk + from api.services.pipecat.audio_config import AudioConfig + + audio_config = AudioConfig( + transport_in_sample_rate=16000, + transport_out_sample_rate=16000, + pipeline_sample_rate=16000, + ) + + # Use provided latency or fall back to default + latency = ( + network_latency_seconds + if network_latency_seconds is not None + else self._default_network_latency + ) + logger.info( + f"Using network latency of {latency}s for test session {test_session_id}" + ) + + # Generate unique workflow run IDs for each agent + actor_workflow_run_id = int(str(test_session_id) + "1") + adversary_workflow_run_id = int(str(test_session_id) + "2") + + # Create transports using the new method with turn analyzer + actor_transport = create_internal_transport( + workflow_run_id=actor_workflow_run_id, + audio_config=audio_config, + latency_seconds=latency, + ) + adversary_transport = create_internal_transport( + workflow_run_id=adversary_workflow_run_id, + audio_config=audio_config, + latency_seconds=latency, + ) + + # Connect the transports + actor_transport.connect_partner(adversary_transport) + + # Store the transport pair in the manager + self.transport_manager._transport_pairs[str(test_session_id)] = ( + actor_transport, + adversary_transport, + ) + + # Generate unique identifiers for actor and adversary + actor_id = f"actor_{test_session_id}_{str(uuid.uuid4())[:8]}" + adversary_id = f"adversary_{test_session_id}_{str(uuid.uuid4())[:8]}" + + # Create pipelines for both agents + actor_pipeline_info = await self.pipeline_builder.create_agent_pipeline( + transport=actor_transport, + workflow=test_session.actor_workflow, + test_session_id=test_session_id, + agent_id=actor_id, + role="actor", + ) + actor_pipeline_task = actor_pipeline_info["task"] + + adversary_pipeline_info = await self.pipeline_builder.create_agent_pipeline( + transport=adversary_transport, + workflow=test_session.adversary_workflow, + test_session_id=test_session_id, + agent_id=adversary_id, + role="adversary", + ) + + adversary_pipeline_task = adversary_pipeline_info["task"] + + # Register event handlers for both pipelines + await self._register_transport_handlers( + actor_transport, actor_pipeline_info, test_session_id, "actor" + ) + await self._register_transport_handlers( + adversary_transport, + adversary_pipeline_info, + test_session_id, + "adversary", + ) + + # Store session info + session_info = { + "test_session": test_session, + "conversation": conversation, + "actor_task": actor_pipeline_task, + "adversary_task": adversary_pipeline_task, + "actor_transport": actor_transport, + "adversary_transport": adversary_transport, + "start_time": datetime.now(UTC), + } + self.session_manager.add_session(test_session_id, session_info) + + # Start both pipelines in background tasks + from pipecat.pipeline.base_task import PipelineTaskParams + + params = PipelineTaskParams(loop=asyncio.get_event_loop()) + + # Start the pipelines - this will trigger initialization through the normal pipeline start process + # The workflow engines will be initialized when the pipeline starts + + # Create conversation IDs for tracing + actor_conversation_id = f"{test_session_id}-actor-{actor_id}" + adversary_conversation_id = f"{test_session_id}-adversary-{adversary_id}" + + # Create tasks but don't await them - they'll run in the background + logger.debug(f"Running actor task with ID: {actor_id}") + actor_task_future = asyncio.create_task( + self._run_pipeline_with_context( + actor_pipeline_task, + params, + actor_id, + actor_conversation_id, + "actor", + ) + ) + + logger.debug(f"Running adversary task with ID: {adversary_id}") + adversary_task_future = asyncio.create_task( + self._run_pipeline_with_context( + adversary_pipeline_task, + params, + adversary_id, + adversary_conversation_id, + "adversary", + ) + ) + + # Store the futures so we can monitor them + session_info["actor_task_future"] = actor_task_future + session_info["adversary_task_future"] = adversary_task_future + + logger.info(f"Started LoopTalk test session {test_session_id}") + + return { + "test_session_id": test_session_id, + "conversation_id": conversation.id, + "status": "running", + } + + except Exception as e: + logger.error(f"Failed to start test session {test_session_id}: {e}") + await self.db_client.update_test_session_status( + test_session_id=test_session_id, status="failed", error=str(e) + ) + raise + + async def _register_transport_handlers( + self, + transport: InternalTransport, + pipeline_info: Dict[str, Any], + test_session_id: int, + role: str, + ): + """Register transport event handlers for a pipeline. + + Args: + transport: The transport to register handlers on + pipeline_info: Dictionary containing pipeline components + test_session_id: ID of the test session + role: Either "actor" or "adversary" + """ + engine = pipeline_info["engine"] + task = pipeline_info["task"] + audio_buffer = pipeline_info["audio_buffer"] + audio_synchronizer = pipeline_info["audio_synchronizer"] + transcript = pipeline_info["transcript"] + assistant_context_aggregator = pipeline_info["assistant_context_aggregator"] + + # Register transport event handlers + @transport.event_handler("on_client_connected") + async def on_client_connected(transport, participant): + logger.debug(f"LoopTalk {role} client connected - initializing workflow") + # Start audio recording + await audio_buffer.start_recording() + await audio_synchronizer.start_recording() + await engine.initialize() + + @transport.event_handler("on_client_disconnected") + async def on_client_disconnected(transport, participant): + logger.debug(f"LoopTalk {role} client disconnected") + # Stop audio recording + await audio_buffer.stop_recording() + await audio_synchronizer.stop_recording() + + # Handle disconnect propagation - stop the other agent too + await self.session_manager.handle_agent_disconnect( + test_session_id, role, self.stop_test_session + ) + + await task.cancel() + + # Connect the context aggregator events to engine + @assistant_context_aggregator.event_handler("on_push_aggregation") + async def on_assistant_aggregator_push_context(_aggregator): + logger.debug( + "Assistant aggregator push context – flushing pending transitions" + ) + await engine.flush_pending_transitions() + + # Register custom audio and transcript handlers for LoopTalk + await self._register_looptalk_handlers( + audio_synchronizer, transcript, test_session_id, role + ) + + async def _register_looptalk_handlers( + self, audio_synchronizer, transcript, test_session_id: int, role: str + ): + """Register LoopTalk-specific handlers for audio and transcript recording""" + + paths = self.recording_manager.get_recording_paths(test_session_id, role) + + # Store audio metadata for later WAV conversion + audio_metadata = {"sample_rate": None, "num_channels": None} + + # Audio handler - writes directly to PCM file + @audio_synchronizer.event_handler("on_merged_audio") + async def on_merged_audio(_, pcm, sample_rate, num_channels): + if not pcm: + return + + # Store metadata on first write + if audio_metadata["sample_rate"] is None: + audio_metadata["sample_rate"] = sample_rate + audio_metadata["num_channels"] = num_channels + + # Append PCM data to temporary file + try: + with open(paths["temp_audio"], "ab") as f: + f.write(pcm) + except Exception as e: + logger.error( + f"Failed to write audio for {role} in session {test_session_id}: {e}" + ) + + # Transcript handler - writes directly to text file + @transcript.event_handler("on_transcript_update") + async def on_transcript_update(processor, frame): + transcript_text = "" + for msg in frame.messages: + timestamp = f"[{msg.timestamp}] " if msg.timestamp else "" + line = f"{timestamp}{msg.role}: {msg.content}\n" + transcript_text += line + + # Append transcript to file + try: + with open(paths["transcript"], "a") as f: + f.write(transcript_text) + except Exception as e: + logger.error( + f"Failed to write transcript for {role} in session {test_session_id}: {e}" + ) + + # Store metadata in session info for later WAV conversion + # Set default values if not yet captured + if audio_metadata["sample_rate"] is None: + audio_metadata["sample_rate"] = 16000 # Default sample rate + audio_metadata["num_channels"] = 1 # Default channels + + self.session_manager.update_audio_metadata( + test_session_id, + role, + sample_rate=audio_metadata["sample_rate"], + num_channels=audio_metadata["num_channels"], + ) + + async def _run_pipeline_with_context( + self, + pipeline_task: PipelineTask, + params, + agent_id: str, + conversation_id: str, + role: str, + ): + """Run a pipeline task with the agent_id set in context""" + set_current_run_id(agent_id) + return await pipeline_task.run(params) + + async def stop_test_session(self, test_session_id: int) -> Dict[str, Any]: + """Stop a running test session.""" + + session_info = self.session_manager.get_session(test_session_id) + if not session_info: + raise ValueError(f"Test session {test_session_id} is not running") + + try: + # Cancel both pipeline tasks + await session_info["actor_task"].cancel() + await session_info["adversary_task"].cancel() + + # Also cancel the task futures if they exist + if "actor_task_future" in session_info: + session_info["actor_task_future"].cancel() + if "adversary_task_future" in session_info: + session_info["adversary_task_future"].cancel() + + # Calculate duration + duration_seconds = int( + (datetime.now(UTC) - session_info["start_time"]).total_seconds() + ) + + # Update conversation + await self.db_client.update_conversation( + conversation_id=session_info["conversation"].id, + duration_seconds=duration_seconds, + ended_at=datetime.now(UTC), + ) + + # Update test session status + await self.db_client.update_test_session_status( + test_session_id=test_session_id, + status="completed", + results={ + "duration_seconds": duration_seconds, + "conversation_id": session_info["conversation"].id, + }, + ) + + # Finalize recordings for both actor and adversary + # Convert PCM files to WAV + actor_metadata = self.session_manager.get_audio_metadata( + test_session_id, "actor" + ) + adversary_metadata = self.session_manager.get_audio_metadata( + test_session_id, "adversary" + ) + + self.recording_manager.convert_pcm_to_wav( + test_session_id, + "actor", + sample_rate=actor_metadata["sample_rate"], + num_channels=actor_metadata["num_channels"], + ) + self.recording_manager.convert_pcm_to_wav( + test_session_id, + "adversary", + sample_rate=adversary_metadata["sample_rate"], + num_channels=adversary_metadata["num_channels"], + ) + + # Upload recordings to S3 (synchronously for load testing) + ( + actor_audio_url, + actor_transcript_url, + ) = await self.recording_manager.upload_recording_to_s3( + test_session_id, "actor" + ) + ( + adversary_audio_url, + adversary_transcript_url, + ) = await self.recording_manager.upload_recording_to_s3( + test_session_id, "adversary" + ) + + # Update conversation with recording URLs + await self.db_client.update_conversation( + conversation_id=session_info["conversation"].id, + actor_recording_url=actor_audio_url, + adversary_recording_url=adversary_audio_url, + transcript={ + "actor_transcript_url": actor_transcript_url, + "adversary_transcript_url": adversary_transcript_url, + }, + ) + + # Log recording locations + logger.info(f"LoopTalk recordings uploaded to S3:") + if actor_audio_url: + logger.info(f" - Actor audio: {actor_audio_url}") + if actor_transcript_url: + logger.info(f" - Actor transcript: {actor_transcript_url}") + if adversary_audio_url: + logger.info(f" - Adversary audio: {adversary_audio_url}") + if adversary_transcript_url: + logger.info(f" - Adversary transcript: {adversary_transcript_url}") + + # Clean up local files after successful upload + self.recording_manager.cleanup_session_files(test_session_id) + + # Clean up + self.transport_manager.remove_transport_pair(str(test_session_id)) + self.session_manager.remove_session(test_session_id) + + # Clean up audio streamers + from api.services.looptalk.audio_streamer import cleanup_audio_streamers + + cleanup_audio_streamers(str(test_session_id)) + + logger.info(f"Stopped LoopTalk test session {test_session_id}") + + return { + "test_session_id": test_session_id, + "status": "completed", + "duration_seconds": duration_seconds, + } + + except Exception as e: + logger.error(f"Failed to stop test session {test_session_id}: {e}") + await self.db_client.update_test_session_status( + test_session_id=test_session_id, status="failed", error=str(e) + ) + raise + + async def start_load_test( + self, + organization_id: int, + name_prefix: str, + actor_workflow_id: int, + adversary_workflow_id: int, + config: Dict[str, Any], + test_count: int, + ) -> Dict[str, Any]: + """Start a load test with multiple concurrent test sessions.""" + + # Validate test count + if test_count < 1 or test_count > 10: + raise ValueError("Test count must be between 1 and 10") + + # Create test sessions + test_sessions = await self.db_client.create_load_test_group( + organization_id=organization_id, + name_prefix=name_prefix, + actor_workflow_id=actor_workflow_id, + adversary_workflow_id=adversary_workflow_id, + config=config, + test_count=test_count, + ) + + # Start all test sessions concurrently + tasks = [] + for test_session in test_sessions: + task = asyncio.create_task( + self.start_test_session( + test_session_id=test_session.id, organization_id=organization_id + ) + ) + tasks.append(task) + + # Wait for all to start + results = await asyncio.gather(*tasks, return_exceptions=True) + + # Count successes and failures + started = sum(1 for r in results if not isinstance(r, Exception)) + failed = sum(1 for r in results if isinstance(r, Exception)) + + load_test_group_id = test_sessions[0].load_test_group_id + + logger.info( + f"Started load test {load_test_group_id}: " + f"{started} started, {failed} failed out of {test_count}" + ) + + return { + "load_test_group_id": load_test_group_id, + "total": test_count, + "started": started, + "failed": failed, + "test_session_ids": [ts.id for ts in test_sessions], + } + + def get_active_test_count(self) -> int: + """Get the number of currently active test sessions.""" + return self.session_manager.get_active_count() + + def get_active_test_info(self) -> Dict[str, Any]: + """Get information about all active test sessions.""" + return self.session_manager.get_active_info() + + def get_recording_info(self, test_session_id: int) -> Dict[str, Any]: + """Get information about recordings for a test session""" + return self.recording_manager.get_recording_info(test_session_id) diff --git a/api/services/mps_service_key_client.py b/api/services/mps_service_key_client.py new file mode 100644 index 0000000..3bbc3f4 --- /dev/null +++ b/api/services/mps_service_key_client.py @@ -0,0 +1,283 @@ +""" +MPS Service Key HTTP Client +This client communicates with the Model Proxy Service (MPS) for service key management. +Service keys are stored and managed entirely in MPS, not in the local database. +""" + +from typing import List, Optional + +import httpx +from loguru import logger + +from api.constants import DEPLOYMENT_MODE, DOGRAH_MPS_SECRET_KEY, MPS_API_URL + + +class MPSServiceKeyClient: + """HTTP client for managing service keys via MPS API.""" + + def __init__(self): + self.base_url = MPS_API_URL + self.timeout = httpx.Timeout(10.0) + + def _get_headers(self) -> dict: + """Get headers for MPS API requests.""" + headers = {"Content-Type": "application/json"} + + # Add authentication for non-OSS mode + if DEPLOYMENT_MODE != "oss" and DOGRAH_MPS_SECRET_KEY: + headers["X-Secret-Key"] = DOGRAH_MPS_SECRET_KEY + + return headers + + async def create_service_key( + self, + name: str, + organization_id: Optional[int] = None, + created_by: str = None, + expires_in_days: int = 90, + description: Optional[str] = None, + ) -> dict: + """ + Create a new service key via MPS API. + + For OSS mode: organization_id should be None + For authenticated mode: organization_id should be provided + """ + async with httpx.AsyncClient(timeout=self.timeout) as client: + request_body = { + "name": name, + "description": description or f"Service key: {name}", + "expires_in_days": expires_in_days, + "created_by": created_by, + } + + # Only add organization_id for non-OSS mode + if DEPLOYMENT_MODE != "oss" and organization_id: + request_body["organization_id"] = organization_id + + response = await client.post( + f"{self.base_url}/api/v1/service-keys/", + json=request_body, + headers=self._get_headers(), + ) + + if response.status_code == 200: + data = response.json() + # Transform the response to match our expected format + return { + "id": data.get("id"), + "name": data.get("name"), + "service_key": data.get("service_key"), # Only returned on creation + "key_prefix": data.get("service_key", "")[:8] + if data.get("service_key") + else "", + "expires_at": data.get("expires_at"), + "created_at": data.get("created_at"), + "is_active": data.get("is_active", True), + "created_by": data.get("created_by"), + } + else: + raise httpx.HTTPStatusError( + f"Failed to create service key: {response.text}", + request=response.request, + response=response, + ) + + async def get_service_keys( + self, + organization_id: Optional[int] = None, + created_by: Optional[str] = None, + include_archived: bool = False, + ) -> List[dict]: + """ + Get service keys from MPS. + + For OSS mode: Use created_by to filter keys + For authenticated mode: Use organization_id to filter keys + """ + async with httpx.AsyncClient(timeout=self.timeout) as client: + params = {} + + if DEPLOYMENT_MODE == "oss": + # In OSS mode, filter by created_by + if created_by: + params["created_by"] = created_by + else: + # In authenticated mode, filter by organization_id + if organization_id: + params["organization_id"] = organization_id + + if include_archived: + params["include_archived"] = "true" + + response = await client.get( + f"{self.base_url}/api/v1/service-keys/", + params=params, + headers=self._get_headers(), + ) + + if response.status_code == 200: + keys = response.json() + # Transform the response to match our expected format + return [ + { + "id": key.get("id"), + "name": key.get("name"), + "key_prefix": key.get("key_prefix", ""), + "is_active": key.get("is_active", True), + "created_at": key.get("created_at"), + "last_used_at": key.get("last_used_at"), + "expires_at": key.get("expires_at"), + "archived_at": key.get("archived_at"), + "created_by": key.get("created_by"), + } + for key in keys + ] + else: + logger.error( + f"Failed to get service keys: {response.status_code} - {response.text}" + ) + return [] + + async def get_service_key_by_id( + self, + key_id: int, + organization_id: Optional[int] = None, + created_by: Optional[str] = None, + ) -> Optional[dict]: + """Get a specific service key by ID.""" + async with httpx.AsyncClient(timeout=self.timeout) as client: + response = await client.get( + f"{self.base_url}/api/v1/service-keys/{key_id}", + headers=self._get_headers(), + ) + + if response.status_code == 200: + key = response.json() + + # Validate ownership for OSS mode + if DEPLOYMENT_MODE == "oss" and created_by: + if key.get("created_by") != created_by: + logger.warning( + f"Access denied: User {created_by} tried to access key created by {key.get('created_by')}" + ) + return None + + # Validate organization for authenticated mode + if DEPLOYMENT_MODE != "oss" and organization_id: + if key.get("organization_id") != organization_id: + logger.warning( + f"Access denied: Org {organization_id} tried to access key for org {key.get('organization_id')}" + ) + return None + + return { + "id": key.get("id"), + "name": key.get("name"), + "key_prefix": key.get("key_prefix", ""), + "is_active": key.get("is_active", True), + "created_at": key.get("created_at"), + "last_used_at": key.get("last_used_at"), + "expires_at": key.get("expires_at"), + "archived_at": key.get("archived_at"), + "created_by": key.get("created_by"), + } + else: + return None + + async def archive_service_key( + self, + key_id: int, + organization_id: Optional[int] = None, + created_by: Optional[str] = None, + ) -> bool: + """ + Archive (soft delete) a service key. + + For OSS mode: Validates that created_by matches the key creator + For authenticated mode: Validates organization_id matches + """ + # First, verify ownership + key = await self.get_service_key_by_id(key_id, organization_id, created_by) + if not key: + logger.error(f"Service key {key_id} not found or access denied") + return False + + async with httpx.AsyncClient(timeout=self.timeout) as client: + response = await client.delete( + f"{self.base_url}/api/v1/service-keys/{key_id}", + headers=self._get_headers(), + ) + + if response.status_code in [200, 204]: + return True + else: + logger.error( + f"Failed to archive service key: {response.status_code} - {response.text}" + ) + return False + + async def call_workflow_api( + self, + call_type: str, + use_case: str, + activity_description: str, + organization_id: Optional[int] = None, + created_by: Optional[str] = None, + ) -> dict: + """ + Call the MPS workflow creation API using secret key authentication. + + For OSS mode: Pass created_by in headers + For authenticated mode: Pass organization_id in headers + + Args: + call_type: INBOUND or OUTBOUND + use_case: Description of the use case + activity_description: Description of what the agent should do + organization_id: Organization ID (for authenticated mode) + created_by: User provider ID (for OSS mode) + + Returns: + Workflow data from MPS API + + Raises: + HTTPException: If the API call fails + """ + headers = {"Content-Type": "application/json"} + + # Add secret key authentication + if DEPLOYMENT_MODE != "oss" and DOGRAH_MPS_SECRET_KEY: + headers["X-Secret-Key"] = DOGRAH_MPS_SECRET_KEY + if organization_id: + headers["X-Organization-Id"] = str(organization_id) + elif DEPLOYMENT_MODE == "oss": + if created_by: + headers["X-Created-By"] = created_by + + async with httpx.AsyncClient(timeout=httpx.Timeout(30.0)) as client: + response = await client.post( + f"{self.base_url}/api/v1/workflow/create-workflow", + json={ + "call_type": call_type, + "use_case": use_case, + "activity_description": activity_description, + }, + headers=headers, + ) + + if response.status_code == 200: + return response.json() + else: + logger.error( + f"Failed to create workflow: {response.status_code} - {response.text}" + ) + raise httpx.HTTPStatusError( + f"Failed to create workflow: {response.text}", + request=response.request, + response=response, + ) + + +# Create a singleton instance +mps_service_key_client = MPSServiceKeyClient() diff --git a/api/services/pipecat/__init__.py b/api/services/pipecat/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/services/pipecat/audio_config.py b/api/services/pipecat/audio_config.py new file mode 100644 index 0000000..b966a62 --- /dev/null +++ b/api/services/pipecat/audio_config.py @@ -0,0 +1,120 @@ +""" +Audio configuration for pipeline components. + +This module provides centralized audio configuration to ensure consistent +sample rates across all pipeline components and proper coordination between +transport serializers, VAD, and audio buffers. +""" + +from dataclasses import dataclass +from typing import Optional + +from loguru import logger + +from api.enums import WorkflowRunMode + + +@dataclass +class AudioConfig: + """Centralized audio configuration for the pipeline. + + Note: Pipeline is limited to 16kHz maximum to support VAD. + Transports handle resampling from/to higher rates (24kHz, 48kHz). + + Attributes: + transport_in_sample_rate: Sample rate of incoming audio from transport (after resampling) + transport_out_sample_rate: Sample rate of outgoing audio to transport (before resampling) + vad_sample_rate: Sample rate for VAD processing (8000 or 16000) + pipeline_sample_rate: Internal pipeline processing sample rate (max 16000) + buffer_size_seconds: Audio buffer size in seconds + """ + + transport_in_sample_rate: int + transport_out_sample_rate: int + vad_sample_rate: int = 16000 # VAD typically resamples internally + pipeline_sample_rate: Optional[int] = None # If None, uses transport rates + buffer_size_seconds: float = 1.0 # This is how frequenly we will call merge_auido + + def __post_init__(self): + # Validate VAD sample rate + if self.vad_sample_rate not in [8000, 16000]: + raise ValueError( + f"VAD sample rate must be 8000 or 16000, got {self.vad_sample_rate}" + ) + + # Set pipeline sample rate to transport out rate if not specified + if self.pipeline_sample_rate is None: + self.pipeline_sample_rate = min(self.transport_out_sample_rate, 16000) + + # Ensure pipeline sample rate doesn't exceed 16kHz (VAD limitation) + if self.pipeline_sample_rate > 16000: + logger.warning( + f"Pipeline sample rate {self.pipeline_sample_rate} exceeds 16kHz limit, " + f"capping at 16kHz. Transport will handle resampling." + ) + self.pipeline_sample_rate = 16000 + + # Log configuration for auditing + logger.info( + f"AudioConfig initialized: " + f"transport_in={self.transport_in_sample_rate}Hz, " + f"transport_out={self.transport_out_sample_rate}Hz, " + f"vad={self.vad_sample_rate}Hz, " + f"pipeline={self.pipeline_sample_rate}Hz, " + f"buffer={self.buffer_size_seconds}s" + ) + + @property + def buffer_size_bytes(self) -> int: + """Calculate buffer size in bytes based on pipeline sample rate.""" + # 2 bytes per sample (16-bit PCM) + return int(self.pipeline_sample_rate * 2 * self.buffer_size_seconds) + + @property + def buffer_size_samples(self) -> int: + """Calculate buffer size in samples based on pipeline sample rate.""" + return int(self.pipeline_sample_rate * self.buffer_size_seconds) + + +def create_audio_config(transport_type: str) -> AudioConfig: + """Create audio configuration based on transport type. + + Args: + transport_type: Type of transport ("webrtc", "twilio", "stasis") + + Returns: + AudioConfig instance with appropriate settings + """ + if transport_type in (WorkflowRunMode.STASIS.value, WorkflowRunMode.TWILIO.value): + return AudioConfig( + transport_in_sample_rate=8000, + transport_out_sample_rate=8000, + vad_sample_rate=8000, # Use matching VAD rate + pipeline_sample_rate=8000, # Keep at 8kHz to avoid resampling + buffer_size_seconds=1.0, + ) + elif transport_type in [ + WorkflowRunMode.WEBRTC.value, + WorkflowRunMode.SMALLWEBRTC.value, + ]: + # WebRTC typically uses 24kHz or 48kHz, but we limit pipeline to 16kHz + # The transport will handle resampling between 24kHz and 16kHz + return AudioConfig( + transport_in_sample_rate=16000, # Transport will resample from 24kHz + transport_out_sample_rate=16000, # Transport will resample to 24kHz + vad_sample_rate=16000, # VAD native rate + pipeline_sample_rate=16000, # Keep pipeline at 16kHz + buffer_size_seconds=1.0, + ) + else: + # Default configuration + logger.warning( + f"Unknown transport type: {transport_type}, using default config" + ) + return AudioConfig( + transport_in_sample_rate=16000, + transport_out_sample_rate=16000, + vad_sample_rate=16000, + pipeline_sample_rate=16000, + buffer_size_seconds=1.0, + ) diff --git a/api/services/pipecat/audio_transcript_buffers.py b/api/services/pipecat/audio_transcript_buffers.py new file mode 100644 index 0000000..d087ad8 --- /dev/null +++ b/api/services/pipecat/audio_transcript_buffers.py @@ -0,0 +1,122 @@ +import asyncio +import re +import tempfile +import wave +from typing import List + +from loguru import logger + + +class InMemoryAudioBuffer: + """Buffer audio data in memory during a call, then write to temp file on disconnect.""" + + def __init__(self, workflow_run_id: int, sample_rate: int, num_channels: int = 1): + self._workflow_run_id = workflow_run_id + self._sample_rate = sample_rate + self._num_channels = num_channels + self._chunks: List[bytes] = [] + self._lock = asyncio.Lock() + self._total_size = 0 + self._max_size = 100 * 1024 * 1024 # 100MB limit + + async def append(self, pcm_data: bytes): + """Append PCM audio data to the buffer.""" + async with self._lock: + if self._total_size + len(pcm_data) > self._max_size: + logger.error( + f"Audio buffer size limit exceeded for workflow {self._workflow_run_id}. " + f"Current: {self._total_size}, Attempted to add: {len(pcm_data)}" + ) + raise MemoryError("Audio buffer size limit exceeded") + self._chunks.append(pcm_data) + self._total_size += len(pcm_data) + logger.trace( + f"Appended {len(pcm_data)} bytes to audio buffer. Total size: {self._total_size}" + ) + + async def write_to_temp_file(self) -> str: + """Write audio data to a temporary WAV file and return the path.""" + async with self._lock: + temp_file = tempfile.NamedTemporaryFile(suffix=".wav", delete=False) + logger.debug( + f"Writing audio buffer to temp file {temp_file.name} for workflow {self._workflow_run_id}" + ) + + # Write WAV header and PCM data + with wave.open(temp_file.name, "wb") as wf: + wf.setnchannels(self._num_channels) + wf.setsampwidth(2) # 16-bit audio + wf.setframerate(self._sample_rate) + + # Concatenate all chunks + for chunk in self._chunks: + wf.writeframes(chunk) + + logger.info( + f"Successfully wrote {self._total_size} bytes of audio to {temp_file.name}" + ) + return temp_file.name + + @property + def is_empty(self) -> bool: + """Check if the buffer is empty.""" + return len(self._chunks) == 0 + + @property + def size(self) -> int: + """Get the total size of buffered data.""" + return self._total_size + + +class InMemoryTranscriptBuffer: + """Buffer transcript data in memory during a call, then write to temp file on disconnect.""" + + # Compiled regex to identify user speech lines, e.g. + # [2025-06-29T12:34:56.789+00:00] user: hello + _USER_SPEECH_RE: re.Pattern[str] = re.compile( + r"^\[\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}\+\d{2}:\d{2}\] user: .+" + ) + + def __init__(self, workflow_run_id: int): + self._workflow_run_id = workflow_run_id + self._lines: List[str] = [] + self._lock = asyncio.Lock() + + async def append(self, transcript: str): + """Append transcript text to the buffer.""" + async with self._lock: + self._lines.append(transcript) + logger.trace( + f"Appended transcript line to buffer for workflow {self._workflow_run_id}" + ) + + async def write_to_temp_file(self) -> str: + """Write transcript to a temporary text file and return the path.""" + async with self._lock: + temp_file = tempfile.NamedTemporaryFile( + mode="w", suffix=".txt", delete=False + ) + logger.debug( + f"Writing transcript buffer to temp file {temp_file.name} for workflow {self._workflow_run_id}" + ) + + content = "".join(self._lines) + temp_file.write(content) + temp_file.close() + + logger.info( + f"Successfully wrote {len(content)} chars of transcript to {temp_file.name}" + ) + return temp_file.name + + @property + def is_empty(self) -> bool: + """Check if the buffer is empty.""" + return len(self._lines) == 0 + + def contains_user_speech(self) -> bool: + """Return True if any buffered transcript line matches the user speech pattern.""" + for line in self._lines: + if self._USER_SPEECH_RE.match(line): + return True + return False diff --git a/api/services/pipecat/engine_pre_aggregator_processor.py b/api/services/pipecat/engine_pre_aggregator_processor.py new file mode 100644 index 0000000..d8f0f29 --- /dev/null +++ b/api/services/pipecat/engine_pre_aggregator_processor.py @@ -0,0 +1,69 @@ +"""Engine Pre-Aggregator Processor + +This processor sits before the user context aggregator in the pipeline and handles +engine-specific callbacks for frames that need to be processed before aggregation. +This ensures the engine can update context before the aggregator generates LLM frames. +""" + +from typing import Awaitable, Callable, Optional + +from loguru import logger + +from api.services.pipecat.exceptions import VoicemailDetectedException +from pipecat.frames.frames import ( + Frame, + UserStartedSpeakingFrame, + UserStoppedSpeakingFrame, +) +from pipecat.processors.frame_processor import FrameDirection, FrameProcessor + + +class EnginePreAggregatorProcessor(FrameProcessor): + """ + Processor that handles engine callbacks before user context aggregation. + + This processor is positioned before the user context aggregator to ensure + the engine can update LLM context before aggregation occurs. + """ + + def __init__( + self, + user_started_speaking_callback: Optional[Callable[[], Awaitable[None]]] = None, + user_stopped_speaking_callback: Optional[Callable[[], Awaitable[None]]] = None, + **kwargs, + ): + super().__init__(**kwargs) + self._user_started_speaking_callback = user_started_speaking_callback + self._user_stopped_speaking_callback = user_stopped_speaking_callback + + async def process_frame(self, frame: Frame, direction: FrameDirection): + await super().process_frame(frame, direction) + + # Handle frames that need engine processing before aggregation + if isinstance(frame, UserStartedSpeakingFrame): + await self._handle_user_started_speaking() + elif isinstance(frame, UserStoppedSpeakingFrame): + try: + await self._handle_user_stopped_speaking() + except VoicemailDetectedException: + # We have detected voicemail, lets not + # forward the UserStoppedSpeakingFrame, so that + # we don't issue an llm call from user context + # aggregator + logger.debug("Voicemail detected, not pushing UserStoppedSpeakingFrame") + return + + # Always push the frame downstream + await self.push_frame(frame, direction) + + async def _handle_user_started_speaking(self): + """Handle UserStartedSpeakingFrame before aggregation.""" + if self._user_started_speaking_callback: + # logger.debug("Engine pre-aggregator: User started speaking") + await self._user_started_speaking_callback() + + async def _handle_user_stopped_speaking(self): + """Handle UserStoppedSpeakingFrame before aggregation.""" + if self._user_stopped_speaking_callback: + # logger.debug("Engine pre-aggregator: User stopped speaking") + await self._user_stopped_speaking_callback() diff --git a/api/services/pipecat/event_handlers.py b/api/services/pipecat/event_handlers.py new file mode 100644 index 0000000..a799d98 --- /dev/null +++ b/api/services/pipecat/event_handlers.py @@ -0,0 +1,249 @@ +from typing import Optional + +from loguru import logger + +from api.db import db_client +from api.services.campaign.call_dispatcher import campaign_call_dispatcher +from api.services.pipecat.audio_transcript_buffers import ( + InMemoryAudioBuffer, + InMemoryTranscriptBuffer, +) +from api.services.pipecat.pipeline_metrics_aggregator import PipelineMetricsAggregator +from api.services.workflow.disposition_mapper import ( + apply_disposition_mapping, + get_organization_id_from_workflow_run, +) +from api.services.workflow.pipecat_engine import PipecatEngine +from api.tasks.arq import enqueue_job +from api.tasks.function_names import FunctionNames +from pipecat.pipeline.task import PipelineTask +from pipecat.transports.base_transport import BaseTransport +from pipecat.utils.enums import EndTaskReason + + +def register_transport_event_handlers( + transport, + workflow_run_id, + audio_buffer, + task: PipelineTask, + engine: PipecatEngine, + usage_metrics_aggregator: PipelineMetricsAggregator, + audio_synchronizer=None, + audio_config=None, +): + """Register event handlers for transport events""" + + # Initialize in-memory buffers with proper audio configuration + sample_rate = audio_config.pipeline_sample_rate if audio_config else 16000 + num_channels = 1 # Pipeline audio is always mono + + logger.debug( + f"Initializing audio buffer for workflow {workflow_run_id} " + f"with sample_rate={sample_rate}Hz, channels={num_channels}" + ) + + in_memory_audio_buffer = InMemoryAudioBuffer( + workflow_run_id=workflow_run_id, + sample_rate=sample_rate, + num_channels=num_channels, + ) + in_memory_transcript_buffer = InMemoryTranscriptBuffer(workflow_run_id) + + @transport.event_handler("on_client_connected") + async def on_client_connected(transport, participant): + logger.debug("In on_client_connected callback handler - initializing workflow") + await audio_buffer.start_recording() + if audio_synchronizer: + await audio_synchronizer.start_recording() + await engine.initialize() + + @transport.event_handler("on_client_disconnected") + async def on_client_disconnected( + transport: BaseTransport, + participant, + transport_disconnect_reason: Optional[str] = None, + ): + logger.debug( + f"In on_client_disconnected callback handler, disconnect_reason: {transport_disconnect_reason}" + ) + + workflow_run = await db_client.get_workflow_run_by_id(workflow_run_id) + + # First priority: Check if engine has a disconnect reason (local disconnect) + engine_call_disposition = engine.get_call_disposition() + gathered_context = engine.get_gathered_context() + + # also consider existing gathered context in workflow_run + gathered_context = {**gathered_context, **workflow_run.gathered_context} + + if engine_call_disposition: + # Engine has set a disconnect reason - this takes priority + call_disposition = engine_call_disposition + logger.debug(f"Engine disposition detected, code: {call_disposition}") + elif transport_disconnect_reason: + # TODO: Make this more generic using some DSL or equivalent. This is currently + # configured to work for Kapil's bot + call_duration = usage_metrics_aggregator.get_call_duration() + if transport_disconnect_reason == EndTaskReason.USER_HANGUP.value: + if call_duration < 10: + call_disposition = "HU" + else: + call_disposition = "NIBP" + else: + # Transport provided a disconnect reason (remote hangup) + call_disposition = transport_disconnect_reason + logger.debug( + f"Remote disconnect detected, reason: {call_disposition} duration: {call_duration}" + ) + else: + # No reason provided - assume user hangup + call_disposition = EndTaskReason.UNKNOWN.value + logger.debug("No disposition found from either engine or transport") + + # Cancel task only when no engine disconnect reason (remote disconnect) + if not engine_call_disposition: + await task.cancel() + + organization_id = await get_organization_id_from_workflow_run(workflow_run_id) + mapped_call_disposition = await apply_disposition_mapping( + call_disposition, organization_id + ) + + gathered_context.update({"mapped_call_disposition": mapped_call_disposition}) + + if in_memory_transcript_buffer: + call_tags = gathered_context.get("call_tags", []) + + try: + has_user_speech = in_memory_transcript_buffer.contains_user_speech() + except Exception: + has_user_speech = False + + if has_user_speech and "user_speech" not in call_tags: + call_tags.append("user_speech") + + # Append any keys from gathered_context that start with 'tag_' to call_tags + for key in gathered_context: + if key.startswith("tag_") and key not in call_tags: + call_tags.append(gathered_context[key]) + + gathered_context["call_tags"] = call_tags + + # Clean up engine resources (including voicemail detector) + await engine.cleanup() + + await audio_buffer.stop_recording() + if audio_synchronizer: + await audio_synchronizer.stop_recording() + + # ------------------------------------------------------------------ + # Close Smart-Turn WebSocket if the transport's analyzer supports it + # ------------------------------------------------------------------ + try: + turn_analyzer = None + + # Most transports store their params (with turn_analyzer) directly. + if hasattr(transport, "_params") and transport._params: + turn_analyzer = getattr(transport._params, "turn_analyzer", None) + + # Fallback: some transports expose params through input() instance. + if turn_analyzer is None and hasattr(transport, "input"): + try: + input_transport = transport.input() + if input_transport and hasattr(input_transport, "_params"): + turn_analyzer = getattr( + input_transport._params, "turn_analyzer", None + ) + except Exception: + pass + + if turn_analyzer and hasattr(turn_analyzer, "close"): + await turn_analyzer.close() + logger.debug("Closed turn analyzer websocket") + except Exception as exc: + logger.warning(f"Failed to close Smart-Turn analyzer gracefully: {exc}") + + usage_info = usage_metrics_aggregator.get_all_usage_metrics_serialized() + + logger.debug(f"Usage metrics: {usage_info}") + + await db_client.update_workflow_run( + run_id=workflow_run_id, + usage_info=usage_info, + gathered_context=gathered_context, + is_completed=True, + ) + + # Release concurrent slot for campaign calls + if workflow_run and workflow_run.campaign_id: + await campaign_call_dispatcher.release_call_slot(workflow_run_id) + + # Write buffers to temp files and enqueue S3 upload + try: + # Only upload if buffers have content + if not in_memory_audio_buffer.is_empty: + audio_temp_path = await in_memory_audio_buffer.write_to_temp_file() + await enqueue_job( + FunctionNames.UPLOAD_AUDIO_TO_S3, workflow_run_id, audio_temp_path + ) + else: + logger.debug("Audio buffer is empty, skipping upload") + + if not in_memory_transcript_buffer.is_empty: + transcript_temp_path = ( + await in_memory_transcript_buffer.write_to_temp_file() + ) + await enqueue_job( + FunctionNames.UPLOAD_TRANSCRIPT_TO_S3, + workflow_run_id, + transcript_temp_path, + ) + else: + logger.debug("Transcript buffer is empty, skipping upload") + + except Exception as e: + logger.error(f"Error preparing buffers for S3 upload: {e}", exc_info=True) + + await enqueue_job(FunctionNames.CALCULATE_WORKFLOW_RUN_COST, workflow_run_id) + await enqueue_job( + FunctionNames.RUN_INTEGRATIONS_POST_WORKFLOW_RUN, workflow_run_id + ) + + # Return the buffers so they can be passed to other handlers + return in_memory_audio_buffer, in_memory_transcript_buffer + + +def register_audio_data_handler( + audio_synchronizer, workflow_run_id, in_memory_buffer: InMemoryAudioBuffer +): + """Register event handler for audio data""" + logger.info(f"Registering audio data handler for workflow run {workflow_run_id}") + + @audio_synchronizer.event_handler("on_merged_audio") + async def on_merged_audio(_, pcm, sample_rate, num_channels): + if not pcm: + return + + # Use in-memory buffer + try: + await in_memory_buffer.append(pcm) + except MemoryError as e: + logger.error(f"Memory buffer full: {e}") + # Could implement overflow to disk here if needed + + +def register_transcript_handler( + transcript, workflow_run_id, in_memory_buffer: InMemoryTranscriptBuffer +): + """Register event handler for transcript updates""" + + @transcript.event_handler("on_transcript_update") + async def on_transcript_update(processor, frame): + transcript_text = "" + for msg in frame.messages: + timestamp = f"[{msg.timestamp}] " if msg.timestamp else "" + line = f"{timestamp}{msg.role}: {msg.content}\n" + transcript_text += line + + # Use in-memory buffer + await in_memory_buffer.append(transcript_text) diff --git a/api/services/pipecat/exceptions.py b/api/services/pipecat/exceptions.py new file mode 100644 index 0000000..1ec8943 --- /dev/null +++ b/api/services/pipecat/exceptions.py @@ -0,0 +1,6 @@ +class VoicemailDetectedException(Exception): + """ + Exception raised when voicemail is detected. + """ + + pass diff --git a/api/services/pipecat/pipeline_builder.py b/api/services/pipecat/pipeline_builder.py new file mode 100644 index 0000000..cab5317 --- /dev/null +++ b/api/services/pipecat/pipeline_builder.py @@ -0,0 +1,147 @@ +import os +from typing import TYPE_CHECKING + +from loguru import logger + +from api.constants import ( + ENABLE_TRACING, +) +from api.services.pipecat.audio_config import AudioConfig +from pipecat.pipeline.pipeline import Pipeline +from pipecat.pipeline.task import PipelineParams, PipelineTask +from pipecat.processors.aggregators.openai_llm_context import OpenAILLMContext +from pipecat.processors.audio.audio_buffer_processor import AudioBuffer +from pipecat.processors.audio.audio_synchronizer import AudioSynchronizer +from pipecat.processors.transcript_processor import TranscriptProcessor +from pipecat.utils.context import turn_var + +if TYPE_CHECKING: + from api.services.workflow.pipecat_engine import PipecatEngine + + +def create_pipeline_components(audio_config: AudioConfig, engine: "PipecatEngine"): + """Create and return the main pipeline components with proper audio configuration""" + logger.info(f"Creating pipeline components with audio config: {audio_config}") + + # Use new split audio buffer for better performance + audio_buffer = AudioBuffer( + sample_rate=audio_config.pipeline_sample_rate, + buffer_size=audio_config.buffer_size_bytes, + ) + + # Create synchronizer for merged audio (outside pipeline) + audio_synchronizer = AudioSynchronizer( + sample_rate=audio_config.pipeline_sample_rate, + buffer_size=audio_config.buffer_size_bytes, + ) + + transcript = TranscriptProcessor( + assistant_correct_aggregation_callback=engine.create_aggregation_correction_callback() + ) + + context = OpenAILLMContext() + + return audio_buffer, audio_synchronizer, transcript, context + + +def build_pipeline( + transport, + stt, + transcript, + audio_buffer, + audio_synchronizer, + llm, + tts, + user_context_aggregator, + assistant_context_aggregator, + pipeline_engine_callback_processor, + stt_mute_filter, + pipeline_metrics_aggregator, + user_idle_disconnect, + engine_pre_aggregator_processor=None, +): + """Build the main pipeline with all components""" + # Register processors with synchronizer for merged audio + logger.info("Registering audio buffer processors with synchronizer") + audio_synchronizer.register_processors(audio_buffer.input(), audio_buffer.output()) + + # Build processors list with optional context controller + processors = [ + transport.input(), # Transport user input + audio_buffer.input(), # Record input audio (only processes InputAudioRawFrame) + stt_mute_filter, + stt, # STT can now have audio_passthrough=False + user_idle_disconnect, + transcript.user(), + ] + + # Insert engine pre-aggregator processor if provided (before user aggregator) + if engine_pre_aggregator_processor: + processors.append(engine_pre_aggregator_processor) + + processors.extend( + [ + user_context_aggregator, + llm, # LLM + pipeline_engine_callback_processor, + tts, # TTS + transport.output(), # Transport bot output + audio_buffer.output(), # Record output audio (only processes OutputAudioRawFrame) + transcript.assistant(), + assistant_context_aggregator, # Assistant spoken responses + pipeline_metrics_aggregator, + ] + ) + + return Pipeline(processors) + + +def create_pipeline_task(pipeline, workflow_run_id, audio_config: AudioConfig = None): + """Create a pipeline task with appropriate parameters""" + # Set up pipeline params with audio configuration if provided + pipeline_params = PipelineParams( + allow_interruptions=True, + enable_metrics=True, + enable_usage_metrics=True, + send_initial_empty_metrics=False, + enable_heartbeats=True, + ) + + # If audio_config is provided, set the audio sample rates + if audio_config: + pipeline_params.audio_in_sample_rate = audio_config.transport_in_sample_rate + pipeline_params.audio_out_sample_rate = audio_config.transport_out_sample_rate + logger.debug( + f"Setting pipeline audio params - in: {audio_config.transport_in_sample_rate}Hz, " + f"out: {audio_config.transport_out_sample_rate}Hz" + ) + + task = PipelineTask( + pipeline, + params=pipeline_params, + enable_tracing=ENABLE_TRACING, + conversation_id=f"{workflow_run_id}", + ) + + # Check if turn logging is enabled + enable_turn_logging = os.getenv("ENABLE_TURN_LOGGING", "false").lower() == "true" + + if enable_turn_logging: + # Attach event handlers to propagate turn information into the logging context + turn_observer = task.turn_tracking_observer + + if turn_observer is not None: + # Import turn context manager only if needed + from api.services.pipecat.turn_context import get_turn_context_manager + + async def _on_turn_started(observer, turn_number: int): + """Set the current turn number into the context variable.""" + # Set in both contextvar and turn context manager + turn_var.set(turn_number) + turn_manager = get_turn_context_manager() + turn_manager.set_turn(turn_number) + + # Register the handlers with the observer + turn_observer.add_event_handler("on_turn_started", _on_turn_started) + + return task diff --git a/api/services/pipecat/pipeline_engine_callbacks_processor.py b/api/services/pipecat/pipeline_engine_callbacks_processor.py new file mode 100644 index 0000000..89aca49 --- /dev/null +++ b/api/services/pipecat/pipeline_engine_callbacks_processor.py @@ -0,0 +1,84 @@ +import time +from typing import Awaitable, Callable, Optional + +from loguru import logger + +from pipecat.frames.frames import ( + Frame, + HeartbeatFrame, + LLMFullResponseStartFrame, + LLMGeneratedTextFrame, + LLMTextFrame, + StartFrame, + TTSSpeakFrame, +) +from pipecat.processors.frame_processor import FrameDirection, FrameProcessor + + +class PipelineEngineCallbacksProcessor(FrameProcessor): + """ + Custom PipelineEngineCallbacksProcessor that accepts callbacks for various + use cases, like ending tasks when max call duration is exceeded, or informing + the engine that the bot is done speaking. + """ + + def __init__( + self, + max_call_duration_seconds: int = 300, + max_duration_end_task_callback: Optional[Callable[[], Awaitable[None]]] = None, + llm_generated_text_callback: Optional[Callable[[], Awaitable[None]]] = None, + generation_started_callback: Optional[Callable[[], Awaitable[None]]] = None, + llm_text_frame_callback: Optional[Callable[[str], Awaitable[None]]] = None, + ): + super().__init__() + self._start_time = None + self._max_call_duration_seconds = max_call_duration_seconds + self._max_duration_end_task_callback = max_duration_end_task_callback + self._llm_generated_text_callback = llm_generated_text_callback + self._generation_started_callback = generation_started_callback + self._llm_text_frame_callback = llm_text_frame_callback + self._end_task_frame_pushed = False + + async def process_frame(self, frame: Frame, direction: FrameDirection): + await super().process_frame(frame, direction) + + if isinstance(frame, StartFrame): + await self._start(frame) + elif isinstance(frame, HeartbeatFrame): + await self._check_call_duration() + elif isinstance(frame, LLMGeneratedTextFrame): + await self._generated_text_frame(frame) + elif isinstance(frame, LLMFullResponseStartFrame): + await self._generation_started() + elif ( + isinstance(frame, (LLMTextFrame, TTSSpeakFrame)) + and self._llm_text_frame_callback + ): + # Include TTSSpeakFrame here since for static nodes, we send TTSSpeakFrame + # which can act as reference while fixing the aggregated trascript + await self._llm_text_frame_callback(frame.text) + await self.push_frame(frame, direction) + + async def _start(self, _: StartFrame): + self._start_time = time.time() + + async def _check_call_duration(self): + if self._start_time is not None: + if time.time() - self._start_time > self._max_call_duration_seconds: + if not self._end_task_frame_pushed: + if self._max_duration_end_task_callback: + await self._max_duration_end_task_callback() + self._end_task_frame_pushed = True + else: + logger.debug( + "Max call duration exceeded. Skipping EndTaskFrame since already sent" + ) + + async def _generated_text_frame(self, _: LLMGeneratedTextFrame): + """Handle LLMGeneratedTextFrame.""" + if self._llm_generated_text_callback is not None: + await self._llm_generated_text_callback() + + async def _generation_started(self): + if self._generation_started_callback: + await self._generation_started_callback() diff --git a/api/services/pipecat/pipeline_metrics_aggregator.py b/api/services/pipecat/pipeline_metrics_aggregator.py new file mode 100644 index 0000000..7d947bd --- /dev/null +++ b/api/services/pipecat/pipeline_metrics_aggregator.py @@ -0,0 +1,162 @@ +import time +from collections import defaultdict +from typing import Dict, Optional + +from loguru import logger + +from pipecat.frames.frames import ( + CancelFrame, + EndFrame, + Frame, + MetricsFrame, + StartFrame, +) +from pipecat.metrics.metrics import ( + LLMTokenUsage, + LLMUsageMetricsData, + STTUsageMetricsData, + TTSUsageMetricsData, +) +from pipecat.processors.frame_processor import FrameDirection, FrameProcessor + + +class PipelineMetricsAggregator(FrameProcessor): + def __init__(self): + super().__init__() + # Structure: {f"{processor}|||{model}": aggregated_metrics} + # For LLM: aggregated_metrics is LLMTokenUsage + # For TTS: aggregated_metrics is int (total characters) + # For STT: aggregated_metrics is float (total seconds) + + self._start_time: Optional[float] = None + self._stop_time: Optional[float] = None + self._llm_usage_metrics: Dict[str, LLMTokenUsage] = {} + self._tts_usage_metrics: Dict[str, int] = defaultdict(int) + self._stt_usage_metrics: Dict[str, float] = defaultdict(float) + + async def process_frame(self, frame: Frame, direction: FrameDirection): + await super().process_frame(frame, direction) + + if isinstance(frame, StartFrame): + await self._start(frame) + elif isinstance(frame, EndFrame): + await self._stop(frame) + elif isinstance(frame, CancelFrame): + await self._cancel(frame) + elif isinstance(frame, MetricsFrame): + for data in frame.data: + if isinstance(data, LLMUsageMetricsData): + await self._handle_llm_usage_metrics(data) + elif isinstance(data, TTSUsageMetricsData): + await self._handle_tts_usage_metrics(data) + elif isinstance(data, STTUsageMetricsData): + await self._handle_stt_usage_metrics(data) + + await self.push_frame(frame, direction) + + async def _start(self, _: StartFrame): + """Start tracking call duration.""" + self._start_time = time.time() + self._stop_time = None + + async def _stop(self, _: EndFrame): + """Stop tracking call duration.""" + if self._start_time is not None and self._stop_time is None: + self._stop_time = time.time() + + async def _cancel(self, _: CancelFrame): + """Handle call cancellation - also stop tracking duration.""" + if self._start_time is not None and self._stop_time is None: + self._stop_time = time.time() + + async def _handle_llm_usage_metrics(self, data: LLMUsageMetricsData): + key = f"{data.processor}|||{data.model}" + new_usage = data.value + + if key in self._llm_usage_metrics: + # Aggregate with existing metrics + existing = self._llm_usage_metrics[key] + aggregated = LLMTokenUsage( + prompt_tokens=existing.prompt_tokens + new_usage.prompt_tokens, + completion_tokens=existing.completion_tokens + + new_usage.completion_tokens, + total_tokens=existing.total_tokens + new_usage.total_tokens, + cache_read_input_tokens=(existing.cache_read_input_tokens or 0) + + (new_usage.cache_read_input_tokens or 0), + cache_creation_input_tokens=(existing.cache_creation_input_tokens or 0) + + (new_usage.cache_creation_input_tokens or 0), + ) + self._llm_usage_metrics[key] = aggregated + else: + # First occurrence for this processor+model combination + self._llm_usage_metrics[key] = LLMTokenUsage( + prompt_tokens=new_usage.prompt_tokens, + completion_tokens=new_usage.completion_tokens, + total_tokens=new_usage.total_tokens, + cache_read_input_tokens=new_usage.cache_read_input_tokens, + cache_creation_input_tokens=new_usage.cache_creation_input_tokens, + ) + + logger.debug(f"LLM usage metrics: {self._llm_usage_metrics}") + + async def _handle_tts_usage_metrics(self, data: TTSUsageMetricsData): + key = f"{data.processor}|||{data.model}" + self._tts_usage_metrics[key] += data.value + # logger.debug(f"TTS usage metrics: {self._tts_usage_metrics}") + + async def _handle_stt_usage_metrics(self, data: STTUsageMetricsData): + key = f"{data.processor}|||{data.model}" + self._stt_usage_metrics[key] += data.value + logger.debug(f"STT usage metrics: {self._stt_usage_metrics}") + + def get_llm_usage_metrics(self) -> Dict[str, LLMTokenUsage]: + """Get the aggregated LLM usage metrics grouped by processor|||model.""" + return self._llm_usage_metrics + + def get_tts_usage_metrics(self) -> Dict[str, int]: + """Get the aggregated TTS usage metrics grouped by processor|||model.""" + return self._tts_usage_metrics + + def get_stt_usage_metrics(self) -> Dict[str, float]: + """Get the aggregated STT usage metrics grouped by processor|||model.""" + return self._stt_usage_metrics + + def get_call_duration(self) -> float: + """Get call duration""" + if self._start_time is None: + return 0.0 + + if self._stop_time is None: + call_duration = time.time() - self._start_time + else: + call_duration = self._stop_time - self._start_time + + # Lets return a rounded integer + return int(round(call_duration)) + + def get_all_usage_metrics_serialized(self) -> Dict[str, Dict[str, any]]: + """Get all aggregated usage metrics in JSON-serializable format.""" + serialized_llm = {} + for key, usage in self._llm_usage_metrics.items(): + serialized_llm[key] = { + "prompt_tokens": usage.prompt_tokens, + "completion_tokens": usage.completion_tokens, + "total_tokens": usage.total_tokens, + "cache_read_input_tokens": usage.cache_read_input_tokens, + "cache_creation_input_tokens": usage.cache_creation_input_tokens, + } + + return { + "llm": serialized_llm, + "tts": dict(self._tts_usage_metrics), + "stt": dict(self._stt_usage_metrics), + "call_duration_seconds": self.get_call_duration(), + } + + def reset_metrics(self): + """Reset all aggregated metrics.""" + self._llm_usage_metrics.clear() + self._tts_usage_metrics.clear() + self._stt_usage_metrics.clear() + self._start_time = None + self._stop_time = None diff --git a/api/services/pipecat/run_pipeline.py b/api/services/pipecat/run_pipeline.py new file mode 100644 index 0000000..564fb3f --- /dev/null +++ b/api/services/pipecat/run_pipeline.py @@ -0,0 +1,388 @@ +from typing import Optional + +from fastapi import HTTPException, WebSocket +from loguru import logger + +from api.db import db_client +from api.enums import WorkflowRunMode +from api.services.pipecat.audio_config import AudioConfig, create_audio_config +from api.services.pipecat.engine_pre_aggregator_processor import ( + EnginePreAggregatorProcessor, +) +from api.services.pipecat.event_handlers import ( + register_audio_data_handler, + register_transcript_handler, + register_transport_event_handlers, +) +from api.services.pipecat.pipeline_builder import ( + build_pipeline, + create_pipeline_components, + create_pipeline_task, +) +from api.services.pipecat.pipeline_engine_callbacks_processor import ( + PipelineEngineCallbacksProcessor, +) +from api.services.pipecat.pipeline_metrics_aggregator import PipelineMetricsAggregator +from api.services.pipecat.service_factory import ( + create_llm_service, + create_stt_service, + create_tts_service, +) +from api.services.pipecat.tracing_config import setup_pipeline_tracing +from api.services.pipecat.transport_setup import ( + create_stasis_transport, + create_twilio_transport, + create_webrtc_transport, +) +from api.services.telephony.stasis_rtp_connection import StasisRTPConnection +from api.services.workflow.dto import ReactFlowDTO +from api.services.workflow.pipecat_engine import PipecatEngine +from api.services.workflow.workflow import WorkflowGraph +from pipecat.pipeline.runner import PipelineRunner +from pipecat.processors.aggregators.llm_response import LLMAssistantAggregatorParams +from pipecat.processors.filters.stt_mute_filter import ( + STTMuteConfig, + STTMuteFilter, + STTMuteStrategy, +) +from pipecat.processors.user_idle_processor import UserIdleProcessor +from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection +from pipecat.utils.context import set_current_run_id +from pipecat.utils.tracing.context_registry import ContextProviderRegistry + +# Setup tracing if enabled +setup_pipeline_tracing() + + +async def run_pipeline_twilio( + websocket_client: WebSocket, + stream_sid: str, + call_sid: str, + workflow_id: int, + workflow_run_id: int, + user_id: int, +) -> None: + """Run pipeline for Twilio connections""" + logger.debug( + f"Running pipeline for Twilio connection with workflow_id: {workflow_id} and workflow_run_id: {workflow_run_id}" + ) + set_current_run_id(workflow_run_id) + + # Store Twilio call SID in cost_info for later cost calculation + cost_info = {"twilio_call_sid": call_sid} + await db_client.update_workflow_run(workflow_run_id, cost_info=cost_info) + + # Get workflow to extract all pipeline configurations + workflow = await db_client.get_workflow(workflow_id, user_id) + vad_config = None + ambient_noise_config = None + if workflow and workflow.workflow_configurations: + if "vad_configuration" in workflow.workflow_configurations: + vad_config = workflow.workflow_configurations["vad_configuration"] + if "ambient_noise_configuration" in workflow.workflow_configurations: + ambient_noise_config = workflow.workflow_configurations[ + "ambient_noise_configuration" + ] + + # Create audio configuration for Twilio + audio_config = create_audio_config(WorkflowRunMode.TWILIO.value) + + transport = create_twilio_transport( + websocket_client, + stream_sid, + call_sid, + workflow_run_id, + audio_config, + vad_config, + ambient_noise_config, + ) + await _run_pipeline( + transport, + workflow_id, + workflow_run_id, + user_id, + audio_config=audio_config, + ) + + +async def run_pipeline_smallwebrtc( + webrtc_connection: SmallWebRTCConnection, + workflow_id: int, + workflow_run_id: int, + user_id: int, + call_context_vars: dict = {}, +) -> None: + """Run pipeline for WebRTC connections""" + logger.debug( + f"Running pipeline for WebRTC connection with workflow_id: {workflow_id} and workflow_run_id: {workflow_run_id}" + ) + set_current_run_id(workflow_run_id) + + # Get workflow to extract all pipeline configurations + workflow = await db_client.get_workflow(workflow_id, user_id) + vad_config = None + ambient_noise_config = None + if workflow and workflow.workflow_configurations: + if "vad_configuration" in workflow.workflow_configurations: + vad_config = workflow.workflow_configurations["vad_configuration"] + if "ambient_noise_configuration" in workflow.workflow_configurations: + ambient_noise_config = workflow.workflow_configurations[ + "ambient_noise_configuration" + ] + + # Create audio configuration for WebRTC + audio_config = create_audio_config(WorkflowRunMode.SMALLWEBRTC.value) + + transport = create_webrtc_transport( + webrtc_connection, + workflow_run_id, + audio_config, + vad_config, + ambient_noise_config, + ) + await _run_pipeline( + transport, + workflow_id, + workflow_run_id, + user_id, + call_context_vars=call_context_vars, + audio_config=audio_config, + ) + + +async def run_pipeline_ari_stasis( + stasis_connection: StasisRTPConnection, + workflow_id: int, + workflow_run_id: int, + user_id: int, + call_context_vars: dict, +) -> None: + """Run pipeline for ARI connections""" + logger.debug( + f"Running pipeline for ARI connection with workflow_id: {workflow_id} and workflow_run_id: {workflow_run_id}" + ) + set_current_run_id(workflow_run_id) + + # Get workflow to extract all pipeline configurations + workflow = await db_client.get_workflow(workflow_id, user_id) + vad_config = None + ambient_noise_config = None + if workflow and workflow.workflow_configurations: + if "vad_configuration" in workflow.workflow_configurations: + vad_config = workflow.workflow_configurations["vad_configuration"] + if "ambient_noise_configuration" in workflow.workflow_configurations: + ambient_noise_config = workflow.workflow_configurations[ + "ambient_noise_configuration" + ] + + # Create audio configuration for Stasis + audio_config = create_audio_config(WorkflowRunMode.STASIS.value) + + transport = create_stasis_transport( + stasis_connection, + workflow_run_id, + audio_config, + vad_config, + ambient_noise_config, + ) + await _run_pipeline( + transport, + workflow_id, + workflow_run_id, + user_id, + call_context_vars=call_context_vars, + audio_config=audio_config, + stasis_connection=stasis_connection, # Pass connection for immediate transfers + ) + + +async def _run_pipeline( + transport, + workflow_id: int, + workflow_run_id: int, + user_id: int, + call_context_vars: dict = {}, + audio_config: AudioConfig = None, + stasis_connection: Optional[StasisRTPConnection] = None, +) -> None: + """ + Run the pipeline with the given transport and configuration + + Args: + transport: The transport to use for the pipeline + workflow_id: The ID of the workflow + workflow_run_id: The ID of the workflow run + user_id: The ID of the user + mode: The mode of the pipeline (twilio or smallwebrtc) + """ + workflow_run = await db_client.get_workflow_run(workflow_run_id, user_id) + + # If the workflow run is already completed, we don't need to run it again + if workflow_run.is_completed: + raise HTTPException(status_code=400, detail="Workflow run already completed") + + merged_call_context_vars = workflow_run.initial_context + # If there is some extra call_context_vars, update them + if call_context_vars: + merged_call_context_vars = {**merged_call_context_vars, **call_context_vars} + await db_client.update_workflow_run( + workflow_run_id, initial_context=merged_call_context_vars + ) + + # Get user configuration + user_config = await db_client.get_user_configurations(user_id) + + # Create services based on user configuration + stt = create_stt_service(user_config) + tts = create_tts_service(user_config, audio_config) + llm = create_llm_service(user_config) + + # Get workflow first so we can create engine before pipeline components + workflow = await db_client.get_workflow(workflow_id, user_id) + if not workflow: + raise HTTPException(status_code=404, detail="Workflow not found") + + # Extract configurations from workflow configurations + max_call_duration_seconds = 300 # Default 5 minutes + max_user_idle_timeout = 10.0 # Default 10 seconds + + if workflow.workflow_configurations: + # Use workflow-specific max call duration if provided + if "max_call_duration" in workflow.workflow_configurations: + max_call_duration_seconds = workflow.workflow_configurations[ + "max_call_duration" + ] + + # Use workflow-specific max user idle timeout if provided + if "max_user_idle_timeout" in workflow.workflow_configurations: + max_user_idle_timeout = workflow.workflow_configurations[ + "max_user_idle_timeout" + ] + + workflow_graph = WorkflowGraph( + ReactFlowDTO.model_validate(workflow.workflow_definition_with_fallback) + ) + + engine = PipecatEngine( + llm=llm, + tts=tts, + workflow=workflow_graph, + call_context_vars=merged_call_context_vars, + workflow_run_id=workflow_run_id, + ) + + # Create pipeline components with audio configuration and engine + audio_buffer, audio_synchronizer, transcript, context = create_pipeline_components( + audio_config, engine + ) + + # Set the context and audio_buffer after creation + engine.set_context(context) + engine.set_audio_buffer(audio_buffer) + + # Set Stasis connection for immediate transfers (if available) + if stasis_connection: + engine.set_stasis_connection(stasis_connection) + + assistant_params = LLMAssistantAggregatorParams( + expect_stripped_words=True, + correct_aggregation_callback=engine.create_aggregation_correction_callback(), + ) + context_aggregator = llm.create_context_aggregator( + context, assistant_params=assistant_params + ) + + # Create engine pre-aggregator processor for speaking events + engine_pre_aggregator_processor = EnginePreAggregatorProcessor( + user_started_speaking_callback=engine.create_user_started_speaking_callback(), + user_stopped_speaking_callback=engine.create_user_stopped_speaking_callback(), + ) + + # Create usage metrics aggregator with engine's callback + pipeline_engine_callback_processor = PipelineEngineCallbacksProcessor( + max_call_duration_seconds=max_call_duration_seconds, + max_duration_end_task_callback=engine.create_max_duration_callback(), + llm_generated_text_callback=engine.create_llm_generated_text_callback(), + generation_started_callback=engine.create_generation_started_callback(), + llm_text_frame_callback=engine.handle_llm_text_frame, + # Note: speaking event callbacks are now handled by pre-aggregator processor + ) + + pipeline_metrics_aggregator = PipelineMetricsAggregator() + + # Create STT mute filter using the selected strategies and the engine's callback + stt_mute_filter = STTMuteFilter( + config=STTMuteConfig( + strategies={ + STTMuteStrategy.MUTE_UNTIL_FIRST_BOT_COMPLETE, + STTMuteStrategy.CUSTOM, + }, + should_mute_callback=engine.create_should_mute_callback(), + ) + ) + + # Use engine's user idle callback with configured timeout + user_idle_disconnect = UserIdleProcessor( + callback=engine.create_user_idle_callback(), timeout=max_user_idle_timeout + ) + + user_context_aggregator = context_aggregator.user() + assistant_context_aggregator = context_aggregator.assistant() + + @assistant_context_aggregator.event_handler("on_push_aggregation") + async def on_assistant_aggregator_push_context(_aggregator): + logger.debug("Assistant aggregator push context – flushing pending transitions") + await engine.flush_pending_transitions(source="context_push") + + # Build the pipeline with the STT mute filter and context controller + pipeline = build_pipeline( + transport, + stt, + transcript, + audio_buffer, + audio_synchronizer, + llm, + tts, + user_context_aggregator, + assistant_context_aggregator, + pipeline_engine_callback_processor, + stt_mute_filter, + pipeline_metrics_aggregator, + user_idle_disconnect, + engine_pre_aggregator_processor=engine_pre_aggregator_processor, + ) + + # Create pipeline task with audio configuration + task = create_pipeline_task(pipeline, workflow_run_id, audio_config) + + # Now set the task on the engine + engine.set_task(task) + + # Register event handlers + in_memory_audio_buffer, in_memory_transcript_buffer = ( + register_transport_event_handlers( + transport, + workflow_run_id, + audio_buffer, + task, + engine=engine, + usage_metrics_aggregator=pipeline_metrics_aggregator, + audio_synchronizer=audio_synchronizer, + audio_config=audio_config, + ) + ) + register_audio_data_handler( + audio_synchronizer, workflow_run_id, in_memory_audio_buffer + ) + register_transcript_handler( + transcript, workflow_run_id, in_memory_transcript_buffer + ) + + try: + # Run the pipeline + runner = PipelineRunner() + await runner.run(task) + logger.info(f"Pipeline runner completed for run {workflow_run_id}") + finally: + ContextProviderRegistry.remove_providers(str(workflow_run_id)) + logger.debug(f"Cleaned up context providers for workflow run {workflow_run_id}") diff --git a/api/services/pipecat/service_factory.py b/api/services/pipecat/service_factory.py new file mode 100644 index 0000000..69fa579 --- /dev/null +++ b/api/services/pipecat/service_factory.py @@ -0,0 +1,150 @@ +from typing import TYPE_CHECKING + +from fastapi import HTTPException + +from api.constants import MPS_API_URL +from api.services.configuration.registry import ServiceProviders +from pipecat.services.azure.llm import AzureLLMService +from pipecat.services.cartesia.stt import CartesiaSTTService +from pipecat.services.deepgram.stt import DeepgramSTTService +from pipecat.services.deepgram.tts import DeepgramTTSService +from pipecat.services.dograh.llm import DograhLLMService +from pipecat.services.dograh.stt import DograhSTTService +from pipecat.services.dograh.tts import DograhTTSService +from pipecat.services.elevenlabs.tts import ElevenLabsTTSService +from pipecat.services.google.llm import GoogleLLMService +from pipecat.services.groq.llm import GroqLLMService +from pipecat.services.openai.llm import OpenAILLMService +from pipecat.services.openai.stt import OpenAISTTService +from pipecat.services.openai.tts import OpenAITTSService + +if TYPE_CHECKING: + from api.services.pipecat.audio_config import AudioConfig + + +def create_stt_service(user_config): + """Create and return appropriate STT service based on user configuration""" + if user_config.stt.provider == ServiceProviders.DEEPGRAM.value: + return DeepgramSTTService( + api_key=user_config.stt.api_key, + audio_passthrough=False, # Disable passthrough since audio is buffered separately + ) + elif user_config.stt.provider == ServiceProviders.OPENAI.value: + return OpenAISTTService( + api_key=user_config.stt.api_key, + model=user_config.stt.model.value, + audio_passthrough=False, # Disable passthrough since audio is buffered separately + ) + elif user_config.stt.provider == ServiceProviders.CARTESIA.value: + return CartesiaSTTService( + api_key=user_config.stt.api_key, + audio_passthrough=False, # Disable passthrough since audio is buffered separately + ) + elif user_config.stt.provider == ServiceProviders.DOGRAH.value: + base_url = MPS_API_URL.replace("http://", "ws://").replace("https://", "wss://") + return DograhSTTService( + base_url=base_url, + api_key=user_config.stt.api_key, + model=user_config.stt.model.value, + audio_passthrough=False, # Disable passthrough since audio is buffered separately + ) + else: + raise HTTPException( + status_code=400, detail=f"Invalid STT provider {user_config.stt.provider}" + ) + + +def create_tts_service(user_config, audio_config: "AudioConfig"): + """Create and return appropriate TTS service based on user configuration + + Args: + user_config: User configuration containing TTS settings + transport_type: Type of transport (e.g., 'stasis', 'twilio', 'webrtc') + """ + if user_config.tts.provider == ServiceProviders.DEEPGRAM.value: + return DeepgramTTSService( + api_key=user_config.tts.api_key, + voice=user_config.tts.voice.value, + sample_rate=24000, + ) + elif user_config.tts.provider == ServiceProviders.OPENAI.value: + return OpenAITTSService( + api_key=user_config.tts.api_key, model=user_config.tts.model.value + ) + elif user_config.tts.provider == ServiceProviders.ELEVENLABS.value: + voice_id = user_config.tts.voice.split(" - ")[1] + return ElevenLabsTTSService( + reconnect_on_error=False, + api_key=user_config.tts.api_key, + voice_id=voice_id, + model=user_config.tts.model.value, + params=ElevenLabsTTSService.InputParams( + stability=0.8, speed=user_config.tts.speed, similarity_boost=0.75 + ), + ) + elif user_config.tts.provider == ServiceProviders.DOGRAH.value: + # Convert HTTP URL to WebSocket URL for TTS + base_url = MPS_API_URL.replace("http://", "ws://").replace("https://", "wss://") + # Handle both enum and string values for model and voice + return DograhTTSService( + base_url=base_url, + api_key=user_config.tts.api_key, + model=user_config.tts.model.value, + voice=user_config.tts.voice.value, + sample_rate=24000, + ) + else: + raise HTTPException( + status_code=400, detail=f"Invalid TTS provider {user_config.tts.provider}" + ) + + +def create_llm_service(user_config): + """Create and return appropriate LLM service based on user configuration""" + if user_config.llm.provider == ServiceProviders.OPENAI.value: + if "gpt-5" in user_config.llm.model.value: + return OpenAILLMService( + api_key=user_config.llm.api_key, + model=user_config.llm.model.value, + params=OpenAILLMService.InputParams( + reasoning_effort="minimal", verbosity="low" + ), + ) + else: + return OpenAILLMService( + api_key=user_config.llm.api_key, + model=user_config.llm.model.value, + params=OpenAILLMService.InputParams(temperature=0.1), + ) + elif user_config.llm.provider == ServiceProviders.GROQ.value: + print( + f"Creating Groq LLM service with API key: {user_config.llm.api_key} and model: {user_config.llm.model.value}" + ) + return GroqLLMService( + api_key=user_config.llm.api_key, + model=user_config.llm.model.value, + params=OpenAILLMService.InputParams(temperature=0.1), + ) + elif user_config.llm.provider == ServiceProviders.GOOGLE.value: + # Use the correct InputParams class for Google to avoid propagating OpenAI-specific + # NOT_GIVEN sentinels that break Pydantic validation in GoogleLLMService. + return GoogleLLMService( + api_key=user_config.llm.api_key, + model=user_config.llm.model.value, + params=GoogleLLMService.InputParams(temperature=0.1), + ) + elif user_config.llm.provider == ServiceProviders.AZURE.value: + return AzureLLMService( + api_key=user_config.llm.api_key, + endpoint=user_config.llm.endpoint, + model=user_config.llm.model.value, # Azure uses deployment name as model + params=AzureLLMService.InputParams(temperature=0.1), + ) + elif user_config.llm.provider == ServiceProviders.DOGRAH.value: + return DograhLLMService( + base_url=f"{MPS_API_URL}/api/v1/llm", + api_key=user_config.llm.api_key, + model=user_config.llm.model.value, + ) + else: + raise HTTPException(status_code=400, detail="Invalid LLM provider") diff --git a/api/services/pipecat/tracing_config.py b/api/services/pipecat/tracing_config.py new file mode 100644 index 0000000..7ae8a64 --- /dev/null +++ b/api/services/pipecat/tracing_config.py @@ -0,0 +1,44 @@ +import base64 +import os + +from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter + +from api.constants import ENABLE_TRACING +from pipecat.utils.tracing.setup import setup_tracing + + +def is_tracing_enabled(): + """Check if tracing should be enabled based on ENABLE_TRACING flag.""" + # Tracing is only enabled when ENABLE_TRACING is explicitly set to true + # This makes the system OSS-friendly by default (no external dependencies required) + return ENABLE_TRACING + + +def setup_pipeline_tracing(): + """Setup tracing for the pipeline if enabled""" + if is_tracing_enabled(): + # Only set up Langfuse if credentials are provided + langfuse_host = os.environ.get("LANGFUSE_HOST") + langfuse_public_key = os.environ.get("LANGFUSE_PUBLIC_KEY") + langfuse_secret_key = os.environ.get("LANGFUSE_SECRET_KEY") + + if not all([langfuse_host, langfuse_public_key, langfuse_secret_key]): + print( + "Warning: ENABLE_TRACING is true but Langfuse credentials are not configured. Tracing disabled." + ) + return + + LANGFUSE_AUTH = base64.b64encode( + f"{langfuse_public_key}:{langfuse_secret_key}".encode() + ).decode() + + os.environ["OTEL_EXPORTER_OTLP_ENDPOINT"] = f"{langfuse_host}/api/public/otel" + os.environ["OTEL_EXPORTER_OTLP_HEADERS"] = ( + f"Authorization=Basic {LANGFUSE_AUTH}" + ) + + otlp_exporter = OTLPSpanExporter() + setup_tracing(service_name="dograh-pipeline", exporter=otlp_exporter) + print("Langfuse tracing enabled") + else: + print("Tracing disabled (ENABLE_TRACING=false)") diff --git a/api/services/pipecat/transport_setup.py b/api/services/pipecat/transport_setup.py new file mode 100644 index 0000000..19ab013 --- /dev/null +++ b/api/services/pipecat/transport_setup.py @@ -0,0 +1,299 @@ +import os + +from fastapi import WebSocket + +from api.constants import APP_ROOT_DIR, ENABLE_RNNOISE, ENABLE_SMART_TURN +from api.services.pipecat.audio_config import AudioConfig +from api.services.smart_turn.websocket_smart_turn import ( + WebSocketSmartTurnAnalyzer, +) +from api.services.telephony.stasis_rtp_connection import StasisRTPConnection +from api.services.telephony.stasis_rtp_serializer import StasisRTPFrameSerializer +from api.services.telephony.stasis_rtp_transport import ( + StasisRTPTransport, + StasisRTPTransportParams, +) +from pipecat.audio.filters.rnnoise_filter import RNNoiseFilter +from pipecat.audio.mixers.silence_audio_mixer import SilenceAudioMixer +from pipecat.audio.mixers.soundfile_mixer import SoundfileMixer +from pipecat.audio.turn.smart_turn.base_smart_turn import SmartTurnParams +from pipecat.audio.vad.silero import SileroVADAnalyzer, VADParams +from pipecat.serializers.twilio import TwilioFrameSerializer +from pipecat.transports import InternalTransport +from pipecat.transports.base_transport import TransportParams +from pipecat.transports.network.fastapi_websocket import ( + FastAPIWebsocketParams, + FastAPIWebsocketTransport, +) +from pipecat.transports.network.small_webrtc import SmallWebRTCTransport +from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection + +librnnoise_path = os.path.normpath( + str(APP_ROOT_DIR / "native" / "rnnoise" / "librnnoise.so") +) + + +def create_turn_analyzer(workflow_run_id: int, audio_config: AudioConfig): + """Create a turn analyzer backed by the local Smart Turn HTTP service. + + Args: + workflow_run_id: ID of the workflow run for turn analyzer context + audio_config: Audio configuration containing pipeline sample rate + """ + if ENABLE_SMART_TURN: + service_url = os.getenv( + "SMART_TURN_WS_SERVICE_ENDPOINT", "ws://localhost:8010/ws" + ) + + # Prepare optional authentication headers for Smart Turn service + secret_key = os.getenv("SMART_TURN_HTTP_SERVICE_KEY") + headers = {"X-API-Key": secret_key} if secret_key else None + + return WebSocketSmartTurnAnalyzer( + url=service_url, + headers=headers, + sample_rate=audio_config.pipeline_sample_rate, + params=SmartTurnParams( + stop_secs=1.5, # send turn complete if silent for stop_secs seconds + pre_speech_ms=0, # send speech segments before speech was detected by VAD + max_duration_secs=5, # max duration of speech to be sent to the end of turn analyzer + # we don't want to _clear except when we have end of turn prediction as 1 from last run + # else if we have speaking -> queit -> trigger end of turn -> clear() and then + # we have speak -> queit, we may end up sending a very small segment of speech + # to end of turn model, which is not good + use_only_last_vad_segment=False, + ), + service_context=workflow_run_id, + ) + + return None + + +def create_twilio_transport( + websocket_client: WebSocket, + stream_sid: str, + call_sid: str, + workflow_run_id: int, + audio_config: AudioConfig, + vad_config: dict | None = None, + ambient_noise_config: dict | None = None, +): + """Create a transport for Twilio connections""" + turn_analyzer = create_turn_analyzer(workflow_run_id, audio_config) + + serializer = TwilioFrameSerializer( + stream_sid=stream_sid, + call_sid=call_sid, + account_sid=os.environ["TWILIO_ACCOUNT_SID"], + auth_token=os.environ["TWILIO_AUTH_TOKEN"], + ) + + return FastAPIWebsocketTransport( + websocket=websocket_client, + params=FastAPIWebsocketParams( + audio_in_enabled=True, + audio_out_enabled=True, + audio_in_sample_rate=audio_config.transport_in_sample_rate, + audio_out_sample_rate=audio_config.transport_out_sample_rate, + vad_analyzer=( + SileroVADAnalyzer( + params=VADParams( + confidence=vad_config.get("confidence", 0.7), + start_secs=vad_config.get("start_seconds", 0.4), + stop_secs=vad_config.get("stop_seconds", 0.8), + min_volume=vad_config.get("minimum_volume", 0.6), + ) + ) + if vad_config + else SileroVADAnalyzer() + ), # Sample rate will be set by transport + audio_out_mixer=( + SoundfileMixer( + sound_files={ + "office": APP_ROOT_DIR + / "assets" + / f"office-ambience-{audio_config.transport_out_sample_rate}-mono.wav" + }, + default_sound="office", + volume=ambient_noise_config.get("volume", 0.3), + ) + if ambient_noise_config and ambient_noise_config.get("enabled", False) + else SilenceAudioMixer() + ), + turn_analyzer=turn_analyzer, + serializer=serializer, + audio_in_filter=RNNoiseFilter(library_path=librnnoise_path) + if ENABLE_RNNOISE + else None, + ), + ) + + +def create_webrtc_transport( + webrtc_connection: SmallWebRTCConnection, + workflow_run_id: int, + audio_config: AudioConfig, + vad_config: dict | None = None, + ambient_noise_config: dict | None = None, +): + """Create a transport for WebRTC connections""" + turn_analyzer = create_turn_analyzer(workflow_run_id, audio_config) + + return SmallWebRTCTransport( + webrtc_connection=webrtc_connection, + params=TransportParams( + audio_in_enabled=True, + audio_out_enabled=True, + audio_in_sample_rate=audio_config.transport_in_sample_rate, + audio_out_sample_rate=audio_config.transport_out_sample_rate, + vad_analyzer=( + SileroVADAnalyzer( + params=VADParams( + confidence=vad_config.get("confidence", 0.7), + start_secs=vad_config.get("start_seconds", 0.4), + stop_secs=vad_config.get("stop_seconds", 0.8), + min_volume=vad_config.get("minimum_volume", 0.6), + ) + ) + if vad_config + else SileroVADAnalyzer() + ), # Sample rate will be set by transport + audio_out_mixer=( + SoundfileMixer( + sound_files={ + "office": APP_ROOT_DIR + / "assets" + / f"office-ambience-{audio_config.transport_out_sample_rate}-mono.wav" + }, + default_sound="office", + volume=ambient_noise_config.get("volume", 0.3), + ) + if ambient_noise_config and ambient_noise_config.get("enabled", False) + else SilenceAudioMixer() + ), + turn_analyzer=turn_analyzer, + audio_in_filter=RNNoiseFilter(library_path=librnnoise_path) + if ENABLE_RNNOISE + else None, + ), + ) + + +def create_stasis_transport( + stasis_connection: StasisRTPConnection, + workflow_run_id: int, + audio_config: AudioConfig, + vad_config: dict | None = None, + ambient_noise_config: dict | None = None, +): + """Create a transport for ARI connections""" + turn_analyzer = create_turn_analyzer(workflow_run_id, audio_config) + + serializer = StasisRTPFrameSerializer( + StasisRTPFrameSerializer.InputParams( + sample_rate=audio_config.transport_in_sample_rate + ) + ) + + return StasisRTPTransport( + stasis_connection, + params=StasisRTPTransportParams( + audio_in_enabled=True, + audio_out_enabled=True, + audio_out_sample_rate=audio_config.transport_out_sample_rate, + audio_in_sample_rate=audio_config.transport_in_sample_rate, + audio_out_10ms_chunks=2, # Send 20ms packets + vad_analyzer=( + SileroVADAnalyzer( + params=VADParams( + confidence=vad_config.get("confidence", 0.7), + start_secs=vad_config.get("start_seconds", 0.4), + stop_secs=vad_config.get("stop_seconds", 0.8), + min_volume=vad_config.get("minimum_volume", 0.6), + ) + ) + if vad_config + else SileroVADAnalyzer() + ), # Sample rate will be set by transport + audio_out_mixer=( + SoundfileMixer( + sound_files={ + "office": APP_ROOT_DIR + / "assets" + / f"office-ambience-{audio_config.transport_out_sample_rate}-mono.wav" + }, + default_sound="office", + volume=ambient_noise_config.get("volume", 0.3), + ) + if ambient_noise_config and ambient_noise_config.get("enabled", False) + else SilenceAudioMixer() + ), + turn_analyzer=turn_analyzer, + serializer=serializer, + audio_in_filter=RNNoiseFilter(library_path=librnnoise_path) + if ENABLE_RNNOISE + else None, + ), + ) + + +def create_internal_transport( + workflow_run_id: int, + audio_config: AudioConfig, + latency_seconds: float = 0.0, + vad_config: dict | None = None, + ambient_noise_config: dict | None = None, +): + """Create an internal transport for agent-to-agent connections (LoopTalk). + + Args: + workflow_run_id: ID of the workflow run for turn analyzer context + audio_config: Audio configuration for the transport + latency_seconds: Network latency to simulate + + Returns: + InternalTransport instance configured with turn analyzer + """ + turn_analyzer = create_turn_analyzer(workflow_run_id, audio_config) + + # Create and return the internal transport with latency + return InternalTransport( + params=TransportParams( + audio_out_enabled=True, + audio_out_sample_rate=audio_config.transport_out_sample_rate, + audio_out_channels=1, + audio_in_enabled=True, + audio_in_sample_rate=audio_config.transport_in_sample_rate, + audio_in_channels=1, + vad_analyzer=( + SileroVADAnalyzer( + params=VADParams( + confidence=vad_config.get("confidence", 0.7), + start_secs=vad_config.get("start_seconds", 0.4), + stop_secs=vad_config.get("stop_seconds", 0.8), + min_volume=vad_config.get("minimum_volume", 0.6), + ) + ) + if vad_config + else SileroVADAnalyzer() + ), + audio_out_mixer=( + SoundfileMixer( + sound_files={ + "office": APP_ROOT_DIR + / "assets" + / f"office-ambience-{audio_config.transport_out_sample_rate}-mono.wav" + }, + default_sound="office", + volume=ambient_noise_config.get("volume", 0.3), + ) + if ambient_noise_config and ambient_noise_config.get("enabled", False) + else SilenceAudioMixer() + ), + turn_analyzer=turn_analyzer, + audio_in_filter=RNNoiseFilter(library_path=librnnoise_path) + if ENABLE_RNNOISE + else None, + ), + latency_seconds=latency_seconds, + ) diff --git a/api/services/pipecat/turn_context.py b/api/services/pipecat/turn_context.py new file mode 100644 index 0000000..9d3683d --- /dev/null +++ b/api/services/pipecat/turn_context.py @@ -0,0 +1,76 @@ +"""Turn context management for logging across async boundaries. + +This module provides a mechanism to track turn numbers across different +async contexts, working around the limitation that contextvars don't +propagate through asyncio.create_task() calls. +""" + +import asyncio +from typing import Dict, Optional + +from pipecat.utils.context import turn_var + + +class TurnContextManager: + """Manages turn context across async task boundaries. + + This class provides a workaround for the issue where contextvars + don't propagate through asyncio.create_task() calls in the pipecat + library's event system. + """ + + def __init__(self): + # Map from task to turn number + self._task_turns: Dict[asyncio.Task, int] = {} + # Store the pipeline task reference + self._pipeline_task: Optional[asyncio.Task] = None + self._current_turn: int = 0 + + def set_pipeline_task(self, task: asyncio.Task): + """Set the main pipeline task reference.""" + self._pipeline_task = task + + def set_turn(self, turn_number: int): + """Set the turn number for the current context.""" + self._current_turn = turn_number + # Set in contextvar for direct access + turn_var.set(turn_number) + + # Also store for the current task + try: + current_task = asyncio.current_task() + if current_task: + self._task_turns[current_task] = turn_number + except RuntimeError: + pass + + def get_turn(self) -> int: + """Get the turn number, trying multiple sources.""" + # First try contextvar + turn = turn_var.get() + if turn > 0: + return turn + + # Try current task mapping + try: + current_task = asyncio.current_task() + if current_task and current_task in self._task_turns: + return self._task_turns[current_task] + except RuntimeError: + pass + + # Fall back to stored current turn + return self._current_turn + + def cleanup_task(self, task: asyncio.Task): + """Clean up turn mapping for completed tasks.""" + self._task_turns.pop(task, None) + + +# Global instance +_turn_context_manager = TurnContextManager() + + +def get_turn_context_manager() -> TurnContextManager: + """Get the global turn context manager instance.""" + return _turn_context_manager diff --git a/api/services/pricing/README.md b/api/services/pricing/README.md new file mode 100644 index 0000000..4f834c2 --- /dev/null +++ b/api/services/pricing/README.md @@ -0,0 +1,76 @@ +# Pricing Module + +This module contains pricing models and registries for different AI services used in workflow cost calculations. + +## Structure + +``` +pricing/ +├── __init__.py # Main module exports +├── models.py # Base pricing model classes +├── llm.py # LLM pricing configurations +├── tts.py # TTS pricing configurations +├── stt.py # STT pricing configurations +├── registry.py # Combined pricing registry +└── README.md # This file +``` + +## Pricing Models + +### TokenPricingModel +Used for LLM services that charge based on tokens: +- `prompt_token_price`: Cost per prompt token +- `completion_token_price`: Cost per completion token +- `cache_read_discount`: Discount for cache read tokens (default 50%) +- `cache_creation_multiplier`: Premium for cache creation tokens (default 25%) + +### CharacterPricingModel +Used for TTS services that charge based on character count: +- `character_price`: Cost per character + +### TimePricingModel +Used for STT services that charge based on time: +- `second_price`: Cost per second + +## Adding New Pricing + +### Adding a New LLM Model +Edit `llm.py` and add the model to the appropriate provider: + +```python +ServiceProviders.OPENAI: { + "new-model": TokenPricingModel( + prompt_token_price=Decimal("2.00") / 1000000, + completion_token_price=Decimal("8.00") / 1000000, + ), + # ... existing models +} +``` + +### Adding a New Provider +1. Add pricing configurations to the appropriate service file (llm.py, tts.py, stt.py) +2. The registry will automatically include them + +### Adding a New Service Type +1. Create a new pricing file (e.g., `image.py`) +2. Define the pricing models +3. Import and add to `registry.py` + +## Usage + +The pricing registry is automatically imported and used by the cost calculator: + +```python +from api.services.pricing import PRICING_REGISTRY +from api.services.workflow.cost_calculator import cost_calculator + +# The cost calculator uses the pricing registry automatically +result = cost_calculator.calculate_total_cost(usage_info) +``` + +## Maintenance + +- Update pricing when providers change their rates +- All prices should use `Decimal` for precision +- Include comments with current pricing from provider documentation +- Test changes with existing test suite \ No newline at end of file diff --git a/api/services/pricing/__init__.py b/api/services/pricing/__init__.py new file mode 100644 index 0000000..1fa0eed --- /dev/null +++ b/api/services/pricing/__init__.py @@ -0,0 +1,9 @@ +""" +Pricing module for workflow cost calculation. + +This module contains pricing models and registries for different AI services. +""" + +from .registry import PRICING_REGISTRY + +__all__ = ["PRICING_REGISTRY"] diff --git a/api/services/pricing/cost_calculator.py b/api/services/pricing/cost_calculator.py new file mode 100644 index 0000000..1434475 --- /dev/null +++ b/api/services/pricing/cost_calculator.py @@ -0,0 +1,228 @@ +""" +Cost Calculator for Workflow Runs + +This module provides a comprehensive cost calculation system for workflow runs based on usage metrics +from different AI service providers (OpenAI, Groq, Deepgram, etc.). + +Features: +- Token-based pricing for LLM services with cache optimization support +- Character-based pricing for TTS services +- Time-based pricing for STT services +- Configurable pricing models that can be updated +- Support for multiple providers and models +- Automatic provider inference from model names +- JSON serialization support for database storage + +Usage: + from api.tasks.cost_calculator import cost_calculator + + usage_info = { + "llm": { + "processor_name|||gpt-4o": { + "prompt_tokens": 1000, + "completion_tokens": 500, + "total_tokens": 1500, + "cache_read_input_tokens": 0, + "cache_creation_input_tokens": 0 + } + }, + "tts": { + "processor_name|||aura-2-helena-en": 2000 # character count + } + } + + cost_breakdown = cost_calculator.calculate_total_cost(usage_info) + print(f"Total cost: ${cost_breakdown['total']:.6f}") +""" + +from decimal import Decimal +from typing import Any, Dict, Optional, Tuple + +from api.services.configuration.registry import ServiceProviders +from api.services.pricing import PRICING_REGISTRY +from api.services.pricing.models import ( + PricingModel, +) + + +class CostCalculator: + """Main cost calculator class""" + + def __init__(self, pricing_registry: Dict = None): + self.pricing_registry = pricing_registry or PRICING_REGISTRY + + def get_pricing_model( + self, service_type: str, provider: str, model: str + ) -> Optional[PricingModel]: + """Get pricing model for a specific service, provider, and model""" + try: + service_pricing = self.pricing_registry.get(service_type, {}) + + # Try to get pricing for the specific provider + provider_pricing = service_pricing.get(provider, {}) + pricing_model = provider_pricing.get(model) or provider_pricing.get( + "default" + ) + + if pricing_model: + return pricing_model + + # If not found, try the "default" provider for this service type + default_provider_pricing = service_pricing.get("default", {}) + return default_provider_pricing.get(model) or default_provider_pricing.get( + "default" + ) + + except (KeyError, AttributeError): + return None + + def calculate_llm_cost( + self, provider: str, model: str, usage: Dict[str, int] + ) -> Decimal: + """Calculate cost for LLM usage""" + pricing_model = self.get_pricing_model("llm", provider, model) + if not pricing_model: + return Decimal("0") + return pricing_model.calculate_cost(usage) + + def calculate_tts_cost( + self, provider: str, model: str, character_count: int + ) -> Decimal: + """Calculate cost for TTS usage""" + pricing_model = self.get_pricing_model("tts", provider, model) + if not pricing_model: + return Decimal("0") + return pricing_model.calculate_cost(character_count) + + def calculate_stt_cost(self, provider: str, model: str, seconds: float) -> Decimal: + """Calculate cost for STT usage""" + pricing_model = self.get_pricing_model("stt", provider, model) + if not pricing_model: + return Decimal("0") + return pricing_model.calculate_cost(seconds) + + def calculate_total_cost(self, usage_info: Dict) -> Dict[str, Any]: + llm_cost_total = Decimal("0") + tts_cost_total = Decimal("0") + stt_cost_total = Decimal("0") + + # Calculate LLM costs + llm_usage = usage_info.get("llm", {}) + for key, usage in llm_usage.items(): + processor, model = self._parse_key(key) + # Try to determine provider from processor name or model + provider = self._infer_provider_from_model(model, "llm") + cost = self.calculate_llm_cost(provider, model, usage) + llm_cost_total += cost + + # Calculate TTS costs + tts_usage = usage_info.get("tts", {}) + for key, character_count in tts_usage.items(): + processor, model = self._parse_key(key) + # Handle the case where model is "None" - infer from processor + if model.lower() in ["none", "null", ""]: + provider = self._infer_provider_from_processor(processor, "tts") + model = "default" # Use default model for the provider + else: + provider = self._infer_provider_from_model(model, "tts") + cost = self.calculate_tts_cost(provider, model, character_count) + tts_cost_total += cost + + # Calculate STT costs from explicit stt usage + stt_usage = usage_info.get("stt", {}) + for key, seconds in stt_usage.items(): + processor, model = self._parse_key(key) + provider = self._infer_provider_from_model(model, "stt") + cost = self.calculate_stt_cost(provider, model, seconds) + stt_cost_total += cost + + total_cost = llm_cost_total + tts_cost_total + stt_cost_total + + return { + "llm_cost": float(llm_cost_total), + "tts_cost": float(tts_cost_total), + "stt_cost": float(stt_cost_total), + "total": float(total_cost), + } + + def _parse_key(self, key) -> Tuple[str, str]: + """Parse key which is in format 'processor|||model'""" + if isinstance(key, str) and "|||" in key: + parts = key.split("|||", 1) + return parts[0], parts[1] + else: + # Fallback for backwards compatibility or malformed keys + return str(key), "unknown" + + def _infer_provider_from_model(self, model: str, service_type: str) -> str: + """Infer provider from model name""" + if not model: + return "unknown" + + model_lower = model.lower() + + # OpenAI models + if any(keyword in model_lower for keyword in ["gpt", "whisper", "openai"]): + return ServiceProviders.OPENAI + + # Groq models + if any(keyword in model_lower for keyword in ["groq"]): + return ServiceProviders.GROQ + + # Elevenlabs models + if any(keyword in model_lower for keyword in ["eleven"]): + return ServiceProviders.ELEVENLABS + + # Deepgram models + if any( + keyword in model_lower + for keyword in ["deepgram", "nova", "phonecall", "general"] + ): + return ServiceProviders.DEEPGRAM + + # Default to first available provider for the service type + service_providers = self.pricing_registry.get(service_type, {}) + if service_providers: + return list(service_providers.keys())[0] + + return "unknown" + + def _infer_provider_from_processor(self, processor: str, service_type: str) -> str: + """Infer provider from processor name""" + if not processor: + return "unknown" + + processor_lower = processor.lower() + + # OpenAI processors + if any(keyword in processor_lower for keyword in ["openai", "gpt"]): + return ServiceProviders.OPENAI + + # Groq processors + if any(keyword in processor_lower for keyword in ["groq"]): + return ServiceProviders.GROQ + + # Deepgram processors + if any(keyword in processor_lower for keyword in ["deepgram"]): + return ServiceProviders.DEEPGRAM + + # Default to first available provider for the service type + service_providers = self.pricing_registry.get(service_type, {}) + if service_providers: + return list(service_providers.keys())[0] + + return "unknown" + + def update_pricing( + self, service_type: str, provider: str, model: str, pricing_model: PricingModel + ): + """Update pricing for a specific service/provider/model combination""" + if service_type not in self.pricing_registry: + self.pricing_registry[service_type] = {} + if provider not in self.pricing_registry[service_type]: + self.pricing_registry[service_type][provider] = {} + self.pricing_registry[service_type][provider][model] = pricing_model + + +# Global cost calculator instance +cost_calculator = CostCalculator() diff --git a/api/services/pricing/llm.py b/api/services/pricing/llm.py new file mode 100644 index 0000000..addb59b --- /dev/null +++ b/api/services/pricing/llm.py @@ -0,0 +1,143 @@ +""" +LLM pricing models for different providers. + +Prices are per 1000 tokens for most models, with some newer models priced per million tokens. +""" + +from decimal import Decimal +from typing import Dict + +from api.services.configuration.registry import ServiceProviders + +from .models import TokenPricingModel + +# LLM pricing registry +LLM_PRICING: Dict[str, Dict[str, TokenPricingModel]] = { + ServiceProviders.OPENAI: { + "gpt-3.5-turbo": TokenPricingModel( + prompt_token_price=Decimal("0.0015") / 1000, # $0.0015 per 1K tokens + completion_token_price=Decimal("0.002") / 1000, # $0.002 per 1K tokens + ), + "gpt-4": TokenPricingModel( + prompt_token_price=Decimal("0.03") / 1000, # $0.03 per 1K tokens + completion_token_price=Decimal("0.06") / 1000, # $0.06 per 1K tokens + ), + "gpt-4.1": TokenPricingModel( + prompt_token_price=Decimal("2.00") / 1000000, # $2.00 per 1M tokens + completion_token_price=Decimal("8.00") / 1000000, # $8.00 per 1M tokens + ), + "gpt-4.1-mini": TokenPricingModel( + prompt_token_price=Decimal("0.40") / 1000000, # $0.40 per 1M tokens + completion_token_price=Decimal("1.60") / 1000000, # $1.60 per 1M tokens + ), + "gpt-4.1-nano": TokenPricingModel( + prompt_token_price=Decimal("0.10") / 1000000, # $0.10 per 1M tokens + completion_token_price=Decimal("0.40") / 1000000, # $0.40 per 1M tokens + ), + "gpt-4.5-preview": TokenPricingModel( + prompt_token_price=Decimal("75.00") / 1000000, # $75.00 per 1M tokens + completion_token_price=Decimal("150.00") / 1000000, # $150.00 per 1M tokens + ), + "gpt-4o": TokenPricingModel( + prompt_token_price=Decimal("2.50") / 1000000, # $2.50 per 1M tokens - FIXED + completion_token_price=Decimal("10.00") + / 1000000, # $10.00 per 1M tokens - FIXED + ), + "gpt-4o-audio-preview": TokenPricingModel( + prompt_token_price=Decimal("2.50") / 1000000, # $2.50 per 1M tokens + completion_token_price=Decimal("10.00") / 1000000, # $10.00 per 1M tokens + ), + "gpt-4o-realtime-preview": TokenPricingModel( + prompt_token_price=Decimal("5.00") / 1000000, # $5.00 per 1M tokens + completion_token_price=Decimal("20.00") / 1000000, # $20.00 per 1M tokens + ), + "gpt-4o-mini": TokenPricingModel( + prompt_token_price=Decimal("0.15") / 1000000, # $0.15 per 1M tokens + completion_token_price=Decimal("0.60") / 1000000, # $0.60 per 1M tokens + ), + "gpt-4o-mini-audio-preview": TokenPricingModel( + prompt_token_price=Decimal("0.15") / 1000000, # $0.15 per 1M tokens + completion_token_price=Decimal("0.60") / 1000000, # $0.60 per 1M tokens + ), + "gpt-4o-mini-realtime-preview": TokenPricingModel( + prompt_token_price=Decimal("0.60") / 1000000, # $0.60 per 1M tokens + completion_token_price=Decimal("2.40") / 1000000, # $2.40 per 1M tokens + ), + "gpt-4o-search-preview": TokenPricingModel( + prompt_token_price=Decimal("2.50") / 1000000, # $2.50 per 1M tokens + completion_token_price=Decimal("10.00") / 1000000, # $10.00 per 1M tokens + ), + "gpt-4o-mini-search-preview": TokenPricingModel( + prompt_token_price=Decimal("0.15") / 1000000, # $0.15 per 1M tokens + completion_token_price=Decimal("0.60") / 1000000, # $0.60 per 1M tokens + ), + "o1": TokenPricingModel( + prompt_token_price=Decimal("15.00") / 1000000, # $15.00 per 1M tokens + completion_token_price=Decimal("60.00") / 1000000, # $60.00 per 1M tokens + ), + "o1-pro": TokenPricingModel( + prompt_token_price=Decimal("150.00") / 1000000, # $150.00 per 1M tokens + completion_token_price=Decimal("600.00") / 1000000, # $600.00 per 1M tokens + ), + "o1-mini": TokenPricingModel( + prompt_token_price=Decimal("1.10") / 1000000, # $1.10 per 1M tokens + completion_token_price=Decimal("4.40") / 1000000, # $4.40 per 1M tokens + ), + "o3": TokenPricingModel( + prompt_token_price=Decimal("10.00") / 1000000, # $10.00 per 1M tokens + completion_token_price=Decimal("40.00") / 1000000, # $40.00 per 1M tokens + ), + "o3-mini": TokenPricingModel( + prompt_token_price=Decimal("1.10") / 1000000, # $1.10 per 1M tokens + completion_token_price=Decimal("4.40") / 1000000, # $4.40 per 1M tokens + ), + "o4-mini": TokenPricingModel( + prompt_token_price=Decimal("1.10") / 1000000, # $1.10 per 1M tokens + completion_token_price=Decimal("4.40") / 1000000, # $4.40 per 1M tokens + ), + "computer-use-preview": TokenPricingModel( + prompt_token_price=Decimal("3.00") / 1000000, # $3.00 per 1M tokens + completion_token_price=Decimal("12.00") / 1000000, # $12.00 per 1M tokens + ), + "gpt-image-1": TokenPricingModel( + prompt_token_price=Decimal("5.00") / 1000000, # $5.00 per 1M tokens + completion_token_price=Decimal("0") / 1000000, # No output pricing shown + ), + "codex-mini-latest": TokenPricingModel( + prompt_token_price=Decimal("1.50") / 1000000, # $1.50 per 1M tokens + completion_token_price=Decimal("6.00") / 1000000, # $6.00 per 1M tokens + ), + # Transcription models + "gpt-4o-transcribe": TokenPricingModel( + prompt_token_price=Decimal("2.50") / 1000000, # $2.50 per 1M tokens + completion_token_price=Decimal("10.00") / 1000000, # $10.00 per 1M tokens + ), + "gpt-4o-mini-transcribe": TokenPricingModel( + prompt_token_price=Decimal("1.25") / 1000000, # $1.25 per 1M tokens + completion_token_price=Decimal("5.00") / 1000000, # $5.00 per 1M tokens + ), + # TTS models with token-based pricing + "gpt-4o-mini-tts": TokenPricingModel( + prompt_token_price=Decimal("0.60") / 1000000, # $0.60 per 1M tokens + completion_token_price=Decimal("0") + / 1000000, # No completion tokens for TTS + ), + }, + ServiceProviders.GROQ: { + "llama-3.3-70b-versatile": TokenPricingModel( + prompt_token_price=Decimal("0.00059") / 1000, # $0.00059 per 1K tokens + completion_token_price=Decimal("0.00079") / 1000, # $0.00079 per 1K tokens + ), + "deepseek-r1-distill-llama-70b": TokenPricingModel( + prompt_token_price=Decimal("0.00059") / 1000, # Assuming similar pricing + completion_token_price=Decimal("0.00079") / 1000, + ), + }, + ServiceProviders.AZURE: { + "gpt-4.1-mini": TokenPricingModel( + prompt_token_price=Decimal("0.44") / 1000000, # $0.40 per 1M tokens + completion_token_price=Decimal("8.80") + / 1000000, # $1.60 per 1M tokens if using data zone + ) + }, +} diff --git a/api/services/pricing/models.py b/api/services/pricing/models.py new file mode 100644 index 0000000..58e197a --- /dev/null +++ b/api/services/pricing/models.py @@ -0,0 +1,89 @@ +""" +Base pricing models for different service types. +""" + +from decimal import Decimal +from enum import Enum +from typing import Any, Dict + + +class CostType(Enum): + LLM_TOKENS = "llm_tokens" + TTS_CHARACTERS = "tts_characters" + STT_SECONDS = "stt_seconds" + + +class PricingModel: + """Base class for pricing models""" + + def calculate_cost(self, usage: Any) -> Decimal: + """Calculate cost based on usage""" + raise NotImplementedError + + +class TokenPricingModel(PricingModel): + """Pricing model for token-based services (LLM)""" + + def __init__( + self, + prompt_token_price: Decimal, + completion_token_price: Decimal, + cache_read_discount: Decimal = Decimal("0.5"), # 50% discount for cache reads + cache_creation_multiplier: Decimal = Decimal( + "1.25" + ), # 25% premium for cache creation + ): + self.prompt_token_price = prompt_token_price + self.completion_token_price = completion_token_price + self.cache_read_discount = cache_read_discount + self.cache_creation_multiplier = cache_creation_multiplier + + def calculate_cost(self, usage: Dict[str, int]) -> Decimal: + """Calculate cost for LLM token usage""" + prompt_tokens = usage.get("prompt_tokens", 0) + completion_tokens = usage.get("completion_tokens", 0) + cache_read_tokens = usage.get("cache_read_input_tokens") or 0 + cache_creation_tokens = usage.get("cache_creation_input_tokens") or 0 + + # Base cost + prompt_cost = Decimal(prompt_tokens) * self.prompt_token_price + completion_cost = Decimal(completion_tokens) * self.completion_token_price + + # Cache adjustments + cache_read_savings = ( + Decimal(cache_read_tokens) + * self.prompt_token_price + * self.cache_read_discount + ) + cache_creation_premium = ( + Decimal(cache_creation_tokens) + * self.prompt_token_price + * (self.cache_creation_multiplier - 1) + ) + + total_cost = ( + prompt_cost + completion_cost - cache_read_savings + cache_creation_premium + ) + return max(total_cost, Decimal("0")) # Ensure non-negative + + +class CharacterPricingModel(PricingModel): + """Pricing model for character-based services (TTS)""" + + def __init__(self, character_price: Decimal): + self.character_price = character_price + + def calculate_cost(self, character_count: int) -> Decimal: + """Calculate cost for TTS character usage""" + return Decimal(character_count) * self.character_price + + +class TimePricingModel(PricingModel): + """Pricing model for time-based services (STT)""" + + def __init__(self, second_price: Decimal): + self.second_price = second_price + + def calculate_cost(self, seconds: float) -> Decimal: + """Calculate cost for STT time usage""" + return Decimal(str(seconds)) * self.second_price diff --git a/api/services/pricing/registry.py b/api/services/pricing/registry.py new file mode 100644 index 0000000..198c8ee --- /dev/null +++ b/api/services/pricing/registry.py @@ -0,0 +1,16 @@ +""" +Main pricing registry that combines all service type pricing models. +""" + +from typing import Dict + +from .llm import LLM_PRICING +from .stt import STT_PRICING +from .tts import TTS_PRICING + +# Combined pricing registry for all service types +PRICING_REGISTRY: Dict = { + "llm": LLM_PRICING, + "tts": TTS_PRICING, + "stt": STT_PRICING, +} diff --git a/api/services/pricing/stt.py b/api/services/pricing/stt.py new file mode 100644 index 0000000..ca00ff4 --- /dev/null +++ b/api/services/pricing/stt.py @@ -0,0 +1,26 @@ +""" +STT (Speech-to-Text) pricing models for different providers. + +Prices are per second for STT services. +""" + +from decimal import Decimal +from typing import Dict + +from api.services.configuration.registry import ServiceProviders + +from .models import TimePricingModel + +# STT pricing registry +STT_PRICING: Dict[str, Dict[str, TimePricingModel]] = { + ServiceProviders.DEEPGRAM: { + "nova-3-general": TimePricingModel(Decimal("0.0077") / 60), + "nova-2": TimePricingModel(Decimal("0.0058") / 60), + "default": TimePricingModel(Decimal("0.0077") / 60), + }, + ServiceProviders.OPENAI: { + "gpt-4o-transcribe": TimePricingModel(Decimal("0.015") / 60), + "default": TimePricingModel(Decimal("0.015") / 60), + }, + "default": {"default": TimePricingModel(Decimal("0.0077") / 60)}, +} diff --git a/api/services/pricing/tts.py b/api/services/pricing/tts.py new file mode 100644 index 0000000..7485cc7 --- /dev/null +++ b/api/services/pricing/tts.py @@ -0,0 +1,30 @@ +""" +TTS (Text-to-Speech) pricing models for different providers. + +Prices are per character for TTS services. +""" + +from decimal import Decimal +from typing import Dict + +from api.services.configuration.registry import ServiceProviders + +from .models import CharacterPricingModel + +# TTS pricing registry +TTS_PRICING: Dict[str, Dict[str, CharacterPricingModel]] = { + ServiceProviders.OPENAI: { + "gpt-4o-mini-tts": CharacterPricingModel(Decimal("0.6") / 1_00_00_000), + "default": CharacterPricingModel(Decimal("0.6") / 1_00_00_000), + }, + ServiceProviders.DEEPGRAM: { + "aura-2": CharacterPricingModel(Decimal("0.030") / 1_000), + "aura-1": CharacterPricingModel(Decimal("0.015") / 1_000), + "default": CharacterPricingModel(Decimal("0.030") / 1_000), + }, + ServiceProviders.ELEVENLABS: { + # 6400 usd per 250*1e6 characters + "default": CharacterPricingModel(Decimal("0.0256") / 1_000) + }, + "default": {"default": CharacterPricingModel(Decimal("0.030") / 1_000)}, +} diff --git a/api/services/reports/__init__.py b/api/services/reports/__init__.py new file mode 100644 index 0000000..c3e132e --- /dev/null +++ b/api/services/reports/__init__.py @@ -0,0 +1,3 @@ +from .daily_report import DailyReportService + +__all__ = ["DailyReportService"] diff --git a/api/services/reports/daily_report.py b/api/services/reports/daily_report.py new file mode 100644 index 0000000..33f1b62 --- /dev/null +++ b/api/services/reports/daily_report.py @@ -0,0 +1,237 @@ +from datetime import datetime, time +from typing import Any, Dict, List, Optional +from zoneinfo import ZoneInfo + +from api.db import db_client + + +class DailyReportService: + async def get_daily_report( + self, + organization_id: int, + date: str, + timezone: str, + workflow_id: Optional[int] = None, + ) -> Dict[str, Any]: + """ + Get daily report for a specific date and timezone. + + Args: + organization_id: The organization ID to filter by + date: Date in YYYY-MM-DD format + timezone: IANA timezone string (e.g., "America/New_York") + workflow_id: Optional workflow ID to filter by (None means all workflows) + """ + # Parse date and timezone + tz = ZoneInfo(timezone) + date_obj = datetime.strptime(date, "%Y-%m-%d") + + # Create start and end datetime in the specified timezone + start_dt = datetime.combine(date_obj, time.min, tzinfo=tz) + end_dt = datetime.combine(date_obj, time.max, tzinfo=tz) + + # Convert to UTC for database queries + start_utc = start_dt.astimezone(ZoneInfo("UTC")) + end_utc = end_dt.astimezone(ZoneInfo("UTC")) + + # Get workflow runs from database (optimized - only required fields) + runs = await db_client.get_workflow_runs_for_daily_report( + organization_id=organization_id, + start_utc=start_utc, + end_utc=end_utc, + workflow_id=workflow_id, + ) + + # Calculate metrics + total_runs = len(runs) + xfer_count = sum( + 1 + for run in runs + if run["gathered_context"] + and run["gathered_context"].get("mapped_call_disposition") == "XFER" + ) + + # Calculate disposition distribution + disposition_counts = {} + for run in runs: + if run["gathered_context"]: + disposition = run["gathered_context"].get( + "mapped_call_disposition", "UNKNOWN" + ) + disposition_counts[disposition] = ( + disposition_counts.get(disposition, 0) + 1 + ) + + # Sort dispositions by count and get top 5 + sorted_dispositions = sorted( + disposition_counts.items(), key=lambda x: x[1], reverse=True + ) + + disposition_distribution = [] + other_count = 0 + + for i, (disposition, count) in enumerate(sorted_dispositions): + if i < 5: + disposition_distribution.append( + { + "disposition": disposition, + "count": count, + "percentage": round( + (count / total_runs * 100) if total_runs > 0 else 0, 2 + ), + } + ) + else: + other_count += count + + # Add "Other" category if there are more than 5 dispositions + if other_count > 0: + disposition_distribution.append( + { + "disposition": "Other", + "count": other_count, + "percentage": round( + (other_count / total_runs * 100) if total_runs > 0 else 0, 2 + ), + } + ) + + # Calculate call duration distribution + duration_buckets = { + "0-10": {"range_start": 0, "range_end": 10, "count": 0}, + "10-30": {"range_start": 10, "range_end": 30, "count": 0}, + "30-60": {"range_start": 30, "range_end": 60, "count": 0}, + "60-120": {"range_start": 60, "range_end": 120, "count": 0}, + "120-180": {"range_start": 120, "range_end": 180, "count": 0}, + ">180": {"range_start": 180, "range_end": None, "count": 0}, + } + + for run in runs: + if run["usage_info"]: + duration_str = run["usage_info"].get("call_duration_seconds") + if duration_str: + try: + duration = float(duration_str) + if duration < 10: + duration_buckets["0-10"]["count"] += 1 + elif duration < 30: + duration_buckets["10-30"]["count"] += 1 + elif duration < 60: + duration_buckets["30-60"]["count"] += 1 + elif duration < 120: + duration_buckets["60-120"]["count"] += 1 + elif duration < 180: + duration_buckets["120-180"]["count"] += 1 + else: + duration_buckets[">180"]["count"] += 1 + except (ValueError, TypeError): + pass + + # Format duration distribution + call_duration_distribution = [] + total_calls_with_duration = sum(b["count"] for b in duration_buckets.values()) + + for bucket_name, bucket_data in duration_buckets.items(): + call_duration_distribution.append( + { + "bucket": bucket_name, + "range_start": bucket_data["range_start"], + "range_end": bucket_data["range_end"], + "count": bucket_data["count"], + "percentage": round( + (bucket_data["count"] / total_calls_with_duration * 100) + if total_calls_with_duration > 0 + else 0, + 2, + ), + } + ) + + return { + "date": date, + "timezone": timezone, + "workflow_id": workflow_id, + "metrics": {"total_runs": total_runs, "xfer_count": xfer_count}, + "disposition_distribution": disposition_distribution, + "call_duration_distribution": call_duration_distribution, + } + + async def get_workflows_for_organization( + self, organization_id: int + ) -> List[Dict[str, Any]]: + """ + Get all workflows for an organization. + """ + workflows = await db_client.get_workflows_for_organization(organization_id) + + return [{"id": workflow.id, "name": workflow.name} for workflow in workflows] + + async def get_daily_runs_detail( + self, + organization_id: int, + date: str, + timezone: str, + workflow_id: Optional[int] = None, + ) -> List[Dict[str, Any]]: + """ + Get detailed workflow runs for CSV export. + + Args: + organization_id: The organization ID to filter by + date: Date in YYYY-MM-DD format + timezone: IANA timezone string (e.g., "America/New_York") + workflow_id: Optional workflow ID to filter by + """ + # Parse date and timezone + tz = ZoneInfo(timezone) + date_obj = datetime.strptime(date, "%Y-%m-%d") + + # Create start and end datetime in the specified timezone + start_dt = datetime.combine(date_obj, time.min, tzinfo=tz) + end_dt = datetime.combine(date_obj, time.max, tzinfo=tz) + + # Convert to UTC for database queries + start_utc = start_dt.astimezone(ZoneInfo("UTC")) + end_utc = end_dt.astimezone(ZoneInfo("UTC")) + + # Get workflow runs from database (optimized - only required fields) + runs = await db_client.get_workflow_runs_for_daily_report( + organization_id=organization_id, + start_utc=start_utc, + end_utc=end_utc, + workflow_id=workflow_id, + ) + + # Format runs for CSV export + detailed_runs = [] + for run in runs: + # Phone number is already extracted at the database level + # Try customer_phone_number first, then fall back to initial_context + phone_number = run["gathered_context"].get( + "customer_phone_number", "" + ) or run["initial_context"].get("phone_number", "") + + # Disposition is already extracted at the database level + disposition = run["gathered_context"].get("mapped_call_disposition", "") + + # Duration is already extracted at the database level + duration_seconds = 0 + duration_str = run["usage_info"].get("call_duration_seconds", "0") + try: + duration_seconds = float(duration_str) + except (ValueError, TypeError): + duration_seconds = 0 + + detailed_runs.append( + { + "phone_number": phone_number, + "disposition": disposition, + "duration_seconds": duration_seconds, + "workflow_id": run["workflow_id"], + "run_id": run["id"], + "workflow_name": run["workflow_name"], + "created_at": run["created_at"].isoformat(), + } + ) + + return detailed_runs diff --git a/api/services/smart_turn/__init__.py b/api/services/smart_turn/__init__.py new file mode 100644 index 0000000..75d582a --- /dev/null +++ b/api/services/smart_turn/__init__.py @@ -0,0 +1,3 @@ +from .websocket_smart_turn import WebSocketSmartTurnAnalyzer + +__all__ = ["WebSocketSmartTurnAnalyzer"] diff --git a/api/services/smart_turn/app.py b/api/services/smart_turn/app.py new file mode 100644 index 0000000..6bbd0ab --- /dev/null +++ b/api/services/smart_turn/app.py @@ -0,0 +1,478 @@ +import asyncio +import io +import json +import logging +import os +import sys +import time +from contextlib import asynccontextmanager +from datetime import datetime +from pathlib import Path + +import numpy as np +from fastapi import ( + BackgroundTasks, + FastAPI, + HTTPException, + Request, + WebSocket, + WebSocketDisconnect, + WebSocketException, + status, +) +from fastapi.websockets import WebSocketState +from pipecat.audio.turn.smart_turn.local_smart_turn_v2 import LocalSmartTurnAnalyzerV2 +from scipy.io import wavfile + +LOG_LEVEL = ( + logging.DEBUG + if os.environ.get("LOG_LEVEL", "DEBUG").lower() == "debug" + else logging.INFO +) + +logger = logging.getLogger("smart_turn") +logger.setLevel(LOG_LEVEL) +handler = logging.StreamHandler(sys.stdout) +handler.setFormatter( + logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") +) +logger.addHandler(handler) + + +# ---------------------------------------------------------------------------- +# Configuration +# ---------------------------------------------------------------------------- +MODEL_PATH = os.getenv("LOCAL_SMART_TURN_MODEL_PATH", "pipecat-ai/smart-turn-v2") + +# ---------------------------------------------------------------------------- +# Analyzer Pool +# ---------------------------------------------------------------------------- + + +class _AnalyzerWrapper: + """Wraps a LocalSmartTurnAnalyzer with a lock so only one request can use it at a time.""" + + def __init__(self, analyzer: LocalSmartTurnAnalyzerV2): + self.analyzer = analyzer + self.lock = asyncio.Lock() + + +_analyzer_wrapper: _AnalyzerWrapper | None = None # Will be initialised in the lifespan + + +@asynccontextmanager +async def lifespan(app: FastAPI): + """Manage the application lifespan - startup and shutdown logic.""" + # Startup logic + global _analyzer_wrapper + + if _analyzer_wrapper is None: + logger.debug("Initializing LocalSmartTurnAnalyzer") + analyzer = LocalSmartTurnAnalyzerV2(smart_turn_model_path=MODEL_PATH) + _analyzer_wrapper = _AnalyzerWrapper(analyzer) + logger.debug("LocalSmartTurnAnalyzer initialized") + + yield # Application runs here + + # Shutdown logic (if needed in the future) + # Any cleanup code would go here + + +app = FastAPI( + title="Smart Turn API", + description="A FastAPI application exposing LocalSmartTurnAnalyzer via HTTP", + lifespan=lifespan, +) + +# ---------------------------------------------------------------------------- +# API Endpoints +# ---------------------------------------------------------------------------- + + +async def save_wav_file( + audio_array: np.ndarray, + prediction: int, + probability: float, + service_id: str | None = None, + sample_rate: int = 16000, +) -> None: + """Save audio data as a WAV file in the background. + + Runs the blocking ``wavfile.write`` call in a thread so that the event loop + is not blocked. This function is now ``async`` so it can be scheduled with + ``asyncio.create_task`` from the WebSocket endpoint, while still being + compatible with ``BackgroundTasks`` (which will ``await`` coroutine + functions). + + Args: + audio_array: The audio data as a numpy array + prediction: The prediction result (0 or 1) + probability: The probability of the prediction + service_id: Optional service identifier + sample_rate: The sample rate of the audio (default: 16000 Hz) + """ + + def _blocking_save() -> None: + try: + # Generate filename with current timestamp and prediction + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S_%f")[:-3] # Include ms + + # Include service_id in filename if available + service_prefix = f"{service_id}_" if service_id else "" + + root_dir = ( + Path(__file__).resolve().parents[3] + ) # dograh/api/services/smart_turn/app.py + filename = ( + root_dir + / f"smart_turn_pipeline/{service_prefix}{timestamp}_{prediction}_{probability}.wav" + ) + + # Convert float32 [-1, 1] back to int16 PCM for WAV file + audio_int16 = np.clip(audio_array * 32767, -32768, 32767).astype(np.int16) + + # Use provided sample rate + wavfile.write(filename, sample_rate, audio_int16) + + length_seconds = len(audio_array) / sample_rate + log_message = f"Saved audio to {filename} (length: {length_seconds:.2f}s, prediction: {prediction}" + if service_id: + log_message += f", service_id: {service_id}" + log_message += ")" + + logger.info(log_message) + + except Exception as exc: # pragma: no cover – best-effort logging only + log_message = f"Failed to save WAV file: {exc}" + if service_id: + log_message += f" (service_id: {service_id})" + logger.error(log_message) + + # Offload the blocking I/O to a thread to avoid blocking the event loop + await asyncio.to_thread(_blocking_save) + + +@app.post("/raw", status_code=status.HTTP_200_OK) +async def handle_raw(request: Request, background_tasks: BackgroundTasks): + """ + Accept a NumPy-serialized float32 array (written via ``np.save``) in the body and + return a JSON prediction compatible with ``HttpSmartTurnAnalyzer``. + """ + + # ------------------------------------------------------------------ + # Secret key validation + # ------------------------------------------------------------------ + expected_secret = os.getenv("SMART_TURN_HTTP_SERVICE_KEY") + if expected_secret: # If a secret is configured, enforce validation + provided_secret = request.headers.get("X-API-Key") + if provided_secret != expected_secret: + logger.warning( + "Unauthorized access attempt to /raw endpoint with invalid or missing secret key" + ) + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Unauthorized", + ) + + # ------------------------------------------------------------------ + # Start total-time measurement as early as possible + # ------------------------------------------------------------------ + request_start_time = time.perf_counter() + + # ------------------------------------------------------------------ + # Log that we received a request (before doing any heavy work) + # ------------------------------------------------------------------ + logger.debug("Received /raw request") + + body = await request.body() + if not body: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, detail="Empty request body" + ) + + # Extract service context and sample rate from headers + service_id = request.headers.get("X-Service-Context") + sample_rate_str = request.headers.get("X-Sample-Rate") + sample_rate = int(sample_rate_str) if sample_rate_str else 16000 + + # Deserialize NumPy array + try: + audio_array = np.load(io.BytesIO(body)) + except Exception as exc: + error_msg = f"Invalid NumPy payload: {exc}" + if service_id: + error_msg += f" (service_id: {service_id})" + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail=error_msg, + ) + + wrapper = _analyzer_wrapper + if wrapper is None: + raise HTTPException( + status_code=status.HTTP_503_SERVICE_UNAVAILABLE, + detail="Analyzer not initialized", + ) + + # Run inference guarded by the wrapper lock so the model isn't used concurrently + log_msg = "Going to acquire lock for model inference" + if service_id: + log_msg += f" (service_id: {service_id})" + logger.debug(log_msg) + + async with wrapper.lock: + log_msg = "Acquired lock for model inference" + if service_id: + log_msg += f" (service_id: {service_id})" + logger.debug(log_msg) + + # Measure inference-only latency + inference_start_time = time.perf_counter() + result = await wrapper.analyzer._predict_endpoint(audio_array) + inference_time = time.perf_counter() - inference_start_time + + # Calculate total processing time (from request receipt to response preparation) + total_time = time.perf_counter() - request_start_time + + log_msg = ( + f"Inference done result: {result['prediction']} " + f"probability: {result['probability']} time taken: {inference_time:.2f}s total: {total_time:.2f}s" + ) + if service_id: + log_msg += f" (service_id: {service_id})" + logger.debug(log_msg) + + # Ensure metrics section exists so client code can parse it consistently + metrics = result.get("metrics", {}) + # Overwrite / set the timing metrics explicitly + metrics["inference_time"] = inference_time + metrics["total_time"] = total_time + result["metrics"] = metrics + + logger.debug(f"Result for service_id: {service_id} is: {result}") + + # Add service_id to result for potential client use + if service_id: + result["service_id"] = service_id + + # Persist audio in background so it doesn't block the response. + background_tasks.add_task( + save_wav_file, + audio_array, + result.get("prediction", 0), + result.get("probability", 0), + service_id, + sample_rate, + ) + return result + + +@app.get("/") +async def root(): + """Health-check endpoint.""" + return {"message": "Smart Turn API is running"} + + +# ---------------------------------------------------------------------------- +# WebSocket endpoint +# ---------------------------------------------------------------------------- + + +@app.websocket("/ws") +async def websocket_endpoint(ws: WebSocket): + """Handle streaming Smart Turn requests over WebSocket. + + Each incoming binary message must be a NumPy-serialized float32 array (as + produced by ``np.save``). A JSON-formatted prediction (identical to the + ``/raw`` HTTP endpoint) is sent back as a text message. + """ + + # Extract optional secret key from headers (during handshake) + expected_secret = os.getenv("SMART_TURN_HTTP_SERVICE_KEY") + if expected_secret: + provided_secret = ws.headers.get("X-API-Key") + if provided_secret != expected_secret: + await ws.close(code=4401, reason="Unauthorized") + return + + # Accept the websocket connection and log it + await ws.accept() + + service_id = ws.headers.get("X-Service-Context") + sample_rate_str = ws.headers.get("X-Sample-Rate") + sample_rate = int(sample_rate_str) if sample_rate_str else 16000 + logger.debug( + f"WebSocket connection accepted from service_id: {service_id}, sample_rate: {sample_rate}" + ) + + # ------------------------------------------------------------------ + # Tunables – consider moving to env vars for ops control + # ------------------------------------------------------------------ + connection_timeout = 120.0 # Seconds of inactivity before timing out + MAX_BINARY_SIZE = int( + os.getenv("SMART_TURN_MAX_PAYLOAD", 10 * 1024 * 1024) # 10MB max message size + ) + + # Track background tasks so we can cancel them on disconnect + background_tasks = set() # Track background tasks for cleanup + + try: + logger.debug("Entering WebSocket message loop") + while True: + data = None # Initialize data for each iteration + try: + logger.debug("Waiting for WebSocket message…") + + # Create receive task to handle timeout properly + receive_task = asyncio.create_task(ws.receive()) + try: + msg = await asyncio.wait_for( + receive_task, timeout=connection_timeout + ) + except asyncio.TimeoutError: + # Cancel the receive task to prevent it from running in background + receive_task.cancel() + try: + await receive_task + except asyncio.CancelledError: + pass + + logger.warning( + f"WebSocket connection timeout for service_id: {service_id}" + ) + try: + await ws.close(code=1001, reason="Connection timeout") + except Exception as e: + logger.debug(f"Error closing WebSocket after timeout: {e}") + break + except WebSocketDisconnect as e: + logger.debug(f"WebSocket client disconnected: {e}") + break + + # Validate message structure + if not isinstance(msg, dict): + logger.error(f"Unexpected message type: {type(msg)}") + break + + # Handle disconnect message explicitly + if msg.get("type") == "websocket.disconnect": + logger.debug("Client sent disconnect frame") + break + + data = None + # Binary frame + if "bytes" in msg and msg["bytes"] is not None: + data = msg["bytes"] + logger.debug( + "Received WebSocket audio payload (%d bytes)", len(data) + ) + + except WebSocketDisconnect as e: + logger.debug(f"WebSocket client disconnected: {e}") + break + except Exception as e: + logger.error(f"Error in WebSocket loop: {e}") + break + + if data is None: + continue + + request_start_time = time.perf_counter() + + # -------------------------------------------------------------- + # Basic validation & secure deserialisation + # -------------------------------------------------------------- + if len(data) > MAX_BINARY_SIZE: + logger.warning("Received payload exceeding maximum allowed size") + await ws.send_text('{"error": "Payload too large"}') + continue + + # Deserialize NumPy array (pickle disabled for security) + try: + audio_array = np.load(io.BytesIO(data), allow_pickle=False) + except Exception as exc: + error_msg = f"Invalid NumPy payload: {exc}" + if service_id: + error_msg += f" (service_id: {service_id})" + # Send error response with proper error handling + if ws.application_state == WebSocketState.CONNECTED: + try: + await ws.send_text(f'{{"error": "{error_msg}"}}') + except Exception as e: + logger.error(f"Failed to send error message: {e}") + continue + + wrapper = _analyzer_wrapper + if wrapper is None: + logger.error("Analyzer not initialized; closing connection") + if ws.application_state == WebSocketState.CONNECTED: + await ws.close(code=1011, reason="Analyzer not ready") + break + + async with wrapper.lock: + inference_start_time = time.perf_counter() + result = await wrapper.analyzer._predict_endpoint(audio_array) + inference_time = time.perf_counter() - inference_start_time + + # Timing metrics + total_time = time.perf_counter() - request_start_time + metrics = result.get("metrics", {}) + metrics["inference_time"] = inference_time + metrics["total_time"] = total_time + result["metrics"] = metrics + + logger.debug(f"Result for service_id: {service_id} is: {result}") + + if service_id: + result["service_id"] = service_id + + # Send result with proper error handling + try: + if ws.application_state == WebSocketState.CONNECTED: + await ws.send_text(json.dumps(result)) + else: + logger.warning( + f"Cannot send result - WebSocket not connected for service_id: {service_id}" + ) + break + except WebSocketDisconnect: + logger.debug( + f"Client disconnected while sending result for service_id: {service_id}" + ) + break + except Exception as e: + logger.error(f"Failed to send result: {e}") + break + + # Save audio in the background so that it doesn't block streaming + task = asyncio.create_task( + save_wav_file( + audio_array, + result.get("prediction", 0), + result.get("probability", 0), + service_id, + sample_rate, + ) + ) + # Track task and remove when done + background_tasks.add(task) + task.add_done_callback(background_tasks.discard) + + except WebSocketException as exc: + logger.error(f"WebSocket error: {exc}") + finally: + # Cancel any remaining background tasks + for task in background_tasks: + if not task.done(): + task.cancel() + # Wait for all background tasks to complete or be cancelled + if background_tasks: + await asyncio.gather(*background_tasks, return_exceptions=True) + + # Attempt a graceful close if it's not already closed + if ws.application_state == WebSocketState.CONNECTED: + try: + await ws.close() + except Exception as exc: + # Socket is probably already closed; log and ignore + logger.debug(f"WebSocket already closed: {exc}") diff --git a/api/services/smart_turn/websocket_smart_turn.py b/api/services/smart_turn/websocket_smart_turn.py new file mode 100644 index 0000000..0383cfa --- /dev/null +++ b/api/services/smart_turn/websocket_smart_turn.py @@ -0,0 +1,314 @@ +"""Smart-Turn analyzer that talks to a FastAPI WebSocket endpoint. + +This analyzer keeps a persistent WebSocket connection alive so that the TCP/TLS +handshake and HTTP upgrade happen only once per call session. Each speech +segment is sent as a single binary message containing the NumPy-serialized +float32 array, and a JSON reply is expected in return. + +Rewritten to use the websockets library for simplified connection management. +""" + +from __future__ import annotations + +import asyncio +import io +import json +import random +import time +from typing import Any, Dict, Optional + +import numpy as np +import websockets +from loguru import logger +from pipecat.audio.turn.smart_turn.base_smart_turn import ( + BaseSmartTurn, + SmartTurnTimeoutException, +) + + +class WebSocketSmartTurnAnalyzer(BaseSmartTurn): + """End-of-turn analyzer that sends audio via a persistent WebSocket.""" + + def __init__( + self, + *, + url: str, + headers: Optional[Dict[str, str]] = None, + service_context: Optional[Any] = None, + **kwargs, + ) -> None: + super().__init__(**kwargs) + self._url = url.rstrip("/") + self._headers = headers or {} + self._service_context = service_context + + # WebSocket connection + self._ws: Optional[websockets.WebSocketClientProtocol] = None + self._ws_lock = asyncio.Lock() + + # Connection management + self._connection_task: Optional[asyncio.Task] = None + self._reconnect_delay = 1.0 + self._max_reconnect_delay = 30.0 + self._closing = False + self._connection_closed_event = asyncio.Event() + + # Connection health monitoring + self._last_successful_request = 0.0 + self._connection_attempts = 0 + + # Start connection manager in background + try: + loop = asyncio.get_event_loop() + if loop.is_running(): + self._connection_task = loop.create_task(self._connection_manager()) + except RuntimeError: + logger.debug( + "No running loop at object creation time. Connection will be opened lazily on first use." + ) + + def _serialize_array(self, audio_array: np.ndarray) -> bytes: + """Serialize numpy array to bytes.""" + buffer = io.BytesIO() + np.save(buffer, audio_array) + return buffer.getvalue() + + async def _connection_manager(self) -> None: + """Manages WebSocket connection lifecycle with automatic reconnection.""" + while not self._closing: + try: + # Establish connection + await self._establish_connection() + + # Reset reconnect delay on successful connection + self._reconnect_delay = 1.0 + self._connection_attempts = 0 + + # Wait for connection close event + self._connection_closed_event.clear() + await self._connection_closed_event.wait() + + logger.debug("WebSocket connection closed") + + except Exception as e: + logger.error(f"Connection manager error: {e}") + + finally: + # Clean up connection + if self._ws: + try: + await self._ws.close() + except: + pass + self._ws = None + + if not self._closing: + # Exponential backoff for reconnection + self._connection_attempts += 1 + delay = min( + self._reconnect_delay + * (2 ** min(self._connection_attempts - 1, 5)), + self._max_reconnect_delay, + ) + # Add jitter to avoid thundering herd + delay += random.uniform(0, 0.5) + logger.info( + f"Reconnecting in {delay:.1f} seconds (attempt {self._connection_attempts})" + ) + await asyncio.sleep(delay) + + async def _establish_connection(self) -> None: + """Establish a new WebSocket connection with retry logic.""" + logger.debug("Establishing new WebSocket connection to Smart-Turn service...") + + # Prepare headers + extra_headers = dict(self._headers) + if self._service_context is not None: + extra_headers["X-Service-Context"] = str(self._service_context) + + # _init_sample_rate is being set in the constructor, which we should + # use in case self._sample_rate is not set yet. The actual _sample_rate + # is being set in the set_sample_rate() method + # but in case of WebSocketSmartTurnAnalyzer, we establish the websocket connection + # during __init__() and won't see the set_sample_rate until later. So, lets + # user the _init_sample_rate instead + _sample_rate = self._sample_rate or self._init_sample_rate + + if _sample_rate > 0: + extra_headers["X-Sample-Rate"] = str(_sample_rate) + + max_attempts = 3 + for attempt in range(max_attempts): + try: + # Add jitter to prevent thundering herd + if attempt > 0: + jitter = 0.1 * attempt + await asyncio.sleep(jitter) + + # Connect with websockets library + self._ws = await websockets.connect( + self._url, + extra_headers=extra_headers, + ping_interval=5.0, # let websockets send pings every 5s + ping_timeout=3.0, # fail fast if no pong in 3s + close_timeout=10, + max_size=10 * 1024 * 1024, # 10MB max message size + ) + + logger.info("WebSocket connection established successfully") + return + + except asyncio.CancelledError: + raise + except Exception as exc: + logger.warning( + f"Failed to establish WebSocket (attempt {attempt + 1}/{max_attempts}): {exc}" + ) + if attempt == max_attempts - 1: + raise + await asyncio.sleep(0.5 * (attempt + 1)) + + async def _ensure_ws(self) -> websockets.WebSocketClientProtocol: + """Return a connected WebSocket, waiting for connection if necessary.""" + async with self._ws_lock: + # If connection manager isn't running, start it + if not self._connection_task or self._connection_task.done(): + self._connection_task = asyncio.create_task(self._connection_manager()) + + # Wait for connection with timeout + start_time = time.time() + max_wait_time = 10.0 + + while not self._closing: + if self._ws: + return self._ws + + elapsed = time.time() - start_time + if elapsed > max_wait_time: + raise Exception( + f"Timeout waiting for WebSocket connection after {max_wait_time}s" + ) + + await asyncio.sleep(0.1) + + if self._closing: + raise Exception("Analyzer is closing") + + raise Exception("Failed to establish WebSocket connection") + + async def _predict_endpoint(self, audio_array: np.ndarray) -> Dict[str, Any]: + """Send audio and await JSON response via WebSocket.""" + data_bytes = self._serialize_array(audio_array) + + try: + # Ensure we have a connection + ws = await self._ensure_ws() + + # Send data + try: + await ws.send(data_bytes) + except Exception as e: + logger.error(f"Failed to send data: {e}") + self._connection_closed_event.set() + return { + "prediction": 0, + "probability": 0.0, + "metrics": {"inference_time": 0.0, "total_time": 0.0}, + } + + # Wait for response + start_time = time.time() + while True: + remaining_timeout = self._params.stop_secs - (time.time() - start_time) + if remaining_timeout <= 0: + raise SmartTurnTimeoutException( + f"Request exceeded {self._params.stop_secs} seconds." + ) + + try: + # Receive message with timeout + message = await asyncio.wait_for( + ws.recv(), timeout=min(remaining_timeout, 0.5) + ) + + # Handle text messages (JSON responses) + if isinstance(message, str): + try: + result = json.loads(message) + + # Skip ping/pong messages + if result.get("type") in ["ping", "pong"]: + continue + + # Validate prediction response + if "prediction" not in result: + if "type" in result: + continue + else: + logger.error( + "Invalid response format from Smart-Turn service" + ) + return { + "prediction": 0, + "probability": 0.0, + "metrics": { + "inference_time": 0.0, + "total_time": 0.0, + }, + } + + self._last_successful_request = time.time() + return result + + except json.JSONDecodeError as exc: + logger.error( + f"Smart turn service returned invalid JSON: {exc}" + ) + raise + else: + logger.error(f"Unexpected message type: {type(message)}") + + except asyncio.TimeoutError: + continue + except websockets.exceptions.ConnectionClosed: + logger.warning("WebSocket connection closed during prediction") + self._connection_closed_event.set() + return { + "prediction": 0, + "probability": 0.0, + "metrics": {"inference_time": 0.0, "total_time": 0.0}, + } + + except SmartTurnTimeoutException: + raise + except Exception as exc: + logger.error(f"Smart turn prediction failed over WebSocket: {exc}") + self._connection_closed_event.set() + return { + "prediction": 0, + "probability": 0.0, + "metrics": {"inference_time": 0.0, "total_time": 0.0}, + } + + async def close(self): + """Asynchronously close the WebSocket.""" + self._closing = True + self._connection_closed_event.set() + + async with self._ws_lock: + # Cancel tasks + if self._connection_task and not self._connection_task.done(): + self._connection_task.cancel() + try: + await self._connection_task + except asyncio.CancelledError: + pass + + # Close WebSocket + if self._ws: + try: + await self._ws.close() + except: + pass + finally: + self._ws = None diff --git a/api/services/storage.py b/api/services/storage.py new file mode 100644 index 0000000..6a5f407 --- /dev/null +++ b/api/services/storage.py @@ -0,0 +1,112 @@ +from loguru import logger + +from api.constants import ( + ENABLE_AWS_S3, + MINIO_ACCESS_KEY, + MINIO_BUCKET, + MINIO_ENDPOINT, + MINIO_PUBLIC_ENDPOINT, + MINIO_SECRET_KEY, + MINIO_SECURE, + S3_BUCKET, + S3_REGION, +) +from api.enums import StorageBackend + +from .filesystem import BaseFileSystem, MinioFileSystem, S3FileSystem + + +def get_storage_for_backend(backend: str) -> BaseFileSystem: + """Get storage instance for a specific backend enum. + + Maps StorageBackend enum codes to actual storage implementations: + - Code 1 (S3): AWS S3 via S3FileSystem + - Code 2 (MINIO): MinIO via MinioFileSystem + """ + # Code 2: MinIO implementation (local/OSS deployments) + if backend == StorageBackend.MINIO.value: + endpoint = MINIO_ENDPOINT + # Auto-detect public endpoint: + # - If MINIO_PUBLIC_ENDPOINT is set, use it (for custom domains/IPs) + # - If running in Docker and endpoint is "minio:9000", use "localhost:9000" for local dev + # - Otherwise, use the endpoint as-is (both containers and browser can reach it) + public_endpoint = MINIO_PUBLIC_ENDPOINT + if not public_endpoint: + # Auto-detect based on endpoint + if endpoint.startswith("minio:"): + # Docker internal endpoint detected, assume local development + public_endpoint = endpoint.replace("minio:", "localhost:") + logger.info( + f"Auto-detected local development: using {public_endpoint} for public access" + ) + elif endpoint.startswith("host.docker.internal:"): + # Docker Desktop special DNS detected, use localhost for browser access + public_endpoint = endpoint.replace( + "host.docker.internal:", "localhost:" + ) + logger.info( + f"Auto-detected Docker Desktop: using {public_endpoint} for public access" + ) + else: + # Already using a public endpoint (localhost:9000 or domain:9000) + public_endpoint = endpoint + + access_key = MINIO_ACCESS_KEY + secret_key = MINIO_SECRET_KEY + bucket = MINIO_BUCKET + secure = MINIO_SECURE + logger.info( + f"Initializing {backend} storage at {endpoint} (public: {public_endpoint}) with bucket '{bucket}'" + ) + return MinioFileSystem( + endpoint=endpoint, + access_key=access_key, + secret_key=secret_key, + bucket_name=bucket, + secure=secure, + public_endpoint=public_endpoint, + ) + + # Code 1: AWS S3 implementation (cloud deployments) + elif backend == StorageBackend.S3.value: + if not S3_BUCKET: + raise ValueError( + "S3_BUCKET environment variable is required when using S3 storage" + ) + bucket = S3_BUCKET + region = S3_REGION + logger.info( + f"Initializing {backend} storage with bucket '{bucket}' in region '{region}'" + ) + return S3FileSystem(bucket, region) + + # Future backend implementations can be added here: + # elif backend == StorageBackend.GCS: # Code 3 + # return GoogleCloudFileSystem(...) + # elif backend == StorageBackend.AZURE: # Code 4 + # return AzureBlobFileSystem(...) + + else: + raise ValueError(f"Unknown storage backend: {backend}") + + +def get_current_storage_backend() -> StorageBackend: + """Get the current storage backend enum.""" + return StorageBackend.get_current_backend() + + +# Create a single storage instance at module load time +_backend = StorageBackend.get_current_backend() +logger.info( + f"Initializing storage backend: {_backend.name} (value: {_backend.value}, ENABLE_AWS_S3={ENABLE_AWS_S3})" +) +storage_fs = get_storage_for_backend(_backend.value) + + +# For backward compatibility, keep get_storage() function +def get_storage() -> BaseFileSystem: + """Get the module-level storage instance. + + Deprecated: Use 'from api.services.storage import storage_fs' instead. + """ + return storage_fs diff --git a/api/services/telephony/__init__.py b/api/services/telephony/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/services/telephony/ari_client.py b/api/services/telephony/ari_client.py new file mode 100644 index 0000000..a2a2a39 --- /dev/null +++ b/api/services/telephony/ari_client.py @@ -0,0 +1,765 @@ +""" +Dynamic ARI client that generates methods from Swagger/OpenAPI specification. +Pure asyncio implementation without anyio dependencies. +""" + +import asyncio +import json +from dataclasses import dataclass, field +from typing import Callable, Dict, List, Optional +from urllib.parse import urljoin + +import aiohttp +from loguru import logger + + +class SwaggerMethod: + """Represents a Swagger API method.""" + + def __init__( + self, client: "AsyncARIClient", path: str, method: str, operation: dict + ): + self.client = client + self.path = path + self.http_method = method.upper() + self.operation = operation + self.operation_id = operation.get("operationId", "") + self.parameters = operation.get("parameters", []) + self.description = operation.get("description", "") + + def _build_path(self, **kwargs) -> str: + """Build the actual path by substituting path parameters.""" + path = self.path + + # Replace path parameters like {channelId} with actual values + for param in self.parameters: + # Swagger spec uses 'paramType' not 'in' + if param.get("paramType", param.get("in")) == "path": + param_name = param["name"] + if param_name in kwargs: + path = path.replace(f"{{{param_name}}}", str(kwargs[param_name])) + + return path + + def _build_params(self, **kwargs) -> dict: + """Extract query parameters from kwargs.""" + params = {} + + for param in self.parameters: + # Swagger spec uses 'paramType' not 'in' + if param.get("paramType", param.get("in")) == "query": + param_name = param["name"] + if param_name in kwargs: + params[param_name] = kwargs[param_name] + + return params + + def _build_body(self, **kwargs) -> dict: + """Extract body parameters from kwargs.""" + body = {} + + for param in self.parameters: + # Swagger 1.2 uses 'paramType' = 'body' for body parameters + if param.get("paramType", param.get("in")) == "body": + param_name = param["name"] + if param_name in kwargs: + # In Swagger 1.2, body param is usually the whole body + return ( + kwargs[param_name] + if isinstance(kwargs[param_name], dict) + else {param_name: kwargs[param_name]} + ) + + return body + + async def __call__(self, **kwargs): + """Execute the API method.""" + path = self._build_path(**kwargs) + params = self._build_params(**kwargs) + + # Check if there's a body parameter defined in the spec + body_data = self._build_body(**kwargs) + + # If no body param in spec, use remaining kwargs for body (backward compat) + if not body_data: + # Remove path and query parameters from kwargs (leaving body params) + # Swagger spec uses 'paramType' not 'in' + path_param_names = { + p["name"] + for p in self.parameters + if p.get("paramType", p.get("in")) == "path" + } + query_param_names = { + p["name"] + for p in self.parameters + if p.get("paramType", p.get("in")) == "query" + } + body_param_names = { + p["name"] + for p in self.parameters + if p.get("paramType", p.get("in")) == "body" + } + body_data = { + k: v + for k, v in kwargs.items() + if k not in path_param_names + and k not in query_param_names + and k not in body_param_names + } + + # Debug logging for externalMedia + if "externalMedia" in path: + logger.debug( + f"externalMedia call - method: {self.http_method}, path: {path}, params: {params}" + ) + + if self.http_method == "GET": + return await self.client.api_get(path, **params) + elif self.http_method == "POST": + return await self.client.api_post( + path, json_data=body_data if body_data else None, **params + ) + elif self.http_method == "PUT": + return await self.client.api_put( + path, json_data=body_data if body_data else None, **params + ) + elif self.http_method == "DELETE": + return await self.client.api_delete(path, **params) + else: + raise ValueError(f"Unsupported HTTP method: {self.http_method}") + + +class ResourceAPI: + """Represents a resource API (like channels, bridges, etc.).""" + + def __init__(self, client: "AsyncARIClient", resource_name: str): + self.client = client + self.resource_name = resource_name + self._methods = {} + + def add_method(self, method_name: str, swagger_method: SwaggerMethod): + """Add a method to this resource.""" + self._methods[method_name] = swagger_method + + def __getattr__(self, name): + """Dynamically return methods.""" + if name in self._methods: + return self._methods[name] + raise AttributeError(f"'{self.resource_name}' has no method '{name}'") + + +@dataclass +class Channel: + """Channel model with dynamic method support.""" + + id: str + name: str = "" + state: str = "" + caller: Dict[str, str] = field(default_factory=dict) + connected: Dict[str, str] = field(default_factory=dict) + accountcode: str = "" + dialplan: Dict[str, str] = field(default_factory=dict) + creationtime: str = "" + language: str = "en" + + # Store reference to client for method calls + _client: Optional["AsyncARIClient"] = field(default=None, repr=False) + + @classmethod + def from_dict(cls, data: dict, client=None) -> "Channel": + """Create Channel from API response.""" + channel = cls( + id=data.get("id", ""), + name=data.get("name", ""), + state=data.get("state", ""), + caller=data.get("caller", {}), + connected=data.get("connected", {}), + accountcode=data.get("accountcode", ""), + dialplan=data.get("dialplan", {}), + creationtime=data.get("creationtime", ""), + language=data.get("language", "en"), + _client=client, + ) + return channel + + async def continueInDialplan( + self, + context: str = None, + extension: str = None, + priority: int = None, + label: str = None, + ): + """Continue channel in dialplan.""" + if not self._client: + raise RuntimeError("Channel not associated with a client") + + params = {"channelId": self.id} + if context: + params["context"] = context + if extension: + params["extension"] = extension + if priority is not None: + params["priority"] = priority + if label: + params["label"] = label + + # The ARI API method is named 'continueInDialplan' + channels_api = self._client.channels + if hasattr(channels_api, "continueInDialplan"): + await channels_api.continueInDialplan(**params) + else: + # Fallback to direct API call + await self._client.api_post(f"/channels/{self.id}/continue", **params) + + async def hangup(self, reason: str = "normal"): + """Hangup the channel.""" + if not self._client: + raise RuntimeError("Channel not associated with a client") + await self._client.channels.hangup(channelId=self.id, reason=reason) + + async def answer(self): + """Answer the channel.""" + if not self._client: + raise RuntimeError("Channel not associated with a client") + await self._client.channels.answer(channelId=self.id) + + async def getChannelVar(self, variable: str): + """Get a channel variable.""" + if not self._client: + raise RuntimeError("Channel not associated with a client") + return await self._client.channels.getChannelVar( + channelId=self.id, variable=variable + ) + + +@dataclass +class Bridge: + """Bridge model with dynamic method support.""" + + id: str + technology: str = "" + bridge_type: str = "" + bridge_class: str = "" + creator: str = "" + name: str = "" + channels: List[str] = field(default_factory=list) + + _client: Optional["AsyncARIClient"] = field(default=None, repr=False) + + @classmethod + def from_dict(cls, data: dict, client=None) -> "Bridge": + """Create Bridge from API response.""" + return cls( + id=data.get("id", ""), + technology=data.get("technology", ""), + bridge_type=data.get("bridge_type", ""), + bridge_class=data.get("bridge_class", ""), + creator=data.get("creator", ""), + name=data.get("name", ""), + channels=data.get("channels", []), + _client=client, + ) + + async def addChannel(self, channel: str): + """Add channel to bridge.""" + if not self._client: + raise RuntimeError("Bridge not associated with a client") + await self._client.bridges.addChannel(bridgeId=self.id, channel=channel) + + async def removeChannel(self, channel: str): + """Remove channel from bridge.""" + if not self._client: + raise RuntimeError("Bridge not associated with a client") + await self._client.bridges.removeChannel(bridgeId=self.id, channel=channel) + + async def destroy(self): + """Destroy the bridge.""" + if not self._client: + raise RuntimeError("Bridge not associated with a client") + await self._client.bridges.destroy(bridgeId=self.id) + + +class AsyncARIClient: + """ARI client that dynamically generates methods from Swagger spec.""" + + def __init__(self, base_url: str, username: str, password: str, app: str): + self.base_url = base_url.rstrip("/") + self.username = username + self.password = password + self.app = app + + # REST API URL + self.api_url = self.base_url.replace("ws://", "http://").replace( + "wss://", "https://" + ) + + # WebSocket URL + self.ws_url = ( + f"{self.base_url}/ari/events?app={app}&api_key={username}:{password}" + ) + + # Session and WebSocket + self._session: Optional[aiohttp.ClientSession] = None + self._websocket: Optional[aiohttp.ClientWebSocketResponse] = None + self._running = False + + # Event handling + self._event_handlers: Dict[str, List[Callable]] = {} + self._event_queue: asyncio.Queue = asyncio.Queue(maxsize=1000) + + # Resource APIs (will be populated from Swagger) + self.channels: Optional[ResourceAPI] = None + self.bridges: Optional[ResourceAPI] = None + self.endpoints: Optional[ResourceAPI] = None + self.recordings: Optional[ResourceAPI] = None + self.sounds: Optional[ResourceAPI] = None + self.playbacks: Optional[ResourceAPI] = None + self.asterisk: Optional[ResourceAPI] = None + self.applications: Optional[ResourceAPI] = None + self.deviceStates: Optional[ResourceAPI] = None + self.mailboxes: Optional[ResourceAPI] = None + + # Swagger spec cache + self._swagger_spec: Optional[dict] = None + + async def connect(self): + """Connect to ARI and load Swagger spec.""" + # Create HTTP session + auth = aiohttp.BasicAuth(self.username, self.password) + self._session = aiohttp.ClientSession(auth=auth) + + try: + # Load Swagger spec and generate methods + await self._load_swagger_spec() + + # Connect WebSocket + self._websocket = await self._session.ws_connect( + self.ws_url, heartbeat=30, autoping=True + ) + self._running = True + logger.info(f"Connected to ARI at {self.ws_url}") + + except Exception as e: + await self._session.close() + raise Exception(f"Failed to connect to ARI: {e}") + + async def _load_swagger_spec(self): + """Load Swagger spec and generate dynamic methods.""" + spec_loaded = False + try: + # Get Swagger spec from ARI + url = f"{self.api_url}/ari/api-docs/resources.json" + async with self._session.get(url) as resp: + resp.raise_for_status() + resources = await resp.json() + + # Store the spec + self._swagger_spec = resources + + # Create resource APIs + for api_info in resources.get("apis", []): + resource_path = api_info["path"] + + # Fix the path - remove .{format} and add proper prefix + resource_path = resource_path.replace(".{format}", ".json") + + # Load detailed spec for this resource + # The resource_path already contains /api-docs/, so we just need the base URL + url = f"{self.api_url}/ari{resource_path}" + try: + async with self._session.get(url) as resp: + resp.raise_for_status() + spec = await resp.json() + + self._process_swagger_spec(spec) + spec_loaded = True + except Exception as e: + logger.warning(f"Failed to load spec for {resource_path}: {e}") + + if spec_loaded: + logger.info("Loaded Swagger spec and generated dynamic methods") + else: + raise Exception("No individual specs could be loaded") + + except Exception as e: + logger.warning(f"Failed to load Swagger spec, using fallback methods: {e}") + self._create_fallback_methods() + + def _process_swagger_spec(self, spec: dict): + """Process a Swagger spec and create dynamic methods.""" + # basePath is available in spec but not currently used + + for api in spec.get("apis", []): + path = api["path"] + + for operation in api.get("operations", []): + self._create_method_from_operation(path, operation) + + def _create_method_from_operation(self, path: str, operation: dict): + """Create a method from a Swagger operation.""" + # Swagger spec uses 'httpMethod' not 'method' + method = operation.get("httpMethod", operation.get("method", "GET")) + operation_id = operation.get("nickname", "") + + if not operation_id: + return + + # Determine resource from path (e.g., /channels/{channelId} -> channels) + path_parts = path.strip("/").split("/") + if path_parts: + resource_name = path_parts[0] + + # Create resource API if it doesn't exist + if not hasattr(self, resource_name) or getattr(self, resource_name) is None: + setattr(self, resource_name, ResourceAPI(self, resource_name)) + + resource_api = getattr(self, resource_name) + + # Extract method name from operation ID + # e.g., "channels_continue" -> "continue_" + # or "channels_get" -> "get" + method_name = operation_id + if method_name.startswith(resource_name + "_"): + method_name = method_name[len(resource_name) + 1 :] + + # Handle special cases + if method_name == "continue": + method_name = "continue_" # Avoid Python keyword + + # Create and add the method + swagger_method = SwaggerMethod(self, path, method, operation) + resource_api.add_method(method_name, swagger_method) + + def _create_fallback_methods(self): + """Create fallback methods if Swagger spec is not available.""" + # Create basic resource APIs + self.channels = ResourceAPI(self, "channels") + self.bridges = ResourceAPI(self, "bridges") + + # Add essential channel methods + self.channels.add_method( + "get", + SwaggerMethod( + self, + "/channels/{channelId}", + "GET", + { + "operationId": "get", + "parameters": [{"name": "channelId", "in": "path"}], + }, + ), + ) + self.channels.add_method( + "hangup", + SwaggerMethod( + self, + "/channels/{channelId}", + "DELETE", + { + "operationId": "hangup", + "parameters": [ + {"name": "channelId", "in": "path"}, + {"name": "reason", "in": "query"}, + ], + }, + ), + ) + self.channels.add_method( + "answer", + SwaggerMethod( + self, + "/channels/{channelId}/answer", + "POST", + { + "operationId": "answer", + "parameters": [{"name": "channelId", "in": "path"}], + }, + ), + ) + self.channels.add_method( + "continueInDialplan", + SwaggerMethod( + self, + "/channels/{channelId}/continue", + "POST", + { + "operationId": "continueInDialplan", + "parameters": [ + {"name": "channelId", "in": "path"}, + {"name": "context", "in": "query"}, + {"name": "extension", "in": "query"}, + {"name": "priority", "in": "query"}, + {"name": "label", "in": "query"}, + ], + }, + ), + ) + self.channels.add_method( + "externalMedia", + SwaggerMethod( + self, + "/channels/externalMedia", + "POST", + { + "operationId": "externalMedia", + "parameters": [ + {"name": "channelId", "in": "query"}, # Add channelId parameter + {"name": "app", "in": "query"}, + {"name": "external_host", "in": "query"}, + {"name": "format", "in": "query"}, + {"name": "encapsulation", "in": "query"}, + {"name": "transport", "in": "query"}, + {"name": "connection_type", "in": "query"}, + {"name": "direction", "in": "query"}, + ], + }, + ), + ) + self.channels.add_method( + "getChannelVar", + SwaggerMethod( + self, + "/channels/{channelId}/variable", + "GET", + { + "operationId": "getChannelVar", + "parameters": [ + {"name": "channelId", "in": "path"}, + {"name": "variable", "in": "query"}, + ], + }, + ), + ) + + # Add essential bridge methods + self.bridges.add_method( + "get", + SwaggerMethod( + self, + "/bridges/{bridgeId}", + "GET", + { + "operationId": "get", + "parameters": [{"name": "bridgeId", "in": "path"}], + }, + ), + ) + self.bridges.add_method( + "create", + SwaggerMethod( + self, + "/bridges", + "POST", + { + "operationId": "create", + "parameters": [ + {"name": "type", "in": "query"}, + {"name": "name", "in": "query"}, + ], + }, + ), + ) + self.bridges.add_method( + "addChannel", + SwaggerMethod( + self, + "/bridges/{bridgeId}/addChannel", + "POST", + { + "operationId": "addChannel", + "parameters": [ + {"name": "bridgeId", "in": "path"}, + {"name": "channel", "in": "query"}, + ], + }, + ), + ) + self.bridges.add_method( + "removeChannel", + SwaggerMethod( + self, + "/bridges/{bridgeId}/removeChannel", + "POST", + { + "operationId": "removeChannel", + "parameters": [ + {"name": "bridgeId", "in": "path"}, + {"name": "channel", "in": "query"}, + ], + }, + ), + ) + self.bridges.add_method( + "destroy", + SwaggerMethod( + self, + "/bridges/{bridgeId}", + "DELETE", + { + "operationId": "destroy", + "parameters": [{"name": "bridgeId", "in": "path"}], + }, + ), + ) + + async def disconnect(self): + """Disconnect from ARI.""" + self._running = False + + if self._websocket: + await self._websocket.close() + + if self._session: + await self._session.close() + + async def run(self): + """Main event loop.""" + if not self._websocket: + raise RuntimeError("Not connected") + + processor_task = asyncio.create_task(self._process_events()) + + try: + async for msg in self._websocket: + if msg.type == aiohttp.WSMsgType.TEXT: + try: + event = json.loads(msg.data) + # Wrap channel/bridge objects + if "channel" in event and isinstance(event["channel"], dict): + event["channel"] = Channel.from_dict(event["channel"], self) + if "bridge" in event and isinstance(event["bridge"], dict): + event["bridge"] = Bridge.from_dict(event["bridge"], self) + await self._event_queue.put(event) + except json.JSONDecodeError: + logger.error(f"Invalid JSON: {msg.data}") + + elif msg.type == aiohttp.WSMsgType.ERROR: + logger.error(f"WebSocket error: {self._websocket.exception()}") + break + + elif msg.type == aiohttp.WSMsgType.CLOSED: + logger.info("WebSocket closed") + break + + finally: + self._running = False + processor_task.cancel() + await asyncio.gather(processor_task, return_exceptions=True) + + async def _process_events(self): + """Process events from queue.""" + while self._running: + try: + event = await asyncio.wait_for(self._event_queue.get(), timeout=1.0) + event_type = event.get("type") + if event_type: + await self._dispatch_event(event_type, event) + except asyncio.TimeoutError: + continue + except asyncio.CancelledError: + break + except Exception as e: + logger.error(f"Error processing event: {e}") + + async def _dispatch_event(self, event_type: str, event: dict): + """Dispatch event to handlers.""" + handlers = self._event_handlers.get(event_type, []) + if handlers: + logger.debug( + f"AsyncARIClient: Dispatching {event_type} to {len(handlers)} handlers" + ) + for i, handler in enumerate(handlers): + try: + logger.debug( + f" AsyncARIClient: Calling {event_type} handler {i + 1}/{len(handlers)}" + ) + await handler(event) + except Exception as e: + logger.error(f"Handler {i + 1} error for {event_type}: {e}") + + def on_event(self, event_type: str, handler: Callable): + """Register event handler.""" + if event_type not in self._event_handlers: + self._event_handlers[event_type] = [] + logger.debug( + f"AsyncARIClient: Registering handler for {event_type}. Current count: {len(self._event_handlers.get(event_type, []))}" + ) + self._event_handlers[event_type].append(handler) + logger.debug( + f"AsyncARIClient: After registration, {event_type} handler count: {len(self._event_handlers[event_type])}" + ) + + # REST API methods + async def api_get(self, path: str, **params) -> dict: + """GET request.""" + # Ensure path starts with /ari if not already + if not path.startswith("/ari"): + path = f"/ari{path}" if path.startswith("/") else f"/ari/{path}" + url = urljoin(self.api_url, path.lstrip("/")) + async with self._session.get(url, params=params) as resp: + resp.raise_for_status() + data = await resp.json() + # Wrap known objects + if isinstance(data, list): + # Handle lists of channels/bridges + if "/channels" in path: + return [ + Channel.from_dict(item, self) + if isinstance(item, dict) + else item + for item in data + ] + elif "/bridges" in path: + return [ + Bridge.from_dict(item, self) if isinstance(item, dict) else item + for item in data + ] + return data + elif isinstance(data, dict): + if "/channels/" in path and "id" in data: + return Channel.from_dict(data, self) + elif "/bridges/" in path and "id" in data: + return Bridge.from_dict(data, self) + return data + + async def api_post(self, path: str, json_data: dict = None, **params) -> dict: + """POST request.""" + # Ensure path starts with /ari if not already + if not path.startswith("/ari"): + path = f"/ari{path}" if path.startswith("/") else f"/ari/{path}" + url = urljoin(self.api_url, path.lstrip("/")) + async with self._session.post(url, json=json_data, params=params) as resp: + resp.raise_for_status() + if resp.content_length and resp.content_length > 0: + data = await resp.json() + # Wrap known objects + if "id" in data and "state" in data: + return Channel.from_dict(data, self) + elif "id" in data and "bridge_type" in data: + return Bridge.from_dict(data, self) + return data + return {} + + async def api_put(self, path: str, json_data: dict = None, **params) -> dict: + """PUT request.""" + # Ensure path starts with /ari if not already + if not path.startswith("/ari"): + path = f"/ari{path}" if path.startswith("/") else f"/ari/{path}" + url = urljoin(self.api_url, path.lstrip("/")) + async with self._session.put(url, json=json_data, params=params) as resp: + resp.raise_for_status() + if resp.content_length and resp.content_length > 0: + return await resp.json() + return {} + + async def api_delete(self, path: str, **params) -> dict: + """DELETE request.""" + # Ensure path starts with /ari if not already + if not path.startswith("/ari"): + path = f"/ari{path}" if path.startswith("/") else f"/ari/{path}" + url = urljoin(self.api_url, path.lstrip("/")) + async with self._session.delete(url, params=params) as resp: + resp.raise_for_status() + if resp.content_length and resp.content_length > 0: + return await resp.json() + return {} diff --git a/api/services/telephony/ari_client_manager.py b/api/services/telephony/ari_client_manager.py new file mode 100644 index 0000000..17e4614 --- /dev/null +++ b/api/services/telephony/ari_client_manager.py @@ -0,0 +1,446 @@ +""" +ARI Client Manager using the new Async ARI Client. +Drop-in replacement for the existing ari_client_manager.py. +""" + +import asyncio +import json +import os +import random +import time +from typing import Awaitable, Callable, Optional + +import httpx +from loguru import logger + +from api.services.telephony.ari_client import AsyncARIClient, Channel +from api.services.telephony.ari_client_singleton import ari_client_singleton + + +class ARIClientManager: + """Manages ARI client connection and event handling. + + This is a compatibility wrapper around AsyncARIClient. + """ + + def __init__( + self, + ari_client: AsyncARIClient, + app_endpoint: str, + _conn_ctx=None, # Not used with AsyncARIClient + ): + """Initialize the ARI client manager. + + Parameters + ---------- + ari_client: AsyncARIClient + The connected ARI client. + app_endpoint: str + The app endpoint for external media. + _conn_ctx: + Not used, kept for compatibility. + """ + self._ari_client = ari_client + self._app_endpoint = app_endpoint + self._conn_ctx = _conn_ctx # Not used but kept for compatibility + self._start_handlers = [] + self._end_handlers = [] + self._running = False + self._handlers_registered = False # Track if handlers are registered + + def register_start_handler( + self, handler: Callable[[Channel, dict], Awaitable[None]] + ): + """Register a handler for StasisStart events.""" + logger.debug( + f"Registering start handler. Current count: {len(self._start_handlers)}" + ) + self._start_handlers.append(handler) + logger.debug(f"After registration, handler count: {len(self._start_handlers)}") + + def register_end_handler(self, handler: Callable[[str], Awaitable[None]]): + """Register a handler for StasisEnd events.""" + self._end_handlers.append(handler) + + async def update_client(self, new_client: AsyncARIClient, new_conn_ctx=None): + """Update to a new client (for reconnection).""" + logger.info("Updating ARI client for reconnection") + self._ari_client = new_client + self._conn_ctx = new_conn_ctx + # Clear old event handlers from the client before re-registering + # to prevent duplicate handler registrations + if hasattr(new_client, "_event_handlers"): + new_client._event_handlers.clear() + # Re-register event handlers + self._register_handlers() + + def _register_handlers(self): + """Register event handlers with the client.""" + logger.debug( + f"_register_handlers called. Start handlers count: {len(self._start_handlers)}, End handlers count: {len(self._end_handlers)}" + ) + + async def on_stasis_start(event): + """Handle StasisStart events.""" + channel = event.get("channel") + + # Only handle PJSIP and SIP channels + if channel and hasattr(channel, "name"): + if not ( + channel.name.startswith("PJSIP") or channel.name.startswith("SIP") + ): + logger.debug( + f"Ignoring StasisStart for non-SIP channel: {channel.name}" + ) + return + + # Log the event + logger.info( + f"StasisStart event for channel: {channel.id if channel else 'unknown'}" + ) + + # Extract call context variables + call_context_vars = {} + try: + # Get channel variables + var_result = await channel.getChannelVar( + variable="LOCAL_ARI_CALL_VARIABLES" + ) + call_context_vars = json.loads(var_result.get("value", "{}")) + + # Try to get phone number and fetch additional data + phone_number = call_context_vars.get("phone") + ari_data_uri = os.getenv("ARI_DATA_FETCHING_URI") + + if phone_number and ari_data_uri: + try: + start_time = time.time() + fetch_url = f"{ari_data_uri}{phone_number}" + + async with httpx.AsyncClient() as client: + response = await client.get(fetch_url, timeout=10.0) + response.raise_for_status() + + # Parse the response - get the latest line if multiple lines + response_text = response.text.strip() + if response_text: + lines = response_text.split("\n") + latest_line = lines[-1].strip() + + if latest_line: + # Parse the pipe-delimited data + fields = latest_line.split("|") + field_names = [ + "status", + "user", + "vendor_lead_code", + "source_id", + "list_id", + "gmt_offset_now", + "phone_code", + "phone_number", + "title", + "first_name", + "middle_initial", + "last_name", + "address1", + "address2", + "address3", + "city", + "state", + "province", + "postal_code", + "country_code", + "gender", + "date_of_birth", + "alt_phone", + "email", + "security_phrase", + "comments", + "called_count", + "last_local_call_time", + "rank", + "owner", + "entry_list_id", + "lead_id", + ] + + # Map fields to call_context_vars + for i, field_name in enumerate(field_names): + try: + call_context_vars[field_name] = fields[i] + except IndexError: + logger.error( + f"channelID: {channel.id} IndexError while accessing fields {i}" + ) + + elapsed_time = time.time() - start_time + logger.info( + f"channelID: {channel.id} Successfully fetched user details for phone: {phone_number} in {elapsed_time:.3f} seconds" + ) + + except Exception as e: + elapsed_time = time.time() - start_time + logger.error( + f"channelID: {channel.id} Failed to fetch user details from ARI_DATA_FETCHING_URI after {elapsed_time:.3f} seconds: {e}" + ) + + logger.debug( + f"channelID: {channel.id} call context variables: {call_context_vars}" + ) + + except ( + KeyError, + AttributeError, + httpx.HTTPStatusError, + json.JSONDecodeError, + ) as e: + logger.debug(f"could not find variable LOCAL_ARI_CALL_VARIABLES: {e}") + + # Call all registered handlers with call_context_vars + logger.debug( + f"Calling {len(self._start_handlers)} start handlers for channel {channel.id}" + ) + for i, handler in enumerate(self._start_handlers): + try: + logger.debug( + f" Calling start handler {i + 1}/{len(self._start_handlers)}" + ) + await handler(channel, call_context_vars) + except Exception as e: + logger.error(f"Error in StasisStart handler {i + 1}: {e}") + + async def on_stasis_end(event): + """Handle StasisEnd events.""" + channel = event.get("channel", {}) + channel_id = channel.id if hasattr(channel, "id") else channel.get("id", "") + + # # Only handle PJSIP and SIP channels + # if channel: + # channel_name = channel.name if hasattr(channel, 'name') else channel.get("name", "") + # if channel_name and not (channel_name.startswith("PJSIP") or channel_name.startswith("SIP")): + # logger.debug(f"Ignoring StasisEnd for non-SIP channel: {channel_name}") + # return + + logger.info(f"StasisEnd event for channel: {channel_id}") + + # Call all registered handlers + for handler in self._end_handlers: + try: + await handler(channel_id) + except Exception as e: + logger.error(f"Error in StasisEnd handler: {e}") + + # Register with the AsyncARIClient + logger.debug(f"Registering StasisStart and StasisEnd with AsyncARIClient") + self._ari_client.on_event("StasisStart", on_stasis_start) + self._ari_client.on_event("StasisEnd", on_stasis_end) + logger.debug(f"Event handlers registered with client") + + async def run(self): + """Run the event loop. + + The actual WebSocket handling is done by AsyncARIClient. + This just registers handlers and waits. + """ + logger.debug("Running ARIClientManager") + self._running = True + # Register handlers only once, on first run + if not self._handlers_registered: + self._register_handlers() + self._handlers_registered = True + + try: + # The AsyncARIClient.run() method handles WebSocket + # We don't call it here as it's called by the supervisor + while self._running: + await asyncio.sleep(1) + except asyncio.CancelledError: + logger.debug(f"ARIClientManager run cancelled") + self._running = False + raise + finally: + self._running = False + + +class _ARIClientManagerSupervisor: + """Supervisor that maintains ARI connection with automatic reconnection. + + This replaces the asyncari-based supervisor with AsyncARIClient. + """ + + # Reconnection parameters + _INITIAL_BACKOFF = 1 # Start with 1 second + _MAX_BACKOFF = 60 # Max 60 seconds between retries + + def __init__( + self, + on_channel_start: Callable[[Channel, dict], Awaitable[None]], + on_channel_end: Optional[Callable[[str], Awaitable[None]]] = None, + ): + self._on_channel_start = on_channel_start + self._on_channel_end = on_channel_end + self._shutting_down = False + + async def start(self): + """Start the supervisor and maintain connection.""" + await self._runner() + + async def stop(self): + """Stop the supervisor.""" + logger.info("Stopping ARI Client Manager Supervisor") + self._shutting_down = True + + async def __aenter__(self): + """Async context manager entry.""" + asyncio.create_task(self.start()) + return self + + async def __aexit__(self, *args): + """Async context manager exit.""" + await self.stop() + + async def _runner(self): + """Main reconnection loop using AsyncARIClient.""" + backoff = self._INITIAL_BACKOFF + ari_client_manager: Optional[ARIClientManager] = None + + while not self._shutting_down: + client = None + + try: + logger.debug("Going to connect with ARI") + + # Get configuration from environment + base_url = os.getenv("ARI_STASIS_ENDPOINT") + username = os.getenv("ARI_STASIS_USER") + password = os.getenv("ARI_STASIS_USER_PASSWORD") + app = os.getenv("ARI_STASIS_APP_NAME") + + # Convert HTTP to WebSocket URL + ws_url = base_url.replace("http://", "ws://").replace( + "https://", "wss://" + ) + + # Create and connect the AsyncARIClient + client = AsyncARIClient(ws_url, username, password, app) + await client.connect() + + # Update the singleton with the new client + ari_client_singleton.set_client(client) + + if ari_client_manager is None: + # First connection - create new manager + logger.debug("Creating new ARIClientManager (first connection)") + ari_client_manager = ARIClientManager( + client, + os.getenv("ARI_STASIS_APP_ENDPOINT"), + _conn_ctx=None, # Not needed with AsyncARIClient + ) + logger.debug(f"Registering handlers with new manager") + ari_client_manager.register_start_handler(self._on_channel_start) + if self._on_channel_end: + ari_client_manager.register_end_handler(self._on_channel_end) + else: + # Reconnection - update existing manager + logger.debug("Updating existing ARIClientManager (reconnection)") + # Don't re-register start and end handlers as they're already registered + await ari_client_manager.update_client(client, None) + + logger.info("Connected to ARI — supervisor entering event loop") + + # Reset backoff after successful connection + backoff = self._INITIAL_BACKOFF + + # Create tasks for both the client and manager + client_task = asyncio.create_task(client.run()) + manager_task = asyncio.create_task(ari_client_manager.run()) + + # Wait for either to complete (likely due to disconnection) + done, pending = await asyncio.wait( + {client_task, manager_task}, return_when=asyncio.FIRST_COMPLETED + ) + + # Cancel the other task + for task in pending: + task.cancel() + try: + await task + except asyncio.CancelledError: + pass + + except asyncio.CancelledError: + # Check if we're shutting down + if self._shutting_down or asyncio.current_task().cancelled(): + logger.debug("ARI supervisor task cancelled — shutting down") + break + + # Otherwise it's a transient connection error + logger.warning("ARI connection lost due to CancelledError — will retry") + + # Force a context switch to reset event loop state + await asyncio.sleep(0) + + except Exception as exc: + # Check if we're shutting down + if self._shutting_down or asyncio.current_task().cancelled(): + logger.warning("Exiting due to shutdown during exception handling") + break + + # Log and retry + logger.warning(f"ARI connection failed or lost: {exc!r} - will retry") + + finally: + # Disconnect client if connected + if client: + try: + await client.disconnect() + except Exception as e: + logger.warning(f"Error disconnecting client: {e}") + # Clear the singleton when disconnecting + ari_client_singleton.clear() + + # Check if we're shutting down before sleeping + if self._shutting_down: + logger.debug("Exiting reconnection loop due to shutdown") + break + + # Exponential back-off with jitter before the next attempt + jitter = random.uniform(0.1, backoff) + logger.debug(f"Waiting {jitter:.1f} seconds before reconnecting...") + + # Sleep with proper event loop handling + await asyncio.sleep(0) # Yield control first + await asyncio.sleep(jitter) + + logger.debug(f"Finished sleeping for {jitter} seconds") + backoff = min(backoff * 2, self._MAX_BACKOFF) + logger.debug(f"New backoff value: {backoff}, continuing loop...") + + +async def setup_ari_client_supervisor( + on_channel_start: Callable[[Channel, dict], Awaitable[None]], + on_channel_end: Callable[[str], Awaitable[None]] | None = None, +) -> "_ARIClientManagerSupervisor | None": + """Start a background supervisor that keeps the ARI connection alive. + + This is a drop-in replacement for the asyncari-based function. + Uses AsyncARIClient instead of asyncari. + + If the *ENABLE_ARI_STASIS* environment variable is not set to ``"true"`` + (case-insensitive) the function returns ``None`` and no supervisor is + launched. + """ + + if os.getenv("ENABLE_ARI_STASIS", "false").lower() != "true": + logger.info("ARI Stasis integration disabled via environment variable") + return None + + logger.info("Starting ARI Client Supervisor with AsyncARIClient") + + supervisor = _ARIClientManagerSupervisor(on_channel_start, on_channel_end) + + # Start the supervisor in the background + asyncio.create_task(supervisor.start()) + + return supervisor diff --git a/api/services/telephony/ari_client_singleton.py b/api/services/telephony/ari_client_singleton.py new file mode 100644 index 0000000..8ebc5fe --- /dev/null +++ b/api/services/telephony/ari_client_singleton.py @@ -0,0 +1,50 @@ +"""Singleton holder for the current ARI client instance. + +This module provides a thread-safe singleton that holds the current +ARI client instance, which can be updated during reconnections. +""" + +from typing import Optional + +from loguru import logger + +from api.services.telephony.ari_client import AsyncARIClient + + +class ARIClientSingleton: + """Singleton holder for the current ARI client instance.""" + + _instance: Optional["ARIClientSingleton"] = None + _client: Optional[AsyncARIClient] = None + + def __new__(cls): + """Ensure only one instance exists.""" + if cls._instance is None: + cls._instance = super().__new__(cls) + return cls._instance + + def set_client(self, client: AsyncARIClient) -> None: + """Update the ARI client instance. + + Args: + client: The new ARI client instance. + """ + self._client = client + logger.info("ARI client singleton updated with new client instance") + + def get_client(self) -> Optional[AsyncARIClient]: + """Get the current ARI client instance. + + Returns: + The current ARI client, or None if not set. + """ + return self._client + + def clear(self) -> None: + """Clear the current client instance.""" + self._client = None + logger.info("ARI client singleton cleared") + + +# Global singleton instance +ari_client_singleton = ARIClientSingleton() diff --git a/api/services/telephony/ari_manager.py b/api/services/telephony/ari_manager.py new file mode 100644 index 0000000..57ad64c --- /dev/null +++ b/api/services/telephony/ari_manager.py @@ -0,0 +1,748 @@ +"""Standalone ARI Manager Service for distributed architecture. + +This service maintains the single WebSocket connection to Asterisk ARI +and distributes events to multiple FastAPI workers via Redis pub/sub. + +ARIManager creates an instance of ARIClientSupervisor and registers the callbacks +on_channel_start and on_channel_end. It is responsible to take in caller_channel +and setup ARIManagerConnection, i.e create bridge for externalMedia. + +""" + +import asyncio +import json +import os +import signal +import time +from typing import Dict, Optional + +from api.constants import REDIS_URL + +# --- Add logging setup before importing loguru --- +from api.logging_config import setup_logging +from api.services.telephony.stasis_event_protocol import ( + BaseWorkerToARIManagerCommand, + DisconnectCommand, + RedisChannels, + RedisKeys, + SocketClosedCommand, + TransferCommand, + parse_command, +) + +logging_queue_listener = setup_logging() + +import redis.asyncio as aioredis +import redis.exceptions +from loguru import logger +from pipecat.utils.enums import EndTaskReason + +from api.services.telephony.ari_client import Channel +from api.services.telephony.ari_client_manager import ( + ARIClientManager, + setup_ari_client_supervisor, +) +from api.services.telephony.ari_manager_connection import ARIManagerConnection + + +class ARIManager: + """Manages ARI connection and distributes events to workers via Redis.""" + + def __init__(self, redis_client: aioredis.Redis): + self.redis = redis_client + self.stasis_manager: Optional[ARIClientManager] = None + self._running = False + self._ari_client_supervisor = None + self._tasks: Dict[str, asyncio.Task] = {} + self._pubsubs: Dict[ + str, aioredis.client.PubSub + ] = {} # Track pubsub connections + self._active_channels: set[str] = ( + set() + ) # Track channels managed by this instance + self._port_range = range(4000, 5000, 2) # Even ports only + self._channel_connections: Dict[ + str, ARIManagerConnection + ] = {} # Track connections by channel ID + self._channel_disposed: Dict[str, bool] = {} # Track channel disposed state + self._socket_closed: Dict[str, bool] = {} # Track socket closed state + self._active_workers: list[str] = [] # Cached list of active workers + self._worker_discovery_task: Optional[asyncio.Task] = None + self._channel_to_worker: Dict[str, str] = {} # Map channel to worker + + async def on_channel_start(self, caller_channel: Channel, call_context_vars: dict): + """Handle new channel from ARIClientManager with atomically allocated port.""" + try: + # Atomically allocate port for this channel (prevents race conditions) + port = await self._get_and_allocate_port_atomic(caller_channel.id) + + # Create connection with allocated port + connection = ARIManagerConnection( + caller_channel=caller_channel, + host=os.getenv("ARI_STASIS_APP_ENDPOINT"), + port=port, + ) + + # Track the connection + self._channel_connections[caller_channel.id] = connection + # Initialize channel state flags + self._channel_disposed[caller_channel.id] = False + self._socket_closed[caller_channel.id] = False + + # Handle the connection + await self._on_stasis_call(connection, call_context_vars) + + except Exception as e: + logger.exception(f"Error handling new channel {caller_channel.id}: {e}") + # Release port if allocation failed + await self._release_port_for_channel(caller_channel.id) + + async def on_channel_end(self, channel_id: str): + """Handle channel end notification from ARIClientManager.""" + logger.info(f"channelID: {channel_id} Received channel end notification") + + # Find the connection for this channel + connection = None + caller_channel_id = None + + # Check if it's a caller channel + if channel_id in self._channel_connections: + connection = self._channel_connections[channel_id] + caller_channel_id = channel_id + else: + # TODO: We are currently not handling StasisEnd on ExternalMedia + for conn_channel_id, conn in self._channel_connections.items(): + if conn.em_channel_id and conn.em_channel_id == channel_id: + logger.debug( + f"channelID: {channel_id} ExternalMedia StasisEnd - Ignoring" + ) + # connection = conn + # caller_channel_id = conn_channel_id + break + + # Publish StasisEnd event to worker immediately + if connection and caller_channel_id: + worker_id = self._get_worker_for_channel(caller_channel_id) + event = { + "type": "stasis_end", + "channel_id": caller_channel_id, + "reason": EndTaskReason.USER_HANGUP.value, + } + await self.redis.publish( + RedisChannels.worker_events(worker_id), json.dumps(event) + ) + logger.info(f"channelID: {channel_id} Published StasisEnd event") + + # Notify the connection about channel end + await connection.notify_channel_end() + + # Mark channel as disposed + if caller_channel_id in self._channel_disposed: + self._channel_disposed[caller_channel_id] = True + # Check if both flags are set to cleanup + await self._check_and_cleanup_channel(caller_channel_id) + + async def _on_stasis_call( + self, connection: ARIManagerConnection, call_context_vars: dict + ): + """Handle new Stasis call by setting up the connection and publishing to Redis.""" + try: + # Setup the connection (create bridge and external media) + await connection.setup_call() + + if not connection.is_connected(): + logger.warning("Connection is not connected, skipping") + return + + # Extract all necessary information after bridge is created + channel_id = connection.caller_channel_id + em_channel_id = connection.em_channel_id + bridge_id = connection.bridge_id + + # Track this channel as active + self._active_channels.add(channel_id) + + # Create event with all connection details + event = { + "type": "stasis_start", + "channel_id": channel_id, + "caller_channel_id": channel_id, + "em_channel_id": em_channel_id, + "bridge_id": bridge_id, + "local_addr": list(connection.local_addr), + "remote_addr": list(connection.remote_addr), + "call_context_vars": call_context_vars, + } + + # Select worker using round-robin + worker_id = await self._select_worker() + if worker_id is None: + logger.error(f"channelID: {channel_id} No active workers available") + await connection.disconnect() + return + + # Track channel to worker mapping + self._channel_to_worker[channel_id] = worker_id + channel = RedisChannels.worker_events(worker_id) + + # Publish event to specific worker + await self.redis.publish(channel, json.dumps(event)) + logger.info( + f"channelID: {channel_id} Published stasis_start event to worker {worker_id}" + ) + + # Start monitoring for commands from workers + self._tasks[channel_id] = asyncio.create_task( + self._monitor_channel_commands(channel_id, connection) + ) + + except Exception as e: + logger.exception(f"Error handling stasis call: {e}") + + async def _get_and_allocate_port_atomic(self, channel_id: str) -> int: + """Atomically find and allocate an available port using Redis Lua script. + + This method prevents race conditions by using a Lua script that executes + atomically in Redis, ensuring that two concurrent calls cannot allocate + the same port. + """ + # Lua script for atomic port allocation + lua_script = """ + local port_range_start = tonumber(ARGV[1]) + local port_range_end = tonumber(ARGV[2]) + local port_range_step = tonumber(ARGV[3]) + local channel_id = KEYS[1] + local timestamp = ARGV[4] + + -- Check if channel already has a port allocated + local existing_port = redis.call('HGET', 'channel_ports', channel_id) + if existing_port then + return tonumber(existing_port) + end + + -- Find first available port + for port = port_range_start, port_range_end, port_range_step do + local port_str = tostring(port) + local exists = redis.call('HEXISTS', 'port_channels', port_str) + if exists == 0 then + -- Atomically allocate the port + redis.call('HSET', 'channel_ports', channel_id, port) + redis.call('HSET', 'port_channels', port_str, channel_id) + redis.call('HSET', 'channel_allocation_time', channel_id, timestamp) + return port + end + end + + return -1 -- No ports available + """ + + # Execute the Lua script with port range parameters + port_start = min(self._port_range) + port_end = max(self._port_range) + port_step = self._port_range.step + timestamp = int(time.time()) + + port = await self.redis.eval( + lua_script, + 1, # Number of keys + channel_id, # KEYS[1] + port_start, # ARGV[1] + port_end, # ARGV[2] + port_step, # ARGV[3] + timestamp, # ARGV[4] + ) + + if port == -1: + # If all ports exhausted, clean up orphaned ports and retry + await self._cleanup_orphaned_ports() + + # Retry after cleanup + port = await self.redis.eval( + lua_script, 1, channel_id, port_start, port_end, port_step, timestamp + ) + + if port == -1: + raise RuntimeError( + "No available ports in configured range after cleanup" + ) + + logger.debug(f"Atomically allocated port {port} for channel {channel_id}") + return port + + async def _release_port_for_channel(self, channel_id: str): + """Atomically release port when channel ends. + + Uses a Lua script to ensure all cleanup operations happen atomically, + preventing partial cleanup or race conditions during release. + """ + lua_script = """ + local channel_id = KEYS[1] + + -- Get the port allocated to this channel + local port = redis.call('HGET', 'channel_ports', channel_id) + + if port then + -- Atomically clean up all related entries + redis.call('HDEL', 'channel_ports', channel_id) + redis.call('HDEL', 'port_channels', port) + redis.call('HDEL', 'channel_allocation_time', channel_id) + return port + end + + return nil + """ + + port = await self.redis.eval(lua_script, 1, channel_id) + + if port: + logger.debug(f"Atomically released port {port} for channel {channel_id}") + else: + logger.debug(f"No port was allocated for channel {channel_id}") + + async def _discover_workers(self): + """Periodically discover active workers from Redis.""" + try: + while self._running: + try: + # Get all worker IDs from the set + worker_ids = await self.redis.smembers(RedisKeys.workers_set()) + + # Filter to only active workers + active_workers = [] + for worker_id in worker_ids: + worker_id = ( + worker_id.decode() + if isinstance(worker_id, bytes) + else worker_id + ) + worker_key = RedisKeys.worker_active(worker_id) + worker_data = await self.redis.get(worker_key) + + if worker_data: + try: + data = json.loads(worker_data) + # Only include workers that are ready (not draining) + if data.get("status") == "ready": + active_workers.append(worker_id) + except json.JSONDecodeError: + logger.warning(f"Invalid worker data for {worker_id}") + + # Update the cached list atomically + self._active_workers = active_workers + logger.info(f"Discovered {len(active_workers)} active workers") + + except Exception as e: + logger.error(f"Error discovering workers: {e}") + + # Check every 5 seconds + await asyncio.sleep(5) + + except asyncio.CancelledError: + logger.debug("Worker discovery task cancelled") + + async def _select_worker(self) -> Optional[str]: + """Select a worker using round-robin.""" + if not self._active_workers: + return None + + # Use Redis to maintain round-robin index across restarts + try: + index = await self.redis.incr(RedisKeys.round_robin_index()) + worker_index = (index - 1) % len(self._active_workers) + return self._active_workers[worker_index] + except Exception as e: + logger.error(f"Error selecting worker: {e}") + # Fallback to first worker if Redis operation fails + return self._active_workers[0] if self._active_workers else None + + def _get_worker_for_channel(self, channel_id: str) -> str: + """Get the assigned worker for a channel (for sending commands).""" + # Return the worker ID that was assigned to this channel + return self._channel_to_worker.get(channel_id, "") + + async def _monitor_channel_commands( + self, channel_id: str, connection: ARIManagerConnection + ): + """Listen for commands from workers for this channel.""" + # TODO: Not sure if its a good idea to monitor command for every channel + # using pubsub. What happens if there are more number of calls than number + # of tcp connections redis can support? We can do something similar to + # Campaign Orchestrator, where we can subscribe to one channel and have + # commands for every channel there. + command_channel = RedisChannels.channel_commands(channel_id) + pubsub = None + + try: + pubsub = self.redis.pubsub() + await pubsub.subscribe(command_channel) + + # Store the pubsub connection for cleanup + self._pubsubs[channel_id] = pubsub + + logger.debug(f"channelID: {channel_id} Monitoring commands for channel") + + async for message in pubsub.listen(): + if message["type"] == "message": + try: + command = parse_command(message["data"]) + if command: + await self._handle_worker_command( + channel_id, command, connection + ) + else: + logger.warning( + f"Failed to parse command for {channel_id}: {message['data']}" + ) + except Exception as e: + logger.exception( + f"Error handling command for {channel_id}: {e}" + ) + + except asyncio.CancelledError: + logger.debug(f"channelID: {channel_id} Command monitor cancelled") + raise # Re-raise to maintain proper cancellation semantics + except (ConnectionError, redis.exceptions.ConnectionError) as e: + # We close the pubsub before cancelling the task. So, the code + # flow will arrive here + pass + except Exception as e: + logger.exception(f"Error in command monitor for {channel_id}: {e}") + + async def _handle_worker_command( + self, + channel_id: str, + command: BaseWorkerToARIManagerCommand, + connection: ARIManagerConnection, + ): + """Execute commands from workers.""" + if isinstance(command, DisconnectCommand): + logger.info( + f"channelID: {channel_id} Worker requested disconnect: {command.reason}" + ) + await connection.disconnect(command.reason) + + elif isinstance(command, TransferCommand): + logger.info(f"channelID: {channel_id} Worker requested transfer") + await connection.transfer(command.context) + + elif isinstance(command, SocketClosedCommand): + logger.info(f"channelID: {channel_id} Worker notified socket closed") + + # Mark socket as closed + if channel_id in self._socket_closed: + self._socket_closed[channel_id] = True + + # Release port immediately + await self._release_port_for_channel(channel_id) + + # Check if both flags are set to cleanup + await self._check_and_cleanup_channel(channel_id) + else: + logger.warning( + f"channelID: {channel_id} Received unknown command: {command}" + ) + + async def _check_and_cleanup_channel(self, channel_id: str): + """Check if both flags are set and cleanup channel if so.""" + channel_disposed = self._channel_disposed.get(channel_id, False) + socket_closed = self._socket_closed.get(channel_id, False) + + logger.debug( + f"channelID: {channel_id} Check cleanup - disposed: {channel_disposed}, socket_closed: {socket_closed}" + ) + + if channel_disposed and socket_closed: + # Remove from active channels and connections + self._active_channels.discard(channel_id) + self._channel_connections.pop(channel_id, None) + + # Close pubsub connection first (before cancelling task) + if channel_id in self._pubsubs: + pubsub = self._pubsubs[channel_id] + try: + command_channel = RedisChannels.channel_commands(channel_id) + await pubsub.unsubscribe(command_channel) + await pubsub.aclose() + logger.debug( + f"channelID: {channel_id} Closed pubsub connection in cleanup" + ) + except Exception as e: + logger.warning(f"Error closing pubsub for {channel_id}: {e}") + finally: + del self._pubsubs[channel_id] + + # Cancel command monitor task + if channel_id in self._tasks: + task = self._tasks[channel_id] + if not task.done(): + # Task is still running, cancel it + task.cancel() + try: + # Wait for task to complete + await task + logger.debug( + f"channelID: {channel_id} Task completed after cancel" + ) + except asyncio.CancelledError: + logger.debug( + f"channelID: {channel_id} Task cancelled successfully" + ) + except Exception as e: + logger.warning( + f"channelID: {channel_id} Task raised exception: {e}" + ) + else: + # Task already completed + logger.debug( + f"channelID: {channel_id} Monitor task already completed" + ) + try: + # Still await to get any exception that might have occurred + await task + except Exception as e: + logger.warning( + f"channelID: {channel_id} Completed task had exception: {e}" + ) + + del self._tasks[channel_id] + + # Clean up the flag tracking + self._channel_disposed.pop(channel_id, None) + self._socket_closed.pop(channel_id, None) + + logger.info(f"channelID: {channel_id} Completed cleanup of all resources") + + async def _cleanup_orphaned_ports(self): + """Clean up ports from previous ungraceful shutdowns.""" + try: + # Get all channel-port mappings + channel_ports = await self.redis.hgetall("channel_ports") + if not channel_ports: + return + + logger.info( + f"Found {len(channel_ports)} existing port allocations, checking for orphans..." + ) + + cleaned = 0 + current_time = int(time.time()) + max_age_seconds = 3600 # 1 hour + + # On startup, we can safely assume any existing allocations are orphaned + # since this is a fresh instance with no active channels yet + if not self._active_channels: + # Clean up all existing allocations on startup + for channel_id, port in channel_ports.items(): + allocation_time = await self.redis.hget( + "channel_allocation_time", channel_id + ) + age_str = "" + if allocation_time: + age = current_time - int(allocation_time) + age_str = f" (aged {age}s)" + + await self._release_port_for_channel(channel_id) + logger.info( + f"Cleaned up orphaned port {port} for channel {channel_id}{age_str}" + ) + cleaned += 1 + else: + # During runtime, only clean up channels not being tracked + for channel_id, port in channel_ports.items(): + if channel_id not in self._active_channels: + # Check allocation age + allocation_time = await self.redis.hget( + "channel_allocation_time", channel_id + ) + if allocation_time: + age = current_time - int(allocation_time) + if age > max_age_seconds: + # Too old, clean up regardless + await self._release_port_for_channel(channel_id) + logger.info( + f"Cleaned up stale port {port} for channel {channel_id} (aged {age}s)" + ) + cleaned += 1 + continue + + # Not tracked by this instance, might be orphaned + # For safety, only clean up if reasonably old (5 minutes) + if ( + allocation_time + and (current_time - int(allocation_time)) > 300 + ): + await self._release_port_for_channel(channel_id) + logger.info( + f"Cleaned up orphaned port {port} for untracked channel {channel_id}" + ) + cleaned += 1 + + if cleaned > 0: + logger.info(f"Cleaned up {cleaned} orphaned port allocations") + + except Exception as e: + logger.exception(f"Error during orphaned port cleanup: {e}") + + async def _periodic_cleanup(self): + """Periodically clean up orphaned ports.""" + cleanup_interval = 1800 # 30 minutes + + while self._running: + try: + await asyncio.sleep(cleanup_interval) + if self._running: # Check again after sleep + logger.info("Running periodic orphaned port cleanup...") + await self._cleanup_orphaned_ports() + except asyncio.CancelledError: + logger.debug("Periodic cleanup task cancelled") + break + except Exception as e: + logger.exception(f"Error in periodic cleanup: {e}") + + async def run(self): + """Main run loop for ARI Manager.""" + self._running = True + + # Setup ARI connection with supervisor + try: + self._ari_client_supervisor = await setup_ari_client_supervisor( + self.on_channel_start, self.on_channel_end + ) + if not self._ari_client_supervisor: + logger.error("Failed to setup ARI connection") + return + + # Start worker discovery task + self._worker_discovery_task = asyncio.create_task(self._discover_workers()) + + # Wait a moment for initial worker discovery + await asyncio.sleep(1) + + logger.info( + f"ARI Manager started with {len(self._active_workers)} active workers" + ) + + # Clean up any orphaned ports from previous runs + await self._cleanup_orphaned_ports() + + # Start periodic cleanup task + cleanup_task = asyncio.create_task(self._periodic_cleanup()) + + # Keep running until shutdown + while self._running: + await asyncio.sleep(1) + + logger.debug("ARIManager._running is false. Will cleanup and shutdown") + + # Cancel cleanup task + cleanup_task.cancel() + try: + await cleanup_task + except asyncio.CancelledError: + pass + + except Exception as e: + logger.exception(f"ARI Manager error: {e}") + finally: + if self._ari_client_supervisor: + await self._ari_client_supervisor.close() + logger.info("ARI Manager stopped") + + async def shutdown(self): + """Graceful shutdown.""" + logger.info("Shutting down ARI Manager...") + + # Close supervisor first to prevent reconnection attempts + if self._ari_client_supervisor: + await self._ari_client_supervisor.close() + + # Cancel worker discovery task + if self._worker_discovery_task: + self._worker_discovery_task.cancel() + try: + await self._worker_discovery_task + except asyncio.CancelledError: + pass + self._worker_discovery_task = None + + # Now set running to False + self._running = False + + # Clean up all active channel ports before shutting down + if self._active_channels: + logger.info(f"Cleaning up {len(self._active_channels)} active channels...") + for channel_id in list( + self._active_channels + ): # Copy to avoid modification during iteration + await self._release_port_for_channel(channel_id) + logger.info( + f"Released port for active channel {channel_id} during shutdown" + ) + self._active_channels.clear() + + # Clear flag tracking + self._channel_disposed.clear() + self._socket_closed.clear() + + # Cancel all monitoring tasks + for task in self._tasks.values(): + task.cancel() + + # Wait for tasks to complete + if self._tasks: + await asyncio.gather(*self._tasks.values(), return_exceptions=True) + + +async def main(): + """Main entry point for ARI Manager service.""" + # Setup Redis connection + redis = await aioredis.from_url(REDIS_URL, decode_responses=True) + + # Create and run manager + manager = ARIManager(redis) + + # Create a shutdown event for clean coordination + shutdown_event = asyncio.Event() + + # Setup signal handlers + loop = asyncio.get_event_loop() + + def signal_handler(signum): + logger.info(f"Received shutdown signal {signum}") + # Set the shutdown event which will trigger shutdown + shutdown_event.set() + + for sig in (signal.SIGTERM, signal.SIGINT): + loop.add_signal_handler(sig, lambda s=sig: signal_handler(s)) + + # Run manager with shutdown monitoring + manager_task = asyncio.create_task(manager.run()) + shutdown_task = asyncio.create_task(shutdown_event.wait()) + + try: + # Wait for either normal completion or shutdown signal + done, pending = await asyncio.wait( + [manager_task, shutdown_task], return_when=asyncio.FIRST_COMPLETED + ) + + # If shutdown was triggered, perform graceful shutdown + if shutdown_task in done: + await manager.shutdown() + # Cancel the manager task if still running + if manager_task in pending: + manager_task.cancel() + try: + await manager_task + except asyncio.CancelledError: + pass + finally: + await redis.aclose() + # --- Ensure Axiom logging listener is stopped gracefully --- + if logging_queue_listener is not None: + logging_queue_listener.stop() + + +if __name__ == "__main__": + # Configure logging + logger.add("logs/ari_manager.log", rotation="10 MB") + asyncio.run(main()) diff --git a/api/services/telephony/ari_manager_connection.py b/api/services/telephony/ari_manager_connection.py new file mode 100644 index 0000000..76e1100 --- /dev/null +++ b/api/services/telephony/ari_manager_connection.py @@ -0,0 +1,323 @@ +"""ARI-specific Stasis connection for use by ARI Manager. + +This connection has direct access to the ARI client and manages +the actual Asterisk channels, bridges, and RTP setup. +""" + +import json +import os +import uuid +from typing import Optional + +import httpx +from loguru import logger +from pipecat.utils.base_object import BaseObject + +from api.services.telephony.ari_client import AsyncARIClient, Bridge, Channel +from api.services.telephony.ari_client_singleton import ari_client_singleton + + +class ARIManagerConnection(BaseObject): + """ARI Manager's connection that directly controls Asterisk resources. + + This class is used only by the ARI Manager process and has full + access to the ARI client for creating bridges, channels, etc. + """ + + def __init__( + self, + caller_channel: Channel, + host: str, + port: int, + ) -> None: + """Initialize ARI Stasis connection. + + Args: + caller_channel: The caller's channel object. + host: Host address for RTP transport. + port: Port number for RTP transport. + """ + super().__init__() + + # External dependencies. + self._host: str = host + self._port: int = port + + # Store channel IDs instead of Channel objects to avoid stale references + self.caller_channel_id: str = caller_channel.id + self.em_channel_id: Optional[str] = None # externalMedia channel ID + + # Store bridge ID to avoid stale references after reconnection + self.bridge_id: Optional[str] = None + + # RTP addressing information + self.local_addr = ("0.0.0.0", port) + self.remote_addr = None + + # Internal state. + self._closed: bool = False + self._is_connected: bool = False + + def is_connected(self) -> bool: + """Check if the connection is established.""" + return self._is_connected and not self._closed + + @property + def _ari(self) -> Optional[AsyncARIClient]: + """Get the current ARI client from singleton.""" + return ari_client_singleton.get_client() + + async def _get_channel(self, channel_id: str) -> Optional[Channel]: + """Safely get a channel object by ID. + + Returns None if the channel doesn't exist or can't be fetched. + """ + if not channel_id: + return None + try: + # Get current client from singleton + client = self._ari + if not client: + logger.warning( + f"Cannot get channel {channel_id} - No ARI client available" + ) + return None + # Check if the session is still active + if not client._session or client._session.closed: + logger.warning( + f"Cannot get channel {channel_id} - ARI session is closed" + ) + return None + return await client.channels.get(channelId=channel_id) + except Exception as e: + logger.warning(f"Could not get channel {channel_id} - {e}") + return None + + async def _get_bridge(self, bridge_id: str) -> Optional[Bridge]: + """Safely get a bridge object by ID. + + Returns None if the bridge doesn't exist or can't be fetched. + """ + if not bridge_id: + return None + try: + # Get current client from singleton + client = self._ari + if not client: + logger.warning( + f"Cannot get bridge {bridge_id} - No ARI client available" + ) + return None + # Check if the session is still active + if not client._session or client._session.closed: + logger.warning(f"Cannot get bridge {bridge_id} - ARI session is closed") + return None + return await client.bridges.get(bridgeId=bridge_id) + except Exception as e: + logger.warning(f"Could not get bridge {bridge_id}: {e}") + return None + + async def _cleanup_resources(self): + """Clean up external media channel and bridge.""" + # Cleanup external media channel + try: + if self.em_channel_id: + em_channel = await self._get_channel(self.em_channel_id) + if em_channel: + await em_channel.hangup() + logger.debug( + f"channelID: {self.em_channel_id} Hung up external media" + ) + self.em_channel_id = None + except Exception as exc: + logger.warning( + f"Failed to hang-up externalMedia channel: {self.em_channel_id}" + f"Error: {exc}" + ) + + # Cleanup bridge + try: + if self.bridge_id: + bridge = await self._get_bridge(self.bridge_id) + if bridge: + await bridge.destroy() + logger.debug(f"bridgeID: {self.bridge_id} Destroyed bridge") + self.bridge_id = None + except Exception as exc: + logger.warning(f"Failed to destroy bridge: {self.bridge_id}Error: {exc}") + + async def _sync_call_data(self, call_transfer_context: dict): + """Sync call data to ARI_DATA_SYNCING_URI.""" + if not os.getenv("ARI_DATA_SYNCING_URI"): + return + + lead_id = call_transfer_context.get("lead_id") + status = call_transfer_context.get("disposition") + + # {'lead_id': '299154', 'disposition': 'VM', 'agent_name': 'Alex', 'decision_maker': 'False', 'employment': 'N/A', 'debts': 'N/A', 'number_of_credit_cards': 'N/A', 'time': '2025-08-07T13:16:02-04:00'} + + full_name = call_transfer_context.get("full_name", "") + phone = call_transfer_context.get("phone", "") + debts = call_transfer_context.get("debts", "") + employment = call_transfer_context.get("employment", "") + time = call_transfer_context.get("time", "") + + comment = f"Type:Qualified!NName:{full_name}!NPhone:{phone}!NDebts:{debts}!NCC:N/A!NDM:Yes!NEmployment:{employment}!NTime:{time}!NVendor Id:!NStatus:{status}" + + try: + if lead_id and status: + ari_data_uri = os.getenv("ARI_DATA_SYNCING_URI") + # Add URL params to the base URL + sync_url = f"{ari_data_uri}&lead_id={lead_id}&status={status}&comments={comment}" + + logger.debug( + f"channelID: {self.caller_channel_id} Syncing data to ARI_DATA_SYNCING_URI: {sync_url}" + ) + + async with httpx.AsyncClient() as client: + response = await client.post(sync_url, timeout=10.0) + response.raise_for_status() + logger.info( + f"channelID: {self.caller_channel_id} Successfully synced data for lead_id: {lead_id} with status: {status}" + ) + else: + logger.warning( + f"channelID: {self.caller_channel_id} Missing lead_id or status for syncing" + ) + except Exception as e: + logger.error( + f"channelID: {self.caller_channel_id} Failed to sync data to ARI_DATA_SYNCING_URI: {e}" + ) + + async def disconnect(self, reason: str): + """Instruct Asterisk to hang-up the call and perform cleanup.""" + if self._closed: + return + + # Lets mark it as closed so that when we receive StasisEnd, we don't + # try to cleanup resource again + self._closed = True + + # Clean up resources first + await self._cleanup_resources() + + try: + if self.caller_channel_id: + caller_channel = await self._get_channel(self.caller_channel_id) + if caller_channel: + logger.debug( + f"channelID: {self.caller_channel_id} Hanging up caller channel due to reason: {reason}" + ) + await caller_channel.hangup() + except Exception: + logger.exception("Failed to hangup caller channel") + + async def transfer(self, call_transfer_context: dict): + """Transfer the call by continuing in dialplan with extracted variables.""" + if self._closed: + return + + # Lets mark it as closed so that when we receive StasisEnd, we don't + # try to cleanup resource again + self._closed = True + + try: + # Clean up resources before transferring + await self._cleanup_resources() + + if self.caller_channel_id: + caller_channel = await self._get_channel(self.caller_channel_id) + if caller_channel: + logger.debug( + f"channelID: {self.caller_channel_id} User qualified, continuing in dialplan " + f"REMOTE_DISPO_CALL_VARIABLES: {json.dumps(call_transfer_context)}" + ) + + # Sync data to ARI_DATA_SYNCING_URI + await self._sync_call_data( + call_transfer_context=call_transfer_context + ) + + await caller_channel.continueInDialplan() + except Exception: + logger.exception("Failed to transfer caller channel") + + async def setup_call(self): + """Setup the bridge and external media channel. + + This must be called after initialization to establish the connection. + """ + await self._setup_call(self._host, self._port) + + async def _setup_call(self, host: str, port: int): + """Create externalMedia + bridge and notify that the call is connected.""" + try: + em_channel_id = str(uuid.uuid4()) + logger.debug( + f"channelID: {em_channel_id} Creating externalMedia channel on {host}:{port}" + ) + + client = self._ari + if not client: + raise RuntimeError("No ARI client available") + + em_channel = await client.channels.externalMedia( + app=client.app, + channelId=em_channel_id, + external_host=f"{host}:{port}", + format="ulaw", + direction="both", + ) + + # Store the channel ID + self.em_channel_id = em_channel.id + + # Create a mixing bridge and add both legs. + bridge = await client.bridges.create(type="mixing") + self.bridge_id = bridge.id + # Add channels individually as AsyncARIClient expects single channel per call + await bridge.addChannel(channel=self.caller_channel_id) + await bridge.addChannel(channel=self.em_channel_id) + + # TODO: Figure out how can we get the remote public IP. Till then + # just pick it from the environment variable + # Get RTP addressing information + # ip = await em_channel.getChannelVar( + # variable="UNICASTRTP_LOCAL_ADDRESS" + # ) + port = await em_channel.getChannelVar(variable="UNICASTRTP_LOCAL_PORT") + + self.remote_addr = ( + os.environ.get("ASTERISK_REMOTE_IP"), + int(port["value"]), + ) + + logger.debug( + f"channelID: {self.caller_channel_id} ARIManagerConnection connection resources ready " + f"(bridgeID: {self.bridge_id}), (emChannelID: {self.em_channel_id})" + f"remote address: {self.remote_addr}, local address: {self.local_addr}" + ) + + self._is_connected = True + + except Exception as exc: + logger.exception(f"Error setting up ARIManagerConnection: {exc}") + await self._cleanup_resources() + + async def notify_channel_end(self): + """Notify that a channel has ended. Received after we get StasisEnd on the caller channel""" + if self._closed: + return + + self._closed = True + self._is_connected = False + + # Cleanup resources using the shared method + await self._cleanup_resources() + + def __repr__(self): + """Return string representation of connection.""" + return ( + f"" + ) diff --git a/api/services/telephony/stasis_event_protocol.py b/api/services/telephony/stasis_event_protocol.py new file mode 100644 index 0000000..81b87e8 --- /dev/null +++ b/api/services/telephony/stasis_event_protocol.py @@ -0,0 +1,184 @@ +"""Redis communication protocol for distributed ARI architecture. + +Defines message formats and helpers for ARI Manager <-> Worker communication. +""" + +import json +from dataclasses import asdict, dataclass +from enum import Enum +from typing import Any, Dict, List, Optional + + +class EventType(str, Enum): + """Types of events sent from ARI Manager to Workers.""" + + STASIS_START = "stasis_start" + STASIS_END = "stasis_end" + CHANNEL_UPDATE = "channel_update" + ERROR = "error" + + +class CommandType(str, Enum): + """Types of commands sent from Workers to ARI Manager.""" + + DISCONNECT = "disconnect" + TRANSFER = "transfer" + UPDATE_STATE = "update_state" + SOCKET_CLOSED = "socket_closed" + + +@dataclass +class BaseWorkerToARIManagerCommand: + """Base class for all commands sent from Workers to ARI Manager.""" + + type: str + channel_id: str = "" + + def to_json(self) -> str: + return json.dumps(asdict(self)) + + @classmethod + def from_json(cls, data: str): + return cls(**json.loads(data)) + + +@dataclass +class StasisStartEvent: + """Event sent when a new call is bridged and ready.""" + + type: str = EventType.STASIS_START + channel_id: str = "" + caller_channel_id: str = "" + em_channel_id: Optional[str] = None + bridge_id: Optional[str] = None + local_addr: List[Any] = None # [host, port] + remote_addr: Optional[List[Any]] = None # [host, port] with UNICASTRTP_LOCAL_PORT + call_context_vars: Dict[str, Any] = None + + def __post_init__(self): + if self.local_addr is None: + self.local_addr = [] + if self.call_context_vars is None: + self.call_context_vars = {} + + def to_json(self) -> str: + return json.dumps(asdict(self)) + + @classmethod + def from_json(cls, data: str) -> "StasisStartEvent": + return cls(**json.loads(data)) + + +@dataclass +class StasisEndEvent: + """Event sent when a call ends.""" + + type: str = EventType.STASIS_END + channel_id: str = "" + reason: Optional[str] = None + + def to_json(self) -> str: + return json.dumps(asdict(self)) + + @classmethod + def from_json(cls, data: str) -> "StasisEndEvent": + return cls(**json.loads(data)) + + +@dataclass +class DisconnectCommand(BaseWorkerToARIManagerCommand): + """Command to disconnect a call.""" + + type: str = CommandType.DISCONNECT + reason: str = "worker_requested" + + +@dataclass +class TransferCommand(BaseWorkerToARIManagerCommand): + """Command to transfer a call.""" + + type: str = CommandType.TRANSFER + context: Dict[str, Any] = None + + def __post_init__(self): + if self.context is None: + self.context = {} + + +@dataclass +class SocketClosedCommand(BaseWorkerToARIManagerCommand): + """Command to notify that RTP sockets have been closed.""" + + type: str = CommandType.SOCKET_CLOSED + + +class RedisChannels: + """Redis channel naming conventions.""" + + @staticmethod + def worker_events(worker_id: str) -> str: + """Channel for events sent to a specific worker.""" + return f"ari:events:worker:{worker_id}" + + @staticmethod + def channel_commands(channel_id: str) -> str: + """Channel for commands related to a specific call channel.""" + return f"ari:commands:{channel_id}" + + @staticmethod + def channel_updates(channel_id: str) -> str: + """Channel for state updates about a specific call.""" + return f"ari:updates:{channel_id}" + + +class RedisKeys: + """Redis key naming conventions for worker registration and discovery.""" + + @staticmethod + def worker_active(worker_id: str) -> str: + """Key for active worker status and metadata.""" + return f"workers:active:{worker_id}" + + @staticmethod + def workers_set() -> str: + """Set containing all registered worker IDs.""" + return "workers:set" + + @staticmethod + def round_robin_index() -> str: + """Counter for round-robin worker selection.""" + return "workers:round_robin:index" + + +def parse_event(data: str) -> Any: + """Parse a Redis event message.""" + try: + parsed = json.loads(data) + event_type = parsed.get("type") + + if event_type == EventType.STASIS_START: + return StasisStartEvent(**parsed) + elif event_type == EventType.STASIS_END: + return StasisEndEvent(**parsed) + else: + return parsed + except Exception: + return None + + +def parse_command(data: str) -> Any: + """Parse a Redis command message.""" + try: + parsed = json.loads(data) + cmd_type = parsed.get("type") + + if cmd_type == CommandType.DISCONNECT: + return DisconnectCommand(**parsed) + elif cmd_type == CommandType.TRANSFER: + return TransferCommand(**parsed) + elif cmd_type == CommandType.SOCKET_CLOSED: + return SocketClosedCommand(**parsed) + else: + return parsed + except Exception: + return None diff --git a/api/services/telephony/stasis_rtp_client.py b/api/services/telephony/stasis_rtp_client.py new file mode 100644 index 0000000..85dfe08 --- /dev/null +++ b/api/services/telephony/stasis_rtp_client.py @@ -0,0 +1,361 @@ +"""Low-level RTP transport for Asterisk externalMedia sessions. + +stasis_rtp_client.py +~~~~~~~~~~~~~~~~~~~~ + +* Sends and receives **proper RTP/UDP** (PT 0 PCMU/μ-law). +* Uses 20 ms frames (160 bytes payload) by default; automatically + chunks or concatenates data so timestamps stay correct. +* Verifies the RTP header on the receive path (SSRC and PT). +""" + +import asyncio +import secrets +import socket +import struct +from typing import TYPE_CHECKING, AsyncIterator, Optional + +from loguru import logger +from pipecat.utils.enums import EndTaskReason + +if TYPE_CHECKING: + from api.services.telephony.stasis_rtp_connection import StasisRTPConnection + from api.services.telephony.stasis_rtp_transport import StasisRTPCallbacks + +# ─────────────────────────────────────────────────────────────────── helpers + + +_RTP_HDR = struct.Struct("!BBHII") # v/p/x/cc, m/pt, seq, ts, ssrc +_PT_PCMU = 0 # static payload type for μ-law + + +class _RTPEncoder: + """Builds PCMU RTP headers for the packets we SEND to Asterisk.""" + + def __init__(self): + self.ssrc = secrets.randbits(32) + self.seq = secrets.randbits(16) + self.ts = 0 # incremented by #payload bytes + + def pack(self, payload: bytes, mark=False) -> bytes: + b0 = 0x80 # V=2 + b1 = (0x80 if mark else 0x00) | _PT_PCMU + hdr = _RTP_HDR.pack(b0, b1, self.seq, self.ts, self.ssrc) + self.seq = (self.seq + 1) & 0xFFFF + self.ts += len(payload) # 1 sample/byte @ 8 kHz + return hdr + payload + + +class _RTPDecoder: + """Very forgiving RTP decoder. + + Latches on the first valid packet and then insists + that SSRC & PT match afterwards. Returns *None* if the packet + should be ignored. + """ + + def __init__(self): + self.peer_ssrc: int | None = None # learned from first packet + + def unpack(self, packet: bytes) -> bytes | None: + if len(packet) < _RTP_HDR.size: + return None + b0, b1, seq, ts, ssrc = _RTP_HDR.unpack_from(packet) + if (b0 & 0xC0) != 0x80: # RTP v2? + return None + if (b1 & 0x7F) != _PT_PCMU: # payload-type 0? + return None + if self.peer_ssrc is None: + self.peer_ssrc = ssrc # latch on first good packet + elif ssrc != self.peer_ssrc: + return None # stray stream – drop + return packet[_RTP_HDR.size :] + + +# ──────────────────────────────────────────────────────────────── client + + +class StasisRTPClient: + """Low-level wrapper around StasisRTPConnection. + + Public API + ────────── + • await setup(start_frame) kept for parity (does nothing) + • await connect() + • async for payload in receive(): # μ-law bytes (20 ms each) + … + • await send(data) # any length; will be chunked + • await disconnect() + """ + + _FRAME_SIZE = 160 # 20 ms @ 8 kHz PCMU + + def __init__( + self, + connection: "StasisRTPConnection", + callbacks: "StasisRTPCallbacks", + ): + """Initialize Stasis RTP client. + + Args: + connection: RTP connection parameters. + callbacks: Callback handlers for transport events. + """ + from typing import Any + + self._connection = connection + self._callbacks = callbacks + self._encoder = _RTPEncoder() + self._decoder = _RTPDecoder() + + self._recv_sock: Optional[socket.socket] = None + self._send_sock: Optional[socket.socket] = None + self._closing = False + self._recv_sock_ready = asyncio.Event() # Signal when recv socket is ready + self._leave_counter = 0 # Track input/output transport usage + self._fallback_disconnect_timer: Optional[asyncio.Task] = ( + None # Safety timer for disconnect + ) + + # ── wire event handlers to the connection ──────────────── + @self._connection.event_handler("connected") + async def _on_connected(_: Any): + await self._setup_sockets() + await self._callbacks.on_client_connected( + self._connection.caller_channel_id + ) + + @self._connection.event_handler("disconnected") + async def _on_disconnected(_: Any, reason: str): + # Cancel the safety timer if it exists. We start the safety timer when + # sending disconnect or transfer from the engine, i.e when the disconnect() + # method of the StasisRTPClient is called during wind down of the pipeline. + # We start the timer so that if we don't get the remote hangup in a given + # duration, we will call client disconnected handler. + if ( + self._fallback_disconnect_timer + and not self._fallback_disconnect_timer.done() + ): + self._fallback_disconnect_timer.cancel() + self._fallback_disconnect_timer = None + + if not self._closing: + # Mark the client as closing, so that when the pipeline is + # cancelled or getting closed, we don't try start the fallback + # disconnect timer and return safely from disconnect + self._closing = True + + await self._callbacks.on_client_disconnected( + self._connection.caller_channel_id, reason + ) + + # ─── public helpers ────────────────────────────────────────── + + async def setup(self, _): + """Setup method for compatibility.""" + self._leave_counter += 1 + + async def connect(self): + """Connect to the RTP socket.""" + if self._connection.is_connected(): + return + await self._connection.connect() + + async def disconnect( + self, + reason: str = EndTaskReason.UNKNOWN.value, + call_transfer_context: dict = {}, # Keep parameter for backward compatibility + ): + """Disconnect from the RTP socket.""" + # Decrement leave counter when disconnect is called + logger.debug(f"StasisRTPClient.disconnect leave_counter: {self._leave_counter}") + self._leave_counter -= 1 + if self._leave_counter > 0: + # Early return - InputTransport called first, OutputTransport will call later + return + + # Only proceed when counter reaches 0 (OutputTransport's call) + # Close sockets + logger.debug("Going to close sockets") + await self._close_sockets() + + if self._closing: + # We might have received the disconnected callback from the StasisRTPConnection + # due to user hangup. We will just return. We have already closed the sockets + # in disconnected callback handler. + return + self._closing = True + + # Create a safety timer that will call on_client_disconnected if we don't + # get StasisEnd from the dialer within 5 seconds. StasisEnd is needed to + # trigger on_client_disconnected handler in the event_handlers + async def _fallback_disconnect_timeout(): + await asyncio.sleep(5.0) + logger.warning( + "Disconnect event not received within 5 seconds, calling on_client_disconnected as fallback" + ) + await self._callbacks.on_client_disconnected( + self._connection.caller_channel_id + ) + + self._fallback_disconnect_timer = asyncio.create_task( + _fallback_disconnect_timeout() + ) + + # Only call disconnect if not a transfer (transfer already handled in PipecatEngine) + # NOTE: Transfer now happens immediately in PipecatEngine.send_end_task_frame() + if reason != EndTaskReason.USER_QUALIFIED.value: + try: + await self._connection.disconnect(reason) + except Exception as exc: + logger.error(f"Failed to disconnect RTP connection: {exc}") + else: + logger.debug( + "Skipping disconnect call for USER_QUALIFIED - transfer already initiated by engine" + ) + + # ─── socket management ────────────────────────────────────── + + async def _setup_sockets(self): + if self._recv_sock and self._send_sock: + return + + logger.debug( + f"Setting up Sockets - local {self._connection.local_addr}, remote: {self._connection.remote_addr}" + ) + + # receive socket – bind to local address provided by connection + if not self._recv_sock: + rs = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + rs.setblocking(False) + rs.bind(self._connection.local_addr) + self._recv_sock = rs + self._recv_sock_ready.set() # Signal that recv socket is ready + + # send socket – connect to remote (Asterisk) address + if not self._send_sock: + ss = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + ss.setblocking(False) + ss.connect(self._connection.remote_addr) + self._send_sock = ss + + logger.debug( + f"Socket setup complete - recv_fd: {self._recv_sock.fileno()}, send_fd: {self._send_sock.fileno()}" + ) + + async def _close_sockets(self): + """Safely close sockets with proper error handling.""" + for sock_name, sock in [("recv", self._recv_sock), ("send", self._send_sock)]: + if sock: + try: + # Shutdown the socket first to break any pending operations + sock.shutdown(socket.SHUT_RDWR) + except OSError: + # Socket might already be closed or in a bad state + pass + try: + sock.close() + except Exception as exc: + logger.debug(f"Error closing {sock_name} socket: {exc}") + + self._recv_sock = None + self._send_sock = None + self._recv_sock_ready.clear() # Reset the event for potential reconnection + + # Notify the connection that sockets are closed so ARI Manager can clean up ports + await self._connection.notify_sockets_closed() + + logger.debug("Closed sockets in StasisRTPClient") + + # ─── receive path ──────────────────────────────────────────── + + async def receive(self) -> AsyncIterator[bytes]: + """Async generator yielding μ-law frames (exactly 160 bytes each). + + Silently drops any packet whose RTP header does not match our SSRC/PT. + """ + loop = asyncio.get_running_loop() + + # Wait for recv socket to be created + try: + await self._recv_sock_ready.wait() + except asyncio.CancelledError: + return + + logger.debug("Going to receive from the socket now") + + while not self._closing: + try: + # each loop gets 172 bytes UDP packet, which is 160 bytes of + # audio data (Asterisk sends 20ms audio chunks with 8k sample rate) + # and 12 bytes of RTP header + data = await loop.sock_recv(self._recv_sock, 2048) + except asyncio.CancelledError: + logger.debug("RTP receive task cancelled") + break + except (OSError, socket.error) as exc: + logger.warning(f"RTP receive failed (socket closed): {exc}") + break + except Exception as exc: + logger.debug(f"Unexpected error in receive: {exc}") + break + + payload = self._decoder.unpack(data) + if payload is None: + continue # header failed validation + + # In practice Asterisk sends 20 ms frames – assert just in case. + if len(payload) != self._FRAME_SIZE: + logger.warning(f"Dropping non-20 ms packet len={len(payload)}") + continue + yield payload + + # ─── send path ─────────────────────────────────────────────── + + async def send(self, data: bytes): + """Send μ-law data of arbitrary length. + + Splits/aggregates into 160-byte chunks before RTP-wrapping. + """ + if self._closing or not self._send_sock: + return + loop = asyncio.get_running_loop() + + # chunk/concat to 160-byte frames + chunks = self._chunk_ulaw(data, self._FRAME_SIZE) + for i, chunk in enumerate(chunks): + mark = i == 0 # set marker on the first packet of talk-spurt + packet = self._encoder.pack(chunk, mark=mark) + try: + await loop.sock_sendall(self._send_sock, packet) + except (OSError, socket.error) as exc: + logger.warning(f"RTP send failed (socket closed): {exc}") + break + except Exception as exc: + logger.error(f"RTP send failed: {exc}") + break + + def _chunk_ulaw(self, buf: bytes, size: int) -> list[bytes]: + """Split / aggregate μ-law bytes to exact *size* multiples. + + • If buf length is not a multiple of *size*, pad the last chunk with 0xFF + (silence). That keeps timestamps monotonic. + """ + if not buf: + return [] + if len(buf) % size: + pad = size - (len(buf) % size) + buf += b"\xff" * pad + return [buf[i : i + size] for i in range(0, len(buf), size)] + + # ─── properties ────────────────────────────────────────────── + + @property + def is_connected(self) -> bool: + """Check if client is connected.""" + return self._connection.is_connected() and not self._closing + + @property + def is_closing(self) -> bool: + """Check if client is closing.""" + return self._closing diff --git a/api/services/telephony/stasis_rtp_connection.py b/api/services/telephony/stasis_rtp_connection.py new file mode 100644 index 0000000..07ff639 --- /dev/null +++ b/api/services/telephony/stasis_rtp_connection.py @@ -0,0 +1,182 @@ +"""Stasis RTP connection for worker processes. + +This connection works without direct ARI access and communicates with +the ARI Manager via Redis for all control operations. +""" + +from typing import Optional, Tuple + +import redis.asyncio as aioredis +from loguru import logger +from pipecat.utils.base_object import BaseObject +from pipecat.utils.enums import EndTaskReason + +from api.services.telephony.stasis_event_protocol import ( + DisconnectCommand, + RedisChannels, + SocketClosedCommand, + TransferCommand, +) + + +class StasisRTPConnection(BaseObject): + """Worker-side connection that communicates with ARI Manager via Redis. + + This class provides the same API as the original StasisRTPConnection but + without direct ARI client access. All channel operations are delegated + to the ARI Manager process via Redis. + """ + + _SUPPORTED_EVENTS = [ + "connecting", + "connected", + "disconnected", + "closed", + "failed", + "new", + ] + + def __init__( + self, + redis_client: aioredis.Redis, + channel_id: str, + caller_channel_id: str, + em_channel_id: Optional[str], + bridge_id: Optional[str], + local_addr: Optional[Tuple[str, int]], + remote_addr: Optional[Tuple[str, int]], + workflow_run_id: Optional[int] = None, + ): + """Initialize distributed connection with pre-established details. + + Args: + redis_client: Redis client for communication + channel_id: Primary channel ID for this connection + caller_channel_id: Caller's channel ID + em_channel_id: External media channel ID + bridge_id: Bridge ID (already created by ARI Manager) + local_addr: Local RTP address (host, port) + remote_addr: Remote RTP address with UNICASTRTP_LOCAL_PORT + workflow_run_id: Workflow run ID for logging context + """ + super().__init__() + + self.redis = redis_client + self.channel_id = channel_id + self.caller_channel_id = caller_channel_id + self.em_channel_id = em_channel_id + self.bridge_id = bridge_id + self.workflow_run_id = workflow_run_id + + # RTP addressing (same as StasisRTPConnection) + self.local_addr = local_addr + self.remote_addr = remote_addr + + # State tracking + # self._closed_by_stasis_end should only be set True after we get + # StasisEnd from the transport + self._closed_by_stasis_end = False + + self._connect_invoked = False + + # Register event handlers + for evt in self._SUPPORTED_EVENTS: + self._register_event_handler(evt) + + logger.debug( + f"channelID: {channel_id} StasisRTPConnection created: " + f"bridgeID: {bridge_id}, local_addr={local_addr}, remote_addr={remote_addr}" + ) + + async def connect(self): + """Signal readiness to start the call. + + Since the bridge is already established by ARI Manager, + we can immediately trigger the connected event. + """ + self._connect_invoked = True + if self.is_connected(): + await self._call_event_handler("connected") + else: + logger.warning( + "StasisRTPConnection is not connected - did not call connected handler" + ) + + async def disconnect(self, reason: str): + """Request disconnection via Redis command to ARI Manager. Usually called + when there is a disconnect triggered by workflow""" + # If we have already received user hangup via StasisEnd, lets + # return + if self._closed_by_stasis_end: + return + + logger.info(f"channelID: {self.channel_id} Requesting disconnect: {reason}") + + # Send disconnect command to ARI Manager + command = DisconnectCommand(channel_id=self.channel_id, reason=reason) + channel = RedisChannels.channel_commands(self.channel_id) + await self.redis.publish(channel, command.to_json()) + + async def transfer(self, call_transfer_context: dict): + """Request call transfer via Redis command to ARI Manager.""" + # If we have already received user hangup via StasisEnd, lets + # return + if self._closed_by_stasis_end: + return + + logger.info(f"channelID: {self.channel_id} Requesting transfer") + + # Send transfer command to ARI Manager + command = TransferCommand( + channel_id=self.channel_id, context=call_transfer_context + ) + channel = RedisChannels.channel_commands(self.channel_id) + await self.redis.publish(channel, command.to_json()) + + async def notify_sockets_closed(self): + """Notify ARI Manager that RTP sockets have been closed.""" + logger.info( + f"channelID: {self.channel_id} Notifying ARI Manager that sockets are closed" + ) + + # Send socket_closed command to ARI Manager + command = SocketClosedCommand(channel_id=self.channel_id) + channel = RedisChannels.channel_commands(self.channel_id) + await self.redis.publish(channel, command.to_json()) + + def is_connected(self) -> bool: + """Check if connection is established. + + Returns True once connect() has been called and connection is not closed. + """ + return self._connect_invoked and not self._closed_by_stasis_end + + async def handle_remote_disconnect(self, reason: str = EndTaskReason.UNKNOWN.value): + """Handle disconnection initiated by ARI Manager. Is called when the user hangs up.""" + if self._closed_by_stasis_end: + return + + self._closed_by_stasis_end = True + + if self._connect_invoked: + # Unless self._connect_invoked is True, the event handlers won't be registered. We only + # register the event handler of client when the transports are initiated during pipeline + # initialisation. Any caller must check and wait for _connect_invoked before + # calling the method + await self._call_event_handler("disconnected", reason) + else: + logger.warning( + f"ChannelID: {self.channel_id} Got remote disconnect before connection was invoked" + ) + + logger.info( + f"channelID: {self.channel_id} StasisRTPConnection disconnected: {reason}" + ) + + def __repr__(self): + """String representation of connection.""" + return ( + f"" + ) diff --git a/api/services/telephony/stasis_rtp_serializer.py b/api/services/telephony/stasis_rtp_serializer.py new file mode 100644 index 0000000..751d68b --- /dev/null +++ b/api/services/telephony/stasis_rtp_serializer.py @@ -0,0 +1,120 @@ +# Copyright (c) 2024–2025, Daily +# +# SPDX-License-Identifier: BSD 2-Clause License +"""Stasis RTP frame serializer. + +This serializer converts between Pipecat frames and the raw μ-law RTP payload +stream expected by an Stasis *External Media* channel. + +The serializer: + +* Down-samples PCM to 8-kHz μ-law for **outgoing** audio (:class:`AudioRawFrame`). +* Up-samples μ-law to the pipeline's native rate for **incoming** audio. +""" + +from typing import Optional + +from loguru import logger +from pipecat.audio.utils import create_default_resampler, pcm_to_ulaw, ulaw_to_pcm +from pipecat.frames.frames import ( + AudioRawFrame, + Frame, + InputAudioRawFrame, + StartFrame, +) +from pipecat.serializers.base_serializer import FrameSerializer, FrameSerializerType +from pydantic import BaseModel + + +class StasisRTPFrameSerializer(FrameSerializer): + """Serializer for Asterisk External Media streams (raw μ-law).""" + + class InputParams(BaseModel): + """Configuration parameters. + + Attributes: + ---------- + stasis_sample_rate : int, default 8000 + The sample-rate used by Stasis when sending μ-law (PCMU). + sample_rate : Optional[int] + Override for the pipeline's *input* sample-rate. When omitted the + value from the :class:`StartFrame` is used. + """ + + stasis_sample_rate: int = 8000 + sample_rate: Optional[int] = None + + def __init__(self, params: Optional[InputParams] = None): + """Initialize Stasis RTP frame serializer. + + Args: + params: Optional configuration parameters for the serializer. + """ + self._params = params or self.InputParams() + + # Wire / pipeline rates + self._stasis_sample_rate = self._params.stasis_sample_rate + self._sample_rate = 0 # pipeline rate, filled in *setup* + + # Resampler shared between encode / decode paths + self._resampler = create_default_resampler() + + @property + def type(self) -> FrameSerializerType: + """Stasis uses raw bytes → BINARY.""" + return FrameSerializerType.BINARY + + async def setup(self, frame: StartFrame): + """Remember pipeline configuration.""" + self._sample_rate = self._params.sample_rate or frame.audio_in_sample_rate + + async def serialize(self, frame: Frame) -> bytes | str | None: + """Convert a Pipecat frame to a wire payload. + + Only :class:`AudioRawFrame` instances are translated all other frame + types are silently ignored, allowing higher-level transports to deal + with them as needed. + """ + if isinstance(frame, AudioRawFrame): + try: + # Pipeline PCM → 8-kHz μ-law + encoded = await pcm_to_ulaw( + frame.audio, + frame.sample_rate, + self._stasis_sample_rate, + self._resampler, + ) + return encoded # raw bytes + except Exception as exc: # pragma: no cover – robustness + logger.error( + f"StasisRTPFrameSerializer.serialize: encode failed: {exc}" + ) + return None + + # Non-audio frames are not transmitted on the media path + return None + + async def deserialize(self, data: bytes | str) -> Frame | None: + """Convert wire payloads to Pipecat frames. + + The Stasis media socket delivers bare μ-law bytes, therefore *data* + must be *bytes*. Any *str* is ignored. + """ + if not isinstance(data, (bytes, bytearray)): + return None + + try: + pcm = await ulaw_to_pcm( + bytes(data), + self._stasis_sample_rate, + self._sample_rate, + self._resampler, + ) + return InputAudioRawFrame( + audio=pcm, + sample_rate=self._sample_rate, + num_channels=1, + ) + except Exception as exc: # pragma: no cover + logger.error(f"StasisRTPFrameSerializer.deserialize: decode failed: {exc}") + return None diff --git a/api/services/telephony/stasis_rtp_transport.py b/api/services/telephony/stasis_rtp_transport.py new file mode 100644 index 0000000..8b42998 --- /dev/null +++ b/api/services/telephony/stasis_rtp_transport.py @@ -0,0 +1,324 @@ +# transports/ari_external_media.py (new file) + +"""Stasis RTP transport for Asterisk External Media integration.""" + +import asyncio +import time +from typing import Awaitable, Callable, Optional + +from loguru import logger +from pipecat.frames.frames import ( + CancelFrame, + EndFrame, + InputAudioRawFrame, + OutputAudioRawFrame, + StartFrame, + TransportMessageFrame, + TransportMessageUrgentFrame, +) +from pipecat.serializers.base_serializer import FrameSerializer +from pipecat.transports.base_input import BaseInputTransport +from pipecat.transports.base_output import ( + BaseOutputTransport, + TransportClientNotConnectedException, +) +from pipecat.transports.base_transport import BaseTransport, TransportParams +from pipecat.utils.enums import EndTaskReason +from pydantic import BaseModel + +from api.services.telephony.stasis_rtp_client import StasisRTPClient +from api.services.telephony.stasis_rtp_connection import StasisRTPConnection + + +class StasisRTPTransportParams(TransportParams): + """Transport parameters for Stasis RTP transport.""" + + serializer: FrameSerializer + + +class StasisRTPCallbacks(BaseModel): + """Callbacks for Stasis RTP transport events.""" + + on_client_connected: Callable[[str], Awaitable[None]] + on_client_disconnected: Callable[ + [str, Optional[str]], Awaitable[None] + ] # Added optional disconnect reason + on_client_closed: Callable[[str], Awaitable[None]] + + +# ------------------------------------------------ Input Transport ------------------------- + +""" +Transport calls client receive to receive the audio from the socket. This happens in the self._receive_audio task. +Then the audio frames are pushed to _audio_in_queue using push_audio_frame method. Then the _audio_task_handler processes +the frames from the _audio_in_queue and pushes them to the VAD analyzer, turn analyzer and pushes the audio +further downstream to tts. + +The BaseInputTransport pipeline is responsible for: +- Resampling the audio to the correct sample rate +- Applying the audio filter +- Pushing the audio frames to the VAD analyzer +- Pushing the audio frames to the turn analyzer +- Pushing the audio frames to the bot interruption analyzer +- Pushing the audio frames down the pipeline to the tts + +stop method is called from process_frame of the BaseInputTransport. super.stop() stops _audio_task_handler. It then +calls _client.disconnect. Transport's callbacks are sent to the client using StasisRTPCallbacks. +""" + + +class StasisRTPInputTransport(BaseInputTransport): + """Input transport for receiving audio over Stasis RTP.""" + + def __init__( + self, + transport: BaseTransport, + client: StasisRTPClient, + params: StasisRTPTransportParams, + **kwargs, + ): + """Initialize Stasis RTP input transport. + + Args: + transport: Parent transport instance. + client: Stasis RTP client for socket communication. + params: Transport parameters including serializer. + **kwargs: Additional keyword arguments for BaseInputTransport. + """ + super().__init__(params, **kwargs) + self._transport = transport + self._client = client + self._params = params + + self._receive_task: Optional[asyncio.Task] = None + + async def start(self, frame: StartFrame): + """Start the input transport.""" + await super().start(frame) + + await self._client.setup(frame) + await self._params.serializer.setup(frame) + + # Ensure underlying connection is established and socket ready. + await self._client.connect() + + if not self._receive_task: + self._receive_task = self.create_task(self._receive_audio()) + + await self.set_transport_ready(frame) + + async def _stop_tasks(self): + if self._receive_task: + await self.cancel_task(self._receive_task) + self._receive_task = None + + async def stop(self, frame: EndFrame): + """Stop the input transport.""" + await super().stop(frame) + await self._stop_tasks() + # Call disconnect on the client when EndFrame is encountered + await self._client.disconnect( + frame.metadata.get("reason", EndTaskReason.UNKNOWN.value), + frame.metadata.get("call_transfer_context", {}), + ) + logger.debug("Successfully disconnected from StasisRTPClient") + + async def cancel(self, frame: CancelFrame): + """Cancel the input transport.""" + await super().cancel(frame) + await self._stop_tasks() + # Call disconnect on the client when CancelFrame is encountered + await self._client.disconnect( + frame.metadata.get("reason", EndTaskReason.SYSTEM_CANCELLED.value), + frame.metadata.get("call_transfer_context", {}), + ) + + async def _receive_audio(self): + try: + async for payload in self._client.receive(): + frame = await self._params.serializer.deserialize(payload) + if not frame: + continue + + if isinstance(frame, InputAudioRawFrame): + await self.push_audio_frame(frame) + else: + await self.push_frame(frame) + except Exception as exc: + logger.error(f"StasisRTPInputTransport receive error: {exc}") + + # No app-messages in RTP path, but keep compatibility + async def push_app_message(self, message): + """Push app message (not supported in RTP transport).""" + logger.debug("StasisRTPInputTransport received app message ignored (RTP only)") + + +# ------------------------------------------------ Output Transport ------------------------ + + +class StasisRTPOutputTransport(BaseOutputTransport): + """Output transport for sending audio over Stasis RTP.""" + + def __init__( + self, + transport: BaseTransport, + client: StasisRTPClient, + params: StasisRTPTransportParams, + **kwargs, + ): + """Initialize Stasis RTP output transport. + + Args: + transport: Parent transport instance. + client: Stasis RTP client for socket communication. + params: Transport parameters including serializer. + **kwargs: Additional keyword arguments for BaseOutputTransport. + """ + super().__init__(params, **kwargs) + + self._transport = transport + self._client = client + self._params = params + + # Pace outgoing audio so we don't dump buffers instantly (simulate 10-ms chunks) + self._send_interval: float = 0 + self._next_send_time: float = 0 + + async def start(self, frame: StartFrame): + """Start the output transport.""" + await super().start(frame) + + await self._client.setup(frame) + await self._params.serializer.setup(frame) + + self._send_interval = self._params.audio_out_10ms_chunks * 10 / 1000 # ms + + await self.set_transport_ready(frame) + + async def stop(self, frame: EndFrame): + """Stop the output transport.""" + await super().stop(frame) + + # Call disconnect on the client when EndFrame is encountered + # The client will check its _leave_counter and decide whether to close sockets + await self._client.disconnect( + frame.metadata.get("reason", EndTaskReason.UNKNOWN.value), + frame.metadata.get("call_transfer_context", {}), + ) + + async def cancel(self, frame: CancelFrame): + """Cancel the output transport.""" + await super().cancel(frame) + # Call disconnect on the client when CancelFrame is encountered + await self._client.disconnect( + frame.metadata.get("reason", EndTaskReason.SYSTEM_CANCELLED.value), + frame.metadata.get("call_transfer_context", {}), + ) + + async def send_message( + self, frame: TransportMessageFrame | TransportMessageUrgentFrame + ): + """Send message frame (not supported in RTP transport).""" + # RTP path has no generic message channel; ignore. + pass + + async def write_audio_frame(self, frame: OutputAudioRawFrame): + """Write audio frame to RTP stream.""" + if self._client.is_closing: + raise TransportClientNotConnectedException() + + if not self._client.is_connected: + # If not connected yet, just simulate playback delay. + await self._write_audio_sleep() + return + + payload = await self._params.serializer.serialize(frame) + if payload: + await self._client.send(payload) + + await self._write_audio_sleep() + + async def _write_audio_sleep(self): + """Simulates real-time audio playback timing by introducing controlled delays. + + This method implements a clock simulation to pace audio transmission at realistic + intervals. Without this pacing, audio frames would be sent as fast as possible, + which could overwhelm receivers or cause buffering issues. + + The method: + 1. Calculates how long to sleep based on when the next frame should be sent + 2. Sleeps for the calculated duration (or 0 if we're already behind schedule) + 3. Updates _next_send_time for the next audio chunk + + The _send_interval is computed as: (audio_chunk_size / sample_rate) / 2 + This creates timing that simulates how an actual audio device would output + audio at the proper rate (e.g., every 10ms for 10ms audio chunks). + """ + current_time = time.monotonic() + sleep_duration = max(0, self._next_send_time - current_time) + await asyncio.sleep(sleep_duration) + if sleep_duration == 0: + self._next_send_time = time.monotonic() + self._send_interval + else: + self._next_send_time += self._send_interval + + +class StasisRTPTransport(BaseTransport): + """Main transport class for Stasis RTP communication.""" + + def __init__( + self, + stasis_connection: StasisRTPConnection, + params: StasisRTPTransportParams, + input_name: Optional[str] = None, + output_name: Optional[str] = None, + ): + """Initialize Stasis RTP transport. + + Args: + stasis_connection: Connection parameters for Stasis RTP. + params: Transport parameters including serializer. + input_name: Optional name for input transport. + output_name: Optional name for output transport. + """ + super().__init__(input_name=input_name, output_name=output_name) + + self._params = params + + client_callbacks = StasisRTPCallbacks( + on_client_connected=self._on_client_connected, + on_client_disconnected=self._on_client_disconnected, + on_client_closed=self._on_client_closed, + ) + self._client = StasisRTPClient(stasis_connection, client_callbacks) + + self._input = StasisRTPInputTransport( + self, self._client, self._params, name=self._input_name + ) + + self._output = StasisRTPOutputTransport( + self, self._client, self._params, name=self._output_name + ) + + # expose handlers + self._register_event_handler("on_client_connected") + self._register_event_handler("on_client_disconnected") + self._register_event_handler("on_client_closed") + + def input(self) -> StasisRTPInputTransport: + """Get the input transport.""" + return self._input + + def output(self) -> StasisRTPOutputTransport: + """Get the output transport.""" + return self._output + + # ------------------------------------------------ event adapters ---------- + async def _on_client_connected(self, chan_id: str): + await self._call_event_handler("on_client_connected", chan_id) + + async def _on_client_disconnected(self, chan_id: str, reason: Optional[str] = None): + await self._call_event_handler("on_client_disconnected", chan_id, reason) + + async def _on_client_closed(self, chan_id: str): + await self._call_event_handler("on_client_closed", chan_id) diff --git a/api/services/telephony/test_asyncari_ping.py b/api/services/telephony/test_asyncari_ping.py new file mode 100644 index 0000000..8e97371 --- /dev/null +++ b/api/services/telephony/test_asyncari_ping.py @@ -0,0 +1,105 @@ +#!/usr/bin/env python3 +"""Test script to verify asyncari ping functionality.""" + +import asyncio +import os +import sys +from pathlib import Path + +# Add the asyncari src to Python path for testing +asyncari_path = Path(__file__).parent.parent.parent.parent.parent / "asyncari" / "src" +sys.path.insert(0, str(asyncari_path)) + +import asyncari +from loguru import logger + + +async def test_ping(): + """Test the ping functionality with asyncari.""" + + # Configure from environment or use defaults + base_url = os.getenv("ARI_STASIS_ENDPOINT", "http://localhost:8088") + username = os.getenv("ARI_STASIS_USER", "asterisk") + password = os.getenv("ARI_STASIS_USER_PASSWORD", "asterisk") + apps = os.getenv("ARI_STASIS_APP_NAME", "test-app") + + logger.info(f"Connecting to ARI at {base_url}") + + try: + async with asyncari.connect( + base_url=base_url, apps=apps, username=username, password=password + ) as client: + logger.info("Connected to ARI") + + # Test REST API ping + logger.info("Testing REST API ping...") + result = await client.asterisk.ping() + logger.info(f"REST API ping successful: {result}") + + # Test WebSocket ping (should work with our wrapper) + logger.info("Testing WebSocket ping...") + for ws in client.websockets: + try: + await ws.ping() + logger.info("WebSocket ping() called successfully (no-op)") + except AttributeError: + logger.error("WebSocket doesn't have ping() method") + except Exception as e: + logger.error(f"WebSocket ping failed: {e}") + + # Test the keep_alive function + from ari_client_manager import keep_alive + + logger.info("Starting keep_alive task...") + keep_alive_task = asyncio.create_task(keep_alive(client, interval=5.0)) + + # Run for 20 seconds to see several pings + await asyncio.sleep(20) + + # Cancel keep_alive + keep_alive_task.cancel() + try: + await keep_alive_task + except asyncio.CancelledError: + logger.info("keep_alive task cancelled") + + logger.info("Test completed successfully!") + + except Exception as e: + logger.exception(f"Test failed: {e}") + return False + + return True + + +async def test_with_manager(): + """Test using the ARI client manager.""" + from ari_client_manager import setup_ari_client_supervisor + + async def on_stasis_call(client, channel, context_vars): + logger.info(f"Received call: {channel.id}") + + # Enable ARI Stasis for testing + os.environ["ENABLE_ARI_STASIS"] = "true" + + supervisor = await setup_ari_client_supervisor(on_stasis_call) + + if supervisor: + logger.info("ARI Stasis supervisor started with ping support") + + # Run for 30 seconds + await asyncio.sleep(30) + + await supervisor.close() + logger.info("Supervisor closed") + else: + logger.error("Failed to start supervisor") + + +if __name__ == "__main__": + import sys + + if len(sys.argv) > 1 and sys.argv[1] == "manager": + asyncio.run(test_with_manager()) + else: + asyncio.run(test_ping()) diff --git a/api/services/telephony/test_real_ping.py b/api/services/telephony/test_real_ping.py new file mode 100644 index 0000000..02236ba --- /dev/null +++ b/api/services/telephony/test_real_ping.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python3 +"""Test script to verify real WebSocket ping frames are being sent.""" + +import asyncio +import os +import sys +from pathlib import Path + +# Add the asyncari src to Python path +asyncari_path = Path(__file__).parent.parent.parent.parent.parent / "asyncari" / "src" +sys.path.insert(0, str(asyncari_path)) + +import asyncari +from loguru import logger + +# Enable debug logging to see ping frames +logger.add(sys.stderr, level="DEBUG") + + +async def test_real_ping(): + """Test that real WebSocket ping frames are sent.""" + + # Configure from environment or use defaults + base_url = os.getenv("ARI_STASIS_ENDPOINT", "http://localhost:8088") + username = os.getenv("ARI_STASIS_USER", "asterisk") + password = os.getenv("ARI_STASIS_USER_PASSWORD", "asterisk") + apps = os.getenv("ARI_STASIS_APP_NAME", "test-app") + + logger.info(f"Connecting to ARI at {base_url}") + + try: + async with asyncari.connect( + base_url=base_url, apps=apps, username=username, password=password + ) as client: + logger.info("Connected to ARI") + + # Get the WebSocket + for ws in client.websockets: + logger.info(f"WebSocket type: {type(ws)}") + logger.info( + f"WebSocket wrapper active: {'WebSocketWrapper' in str(type(ws))}" + ) + + # Check internal structure + if hasattr(ws, "_websocket"): + inner_ws = ws._websocket + logger.info(f"Inner WebSocket type: {type(inner_ws)}") + logger.info(f"Has _connection: {hasattr(inner_ws, '_connection')}") + logger.info(f"Has _sock: {hasattr(inner_ws, '_sock')}") + + # Send a test ping + logger.info("Sending test ping...") + try: + await ws.ping(b"test-ping-123") + logger.info("Ping sent successfully!") + except Exception as e: + logger.error(f"Ping failed: {e}") + + # Test the keep_alive function + logger.info("\nTesting keep_alive function...") + from ari_client_manager import keep_alive + + # Run keep_alive for a short time + keep_alive_task = asyncio.create_task(keep_alive(client, interval=3.0)) + + # Let it run for 10 seconds to see multiple pings + await asyncio.sleep(10) + + # Cancel and cleanup + keep_alive_task.cancel() + try: + await keep_alive_task + except asyncio.CancelledError: + pass + + logger.info("Test completed!") + + except Exception as e: + logger.exception(f"Test failed: {e}") + + +if __name__ == "__main__": + asyncio.run(test_real_ping()) diff --git a/api/services/telephony/twilio.py b/api/services/telephony/twilio.py new file mode 100644 index 0000000..c599362 --- /dev/null +++ b/api/services/telephony/twilio.py @@ -0,0 +1,207 @@ +import random +from typing import Any, Dict, List, Optional +from urllib.parse import urlencode + +import aiohttp +from loguru import logger +from pydantic import ValidationError +from twilio.request_validator import RequestValidator + +from api.constants import ( + BACKEND_API_ENDPOINT, + TWILIO_ACCOUNT_SID, + TWILIO_AUTH_TOKEN, + TWILIO_DEFAULT_FROM_NUMBER, +) +from api.db import db_client + + +class TwilioService: + """Service for interacting with Twilio API.""" + + def __init__(self): + if ( + not TWILIO_DEFAULT_FROM_NUMBER + or not TWILIO_ACCOUNT_SID + or not TWILIO_AUTH_TOKEN + ): + raise ValidationError( + "Please set TWILIO_DEFAULT_FROM_NUMBER, TWILIO_ACCOUNT_SID, and TWILIO_AUTH_TOKEN environment" + "variables to use TwilioService" + ) + + self.account_sid = TWILIO_ACCOUNT_SID + self.auth_token = TWILIO_AUTH_TOKEN + self.default_from_number = TWILIO_DEFAULT_FROM_NUMBER + + self.base_url = f"https://api.twilio.com/2010-04-01/Accounts/{self.account_sid}" + + async def get_organization_phone_numbers(self, organization_id: int) -> List[str]: + """ + Get the list of Twilio phone numbers configured for an organization. + + Args: + organization_id: The organization ID + + Returns: + List of phone numbers, or default if none configured + """ + try: + from api.enums import OrganizationConfigurationKey + + config = await db_client.get_configuration( + organization_id, + OrganizationConfigurationKey.TWILIO_PHONE_NUMBERS.value, + ) + + if config and config.value: + # Expect the value to be a list of phone numbers + phone_numbers = config.value.get("value", []) + if isinstance(phone_numbers, list) and phone_numbers: + return phone_numbers + except Exception as e: + logger.warning( + f"Error getting phone numbers for org {organization_id}: {e}" + ) + + # Fall back to default from environment + return [self.default_from_number] + + async def initiate_call( + self, + to_number: str, + url_args: Dict[str, Any] = {}, + workflow_run_id: Optional[int] = None, + organization_id: Optional[int] = None, + **kwargs: Any, + ) -> Dict[str, Any]: + """ + Initiates a Twilio call using the Calls API. + + Args: + to_number: The destination phone number + url_args: Dictionary of URL parameters to append to the base URL + workflow_run_id: The workflow run ID for tracking callbacks + organization_id: The organization ID for selecting phone numbers + **kwargs: Additional parameters to pass to the Twilio API + + Returns: + Dict containing the Twilio API response + """ + endpoint = f"{self.base_url}/Calls.json" + + if not BACKEND_API_ENDPOINT: + raise ValidationError( + "Please set BACKEND_API_ENDPOINT environment variable to a tunnel or persistant URL" + ) + + # Construct the URL with parameters if any + url: str = f"https://{BACKEND_API_ENDPOINT}/api/v1/twilio/twiml" + if url_args: + query_string = urlencode(url_args) + url = f"{url}?{query_string}" + + logger.debug(f"Initiating call with URL: {url}") + + # Get phone numbers for organization and select one randomly + if organization_id: + phone_numbers = await self.get_organization_phone_numbers(organization_id) + from_number = random.choice(phone_numbers) + logger.info( + f"Selected phone number {from_number} from {len(phone_numbers)} " + f"available numbers for org {organization_id}" + ) + else: + from_number = self.default_from_number + + # Prepare call data + data = {"To": to_number, "From": from_number, "Url": url} + + if not BACKEND_API_ENDPOINT: + raise ValidationError( + "Please set BACKEND_API_ENDPOINT environment variable to a tunnel or persistant URL" + ) + + # Add status callback configuration if workflow_run_id is provided + if workflow_run_id: + callback_url = f"https://{BACKEND_API_ENDPOINT}/api/v1/twilio/status-callback/{workflow_run_id}" + data.update( + { + "StatusCallback": callback_url, + "StatusCallbackEvent": [ + "initiated", + "ringing", + "answered", + "completed", + ], + "StatusCallbackMethod": "POST", + } + ) + + # Add any additional kwargs + data.update(kwargs) + + # Make the API request + async with aiohttp.ClientSession() as session: + auth = aiohttp.BasicAuth(self.account_sid, self.auth_token) + async with session.post(endpoint, data=data, auth=auth) as response: + if response.status != 201: + error_data = await response.json() + raise Exception(f"Failed to initiate call: {error_data}") + + return await response.json() + + async def get_start_call_twiml( + self, workflow_id: int, user_id: int, workflow_run_id: int + ) -> str: + if not BACKEND_API_ENDPOINT: + raise ValidationError( + "Please set BACKEND_API_ENDPOINT environment variable to a tunnel or persistant URL" + ) + + twiml_content = f""" + + + + + +""" + return twiml_content + + async def get_call(self, call_sid: str) -> Dict[str, Any]: + """ + Retrieves information about a specific call. + + Args: + call_sid: The SID of the call to retrieve + + Returns: + Dict containing the call information + """ + endpoint = f"{self.base_url}/Calls/{call_sid}.json" + + async with aiohttp.ClientSession() as session: + auth = aiohttp.BasicAuth(self.account_sid, self.auth_token) + async with session.get(endpoint, auth=auth) as response: + if response.status != 200: + error_data = await response.json() + raise Exception(f"Failed to get call: {error_data}") + + return await response.json() + + def verify_signature( + self, url: str, params: Dict[str, Any], signature: str + ) -> bool: + """ + Verify Twilio request signature using official Twilio SDK. + + Args: + url: The full URL of the webhook + params: The POST parameters (form data) as a dictionary + signature: The X-Twilio-Signature header value + + Returns: + bool: True if signature is valid, False otherwise + """ + validator = RequestValidator(self.auth_token) + return validator.validate(url, params, signature) diff --git a/api/services/telephony/worker_event_subscriber.py b/api/services/telephony/worker_event_subscriber.py new file mode 100644 index 0000000..eebe9de --- /dev/null +++ b/api/services/telephony/worker_event_subscriber.py @@ -0,0 +1,371 @@ +"""Worker Event Subscriber for distributed ARI architecture. + +This component runs in each FastAPI worker process and subscribes to +Redis events from the ARI Manager. It creates pipelines for assigned calls +without any direct ARI connection. +""" + +import asyncio +import json +import uuid +from typing import Awaitable, Callable, Optional + +import redis.asyncio as aioredis +from loguru import logger +from pipecat.utils.context import set_current_run_id + +from api.routes.stasis_rtp import on_stasis_call +from api.services.telephony.stasis_event_protocol import ( + DisconnectCommand, + RedisChannels, + RedisKeys, + StasisEndEvent, + StasisStartEvent, + parse_event, +) +from api.services.telephony.stasis_rtp_connection import StasisRTPConnection + + +class WorkerEventSubscriber: + """Subscribes to ARI events from Redis and processes them in the worker.""" + + def __init__( + self, + redis_client: aioredis.Redis, + on_stasis_call: Callable[[StasisRTPConnection, dict], Awaitable[None]], + ): + self.redis = redis_client + self.worker_id = str(uuid.uuid4()) # Generate unique worker ID + self.on_stasis_call = on_stasis_call + self._running = False + self._task: Optional[asyncio.Task] = None + self._heartbeat_task: Optional[asyncio.Task] = None + self._active_connections: dict[str, StasisRTPConnection] = {} + self._active_tasks: dict[str, asyncio.Task] = {} + self._cleanup_tasks: dict[str, asyncio.Task] = {} + self._shutting_down = False + self._shutdown_event = asyncio.Event() + + async def start(self): + """Start the event subscriber.""" + if self._task is None: + self._running = True + + # Register worker in Redis + await self._register_worker() + + # Start main event loop + self._task = asyncio.create_task( + self._run(), name=f"worker_subscriber_{self.worker_id}" + ) + + # Start heartbeat task + self._heartbeat_task = asyncio.create_task( + self._heartbeat_loop(), name=f"worker_heartbeat_{self.worker_id}" + ) + + logger.info(f"Worker {self.worker_id} event subscriber started") + + async def _register_worker(self): + """Register this worker in Redis.""" + worker_key = RedisKeys.worker_active(self.worker_id) + worker_data = json.dumps({"status": "ready", "active_calls": 0}) + + # Set with TTL of 30 seconds (will be refreshed by heartbeat) + await self.redis.setex(worker_key, 30, worker_data) + + # Add to workers set + await self.redis.sadd(RedisKeys.workers_set(), self.worker_id) + + logger.info(f"Worker {self.worker_id} registered in Redis") + + async def _heartbeat_loop(self): + """Send periodic heartbeats to Redis.""" + try: + while self._running: + # Update worker status with current active call count + worker_key = RedisKeys.worker_active(self.worker_id) + worker_data = json.dumps( + { + "status": "draining" if self._shutting_down else "ready", + "active_calls": len(self._active_tasks), + } + ) + + # Refresh TTL to 30 seconds + await self.redis.setex(worker_key, 30, worker_data) + + # Wait 10 seconds before next heartbeat + await asyncio.sleep(10) + + except asyncio.CancelledError: + logger.debug(f"Worker {self.worker_id} heartbeat cancelled") + except Exception as e: + logger.exception(f"Worker {self.worker_id} heartbeat error: {e}") + + async def graceful_shutdown(self, max_wait_seconds: int = 300): + """Gracefully shutdown the worker, waiting for calls to complete. + + Args: + max_wait_seconds: Maximum time to wait for calls to complete (default 5 minutes) + """ + logger.info(f"Worker {self.worker_id} starting graceful shutdown") + + # Mark as shutting down to prevent new calls + self._shutting_down = True + + # Update status in Redis to 'draining' + worker_key = RedisKeys.worker_active(self.worker_id) + worker_data = json.dumps( + {"status": "draining", "active_calls": len(self._active_tasks)} + ) + await self.redis.setex(worker_key, 30, worker_data) + + # Wait for active tasks to complete (with timeout) + start_time = asyncio.get_event_loop().time() + while ( + self._active_tasks + and (asyncio.get_event_loop().time() - start_time) < max_wait_seconds + ): + active_count = len(self._active_tasks) + logger.info( + f"Worker {self.worker_id} waiting for {active_count} active calls to complete" + ) + + # Update Redis with current status + worker_data = json.dumps( + {"status": "draining", "active_calls": active_count} + ) + await self.redis.setex(worker_key, 30, worker_data) + + # Wait a bit before checking again + await asyncio.sleep(5) + + # Force stop if timeout reached + if self._active_tasks: + logger.warning( + f"Worker {self.worker_id} forcefully stopping {len(self._active_tasks)} active calls after timeout channel_ids: {list(self._active_tasks.keys())}" + ) + + await self.stop() + + async def stop(self): + """Stop the event subscriber and deregister from Redis.""" + self._running = False + + # Deregister from Redis + await self._deregister_worker() + + # Cancel all active call processing tasks + for channel_id, task in list(self._active_tasks.items()): + if not task.done(): + logger.info(f"Cancelling active call task for channel {channel_id}") + task.cancel() + + # Cancel all cleanup tasks + for channel_id, task in list(self._cleanup_tasks.items()): + if not task.done(): + logger.info(f"Cancelling cleanup task for channel {channel_id}") + task.cancel() + + # Wait for all tasks to complete + all_tasks = list(self._active_tasks.values()) + list( + self._cleanup_tasks.values() + ) + if all_tasks: + await asyncio.gather(*all_tasks, return_exceptions=True) + + # Cancel heartbeat task + if self._heartbeat_task: + self._heartbeat_task.cancel() + try: + await self._heartbeat_task + except asyncio.CancelledError: + pass + + if self._task: + self._task.cancel() + try: + await self._task + except asyncio.CancelledError: + pass + + logger.info(f"Worker {self.worker_id} event subscriber stopped") + + async def _deregister_worker(self): + """Remove this worker from Redis.""" + try: + # Remove from active workers + await self.redis.delete(RedisKeys.worker_active(self.worker_id)) + + # Remove from workers set + await self.redis.srem(RedisKeys.workers_set(), self.worker_id) + + logger.info(f"Worker {self.worker_id} deregistered from Redis") + except Exception as e: + logger.error(f"Error deregistering worker {self.worker_id}: {e}") + + async def _run(self): + """Main subscriber loop.""" + self._running = True + channel = RedisChannels.worker_events(self.worker_id) + pubsub = self.redis.pubsub() + + try: + await pubsub.subscribe(channel) + logger.info(f"Worker {self.worker_id} subscribed to {channel}") + + async for message in pubsub.listen(): + if not self._running: + break + + if message["type"] == "message": + try: + await self._handle_event(message["data"]) + except Exception as e: + logger.exception(f"Error handling event: {e}") + + except asyncio.CancelledError: + logger.debug(f"Worker {self.worker_id} subscriber cancelled") + except Exception as e: + logger.exception(f"Worker {self.worker_id} subscriber error: {e}") + finally: + await pubsub.unsubscribe(channel) + await pubsub.aclose() + + async def _handle_event(self, data: str): + """Handle an event from the ARI Manager.""" + event = parse_event(data) + if not event: + logger.warning(f"Failed to parse event: {data}") + return + + if isinstance(event, StasisStartEvent): + await self._handle_stasis_start(event) + elif isinstance(event, StasisEndEvent): + await self._handle_stasis_end(event) + else: + logger.warning( + f"channelID: {event.channel_id} Unhandled event type: {type(event)}" + ) + + async def _handle_stasis_start(self, event: StasisStartEvent): + """Handle a new call assignment.""" + + channel_id = event.channel_id + logger.info( + f"channelID: {channel_id} Worker {self.worker_id} handling StasisStart" + ) + + try: + # Create StasisRTPConnection without ARI client + connection = StasisRTPConnection( + redis_client=self.redis, + channel_id=channel_id, + caller_channel_id=event.caller_channel_id, + em_channel_id=event.em_channel_id, + bridge_id=event.bridge_id, + local_addr=tuple(event.local_addr) if event.local_addr else None, + remote_addr=tuple(event.remote_addr) if event.remote_addr else None, + ) + + # Store connection for cleanup + self._active_connections[channel_id] = connection + + # Create a background task to handle the call + task = asyncio.create_task( + self._process_call(connection, event.call_context_vars, channel_id), + name=f"call_handler_{channel_id}", + ) + self._active_tasks[channel_id] = task + + except Exception as e: + logger.exception(f"Error handling StasisStart for {channel_id}: {e}") + # Send disconnect command if setup fails + await self._send_disconnect(channel_id, "setup_failed") + + async def _process_call( + self, connection: StasisRTPConnection, call_context_vars: dict, channel_id: str + ): + """Process a call in the background.""" + try: + await self.on_stasis_call(connection, call_context_vars) + except Exception as e: + logger.exception(f"Error processing call for {channel_id}: {e}") + # Send disconnect command if call processing fails + await self._send_disconnect(channel_id, "processing_failed") + finally: + # Clean up task reference + if channel_id in self._active_tasks: + del self._active_tasks[channel_id] + + async def _process_cleanup(self, channel_id: str, reason: str): + """Process call cleanup in the background.""" + try: + if channel_id in self._active_connections: + connection: StasisRTPConnection = self._active_connections[channel_id] + + # We must wait for the connection's invocation + # before sending in remote disconnect. Otherwise, + # the event handlers won't be registered and we won't + # be able to call on_client_disconnected to cancel the + # pipeline + while not connection._connect_invoked: + await asyncio.sleep(0.1) + + # Set the run_id context so that we can have it in logs + if connection.workflow_run_id: + set_current_run_id(connection.workflow_run_id) + + await connection.handle_remote_disconnect(reason) + del self._active_connections[channel_id] + except Exception as e: + logger.exception(f"Error during cleanup for {channel_id}: {e}") + finally: + # Clean up task reference from cleanup tasks dictionary + if channel_id in self._cleanup_tasks: + del self._cleanup_tasks[channel_id] + + async def _handle_stasis_end(self, event: StasisEndEvent): + """Handle call termination.""" + channel_id = event.channel_id + logger.info( + f"channelID: {channel_id} Worker {self.worker_id} handling StasisEnd, Reason: {event.reason}" + ) + + # Create a background task to handle the cleanup + if channel_id in self._active_connections: + # Check if there's already a cleanup task for this channel + if ( + channel_id not in self._cleanup_tasks + or self._cleanup_tasks[channel_id].done() + ): + # Lets start a new task, since we need to poll for + # connection to be invoked from the pipeline before + # caling remote disconnect + task = asyncio.create_task( + self._process_cleanup(channel_id, event.reason), + name=f"cleanup_handler_{channel_id}", + ) + self._cleanup_tasks[channel_id] = task + else: + logger.warning( + f"channelID: {channel_id} Cleanup skipped - cleanup task still running" + ) + + async def _send_disconnect(self, channel_id: str, reason: str): + """Send disconnect command to ARI Manager.""" + + command = DisconnectCommand(channel_id=channel_id, reason=reason) + channel = RedisChannels.channel_commands(channel_id) + await self.redis.publish(channel, command.to_json()) + + +async def setup_worker_subscriber( + redis_client: aioredis.Redis, +) -> WorkerEventSubscriber: + """Setup the worker event subscriber with dynamic registration.""" + subscriber = WorkerEventSubscriber(redis_client, on_stasis_call) + logger.info(f"Setting up worker event subscriber with ID {subscriber.worker_id}") + await subscriber.start() + return subscriber diff --git a/api/services/workflow/__init__.py b/api/services/workflow/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/services/workflow/disposition_mapper.py b/api/services/workflow/disposition_mapper.py new file mode 100644 index 0000000..f58abc4 --- /dev/null +++ b/api/services/workflow/disposition_mapper.py @@ -0,0 +1,77 @@ +"""Utility module for applying disposition code mapping.""" + +from typing import Optional + +from loguru import logger + +from api.db import db_client +from api.enums import OrganizationConfigurationKey + + +async def apply_disposition_mapping(value: str, organization_id: Optional[int]) -> str: + """Apply disposition code mapping if configured. + + Args: + value: The original disposition value to map + organization_id: The organization ID + + Returns: + The mapped value if found in configuration, otherwise the original value + """ + if not organization_id or not value: + return value + + try: + disposition_mapping = await db_client.get_configuration_value( + organization_id, + OrganizationConfigurationKey.DISPOSITION_CODE_MAPPING.value, + default={}, + ) + + if not disposition_mapping: + return value + + # Return mapped value if exists, otherwise original + # DISPOSITION_CODE_MAPPING looks like {"user_idle_max_duration_exceeded": "DAIR"} etc. + mapped_value = disposition_mapping.get(value, value) + + if mapped_value != value: + logger.debug( + f"Mapped disposition code from '{value}' to '{mapped_value}' " + f"for organization {organization_id}" + ) + + return mapped_value + + except Exception as e: + logger.error(f"Error applying disposition mapping: {e}") + return value + + +async def get_organization_id_from_workflow_run( + workflow_run_id: Optional[int], +) -> Optional[int]: + """Get organization_id from workflow_run_id through the model relationships. + + Args: + workflow_run_id: The workflow run ID + + Returns: + The organization ID if found, otherwise None + """ + if not workflow_run_id: + return None + + try: + workflow_run = await db_client.get_workflow_run_by_id(workflow_run_id) + if not workflow_run or not workflow_run.workflow: + return None + + workflow = workflow_run.workflow + if not workflow.user: + return None + + return workflow.user.selected_organization_id + except Exception as e: + logger.error(f"Error getting organization_id from workflow_run: {e}") + return None diff --git a/api/services/workflow/dto.py b/api/services/workflow/dto.py new file mode 100644 index 0000000..57bace3 --- /dev/null +++ b/api/services/workflow/dto.py @@ -0,0 +1,96 @@ +from enum import Enum +from typing import List, Optional + +from pydantic import BaseModel, Field, ValidationError, model_validator + + +class NodeType(str, Enum): + startNode = "startCall" + endNode = "endCall" + agentNode = "agentNode" + globalNode = "globalNode" + + +class Position(BaseModel): + x: float + y: float + + +class VariableType(str, Enum): + string = "string" + number = "number" + boolean = "boolean" + + +class ExtractionVariableDTO(BaseModel): + name: str = Field(..., min_length=1) + type: VariableType + prompt: Optional[str] = None + + +class NodeDataDTO(BaseModel): + name: str = Field(..., min_length=1) + prompt: str = Field(..., min_length=1) + is_static: bool = False + is_start: bool = False + is_end: bool = False + allow_interrupt: bool = False + extraction_enabled: bool = False + extraction_prompt: Optional[str] = None + extraction_variables: Optional[list[ExtractionVariableDTO]] = None + add_global_prompt: bool = True + wait_for_user_response: bool = False + wait_for_user_response_timeout: Optional[float] = None + detect_voicemail: bool = True + delayed_start: bool = False + delayed_start_duration: Optional[float] = None + + +class RFNodeDTO(BaseModel): + id: str + type: NodeType = Field(default=NodeType.agentNode) + position: Position + data: NodeDataDTO + + +class EdgeDataDTO(BaseModel): + label: str = Field(..., min_length=1) + condition: str = Field(..., min_length=1) + + +class RFEdgeDTO(BaseModel): + id: str + source: str + target: str + data: EdgeDataDTO + + +class ReactFlowDTO(BaseModel): + nodes: List[RFNodeDTO] + edges: List[RFEdgeDTO] + + @model_validator(mode="after") + def _referential_integrity(self): + node_ids = {n.id for n in self.nodes} + line_errors: list[dict[str, str]] = [] + + for idx, edge in enumerate(self.edges): + for endpoint in (edge.source, edge.target): + if endpoint not in node_ids: + line_errors.append( + dict( + loc=("edges", idx), + type="missing_node", + msg="Edge references missing node", + input=edge.model_dump(mode="python"), + ctx={"edge_id": edge.id, "endpoint": endpoint}, + ) + ) + + if line_errors: + raise ValidationError.from_exception_data( + title="ReactFlowDTO validation failed", + line_errors=line_errors, + ) + + return self diff --git a/api/services/workflow/errors.py b/api/services/workflow/errors.py new file mode 100644 index 0000000..103ebca --- /dev/null +++ b/api/services/workflow/errors.py @@ -0,0 +1,16 @@ +# api/services/workflow/errors.py +from enum import Enum +from typing import TypedDict + + +class ItemKind(str, Enum): + node = "node" + edge = "edge" + workflow = "workflow" + + +class WorkflowError(TypedDict): + kind: ItemKind # "node" | "edge" + id: str | None # nodeId or edgeId + field: str | None # “data.prompt”, “position.x”, … (optional) + message: str # human-readable text diff --git a/api/services/workflow/pipecat_engine.py b/api/services/workflow/pipecat_engine.py new file mode 100644 index 0000000..8a714cc --- /dev/null +++ b/api/services/workflow/pipecat_engine.py @@ -0,0 +1,939 @@ +from typing import TYPE_CHECKING, Any, Awaitable, Callable, Optional, Union + +from pipecat.frames.frames import ( + CancelFrame, + EndFrame, + FunctionCallResultProperties, + LLMFullResponseEndFrame, + LLMFullResponseStartFrame, + TTSSpeakFrame, +) +from pipecat.pipeline.task import PipelineTask +from pipecat.processors.aggregators.openai_llm_context import OpenAILLMContextFrame +from pipecat.services.llm_service import FunctionCallParams +from pipecat.services.openai.llm import OpenAILLMContext +from pipecat.transports.base_transport import BaseTransport +from pipecat.utils.enums import EndTaskReason + +from api.constants import VOICEMAIL_RECORDING_DURATION +from api.services.gender.gender_service import GenderService +from api.services.workflow.disposition_mapper import ( + apply_disposition_mapping, + get_organization_id_from_workflow_run, +) +from api.services.workflow.pipecat_engine_voicemail_detector import ( + VoicemailDetector, +) +from api.services.workflow.workflow import Node, WorkflowGraph + +if TYPE_CHECKING: + from pipecat.processors.audio.audio_buffer_processor import AudioBuffer + from pipecat.services.anthropic.llm import AnthropicLLMService + from pipecat.services.google.llm import GoogleLLMService + from pipecat.services.openai.llm import OpenAILLMService + + from api.services.telephony.stasis_rtp_connection import StasisRTPConnection + + LLMService = Union[OpenAILLMService, AnthropicLLMService, GoogleLLMService] + +import asyncio + +from loguru import logger +from pipecat.processors.filters.stt_mute_filter import STTMuteFilter +from pipecat.utils.tracing.context_registry import get_current_turn_context + +from api.services.workflow import pipecat_engine_callbacks as engine_callbacks +from api.services.workflow.pipecat_engine_utils import ( + get_function_schema, + render_template, + update_llm_context, +) +from api.services.workflow.pipecat_engine_variable_extractor import ( + VariableExtractionManager, +) +from api.services.workflow.tools.calculator import get_calculator_tools, safe_calculator +from api.services.workflow.tools.timezone import ( + convert_time, + get_current_time, + get_time_tools, +) + + +class PipecatEngine: + def __init__( + self, + *, + task: Optional[PipelineTask] = None, + llm: Optional["LLMService"] = None, + context: Optional[OpenAILLMContext] = None, + tts: Optional[Any] = None, + transport: Optional[BaseTransport] = None, + workflow: WorkflowGraph, + call_context_vars: dict, + audio_buffer: Optional["AudioBuffer"] = None, + workflow_run_id: Optional[int] = None, + ): + self.task = task + self.llm = llm + self.context = context + self.tts = tts + self.transport = transport + self.workflow = workflow + self._call_context_vars = call_context_vars + self._audio_buffer = audio_buffer + self._workflow_run_id = workflow_run_id + self._initialized = False + self._pending_function_calls = 0 + self._current_node: Optional[Node] = None + self._gathered_context: dict = {} + self._user_response_timeout_task: Optional[asyncio.Task] = None + self._call_disposition: Optional[str] = None + + # Stasis connection for immediate transfers + self._stasis_connection: Optional["StasisRTPConnection"] = None + + # Will be set later in initialize() when we have + # access to _context + self._variable_extraction_manager = None + + self._gender_service = GenderService(confidence_threshold=0.5) + + # Voicemail detection state + self._detect_voicemail = False + self._voicemail_detector = None + self._voicemail_detection_task: Optional[asyncio.Task] = None + + # This transition is generated by the llm as part of tool call. This can + # also be accompanied with some content which can be played using TTS. If the + # bot is interrupted, we would cancel this transition (we do cancel this currently when + # the next generation starts in handle_generation_started callback handler.) + self._pending_generated_transition_after_context_push: Optional[ + Callable[[], Awaitable[None]] + ] = None + + # This is the transtion which is typically programmatic transition, and not goes as + # tool call to LLM. This is not interrupted by the user and is done on context push + self._pending_control_transition_after_context_push: Optional[ + Callable[[], Awaitable[None]] + ] = None + + # Flag to determine if the current llm generation has a text completion + self._defer_context_push: bool = False + + # Lazy loaded built-in function schemas + self._builtin_function_schemas: Optional[list[dict]] = None + + # Flag to control whether to queue context frame + self._queue_context_frame: bool = True + + # Track current LLM reference text for TTS aggregation correction + self._current_llm_reference_text: str = "" + + @property + def builtin_function_schemas(self) -> list[dict]: + """Get built-in function schemas (calculator and timezone tools).""" + if self._builtin_function_schemas is None: + self._builtin_function_schemas = [] + + # Transform calculator tools to get_function_schema format + for tool in get_calculator_tools(): + func = tool["function"] + schema = get_function_schema( + func["name"], + func["description"], + properties=func["parameters"]["properties"], + required=func["parameters"]["required"], + ) + self._builtin_function_schemas.append(schema) + + # Transform timezone tools to get_function_schema format + for tool in get_time_tools(): + func = tool["function"] + schema = get_function_schema( + func["name"], + func["description"], + properties=func["parameters"]["properties"], + required=func["parameters"]["required"], + ) + self._builtin_function_schemas.append(schema) + + return self._builtin_function_schemas + + async def initialize(self): + # TODO: May be set_node in a separate task so that we return from initialize immediately + if self._initialized: + logger.warning(f"{self.__class__.__name__} already initialized") + return + try: + self._initialized = True + + # Helper that encapsulates variable extraction logic + self._variable_extraction_manager = VariableExtractionManager(self) + + # Add current time in EST (America/New_York) to gathered context + try: + est_time_result = get_current_time("America/New_York") + # The get_current_time utility returns a dict with 'datetime' field + # Store the ISO formatted datetime string under the key 'time' + self._gathered_context["time"] = est_time_result.get("datetime") + except Exception as e: + logger.error(f"Failed to fetch current EST time: {e}") + + # Register built-in functions with the LLM + await self._register_builtin_functions() + + # Set gender in initial context predicted from first name + if "first_name" in self._call_context_vars: + salutation = await self._gender_service.get_salutation( + self._call_context_vars["first_name"] + ) + self._call_context_vars["salutation"] = salutation + + await self.set_node(self.workflow.start_node_id) + logger.debug(f"{self.__class__.__name__} initialized") + except Exception as e: + logger.error(f"Error initializing {self.__class__.__name__}: {e}") + raise + + def _get_function_schema(self, function_name: str, description: str): + """Thin wrapper around utils.get_function_schema for backwards compatibility.""" + + return get_function_schema(function_name, description) + + async def _update_llm_context(self, system_message: dict, functions: list[dict]): + """Delegate context update to the shared workflow.utils implementation.""" + + update_llm_context(self.context, system_message, functions) + + def _format_prompt(self, prompt: str) -> str: + """Delegate prompt formatting to the shared workflow.utils implementation.""" + + return render_template(prompt, self._call_context_vars) + + async def _create_transition_func(self, name: str, transition_to_node: str): + async def transition_func(function_call_params: FunctionCallParams) -> None: + """Inner function that handles the actual tool invocation.""" + try: + # Track pending function call + self._pending_function_calls += 1 + logger.debug( + f"Function call pending: {function_call_params.function_name} (total: {self._pending_function_calls})" + ) + + # For edge functions, prevent LLM completion until transition (run_llm=False) + # For node functions, allow immediate completion (run_llm=True) + async def on_context_updated() -> None: + """ + Framework will run this function after the function call result has been updated in the context. + This way, when we do set_node from within this function, and go for LLM completion with updated + system prompts, the context is updated with function call result. + """ + self._pending_function_calls -= 1 + # Perform variable extraction before transitioning to new node + await self._perform_variable_extraction_if_needed( + self._current_node + ) + await self.set_node(transition_to_node) + + result = {"status": "done"} + + properties = FunctionCallResultProperties( + run_llm=False, + on_context_updated=on_context_updated, + ) + + async def _invoke_result_callback(): + """ + Functions are executed immediately when they come from LLM as part of text completion. + But, if the LLM completion also has some text, we would want to not call the function if the user interrupts the speech. + We would also not want the function to be added to context, so that the LLM can call the function again. Hence, we + defer the function invocation until we receive on_context_updated callback, i.e the bot has finished speaking + the text that was generated. + """ + await function_call_params.result_callback( + result, properties=properties + ) + + if self._defer_context_push: + """ + We set the flag to _defer_context_push when we receive text in the current generation from LLM. + This is set in the handle_llm_generated_text callback handler. + """ + logger.debug( + "Deferring transition function result until context push" + ) + # Only one deferred transition should exist at any time. + # Overwrite if one is somehow already set (unexpected). + self._pending_generated_transition_after_context_push = ( + _invoke_result_callback + ) + else: + """ + If there was no text in the current generation, and we only had function call, + lets invoke the result callback, so that framework can call on_context_updated and + we can do switch node. + """ + await _invoke_result_callback() + except Exception as e: + logger.error(f"Error in transition function {name}: {str(e)}") + self._pending_function_calls = 0 + error_result = {"status": "error", "error": str(e)} + await function_call_params.result_callback(error_result) + + return transition_func + + async def _register_transition_function_with_llm( + self, name: str, transition_to_node: str + ): + logger.debug( + f"Registering function {name} to transition to node {transition_to_node} with LLM" + ) + + # Create transition function + transition_func = await self._create_transition_func(name, transition_to_node) + + # Register function with LLM + self.llm.register_function( + name, + transition_func, + cancel_on_interruption=True, + ) + + async def _register_builtin_functions(self): + """Register built-in functions (calculator and timezone) with the LLM.""" + logger.debug("Registering built-in functions with LLM") + + properties = FunctionCallResultProperties(run_llm=True) + + # Register calculator function + async def calculate_func(function_call_params: FunctionCallParams) -> None: + try: + expr = function_call_params.arguments.get("expression", "") + result = safe_calculator(expr) + await function_call_params.result_callback( + {"expression": expr, "result": result}, properties=properties + ) + except Exception as e: + await function_call_params.result_callback( + {"error": str(e)}, properties=properties + ) + + # Register timezone functions + async def get_current_time_func( + function_call_params: FunctionCallParams, + ) -> None: + try: + timezone = function_call_params.arguments.get("timezone", "UTC") + result = get_current_time(timezone) + await function_call_params.result_callback( + result, properties=properties + ) + except Exception as e: + await function_call_params.result_callback( + {"error": str(e)}, properties=properties + ) + + async def convert_time_func(function_call_params: FunctionCallParams) -> None: + try: + result = convert_time( + function_call_params.arguments.get("source_timezone"), + function_call_params.arguments.get("time"), + function_call_params.arguments.get("target_timezone"), + ) + await function_call_params.result_callback( + result, properties=properties + ) + except Exception as e: + await function_call_params.result_callback( + {"error": str(e)}, properties=properties + ) + + # Register all built-in functions + self.llm.register_function("safe_calculator", calculate_func) + self.llm.register_function("get_current_time", get_current_time_func) + self.llm.register_function("convert_time", convert_time_func) + + async def _queue_tts_response(self, text: str) -> None: + """Queue TTS frames for static text response.""" + await self.task.queue_frames( + [ + LLMFullResponseStartFrame(), + TTSSpeakFrame(text=text), + LLMFullResponseEndFrame(), + ] + ) + + async def _setup_static_start_node_transition(self, node: Node) -> None: + """Set up the deferred transition for static start nodes.""" + if not node.out_edges: + return + + next_node_id = node.out_edges[0].target + + if not node.wait_for_user_response: + # Normal static start node - transition immediately after context push + async def _deferred_static_transition(): + try: + await self.set_node(next_node_id) + except Exception as exc: + logger.error( + f"Error executing deferred static node transition to {next_node_id}: {exc}" + ) + + self._pending_control_transition_after_context_push = ( + _deferred_static_transition + ) + + async def _perform_variable_extraction_if_needed( + self, previous_node: Optional[Node] + ) -> None: + """Perform variable extraction if the previous node had extraction enabled.""" + if ( + previous_node + and previous_node.extraction_enabled + and previous_node.extraction_variables + ): + logger.debug( + f"Scheduling background variable extraction for node: {previous_node.name}" + ) + + # Capture the current turn context before creating the background task + parent_context = get_current_turn_context() + extraction_prompt = self._format_prompt(previous_node.extraction_prompt) + extraction_variables = previous_node.extraction_variables + + async def _background_extraction(): + try: + extracted_data = ( + await self._variable_extraction_manager._perform_extraction( + extraction_variables, parent_context, extraction_prompt + ) + ) + self._gathered_context.update(extracted_data) + logger.debug( + f"Background variable extraction completed. Extracted: {extracted_data}" + ) + except Exception as e: + logger.error( + f"Error during background variable extraction: {str(e)}" + ) + + # Fire and forget - extraction happens in background without blocking + asyncio.create_task(_background_extraction()) + + async def _setup_llm_context_and_start_generation(self, node: Node) -> None: + """Common method to set up LLM context and queue context frame for non-static nodes.""" + # Set node name for tracing + try: + self.context.set_node_name(node.name) + except AttributeError: + logger.warning(f"context has no set_node_name method") + + # Register transition functions if not an end node + if not node.is_end: + for outgoing_edge in node.out_edges: + await self._register_transition_function_with_llm( + outgoing_edge.get_function_name(), outgoing_edge.target + ) + + # Set up system message and functions + ( + system_message, + functions, + ) = await self._compose_system_message_functions_for_node(node) + await self._update_llm_context(system_message, functions) + + # Queue context frame if needed + if self._queue_context_frame: + await self.task.queue_frame(OpenAILLMContextFrame(self.context)) + else: + logger.debug( + f"Not queueing context frame for node: {node.name} as _queue_context_frame is False" + ) + + # Reset _queue_context_frame as default behavior + self._queue_context_frame = True + + async def set_node(self, node_id: str): + """ + Simplified set_node implementation according to v2 PRD. + """ + node = self.workflow.nodes[node_id] + + logger.debug( + f"Executing node: name: {node.name} is_static: {node.is_static} allow_interrupt: {node.allow_interrupt} is_end: {node.is_end}" + ) + + # Set current node for all nodes (including static ones) so STT mute filter works + self._current_node = node + + # Handle start nodes + if node.is_start: + await self._handle_start_node(node) + # Handle end nodes + elif node.is_end: + await self._handle_end_node(node) + # Handle normal agent nodes + else: + await self._handle_agent_node(node) + + async def _handle_start_node(self, node: Node) -> None: + """Handle start node execution.""" + # Handle voicemail detection setup (before any returns) + if node.detect_voicemail: + if not self._audio_buffer: + logger.warning( + "Voicemail detection enabled but no audio buffer available - skipping detection" + ) + else: + logger.debug( + "Start node has detect_voicemail enabled - setting up audio-based detector" + ) + self._detect_voicemail = True + + self._voicemail_detector = VoicemailDetector( + detection_duration=VOICEMAIL_RECORDING_DURATION, + workflow_run_id=self._workflow_run_id, + ) + + # Register audio handler on the audio buffer input processor + audio_input = self._audio_buffer.input() + + @audio_input.event_handler("on_input_audio_data") + async def handle_voicemail_audio( + processor, pcm, sample_rate, num_channels + ): + if ( + self._voicemail_detector + and self._voicemail_detector.is_detecting + ): + await self._voicemail_detector.handle_audio_data( + processor, pcm, sample_rate, num_channels + ) + + # Start detection + await self._voicemail_detector.start_detection(self) + + # Check if delayed start is enabled + if node.delayed_start: + # Use configured duration or default to 3 seconds + delay_duration = node.delayed_start_duration or 2.0 + logger.debug( + f"Delayed start enabled - waiting {delay_duration} seconds before speaking" + ) + await asyncio.sleep(delay_duration) + + if node.is_static: + # Queue TTS for static start node + formatted_prompt = self._format_prompt(node.prompt) + await self._queue_tts_response(formatted_prompt) + + # Set up deferred transition for static start nodes + await self._setup_static_start_node_transition(node) + else: + # Start generation for non-static start node + await self._setup_llm_context_and_start_generation(node) + + async def _handle_end_node(self, node: Node) -> None: + """Handle end node execution.""" + if node.is_static: + # Queue TTS for static end node + formatted_prompt = self._format_prompt(node.prompt) + await self._queue_tts_response(formatted_prompt) + else: + # Start generation for non-static end node + await self._setup_llm_context_and_start_generation(node) + + # If this end node has extraction enabled, perform extraction immediately + if node.extraction_enabled and node.extraction_variables: + await self._perform_variable_extraction_if_needed(node) + + # TODO: Extract disposition code from extracted variables + # Defer send_end_task_frame using _pending_control_transition_after_context_push + + # Decide the end-task reason dynamically depending on call_disposition. + async def _deferred_end_task(): + # call_disposition is the disposition which is generated from + # llm call based on the conversation so far. + # TODO: Make this more generic based on configuration or llm prompting + disposition = self._gathered_context.get("call_disposition") + if disposition == "XFER": + reason = EndTaskReason.USER_QUALIFIED.value + else: + reason = EndTaskReason.USER_DISQUALIFIED.value + await self.send_end_task_frame(reason) + + self._pending_control_transition_after_context_push = _deferred_end_task + + async def _handle_agent_node(self, node: Node) -> None: + """Handle agent node execution.""" + if node.is_static: + # Queue TTS for static agent node + formatted_prompt = self._format_prompt(node.prompt) + await self._queue_tts_response(formatted_prompt) + + # Set up deferred transition for static agent nodes + await self._setup_agent_node_transition(node) + else: + # Set context and functions for non-static agent node + await self._setup_llm_context_and_start_generation(node) + + async def _setup_agent_node_transition(self, node: Node) -> None: + """Set up the deferred transition for static agent nodes.""" + if not node.out_edges: + return + + next_node_id = node.out_edges[0].target + + async def _deferred_static_transition(): + try: + await self.set_node(next_node_id) + except Exception as exc: + logger.error( + f"Error executing deferred static node transition to {next_node_id}: {exc}" + ) + + self._pending_control_transition_after_context_push = ( + _deferred_static_transition + ) + + async def send_end_task_frame( + self, + reason: str, + additional_metadata: dict = None, + abort_immediately: bool = False, + ): + """ + Centralized method to send EndTaskFrame with metadata including + call_transfer_context and call_context_vars + """ + frame_to_push = CancelFrame() if abort_immediately else EndFrame() + + # Customer disposition code using their mapping + mapped_disposition = "" + + # Apply disposition mapping - first try call_disposition if it is, + # extracted from the call conversation then fall back to reason + call_disposition = self._gathered_context.get("call_disposition", "") + organization_id = await get_organization_id_from_workflow_run( + self._workflow_run_id + ) + + if call_disposition: + # If call_disposition exists, map it + mapped_disposition = await apply_disposition_mapping( + call_disposition, organization_id + ) + # Store the original and mapped values + self._gathered_context["extracted_call_disposition"] = call_disposition + self._gathered_context["call_disposition"] = mapped_disposition + else: + # Otherwise, map the disconnect reason + mapped_disposition = await apply_disposition_mapping( + reason, organization_id + ) + # Store the mapped disconnect reason + self._gathered_context["call_disposition"] = mapped_disposition + + # TODO: Generalise this, currently tailored to Kapil's use case + self._gathered_context["address"] = ", ".join( + [ + self._call_context_vars.get("address1", ""), + self._call_context_vars.get("address2", ""), + self._call_context_vars.get("address3", ""), + self._call_context_vars.get("city", ""), + self._call_context_vars.get("state", ""), + self._call_context_vars.get("province", ""), + self._call_context_vars.get("postal_code", ""), + ] + ) + self._gathered_context["full_name"] = " ".join( + [ + self._call_context_vars.get("first_name", ""), + self._call_context_vars.get("middle_initial", ""), + self._call_context_vars.get("last_name", ""), + ] + ) + self._gathered_context["agent_name"] = "Alex" + self._gathered_context["customer_phone_number"] = self._call_context_vars.get( + "phone", "" + ) + self._gathered_context["timezone"] = self._call_context_vars.get("province", "") + self._gathered_context["vendor_id"] = self._call_context_vars.get( + "vendor_lead_code", "" + ) + + decision_maker = self._gathered_context.get("primary_cardholder", False) + employment_status = self._gathered_context.get("employment_status", "N/A") + call_transfer_context = { + "first_name": self._call_context_vars.get("first_name", ""), + "full_name": self._gathered_context.get("full_name", ""), + "phone": self._call_context_vars.get("phone", ""), + "lead_id": self._call_context_vars.get("lead_id"), + "disposition": mapped_disposition, + "agent_name": self._gathered_context.get("agent_name", "Alex"), + "decision_maker": str(decision_maker), + "employment": employment_status.title() if employment_status else "N/A", + "debts": self._gathered_context.get("total_debt", "N/A"), + "number_of_credit_cards": self._gathered_context.get( + "number_of_credit_cards", "N/A" + ), + "time": self._gathered_context.get("time"), + } + + logger.debug( + f"gathered_context: {self._gathered_context} call_transfer_context: {call_transfer_context}" + ) + + # Initiate immediate transfer for Stasis connections when user is qualified + if ( + reason == EndTaskReason.USER_QUALIFIED.value + and self._stasis_connection is not None + and not abort_immediately + ): + try: + logger.info( + f"Initiating immediate Stasis transfer for channel {self._stasis_connection.channel_id}" + ) + await self._stasis_connection.transfer(call_transfer_context) + logger.info("Immediate transfer initiated successfully") + except Exception as e: + logger.error(f"Failed to initiate immediate transfer: {e}") + # Continue with normal flow even if immediate transfer fails + + if reason == EndTaskReason.CALL_DURATION_EXCEEDED.value: + await self.task.queue_frame( + TTSSpeakFrame( + "Sorry! It seems like our time has exceeded. Someone from our team will reach out to you soon. Thank you!" + ) + ) + + metadata = { + # Keep original reason in metadata, which would be used to decide + # whether to disconnect or to transfer the call in the transport + "reason": reason, + "call_transfer_context": call_transfer_context, + } + + # Add any additional metadata + if additional_metadata: + metadata.update(additional_metadata) + + frame_to_push.metadata = metadata + + # Store the original reason for later retrieval in event handler + self._call_disposition = mapped_disposition + + logger.debug( + f"Finishing run with reason: {reason}, disposition: {mapped_disposition} queueing frame {frame_to_push}" + ) + await self.task.queue_frame(frame_to_push) + + async def _compose_system_message_functions_for_node( + self, node: "Node" + ) -> tuple[list[dict], list[dict]]: + """Generate the system messages and function schemas for the given node. + + This performs the same formatting logic used when entering a node but + does **not** register the functions with the LLM; callers are + responsible for that. + """ + + global_prompt = "" + if self.workflow.global_node_id and node.add_global_prompt: + global_node = self.workflow.nodes[self.workflow.global_node_id] + global_prompt = self._format_prompt(global_node.prompt) + + functions: list[dict] = [] + + # Add built-in function schemas (calculator and timezone tools) + functions.extend(self.builtin_function_schemas) + + # Transition functions (schema only; registration handled elsewhere) + for outgoing_edge in node.out_edges: + function_schema = self._get_function_schema( + outgoing_edge.get_function_name(), outgoing_edge.condition + ) + functions.append(function_schema) + + formatted_node_prompt = self._format_prompt(node.prompt) + + system_message = { + "role": "system", + "content": "\n\n".join( + p for p in (global_prompt, formatted_node_prompt) if p + ), + } + + return system_message, functions + + # ------------------------------------------------------------------ + # Pending transition handling + # ------------------------------------------------------------------ + + async def flush_pending_transitions(self, *, source: str = "context_push"): + """Execute and clear any pending transitions. + + Args: + source: Indicates the trigger that caused this flush: + - "context_push": the assistant context aggregator completed a push. + """ + + if source != "context_push": + raise ValueError("Invalid flush source – expected 'context_push'") + + len_pending_functions = 0 + + if self._pending_generated_transition_after_context_push is not None: + len_pending_functions += 1 + if self._pending_control_transition_after_context_push is not None: + len_pending_functions += 1 + + # Nothing to do + if len_pending_functions == 0: + return + + logger.debug( + f"Flushing {len_pending_functions} pending transition(s) after {source.replace('_', ' ')}" + ) + + # Generated transition + if self._pending_generated_transition_after_context_push is not None: + pending_cb = self._pending_generated_transition_after_context_push + self._pending_generated_transition_after_context_push = None + try: + await pending_cb() + except Exception as exc: # pragma: no cover + logger.error(f"Error executing deferred transition: {exc}") + + # Control transition (context push) + if self._pending_control_transition_after_context_push is not None: + logger.debug("Executing control transition after context push") + static_cb = self._pending_control_transition_after_context_push + self._pending_control_transition_after_context_push = None + try: + await static_cb() + except Exception as exc: # pragma: no cover + logger.error(f"Error executing deferred static node transition: {exc}") + + def create_should_mute_callback(self) -> Callable[[STTMuteFilter], Awaitable[bool]]: + """ + This callback is called by STTMuteFilter to determine if the STT should be muted. + """ + return engine_callbacks.create_should_mute_callback(self) + + def create_user_idle_callback(self): + """ + This callback is called when the user is idle for a certain duration. + We use this to either play the static text or end the call + """ + return engine_callbacks.create_user_idle_callback(self) + + def create_max_duration_callback(self): + """ + This callback is called when the call duration exceeds the max duration. + We use this to send the EndTaskFrame. + """ + return engine_callbacks.create_max_duration_callback(self) + + def create_llm_generated_text_callback(self): + """ + This callback is called when some text is generated by the LLM. + We use this to defer the result_callback of the node transition functions if + there is set_node called along with some text generated. This way, we will + have the context sent in the next generation from new node. + """ + return engine_callbacks.create_llm_generated_text_callback(self) + + def create_generation_started_callback(self): + """ + This callback is called when a new generation starts. + This is used to reset the flags that control the flow of the engine. + """ + return engine_callbacks.create_generation_started_callback(self) + + def create_user_stopped_speaking_callback(self): + """ + This callback is called when the user stops speaking. + We use this to handle transitions when wait_for_user_response is enabled. + """ + return engine_callbacks.create_user_stopped_speaking_callback(self) + + def create_user_started_speaking_callback(self): + """ + This callback is called when the user starts speaking. + We use this to handle wait_for_user_greeting functionality. + """ + return engine_callbacks.create_user_started_speaking_callback(self) + + def create_aggregation_correction_callback(self) -> Callable[[str], str]: + """Create a callback that corrects corrupted aggregation using reference text.""" + return engine_callbacks.create_aggregation_correction_callback(self) + + def get_call_disposition(self) -> Optional[str]: + """Get the disconnect reason set by the engine.""" + return self._call_disposition + + def get_gathered_context(self) -> dict: + """Get the gathered context including extracted variables.""" + return self._gathered_context.copy() + + def set_context(self, context: OpenAILLMContext) -> None: + """Set the OpenAI LLM context. + + This allows setting the context after the engine has been created, + which is useful when the context needs to be created after the engine. + """ + self.context = context + + def set_task(self, task: PipelineTask) -> None: + """Set the pipeline task. + + This allows setting the task after the engine has been created, + which is useful when the task needs to be created after the engine. + """ + self.task = task + + def set_audio_buffer(self, audio_buffer: "AudioBuffer") -> None: + """Set the audio buffer. + + This allows setting the audio buffer after the engine has been created, + which is useful when the audio buffer needs to be created after the engine. + """ + self._audio_buffer = audio_buffer + + def set_stasis_connection( + self, connection: Optional["StasisRTPConnection"] + ) -> None: + """Set the Stasis RTP connection for immediate transfers. + + This allows the engine to initiate transfers immediately when XFER + disposition is detected, without waiting for pipeline shutdown. + + Args: + connection: The StasisRTPConnection instance, or None for non-Stasis transports + """ + self._stasis_connection = connection + if connection: + logger.debug( + f"Stasis connection set for immediate transfers: {connection.channel_id}" + ) + + async def handle_llm_text_frame(self, text: str): + """Accumulate LLM text frames to build reference text.""" + self._current_llm_reference_text += text + + async def cleanup(self): + """Clean up engine resources on disconnect.""" + # Cancel any pending timeout tasks + if ( + self._user_response_timeout_task + and not self._user_response_timeout_task.done() + ): + self._user_response_timeout_task.cancel() + + # Stop voicemail detection if active + if self._voicemail_detector and hasattr( + self._voicemail_detector, "stop_detection" + ): + await self._voicemail_detector.stop_detection() diff --git a/api/services/workflow/pipecat_engine_callbacks.py b/api/services/workflow/pipecat_engine_callbacks.py new file mode 100644 index 0000000..13f2433 --- /dev/null +++ b/api/services/workflow/pipecat_engine_callbacks.py @@ -0,0 +1,305 @@ +from __future__ import annotations + +"""Callback factory helpers for :pyclass:`~api.services.workflow.pipecat_engine.PipecatEngine`. + +Each helper takes a :class:`PipecatEngine` instance and returns an async +callback function suitable for passing to the various pipeline processors. +Separating these helpers into their own module keeps +``pipecat_engine.py`` focused on high-level engine orchestration logic while +encapsulating the callback implementations here for easier maintenance and +unit-testing. +""" + +import re +from typing import TYPE_CHECKING, Awaitable, Callable + +from loguru import logger +from pipecat.frames.frames import ( + LLMFullResponseEndFrame, + LLMFullResponseStartFrame, + TTSSpeakFrame, +) +from pipecat.processors.filters.stt_mute_filter import STTMuteFilter +from pipecat.utils.enums import EndTaskReason + +if TYPE_CHECKING: + from pipecat.processors.user_idle_processor import UserIdleProcessor + + from api.services.workflow.pipecat_engine import PipecatEngine + + +# --------------------------------------------------------------------------- +# STT mute handling +# --------------------------------------------------------------------------- + + +def create_should_mute_callback( + engine: "PipecatEngine", +) -> Callable[[STTMuteFilter], Awaitable[bool]]: + """Return a callback indicating whether STT should be muted. + + STT is muted when *interruptions are **not*** allowed on the current node. + """ + + async def callback(_: STTMuteFilter) -> bool: # noqa: D401 + if engine._current_node is None: + # Default to not muting if we have no active node yet. + return False + + logger.debug( + f"STT mute callback: allow_interrupt={engine._current_node.allow_interrupt}" + ) + return not engine._current_node.allow_interrupt + + return callback + + +# --------------------------------------------------------------------------- +# User-idle handling +# --------------------------------------------------------------------------- + + +def create_user_idle_callback(engine: "PipecatEngine"): + """Return a callback that handles user-idle timeouts.""" + + async def handle_user_idle( + user_idle: "UserIdleProcessor", retry_count: int + ) -> bool: + logger.debug(f"Handling user_idle, attempt: {retry_count}") + + # Check if we're on a StartNode - if yes, directly disconnect + if engine._current_node and engine._current_node.is_start: + logger.debug("User idle on StartNode - disconnecting immediately") + await engine.send_end_task_frame( + EndTaskReason.USER_IDLE_MAX_DURATION_EXCEEDED.value + ) + return False + + if retry_count == 1: + # Simulate an LLM generation, so that we can have the LLM context + # updated with the new message + await engine.task.queue_frames( + [ + LLMFullResponseStartFrame(), + TTSSpeakFrame("Just checking in to see if you're still there."), + LLMFullResponseEndFrame(), + ] + ) + return True + + # Second attempt: terminate the call due to inactivity. + await user_idle.push_frame( + TTSSpeakFrame("It seems like you're busy right now. Have a nice day!") + ) + await engine.send_end_task_frame( + EndTaskReason.USER_IDLE_MAX_DURATION_EXCEEDED.value + ) + return False + + return handle_user_idle + + +# --------------------------------------------------------------------------- +# Max-duration handling +# --------------------------------------------------------------------------- + + +def create_max_duration_callback(engine: "PipecatEngine"): + """Return a callback that ends the task when the max call duration is exceeded.""" + + async def handle_max_duration(): + logger.debug("Max call duration exceeded. Terminating call") + await engine.send_end_task_frame(EndTaskReason.CALL_DURATION_EXCEEDED.value) + + return handle_max_duration + + +# --------------------------------------------------------------------------- +# LLM-generated-text handling +# --------------------------------------------------------------------------- + + +def create_llm_generated_text_callback(engine: "PipecatEngine"): + """Return a callback invoked when the LLM emits text (not only tool calls).""" + + async def handle_llm_generated_text(): # noqa: D401 + logger.debug( + "Generation has text content in current response - deferring context push from set_node" + ) + engine._defer_context_push = True + + return handle_llm_generated_text + + +# --------------------------------------------------------------------------- +# Generation-started handling +# --------------------------------------------------------------------------- + + +def create_generation_started_callback(engine: "PipecatEngine"): + """Return a callback that resets flags at the start of each LLM generation.""" + + async def handle_generation_started(): # noqa: D401 + logger.debug("LLM generation started - resetting defer flags and tool counters") + engine._defer_context_push = False + engine._pending_function_calls = 0 + engine._pending_generated_transition_after_context_push = None + # Clear reference text from previous generation + engine._current_llm_reference_text = "" + + return handle_generation_started + + +# --------------------------------------------------------------------------- +# User-stopped-speaking handling +# --------------------------------------------------------------------------- + + +def create_user_stopped_speaking_callback(engine: "PipecatEngine"): + """Return a callback that handles when the user stops speaking. + + According to simplified flow: + - For start nodes with wait_for_user_response=True: + - Cancel timeout task if still active + - Transition to next node with _queue_context_frame=False + """ + + async def handle_user_stopped_speaking(): + # Only handle if current node is a start node with wait_for_user_response + if ( + engine._current_node + and engine._current_node.is_start + and engine._current_node.wait_for_user_response + and engine._current_node.out_edges + ): + # Cancel timeout task if it's still active + if ( + engine._user_response_timeout_task + and not engine._user_response_timeout_task.done() + ): + logger.debug("Cancelling user response timeout - user responded") + engine._user_response_timeout_task.cancel() + engine._user_response_timeout_task = None + + # Transition to next node + next_node_id = engine._current_node.out_edges[0].target + logger.debug( + f"User stopped speaking after wait_for_user_response - transitioning to: {next_node_id}" + ) + + # Set flag to not queue context frame since + # it will be pushed by user context aggregator + # we are just setting the context with next node's + # functions and prompts + engine._queue_context_frame = False + + # Transition to next node + await engine.set_node(next_node_id) + + return handle_user_stopped_speaking + + +# --------------------------------------------------------------------------- +# User-started-speaking handling +# --------------------------------------------------------------------------- + + +def create_user_started_speaking_callback(engine: "PipecatEngine"): + """Return a callback that handles when the user starts speaking. + + According to simplified flow: + - For start nodes with wait_for_user_response=True: + - Cancel the timeout timer if it exists (but don't set to None) + """ + + async def handle_user_started_speaking(): + # Only handle if current node is a start node with wait_for_user_response + if ( + engine._current_node + and engine._current_node.is_start + and engine._current_node.wait_for_user_response + and engine._user_response_timeout_task + and not engine._user_response_timeout_task.done() + ): + logger.debug( + "User started speaking during wait_for_user_response - cancelling timeout timer" + ) + engine._user_response_timeout_task.cancel() + # Don't set to None here - let user_stopped_speaking handle the transition + + return handle_user_started_speaking + + +def create_aggregation_correction_callback(engine: "PipecatEngine"): + """Create a callback that uses engine's reference text to correct corrupted aggregation.""" + + def correct_corrupted_aggregation(ref: str, corrupted: str) -> str: + """Correct corrupted text by aligning it with reference text. + + This is a pure function that doesn't depend on engine instance. + """ + # 1) Safety check: if ref (minus spaces) is shorter than corrupted, bail out + # also if corrupted is less than 10 characters, lets also return that since most likely + # Elevenlabs returned the right alignment + alnum_corr = "".join(ch for ch in corrupted if ch.isalnum()) + alnum_ref = "".join(ch for ch in ref if ch.isalnum()) + + if corrupted in ref or len(alnum_ref) < len(alnum_corr) or len(alnum_corr) < 10: + return corrupted + + # 2) Find where in `ref` we should start aligning. + # We take the first N (N=10) characters of `corrupted` + # and look for all their occurrences in `ref`. + # We pick the *last* one + prefix = corrupted[:10] + + # find all start‐indices of that prefix in ref + starts = [m.start() for m in re.finditer(re.escape(prefix), ref)] + start_idx = starts[-1] if starts else 0 + + # 3) Now run the same two‑pointer scan from start_idx + i, j = start_idx, 0 + out_chars = [] + while i < len(ref) and j < len(corrupted): + r_ch, c_ch = ref[i], corrupted[j] + if r_ch == c_ch: + out_chars.append(r_ch) + i += 1 + j += 1 + + elif c_ch == " ": + # extra space in corrupted → skip it + j += 1 + + elif r_ch == " " or r_ch in ".,;:!?": + # missing structural char in corrupted → emit from ref + out_chars.append(r_ch) + i += 1 + + else: + # letter mismatch → best‑effort copy from ref + out_chars.append(r_ch) + i += 1 + j += 1 + + # 4) A final check - the final created output should be exactly + # as corrupted sentence sans whitespace. + alnum_out = "".join([ch for ch in out_chars if ch.isalnum()]) + if alnum_out != alnum_corr: + return corrupted + + # 5) Join and return exactly what we built + return "".join(out_chars) + + def correct_aggregation(corrupted: str) -> str: + reference = engine._current_llm_reference_text + + if not reference: + logger.warning("No reference text available for aggregation correction") + return corrupted + + # Apply the correction algorithm + corrected = correct_corrupted_aggregation(reference, corrupted) + return corrected + + return correct_aggregation diff --git a/api/services/workflow/pipecat_engine_utils.py b/api/services/workflow/pipecat_engine_utils.py new file mode 100644 index 0000000..b41c497 --- /dev/null +++ b/api/services/workflow/pipecat_engine_utils.py @@ -0,0 +1,90 @@ +from __future__ import annotations + +from typing import Any, Dict, List + +from google.genai.types import ( + Content, + Part, +) +from pipecat.adapters.schemas.function_schema import FunctionSchema +from pipecat.adapters.schemas.tools_schema import ToolsSchema +from pipecat.services.google.llm import GoogleLLMContext +from pipecat.services.openai.llm import OpenAILLMContext + +from api.utils.template_renderer import render_template + +__all__ = [ + "get_function_schema", + "update_llm_context", + "render_template", +] + + +def get_function_schema( + function_name: str, + description: str, + *, + properties: Dict[str, Any] | None = None, + required: List[str] | None = None, +) -> FunctionSchema: + """Create a FunctionSchema definition that can later be transformed into + the provider-specific format (OpenAI, Gemini, etc.). + + The helper keeps the public signature backward-compatible – callers that + only pass ``function_name`` and ``description`` continue to work and will + define a parameter-less function. + """ + + return FunctionSchema( + name=function_name, + description=description, + properties=properties or {}, + required=required or [], + ) + + +def update_llm_context( + context: OpenAILLMContext, + system_message: Dict[str, Any], + functions: List[FunctionSchema], +) -> None: + """Update *context* with an up-to-date system message and tool list. + + This helper removes any previous system messages before inserting the new + *system_message* at the top of the conversation history and then instructs + the LLM which *functions* (a.k.a. tools) are currently available. + """ + + # Wrap the provided function schemas in a ToolsSchema so that the adapter + # associated with the current LLM service can convert them to the correct + # provider-specific representation when required. + tools_schema = ToolsSchema(standard_tools=functions) + + if isinstance(context, GoogleLLMContext): + context.system_message = system_message["content"] + + if functions: + # Lets only call set_tools if we have functions, else Gemini will + # throw an exception + context.set_tools(tools_schema) + + if context.messages[-1].role != "user": + # Google expects the last message should end with user message + context.add_message(Content(role="user", parts=[Part(text="...")])) + return + + # In case of OpenAILLMContext, replace the system message with incoming system message + previous_interactions = context.messages + + # Filter out old system messages but keep user/assistant/function content. + messages: List[Dict[str, Any]] = [system_message] + messages.extend( + interaction + for interaction in previous_interactions + if interaction["role"] != "system" + ) + + context.set_messages(messages) + + if functions: + context.set_tools(tools_schema) diff --git a/api/services/workflow/pipecat_engine_variable_extractor.py b/api/services/workflow/pipecat_engine_variable_extractor.py new file mode 100644 index 0000000..798a82f --- /dev/null +++ b/api/services/workflow/pipecat_engine_variable_extractor.py @@ -0,0 +1,192 @@ +from __future__ import annotations + +import json +import os +from typing import TYPE_CHECKING, Any, List + +from loguru import logger +from openai import AsyncOpenAI +from opentelemetry import trace +from pipecat.services.openai.llm import OpenAILLMContext +from pipecat.utils.tracing.service_attributes import add_llm_span_attributes + +from api.services.pipecat.tracing_config import is_tracing_enabled +from api.services.workflow.dto import ExtractionVariableDTO + +if TYPE_CHECKING: + from api.services.workflow.pipecat_engine import PipecatEngine + + +class VariableExtractionManager: + """Helper that registers and executes the \"extract_variables\" tool. + + The manager is responsible for two things: + 1. Registering a callable with the LLM service so that the tool can be + invoked from within the model. + 2. Executing the extraction in a background task while maintaining + correct bookkeeping and optional OpenTelemetry tracing. + """ + + def __init__(self, engine: "PipecatEngine") -> None: # noqa: F821 + # We keep a reference to the engine so we can reuse its context + # and update internal counters / extracted variable state. + self._engine = engine + self._context = engine.context + self._model = "gpt-4o" + + # ------------------------------------------------------------------ + # Internal helpers + # ------------------------------------------------------------------ + async def _perform_extraction( + self, + extraction_variables: List[ExtractionVariableDTO], + parent_ctx: Any, + extraction_prompt: str = "", + ) -> dict: + """Run the actual extraction chat completion and post-process the result.""" + + # ------------------------------------------------------------------ + # Build the prompt that instructs the model to extract the variables. + # ------------------------------------------------------------------ + vars_description = "\n".join( + f"- {v.name} ({v.type}): {v.prompt}" for v in extraction_variables + ) + + # ------------------------------------------------------------------ + # Build a normalized representation of the existing conversation so the + # extractor works with both OpenAI-style (dict) messages and Google + # Gemini `Content` objects. + # ------------------------------------------------------------------ + def _get_role_and_content(msg: Any) -> tuple[str | None, str | None]: + """Return a pair of (role, content) for the given message. + + The logic supports both OpenAI-style dict messages and Google + `Content` objects that expose ``role`` and ``parts`` attributes. + Only plain textual content is extracted – image parts, tool call + placeholders, etc. are ignored for the purpose of variable + extraction. + """ + + # -------------------------------------------------------------- + # OpenAI format → simple dict with ``role`` and ``content`` keys + # -------------------------------------------------------------- + if isinstance(msg, dict): + role = msg.get("role") + content_field = msg.get("content") + + # Content can be a str, list of segments, or None. + if isinstance(content_field, str): + content = content_field + elif isinstance(content_field, list): + # Collapse all text parts into a single string. + texts = [ + segment.get("text", "") + for segment in content_field + if isinstance(segment, dict) and segment.get("type") == "text" + ] + content = " ".join(texts) if texts else None + else: + content = None + + return role, content + + # -------------------------------------------------------------- + # Google Gemini format → ``Content`` object with ``parts`` list + # -------------------------------------------------------------- + role_attr = getattr(msg, "role", None) + parts_attr = getattr(msg, "parts", None) + + if role_attr is None or parts_attr is None: + return None, None # Unrecognised message format + + role = ( + "assistant" if role_attr == "model" else role_attr + ) # Normalise role name + + # Collect textual parts only (ignore images, function calls, etc.) + texts: list[str] = [] + for part in parts_attr: + text_val = getattr(part, "text", None) + if text_val: + texts.append(text_val) + + content = " ".join(texts) if texts else None + return role, content + + conversation_lines: list[str] = [] + for msg in self._context.messages: + role, content = _get_role_and_content(msg) + if role in ("assistant", "user") and content: + conversation_lines.append(f"{role}: {content}") + + conversation_history = "\n".join(conversation_lines) + + system_prompt = ( + "You are an assistant tasked with extracting structured data from the conversation. " + "Return ONLY a valid JSON object with the requested variables as top-level keys. Do not wrap the JSON in markdown." # noqa: E501 + ) + # Use provided extraction_prompt as system prompt, or default + system_prompt = ( + system_prompt + "\n\n" + extraction_prompt + if extraction_prompt + else system_prompt + ) + + user_prompt = ( + "\n\nVariables to extract:\n" + f"{vars_description}" + "\n\nConversation history:\n" + f"{conversation_history}" + ) + + extraction_context = OpenAILLMContext() + extraction_messages = [ + {"role": "system", "content": system_prompt}, + {"role": "user", "content": user_prompt}, + ] + extraction_context.set_messages(extraction_messages) + + # ------------------------------------------------------------------ + # Use independent OpenAI client for LLM call + # ------------------------------------------------------------------ + client = AsyncOpenAI(api_key=os.environ.get("OPENAI_API_KEY")) + + # Direct API call - no pipeline involvement + response = await client.chat.completions.create( + model=self._model, + messages=extraction_messages, + temperature=0.0, + response_format={"type": "json_object"}, + ) + + llm_response = response.choices[0].message.content + + if is_tracing_enabled(): + tracer = trace.get_tracer("pipecat") + with tracer.start_as_current_span( + "variable_extraction", context=parent_ctx + ) as span: + add_llm_span_attributes( + span, + service_name="OpenAILLMService", + model=self._model, + operation_name="variable_extraction", + messages=json.dumps(extraction_messages), + output=llm_response, + stream=False, + parameters={"temperature": 0.0, "response_format": "json_object"}, + ) + + # ------------------------------------------------------------------ + # Parse the assistant output – fall back to raw text if it is not valid JSON. + # ------------------------------------------------------------------ + try: + extracted = json.loads(llm_response) + except json.JSONDecodeError: + logger.warning( + "Extractor returned invalid JSON; storing raw content instead." + ) + extracted = {"raw": llm_response} + + logger.debug(f"Extracted variables: {extracted}") + return extracted diff --git a/api/services/workflow/pipecat_engine_voicemail_detector.py b/api/services/workflow/pipecat_engine_voicemail_detector.py new file mode 100644 index 0000000..3b2b029 --- /dev/null +++ b/api/services/workflow/pipecat_engine_voicemail_detector.py @@ -0,0 +1,448 @@ +from __future__ import annotations + +import asyncio +import io +import json +import os +import tempfile +import wave +from typing import TYPE_CHECKING, Optional + +from langfuse import get_client +from loguru import logger +from openai import AsyncOpenAI +from opentelemetry import context as otel_context +from pipecat.utils.enums import EndTaskReason +from pipecat.utils.tracing.context_registry import get_current_turn_context + +from api.db import db_client +from api.services.pipecat.tracing_config import is_tracing_enabled +from api.tasks.arq import enqueue_job +from api.tasks.function_names import FunctionNames + +if TYPE_CHECKING: + from api.services.workflow.pipecat_engine import PipecatEngine + + +DEFAULT_VOICEMAIL_PROMPT = """ +You are analyzing the beginning of a phone call to determine if it's a voicemail greeting. + +Common voicemail indicators: +- "You've reached the voicemail of..." +- "Please leave a message after the beep" +- "I'm not available right now" +- "Press 1 to leave a message" +- Robotic or pre-recorded voice quality mentioned +- Background music or hold music references + +Transcript: {transcript} + +Respond with a JSON object: +{ + "is_voicemail": true/false, + "confidence": 0.0-1.0, + "reasoning": "Brief explanation" +} +""" + + +class VoicemailDetector: + """ + Autonomous voicemail detection system that operates independently of the main pipeline. + """ + + def __init__(self, detection_duration: float = 15.0, workflow_run_id: int = None): + self.detection_duration = detection_duration + self.audio_buffer = bytearray() + self.is_detecting = False + self.workflow_run_id = workflow_run_id + self._langfuse_client = get_client() + + # We will set the sample rate when we receive the audio packet + self._sample_rate = None + + # Task management + self._detection_task: Optional[asyncio.Task] = None + self._is_cancelled = False + self._engine: Optional[PipecatEngine] = None + + # Event for audio collection completion + self._audio_collected_event = asyncio.Event() + + # ------------------------------------------------------------------ + # Utility helpers + # ------------------------------------------------------------------ + + def _current_duration_seconds(self) -> float: + """Return the duration (in seconds) of the audio currently in the buffer.""" + if self._sample_rate: + return len(self.audio_buffer) / (self._sample_rate * 2) + return 0.0 + + async def handle_audio_data( + self, processor, pcm: bytes, sample_rate: int, num_channels: int + ): + """Handle incoming audio data without affecting pipeline.""" + if not self.is_detecting or self._is_cancelled: + return + + # Store the actual sample rate from the first audio packet + if self._sample_rate is None: + self._sample_rate = sample_rate + logger.debug(f"Voicemail detector using sample rate: {sample_rate}") + + # Add to buffer without resampling + self.audio_buffer.extend(pcm) + + # Check if we've collected enough audio + current_duration = self._current_duration_seconds() + if current_duration >= self.detection_duration: + self._audio_collected_event.set() + + async def start_detection(self, engine: PipecatEngine): + """Start voicemail detection process.""" + logger.info("Starting voicemail detection") + self.is_detecting = True + self._is_cancelled = False + self._engine = engine + self._audio_collected_event.clear() + + # Start detection in background + self._detection_task = asyncio.create_task(self._run_detection_with_timeout()) + + async def stop_detection(self): + """Stop detection immediately (called on disconnect).""" + logger.info("Stopping voicemail detection due to disconnect") + self._is_cancelled = True + self.is_detecting = False + + # Set the event to unblock any waiting tasks + self._audio_collected_event.set() + + # Cancel ongoing detection task + if self._detection_task and not self._detection_task.done(): + self._detection_task.cancel() + + # Clear audio buffer + self.audio_buffer.clear() + + # Wait for tasks to complete cancellation + if self._detection_task: + try: + await self._detection_task + except asyncio.CancelledError: + pass + + async def _run_detection_with_timeout(self): + """Run detection with proper timeout and cancellation handling.""" + try: + # Wait for audio collection or cancellation directly + await self._wait_for_audio_collection() + + # Check if cancelled during collection + if self._is_cancelled: + logger.info("Detection cancelled during audio collection") + return + + # Process detection + await self._process_detection() + + except asyncio.CancelledError: + logger.info("Voicemail detection task cancelled") + except Exception as e: + logger.error(f"Error in voicemail detection: {e}") + finally: + self.is_detecting = False + + async def _wait_for_audio_collection(self): + """Wait for audio buffer to fill or timeout.""" + try: + # Wait for either audio collection completion or timeout + await asyncio.wait_for( + self._audio_collected_event.wait(), + timeout=self.detection_duration + 2.0, + ) + + if not self._is_cancelled: + current_duration = self._current_duration_seconds() + logger.info( + f"Collected {current_duration:.1f}s of audio for voicemail detection (sample rate: {self._sample_rate}Hz)" + ) + except asyncio.TimeoutError: + if not self._is_cancelled: + current_duration = self._current_duration_seconds() + logger.warning("Audio collection timeout exceeded") + logger.info( + f"Proceeding with {current_duration:.1f}s of audio (sample rate: {self._sample_rate}Hz)" + ) + + async def _process_detection(self): + """Process the collected audio to detect voicemail.""" + if not self.audio_buffer or not self._engine: + logger.warning("No audio buffer or engine available for detection") + return + + try: + # Convert PCM to WAV once for both transcription and storage + wav_data = self._create_wav_from_pcm(bytes(self.audio_buffer)) + + # Transcribe audio + logger.info("Transcribing audio for voicemail detection") + transcript = await self._transcribe_audio(wav_data) + + if not transcript: + logger.warning("No transcript obtained from audio") + + # Still upload the raw recording so data pipeline has it + if self.workflow_run_id: + await self._save_voicemail_audio(wav_data, 0.0, False) + + return + + logger.info( + f"Voicemail detection transcript obtained: {transcript[:100]}..." + ) + + # Analyze transcript + result = await self._analyze_transcript(transcript) + + # Extract common fields + confidence = result.get("confidence", 0.0) + reasoning = result.get("reasoning", "No reasoning provided") + + # Save voicemail audio to S3 once for data pipeline (include duration in filename) + s3_path = None + if self.workflow_run_id: + s3_path = await self._save_voicemail_audio( + wav_data, confidence, result.get("is_voicemail") + ) + + # Take action based on result + if result.get("is_voicemail", False): + logger.info( + f"Voicemail detected with confidence {confidence}: {reasoning}" + ) + + # Update workflow run with voicemail tags + if self.workflow_run_id: + # Fetch the workflow run from database + workflow_run = await db_client.get_workflow_run_by_id( + self.workflow_run_id + ) + if workflow_run: + call_tags = workflow_run.gathered_context.get("call_tags", []) + call_tags.extend(["voicemail_detected", "not_connected"]) + + await db_client.update_workflow_run( + run_id=workflow_run.id, + gathered_context={ + "call_tags": call_tags, + "voicemail_transcript": transcript, + "voicemail_confidence": confidence, + }, + ) + + # Send end task frame with metadata (including optional S3 path) + await self._engine.send_end_task_frame( + reason=EndTaskReason.VOICEMAIL_DETECTED.value, + additional_metadata={ + "voicemail_transcript": transcript, + "voicemail_confidence": confidence, + "voicemail_reasoning": reasoning, + "voicemail_detection_duration": self.detection_duration, + "voicemail_audio_s3_path": s3_path, + }, + abort_immediately=True, + ) + else: + logger.info("No voicemail detected, continuing normal conversation") + + except Exception as e: + logger.error(f"Error processing voicemail detection: {e}") + + async def _transcribe_audio(self, wav_data: bytes) -> str: + """Transcribe audio using OpenAI API directly. + + Args: + wav_data: WAV formatted audio data + """ + client = AsyncOpenAI(api_key=os.environ.get("OPENAI_API_KEY")) + + # Direct API call - no pipeline involvement + response = await client.audio.transcriptions.create( + file=("audio.wav", wav_data, "audio/wav"), + model="whisper-1", # Using whisper-1 as it's more stable for transcription + language="en", + temperature=0.0, + ) + + return response.text.strip() + + def _create_wav_from_pcm(self, pcm_data: bytes) -> bytes: + """Convert raw PCM data to WAV format.""" + wav_buffer = io.BytesIO() + with wave.open(wav_buffer, "wb") as wav_file: + wav_file.setnchannels(1) # Mono + wav_file.setsampwidth(2) # 16-bit + wav_file.setframerate(self._sample_rate) + wav_file.writeframes(pcm_data) + + wav_buffer.seek(0) + return wav_buffer.read() + + async def _analyze_transcript(self, transcript: str) -> dict: + """Analyze transcript using independent OpenAI client.""" + # Capture the current turn context for proper span nesting + parent_context = get_current_turn_context() + + client = AsyncOpenAI(api_key=os.environ.get("OPENAI_API_KEY")) + + langfuse_prompt = None + try: + langfuse_prompt = self._langfuse_client.get_prompt( + "production/voicemail_detection" + ) + prompt = langfuse_prompt.compile(transcript=transcript) + except Exception as e: + logger.warning(f"Error getting prompt from Langfuse: {e}") + prompt = DEFAULT_VOICEMAIL_PROMPT.replace("{transcript}", transcript) + + messages = [ + { + "role": "system", + "content": prompt, + } + ] + + # When we have a parent OpenTelemetry context, we need to activate it + # so that Langfuse's OTEL tracer will automatically pick it up + if parent_context and is_tracing_enabled(): + # Activate the parent context for this scope + token = otel_context.attach(parent_context) + try: + # Start Langfuse generation - it will automatically use the active OTEL context + langfuse_generation = None + try: + langfuse_generation = self._langfuse_client.start_generation( + name="voicemail_detection", + model="gpt-4o", + input=messages, + metadata={ + "temperature": 0.0, + "detection_duration": self.detection_duration, + "transcript_length": len(transcript), + }, + prompt=langfuse_prompt, + ) + except Exception as e: + logger.warning(f"Error starting Langfuse generation: {e}") + + # Direct API call + response = await client.chat.completions.create( + model="gpt-4o", + messages=messages, + temperature=0.0, + response_format={"type": "json_object"}, + ) + + llm_response = response.choices[0].message.content + + # Update and end Langfuse generation + if langfuse_generation: + try: + langfuse_generation.update( + output=llm_response, + usage_details={ + "prompt_tokens": response.usage.prompt_tokens + if response.usage + else 0, + "completion_tokens": response.usage.completion_tokens + if response.usage + else 0, + "total_tokens": response.usage.total_tokens + if response.usage + else 0, + }, + ) + langfuse_generation.end() + except Exception as e: + logger.warning(f"Error updating Langfuse generation: {e}") + finally: + # Detach the context + otel_context.detach(token) + else: + # No parent context or tracing disabled - just make the API call + response = await client.chat.completions.create( + model="gpt-4o", + messages=messages, + temperature=0.0, + response_format={"type": "json_object"}, + ) + llm_response = response.choices[0].message.content + + # Parse response + try: + return json.loads(llm_response) + except json.JSONDecodeError: + logger.warning("Invalid JSON response from voicemail detection") + return { + "is_voicemail": False, + "confidence": 0.0, + "reasoning": "Invalid response", + } + + async def _save_voicemail_audio( + self, wav_data: bytes, confidence: float, is_voicemail: bool + ) -> Optional[str]: + """Save voicemail audio to temp file and enqueue task to upload to S3. + + Args: + wav_data: WAV formatted audio data + confidence: Detection confidence score + is_voicemail: Whether it was detected as voicemail + + Returns: + The expected S3 object key (bucket path). The actual upload happens asynchronously. + """ + try: + # Create filename with prediction, confidence and duration + duration_seconds = self._current_duration_seconds() + prediction = "voicemail" if is_voicemail else "not_voicemail" + confidence_int = int(confidence * 100) + duration_int = int(duration_seconds) + s3_key = f"voicemail_detections/{self.workflow_run_id}_{prediction}_{confidence_int}_{duration_int}.wav" + + # Write WAV data to temp file - DO NOT delete it here, the async task will handle cleanup + with tempfile.NamedTemporaryFile( + suffix=".wav", + delete=False, # Important: don't delete immediately + prefix=f"voicemail_{self.workflow_run_id}_", + ) as tmp_file: + tmp_file.write(wav_data) + tmp_file.flush() + temp_file_path = tmp_file.name + + logger.info(f"Saved voicemail audio to temp file: {temp_file_path}") + + # Enqueue async task to upload to S3 + await enqueue_job( + FunctionNames.UPLOAD_VOICEMAIL_AUDIO_TO_S3, + self.workflow_run_id, + temp_file_path, + s3_key, + ) + + logger.info(f"Enqueued voicemail audio upload task for: {s3_key}") + return s3_key + + except Exception as e: + logger.error(f"Failed to save voicemail audio: {e}") + # Clean up temp file if task enqueue failed + if "temp_file_path" in locals() and os.path.exists(temp_file_path): + try: + os.remove(temp_file_path) + except Exception as cleanup_error: + logger.warning( + f"Failed to cleanup temp file after error: {cleanup_error}" + ) + return None diff --git a/api/services/workflow/test/__init__.py b/api/services/workflow/test/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/services/workflow/test/definitions/rf-1.json b/api/services/workflow/test/definitions/rf-1.json new file mode 100644 index 0000000..b470f71 --- /dev/null +++ b/api/services/workflow/test/definitions/rf-1.json @@ -0,0 +1,164 @@ +{ + "nodes": [ + { + "id": "915", + "type": "agentNode", + "position": { + "x": 633, + "y": 324 + }, + "data": { + "prompt": "You are a voice agent whose mode of speaking is voice. Ask the user whether they want to talk to a sales guy or a customer service agent", + "name": "Agent" + }, + "measured": { + "width": 300, + "height": 100 + }, + "selected": false, + "dragging": false + }, + { + "id": "7598", + "type": "agentNode", + "position": { + "x": 460.1247806640531, + "y": 610.3714977079578 + }, + "data": { + "prompt": "You are a customer service agent whose mode of communication with the user is voice. Tell them that someone from our team will reach out to them soon", + "name": "Agent" + }, + "measured": { + "width": 300, + "height": 100 + }, + "selected": false, + "dragging": false + }, + { + "id": "6919", + "type": "agentNode", + "position": { + "x": 914.666735413607, + "y": 642.9800281289787 + }, + "data": { + "prompt": "You are a sales representative whose mode of communication with the user is voice. Tell the user that someone from our team will reach out to you soon", + "name": "Agent" + }, + "measured": { + "width": 300, + "height": 100 + }, + "selected": false, + "dragging": false + }, + { + "id": "6581", + "type": "startCall", + "position": { + "x": 648, + "y": 35 + }, + "data": { + "prompt": "Hello, I am Abhishek from Dograh. ", + "is_static": true, + "name": "Start Call", + "is_start": true + }, + "measured": { + "width": 300, + "height": 100 + }, + "selected": false, + "dragging": false + }, + { + "id": "1802", + "type": "endCall", + "position": { + "x": 666.7733431033548, + "y": 987.4345801025363 + }, + "data": { + "prompt": "Thank you for calling Dograh. Have a great day!", + "is_static": true, + "name": "End Call" + }, + "measured": { + "width": 300, + "height": 100 + }, + "selected": false, + "dragging": false + } + ], + "edges": [ + { + "animated": true, + "type": "custom", + "source": "915", + "target": "7598", + "id": "xy-edge__915-7598", + "selected": false, + "data": { + "condition": "The customer wants to talk to a customer service agent", + "label": "customer service agent" + } + }, + { + "animated": true, + "type": "custom", + "source": "915", + "target": "6919", + "id": "xy-edge__915-6919", + "selected": false, + "data": { + "condition": "customer wants to talk to a sales representative", + "label": "sales representative" + } + }, + { + "animated": true, + "type": "custom", + "source": "6581", + "target": "915", + "id": "xy-edge__6581-915", + "selected": false, + "data": { + "condition": "Always take this route", + "label": "Always take this route" + } + }, + { + "animated": true, + "type": "custom", + "source": "7598", + "target": "1802", + "id": "xy-edge__7598-1802", + "selected": false, + "data": { + "condition": "end call", + "label": "end call" + } + }, + { + "animated": true, + "type": "custom", + "source": "6919", + "target": "1802", + "id": "xy-edge__6919-1802", + "selected": false, + "data": { + "condition": "end call", + "label": "end call" + } + } + ], + "viewport": { + "x": 0, + "y": 0, + "zoom": 1 + } +} \ No newline at end of file diff --git a/api/services/workflow/test/test_aggregation_fix.py b/api/services/workflow/test/test_aggregation_fix.py new file mode 100644 index 0000000..373ec1d --- /dev/null +++ b/api/services/workflow/test/test_aggregation_fix.py @@ -0,0 +1,192 @@ +from unittest.mock import Mock + +from api.services.workflow.pipecat_engine_callbacks import ( + create_aggregation_correction_callback, +) + + +def test_aggregation_fixer(): + """Validate the aggregation correction algorithm using a helper that + creates a fresh callback for every (reference, corrupted) pair. + + The production callback now needs a PipecatEngine instance with the + `_current_llm_reference_text` set. For test-friendliness we mock a bare + object providing just that attribute for each assertion so the original + two-argument test cases remain unchanged. + """ + + def fixer(reference: str, corrupted: str) -> str: # noqa: D401 + mock_engine = Mock() + mock_engine._current_llm_reference_text = reference + return create_aggregation_correction_callback(mock_engine)(corrupted) + + ##### Trailing extra Chars ##### + + assert ( + fixer( + "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?", + "My name is Alex and I am calling you from Cons umer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?", + ) + == "My name is Alex and I am calling you from Consumer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?" + ), "leading_whole_sentence" + + # Whole sentences + assert ( + fixer( + "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?", + "Good Morning Mr NAR GES , My name is Alex and I am calling you from Cons umer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?", + ) + == "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?" + ), "whole_sentences" + + # With a period in the end + assert ( + fixer( + "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?", + "Good Morning Mr NAR GES , My name is Alex and I am calling you from Cons umer Services.", + ) + == "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services." + ), "period_end" + + # without a period in the end + assert ( + fixer( + "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?", + "Good Morning Mr NAR GES , My name is Alex and I am calling you from Cons umer Services", + ) + == "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services" + ), "without_period_end" + + # Extra space in the end + assert ( + fixer( + "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?", + "Good Morning Mr NAR GES , My name is Alex and I am calling you from Cons umer Services ", + ) + == "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services" + ), "extra_space" + + # Multiple spaces in corruption + assert ( + fixer( + "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?", + "Good Morning Mr NAR GES , My name is Alex and I am calling you from Cons umer Servi ces ", + ) + == "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services" + ), "multiple_space" + + # Multiple spaces in corruption ending in a whitespace + assert ( + fixer( + "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?", + "Good Morning Mr NAR GES , My name is Alex and I am calling you from Cons umer Servi ces. ", + ) + == "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services. " + ), "multiple_space_end_ws" + + ##### Leading extra Chars ##### + + # Whole sentences + assert ( + fixer( + "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?", + "My name is Alex and I am calling you from Cons umer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?", + ) + == "My name is Alex and I am calling you from Consumer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?" + ), "leading_whole_sentence" + + # With a period in the end + assert ( + fixer( + "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?", + "My name is Alex and I am calling you from Cons umer Services.", + ) + == "My name is Alex and I am calling you from Consumer Services." + ), "leading_period_end" + + # without a period in the end + assert ( + fixer( + "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?", + "My name is Alex and I am calling you from Cons umer Services", + ) + == "My name is Alex and I am calling you from Consumer Services" + ), "leading_without_period_end" + + # Extra space in the end + assert ( + fixer( + "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?", + "My name is Alex and I am calling you from Cons umer Services ", + ) + == "My name is Alex and I am calling you from Consumer Services" + ), "leading_extra_space" + + # Multiple spaces in corruption + assert ( + fixer( + "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?", + "My name is Alex and I am calling you from Cons umer Servi ces ", + ) + == "My name is Alex and I am calling you from Consumer Services" + ), "leading_multiple_space" + + # Multiple spaces in corruption ending in a whitespace + assert ( + fixer( + "Good Morning Mr NARGES , My name is Alex and I am calling you from Consumer Services. The reason of my call today, as I can see in our records that you are making your monthly credit card payments on time, but you STILL carry a balance of over 7 thousand dollars, right?", + "My name is Alex and I am calling you from Cons umer Servi ces. ", + ) + == "My name is Alex and I am calling you from Consumer Services. " + ), "leading_multiple_space_end_ws" + + # Whitespace + assert fixer("", "") == "" + + # Missing reference + assert ( + fixer("", "My name is Alex and I am calling you from Cons umer Servi ces.") + == "My name is Alex and I am calling you from Cons umer Servi ces." + ), "missing_reference" + + # Smaller reference + assert ( + fixer( + "My name is Alex", + "My name is Alex and I am calling you from Cons umer Servi ces.", + ) + == "My name is Alex and I am calling you from Cons umer Servi ces." + ), "smaller_reference" + + # Unrelated reference + assert ( + fixer( + "Hello Hello", + "My name is Alex and I am calling you from Cons umer Servi ces.", + ) + == "My name is Alex and I am calling you from Cons umer Servi ces." + ), "unrelated_reference" + + +def test_create_aggregation_correction_callback(): + """Test the new aggregation correction callback creator.""" + # Mock engine with reference text + mock_engine = Mock() + mock_engine._current_llm_reference_text = "Good Morning Mr NARGES, My name is Alex and I am calling you from Consumer Services." + + # Create callback + callback = create_aggregation_correction_callback(mock_engine) + + # Test correction + corrected = callback( + "Good Morning Mr NAR GES, My name is Alex and I am calling you from Cons umer Services." + ) + assert ( + corrected + == "Good Morning Mr NARGES, My name is Alex and I am calling you from Consumer Services." + ) + + # Test with no reference text + mock_engine._current_llm_reference_text = "" + corrected = callback("Some corrupted text") + assert corrected == "Some corrupted text" # Should return as-is when no reference diff --git a/api/services/workflow/test/test_aggregation_integration.py b/api/services/workflow/test/test_aggregation_integration.py new file mode 100644 index 0000000..92e5faa --- /dev/null +++ b/api/services/workflow/test/test_aggregation_integration.py @@ -0,0 +1,128 @@ +from unittest.mock import Mock + +import pytest +from pipecat.processors.aggregators.llm_response import LLMAssistantAggregatorParams +from pipecat.services.openai.llm import OpenAILLMContext + +from api.services.workflow.pipecat_engine import PipecatEngine +from api.services.workflow.pipecat_engine_callbacks import ( + create_generation_started_callback, +) + + +class TestAggregationIntegration: + """Integration tests for the TTS aggregation correction flow.""" + + @pytest.mark.asyncio + async def test_engine_reference_text_tracking(self): + """Test that the engine properly tracks LLM reference text.""" + # Create mock dependencies + mock_task = Mock() + mock_llm = Mock() + mock_context = Mock(spec=OpenAILLMContext) + mock_tts = Mock() + mock_workflow = Mock() + mock_workflow.start_node_id = "start" + mock_workflow.nodes = { + "start": Mock(is_start=True, is_static=True, is_end=False, out_edges=[]) + } + + # Create engine + engine = PipecatEngine( + task=mock_task, + llm=mock_llm, + context=mock_context, + tts=mock_tts, + workflow=mock_workflow, + call_context_vars={}, + workflow_run_id=1, + ) + + # Test initial state + assert engine._current_llm_reference_text == "" + + # Test accumulating LLM text + await engine.handle_llm_text_frame("Hello ") + assert engine._current_llm_reference_text == "Hello " + + await engine.handle_llm_text_frame("world!") + assert engine._current_llm_reference_text == "Hello world!" + + # Test generation started callback clears reference text + callback = create_generation_started_callback(engine) + await callback() + assert engine._current_llm_reference_text == "" + + @pytest.mark.asyncio + async def test_aggregation_correction_callback_creation(self): + """Test creating the aggregation correction callback.""" + # Create mock engine + mock_task = Mock() + mock_llm = Mock() + mock_context = Mock(spec=OpenAILLMContext) + mock_workflow = Mock() + + engine = PipecatEngine( + task=mock_task, + llm=mock_llm, + context=mock_context, + workflow=mock_workflow, + call_context_vars={}, + workflow_run_id=1, + ) + + # Set reference text + engine._current_llm_reference_text = "Hello, world! How are you?" + + # Create correction callback + callback = engine.create_aggregation_correction_callback() + + # Test correction - note that trailing punctuation might be stripped if not in corrupted text + corrected = callback("Hello world How are you") + assert corrected == "Hello, world! How are you" + + def test_llm_assistant_aggregator_params_with_callback(self): + """Test that LLMAssistantAggregatorParams accepts correction callback.""" + + def mock_callback(text: str) -> str: + return text.upper() + + params = LLMAssistantAggregatorParams( + expect_stripped_words=True, correct_aggregation_callback=mock_callback + ) + + assert params.expect_stripped_words is True + assert params.correct_aggregation_callback is not None + assert params.correct_aggregation_callback("hello") == "HELLO" + + @pytest.mark.asyncio + async def test_pipeline_callbacks_processor_llm_text_frame(self): + """Test that PipelineEngineCallbacksProcessor handles LLMTextFrame.""" + from pipecat.frames.frames import LLMTextFrame + from pipecat.processors.frame_processor import FrameDirection + + from api.services.pipecat.pipeline_engine_callbacks_processor import ( + PipelineEngineCallbacksProcessor, + ) + + # Track callback invocations + callback_invoked = False + callback_text = None + + async def mock_llm_text_callback(text: str): + nonlocal callback_invoked, callback_text + callback_invoked = True + callback_text = text + + # Create processor with callback + processor = PipelineEngineCallbacksProcessor( + llm_text_frame_callback=mock_llm_text_callback + ) + + # Process LLMTextFrame + frame = LLMTextFrame(text="Hello world") + await processor.process_frame(frame, FrameDirection.DOWNSTREAM) + + # Verify callback was invoked + assert callback_invoked is True + assert callback_text == "Hello world" diff --git a/api/services/workflow/test/test_cost_calculator.py b/api/services/workflow/test/test_cost_calculator.py new file mode 100644 index 0000000..940ac58 --- /dev/null +++ b/api/services/workflow/test/test_cost_calculator.py @@ -0,0 +1,31 @@ +from api.services.pricing.cost_calculator import cost_calculator + + +def test_cost_calculator(): + """Test function to verify cost calculation works""" + sample_usage = { + "llm": { + "OpenAILLMService#0|||gpt-4.1-mini": { + "prompt_tokens": 45380, + "completion_tokens": 496, + "total_tokens": 45876, + "cache_read_input_tokens": 0, + "cache_creation_input_tokens": 0, + } + }, + "tts": {"ElevenLabsTTSService#0|||eleven_flash_v2_5": 2399}, + "stt": {"DeepgramSTTService#0|||nova-3-general": 177.21536946296692}, + "call_duration_seconds": 179, + } + + result = cost_calculator.calculate_total_cost(sample_usage) + assert result["llm_cost"] == 45380 * 0.40 / 1_000_000 + 496 * 1.60 / 1_000_000 + assert result["tts_cost"] == 2399 * 0.0256 / 1_000 + assert result["stt_cost"] == 177.21536946296692 / 60 * 0.0077 + assert ( + abs( + result["total"] + - (result["llm_cost"] + result["tts_cost"] + result["stt_cost"]) + ) + < 1e-10 + ) diff --git a/api/services/workflow/test/test_dto.py b/api/services/workflow/test/test_dto.py new file mode 100644 index 0000000..85655cf --- /dev/null +++ b/api/services/workflow/test/test_dto.py @@ -0,0 +1,11 @@ +import pytest + +from api.services.workflow.dto import ReactFlowDTO + + +@pytest.mark.asyncio +async def test_dto(): + # assert no exceptions are raised + with open("services/workflow/test/definitions/rf-1.json", "r") as f: + dto = ReactFlowDTO.model_validate_json(f.read()) + assert dto is not None diff --git a/api/services/workflow/test/test_interruption_correction.py b/api/services/workflow/test/test_interruption_correction.py new file mode 100644 index 0000000..21da54e --- /dev/null +++ b/api/services/workflow/test/test_interruption_correction.py @@ -0,0 +1,159 @@ +from unittest.mock import AsyncMock, Mock + +import pytest +from pipecat.frames.frames import StartInterruptionFrame +from pipecat.processors.aggregators.llm_response import LLMAssistantAggregatorParams +from pipecat.services.openai.llm import ( + OpenAIAssistantContextAggregator, + OpenAILLMContext, +) + + +class TestInterruptionCorrection: + """Test that TTS aggregation correction works during interruptions.""" + + @pytest.mark.asyncio + async def test_openai_interruption_with_correction(self): + """Test OpenAI assistant context aggregator applies correction during interruption.""" + # Create mock context + mock_context = Mock(spec=OpenAILLMContext) + mock_context.get_messages.return_value = [] + mock_context.add_message = Mock() + + # Create correction callback + def correction_callback(text: str) -> str: + # Simulate fixing corrupted text + if text == "Hello world how are you": + return "Hello world, how are you" + return text + + # Create aggregator with correction callback + params = LLMAssistantAggregatorParams( + expect_stripped_words=True, correct_aggregation_callback=correction_callback + ) + + aggregator = OpenAIAssistantContextAggregator( + context=mock_context, params=params + ) + + # Set up aggregation state + aggregator._aggregation = "Hello world how are you" + aggregator._current_llm_response_id = "test-id" + aggregator._response_function_messages = {} + aggregator._function_calls_in_progress = {} + aggregator._started = 1 + + # Mock push_context_frame and reset methods + aggregator.push_context_frame = AsyncMock() + aggregator.reset = AsyncMock() + + # Process interruption + interruption_frame = StartInterruptionFrame() + await aggregator._handle_interruptions(interruption_frame) + + # Verify the corrected text was added to context + mock_context.add_message.assert_called_once() + added_message = mock_context.add_message.call_args[0][0] + assert added_message["role"] == "assistant" + assert ( + added_message["content"] + == "Hello world, how are you <>" + ) + + @pytest.mark.asyncio + async def test_google_interruption_with_correction(self): + """Test Google assistant context aggregator applies correction during interruption.""" + from pipecat.services.google.llm import ( + Content, + GoogleAssistantContextAggregator, + ) + + # Create mock context + mock_context = Mock(spec=OpenAILLMContext) + mock_context.get_messages.return_value = [] + mock_context.add_message = Mock() + + # Create correction callback + def correction_callback(text: str) -> str: + # Simulate fixing corrupted text + if text == "I am here to help": + return "I am here to help" + return text + + # Create aggregator with correction callback + params = LLMAssistantAggregatorParams( + expect_stripped_words=True, correct_aggregation_callback=correction_callback + ) + + aggregator = GoogleAssistantContextAggregator( + context=mock_context, params=params + ) + + # Set up aggregation state + aggregator._aggregation = "I am here to help" + aggregator._current_llm_response_id = "test-id" + aggregator._response_function_messages = {} + aggregator._function_calls_in_progress = {} + aggregator._started = 1 + + # Mock push_context_frame and reset methods + aggregator.push_context_frame = AsyncMock() + aggregator.reset = AsyncMock() + + # Process interruption + interruption_frame = StartInterruptionFrame() + await aggregator._handle_interruptions(interruption_frame) + + # Verify the corrected text was added to context + mock_context.add_message.assert_called_once() + added_content = mock_context.add_message.call_args[0][0] + + # Google uses Content objects + assert isinstance(added_content, Content) + assert added_content.role == "model" + assert len(added_content.parts) == 1 + assert ( + added_content.parts[0].text == "I am here to help <>" + ) + + @pytest.mark.asyncio + async def test_interruption_correction_error_handling(self): + """Test that interruption handling continues even if correction callback fails.""" + # Create mock context + mock_context = Mock(spec=OpenAILLMContext) + mock_context.get_messages.return_value = [] + mock_context.add_message = Mock() + + # Create correction callback that raises error + def failing_callback(text: str) -> str: + raise ValueError("Correction failed") + + # Create aggregator with failing callback + params = LLMAssistantAggregatorParams( + expect_stripped_words=True, correct_aggregation_callback=failing_callback + ) + + aggregator = OpenAIAssistantContextAggregator( + context=mock_context, params=params + ) + + # Set up aggregation state + aggregator._aggregation = "Some text" + aggregator._current_llm_response_id = "test-id" + aggregator._response_function_messages = {} + aggregator._function_calls_in_progress = {} + aggregator._started = 1 + + # Mock push_context_frame and reset methods + aggregator.push_context_frame = AsyncMock() + aggregator.reset = AsyncMock() + + # Process interruption - should not raise + interruption_frame = StartInterruptionFrame() + await aggregator._handle_interruptions(interruption_frame) + + # Verify the original text was still added (fallback behavior) + mock_context.add_message.assert_called_once() + added_message = mock_context.add_message.call_args[0][0] + assert added_message["role"] == "assistant" + assert added_message["content"] == "Some text <>" diff --git a/api/services/workflow/tools/__init__.py b/api/services/workflow/tools/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/services/workflow/tools/calculator.py b/api/services/workflow/tools/calculator.py new file mode 100644 index 0000000..0ca376e --- /dev/null +++ b/api/services/workflow/tools/calculator.py @@ -0,0 +1,51 @@ +import ast +from typing import Any, Dict + + +def safe_calculator(expr: str) -> float: + """ + Parse arithmetic expressions using ast and support + - * / ** and parentheses. + """ + allowed_nodes = { + ast.Expression, + ast.BinOp, + ast.UnaryOp, + ast.Add, + ast.Sub, + ast.Mult, + ast.Div, + ast.Pow, + ast.USub, + ast.UAdd, + ast.Constant, + ast.Load, + ast.Mod, + } + + node = ast.parse(expr, mode="eval") + if not all(isinstance(n, tuple(allowed_nodes)) for n in ast.walk(node)): + raise ValueError("Unsupported expression") + return eval(compile(node, "", mode="eval")) + + +def get_calculator_tools() -> list[Dict[str, Any]]: + """Get calculator tool definitions for LLM function calling.""" + return [ + { + "type": "function", + "function": { + "name": "safe_calculator", + "description": "Perform simple arithmetic calculations", + "parameters": { + "type": "object", + "properties": { + "expression": { + "type": "string", + "description": "Arithmetic expression to evaluate (supports +, -, *, /, **, %, and parentheses). Example: 2000 + 5000", + } + }, + "required": ["expression"], + }, + }, + } + ] diff --git a/api/services/workflow/tools/timezone.py b/api/services/workflow/tools/timezone.py new file mode 100644 index 0000000..488bebb --- /dev/null +++ b/api/services/workflow/tools/timezone.py @@ -0,0 +1,196 @@ +"""Time tools for LLM function calling - timezone and time conversion utilities.""" + +from datetime import datetime, timedelta +from typing import Any, Dict, Optional +from zoneinfo import ZoneInfo + +from pydantic import BaseModel + + +class TimeResult(BaseModel): + """Result model for time queries.""" + + timezone: str + datetime: str + is_dst: bool + + +class TimeConversionResult(BaseModel): + """Result model for time conversions.""" + + source: TimeResult + target: TimeResult + time_difference: str + + +def get_local_timezone(local_tz_override: Optional[str] = None) -> str: + """ + Get the local timezone name using system timezone. + Falls back to UTC if cannot determine. + """ + if local_tz_override: + return local_tz_override + + try: + # Try to get timezone from datetime + local_tz = datetime.now().astimezone().tzinfo + if hasattr(local_tz, "key"): + return local_tz.key + + # Try to parse from string representation + tz_str = str(local_tz) + if tz_str and not tz_str.startswith("UTC"): + return tz_str + + # Default to UTC + return "UTC" + except: + return "UTC" + + +def get_current_time(timezone: str) -> Dict[str, Any]: + """ + Get current time in specified timezone. + + Args: + timezone: IANA timezone name (e.g., 'America/New_York', 'Europe/London') + + Returns: + Dict containing timezone, datetime, and DST status + """ + try: + tz = ZoneInfo(timezone) + current_time = datetime.now(tz) + + result = TimeResult( + timezone=timezone, + datetime=current_time.isoformat(timespec="seconds"), + is_dst=bool(current_time.dst()), + ) + return result.model_dump() + except Exception as e: + raise ValueError(f"Invalid timezone '{timezone}': {str(e)}") + + +def convert_time( + source_timezone: str, time: str, target_timezone: str +) -> Dict[str, Any]: + """ + Convert time between timezones. + + Args: + source_timezone: Source IANA timezone name + time: Time to convert in 24-hour format (HH:MM) + target_timezone: Target IANA timezone name + + Returns: + Dict containing source time, target time, and time difference + """ + try: + source_tz = ZoneInfo(source_timezone) + target_tz = ZoneInfo(target_timezone) + except Exception as e: + raise ValueError(f"Invalid timezone: {str(e)}") + + # Parse time + try: + parsed_time = datetime.strptime(time, "%H:%M").time() + except ValueError: + raise ValueError("Invalid time format. Expected HH:MM in 24-hour format") + + # Create datetime objects + now = datetime.now(source_tz) + source_time = datetime( + now.year, + now.month, + now.day, + parsed_time.hour, + parsed_time.minute, + tzinfo=source_tz, + ) + + # Convert to target timezone + target_time = source_time.astimezone(target_tz) + + # Calculate time difference + source_offset = source_time.utcoffset() or timedelta() + target_offset = target_time.utcoffset() or timedelta() + hours_difference = (target_offset - source_offset).total_seconds() / 3600 + + # Format time difference + if hours_difference.is_integer(): + time_diff_str = f"{int(hours_difference):+d}h" + else: + # For fractional hours like Nepal's UTC+5:45 + hours = int(hours_difference) + minutes = int(abs(hours_difference - hours) * 60) + if hours_difference >= 0: + time_diff_str = f"+{hours}h{minutes:02d}m" + else: + time_diff_str = f"{hours}h{minutes:02d}m" + + result = TimeConversionResult( + source=TimeResult( + timezone=source_timezone, + datetime=source_time.isoformat(timespec="seconds"), + is_dst=bool(source_time.dst()), + ), + target=TimeResult( + timezone=target_timezone, + datetime=target_time.isoformat(timespec="seconds"), + is_dst=bool(target_time.dst()), + ), + time_difference=time_diff_str, + ) + return result.model_dump() + + +# Tool definitions for LLM function calling +def get_time_tools(local_tz_override: Optional[str] = None) -> list[Dict[str, Any]]: + """Get tool definitions with dynamic local timezone.""" + local_tz = local_tz_override or get_local_timezone() + + return [ + { + "type": "function", + "function": { + "name": "get_current_time", + "description": "Get current time in a specific timezone", + "parameters": { + "type": "object", + "properties": { + "timezone": { + "type": "string", + "description": f"IANA timezone name (e.g., 'America/New_York', 'Europe/London'). Use '{local_tz}' as local timezone if no timezone provided by the user.", + } + }, + "required": ["timezone"], + }, + }, + }, + { + "type": "function", + "function": { + "name": "convert_time", + "description": "Convert time between timezones", + "parameters": { + "type": "object", + "properties": { + "source_timezone": { + "type": "string", + "description": f"Source IANA timezone name (e.g., 'America/New_York', 'Europe/London'). Use '{local_tz}' as local timezone if no source timezone provided by the user.", + }, + "time": { + "type": "string", + "description": "Time to convert in 24-hour format (HH:MM)", + }, + "target_timezone": { + "type": "string", + "description": f"Target IANA timezone name (e.g., 'Asia/Tokyo', 'America/San_Francisco'). Use '{local_tz}' as local timezone if no target timezone provided by the user.", + }, + }, + "required": ["source_timezone", "time", "target_timezone"], + }, + }, + }, + ] diff --git a/api/services/workflow/workflow.py b/api/services/workflow/workflow.py new file mode 100644 index 0000000..49a85a5 --- /dev/null +++ b/api/services/workflow/workflow.py @@ -0,0 +1,261 @@ +import re +from collections import Counter +from typing import Dict, List + +from api.services.workflow.dto import EdgeDataDTO, NodeDataDTO, NodeType, ReactFlowDTO +from api.services.workflow.errors import ItemKind, WorkflowError + + +class Edge: + def __init__(self, source: str, target: str, data: EdgeDataDTO): + self.source = source + self.target = target + + self.label = data.label + self.condition = data.condition + + self.data = data + + def get_function_name(self): + return re.sub(r"[^a-z0-9]", "_", self.label.lower()) + + def __eq__(self, other): + if not isinstance(other, Edge): + return False + return self.source == other.source and self.target == other.target + + def __hash__(self): + return hash((self.source, self.target)) + + +class Node: + def __init__(self, id: str, node_type: NodeType, data: NodeDataDTO): + self.id, self.node_type, self.data = id, node_type, data + self.out: Dict[str, "Node"] = {} # forward nodes + self.out_edges: List[Edge] = [] # forward edges with properties + + self.name = data.name + self.prompt = data.prompt + self.is_static = data.is_static + self.is_start = data.is_start + self.is_end = data.is_end + self.allow_interrupt = data.allow_interrupt + self.extraction_enabled = data.extraction_enabled + self.extraction_prompt = data.extraction_prompt + self.extraction_variables = data.extraction_variables + self.add_global_prompt = data.add_global_prompt + self.wait_for_user_response = data.wait_for_user_response + self.wait_for_user_response_timeout = data.wait_for_user_response_timeout + self.detect_voicemail = data.detect_voicemail + self.delayed_start = data.delayed_start + self.delayed_start_duration = data.delayed_start_duration + + self.data = data + + +class WorkflowGraph: + """ + *All* business invariants (acyclic, cardinality, etc.) are verified here. + The constructor accepts a validated ReactFlowDTO. + """ + + def __init__(self, dto: ReactFlowDTO): + # build adjacency list + self.nodes: Dict[str, Node] = { + n.id: Node(n.id, n.type, n.data) for n in dto.nodes + } + + # Store all edges + self.edges: List[Edge] = [] + + for e in dto.edges: + source_node = self.nodes[e.source] + target_node = self.nodes[e.target] + + # Create the edge with properties from dto + edge = Edge(source=e.source, target=e.target, data=e.data) + + # Add to the edge list + self.edges.append(edge) + + # Add to the source node's outgoing edges + source_node.out_edges.append(edge) + + # Set up the node references for backward compatibility + source_node.out[target_node.id] = target_node + + self._validate_graph() + + # Get a reference to the start node + self.start_node_id = [n.id for n in dto.nodes if n.data.is_start][0] + + # Get a reference to the global node + try: + self.global_node_id = [ + n.id for n in dto.nodes if n.type == NodeType.globalNode + ][0] + except IndexError: + self.global_node_id = None + + # ----------------------------------------------------------- + # validators + # ----------------------------------------------------------- + def _validate_graph(self) -> None: + errors: list[WorkflowError] = [] + + # TODO: Figure out what kind of cyclic contraints can be applied, since there can be a cycle in the graph + # try: + # self._assert_acyclic() + # except ValueError as e: + # errors.append( + # WorkflowError( + # kind=ItemKind.workflow, id=None, field=None, message=str(e) + # ) + # ) + + errors.extend(self._assert_start_node()) + errors.extend(self._assert_end_node()) + errors.extend(self._assert_connection_counts()) + errors.extend(self._assert_global_node()) + errors.extend(self._assert_node_configs()) + if errors: + raise ValueError(errors) + + def _assert_acyclic(self): + color: Dict[str, str] = {} # white / gray / black + + def dfs(n: Node): + if color.get(n.id) == "gray": # back-edge + raise ValueError("workflow contains a cycle") + if color.get(n.id) != "black": + color[n.id] = "gray" + for m in n.out.values(): + dfs(m) + color[n.id] = "black" + + for n in self.nodes.values(): + dfs(n) + + def _assert_start_node(self): + errors: list[WorkflowError] = [] + start_node = [n for n in self.nodes.values() if n.data.is_start] + if not start_node: + errors.append( + WorkflowError( + kind=ItemKind.workflow, + id=None, + field=None, + message="Workflow must have exactly one start node", + ) + ) + elif len(start_node) > 1: + errors.append( + WorkflowError( + kind=ItemKind.workflow, + id=None, + field=None, + message="Workflow must have exactly one start node", + ) + ) + return errors + + def _assert_global_node(self): + errors: list[WorkflowError] = [] + global_node = [ + n for n in self.nodes.values() if n.node_type == NodeType.globalNode + ] + if not len(global_node) <= 1: + errors.append( + WorkflowError( + kind=ItemKind.workflow, + id=None, + field=None, + message="Workflow must have at most one global node", + ) + ) + return errors + + def _assert_end_node(self): + errors: list[WorkflowError] = [] + end_node = [n for n in self.nodes.values() if n.data.is_end] + if not end_node: + errors.append( + WorkflowError( + kind=ItemKind.workflow, + id=None, + field=None, + message="Workflow must have exactly one end node", + ) + ) + + elif len(end_node) > 1: + errors.append( + WorkflowError( + kind=ItemKind.workflow, + id=None, + field=None, + message="Workflow must have exactly one end node", + ) + ) + return errors + + def _assert_connection_counts(self): + errors: list[WorkflowError] = [] + + out_deg = Counter() + in_deg = Counter() + for n in self.nodes.values(): # init counters + out_deg[n.id] = in_deg[n.id] = 0 + for src, n in self.nodes.items(): # compute degrees + for m in n.out.values(): + out_deg[src] += 1 + in_deg[m.id] += 1 + + for n in self.nodes.values(): + in_d, out_d = in_deg[n.id], out_deg[n.id] + + match n.node_type: + case NodeType.startNode: + if in_d != 0 or out_d < 1: + errors.append( + WorkflowError( + kind=ItemKind.node, + id=n.id, + field=None, + message=f"StartNode must have at least 1 outgoing edge", + ) + ) + case NodeType.endNode: + if in_d < 1 or out_d != 0: + errors.append( + WorkflowError( + kind=ItemKind.node, + id=n.id, + field=None, + message=f"EndNode must have at least 1 incoming edge", + ) + ) + case NodeType.agentNode: + if in_d < 1 or out_d < 1: + errors.append( + WorkflowError( + kind=ItemKind.node, + id=n.id, + field=None, + message=f"Worker must have at least 1 incoming and 1 outgoing edge", + ) + ) + + return errors + + def _assert_node_configs(self): + """Validate node-specific configuration constraints.""" + errors: list[WorkflowError] = [] + + for node in self.nodes.values(): + # Validate StartNode constraints + if node.node_type == NodeType.startNode: + # No specific validations for start node at this time + pass + + return errors diff --git a/api/tasks/__init__.py b/api/tasks/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/api/tasks/__init__.py @@ -0,0 +1 @@ + diff --git a/api/tasks/arq.py b/api/tasks/arq.py new file mode 100644 index 0000000..4731560 --- /dev/null +++ b/api/tasks/arq.py @@ -0,0 +1,119 @@ +"""ARQ worker configuration - setup logging before importing tasks""" + +import ssl +from urllib.parse import urlparse + +from api.constants import REDIS_URL + +# Setup logging - this is now idempotent and safe to call multiple times +from api.logging_config import setup_logging +from api.tasks.function_names import FunctionNames + +logging_queue_listener = setup_logging() + +# Now import ARQ and task dependencies +from arq import create_pool +from arq.connections import ArqRedis, RedisSettings + +from api.tasks.workflow_run_cost import calculate_workflow_run_cost + +parsed_url = urlparse(REDIS_URL) + +# Check if we're using TLS (rediss://) +use_ssl = parsed_url.scheme == "rediss" + +# Create SSL context if using rediss:// +ssl_context = None +if use_ssl: + ssl_context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH) + ssl_context.check_hostname = False + ssl_context.verify_mode = ssl.CERT_NONE + +REDIS_SETTINGS = RedisSettings( + host=parsed_url.hostname or "localhost", + port=parsed_url.port or 6379, + password=parsed_url.password, + conn_timeout=10, + ssl=use_ssl, + ssl_ca_certs=None if not use_ssl else None, + ssl_certfile=None, + ssl_keyfile=None, + ssl_check_hostname=False if use_ssl else None, +) + +from api.tasks.campaign_tasks import ( + monitor_campaign_progress, + process_campaign_batch, + sync_campaign_source, +) +from api.tasks.run_integrations import run_integrations_post_workflow_run +from api.tasks.s3_upload import ( + upload_audio_to_s3, + upload_transcript_to_s3, + upload_voicemail_audio_to_s3, +) + + +class WorkerSettings: + functions = [ + calculate_workflow_run_cost, + run_integrations_post_workflow_run, + upload_audio_to_s3, + upload_transcript_to_s3, + upload_voicemail_audio_to_s3, + sync_campaign_source, + process_campaign_batch, + monitor_campaign_progress, + ] + cron_jobs = [] + redis_settings = REDIS_SETTINGS + max_jobs = 10 + + +LOG_CONFIG = { + "version": 1, + "disable_existing_loggers": False, + # --- Handlers --- + "handlers": { + "console": { # everything goes to stdout + "class": "logging.StreamHandler", + "stream": "ext://sys.stdout", + "level": "WARNING", # only WARNING and above + "formatter": "simple", + }, + }, + # --- Formatters (optional) --- + "formatters": { + "simple": { + "format": "%(asctime)s | %(levelname)s | %(name)s | %(message)s", + }, + }, + # --- Root logger --- + "root": { + "handlers": ["console"], + "level": "WARNING", + }, + # --- Optionally silence Arq itself explicitly --- + "loggers": { + "arq": { # arq.* loggers + "level": "WARNING", + "handlers": ["console"], + "propagate": False, + }, + }, +} + + +_redis_pool: ArqRedis | None = None + + +async def get_arq_redis() -> ArqRedis: + global _redis_pool + if _redis_pool is None: + _redis_pool = await create_pool(REDIS_SETTINGS) + return _redis_pool + + +async def enqueue_job(function_name: FunctionNames, *args): + redis = await get_arq_redis() + await redis.enqueue_job(function_name, *args) diff --git a/api/tasks/campaign_tasks.py b/api/tasks/campaign_tasks.py new file mode 100644 index 0000000..49600b7 --- /dev/null +++ b/api/tasks/campaign_tasks.py @@ -0,0 +1,199 @@ +from datetime import UTC, datetime +from typing import Dict + +from loguru import logger + +from api.db import db_client +from api.enums import RedisChannel +from api.services.campaign.call_dispatcher import campaign_call_dispatcher +from api.services.campaign.campaign_event_protocol import BatchFailedEvent +from api.services.campaign.campaign_event_publisher import ( + get_campaign_event_publisher, +) +from api.services.campaign.source_sync import get_sync_service + + +async def sync_campaign_source(ctx: Dict, campaign_id: int) -> None: + """ + Phase 1: Syncs data from configured source to queued_runs table + - Campaign state should already be 'syncing' + - Determines source type from campaign configuration + - Fetches data via appropriate sync service (Google Sheets, HubSpot, etc.) + - Creates queued_run entries with unique source_uuid + - Updates campaign total_rows + - Transitions campaign state to 'running' on success + - Enqueues process_campaign_batch tasks + """ + logger.info(f"Starting source sync for campaign {campaign_id}") + + try: + # Get campaign + campaign = await db_client.get_campaign_by_id(campaign_id) + if not campaign: + raise ValueError(f"Campaign {campaign_id} not found") + + # Get appropriate sync service + sync_service = get_sync_service(campaign.source_type) + + # Sync source data + rows_synced = await sync_service.sync_source_data(campaign_id) + + if rows_synced == 0: + # No data to process + await db_client.update_campaign( + campaign_id=campaign_id, + state="completed", + completed_at=datetime.now(UTC), + source_sync_status="completed", + source_last_synced_at=datetime.now(UTC), + ) + logger.info(f"Campaign {campaign_id} completed with no data to process") + return + + # Update campaign state to running + await db_client.update_campaign( + campaign_id=campaign_id, + state="running", + source_sync_status="completed", + source_last_synced_at=datetime.now(UTC), + ) + + # Publish sync completed event - orchestrator will schedule first batch + publisher = await get_campaign_event_publisher() + await publisher.publish_sync_completed( + campaign_id=campaign_id, + total_rows=rows_synced, + source_type=campaign.source_type, + source_id=campaign.source_id, + ) + + logger.info( + f"Campaign {campaign_id} source sync completed, {rows_synced} rows synced" + ) + + except Exception as e: + logger.error(f"Error syncing campaign {campaign_id} source: {e}") + + # Update campaign with error + await db_client.update_campaign( + campaign_id=campaign_id, + state="failed", + source_sync_status="failed", + source_sync_error=str(e), + ) + raise + + +async def process_campaign_batch( + ctx: Dict, campaign_id: int, batch_size: int = 10 +) -> None: + """ + Phase 2: Processes a batch of queued runs + - Fetches next batch of 'queued' runs (including due retries) + - Creates workflow runs with context variables + - Initiates Twilio calls with rate limiting + - Updates queued_run state to 'processed' + - Updates campaign.processed_rows counter + - Publishes batch_completed event for orchestrator + """ + logger.info(f"Processing batch for campaign {campaign_id}, batch_size={batch_size}") + + failed_count = 0 + try: + # Process the batch + processed_count = await campaign_call_dispatcher.process_batch( + campaign_id=campaign_id, batch_size=batch_size + ) + + # Publish batch completed event - orchestrator will handle next batch scheduling + publisher = await get_campaign_event_publisher() + await publisher.publish_batch_completed( + campaign_id=campaign_id, + processed_count=processed_count, + failed_count=failed_count, + batch_size=batch_size, + ) + + logger.info( + f"Campaign {campaign_id} batch completed: processed={processed_count}, " + f"failed={failed_count}" + ) + + except Exception as e: + logger.error(f"Error processing batch for campaign {campaign_id}: {e}") + + # Publish batch failed event + publisher = await get_campaign_event_publisher() + event = BatchFailedEvent( + campaign_id=campaign_id, + error=str(e), + processed_count=0, + ) + await publisher.redis.publish( + RedisChannel.CAMPAIGN_EVENTS.value, event.to_json() + ) + + # Update campaign state to failed + await db_client.update_campaign(campaign_id=campaign_id, state="failed") + raise + + +async def monitor_campaign_progress(ctx: Dict, campaign_id: int) -> None: + """ + Phase 3: Monitors campaign completion + - Checks if all queued runs are in 'processed' state + - Queries workflow_runs for final call statistics + - Updates campaign state to 'completed' + - Calculates total calls made, successful, failed + - Triggers post-campaign integrations + """ + logger.info(f"Monitoring progress for campaign {campaign_id}") + + try: + # Get campaign + campaign = await db_client.get_campaign_by_id(campaign_id) + if not campaign: + raise ValueError(f"Campaign {campaign_id} not found") + + # Check if all runs are processed + pending_runs = await db_client.count_queued_runs( + campaign_id=campaign_id, state="queued" + ) + + if pending_runs > 0: + logger.info(f"Campaign {campaign_id} still has {pending_runs} pending runs") + return + + # All runs processed, mark campaign as completed + await db_client.update_campaign( + campaign_id=campaign_id, state="completed", completed_at=datetime.now(UTC) + ) + + # Calculate statistics + workflow_runs = await db_client.get_workflow_runs_by_campaign(campaign_id) + + total_calls = len(workflow_runs) + successful_calls = 0 + failed_calls = 0 + + for run in workflow_runs: + callbacks = run.logs.get("twilio_status_callbacks", []) + if callbacks: + final_status = callbacks[-1].get("status", "").lower() + if final_status == "completed": + successful_calls += 1 + elif final_status in ["failed", "busy", "no-answer"]: + failed_calls += 1 + + logger.info( + f"Campaign {campaign_id} completed: " + f"Total calls: {total_calls}, " + f"Successful: {successful_calls}, " + f"Failed: {failed_calls}" + ) + + # TODO: Trigger post-campaign integrations if configured + + except Exception as e: + logger.error(f"Error monitoring campaign {campaign_id}: {e}") + raise diff --git a/api/tasks/function_names.py b/api/tasks/function_names.py new file mode 100644 index 0000000..d527769 --- /dev/null +++ b/api/tasks/function_names.py @@ -0,0 +1,9 @@ +class FunctionNames: + CALCULATE_WORKFLOW_RUN_COST = "calculate_workflow_run_cost" + RUN_INTEGRATIONS_POST_WORKFLOW_RUN = "run_integrations_post_workflow_run" + UPLOAD_AUDIO_TO_S3 = "upload_audio_to_s3" + UPLOAD_TRANSCRIPT_TO_S3 = "upload_transcript_to_s3" + UPLOAD_VOICEMAIL_AUDIO_TO_S3 = "upload_voicemail_audio_to_s3" + SYNC_CAMPAIGN_SOURCE = "sync_campaign_source" + PROCESS_CAMPAIGN_BATCH = "process_campaign_batch" + MONITOR_CAMPAIGN_PROGRESS = "monitor_campaign_progress" diff --git a/api/tasks/run_integrations.py b/api/tasks/run_integrations.py new file mode 100644 index 0000000..bf0ec78 --- /dev/null +++ b/api/tasks/run_integrations.py @@ -0,0 +1,227 @@ +import os + +import aiohttp +import httpx +from loguru import logger +from pipecat.utils.context import set_current_run_id + +from api.db import db_client +from api.db.models import IntegrationModel +from api.enums import OrganizationConfigurationKey, WorkflowRunMode +from api.utils.template_renderer import render_template + + +async def run_integrations_post_workflow_run(ctx, workflow_run_id: int): + """ + Run integrations after a workflow run completes. + + This function: + 1. Gets the workflow run and its gathered_context + 2. Determines the organization_id through the workflow -> user -> organization chain + 3. Fetches all active integrations for that organization + 4. For Slack integrations, sends the gathered_context to the webhook URL + + Args: + workflow_run_id: The ID of the completed workflow run + """ + # Set the workflow_run_id in context variable for consistent logging format + set_current_run_id(workflow_run_id) + logger.info("Running integrations for workflow run") + + try: + # Step 1: Get workflow run details with gathered_context using DB client + workflow_run, organization_id = await db_client.get_workflow_run_with_context( + workflow_run_id + ) + + if not workflow_run: + logger.error("Workflow run not found") + return + + if not workflow_run.workflow: + logger.error("Workflow not found for workflow run") + return + + if not workflow_run.workflow.user: + logger.error("User not found for workflow run") + return + + gathered_context = workflow_run.gathered_context + initial_context = workflow_run.initial_context + + if not gathered_context: + logger.info("No gathered context for workflow run, skipping integrations") + return + + # Check if workflow run mode is stasis and sync with vendor + if workflow_run.mode == WorkflowRunMode.STASIS.value: + await _sync_vendor_data(initial_context, gathered_context) + + # Step 2: Check if organization_id is available + if not organization_id: + logger.warning( + f"No organization found for workflow run, skipping integrations" + ) + return + + logger.debug(f"Found organization_id {organization_id} for workflow run") + + # Step 3: Get all active integrations for the organization using DB client + integrations = await db_client.get_active_integrations_by_organization( + organization_id + ) + + logger.info( + f"Found {len(integrations)} active integrations for organization {organization_id}" + ) + + # Step 4: Process each integration + for integration in integrations: + await _process_integration(integration, gathered_context) + + except Exception as e: + logger.error(f"Error running integrations for workflow run: {str(e)}") + raise + + +async def _sync_vendor_data(initial_context: dict, gathered_context: dict): + """ + Sync data with external vendor for stasis mode workflow runs. + + Args: + initial_context: The initial context containing lead_id + gathered_context: The gathered context containing mapped_call_disposition + """ + if not os.getenv("ARI_DATA_SYNCING_URI"): + logger.info("ARI_DATA_SYNCING_URI not configured, skipping vendor sync") + return + + try: + lead_id = initial_context.get("lead_id") + status = gathered_context.get("mapped_call_disposition") + + if lead_id and status: + ari_data_uri = os.getenv("ARI_DATA_SYNCING_URI") + # Add URL params to the base URL + sync_url = f"{ari_data_uri}&lead_id={lead_id}&status={status}" + + async with httpx.AsyncClient() as client: + response = await client.post(sync_url, timeout=10.0) + response.raise_for_status() + logger.info( + f"Successfully synced data for lead_id: {lead_id} with status: {status}" + ) + else: + logger.warning( + f"Missing lead_id or status for syncing - lead_id: {lead_id}, status: {status}" + ) + except Exception as e: + logger.error(f"Failed to sync data to ARI_DATA_SYNCING_URI: {e}") + + +async def _process_integration( + integration: IntegrationModel, + gathered_context: dict, +): + """ + Process a single integration. + + Args: + integration: The integration model + gathered_context: The gathered context from the workflow run + workflow_run_name: Name of the workflow run + run_id: The workflow run ID for logging context + """ + logger.info( + f"Processing integration {integration.id} (provider: {integration.provider})" + ) + + try: + if integration.provider.lower() == "slack": + await _process_slack_integration(integration, gathered_context) + else: + logger.info( + f"Integration provider '{integration.provider}' not supported yet" + ) + + except Exception as e: + logger.error(f"Error processing integration {integration.id}: {str(e)}") + + +async def _process_slack_integration( + integration: IntegrationModel, gathered_context: dict +): + """ + Process a Slack integration by sending gathered_context to the webhook. + + Args: + integration: The Slack integration model + gathered_context: The gathered context from the workflow run + workflow_run_name: Name of the workflow run + run_id: The workflow run ID for logging context + """ + logger.info(f"Processing Slack integration {integration.id}") + + # TODO: Generalise this, currently tailored to Kapil's use case + if gathered_context.get("mapped_call_disposition") != "XFER": + logger.debug( + f"Not sending message on slack since not XFER: {gathered_context.get('mapped_call_disposition')}" + ) + return + + try: + # Extract webhook URL from connection_details + connection_details = integration.connection_details + + if not connection_details: + logger.error( + f"No connection details found for Slack integration {integration.id}" + ) + return + + # Navigate to incoming_webhook.url in the connection_details + webhook_url = connection_details.get("connection_config", {}).get( + "incoming_webhook.url" + ) + if not webhook_url: + logger.error( + f"No incoming_webhook found in connection details for integration {integration.id}" + ) + return + + logger.info(f"Found Slack webhook URL for integration {integration.id}") + + # Get message template configuration + # Get organization_id from the integration model + organization_id = integration.organisation_id + message_templates = await db_client.get_configuration_value( + organization_id, + OrganizationConfigurationKey.DISPOSITION_MESSAGE_TEMPLATE.value, + default={}, + ) + + # Check if there's a custom template for Slack + slack_template = message_templates.get("slack", {}) + rendered_text = render_template(slack_template, gathered_context) + + slack_message = {"text": rendered_text} + + # Send to Slack webhook + async with aiohttp.ClientSession() as session: + async with session.post( + webhook_url, + json=slack_message, + headers={"Content-Type": "application/json"}, + ) as response: + if response.status == 200: + logger.info( + f"Successfully sent message to Slack for integration {integration.id}" + ) + else: + error_text = await response.text() + logger.error( + f"Failed to send Slack message for integration {integration.id}: {response.status} - {error_text}" + ) + + except Exception as e: + logger.error(f"Error processing Slack integration {integration.id}: {str(e)}") diff --git a/api/tasks/s3_upload.py b/api/tasks/s3_upload.py new file mode 100644 index 0000000..9faf432 --- /dev/null +++ b/api/tasks/s3_upload.py @@ -0,0 +1,172 @@ +import os + +from loguru import logger +from pipecat.utils.context import set_current_run_id + +from api.db import db_client +from api.services.storage import get_current_storage_backend, storage_fs + + +async def upload_audio_to_s3(ctx, workflow_run_id: int, temp_file_path: str): + """Upload audio file from temp path to S3.""" + run_id = str(workflow_run_id) + set_current_run_id(run_id) + + logger.info(f"Starting audio upload to S3 from {temp_file_path}") + + try: + # Verify temp file exists + if not os.path.exists(temp_file_path): + logger.error(f"Temp audio file not found: {temp_file_path}") + raise FileNotFoundError(f"Temp audio file not found: {temp_file_path}") + + file_size = os.path.getsize(temp_file_path) + logger.debug(f"Audio file size: {file_size} bytes") + + recording_url = f"recordings/{workflow_run_id}.wav" + storage_backend = get_current_storage_backend() + + logger.info( + f"UPLOAD: Using {storage_backend.name} (value: {storage_backend.value}) for audio upload - workflow_run_id: {workflow_run_id}" + ) + + await storage_fs.aupload_file(temp_file_path, recording_url) + + # Update DB with recording URL and storage backend + await db_client.update_workflow_run( + run_id=workflow_run_id, + recording_url=recording_url, + storage_backend=storage_backend.value, + ) + + logger.info( + f"Successfully uploaded audio to {storage_backend.name}: {recording_url} (stored backend: {storage_backend.name})" + ) + + except Exception as e: + logger.error(f"Error uploading audio to S3 for workflow {workflow_run_id}: {e}") + raise + finally: + # Clean up temp file + if os.path.exists(temp_file_path): + try: + os.remove(temp_file_path) + logger.debug(f"Cleaned up temp audio file: {temp_file_path}") + except Exception as e: + logger.warning( + f"Failed to clean up temp audio file {temp_file_path}: {e}" + ) + + +async def upload_transcript_to_s3(ctx, workflow_run_id: int, temp_file_path: str): + """Upload transcript file from temp path to S3.""" + run_id = str(workflow_run_id) + set_current_run_id(run_id) + + logger.info(f"Starting transcript upload to S3 from {temp_file_path}") + + try: + # Verify temp file exists + if not os.path.exists(temp_file_path): + logger.error(f"Temp transcript file not found: {temp_file_path}") + raise FileNotFoundError(f"Temp transcript file not found: {temp_file_path}") + + file_size = os.path.getsize(temp_file_path) + logger.debug(f"Transcript file size: {file_size} bytes") + + transcript_url = f"transcripts/{workflow_run_id}.txt" + storage_backend = get_current_storage_backend() + + logger.info( + f"UPLOAD: Using {storage_backend.name} (value: {storage_backend.value}) for transcript upload - workflow_run_id: {workflow_run_id}" + ) + + await storage_fs.aupload_file(temp_file_path, transcript_url) + + # Update DB with transcript URL and storage backend + await db_client.update_workflow_run( + run_id=workflow_run_id, + transcript_url=transcript_url, + storage_backend=storage_backend.value, + ) + + logger.info( + f"Successfully uploaded transcript to {storage_backend.name}: {transcript_url} (stored backend: {storage_backend.name})" + ) + + except Exception as e: + logger.error( + f"Error uploading transcript to S3 for workflow {workflow_run_id}: {e}" + ) + raise + finally: + # Clean up temp file + if os.path.exists(temp_file_path): + try: + os.remove(temp_file_path) + logger.debug(f"Cleaned up temp transcript file: {temp_file_path}") + except Exception as e: + logger.warning( + f"Failed to clean up temp transcript file {temp_file_path}: {e}" + ) + + +async def upload_voicemail_audio_to_s3( + ctx, + workflow_run_id: int, + temp_file_path: str, + s3_key: str, +): + """Upload voicemail detection audio from temp file to S3. + + This function is similar to upload_audio_to_s3 but handles voicemail-specific + paths and doesn't update the workflow run's recording_url field. + + Args: + ctx: ARQ context + workflow_run_id: The workflow run ID + temp_file_path: Path to the temporary WAV file + s3_key: The S3 key where the file should be uploaded + """ + run_id = str(workflow_run_id) + set_current_run_id(run_id) + + logger.info(f"Starting voicemail audio upload to S3 from {temp_file_path}") + + try: + # Verify temp file exists + if not os.path.exists(temp_file_path): + logger.error(f"Temp voicemail audio file not found: {temp_file_path}") + raise FileNotFoundError( + f"Temp voicemail audio file not found: {temp_file_path}" + ) + + file_size = os.path.getsize(temp_file_path) + logger.debug(f"Voicemail audio file size: {file_size} bytes") + + # Upload to S3 + upload_ok = await storage_fs.aupload_file(temp_file_path, s3_key) + + if upload_ok: + logger.info(f"Successfully uploaded voicemail audio to S3: {s3_key}") + else: + logger.error( + f"Failed to upload voicemail audio to S3 for workflow {workflow_run_id}" + ) + raise Exception(f"S3 upload failed for {s3_key}") + + except Exception as e: + logger.error( + f"Error uploading voicemail audio to S3 for workflow {workflow_run_id}: {e}" + ) + raise + finally: + # Clean up temp file (same pattern as upload_audio_to_s3) + if os.path.exists(temp_file_path): + try: + os.remove(temp_file_path) + logger.debug(f"Cleaned up temp voicemail audio file: {temp_file_path}") + except Exception as e: + logger.warning( + f"Failed to clean up temp voicemail audio file {temp_file_path}: {e}" + ) diff --git a/api/tasks/workflow_run_cost.py b/api/tasks/workflow_run_cost.py new file mode 100644 index 0000000..e9967ff --- /dev/null +++ b/api/tasks/workflow_run_cost.py @@ -0,0 +1,123 @@ +from loguru import logger +from pipecat.utils.context import set_current_run_id + +from api.db import db_client +from api.enums import WorkflowRunMode +from api.services.pricing.cost_calculator import cost_calculator +from api.services.telephony.twilio import TwilioService + + +async def calculate_workflow_run_cost(ctx, workflow_run_id: int): + # Set the run_id in context variable for consistent logging format + set_current_run_id(workflow_run_id) + logger.debug("Calculating cost for workflow run") + + workflow_run = await db_client.get_workflow_run_by_id(workflow_run_id) + if not workflow_run: + logger.warning("Workflow run not found") + return + + workflow_usage_info = workflow_run.usage_info + if not workflow_usage_info: + logger.warning("No usage info available for workflow run") + return + + try: + # Calculate cost breakdown + cost_breakdown = cost_calculator.calculate_total_cost(workflow_usage_info) + + # If this is a Twilio call, fetch the Twilio call cost + twilio_cost_usd = 0.0 + if workflow_run.mode == WorkflowRunMode.TWILIO.value and workflow_run.cost_info: + twilio_call_sid = workflow_run.cost_info.get("twilio_call_sid") + if twilio_call_sid: + try: + twilio_service = TwilioService() + call_info = await twilio_service.get_call(twilio_call_sid) + # Twilio returns price as a string with negative value (e.g., "-0.0085") + if call_info.get("price"): + twilio_cost_usd = abs(float(call_info["price"])) + cost_breakdown["twilio_call"] = twilio_cost_usd + # Add Twilio cost to the total + cost_breakdown["total"] = ( + float(cost_breakdown["total"]) + twilio_cost_usd + ) + logger.info( + f"Twilio call cost: ${twilio_cost_usd:.6f} USD for call {twilio_call_sid}" + ) + except Exception as e: + logger.error(f"Failed to fetch Twilio call cost: {e}") + # Don't fail the whole cost calculation if Twilio API fails + + # Store cost information back to the workflow run + # We'll add the cost breakdown to the workflow run + # Convert USD to Dograh Tokens (1 cent = 1 token) + dograh_tokens = round(float(cost_breakdown["total"]) * 100, 2) + + # Get organization to check if it has USD pricing + org = None + charge_usd = None + if ( + workflow_run.workflow + and workflow_run.workflow.user + and workflow_run.workflow.user.selected_organization_id + ): + org = await db_client.get_organization_by_id( + workflow_run.workflow.user.selected_organization_id + ) + + # Calculate USD cost if organization has pricing configured + if org and org.price_per_second_usd: + duration_seconds = workflow_usage_info.get("call_duration_seconds", 0) + charge_usd = duration_seconds * org.price_per_second_usd + + cost_info = { + "cost_breakdown": cost_breakdown, + "total_cost_usd": float(cost_breakdown["total"]), + "dograh_token_usage": dograh_tokens, + "calculated_at": workflow_run.created_at.isoformat(), + "call_duration_seconds": workflow_usage_info["call_duration_seconds"], + } + + # Add USD cost if available + if charge_usd is not None: + cost_info["charge_usd"] = charge_usd + cost_info["price_per_second_usd"] = org.price_per_second_usd + + # Preserve the twilio_call_sid if it exists + if workflow_run.cost_info and "twilio_call_sid" in workflow_run.cost_info: + cost_info["twilio_call_sid"] = workflow_run.cost_info["twilio_call_sid"] + + # Update workflow run with cost information + await db_client.update_workflow_run(run_id=workflow_run_id, cost_info=cost_info) + + # Update organization usage if applicable + if org: + org_id = org.id + try: + duration_seconds = workflow_usage_info.get("call_duration_seconds", 0) + # Pass USD amount if organization has pricing + await db_client.update_usage_after_run( + org_id, dograh_tokens, duration_seconds, charge_usd + ) + if charge_usd is not None: + logger.info( + f"Updated organization usage with ${charge_usd:.2f} USD ({dograh_tokens} Dograh Tokens) and {duration_seconds}s duration for org {org_id}" + ) + else: + logger.info( + f"Updated organization usage with {dograh_tokens} Dograh Tokens and {duration_seconds}s duration for org {org_id}" + ) + except Exception as e: + logger.error( + f"Failed to update organization usage for org {org_id}: {e}" + ) + # Don't fail the whole task if usage update fails + + logger.info( + f"Calculated cost for workflow run: ${cost_breakdown['total']:.6f} USD ({dograh_tokens} Dograh Tokens)" + ) + + except Exception as e: + logger.error(f"Error calculating cost for workflow run: {e}") + raise diff --git a/api/tests/__init__.py b/api/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/tests/test_assistant_context_aggregator.py b/api/tests/test_assistant_context_aggregator.py new file mode 100644 index 0000000..b9cb3a0 --- /dev/null +++ b/api/tests/test_assistant_context_aggregator.py @@ -0,0 +1,138 @@ +import asyncio + +import pytest +from pipecat.frames.frames import ( + FunctionCallInProgressFrame, + LLMFullResponseEndFrame, + LLMFullResponseStartFrame, + StartInterruptionFrame, + TextFrame, +) +from pipecat.pipeline.pipeline import Pipeline +from pipecat.pipeline.runner import PipelineRunner +from pipecat.pipeline.task import PipelineTask +from pipecat.processors.aggregators.openai_llm_context import OpenAILLMContext +from pipecat.processors.frame_processor import FrameDirection +from pipecat.services.openai.llm import OpenAIAssistantContextAggregator + + +@pytest.mark.asyncio +async def test_reordering_after_completion(): + context = OpenAILLMContext() + aggr = OpenAIAssistantContextAggregator(context) + + # Initialize task manager properly using PipelineTask + pipeline = Pipeline([aggr]) + task = PipelineTask(pipeline) + runner = PipelineRunner() + + # Start the task to properly initialize the frame processor + task_coroutine = asyncio.create_task(runner.run(task)) + + # Give the task a moment to initialize + await asyncio.sleep(0.01) + + # start new LLM response + await aggr.process_frame(LLMFullResponseStartFrame(), FrameDirection.DOWNSTREAM) + + # simulate a pending function call + await aggr.process_frame( + FunctionCallInProgressFrame( + function_name="transition", + tool_call_id="1", + arguments={}, + cancel_on_interruption=False, + ), + FrameDirection.DOWNSTREAM, + ) + + # now text arrives + await aggr.process_frame(TextFrame("Hi there"), FrameDirection.DOWNSTREAM) + + # end response + await aggr.process_frame(LLMFullResponseEndFrame(), FrameDirection.DOWNSTREAM) + + msgs = context.get_messages() + + # Assert order: assistant text first, then tool_call assistant, then tool response + assert msgs[0]["role"] == "assistant" and "tool_calls" not in msgs[0] + # Fix: content is a string, not a structured object + assert msgs[0]["content"] == "Hi there" + assert any(m.get("role") == "assistant" and m.get("tool_calls") for m in msgs[1:]) + assert any(m.get("role") == "tool" for m in msgs[1:]) + + # Clean up the running task + await task.cancel() + task_coroutine.cancel() + try: + await task_coroutine + except asyncio.CancelledError: + pass + + +@pytest.mark.asyncio +async def test_interruption_removes_pending_function_calls_and_marks(): + context = OpenAILLMContext() + aggr = OpenAIAssistantContextAggregator(context) + + # Initialize task manager properly using PipelineTask + pipeline = Pipeline([aggr]) + task = PipelineTask(pipeline) + runner = PipelineRunner() + + # Start the task to properly initialize the frame processor + task_coroutine = asyncio.create_task(runner.run(task)) + + # Give the task a moment to initialize + await asyncio.sleep(0.01) + + await aggr.process_frame(LLMFullResponseStartFrame(), FrameDirection.DOWNSTREAM) + await aggr.process_frame( + FunctionCallInProgressFrame( + function_name="transition", + tool_call_id="1", + arguments={}, + cancel_on_interruption=False, + ), + FrameDirection.DOWNSTREAM, + ) + + # Debug: Check the state before interruption + print( + f"Function calls in progress before interruption: {aggr._function_calls_in_progress}" + ) + print(f"Messages before interruption: {context.get_messages()}") + + # no text yet - still aggregation + await aggr.process_frame(StartInterruptionFrame(), FrameDirection.DOWNSTREAM) + + msgs = context.get_messages() + + # Debug: Print messages to understand what's happening + print(f"Messages after interruption: {msgs}") + print( + f"Function calls in progress after interruption: {aggr._function_calls_in_progress}" + ) + + # After interruption before any response is complete, context should be cleared + # This is the actual behavior - interruptions clear pending function calls + if len(msgs) == 0: + # Context was cleared due to interruption before completion + assert True + else: + # If there are messages, ensure no tool calls remain + assert not any(m.get("tool_calls") for m in msgs) + assert not any(m.get("role") == "tool" for m in msgs) + + # Check if interruption marker is present + if msgs: + assert msgs[-1]["role"] == "assistant" + assert "<>" in msgs[-1]["content"] + + # Clean up the running task + await task.cancel() + task_coroutine.cancel() + try: + await task_coroutine + except asyncio.CancelledError: + pass diff --git a/api/tests/test_audio_transcript_buffers.py b/api/tests/test_audio_transcript_buffers.py new file mode 100644 index 0000000..0798241 --- /dev/null +++ b/api/tests/test_audio_transcript_buffers.py @@ -0,0 +1,120 @@ +import os +import wave + +import pytest + +from api.services.pipecat.audio_transcript_buffers import ( + InMemoryAudioBuffer, + InMemoryTranscriptBuffer, +) + + +@pytest.mark.asyncio +async def test_audio_buffer_append_and_write(): + """Test that audio buffer can append data and write to temp file.""" + buffer = InMemoryAudioBuffer(workflow_run_id=123, sample_rate=16000, num_channels=1) + + # Create some test PCM data + test_pcm = b"\x00\x01" * 1000 # 2000 bytes + + # Append data + await buffer.append(test_pcm) + await buffer.append(test_pcm) + + assert buffer.size == 4000 + assert not buffer.is_empty + + # Write to temp file + temp_path = await buffer.write_to_temp_file() + + try: + # Verify file exists and is valid WAV + assert os.path.exists(temp_path) + + with wave.open(temp_path, "rb") as wf: + assert wf.getnchannels() == 1 + assert wf.getsampwidth() == 2 + assert wf.getframerate() == 16000 + # Each frame is 2 bytes (16-bit), so 4000 bytes = 2000 frames + assert wf.getnframes() == 2000 + finally: + # Clean up + if os.path.exists(temp_path): + os.remove(temp_path) + + +@pytest.mark.asyncio +async def test_audio_buffer_memory_limit(): + """Test that audio buffer enforces memory limit.""" + buffer = InMemoryAudioBuffer(workflow_run_id=123, sample_rate=16000) + + # Set a smaller limit for testing + buffer._max_size = 1000 + + # This should work + await buffer.append(b"\x00" * 500) + + # This should fail + with pytest.raises(MemoryError): + await buffer.append(b"\x00" * 600) + + +@pytest.mark.asyncio +async def test_transcript_buffer_append_and_write(): + """Test that transcript buffer can append data and write to temp file.""" + buffer = InMemoryTranscriptBuffer(workflow_run_id=456) + + # Append some transcript lines + await buffer.append("[00:00:01] user: Hello\n") + await buffer.append("[00:00:02] assistant: Hi there!\n") + await buffer.append("[00:00:03] user: How are you?\n") + + assert not buffer.is_empty + + # Write to temp file + temp_path = await buffer.write_to_temp_file() + + try: + # Verify file exists and has correct content + assert os.path.exists(temp_path) + + with open(temp_path, "r") as f: + content = f.read() + assert "[00:00:01] user: Hello\n" in content + assert "[00:00:02] assistant: Hi there!\n" in content + assert "[00:00:03] user: How are you?\n" in content + finally: + # Clean up + if os.path.exists(temp_path): + os.remove(temp_path) + + +@pytest.mark.asyncio +async def test_empty_buffers(): + """Test that empty buffers are handled correctly.""" + audio_buffer = InMemoryAudioBuffer(workflow_run_id=789, sample_rate=16000) + transcript_buffer = InMemoryTranscriptBuffer(workflow_run_id=789) + + assert audio_buffer.is_empty + assert transcript_buffer.is_empty + + # Should still be able to write empty files + audio_path = await audio_buffer.write_to_temp_file() + transcript_path = await transcript_buffer.write_to_temp_file() + + try: + assert os.path.exists(audio_path) + assert os.path.exists(transcript_path) + + # Empty WAV file should still have valid header + with wave.open(audio_path, "rb") as wf: + assert wf.getnframes() == 0 + + # Empty transcript file + with open(transcript_path, "r") as f: + assert f.read() == "" + finally: + if os.path.exists(audio_path): + os.remove(audio_path) + if os.path.exists(transcript_path): + os.remove(transcript_path) diff --git a/api/tests/test_base_openai_llm_service.py b/api/tests/test_base_openai_llm_service.py new file mode 100644 index 0000000..6bb5f25 --- /dev/null +++ b/api/tests/test_base_openai_llm_service.py @@ -0,0 +1,179 @@ +### - This test has some weird loop which keeps on increasing the context size + +# import asyncio +# import json +# import unittest +# from types import SimpleNamespace +# from unittest import mock + +# from loguru import logger + +# from pipecat.frames.frames import ( +# FunctionCallInProgressFrame, +# FunctionCallResultFrame, +# FunctionCallsStartedFrame, +# LLMFullResponseEndFrame, +# LLMFullResponseStartFrame, +# LLMGeneratedTextFrame, +# LLMTextFrame, +# ) +# from pipecat.pipeline.pipeline import Pipeline +# from pipecat.processors.aggregators.openai_llm_context import ( +# OpenAILLMContext, +# OpenAILLMContextFrame, +# ) +# from pipecat.services.llm_service import ( +# FunctionCallParams, +# FunctionCallResultProperties, +# ) +# from pipecat.services.openai.llm import OpenAILLMService +# from pipecat.tests.utils import run_test + + +# class _MockAsyncStream: +# """A minimal async-stream wrapper that mimics ``openai.AsyncStream``.""" + +# def __init__(self, chunks): +# self._chunks = chunks + +# def __aiter__(self): +# self._idx = 0 +# return self + +# async def __anext__(self): +# if self._idx >= len(self._chunks): +# raise StopAsyncIteration +# item = self._chunks[self._idx] +# self._idx += 1 +# await asyncio.sleep(0) # Yield control +# return item + + +# # ------------------------------------------------------------------ +# # Factories for mock chunks +# # ------------------------------------------------------------------ + + +# def _make_tool_call(tool_name: str, args_json: str, *, idx: int = 0): +# function = SimpleNamespace(name=tool_name, arguments=args_json) +# return SimpleNamespace(index=idx, id=f"call-{idx}", function=function) + + +# def _make_chunk(*, content: str | None = None, tool_calls=None, usage=None): +# delta = SimpleNamespace() +# # When we are asked to simulate multiple tool calls in parallel, OpenAI +# # sends *separate* chunks for every tool-call index. To mimic that behaviour +# # in tests we split a list of tool calls (>1) into individual chunks – one +# # for each tool call – while keeping the original single-chunk behaviour +# # when zero or one tool calls are supplied. This enables us to write +# # concise tests such as ``_make_chunk(tool_calls=[call_1, call_2])`` that +# # accurately reflect the streaming protocol. + +# # No special handling needed if there is textual content or 0/1 tool calls. +# if content is not None or tool_calls is None or len(tool_calls) <= 1: +# if content is not None: +# delta.content = content +# # Always set tool_calls so downstream code can safely access it +# delta.tool_calls = tool_calls if tool_calls is not None else None +# return SimpleNamespace(choices=[SimpleNamespace(delta=delta)], usage=usage) + +# # --- Multiple tool calls (len(tool_calls) > 1) --- +# # Create a list of chunks, each containing a single tool call. This is the +# # format produced by the OpenAI client when several tools are invoked in a +# # single assistant response. +# chunks = [] +# for tc in tool_calls: +# delta_tc = SimpleNamespace(tool_calls=[tc]) +# chunks.append(SimpleNamespace(choices=[SimpleNamespace(delta=delta_tc)], usage=usage)) + +# return chunks + + +# class TestBaseOpenAILLMService(unittest.IsolatedAsyncioTestCase): +# async def test_process_context_with_patch(self): +# streamed_text = "Hello from OpenAI!" +# tool_name = "echo" +# tool_name_2 = "echo_2" +# tool_args = {"text": "hello"} +# tool_args_2 = {"text": "hello_2"} + +# # Build mocked stream (tool call first, then text) +# chunks = [ +# _make_chunk(content=streamed_text), +# _make_chunk(tool_calls=[_make_tool_call(tool_name, json.dumps(tool_args))]), +# _make_chunk(tool_calls=[_make_tool_call(tool_name_2, json.dumps(tool_args_2), idx=1)]), +# ] + +# # Instantiate real OpenAILLMService (no need for actual API key) +# llm = OpenAILLMService(model="gpt-4o-mini", api_key="test") + +# # Patch get_chat_completions to return our mocked async stream +# async def fake_get_chat_completions(self, context, messages): # noqa: D401 +# return _MockAsyncStream(chunks) + +# with mock.patch.object(llm.__class__, "get_chat_completions", fake_get_chat_completions): +# # Register echo tool +# executed = False + +# async def echo_handler(params: FunctionCallParams): +# nonlocal executed +# executed = True +# # sleep for 1 second +# logger.info("echo_handler: sleeping for 5 second") +# await asyncio.sleep(5) +# await params.result_callback( +# {"ok": True}, +# properties=FunctionCallResultProperties(run_llm=True), +# ) + +# async def echo_2_handler(params: FunctionCallParams): +# nonlocal executed +# executed = True +# # sleep for 1 second +# logger.info("echo_2_handler: sleeping for 5 second") +# await asyncio.sleep(5) +# await params.result_callback( +# {"ok": True}, +# properties=FunctionCallResultProperties(run_llm=True), +# ) + +# llm.register_function(tool_name, echo_handler) +# llm.register_function(tool_name_2, echo_2_handler) + +# # Prepare context and send +# context = OpenAILLMContext() +# context.add_message({"role": "user", "content": "Hi"}) +# frames_to_send = [OpenAILLMContextFrame(context)] + +# expected_down_frames = [ +# LLMFullResponseStartFrame, +# FunctionCallsStartedFrame, +# FunctionCallInProgressFrame, +# FunctionCallResultFrame, +# LLMGeneratedTextFrame, +# LLMTextFrame, +# LLMFullResponseEndFrame, +# ] + +# context_aggregator = llm.create_context_aggregator(context) + +# pipeline = Pipeline([llm, context_aggregator.assistant()]) + +# down_frames, _ = await run_test( +# pipeline, +# frames_to_send=frames_to_send, +# expected_down_frames=expected_down_frames, +# send_end_frame=False, +# ) + +# # Assertions +# self.assertTrue(executed) +# for fr in down_frames: +# if isinstance(fr, FunctionCallResultFrame): +# self.assertTrue(fr.run_llm) +# if isinstance(fr, LLMTextFrame): +# self.assertEqual(fr.text, streamed_text) + + +# if __name__ == "__main__": +# unittest.main() diff --git a/api/tests/test_concurrent_call_limiting.py b/api/tests/test_concurrent_call_limiting.py new file mode 100644 index 0000000..e2b316d --- /dev/null +++ b/api/tests/test_concurrent_call_limiting.py @@ -0,0 +1,330 @@ +"""Tests for concurrent call limiting functionality.""" + +from unittest.mock import AsyncMock, MagicMock, patch + +import pytest + +from api.enums import OrganizationConfigurationKey +from api.services.campaign.rate_limiter import RateLimiter + + +class TestConcurrentCallLimiting: + """Test suite for concurrent call limiting.""" + + @pytest.mark.asyncio + async def test_acquire_concurrent_slot_success(self): + """Test successful acquisition of concurrent slot.""" + rate_limiter = RateLimiter() + + # Mock Redis client + with patch.object(rate_limiter, "_get_redis") as mock_redis: + mock_client = AsyncMock() + mock_client.eval = AsyncMock(return_value="test_slot_123") + mock_redis.return_value = mock_client + + # Try to acquire slot + slot_id = await rate_limiter.try_acquire_concurrent_slot( + organization_id=1, max_concurrent=20 + ) + + assert slot_id == "test_slot_123" + mock_client.eval.assert_called_once() + + @pytest.mark.asyncio + async def test_acquire_concurrent_slot_limit_reached(self): + """Test slot acquisition when limit is reached.""" + rate_limiter = RateLimiter() + + # Mock Redis client + with patch.object(rate_limiter, "_get_redis") as mock_redis: + mock_client = AsyncMock() + mock_client.eval = AsyncMock(return_value=None) # Limit reached + mock_redis.return_value = mock_client + + # Try to acquire slot + slot_id = await rate_limiter.try_acquire_concurrent_slot( + organization_id=1, max_concurrent=20 + ) + + assert slot_id is None + mock_client.eval.assert_called_once() + + @pytest.mark.asyncio + async def test_release_concurrent_slot(self): + """Test releasing a concurrent slot.""" + rate_limiter = RateLimiter() + + # Mock Redis client + with patch.object(rate_limiter, "_get_redis") as mock_redis: + mock_client = AsyncMock() + mock_client.zrem = AsyncMock(return_value=1) # Successfully removed + mock_redis.return_value = mock_client + + # Release slot + success = await rate_limiter.release_concurrent_slot( + organization_id=1, slot_id="test_slot_123" + ) + + assert success is True + mock_client.zrem.assert_called_once_with( + "concurrent_calls:1", "test_slot_123" + ) + + @pytest.mark.asyncio + async def test_get_concurrent_count(self): + """Test getting current concurrent call count.""" + rate_limiter = RateLimiter() + + # Mock Redis client + with patch.object(rate_limiter, "_get_redis") as mock_redis: + mock_client = AsyncMock() + mock_client.zremrangebyscore = AsyncMock() # Cleanup stale entries + mock_client.zcard = AsyncMock(return_value=5) # 5 active calls + mock_redis.return_value = mock_client + + # Get count + count = await rate_limiter.get_concurrent_count(organization_id=1) + + assert count == 5 + mock_client.zremrangebyscore.assert_called_once() + mock_client.zcard.assert_called_once() + + @pytest.mark.asyncio + async def test_stale_entry_cleanup(self): + """Test that stale entries are cleaned up automatically.""" + rate_limiter = RateLimiter() + + # Mock Redis client + with patch.object(rate_limiter, "_get_redis") as mock_redis: + mock_client = AsyncMock() + + # Mock eval to simulate cleanup in Lua script + mock_client.eval = AsyncMock(return_value="new_slot_123") + mock_redis.return_value = mock_client + + # Try to acquire slot (which should trigger cleanup) + slot_id = await rate_limiter.try_acquire_concurrent_slot( + organization_id=1, max_concurrent=20 + ) + + assert slot_id == "new_slot_123" + + # Verify Lua script was called with proper stale cutoff + call_args = mock_client.eval.call_args[0] + lua_script = call_args[0] + assert "ZREMRANGEBYSCORE" in lua_script # Cleanup command in script + + @pytest.mark.asyncio + async def test_workflow_slot_mapping_operations(self): + """Test storing, retrieving, and deleting workflow slot mappings.""" + rate_limiter = RateLimiter() + + # Mock Redis client + with patch.object(rate_limiter, "_get_redis") as mock_redis: + mock_client = AsyncMock() + mock_client.hset = AsyncMock(return_value=1) + mock_client.expire = AsyncMock(return_value=True) + mock_client.hgetall = AsyncMock( + return_value={"org_id": "1", "slot_id": "test_slot_123"} + ) + mock_client.delete = AsyncMock(return_value=1) + mock_redis.return_value = mock_client + + # Test storing mapping + success = await rate_limiter.store_workflow_slot_mapping( + workflow_run_id=999, organization_id=1, slot_id="test_slot_123" + ) + assert success is True + mock_client.hset.assert_called_once() + mock_client.expire.assert_called_once() + + # Test retrieving mapping + mapping = await rate_limiter.get_workflow_slot_mapping(workflow_run_id=999) + assert mapping == (1, "test_slot_123") + mock_client.hgetall.assert_called_once_with("workflow_slot_mapping:999") + + # Test deleting mapping + deleted = await rate_limiter.delete_workflow_slot_mapping( + workflow_run_id=999 + ) + assert deleted is True + mock_client.delete.assert_called_once_with("workflow_slot_mapping:999") + + +class TestCampaignCallDispatcher: + """Test suite for CampaignCallDispatcher with concurrent limiting.""" + + @pytest.mark.asyncio + async def test_dispatch_call_waits_for_slot(self): + """Test that dispatch_call waits for available slot.""" + from api.services.campaign.call_dispatcher import CampaignCallDispatcher + + dispatcher = CampaignCallDispatcher() + + # Mock dependencies + mock_campaign = MagicMock( + organization_id=1, workflow_id=123, id=456, created_by=789 + ) + mock_queued_run = MagicMock( + id=111, context_variables={"phone_number": "+1234567890"} + ) + + # Mock rate limiter to simulate waiting + slot_acquired = False + call_count = 0 + + async def mock_try_acquire(org_id, max_concurrent): + nonlocal slot_acquired, call_count + call_count += 1 + if call_count > 2: # Succeed on third try + slot_acquired = True + return "test_slot_123" + return None + + with patch( + "api.services.campaign.call_dispatcher.rate_limiter" + ) as mock_limiter: + mock_limiter.try_acquire_concurrent_slot = AsyncMock( + side_effect=mock_try_acquire + ) + mock_limiter.release_concurrent_slot = AsyncMock() + mock_limiter.store_workflow_slot_mapping = AsyncMock(return_value=True) + + with patch("api.services.campaign.call_dispatcher.db_client") as mock_db: + mock_db.get_configuration = AsyncMock(return_value=None) + mock_db.get_workflow_by_id = AsyncMock( + return_value=MagicMock(template_context_variables={}) + ) + mock_db.create_workflow_run = AsyncMock( + return_value=MagicMock(id=999, logs={}) + ) + + with patch.object( + dispatcher.twilio_service, "initiate_call" + ) as mock_twilio: + mock_twilio.return_value = {"sid": "test_sid"} + + # Dispatch call (should wait and retry) + workflow_run = await dispatcher.dispatch_call( + mock_queued_run, mock_campaign + ) + + assert workflow_run is not None + assert slot_acquired is True + assert call_count == 3 # Tried 3 times + assert mock_limiter.try_acquire_concurrent_slot.call_count == 3 + + @pytest.mark.asyncio + async def test_dispatch_call_stores_slot_mapping(self): + """Test that dispatch_call stores slot mapping in Redis.""" + from api.services.campaign.call_dispatcher import CampaignCallDispatcher + + dispatcher = CampaignCallDispatcher() + + # Mock dependencies + mock_campaign = MagicMock( + organization_id=1, workflow_id=123, id=456, created_by=789 + ) + mock_queued_run = MagicMock( + id=111, context_variables={"phone_number": "+1234567890"} + ) + + with patch( + "api.services.campaign.call_dispatcher.rate_limiter" + ) as mock_limiter: + mock_limiter.try_acquire_concurrent_slot = AsyncMock( + return_value="test_slot_123" + ) + mock_limiter.store_workflow_slot_mapping = AsyncMock(return_value=True) + + with patch("api.services.campaign.call_dispatcher.db_client") as mock_db: + mock_db.get_configuration = AsyncMock(return_value=None) + mock_db.get_workflow_by_id = AsyncMock( + return_value=MagicMock(template_context_variables={}) + ) + mock_db.create_workflow_run = AsyncMock( + return_value=MagicMock(id=999, logs={}) + ) + + with patch.object( + dispatcher.twilio_service, "initiate_call" + ) as mock_twilio: + mock_twilio.return_value = {"sid": "test_sid"} + + # Dispatch call + workflow_run = await dispatcher.dispatch_call( + mock_queued_run, mock_campaign + ) + + # Verify slot mapping was stored + mock_limiter.store_workflow_slot_mapping.assert_called_once_with( + 999, 1, "test_slot_123" + ) + + @pytest.mark.asyncio + async def test_org_specific_concurrent_limit(self): + """Test that organization-specific concurrent limit is used.""" + from api.services.campaign.call_dispatcher import CampaignCallDispatcher + + dispatcher = CampaignCallDispatcher() + + # Mock db_client to return org-specific limit + with patch("api.services.campaign.call_dispatcher.db_client") as mock_db: + mock_config = MagicMock(value={"value": 10}) # Org limit is 10 + mock_db.get_configuration = AsyncMock(return_value=mock_config) + + # Get org limit + limit = await dispatcher.get_org_concurrent_limit(organization_id=1) + + assert limit == 10 # Should use org-specific limit + mock_db.get_configuration.assert_called_once_with( + 1, OrganizationConfigurationKey.CONCURRENT_CALL_LIMIT.value + ) + + @pytest.mark.asyncio + async def test_default_concurrent_limit(self): + """Test that default limit is used when org config not found.""" + from api.services.campaign.call_dispatcher import CampaignCallDispatcher + + dispatcher = CampaignCallDispatcher() + + # Mock db_client to return None (no config) + with patch("api.services.campaign.call_dispatcher.db_client") as mock_db: + mock_db.get_configuration = AsyncMock(return_value=None) + + # Get org limit + limit = await dispatcher.get_org_concurrent_limit(organization_id=1) + + assert limit == 20 # Should use default limit + + @pytest.mark.asyncio + async def test_release_call_slot(self): + """Test releasing call slot when workflow completes.""" + from api.services.campaign.call_dispatcher import CampaignCallDispatcher + + dispatcher = CampaignCallDispatcher() + + # Mock rate limiter + with patch( + "api.services.campaign.call_dispatcher.rate_limiter" + ) as mock_limiter: + # Mock getting the slot mapping from Redis + mock_limiter.get_workflow_slot_mapping = AsyncMock( + return_value=(1, "test_slot_123") + ) + mock_limiter.release_concurrent_slot = AsyncMock(return_value=True) + mock_limiter.delete_workflow_slot_mapping = AsyncMock(return_value=True) + + # Release slot + success = await dispatcher.release_call_slot(workflow_run_id=999) + + assert success is True + mock_limiter.get_workflow_slot_mapping.assert_called_once_with(999) + mock_limiter.release_concurrent_slot.assert_called_once_with( + 1, "test_slot_123" + ) + mock_limiter.delete_workflow_slot_mapping.assert_called_once_with(999) + + +if __name__ == "__main__": + pytest.main([__file__, "-v"]) diff --git a/api/tests/test_configuration_masking_merge.py b/api/tests/test_configuration_masking_merge.py new file mode 100644 index 0000000..c297a38 --- /dev/null +++ b/api/tests/test_configuration_masking_merge.py @@ -0,0 +1,79 @@ +import pytest +from pydantic import ValidationError + +from api.schemas.user_configuration import UserConfiguration +from api.services.configuration.masking import is_mask_of, mask_key, mask_user_config +from api.services.configuration.merge import merge_user_configurations +from api.services.configuration.registry import ( + GroqModel, + OpenAILLMService, +) + +REAL_KEY = "sk-1234567890abcdef" + + +def _build_config_with_openai(key: str) -> UserConfiguration: + return UserConfiguration( + llm=OpenAILLMService(api_key=key), + stt=None, + tts=None, + ) + + +def test_mask_key_basic(): + masked = mask_key(REAL_KEY) + # Should reveal only last 4 chars + assert masked.endswith(REAL_KEY[-4:]) + assert set(masked[:-4]) == {"*"} + assert len(masked) == len(REAL_KEY) + # is_mask_of round-trip + assert is_mask_of(masked, REAL_KEY) + + +def test_mask_user_config_masks_api_keys(): + cfg = _build_config_with_openai(REAL_KEY) + dumped = mask_user_config(cfg) + assert dumped["llm"]["api_key"].endswith(REAL_KEY[-4:]) + assert dumped["llm"]["api_key"].startswith("*" * (len(REAL_KEY) - 4)) + + +def test_merge_preserves_key_when_mask_sent(): + existing = _build_config_with_openai(REAL_KEY) + incoming_partial = { + "llm": { + "provider": "openai", + "model": existing.llm.model, + "api_key": mask_key(REAL_KEY), # masked placeholder + } + } + + merged = merge_user_configurations(existing, incoming_partial) + assert merged.llm.api_key == REAL_KEY # key preserved + + +def test_merge_replaces_key_when_new_key_provided(): + existing = _build_config_with_openai(REAL_KEY) + new_key = "sk-replaced-9999" + incoming_partial = { + "llm": { + "provider": "openai", + "model": existing.llm.model, + "api_key": new_key, + } + } + merged = merge_user_configurations(existing, incoming_partial) + assert merged.llm.api_key == new_key + + +def test_merge_drops_old_key_when_provider_changes(): + existing = _build_config_with_openai(REAL_KEY) + incoming_partial = { + "llm": { + "provider": "groq", + "model": GroqModel.LLAMA_3_3_70B, + # api_key intentionally absent – should NOT inherit old key + } + } + + with pytest.raises(ValidationError): + merge_user_configurations(existing, incoming_partial) diff --git a/api/tests/test_default_user_configuration.py b/api/tests/test_default_user_configuration.py new file mode 100644 index 0000000..f264a96 --- /dev/null +++ b/api/tests/test_default_user_configuration.py @@ -0,0 +1,33 @@ +import os +import uuid + +import pytest + +from api.db.user_client import UserClient +from api.services.configuration.registry import ServiceProviders + + +@pytest.mark.asyncio +async def test_default_configuration_created(db_session): + # Set env variable for openai to simulate availability of default key + os.environ["OPENAI_API_KEY"] = "sk-test-openai-key" + + # Ensure deepgram env variable absent to focus test + os.environ.pop("DEEPGRAM_API_KEY", None) + + # Generate a unique (random) provider user ID for each test run + test_provider_user_id = f"provider_user_{uuid.uuid4().hex}" + user_client: UserClient = db_session # db_session fixture yields the client + + user_model = await user_client.get_or_create_user_by_provider_id( + test_provider_user_id + ) + + config = await user_client.get_user_configurations(user_model.id) + + assert config.llm is not None, "LLM config should be created when env key present" + assert config.llm.provider == ServiceProviders.OPENAI + assert config.llm.api_key == "sk-test-openai-key" + + # Cleanup / restore env variable side-effects + os.environ.pop("OPENAI_API_KEY", None) diff --git a/api/tests/test_disposition_mapper.py b/api/tests/test_disposition_mapper.py new file mode 100644 index 0000000..e674161 --- /dev/null +++ b/api/tests/test_disposition_mapper.py @@ -0,0 +1,122 @@ +from unittest.mock import AsyncMock, MagicMock, patch + +import pytest + +from api.services.workflow.disposition_mapper import ( + apply_disposition_mapping, + get_organization_id_from_workflow_run, +) + + +@pytest.mark.asyncio +async def test_apply_disposition_mapping_with_valid_mapping(): + """Test disposition mapping with valid configuration.""" + with patch("api.services.workflow.disposition_mapper.db_client") as mock_db_client: + # Mock disposition mapping configuration + mock_db_client.get_configuration_value = AsyncMock( + return_value={ + "XFER": "TRANSFERRED", + "ND": "NOT_QUALIFIED", + "user_hangup": "HANGUP", + } + ) + + # Test mapping exists + result = await apply_disposition_mapping("XFER", 1) + assert result == "TRANSFERRED" + + # Test mapping doesn't exist + result = await apply_disposition_mapping("UNKNOWN", 1) + assert result == "UNKNOWN" + + # Verify db_client was called correctly + mock_db_client.get_configuration_value.assert_called_with( + 1, "DISPOSITION_CODE_MAPPING", default={} + ) + + +@pytest.mark.asyncio +async def test_apply_disposition_mapping_no_organization_id(): + """Test disposition mapping with no organization ID.""" + # Should return original value + result = await apply_disposition_mapping("XFER", None) + assert result == "XFER" + + +@pytest.mark.asyncio +async def test_apply_disposition_mapping_empty_value(): + """Test disposition mapping with empty value.""" + # Should return original empty value + result = await apply_disposition_mapping("", 1) + assert result == "" + + +@pytest.mark.asyncio +async def test_apply_disposition_mapping_error_handling(): + """Test disposition mapping handles errors gracefully.""" + with patch("api.services.workflow.disposition_mapper.db_client") as mock_db_client: + # Mock database error + mock_db_client.get_configuration_value = AsyncMock( + side_effect=Exception("Database error") + ) + + # Should return original value on error + result = await apply_disposition_mapping("XFER", 1) + assert result == "XFER" + + +@pytest.mark.asyncio +async def test_get_organization_id_from_workflow_run(): + """Test getting organization ID from workflow run ID.""" + with patch("api.services.workflow.disposition_mapper.db_client") as mock_db_client: + # Mock workflow run with organization + mock_workflow_run = MagicMock() + mock_workflow_run.workflow.user.selected_organization_id = 123 + mock_db_client.get_workflow_run_by_id = AsyncMock( + return_value=mock_workflow_run + ) + + result = await get_organization_id_from_workflow_run(1) + assert result == 123 + + # Verify db_client was called correctly + mock_db_client.get_workflow_run_by_id.assert_called_once_with(1) + + +@pytest.mark.asyncio +async def test_get_organization_id_no_workflow_run(): + """Test getting organization ID when workflow run doesn't exist.""" + with patch("api.services.workflow.disposition_mapper.db_client") as mock_db_client: + # Mock no workflow run found + mock_db_client.get_workflow_run_by_id = AsyncMock(return_value=None) + + result = await get_organization_id_from_workflow_run(1) + assert result is None + + +@pytest.mark.asyncio +async def test_get_organization_id_no_user(): + """Test getting organization ID when workflow has no user.""" + with patch("api.services.workflow.disposition_mapper.db_client") as mock_db_client: + # Mock workflow run with no user + mock_workflow_run = MagicMock() + mock_workflow_run.workflow.user = None + mock_db_client.get_workflow_run_by_id = AsyncMock( + return_value=mock_workflow_run + ) + + result = await get_organization_id_from_workflow_run(1) + assert result is None + + +@pytest.mark.asyncio +async def test_get_organization_id_error_handling(): + """Test getting organization ID handles errors gracefully.""" + with patch("api.services.workflow.disposition_mapper.db_client") as mock_db_client: + # Mock database error + mock_db_client.get_workflow_run_by_id = AsyncMock( + side_effect=Exception("Database error") + ) + + result = await get_organization_id_from_workflow_run(1) + assert result is None diff --git a/api/tests/test_event_handler_disposition_mapping.py b/api/tests/test_event_handler_disposition_mapping.py new file mode 100644 index 0000000..cc6cea3 --- /dev/null +++ b/api/tests/test_event_handler_disposition_mapping.py @@ -0,0 +1,370 @@ +from unittest.mock import AsyncMock, MagicMock, patch + +import pytest +from pipecat.utils.enums import EndTaskReason + +from api.services.pipecat.event_handlers import register_transport_event_handlers + + +@pytest.fixture +def mock_dependencies(): + """Create mock dependencies for event handlers.""" + # Store registered handlers + registered_handlers = {} + + def mock_event_handler(event_name): + def decorator(func): + registered_handlers[event_name] = func + return func + + return decorator + + mock_transport = MagicMock() + mock_transport.event_handler = mock_event_handler + + mock_task = MagicMock() + mock_task.cancel = AsyncMock() + + mock_engine = MagicMock() + mock_engine.initialize = AsyncMock() + mock_engine.cleanup = AsyncMock() + + mock_audio_buffer = MagicMock() + mock_audio_buffer.start_recording = AsyncMock() + mock_audio_buffer.stop_recording = AsyncMock() + + mock_usage_metrics_aggregator = MagicMock() + mock_usage_metrics_aggregator.get_all_usage_metrics_serialized = MagicMock( + return_value={"test": "metrics"} + ) + + return { + "transport": mock_transport, + "workflow_run_id": 123, + "audio_buffer": mock_audio_buffer, + "task": mock_task, + "engine": mock_engine, + "usage_metrics_aggregator": mock_usage_metrics_aggregator, + "audio_synchronizer": None, + "registered_handlers": registered_handlers, + } + + +@pytest.mark.asyncio +async def test_transport_disconnect_reason_mapping(mock_dependencies): + """Test that transport_disconnect_reason is mapped when no engine disconnect reason exists.""" + # Register event handlers + register_transport_event_handlers( + transport=mock_dependencies["transport"], + workflow_run_id=mock_dependencies["workflow_run_id"], + audio_buffer=mock_dependencies["audio_buffer"], + task=mock_dependencies["task"], + engine=mock_dependencies["engine"], + usage_metrics_aggregator=mock_dependencies["usage_metrics_aggregator"], + audio_synchronizer=mock_dependencies["audio_synchronizer"], + ) + + # Get the on_client_disconnected handler + handler = mock_dependencies["registered_handlers"]["on_client_disconnected"] + + # Mock engine with no call disposition + mock_dependencies["engine"].get_call_disposition.return_value = None + mock_dependencies["engine"].get_gathered_context.return_value = { + "agent_name": "Alex" + } + + # Mock the disposition mapper functions + with patch( + "api.services.pipecat.event_handlers.get_organization_id_from_workflow_run", + new_callable=AsyncMock, + ) as mock_get_org_id: + with patch( + "api.services.pipecat.event_handlers.apply_disposition_mapping", + new_callable=AsyncMock, + ) as mock_apply_mapping: + with patch( + "api.services.pipecat.event_handlers.db_client" + ) as mock_db_client: + with patch( + "api.services.pipecat.event_handlers.enqueue_job" + ) as mock_enqueue: + # Mock organization ID + mock_get_org_id.return_value = 1 + + # Mock call duration for user_hangup logic + mock_dependencies[ + "usage_metrics_aggregator" + ].get_call_duration.return_value = 15 + + # Mock disposition mapping + async def apply_mapping_side_effect(value, org_id): + return { + "NIBP": "NOT_INTERESTED_BUSINESS_PURPOSE", + "user_qualified": "QUALIFIED", + }.get(value, value) + + mock_apply_mapping.side_effect = apply_mapping_side_effect + + # Mock database operations + mock_workflow_run = MagicMock() + mock_workflow_run.id = 123 + mock_workflow_run.workflow_id = 1 + mock_workflow_run.organization_id = 1 + mock_workflow_run.gathered_context = {} + mock_db_client.get_workflow_run_by_id = AsyncMock( + return_value=mock_workflow_run + ) + mock_db_client.update_workflow_run = AsyncMock() + + # Call handler with transport_disconnect_reason + await handler( + mock_dependencies["transport"], + participant=None, + transport_disconnect_reason="user_hangup", + ) + + # Verify disposition mapping was applied with NIBP (since duration > 10) + mock_apply_mapping.assert_called_once_with("NIBP", 1) + + # Verify database was updated with mapped value + mock_db_client.update_workflow_run.assert_called_once() + call_args = mock_db_client.update_workflow_run.call_args + assert ( + call_args[1]["gathered_context"]["mapped_call_disposition"] + == "NOT_INTERESTED_BUSINESS_PURPOSE" + ) + + # Verify task was cancelled (no engine disconnect reason) + mock_dependencies["task"].cancel.assert_called_once() + + +@pytest.mark.asyncio +async def test_transport_disconnect_reason_user_hangup_short_call(mock_dependencies): + """Test that user_hangup with short call duration is mapped to HU.""" + # Register event handlers + register_transport_event_handlers( + transport=mock_dependencies["transport"], + workflow_run_id=mock_dependencies["workflow_run_id"], + audio_buffer=mock_dependencies["audio_buffer"], + task=mock_dependencies["task"], + engine=mock_dependencies["engine"], + usage_metrics_aggregator=mock_dependencies["usage_metrics_aggregator"], + audio_synchronizer=mock_dependencies["audio_synchronizer"], + ) + + # Get the on_client_disconnected handler + handler = mock_dependencies["registered_handlers"]["on_client_disconnected"] + + # Mock engine with no call disposition + mock_dependencies["engine"].get_call_disposition.return_value = None + mock_dependencies["engine"].get_gathered_context.return_value = { + "agent_name": "Alex" + } + + # Mock the disposition mapper functions + with patch( + "api.services.pipecat.event_handlers.get_organization_id_from_workflow_run", + new_callable=AsyncMock, + ) as mock_get_org_id: + with patch( + "api.services.pipecat.event_handlers.apply_disposition_mapping", + new_callable=AsyncMock, + ) as mock_apply_mapping: + with patch( + "api.services.pipecat.event_handlers.db_client" + ) as mock_db_client: + with patch( + "api.services.pipecat.event_handlers.enqueue_job" + ) as mock_enqueue: + # Mock organization ID + mock_get_org_id.return_value = 1 + + # Mock call duration for user_hangup logic (< 10 seconds) + mock_dependencies[ + "usage_metrics_aggregator" + ].get_call_duration.return_value = 5 + + # Mock disposition mapping + mock_apply_mapping.return_value = "HANGUP" + + # Mock database operations + mock_workflow_run = MagicMock() + mock_workflow_run.id = 123 + mock_workflow_run.workflow_id = 1 + mock_workflow_run.organization_id = 1 + mock_workflow_run.gathered_context = {} + mock_db_client.get_workflow_run_by_id = AsyncMock( + return_value=mock_workflow_run + ) + mock_db_client.update_workflow_run = AsyncMock() + + # Call handler with transport_disconnect_reason + await handler( + mock_dependencies["transport"], + participant=None, + transport_disconnect_reason="user_hangup", + ) + + # Verify disposition mapping was applied with HU (since duration < 10) + mock_apply_mapping.assert_called_once_with("HU", 1) + + # Verify database was updated with mapped value + mock_db_client.update_workflow_run.assert_called_once() + call_args = mock_db_client.update_workflow_run.call_args + assert ( + call_args[1]["gathered_context"]["mapped_call_disposition"] + == "HANGUP" + ) + + # Verify task was cancelled (no engine disconnect reason) + mock_dependencies["task"].cancel.assert_called_once() + + +@pytest.mark.asyncio +async def test_engine_disconnect_reason_takes_precedence(mock_dependencies): + """Test that engine disconnect reason takes precedence and is not mapped.""" + # Register event handlers + register_transport_event_handlers( + transport=mock_dependencies["transport"], + workflow_run_id=mock_dependencies["workflow_run_id"], + audio_buffer=mock_dependencies["audio_buffer"], + task=mock_dependencies["task"], + engine=mock_dependencies["engine"], + usage_metrics_aggregator=mock_dependencies["usage_metrics_aggregator"], + audio_synchronizer=mock_dependencies["audio_synchronizer"], + ) + + # Get the on_client_disconnected handler + handler = mock_dependencies["registered_handlers"]["on_client_disconnected"] + + # Mock engine with call disposition + mock_dependencies["engine"].get_call_disposition.return_value = "user_qualified" + mock_dependencies["engine"].get_gathered_context.return_value = { + "agent_name": "Alex" + } + + # Mock the disposition mapper functions + with patch( + "api.services.pipecat.event_handlers.get_organization_id_from_workflow_run", + new_callable=AsyncMock, + ) as mock_get_org_id: + with patch( + "api.services.pipecat.event_handlers.apply_disposition_mapping", + new_callable=AsyncMock, + ) as mock_apply_mapping: + with patch( + "api.services.pipecat.event_handlers.db_client" + ) as mock_db_client: + with patch( + "api.services.pipecat.event_handlers.enqueue_job" + ) as mock_enqueue: + # Mock organization ID + mock_get_org_id.return_value = 1 + + # Mock disposition mapping for engine's reason + mock_apply_mapping.return_value = "QUALIFIED" + + # Mock database operations + mock_workflow_run = MagicMock() + mock_workflow_run.id = 123 + mock_workflow_run.workflow_id = 1 + mock_workflow_run.organization_id = 1 + mock_workflow_run.gathered_context = {} + mock_db_client.get_workflow_run_by_id = AsyncMock( + return_value=mock_workflow_run + ) + mock_db_client.update_workflow_run = AsyncMock() + + # Call handler with transport_disconnect_reason + await handler( + mock_dependencies["transport"], + participant=None, + transport_disconnect_reason="user_hangup", + ) + + # Verify disposition mapping was called with engine's reason + mock_apply_mapping.assert_called_once_with("user_qualified", 1) + + # Verify database was updated with mapped value + mock_db_client.update_workflow_run.assert_called_once() + call_args = mock_db_client.update_workflow_run.call_args + assert ( + call_args[1]["gathered_context"]["mapped_call_disposition"] + == "QUALIFIED" + ) + + # Verify task was NOT cancelled (engine disconnect reason exists) + mock_dependencies["task"].cancel.assert_not_called() + + +@pytest.mark.asyncio +async def test_no_disconnect_reason_uses_unknown(mock_dependencies): + """Test that when no disconnect reason is provided, UNKNOWN is used.""" + # Register event handlers + register_transport_event_handlers( + transport=mock_dependencies["transport"], + workflow_run_id=mock_dependencies["workflow_run_id"], + audio_buffer=mock_dependencies["audio_buffer"], + task=mock_dependencies["task"], + engine=mock_dependencies["engine"], + usage_metrics_aggregator=mock_dependencies["usage_metrics_aggregator"], + audio_synchronizer=mock_dependencies["audio_synchronizer"], + ) + + # Get the on_client_disconnected handler + handler = mock_dependencies["registered_handlers"]["on_client_disconnected"] + + # Mock engine with no call disposition + mock_dependencies["engine"].get_call_disposition.return_value = None + mock_dependencies["engine"].get_gathered_context.return_value = { + "agent_name": "Alex" + } + + with patch( + "api.services.pipecat.event_handlers.get_organization_id_from_workflow_run" + ) as mock_get_org_id: + with patch( + "api.services.pipecat.event_handlers.apply_disposition_mapping" + ) as mock_apply_mapping: + with patch( + "api.services.pipecat.event_handlers.db_client" + ) as mock_db_client: + with patch( + "api.services.pipecat.event_handlers.enqueue_job" + ) as mock_enqueue: + # Mock organization ID + mock_get_org_id.return_value = 1 + + # Mock disposition mapping - should return UNKNOWN as-is + mock_apply_mapping.return_value = EndTaskReason.UNKNOWN.value + + # Mock database operations + mock_workflow_run = MagicMock() + mock_workflow_run.id = 123 + mock_workflow_run.workflow_id = 1 + mock_workflow_run.organization_id = 1 + mock_workflow_run.gathered_context = {} + mock_db_client.get_workflow_run_by_id = AsyncMock( + return_value=mock_workflow_run + ) + mock_db_client.update_workflow_run = AsyncMock() + + # Call handler without transport_disconnect_reason + await handler( + mock_dependencies["transport"], + participant=None, + transport_disconnect_reason=None, + ) + + # Verify disposition mapping was called with UNKNOWN + mock_apply_mapping.assert_called_once_with( + EndTaskReason.UNKNOWN.value, 1 + ) + + # Verify database was updated with UNKNOWN + mock_db_client.update_workflow_run.assert_called_once() + call_args = mock_db_client.update_workflow_run.call_args + assert ( + call_args[1]["gathered_context"]["mapped_call_disposition"] + == EndTaskReason.UNKNOWN.value + ) diff --git a/api/tests/test_event_handlers_refactor.py b/api/tests/test_event_handlers_refactor.py new file mode 100644 index 0000000..94fec0b --- /dev/null +++ b/api/tests/test_event_handlers_refactor.py @@ -0,0 +1,184 @@ +from unittest.mock import AsyncMock, MagicMock + +import pytest + +from api.services.pipecat.audio_config import AudioConfig +from api.services.pipecat.event_handlers import ( + register_audio_data_handler, + register_transcript_handler, + register_transport_event_handlers, +) + + +@pytest.mark.asyncio +async def test_transport_handlers_with_in_memory_buffers(): + """Test that transport handlers create and return in-memory buffers.""" + # Mock dependencies + transport = MagicMock() + transport.event_handler = lambda event_name: lambda func: func + + audio_buffer = AsyncMock() + audio_synchronizer = AsyncMock() + task = AsyncMock() + engine = AsyncMock() + engine.get_call_disposition.return_value = None + engine.get_gathered_context.return_value = {} + + usage_metrics_aggregator = AsyncMock() + usage_metrics_aggregator.get_call_duration.return_value = 30 + usage_metrics_aggregator.get_all_usage_metrics_serialized.return_value = {} + + # Create test audio config + audio_config = AudioConfig( + transport_in_sample_rate=16000, + transport_out_sample_rate=16000, + pipeline_sample_rate=16000, + ) + + # Register handlers + audio_buf, transcript_buf = register_transport_event_handlers( + transport=transport, + workflow_run_id=123, + audio_buffer=audio_buffer, + task=task, + engine=engine, + usage_metrics_aggregator=usage_metrics_aggregator, + audio_synchronizer=audio_synchronizer, + audio_config=audio_config, + ) + + # Verify buffers were created with correct configuration + assert audio_buf is not None + assert transcript_buf is not None + assert audio_buf._workflow_run_id == 123 + assert audio_buf._sample_rate == 16000 + assert audio_buf._num_channels == 1 + assert transcript_buf._workflow_run_id == 123 + + +@pytest.mark.asyncio +async def test_audio_handler_with_in_memory_buffer(): + """Test audio handler uses in-memory buffer when provided.""" + # Mock audio synchronizer + audio_synchronizer = MagicMock() + handlers = {} + + def mock_event_handler(event_name): + def decorator(func): + handlers[event_name] = func + return func + + return decorator + + audio_synchronizer.event_handler = mock_event_handler + + # Mock in-memory buffer + in_memory_buffer = AsyncMock() + + # Register handler with buffer + register_audio_data_handler( + audio_synchronizer, workflow_run_id=123, in_memory_buffer=in_memory_buffer + ) + + # Test the handler + assert "on_merged_audio" in handlers + handler = handlers["on_merged_audio"] + + # Call handler with test data + test_pcm = b"test_audio_data" + await handler(None, test_pcm, 16000, 1) + + # Verify buffer was used + in_memory_buffer.append.assert_called_once_with(test_pcm) + + +@pytest.mark.asyncio +async def test_transcript_handler_with_in_memory_buffer(): + """Test transcript handler uses in-memory buffer when provided.""" + # Mock transcript processor + transcript = MagicMock() + handlers = {} + + def mock_event_handler(event_name): + def decorator(func): + handlers[event_name] = func + return func + + return decorator + + transcript.event_handler = mock_event_handler + + # Mock in-memory buffer + in_memory_buffer = AsyncMock() + + # Register handler with buffer + register_transcript_handler( + transcript, workflow_run_id=456, in_memory_buffer=in_memory_buffer + ) + + # Create test frame + test_frame = MagicMock() + test_frame.messages = [ + MagicMock(timestamp="00:00:01", role="user", content="Hello"), + MagicMock(timestamp="00:00:02", role="assistant", content="Hi there"), + ] + + # Test the handler + handler = handlers["on_transcript_update"] + await handler(None, test_frame) + + # Verify buffer was used with correct format + expected_text = "[00:00:01] user: Hello\n[00:00:02] assistant: Hi there\n" + in_memory_buffer.append.assert_called_once_with(expected_text) + + +@pytest.mark.asyncio +async def test_audio_config_sample_rates(): + """Test that different audio configs result in correct sample rates.""" + # Mock dependencies + transport = MagicMock() + transport.event_handler = lambda event_name: lambda func: func + + audio_buffer = AsyncMock() + audio_synchronizer = AsyncMock() + task = AsyncMock() + engine = AsyncMock() + engine.get_call_disposition.return_value = None + engine.get_gathered_context.return_value = {} + + usage_metrics_aggregator = AsyncMock() + usage_metrics_aggregator.get_all_usage_metrics_serialized.return_value = {} + + # Test with 8kHz audio config (e.g., for Stasis/Twilio) + audio_config_8k = AudioConfig( + transport_in_sample_rate=8000, + transport_out_sample_rate=8000, + pipeline_sample_rate=8000, + ) + + audio_buf_8k, _ = register_transport_event_handlers( + transport=transport, + workflow_run_id=456, + audio_buffer=audio_buffer, + task=task, + engine=engine, + usage_metrics_aggregator=usage_metrics_aggregator, + audio_synchronizer=audio_synchronizer, + audio_config=audio_config_8k, + ) + + assert audio_buf_8k._sample_rate == 8000 + + # Test with no audio config (should default to 16kHz) + audio_buf_default, _ = register_transport_event_handlers( + transport=transport, + workflow_run_id=789, + audio_buffer=audio_buffer, + task=task, + engine=engine, + usage_metrics_aggregator=usage_metrics_aggregator, + audio_synchronizer=audio_synchronizer, + audio_config=None, + ) + + assert audio_buf_default._sample_rate == 16000 diff --git a/api/tests/test_filters.py b/api/tests/test_filters.py new file mode 100644 index 0000000..feb6e73 --- /dev/null +++ b/api/tests/test_filters.py @@ -0,0 +1,162 @@ +"""Test filter functionality.""" + +from unittest.mock import MagicMock + +from api.db.filters import ATTRIBUTE_FIELD_MAPPING, apply_workflow_run_filters + + +def test_attribute_field_mapping(): + """Test that all required attributes are mapped.""" + expected_attributes = [ + "dateRange", + "dispositionCode", + "duration", + "status", + "tokenUsage", + "runId", + "workflowId", + "callTags", + "phoneNumber", + ] + + for attr in expected_attributes: + assert attr in ATTRIBUTE_FIELD_MAPPING, f"Missing mapping for {attr}" + + +def test_filter_with_explicit_type(): + """Test that filters work with explicit type from UI.""" + + # Mock query + mock_query = MagicMock() + mock_query.where = MagicMock(return_value=mock_query) + + test_cases = [ + # Date range filter + { + "filters": [ + { + "attribute": "dateRange", + "type": "dateRange", + "value": {"from": "2024-01-01", "to": "2024-01-31"}, + } + ], + }, + # Multi-select filter + { + "filters": [ + { + "attribute": "dispositionCode", + "type": "multiSelect", + "value": {"codes": ["XFER", "HU"]}, + } + ], + }, + # Number range filter + { + "filters": [ + { + "attribute": "duration", + "type": "numberRange", + "value": {"min": 60, "max": 300}, + } + ], + }, + # Radio/status filter + { + "filters": [ + { + "attribute": "status", + "type": "radio", + "value": {"status": "completed"}, + } + ], + }, + # Number filter + { + "filters": [ + {"attribute": "runId", "type": "number", "value": {"value": 123}} + ], + }, + # Text filter + { + "filters": [ + { + "attribute": "phoneNumber", + "type": "text", + "value": {"value": "+1234567890"}, + } + ], + }, + # Tags filter + { + "filters": [ + { + "attribute": "callTags", + "type": "tags", + "value": {"codes": ["tag1", "tag2"]}, + } + ], + }, + ] + + for test_case in test_cases: + result = apply_workflow_run_filters(mock_query, test_case["filters"]) + # The function should process the filter without errors + assert result is not None + + +def test_filter_format_with_type(): + """Test that filters work with attribute, type, and value.""" + + mock_query = MagicMock() + mock_query.where = MagicMock(return_value=mock_query) + + # Test with various filter combinations + filters = [ + { + "attribute": "dispositionCode", + "type": "multiSelect", + "value": {"codes": ["NIBP"]}, + }, + { + "attribute": "duration", + "type": "numberRange", + "value": {"min": 0, "max": 60}, + }, + {"attribute": "phoneNumber", "type": "text", "value": {"value": "555"}}, + ] + + result = apply_workflow_run_filters(mock_query, filters) + + # Should have called where() for applying filters + assert mock_query.where.called + assert result is not None + + +def test_unknown_attribute_ignored(): + """Test that unknown attributes are safely ignored.""" + + mock_query = MagicMock() + mock_query.where = MagicMock(return_value=mock_query) + + filters = [ + {"attribute": "unknownAttribute", "value": {"value": "test"}}, + {"attribute": "dispositionCode", "value": {"codes": ["XFER"]}}, + ] + + result = apply_workflow_run_filters(mock_query, filters) + + # Should still process the valid filter + assert result is not None + + +def test_empty_filters(): + """Test that empty filters return the query unchanged.""" + + mock_query = MagicMock() + + result = apply_workflow_run_filters(mock_query, None) + assert result == mock_query + + result = apply_workflow_run_filters(mock_query, []) + assert result == mock_query diff --git a/api/tests/test_global_prompt.py b/api/tests/test_global_prompt.py new file mode 100644 index 0000000..5902f63 --- /dev/null +++ b/api/tests/test_global_prompt.py @@ -0,0 +1,249 @@ +"""Tests for global prompt functionality in workflow engine.""" + +from unittest.mock import Mock + +import pytest +from pipecat.services.openai.llm import OpenAILLMContext + +from api.services.workflow.dto import ( + EdgeDataDTO, + NodeDataDTO, + NodeType, + ReactFlowDTO, + RFEdgeDTO, + RFNodeDTO, +) +from api.services.workflow.pipecat_engine import PipecatEngine +from api.services.workflow.workflow import WorkflowGraph + + +class TestGlobalPrompt: + """Test suite for global prompt feature.""" + + @pytest.fixture + def workflow_with_global_node(self): + """Create a workflow with a global node and test nodes.""" + nodes = [ + RFNodeDTO( + id="global", + type=NodeType.globalNode, + position={"x": 0, "y": 0}, + data=NodeDataDTO( + name="Global Node", + prompt="This is the global context: {{company_name}}", + is_static=False, + ), + ), + RFNodeDTO( + id="start", + type=NodeType.startNode, + position={"x": 100, "y": 100}, + data=NodeDataDTO( + name="Start Call", + prompt="Welcome to our service!", + is_static=False, + is_start=True, + add_global_prompt=True, # Enable global prompt + ), + ), + RFNodeDTO( + id="agent1", + type=NodeType.agentNode, + position={"x": 200, "y": 200}, + data=NodeDataDTO( + name="Agent 1", + prompt="How can I help you today?", + add_global_prompt=False, # Disable global prompt + ), + ), + RFNodeDTO( + id="agent2", + type=NodeType.agentNode, + position={"x": 300, "y": 300}, + data=NodeDataDTO( + name="Agent 2", + prompt="Please provide your details.", + add_global_prompt=True, # Enable global prompt + ), + ), + RFNodeDTO( + id="end", + type=NodeType.endNode, + position={"x": 400, "y": 400}, + data=NodeDataDTO( + name="End Call", + prompt="Thank you for calling!", + is_static=True, + is_end=True, + add_global_prompt=True, # Enable global prompt (but static) + ), + ), + ] + + edges = [ + RFEdgeDTO( + id="e1", + source="start", + target="agent1", + data=EdgeDataDTO(label="Next", condition="Continue to agent"), + ), + RFEdgeDTO( + id="e2", + source="agent1", + target="agent2", + data=EdgeDataDTO(label="Details", condition="Get user details"), + ), + RFEdgeDTO( + id="e3", + source="agent2", + target="end", + data=EdgeDataDTO(label="Finish", condition="End the call"), + ), + ] + + flow_dto = ReactFlowDTO(nodes=nodes, edges=edges) + return WorkflowGraph(flow_dto) + + @pytest.fixture + def mock_dependencies(self): + """Create mock dependencies for PipecatEngine initialization.""" + return { + "task": Mock(), + "llm": Mock(), + "context": Mock(spec=OpenAILLMContext), + "tts": Mock(), + "transport": Mock(), + "call_context_vars": {"company_name": "Dograh Inc"}, + } + + @pytest.fixture + def engine(self, mock_dependencies, workflow_with_global_node): + """Create a PipecatEngine instance with test workflow.""" + mock_dependencies["workflow"] = workflow_with_global_node + return PipecatEngine(**mock_dependencies) + + @pytest.mark.asyncio + async def test_global_prompt_enabled(self, engine): + """Test that global prompt is prepended when add_global_prompt is True.""" + # Test with start node (add_global_prompt=True) + start_node = engine.workflow.nodes["start"] + ( + system_message, + functions, + ) = await engine._compose_system_message_functions_for_node(start_node) + + # Global prompt should be included + expected_content = ( + "This is the global context: Dograh Inc\n\nWelcome to our service!" + ) + assert system_message["content"] == expected_content + assert system_message["role"] == "system" + + @pytest.mark.asyncio + async def test_global_prompt_disabled(self, engine): + """Test that global prompt is not prepended when add_global_prompt is False.""" + # Test with agent1 node (add_global_prompt=False) + agent1_node = engine.workflow.nodes["agent1"] + ( + system_message, + functions, + ) = await engine._compose_system_message_functions_for_node(agent1_node) + + # Global prompt should NOT be included + expected_content = "How can I help you today?" + assert system_message["content"] == expected_content + assert "global context" not in system_message["content"] + + @pytest.mark.asyncio + async def test_global_prompt_with_static_node(self, engine): + """Test that static nodes don't use global prompt in engine (even if enabled).""" + # Static nodes are handled differently - they use TTSSpeakFrame directly + # This test verifies the compose_system_message behavior for completeness + end_node = engine.workflow.nodes["end"] + + # Even though add_global_prompt=True, static nodes handle prompts differently + # The _compose_system_message_functions_for_node is still called for consistency + ( + system_message, + functions, + ) = await engine._compose_system_message_functions_for_node(end_node) + + # For static nodes, the global prompt would still be composed if enabled + expected_content = ( + "This is the global context: Dograh Inc\n\nThank you for calling!" + ) + assert system_message["content"] == expected_content + + @pytest.mark.asyncio + async def test_global_prompt_variable_substitution(self, engine): + """Test that variables in global prompt are properly substituted.""" + agent2_node = engine.workflow.nodes["agent2"] + ( + system_message, + functions, + ) = await engine._compose_system_message_functions_for_node(agent2_node) + + # Verify variable substitution in global prompt + assert "Dograh Inc" in system_message["content"] + assert "{{company_name}}" not in system_message["content"] + + # Full expected content + expected_content = ( + "This is the global context: Dograh Inc\n\nPlease provide your details." + ) + assert system_message["content"] == expected_content + + @pytest.mark.asyncio + async def test_no_global_node_scenario(self, engine): + """Test behavior when there's no global node in the workflow.""" + # Remove global node from workflow + engine.workflow.global_node_id = None + + start_node = engine.workflow.nodes["start"] + ( + system_message, + functions, + ) = await engine._compose_system_message_functions_for_node(start_node) + + # Should only have the node's own prompt + assert system_message["content"] == "Welcome to our service!" + + @pytest.mark.asyncio + async def test_empty_global_prompt(self, engine): + """Test behavior when global prompt is empty.""" + # Set global prompt to empty string + engine.workflow.nodes["global"].prompt = "" + + start_node = engine.workflow.nodes["start"] + ( + system_message, + functions, + ) = await engine._compose_system_message_functions_for_node(start_node) + + # Should only have the node's own prompt (empty global prompt is filtered out) + assert system_message["content"] == "Welcome to our service!" + + def test_default_add_global_prompt_value(self): + """Test that add_global_prompt defaults to True in NodeDataDTO.""" + node_data = NodeDataDTO(name="Test", prompt="Test prompt") + assert node_data.add_global_prompt is True + + @pytest.mark.asyncio + async def test_multiple_prompts_concatenation(self, engine): + """Test proper concatenation of global and node prompts.""" + # Test with agent2 node that has global prompt enabled + agent2_node = engine.workflow.nodes["agent2"] + + ( + system_message, + functions, + ) = await engine._compose_system_message_functions_for_node(agent2_node) + + # Should have global and node prompts concatenated with double newlines + # (extraction prompt is no longer included in system message) + expected_parts = [ + "This is the global context: Dograh Inc", + "Please provide your details.", + ] + expected_content = "\n\n".join(expected_parts) + assert system_message["content"] == expected_content diff --git a/api/tests/test_global_prompt_unit.py b/api/tests/test_global_prompt_unit.py new file mode 100644 index 0000000..76e153a --- /dev/null +++ b/api/tests/test_global_prompt_unit.py @@ -0,0 +1,175 @@ +"""Unit tests for global prompt functionality - no DB dependencies.""" + +import sys +from pathlib import Path + +# Add the api directory to the Python path +api_path = Path(__file__).parent.parent +sys.path.insert(0, str(api_path)) + +from services.workflow.dto import ( + EdgeDataDTO, + NodeDataDTO, + NodeType, + ReactFlowDTO, + RFEdgeDTO, + RFNodeDTO, +) +from services.workflow.workflow import WorkflowGraph + + +def test_node_data_dto_default_global_prompt(): + """Test that add_global_prompt defaults to True.""" + node_data = NodeDataDTO(name="Test Node", prompt="Test prompt") + assert node_data.add_global_prompt is True + print("✓ NodeDataDTO defaults add_global_prompt to True") + + +def test_node_data_dto_explicit_global_prompt(): + """Test explicit setting of add_global_prompt.""" + # Test with False + node_data_false = NodeDataDTO( + name="Test Node", prompt="Test prompt", add_global_prompt=False + ) + assert node_data_false.add_global_prompt is False + + # Test with True + node_data_true = NodeDataDTO( + name="Test Node", prompt="Test prompt", add_global_prompt=True + ) + assert node_data_true.add_global_prompt is True + print("✓ NodeDataDTO respects explicit add_global_prompt values") + + +def test_workflow_node_inherits_global_prompt_setting(): + """Test that workflow Node inherits add_global_prompt from NodeDataDTO.""" + nodes = [ + RFNodeDTO( + id="start", + type=NodeType.startNode, + position={"x": 0, "y": 0}, + data=NodeDataDTO( + name="Start", + prompt="Start prompt", + is_start=True, + add_global_prompt=True, + ), + ), + RFNodeDTO( + id="node1", + type=NodeType.agentNode, + position={"x": 100, "y": 0}, + data=NodeDataDTO( + name="Node with global", prompt="Test prompt", add_global_prompt=True + ), + ), + RFNodeDTO( + id="node2", + type=NodeType.agentNode, + position={"x": 200, "y": 0}, + data=NodeDataDTO( + name="Node without global", + prompt="Test prompt", + add_global_prompt=False, + ), + ), + RFNodeDTO( + id="end", + type=NodeType.endNode, + position={"x": 300, "y": 0}, + data=NodeDataDTO( + name="End", prompt="End prompt", is_end=True, add_global_prompt=True + ), + ), + ] + + edges = [ + RFEdgeDTO( + id="e1", + source="start", + target="node1", + data=EdgeDataDTO(label="Next", condition="Continue"), + ), + RFEdgeDTO( + id="e2", + source="node1", + target="node2", + data=EdgeDataDTO(label="Next", condition="Continue"), + ), + RFEdgeDTO( + id="e3", + source="node2", + target="end", + data=EdgeDataDTO(label="End", condition="Finish"), + ), + ] + + flow_dto = ReactFlowDTO(nodes=nodes, edges=edges) + workflow = WorkflowGraph(flow_dto) + + assert workflow.nodes["start"].add_global_prompt is True + assert workflow.nodes["node1"].add_global_prompt is True + assert workflow.nodes["node2"].add_global_prompt is False + assert workflow.nodes["end"].add_global_prompt is True + print("✓ Workflow nodes correctly inherit add_global_prompt setting") + + +def test_compose_system_message_respects_global_prompt_flag(): + """Test that system message composition respects add_global_prompt flag.""" + # This is a simplified version - in real tests we'd use the full engine + # But this demonstrates the logic + + class MockNode: + def __init__(self, add_global_prompt, prompt): + self.add_global_prompt = add_global_prompt + self.prompt = prompt + self.out_edges = [] + self.extraction_enabled = False + + # Simulate the logic from _compose_system_message_functions_for_node + def compose_message(node, global_prompt): + prompts = [] + + # Only add global prompt if node.add_global_prompt is True + if global_prompt and node.add_global_prompt: + prompts.append(global_prompt) + + prompts.append(node.prompt) + + return "\n\n".join(p for p in prompts if p) + + global_prompt = "This is the global context" + + # Test with add_global_prompt=True + node_with_global = MockNode(add_global_prompt=True, prompt="Node prompt") + message_with = compose_message(node_with_global, global_prompt) + assert message_with == "This is the global context\n\nNode prompt" + + # Test with add_global_prompt=False + node_without_global = MockNode(add_global_prompt=False, prompt="Node prompt") + message_without = compose_message(node_without_global, global_prompt) + assert message_without == "Node prompt" + + print("✓ System message composition respects add_global_prompt flag") + + +def test_static_nodes_with_global_prompt(): + """Test static nodes can have add_global_prompt setting.""" + static_node_data = NodeDataDTO( + name="Static Node", prompt="Static text", is_static=True, add_global_prompt=True + ) + + assert static_node_data.is_static is True + assert static_node_data.add_global_prompt is True + print("✓ Static nodes can have add_global_prompt setting") + + +if __name__ == "__main__": + # Run all tests + test_node_data_dto_default_global_prompt() + test_node_data_dto_explicit_global_prompt() + test_workflow_node_inherits_global_prompt_setting() + test_compose_system_message_respects_global_prompt_flag() + test_static_nodes_with_global_prompt() + + print("\n✅ All unit tests passed!") diff --git a/api/tests/test_leave_counter.py b/api/tests/test_leave_counter.py new file mode 100644 index 0000000..4ef08ac --- /dev/null +++ b/api/tests/test_leave_counter.py @@ -0,0 +1,248 @@ +""" +Test cases for _leave_counter mechanism in transport clients. + +This test suite verifies that the _leave_counter prevents premature disconnection +when both input and output transports are using the same client. +""" + +import asyncio +from unittest.mock import AsyncMock, Mock + +import pytest +from pipecat.frames.frames import EndFrame, StartFrame +from pipecat.transports.network.fastapi_websocket import ( + FastAPIWebsocketCallbacks, + FastAPIWebsocketClient, + FastAPIWebsocketParams, + FastAPIWebsocketTransport, +) +from pipecat.transports.network.small_webrtc import SmallWebRTCClient + +from api.services.telephony.stasis_rtp_client import StasisRTPClient + + +class TestLeaveCounterFastAPIWebsocket: + """Test the _leave_counter mechanism in FastAPIWebsocketClient.""" + + @pytest.mark.asyncio + async def test_leave_counter_prevents_early_disconnect(self): + """Test that disconnect only happens when both transports have disconnected.""" + # Create mock websocket + mock_websocket = Mock() + mock_websocket.close = AsyncMock() + # Set client_state directly to WebSocketState.CONNECTED value + from starlette.websockets import WebSocketState + + mock_websocket.client_state = WebSocketState.CONNECTED + + # Create callbacks + callbacks = FastAPIWebsocketCallbacks( + on_client_connected=AsyncMock(), + on_client_disconnected=AsyncMock(), + on_session_timeout=AsyncMock(), + ) + + # Create client + client = FastAPIWebsocketClient( + mock_websocket, is_binary=False, callbacks=callbacks + ) + + # Create StartFrame + start_frame = StartFrame() + + # Simulate both input and output transports calling setup + await client.setup(start_frame) # Input transport + assert client._leave_counter == 1 + + await client.setup(start_frame) # Output transport + assert client._leave_counter == 2 + + # First disconnect - should not actually disconnect + await client.disconnect() + assert client._leave_counter == 1 + mock_websocket.close.assert_not_called() + callbacks.on_client_disconnected.assert_not_called() + + # Second disconnect - should actually disconnect + await client.disconnect() + assert client._leave_counter == 0 + mock_websocket.close.assert_called_once() + callbacks.on_client_disconnected.assert_called_once() + + +class TestLeaveCounterStasisRTP: + """Test the _leave_counter mechanism in StasisRTPClient.""" + + @pytest.mark.asyncio + async def test_leave_counter_prevents_early_disconnect(self): + """Test that disconnect only happens when both transports have disconnected.""" + # Create mock connection + mock_connection = Mock() + mock_connection.is_connected.return_value = True + mock_connection.disconnect = AsyncMock() + mock_connection.notify_sockets_closed = AsyncMock() + + # Mock event_handler as a callable that acts as a decorator + def mock_event_handler(event_name): + def decorator(func): + return func + + return decorator + + mock_connection.event_handler = mock_event_handler + + # Create callbacks + from api.services.telephony.stasis_rtp_transport import StasisRTPCallbacks + + callbacks = StasisRTPCallbacks( + on_client_connected=AsyncMock(), + on_client_disconnected=AsyncMock(), + on_client_closed=AsyncMock(), + ) + + # Create client + client = StasisRTPClient(mock_connection, callbacks) + + # Create StartFrame + start_frame = StartFrame() + + # Simulate both input and output transports calling setup + await client.setup(start_frame) # Input transport + assert client._leave_counter == 1 + + await client.setup(start_frame) # Output transport + assert client._leave_counter == 2 + + # First disconnect - should not actually disconnect + await client.disconnect() + assert client._leave_counter == 1 + mock_connection.disconnect.assert_not_called() + + # Second disconnect - should actually disconnect + await client.disconnect() + assert client._leave_counter == 0 + mock_connection.disconnect.assert_called_once() + + +class TestLeaveCounterSmallWebRTC: + """Test the _leave_counter mechanism in SmallWebRTCClient.""" + + @pytest.mark.asyncio + async def test_leave_counter_prevents_early_disconnect(self): + """Test that disconnect only happens when both transports have disconnected.""" + # Create mock connection + mock_connection = Mock() + mock_connection.is_connected.return_value = True + mock_connection.disconnect = AsyncMock() + mock_connection.notify_sockets_closed = AsyncMock() + + # Mock event_handler as a callable that acts as a decorator + def mock_event_handler(event_name): + def decorator(func): + return func + + return decorator + + mock_connection.event_handler = mock_event_handler + + # Create callbacks + from pipecat.transports.network.small_webrtc import SmallWebRTCCallbacks + + callbacks = SmallWebRTCCallbacks( + on_app_message=AsyncMock(), + on_client_connected=AsyncMock(), + on_client_disconnected=AsyncMock(), + ) + + # Create client + client = SmallWebRTCClient(mock_connection, callbacks) + + # Create StartFrame with required attributes + start_frame = StartFrame() + + # Create mock transport params + from pipecat.transports.base_transport import TransportParams + + params = TransportParams( + audio_in_channels=1, audio_in_sample_rate=16000, audio_out_sample_rate=16000 + ) + + # Simulate both input and output transports calling setup + await client.setup(params, start_frame) # Input transport + assert client._leave_counter == 1 + + await client.setup(params, start_frame) # Output transport + assert client._leave_counter == 2 + + # First disconnect - should not actually disconnect + await client.disconnect() + assert client._leave_counter == 1 + mock_connection.disconnect.assert_not_called() + + # Second disconnect - should actually disconnect + await client.disconnect() + assert client._leave_counter == 0 + mock_connection.disconnect.assert_called_once() + + +@pytest.mark.skip(reason="Complex integration test - requires additional mocking") +@pytest.mark.asyncio +async def test_transport_lifecycle_with_leave_counter(): + """Test complete transport lifecycle with proper leave counter handling.""" + # Create mock websocket + mock_websocket = Mock() + mock_websocket.close = AsyncMock() + # Set client_state directly to WebSocketState.CONNECTED value + from starlette.websockets import WebSocketState + + mock_websocket.client_state = WebSocketState.CONNECTED + mock_websocket.iter_bytes = Mock(return_value=iter([])) + mock_websocket.send_bytes = AsyncMock() + + # Create transport + params = FastAPIWebsocketParams(audio_in_enabled=True, audio_out_enabled=True) + transport = FastAPIWebsocketTransport(mock_websocket, params) + + # Get input and output transports + input_transport = transport.input() + output_transport = transport.output() + + # Setup the transport with required components + from pipecat.clocks.system_clock import SystemClock + from pipecat.processors.frame_processor import FrameProcessorSetup + from pipecat.utils.asyncio.task_manager import TaskManager, TaskManagerParams + + clock = SystemClock() + task_manager = TaskManager() + + # Setup task manager with event loop + loop = asyncio.get_event_loop() + task_manager_params = TaskManagerParams(loop=loop) + task_manager.setup(task_manager_params) + + setup = FrameProcessorSetup(clock=clock, task_manager=task_manager) + + # Setup both input and output transports + await input_transport.setup(setup) + await output_transport.setup(setup) + + # Start both transports + start_frame = StartFrame() + await input_transport.start(start_frame) + await output_transport.start(start_frame) + + # Verify leave counter is 2 + assert transport._client._leave_counter == 2 + + # Stop input transport + end_frame = EndFrame() + await input_transport.stop(end_frame) + + # Verify websocket not closed yet + mock_websocket.close.assert_not_called() + + # Stop output transport + await output_transport.stop(end_frame) + + # Now websocket should be closed + mock_websocket.close.assert_called_once() diff --git a/api/tests/test_llm_generated_text_signal.py b/api/tests/test_llm_generated_text_signal.py new file mode 100644 index 0000000..6a3d6b2 --- /dev/null +++ b/api/tests/test_llm_generated_text_signal.py @@ -0,0 +1,143 @@ +#!/usr/bin/env python3 + +""" +Test script to verify that LLMGeneratedTextFrame signaling works correctly +with the new local variable approach. +""" + + +def test_local_variable_logic(): + """Test the core logic using the same pattern as the implementation""" + + print("=== Testing Local Variable Logic ===") + + # Simulate the logic from _process_context + text_generation_signaled = False + frames_sent = [] + + # Simulate chunks with text content + chunks_with_content = ["Hello", " world", "!"] + + for content in chunks_with_content: + # This is the exact logic from our implementation + if content: # equivalent to chunk.choices[0].delta.content + if not text_generation_signaled: + frames_sent.append("LLMGeneratedTextFrame") + text_generation_signaled = True + frames_sent.append(f"LLMTextFrame({content})") + + print(f"Frames sent: {frames_sent}") + + # Verify behavior + generated_signals = [f for f in frames_sent if f == "LLMGeneratedTextFrame"] + text_frames = [f for f in frames_sent if f.startswith("LLMTextFrame")] + + assert len(generated_signals) == 1, ( + f"Expected 1 signal, got {len(generated_signals)}" + ) + assert len(text_frames) == 3, f"Expected 3 text frames, got {len(text_frames)}" + assert frames_sent[0] == "LLMGeneratedTextFrame", "Signal should be first" + + print("✅ Local variable logic works correctly") + return True + + +def test_no_text_logic(): + """Test that no signal is sent when there's no text""" + + print("\n=== Testing No Text Logic ===") + + text_generation_signaled = False + frames_sent = [] + + # Simulate chunks with no text content (function calls only) + chunks_with_content = [None, None, None] # No text content + + for content in chunks_with_content: + if content: # This will be False for all chunks + if not text_generation_signaled: + frames_sent.append("LLMGeneratedTextFrame") + text_generation_signaled = True + frames_sent.append(f"LLMTextFrame({content})") + + print(f"Frames sent: {frames_sent}") + + assert len(frames_sent) == 0, f"Expected no frames, got {frames_sent}" + + print("✅ No signal sent when no text content") + return True + + +def test_mixed_content_logic(): + """Test behavior with mixed function calls and text""" + + print("\n=== Testing Mixed Content Logic ===") + + text_generation_signaled = False + frames_sent = [] + + # Simulate chunks: function call, text, function call, text + chunks = [ + {"type": "function", "content": None}, + {"type": "text", "content": "Hello"}, + {"type": "function", "content": None}, + {"type": "text", "content": " world"}, + ] + + for chunk in chunks: + if chunk["type"] == "function": + frames_sent.append("FunctionCallFrame") + elif chunk["content"]: # text content + if not text_generation_signaled: + frames_sent.append("LLMGeneratedTextFrame") + text_generation_signaled = True + frames_sent.append(f"LLMTextFrame({chunk['content']})") + + print(f"Frames sent: {frames_sent}") + + generated_signals = [f for f in frames_sent if f == "LLMGeneratedTextFrame"] + + assert len(generated_signals) == 1, ( + f"Expected 1 signal, got {len(generated_signals)}" + ) + # Signal should come before first text frame but after any function frames + signal_index = frames_sent.index("LLMGeneratedTextFrame") + first_text_index = next( + i for i, f in enumerate(frames_sent) if f.startswith("LLMTextFrame") + ) + assert signal_index == first_text_index - 1, ( + "Signal should come right before first text" + ) + + print("✅ Mixed content logic works correctly") + return True + + +def main(): + try: + test1_result = test_local_variable_logic() + test2_result = test_no_text_logic() + test3_result = test_mixed_content_logic() + + print(f"\n=== Test Results ===") + print(f"Local variable test: {'✅ PASS' if test1_result else '❌ FAIL'}") + print(f"No text test: {'✅ PASS' if test2_result else '❌ FAIL'}") + print(f"Mixed content test: {'✅ PASS' if test3_result else '❌ FAIL'}") + + if test1_result and test2_result and test3_result: + print("\n🎉 All LLMGeneratedTextFrame signaling logic tests passed!") + print( + "✅ Implementation correctly signals text generation once, as early as possible" + ) + else: + print("\n❌ Some tests failed.") + + except Exception as e: + print(f"❌ Test failed with error: {e}") + import traceback + + traceback.print_exc() + + +if __name__ == "__main__": + main() diff --git a/api/tests/test_llm_response_reorder.py b/api/tests/test_llm_response_reorder.py new file mode 100644 index 0000000..e5727a1 --- /dev/null +++ b/api/tests/test_llm_response_reorder.py @@ -0,0 +1,99 @@ +import unittest + +from pipecat.frames.frames import ( + FunctionCallInProgressFrame, + LLMFullResponseStartFrame, +) +from pipecat.processors.aggregators.openai_llm_context import OpenAILLMContext +from pipecat.services.google.llm import ( + GoogleAssistantContextAggregator, + GoogleLLMContext, +) +from pipecat.services.openai.llm import OpenAIAssistantContextAggregator + + +class TestReorderOpenAIAssistantContextAggregator(unittest.IsolatedAsyncioTestCase): + async def test_reorder_function_messages_openai(self): + """Ensure that after a text aggregation the function-call messages are moved + to appear immediately after the text response, maintaining chronological + order (assistant text -> function call -> tool response). + """ + + context = OpenAILLMContext() + aggregator = OpenAIAssistantContextAggregator(context) + + # Simulate the start of an LLM response so that the aggregator creates a + # response session ID that is later used for re-ordering. + await aggregator._handle_llm_start(LLMFullResponseStartFrame()) + + # Simulate the model emitting a function call which the aggregator will + # record for potential re-ordering. + await aggregator._handle_function_call_in_progress( + FunctionCallInProgressFrame( + function_name="get_weather", + tool_call_id="1", + arguments={}, + ) + ) + + # Now push the textual part of the assistant response. This should + # trigger the re-ordering so that the two function-related messages + # appear *after* this text. + await aggregator.handle_aggregation("Hello!") + + messages = context.get_messages() + + # We expect exactly three messages after re-ordering. + self.assertEqual(len(messages), 3) + + # 1. Assistant text + self.assertEqual(messages[0]["role"], "assistant") + self.assertEqual(messages[0]["content"], "Hello!") + + # 2. Assistant function-call message + self.assertEqual(messages[1]["role"], "assistant") + self.assertIn("tool_calls", messages[1]) + + # 3. Tool response + self.assertEqual(messages[2]["role"], "tool") + self.assertEqual(messages[2]["tool_call_id"], "1") + + +class TestReorderGoogleAssistantContextAggregator(unittest.IsolatedAsyncioTestCase): + async def test_reorder_function_messages_google(self): + context = GoogleLLMContext() + aggregator = GoogleAssistantContextAggregator(context) + + # Start an LLM response session. + await aggregator._handle_llm_start(LLMFullResponseStartFrame()) + + # Emit a function call. + await aggregator._handle_function_call_in_progress( + FunctionCallInProgressFrame( + function_name="get_weather", + tool_call_id="1", + arguments={}, + ) + ) + + # Push the textual content. + await aggregator.handle_aggregation("Hello!") + + messages = context.messages # Google context stores Content objects. + + self.assertEqual(len(messages), 3) + + # The first message should be the model text. + first_msg = messages[0].to_json_dict() + self.assertEqual(first_msg["role"], "model") + self.assertEqual(first_msg["parts"][0]["text"], "Hello!") + + # The second message contains the function call (also from the model). + second_msg = messages[1].to_json_dict() + self.assertEqual(second_msg["role"], "model") + self.assertIn("function_call", second_msg["parts"][0]) + + # The third message is the placeholder function response. + third_msg = messages[2].to_json_dict() + self.assertEqual(third_msg["role"], "user") + self.assertIn("function_response", third_msg["parts"][0]) diff --git a/api/tests/test_looptalk_routes.py b/api/tests/test_looptalk_routes.py new file mode 100644 index 0000000..23f19a4 --- /dev/null +++ b/api/tests/test_looptalk_routes.py @@ -0,0 +1,506 @@ +""" +Tests for LoopTalk API routes and orchestration. + +This module tests the LoopTalk testing functionality including test session creation, +pipeline orchestration, and agent-to-agent communication. +""" + +import asyncio +from unittest.mock import AsyncMock, MagicMock, patch + +import pytest +import pytest_asyncio +from fastapi import status + +from api.db.db_client import DBClient +from api.services.looptalk.orchestrator import LoopTalkTestOrchestrator + + +@pytest.fixture +def actor_workflow_definition(): + """Sample actor workflow definition for testing.""" + return { + "nodes": [ + { + "id": "1", + "type": "startCall", + "position": {"x": 0, "y": 0}, + "data": { + "prompt": "Hello, I'm the actor agent.", + "is_static": True, + "name": "Start Call", + "is_start": True, + "allow_interrupt": False, + }, + }, + { + "id": "2", + "type": "agentNode", + "position": {"x": 100, "y": 0}, + "data": { + "prompt": "You are an actor agent testing the adversary. Ask probing questions.", + "name": "Actor Agent", + "allow_interrupt": True, + }, + }, + { + "id": "3", + "type": "endCall", + "position": {"x": 200, "y": 0}, + "data": { + "prompt": "Goodbye!", + "name": "End Call", + "is_end": True, + }, + }, + ], + "edges": [ + { + "id": "e1", + "source": "1", + "target": "2", + "data": {"label": "Continue", "condition": "Always"}, + }, + { + "id": "e2", + "source": "2", + "target": "3", + "data": {"label": "End", "condition": "Always"}, + }, + ], + "stt": {"provider": "openai", "api_key": "test-key", "model": "whisper-1"}, + "llm": {"provider": "openai", "api_key": "test-key", "model": "gpt-4o-mini"}, + "tts": { + "provider": "openai", + "api_key": "test-key", + "model": "tts-1", + "voice": "nova", + }, + } + + +@pytest.fixture +def adversary_workflow_definition(): + """Sample adversary workflow definition for testing.""" + return { + "nodes": [ + { + "id": "1", + "type": "startCall", + "position": {"x": 0, "y": 0}, + "data": { + "prompt": "Hello, I'm the adversary agent.", + "is_static": True, + "name": "Start Call", + "is_start": True, + "allow_interrupt": False, + }, + }, + { + "id": "2", + "type": "agentNode", + "position": {"x": 100, "y": 0}, + "data": { + "prompt": "You are an adversary agent being tested. Respond defensively.", + "name": "Adversary Agent", + "allow_interrupt": True, + }, + }, + { + "id": "3", + "type": "endCall", + "position": {"x": 200, "y": 0}, + "data": { + "prompt": "Goodbye!", + "name": "End Call", + "is_end": True, + }, + }, + ], + "edges": [ + { + "id": "e1", + "source": "1", + "target": "2", + "data": {"label": "Continue", "condition": "Always"}, + }, + { + "id": "e2", + "source": "2", + "target": "3", + "data": {"label": "End", "condition": "Always"}, + }, + ], + "stt": {"provider": "deepgram", "api_key": "test-key", "model": "nova-2"}, + "llm": { + "provider": "groq", + "api_key": "test-key", + "model": "llama-3.1-70b-versatile", + }, + "tts": {"provider": "deepgram", "api_key": "test-key", "voice": "nova-2"}, + } + + +from pipecat.processors.frame_processor import FrameProcessor + + +class MockSTTService(FrameProcessor): + """Mock STT service for testing.""" + + def __init__(self, **kwargs): + super().__init__(**kwargs) + + async def run_stt(self, audio: bytes) -> str: + return "Mock transcription" + + +class MockLLMService(FrameProcessor): + """Mock LLM service for testing.""" + + def __init__(self, **kwargs): + super().__init__(**kwargs) + + async def run_llm(self, messages) -> str: + return "Mock LLM response" + + def create_context_aggregator(self, context): + """Mock context aggregator creation.""" + return MagicMock() + + +class MockTTSService(FrameProcessor): + """Mock TTS service for testing.""" + + def __init__(self, **kwargs): + super().__init__(**kwargs) + + async def run_tts(self, text: str) -> bytes: + return b"Mock audio data" + + +@pytest_asyncio.fixture +async def test_user_with_org(db_session): + """Create a test user with an organization set up.""" + user = await db_session.get_or_create_user_by_provider_id("test_looptalk_user") + org, _ = await db_session.get_or_create_organization_by_provider_id( + "test_looptalk_org" + ) + + user_id = user.id + org_id = org.id + + await db_session.add_user_to_organization(user_id, org_id) + + # Update user's selected organization + async with db_session.async_session() as session: + from sqlalchemy import update + + from api.db.models import UserModel + + await session.execute( + update(UserModel) + .where(UserModel.id == user_id) + .values(selected_organization_id=org_id) + ) + await session.commit() + + # Return fresh user object + return await db_session.get_user_by_id(user_id) + + +@pytest.mark.asyncio +async def test_create_test_session( + test_client_factory, + db_session, + test_user_with_org, + actor_workflow_definition, + adversary_workflow_definition, +): + """Test creating a new LoopTalk test session.""" + async with test_client_factory(test_user_with_org) as test_client: + # First create two workflows + actor_workflow_response = await test_client.post( + "/api/v1/workflow/create", + json={ + "name": "Actor Workflow", + "workflow_definition": actor_workflow_definition, + }, + ) + assert actor_workflow_response.status_code == status.HTTP_200_OK + actor_workflow_id = actor_workflow_response.json()["id"] + + adversary_workflow_response = await test_client.post( + "/api/v1/workflow/create", + json={ + "name": "Adversary Workflow", + "workflow_definition": adversary_workflow_definition, + }, + ) + assert adversary_workflow_response.status_code == status.HTTP_200_OK + adversary_workflow_id = adversary_workflow_response.json()["id"] + + # Create test session + response = await test_client.post( + "/api/v1/looptalk/test-sessions", + json={ + "name": "Test Session 1", + "actor_workflow_id": actor_workflow_id, + "adversary_workflow_id": adversary_workflow_id, + "config": {"test_duration": 60}, + }, + ) + + assert response.status_code == status.HTTP_200_OK + data = response.json() + assert data["name"] == "Test Session 1" + assert data["status"] == "pending" + assert data["actor_workflow_id"] == actor_workflow_id + assert data["adversary_workflow_id"] == adversary_workflow_id + assert data["config"]["test_duration"] == 60 + + +@pytest.mark.asyncio +async def test_list_test_sessions(test_client_factory, db_session, test_user_with_org): + """Test listing LoopTalk test sessions.""" + async with test_client_factory(test_user_with_org) as test_client: + response = await test_client.get( + "/api/v1/looptalk/test-sessions", + ) + + assert response.status_code == status.HTTP_200_OK + data = response.json() + assert isinstance(data, list) + + +@pytest.mark.asyncio +async def test_looptalk_orchestrator_plumbing( + db_session: DBClient, actor_workflow_definition, adversary_workflow_definition +): + """Test the LoopTalk orchestrator plumbing with mocked services.""" + + # Create test user and organization + user = await db_session.get_or_create_user_by_provider_id( + provider_id="test-user-123" + ) + org, _ = await db_session.get_or_create_organization_by_provider_id( + org_provider_id="test-org-123" + ) + + # Get IDs before session closes + user_id = user.id + org_id = org.id + + await db_session.add_user_to_organization(user_id, org_id) + + # Update user's selected organization manually + async with db_session.async_session() as session: + from sqlalchemy import update + + from api.db.models import UserModel + + await session.execute( + update(UserModel) + .where(UserModel.id == user_id) + .values(selected_organization_id=org_id) + ) + await session.commit() + + actor_workflow = await db_session.create_workflow( + name="Actor Workflow", + workflow_definition=actor_workflow_definition, + user_id=user_id, + ) + + adversary_workflow = await db_session.create_workflow( + name="Adversary Workflow", + workflow_definition=adversary_workflow_definition, + user_id=user_id, + ) + + # Create test session + test_session = await db_session.create_test_session( + organization_id=org_id, + name="Test Session", + actor_workflow_id=actor_workflow.id, + adversary_workflow_id=adversary_workflow.id, + config={"test_duration": 10}, + ) + + # Mock the service factories - patch at the actual import location in pipeline_builder + with ( + patch( + "api.services.looptalk.core.pipeline_builder.create_stt_service" + ) as mock_stt_factory, + patch( + "api.services.looptalk.core.pipeline_builder.create_llm_service" + ) as mock_llm_factory, + patch( + "api.services.looptalk.core.pipeline_builder.create_tts_service" + ) as mock_tts_factory, + patch( + "api.services.workflow.pipecat_engine.PipecatEngine" + ) as mock_engine_class, + patch( + "api.services.pipecat.pipeline_builder.build_pipeline" + ) as mock_build_pipeline, + patch("api.services.pipecat.pipeline_builder.PipelineTask") as mock_task_class, + ): + # Configure mocks + mock_stt_factory.return_value = MockSTTService() + mock_llm_factory.return_value = MockLLMService() + mock_tts_factory.return_value = MockTTSService() + + mock_engine = MagicMock() + mock_engine.initialize = AsyncMock() + mock_engine.get_callback_processor = MagicMock(return_value=MagicMock()) + mock_engine_class.return_value = mock_engine + + # Mock pipeline and task + mock_pipeline = MagicMock() + mock_task = MagicMock() + mock_task.run = AsyncMock() + mock_task.cancel = AsyncMock() # Make cancel async + mock_build_pipeline.return_value = mock_pipeline + mock_task_class.return_value = mock_task + + # Create orchestrator + orchestrator = LoopTalkTestOrchestrator(db_client=db_session) + + # Start test session (in a separate task to avoid blocking) + start_task = asyncio.create_task( + orchestrator.start_test_session( + test_session_id=test_session.id, organization_id=org_id + ) + ) + + # Give it a moment to start + await asyncio.sleep(0.5) + + # Verify the session is running through session manager + session_info = orchestrator.session_manager.get_session(test_session.id) + assert session_info is not None + assert session_info["test_session"].id == test_session.id + assert "actor_task" in session_info + assert "adversary_task" in session_info + + # Verify service factories were called + assert mock_stt_factory.call_count == 2 # Once for each agent + assert mock_llm_factory.call_count == 2 + assert mock_tts_factory.call_count == 2 + + # Verify pipelines were created with PipelineTask + assert mock_task_class.call_count == 2 + + # Stop the test session + await orchestrator.stop_test_session(test_session_id=test_session.id) + + # Verify session was cleaned up + assert orchestrator.session_manager.get_session(test_session.id) is None + + # Cancel the start task + start_task.cancel() + try: + await start_task + except asyncio.CancelledError: + pass + + +@pytest.mark.asyncio +async def test_load_test_creation( + test_client_factory, + db_session, + test_user_with_org, + actor_workflow_definition, + adversary_workflow_definition, +): + """Test creating a load test with multiple sessions.""" + async with test_client_factory(test_user_with_org) as test_client: + # First create two workflows + actor_workflow_response = await test_client.post( + "/api/v1/workflow/create", + json={ + "name": "Actor Workflow", + "workflow_definition": actor_workflow_definition, + }, + ) + actor_workflow_id = actor_workflow_response.json()["id"] + + adversary_workflow_response = await test_client.post( + "/api/v1/workflow/create", + json={ + "name": "Adversary Workflow", + "workflow_definition": adversary_workflow_definition, + }, + ) + adversary_workflow_id = adversary_workflow_response.json()["id"] + + # Create load test + response = await test_client.post( + "/api/v1/looptalk/load-tests", + json={ + "name_prefix": "Load Test", + "actor_workflow_id": actor_workflow_id, + "adversary_workflow_id": adversary_workflow_id, + "test_count": 3, + "config": {"test_duration": 30}, + }, + ) + + assert response.status_code == status.HTTP_200_OK + data = response.json() + assert data["total"] == 3 + assert "load_test_group_id" in data + assert len(data["test_session_ids"]) == 3 + + +@pytest.mark.asyncio +async def test_invalid_workflow_ids( + test_client_factory, db_session, test_user_with_org +): + """Test creating test session with invalid workflow IDs.""" + async with test_client_factory(test_user_with_org) as test_client: + response = await test_client.post( + "/api/v1/looptalk/test-sessions", + json={ + "name": "Invalid Test", + "actor_workflow_id": 99999, + "adversary_workflow_id": 99999, + "config": {}, + }, + ) + + assert response.status_code == status.HTTP_404_NOT_FOUND + assert "workflow not found" in response.json()["detail"].lower() + + +@pytest.mark.asyncio +async def test_transport_manager(): + """Test the internal transport manager functionality.""" + from pipecat.transports import InternalTransportManager, TransportParams + + manager = InternalTransportManager() + + # Create transport pair + params = TransportParams( + audio_out_enabled=True, + audio_in_enabled=True, + audio_out_sample_rate=16000, + audio_in_sample_rate=16000, + ) + + actor_transport, adversary_transport = manager.create_transport_pair( + test_session_id="test-123", actor_params=params, adversary_params=params + ) + + # Verify transports are connected + assert actor_transport._output._partner == adversary_transport._input + assert adversary_transport._output._partner == actor_transport._input + + # Verify transport pair is tracked + assert manager.get_active_test_count() == 1 + assert manager.get_transport_pair("test-123") is not None + + # Remove transport pair + manager.remove_transport_pair("test-123") + assert manager.get_active_test_count() == 0 + assert manager.get_transport_pair("test-123") is None diff --git a/api/tests/test_mock_llm_service.py b/api/tests/test_mock_llm_service.py new file mode 100644 index 0000000..a0599b9 --- /dev/null +++ b/api/tests/test_mock_llm_service.py @@ -0,0 +1,142 @@ +### - The test gets stuck. Need to figure out a way to run the test + +# import asyncio +# import unittest + +# from loguru import logger + +# from pipecat.frames.frames import ( +# FunctionCallFromLLM, +# FunctionCallInProgressFrame, +# FunctionCallResultFrame, +# FunctionCallsStartedFrame, +# LLMFullResponseEndFrame, +# LLMFullResponseStartFrame, +# LLMTextFrame, +# ) +# from pipecat.processors.aggregators.openai_llm_context import ( +# OpenAILLMContext, +# OpenAILLMContextFrame, +# ) +# from pipecat.processors.frame_processor import FrameDirection +# from pipecat.services.llm_service import ( +# FunctionCallParams, +# FunctionCallResultProperties, +# LLMService, +# ) +# from pipecat.tests.utils import run_test + + +# class MockLLMService(LLMService): +# """A very small mocked LLM service that, upon receiving an +# ``OpenAILLMContextFrame``, streams a text completion followed by the +# execution of the supplied tools (function calls). +# """ + +# def __init__(self, *, content: str, tools: list[dict[str, dict]], **kwargs): +# # Run function calls sequentially so that frame ordering is deterministic. +# super().__init__(run_in_parallel=False, **kwargs) +# self._content = content +# self._tools = tools + +# async def process_frame(self, frame, direction: FrameDirection): +# await super().process_frame(frame, direction) + +# if isinstance(frame, OpenAILLMContextFrame) and direction == FrameDirection.DOWNSTREAM: +# # Simulate the start of a streamed completion. +# await self.push_frame(LLMFullResponseStartFrame()) +# await self.push_frame(LLMTextFrame(self._content)) + +# # Convert tool specs into FunctionCallFromLLM objects. +# function_calls = [] +# for idx, tool in enumerate(self._tools): +# function_calls.append( +# FunctionCallFromLLM( +# function_name=tool["function_name"], +# tool_call_id=f"tool_{idx}", +# arguments=tool.get("arguments", {}), +# context=frame.context, +# ) +# ) + +# # Ask the LLM service base class to execute the calls. +# await self.run_function_calls(function_calls) + +# # Finish the streamed response. +# await self.push_frame(LLMFullResponseEndFrame()) + +# async def _run_function_call(self, runner_item): # type: ignore[override] – narrow signature +# # Ensure run_llm=True so that downstream processors know they can +# # immediately trigger another LLM call after the result is committed. +# runner_item.run_llm = True +# await super()._run_function_call(runner_item) + + +# class TestMockLLMPipeline(unittest.IsolatedAsyncioTestCase): +# async def test_mock_llm_pipeline_with_tools(self): +# # ------------------------------------------------------------------ +# # 1. Create mocked LLM service with completion text and tools +# # ------------------------------------------------------------------ +# completion_text = "Hello from mocked LLM!" +# tools = [ +# {"function_name": "tool_one", "arguments": {"a": 1}}, +# {"function_name": "tool_two", "arguments": {"b": 2}}, +# ] +# llm = MockLLMService(content=completion_text, tools=tools) + +# # ------------------------------------------------------------------ +# # 2. Register the tool functions – they simply log & sleep briefly. +# # Each of them marks that it has run so that we can assert later. +# # ------------------------------------------------------------------ +# executed: dict[str, bool] = {t["function_name"]: False for t in tools} + +# def make_handler(name: str): +# async def _handler(params: FunctionCallParams): +# logger.debug(f"Executing {name} with args {params.arguments}") +# executed[name] = True +# await asyncio.sleep(0.01) +# await params.result_callback( +# {"status": "ok"}, +# properties=FunctionCallResultProperties(run_llm=True), +# ) + +# return _handler + +# for t in tools: +# llm.register_function(t["function_name"], make_handler(t["function_name"])) + +# # ------------------------------------------------------------------ +# # 3. Build the pipeline and send the initial context frame that +# # triggers the completion. +# # ------------------------------------------------------------------ +# context = OpenAILLMContext() +# context.add_message({"role": "user", "content": "Hi!"}) +# frames_to_send = [OpenAILLMContextFrame(context)] + +# expected_down_frames = [ +# LLMFullResponseStartFrame, +# LLMTextFrame, +# FunctionCallsStartedFrame, +# FunctionCallInProgressFrame, +# FunctionCallResultFrame, +# FunctionCallInProgressFrame, +# FunctionCallResultFrame, +# LLMFullResponseEndFrame, +# ] + +# # Run the test pipeline. +# received_down_frames, _ = await run_test( +# llm, +# frames_to_send=frames_to_send, +# expected_down_frames=expected_down_frames, +# ) + +# # ------------------------------------------------------------------ +# # 4. Verify that both tool functions executed and that run_llm=True +# # in all FunctionCallResultFrame instances. +# # ------------------------------------------------------------------ +# self.assertTrue(all(executed.values())) + +# for frame in received_down_frames: +# if isinstance(frame, FunctionCallResultFrame): +# self.assertTrue(frame.run_llm) diff --git a/api/tests/test_pipecat_disposition_mapping.py b/api/tests/test_pipecat_disposition_mapping.py new file mode 100644 index 0000000..aa0c289 --- /dev/null +++ b/api/tests/test_pipecat_disposition_mapping.py @@ -0,0 +1,236 @@ +from unittest.mock import AsyncMock, MagicMock, patch + +import pytest + +from api.services.workflow.pipecat_engine import PipecatEngine + + +def create_disposition_mapping_side_effect(mapping_dict): + """Helper to create a side effect function for disposition mapping.""" + + async def side_effect(value, org_id): + return mapping_dict.get(value, value) + + return side_effect + + +@pytest.fixture +def mock_dependencies(): + """Create mock dependencies for PipecatEngine.""" + mock_task = MagicMock() + mock_task.queue_frame = AsyncMock() + + mock_llm = MagicMock() + mock_context = MagicMock() + mock_workflow = MagicMock() + + return { + "task": mock_task, + "llm": mock_llm, + "context": mock_context, + "workflow": mock_workflow, + "call_context_vars": {}, + "workflow_run_id": 123, + } + + +@pytest.mark.asyncio +async def test_apply_disposition_mapping_with_call_disposition(mock_dependencies): + """Test disposition mapping when call_disposition is present.""" + engine = PipecatEngine(**mock_dependencies) + + # Setup gathered context + engine._gathered_context = { + "call_disposition": "XFER", + "agent_name": "Alex", + "total_debt": "$15000", + } + + # Mock the disposition mapper functions + with patch( + "api.services.workflow.pipecat_engine.get_organization_id_from_workflow_run" + ) as mock_get_org_id: + with patch( + "api.services.workflow.pipecat_engine.apply_disposition_mapping" + ) as mock_apply_mapping: + # Mock organization ID + mock_get_org_id.return_value = 1 + + # Mock disposition mapping + mock_apply_mapping.side_effect = create_disposition_mapping_side_effect( + { + "XFER": "TRANSFERRED", + "ND": "NOT_QUALIFIED", + } + ) + + # Call send_end_task_frame + await engine.send_end_task_frame(reason="user_qualified") + + # Verify the frame was queued with mapped values + mock_dependencies["task"].queue_frame.assert_called_once() + frame = mock_dependencies["task"].queue_frame.call_args[0][0] + + # Check metadata contains mapped values + assert frame.metadata["reason"] == "user_qualified" # No mapping for this + assert ( + frame.metadata["call_transfer_context"]["disposition"] == "TRANSFERRED" + ) + + # Check gathered context was updated + assert engine._gathered_context["call_disposition"] == "TRANSFERRED" + + +@pytest.mark.asyncio +async def test_apply_disposition_mapping_with_disconnect_reason(mock_dependencies): + """Test disposition mapping for disconnect_reason when no call_disposition exists.""" + engine = PipecatEngine(**mock_dependencies) + + # Setup gathered context without call_disposition + engine._gathered_context = { + "agent_name": "Alex", + } + + # Mock the disposition mapper functions + with patch( + "api.services.workflow.pipecat_engine.get_organization_id_from_workflow_run" + ) as mock_get_org_id: + with patch( + "api.services.workflow.pipecat_engine.apply_disposition_mapping" + ) as mock_apply_mapping: + # Mock organization ID + mock_get_org_id.return_value = 1 + + # Mock disposition mapping + mock_apply_mapping.side_effect = create_disposition_mapping_side_effect( + { + "user_qualified": "QUALIFIED", + "user_disqualified": "NOT_QUALIFIED", + "user_hangup": "HANGUP", + } + ) + + # Call send_end_task_frame with a mappable reason + await engine.send_end_task_frame(reason="user_qualified") + + # Verify the frame was queued with mapped disposition + mock_dependencies["task"].queue_frame.assert_called_once() + frame = mock_dependencies["task"].queue_frame.call_args[0][0] + + # Check metadata contains original reason + assert frame.metadata["reason"] == "user_qualified" + + # Check call_transfer_context has mapped disconnect_reason as disposition + assert frame.metadata["call_transfer_context"]["disposition"] == "QUALIFIED" + + # Check gathered context was updated with mapped call_disposition + assert engine._gathered_context["call_disposition"] == "QUALIFIED" + + # Check internal call_disposition stores mapped value + assert engine._call_disposition == "QUALIFIED" + + +@pytest.mark.asyncio +async def test_call_disposition_takes_precedence(mock_dependencies): + """Test that call_disposition is used when both call_disposition and reason could be mapped.""" + engine = PipecatEngine(**mock_dependencies) + + # Setup gathered context with call_disposition + engine._gathered_context = { + "call_disposition": "XFER", + "agent_name": "Alex", + } + + # Mock the disposition mapper functions + with patch( + "api.services.workflow.pipecat_engine.get_organization_id_from_workflow_run" + ) as mock_get_org_id: + with patch( + "api.services.workflow.pipecat_engine.apply_disposition_mapping" + ) as mock_apply_mapping: + # Mock organization ID + mock_get_org_id.return_value = 1 + + # Mock disposition mapping + mock_apply_mapping.side_effect = create_disposition_mapping_side_effect( + { + "XFER": "TRANSFERRED", + "user_qualified": "QUALIFIED", + } + ) + + # Call send_end_task_frame with a reason that could also be mapped + await engine.send_end_task_frame(reason="user_qualified") + + # Verify the frame was queued + mock_dependencies["task"].queue_frame.assert_called_once() + frame = mock_dependencies["task"].queue_frame.call_args[0][0] + + # Check that call_disposition mapping was used, not reason mapping + assert ( + frame.metadata["call_transfer_context"]["disposition"] == "TRANSFERRED" + ) + + # Check only call_disposition was updated in gathered context + assert engine._gathered_context["call_disposition"] == "TRANSFERRED" + assert "disconnect_reason" not in engine._gathered_context + + +@pytest.mark.asyncio +async def test_disposition_mapping_no_organization_id(mock_dependencies): + """Test when organization_id cannot be retrieved.""" + # Set workflow_run_id to None + mock_dependencies["workflow_run_id"] = None + engine = PipecatEngine(**mock_dependencies) + + engine._gathered_context = { + "call_disposition": "XFER", + } + + # Call send_end_task_frame + await engine.send_end_task_frame(reason="user_qualified") + + # Verify the frame was queued with original values (no mapping) + mock_dependencies["task"].queue_frame.assert_called_once() + frame = mock_dependencies["task"].queue_frame.call_args[0][0] + + # Check values remain unchanged + assert frame.metadata["reason"] == "user_qualified" + assert frame.metadata["call_transfer_context"]["disposition"] == "XFER" + + # Gathered context should remain unchanged + assert engine._gathered_context["call_disposition"] == "XFER" + + +@pytest.mark.asyncio +async def test_disposition_mapping_no_configuration(mock_dependencies): + """Test when no disposition mapping is configured.""" + engine = PipecatEngine(**mock_dependencies) + + engine._gathered_context = { + "call_disposition": "XFER", + } + + # Mock the disposition mapper functions + with patch( + "api.services.workflow.pipecat_engine.get_organization_id_from_workflow_run" + ) as mock_get_org_id: + with patch( + "api.services.workflow.pipecat_engine.apply_disposition_mapping" + ) as mock_apply_mapping: + # Mock organization ID + mock_get_org_id.return_value = 1 + + # Mock no disposition mapping (return original value) + mock_apply_mapping.side_effect = lambda value, org_id: value + + # Call send_end_task_frame + await engine.send_end_task_frame(reason="user_qualified") + + # Verify the frame was queued with original values + mock_dependencies["task"].queue_frame.assert_called_once() + frame = mock_dependencies["task"].queue_frame.call_args[0][0] + + # Check values remain unchanged + assert frame.metadata["reason"] == "user_qualified" + assert frame.metadata["call_transfer_context"]["disposition"] == "XFER" diff --git a/api/tests/test_pipecat_engine.py b/api/tests/test_pipecat_engine.py new file mode 100644 index 0000000..8e68067 --- /dev/null +++ b/api/tests/test_pipecat_engine.py @@ -0,0 +1,206 @@ +from unittest.mock import Mock + +import pytest + +from api.services.workflow.pipecat_engine import PipecatEngine +from api.services.workflow.workflow import WorkflowGraph + + +class TestPipecatEngine: + @pytest.fixture + def mock_dependencies(self): + """Create mock dependencies for PipecatEngine initialization.""" + return { + "task": Mock(), + "llm": Mock(), + "context": Mock(), + "tts": Mock(), + "transport": Mock(), + "workflow": Mock(spec=WorkflowGraph), + "call_context_vars": {}, + } + + @pytest.fixture + def engine_with_context(self, mock_dependencies): + """Create a PipecatEngine instance with test context variables.""" + context_vars = { + "first_name": "John", + "last_name": "Doe", + "age": 25, + "email": "john.doe@example.com", + "empty_var": "", + "zero_var": 0, + "false_var": False, + } + mock_dependencies["call_context_vars"] = context_vars + return PipecatEngine(**mock_dependencies) + + @pytest.fixture + def engine_empty_context(self, mock_dependencies): + """Create a PipecatEngine instance with empty context variables.""" + mock_dependencies["call_context_vars"] = {} + return PipecatEngine(**mock_dependencies) + + def test_format_prompt_simple_variable_replacement(self, engine_with_context): + """Test simple variable replacement without filters.""" + prompt = "Hello {{ first_name }}, welcome!" + result = engine_with_context._format_prompt(prompt) + assert result == "Hello John, welcome!" + + def test_format_prompt_multiple_variables(self, engine_with_context): + """Test multiple variable replacements in a single prompt.""" + prompt = "Hello {{ first_name }} {{ last_name }}, you are {{ age }} years old." + result = engine_with_context._format_prompt(prompt) + assert result == "Hello John Doe, you are 25 years old." + + def test_format_prompt_with_fallback_existing_value(self, engine_with_context): + """Test fallback filter when value exists.""" + prompt = "Hello {{ first_name | fallback }}, nice to meet you!" + result = engine_with_context._format_prompt(prompt) + assert result == "Hello John, nice to meet you!" + + def test_format_prompt_with_fallback_missing_value(self, engine_empty_context): + """Test fallback filter when value is missing.""" + prompt = "Hello {{ first_name | fallback }}, nice to meet you!" + result = engine_empty_context._format_prompt(prompt) + assert result == "Hello First_Name, nice to meet you!" + + def test_format_prompt_with_custom_fallback_missing_value( + self, engine_empty_context + ): + """Test fallback filter with custom fallback value when variable is missing.""" + prompt = "Hello {{ first_name | fallback:Guest }}, welcome!" + result = engine_empty_context._format_prompt(prompt) + assert result == "Hello Guest, welcome!" + + def test_format_prompt_with_custom_fallback_existing_value( + self, engine_with_context + ): + """Test fallback filter with custom fallback value when variable exists.""" + prompt = "Hello {{ first_name | fallback:Guest }}, welcome!" + result = engine_with_context._format_prompt(prompt) + assert result == "Hello John, welcome!" + + def test_format_prompt_empty_string_variable(self, engine_with_context): + """Test variable with empty string value.""" + prompt = "Value: '{{ empty_var | fallback:No Value }}'" + result = engine_with_context._format_prompt(prompt) + assert result == "Value: 'No Value'" + + def test_format_prompt_zero_value(self, engine_with_context): + """Test variable with zero value (should not trigger fallback).""" + prompt = "Count: {{ zero_var | fallback:None }}" + result = engine_with_context._format_prompt(prompt) + assert result == "Count: 0" + + def test_format_prompt_false_value(self, engine_with_context): + """Test variable with False value (should not trigger fallback).""" + prompt = "Status: {{ false_var | fallback:Unknown }}" + result = engine_with_context._format_prompt(prompt) + assert result == "Status: False" + + def test_format_prompt_missing_variable_no_fallback(self, engine_empty_context): + """Test missing variable without fallback filter.""" + prompt = "Hello {{ missing_var }}, welcome!" + result = engine_empty_context._format_prompt(prompt) + assert result == "Hello , welcome!" + + def test_format_prompt_complex_mixed_scenario(self, engine_with_context): + """Test complex scenario with multiple variables, some with fallbacks.""" + prompt = ( + "Dear {{ first_name | fallback:Customer }}, " + "your email {{ email }} is confirmed. " + "{{ missing_info | fallback:Additional information }} will be sent later. " + "You are {{ age }} years old." + ) + result = engine_with_context._format_prompt(prompt) + expected = ( + "Dear John, " + "your email john.doe@example.com is confirmed. " + "Additional information will be sent later. " + "You are 25 years old." + ) + assert result == expected + + def test_format_prompt_whitespace_handling(self, engine_with_context): + """Test handling of whitespace in template variables.""" + prompt = "Hello {{ first_name | fallback : Default }}, welcome!" + result = engine_with_context._format_prompt(prompt) + assert result == "Hello John, welcome!" + + def test_format_prompt_no_variables(self, engine_with_context): + """Test prompt with no template variables.""" + prompt = "This is a regular prompt with no variables." + result = engine_with_context._format_prompt(prompt) + assert result == "This is a regular prompt with no variables." + + def test_format_prompt_empty_prompt(self, engine_with_context): + """Test empty prompt.""" + prompt = "" + result = engine_with_context._format_prompt(prompt) + assert result == "" + + def test_format_prompt_none_prompt(self, engine_with_context): + """Test None prompt.""" + prompt = None + result = engine_with_context._format_prompt(prompt) + assert result is None + + def test_format_prompt_nested_braces(self, engine_with_context): + """Test handling of nested or malformed braces.""" + prompt = "Hello {{ first_name }}, this {is not a template} variable." + result = engine_with_context._format_prompt(prompt) + assert result == "Hello John, this {is not a template} variable." + + def test_format_prompt_special_characters_in_value(self): + """Test variables containing special characters.""" + mock_deps = { + "task": Mock(), + "llm": Mock(), + "context": Mock(), + "tts": Mock(), + "transport": Mock(), + "workflow": Mock(spec=WorkflowGraph), + "call_context_vars": { + "special_name": "John & Jane's Company", + "email": "test@domain.com", + }, + } + engine = PipecatEngine(**mock_deps) + + prompt = "Company: {{ special_name }}, Contact: {{ email }}" + result = engine._format_prompt(prompt) + assert result == "Company: John & Jane's Company, Contact: test@domain.com" + + def test_format_prompt_numeric_and_boolean_conversion(self): + """Test conversion of different data types to strings.""" + mock_deps = { + "task": Mock(), + "llm": Mock(), + "context": Mock(), + "tts": Mock(), + "transport": Mock(), + "workflow": Mock(spec=WorkflowGraph), + "call_context_vars": { + "count": 42, + "price": 99.99, + "is_active": True, + "items": ["apple", "banana"], + }, + } + engine = PipecatEngine(**mock_deps) + + prompt = "Count: {{ count }}, Price: ${{ price }}, Active: {{ is_active }}, Items: {{ items }}" + result = engine._format_prompt(prompt) + assert ( + result + == "Count: 42, Price: $99.99, Active: True, Items: ['apple', 'banana']" + ) + + def test_format_prompt_case_sensitivity(self, engine_with_context): + """Test that variable names are case sensitive.""" + prompt = ( + "Hello {{ First_Name | fallback }}, welcome!" # Note the capitalization + ) + result = engine_with_context._format_prompt(prompt) + assert result == "Hello First_Name, welcome!" # Should use fallback diff --git a/api/tests/test_pipecat_engine_set_node.py b/api/tests/test_pipecat_engine_set_node.py new file mode 100644 index 0000000..a0de71f --- /dev/null +++ b/api/tests/test_pipecat_engine_set_node.py @@ -0,0 +1,536 @@ +import asyncio +from unittest.mock import AsyncMock, Mock, patch + +import pytest +from pipecat.frames.frames import ( + EndFrame, + LLMFullResponseEndFrame, + LLMFullResponseStartFrame, + TTSSpeakFrame, +) +from pipecat.processors.aggregators.openai_llm_context import OpenAILLMContextFrame +from pipecat.services.openai.llm import OpenAILLMContext + +from api.services.workflow.dto import EdgeDataDTO, NodeDataDTO +from api.services.workflow.pipecat_engine import PipecatEngine +from api.services.workflow.workflow import Edge, Node, WorkflowGraph + + +class TestPipecatEngineSetNode: + """Test cases for PipecatEngine.set_node method refactoring.""" + + @pytest.fixture + def mock_workflow(self): + """Create a mock workflow with various node types.""" + workflow = Mock(spec=WorkflowGraph) + workflow.nodes = {} + workflow.start_node_id = "start_node" + workflow.global_node_id = None + return workflow + + @pytest.fixture + def mock_dependencies(self, mock_workflow): + """Create mock dependencies for PipecatEngine initialization.""" + task = AsyncMock() + task.queue_frames = AsyncMock() + task.queue_frame = AsyncMock() + + llm = AsyncMock() + llm.register_function = Mock() + llm.push_frame = AsyncMock() + + context = Mock(spec=OpenAILLMContext) + context.set_node_name = Mock() + + return { + "task": task, + "llm": llm, + "context": context, + "tts": Mock(), + "transport": Mock(), + "workflow": mock_workflow, + "call_context_vars": {"test_var": "test_value"}, + } + + @pytest.fixture + def engine(self, mock_dependencies): + """Create a PipecatEngine instance.""" + # Add audio_buffer and workflow_run_id to dependencies + mock_dependencies["audio_buffer"] = None + mock_dependencies["workflow_run_id"] = 123 + engine = PipecatEngine(**mock_dependencies) + # Mock the builtin function registration + engine._register_builtin_functions = AsyncMock() + return engine + + def create_node(self, node_id, **kwargs): + """Helper to create a node with default values.""" + defaults = { + "name": f"Node {node_id}", + "prompt": f"Prompt for {node_id}", + "is_static": False, + "is_start": False, + "is_end": False, + "allow_interrupt": True, + "extraction_enabled": False, + "extraction_prompt": "", + "extraction_variables": [], + "add_global_prompt": True, + "wait_for_user_response": False, + "detect_voicemail": False, + } + defaults.update(kwargs) + + data = Mock(spec=NodeDataDTO) + for key, value in defaults.items(): + setattr(data, key, value) + + node = Mock(spec=Node) + node.id = node_id + node.data = data + node.out_edges = [] + + # Copy attributes from data to node + for key, value in defaults.items(): + setattr(node, key, value) + + return node + + def create_edge( + self, source, target, label="Continue", condition="Always continue" + ): + """Helper to create an edge.""" + data = Mock(spec=EdgeDataDTO) + data.label = label + data.condition = condition + + edge = Mock(spec=Edge) + edge.source = source + edge.target = target + edge.data = data + edge.get_function_name = Mock(return_value=label.lower().replace(" ", "_")) + + return edge + + # ===== START NODE TESTS ===== + + @pytest.mark.asyncio + async def test_start_node_static_immediate_execution(self, engine, mock_workflow): + """Test: Basic static start node executes immediately.""" + # Setup + start_node = self.create_node( + "start_node", + is_start=True, + is_static=True, + prompt="Welcome to our service!", + ) + next_node = self.create_node("next_node", is_static=False) + + edge = self.create_edge("start_node", "next_node") + start_node.out_edges = [edge] + + mock_workflow.nodes = {"start_node": start_node, "next_node": next_node} + + # Execute + await engine.set_node("start_node") + + # Verify + # Should queue TTS immediately + engine.task.queue_frames.assert_called_once() + frames = engine.task.queue_frames.call_args[0][0] + assert len(frames) == 3 + assert isinstance(frames[0], LLMFullResponseStartFrame) + assert isinstance(frames[1], TTSSpeakFrame) + assert frames[1].text == "Welcome to our service!" + assert isinstance(frames[2], LLMFullResponseEndFrame) + + # Static start nodes now set pending transition after context push + assert engine._pending_control_transition_after_context_push is not None + + # Should not have set detect_voicemail for static start without it + assert not engine._detect_voicemail + + @pytest.mark.asyncio + async def test_start_node_with_detect_voicemail_no_audio_buffer( + self, engine, mock_workflow + ): + """Test: Start node with voicemail detection but no audio buffer logs warning.""" + # Setup + start_node = self.create_node( + "start_node", + is_start=True, + is_static=True, + detect_voicemail=True, + prompt="Hello, this is a business call.", + ) + + mock_workflow.nodes = {"start_node": start_node} + + # Engine has no audio buffer (None) + assert engine._audio_buffer is None + + # Execute + await engine.set_node("start_node") + + # Verify + # Should NOT set voicemail detection flag since no audio buffer + assert engine._detect_voicemail is False + assert engine._voicemail_detector is None + + # Should queue TTS immediately + engine.task.queue_frames.assert_called_once() + frames = engine.task.queue_frames.call_args[0][0] + assert isinstance(frames[1], TTSSpeakFrame) + assert frames[1].text == "Hello, this is a business call." + + @pytest.mark.asyncio + async def test_start_node_non_static_with_detect_voicemail( + self, engine, mock_workflow + ): + """Test: Non-static start node with voicemail detection without audio buffer.""" + # Setup + start_node = self.create_node( + "start_node", + is_start=True, + is_static=False, # Non-static + detect_voicemail=True, + prompt="You are an AI assistant. Start the conversation.", + ) + + mock_workflow.nodes = {"start_node": start_node} + + # Mock the context update method + engine._update_llm_context = AsyncMock() + engine._compose_system_message_functions_for_node = AsyncMock( + return_value=({"role": "system", "content": "Test prompt"}, []) + ) + + # Execute + await engine.set_node("start_node") + + # Verify + # Should NOT set voicemail detection flags (no audio buffer) + assert engine._detect_voicemail is False + assert engine._voicemail_detector is None + + # Should update LLM context for non-static node + engine._update_llm_context.assert_called_once() + + # Should queue context frame + engine.task.queue_frame.assert_called_once() + frame = engine.task.queue_frame.call_args[0][0] + assert isinstance(frame, OpenAILLMContextFrame) + + @pytest.mark.asyncio + async def test_start_node_static_with_wait_for_user_response( + self, engine, mock_workflow + ): + """Test: Static start node with wait_for_user_response.""" + # Setup + start_node = self.create_node( + "start_node", + is_start=True, + is_static=True, + wait_for_user_response=True, + prompt="Please tell me your name.", + ) + next_node = self.create_node("next_node") + + edge = self.create_edge("start_node", "next_node") + start_node.out_edges = [edge] + + mock_workflow.nodes = {"start_node": start_node, "next_node": next_node} + + # Execute + await engine.set_node("start_node") + + # Verify + # Should queue TTS immediately + engine.task.queue_frames.assert_called_once() + + # Should have a pending control transition that will start the timer + assert engine._pending_control_transition_after_context_push is not None + + # Timer task should not exist yet + assert ( + not hasattr(engine, "_user_response_timeout_task") + or engine._user_response_timeout_task is None + ) + + # Simulate context push to start the timer + await engine.flush_pending_transitions(source="context_push") + + # Now the timeout task should be created + assert engine._user_response_timeout_task is not None + assert not engine._user_response_timeout_task.done() + + # Clean up the task + engine._user_response_timeout_task.cancel() + + @pytest.mark.asyncio + async def test_start_node_non_static(self, engine, mock_workflow): + """Test: Non-static start node sends context to LLM.""" + # Setup + start_node = self.create_node( + "start_node", + is_start=True, + is_static=False, + prompt="You are a helpful assistant. Greet the user.", + ) + + mock_workflow.nodes = {"start_node": start_node} + + # Mock the context update method + engine._update_llm_context = AsyncMock() + engine._compose_system_message_functions_for_node = AsyncMock( + return_value=({"role": "system", "content": "Test prompt"}, []) + ) + + # Execute + await engine.set_node("start_node") + + # Verify + # Should set context name + engine.context.set_node_name.assert_called_once_with("Node start_node") + + # Should update LLM context + engine._update_llm_context.assert_called_once() + + # Should queue context frame + engine.task.queue_frame.assert_called_once() + frame = engine.task.queue_frame.call_args[0][0] + assert isinstance(frame, OpenAILLMContextFrame) + + # ===== AGENT NODE TESTS ===== + + @pytest.mark.asyncio + async def test_agent_node_static(self, engine, mock_workflow): + """Test: Static agent node plays TTS and transitions.""" + # Setup + agent_node = self.create_node( + "agent_node", is_static=True, prompt="Processing your request..." + ) + next_node = self.create_node("next_node") + + edge = self.create_edge("agent_node", "next_node") + agent_node.out_edges = [edge] + + mock_workflow.nodes = {"agent_node": agent_node, "next_node": next_node} + + # Execute + await engine.set_node("agent_node") + + # Verify + # Should queue TTS + engine.task.queue_frames.assert_called_once() + frames = engine.task.queue_frames.call_args[0][0] + assert isinstance(frames[1], TTSSpeakFrame) + assert frames[1].text == "Processing your request..." + + # Should have pending transition + assert engine._pending_control_transition_after_context_push is not None + + @pytest.mark.asyncio + async def test_agent_node_non_static(self, engine, mock_workflow): + """Test: Non-static agent node sends context to LLM.""" + # Setup + agent_node = self.create_node( + "agent_node", + is_static=False, + prompt="Analyze the user's request and respond appropriately.", + ) + decision_node = self.create_node("decision_node") + + edge = self.create_edge("agent_node", "decision_node", "analyze_complete") + agent_node.out_edges = [edge] + + mock_workflow.nodes = {"agent_node": agent_node, "decision_node": decision_node} + + # Mock methods + engine._update_llm_context = AsyncMock() + engine._compose_system_message_functions_for_node = AsyncMock( + return_value=( + {"role": "system", "content": "Test"}, + [{"name": "test_func"}], + ) + ) + + # Execute + await engine.set_node("agent_node") + + # Verify + # Should register transition function + engine.llm.register_function.assert_called_once() + call_args = engine.llm.register_function.call_args + assert call_args[0][0] == "analyze_complete" + assert callable(call_args[0][1]) # Check it's a function + assert call_args[1]["cancel_on_interruption"] is True + + # Should update context and send frame + engine._update_llm_context.assert_called_once() + engine.task.queue_frame.assert_called_once() + + @pytest.mark.asyncio + async def test_agent_node_with_interruption_control(self, engine, mock_workflow): + """Test: Agent node respects allow_interrupt flag.""" + # Setup + no_interrupt_node = self.create_node( + "no_interrupt", + is_static=True, + allow_interrupt=False, + prompt="Please wait while I process...", + ) + + mock_workflow.nodes = {"no_interrupt": no_interrupt_node} + + # Execute + await engine.set_node("no_interrupt") + + # Verify current node is set (for STT mute callback) + assert engine._current_node == no_interrupt_node + assert engine._current_node.allow_interrupt is False + + # ===== END NODE TESTS ===== + + @pytest.mark.asyncio + async def test_end_node_static(self, engine, mock_workflow): + """Test: Static end node plays final message and schedules end task.""" + # Setup + end_node = self.create_node( + "end_node", + is_static=True, + is_end=True, + prompt="Thank you for calling. Goodbye!", + ) + + mock_workflow.nodes = {"end_node": end_node} + + # Execute + await engine.set_node("end_node") + + # Verify + # Should queue TTS + engine.task.queue_frames.assert_called_once() + frames = engine.task.queue_frames.call_args[0][0] + assert frames[1].text == "Thank you for calling. Goodbye!" + + # Should have pending end task + assert engine._pending_control_transition_after_context_push is not None + + # Execute the pending transition + await engine._pending_control_transition_after_context_push() + + # Should have sent EndFrame via task.queue_frame + # The second call should be the EndFrame (first was TTS frames) + assert engine.task.queue_frame.call_count >= 1 + end_frame = engine.task.queue_frame.call_args[0][0] + assert isinstance(end_frame, EndFrame) + + @pytest.mark.asyncio + async def test_end_node_with_extraction(self, engine, mock_workflow): + """Test: End node with variable extraction.""" + # Setup + end_node = self.create_node( + "end_node", + is_end=True, + is_static=False, + extraction_enabled=True, + extraction_variables=["user_name", "satisfaction_level"], + extraction_prompt="Extract user name and satisfaction", + ) + + mock_workflow.nodes = {"end_node": end_node} + + # Mock the extraction manager + engine._variable_extraction_manager = Mock() + engine._perform_variable_extraction_if_needed = AsyncMock() + + # Mock context update and composition methods + engine._update_llm_context = AsyncMock() + engine._compose_system_message_functions_for_node = AsyncMock( + return_value=({"role": "system", "content": "Test"}, []) + ) + + # Execute + await engine.set_node("end_node") + + # Verify + # Should trigger extraction + engine._perform_variable_extraction_if_needed.assert_called_once_with(end_node) + + # Should have pending end task + assert engine._pending_control_transition_after_context_push is not None + + # ===== CALLBACK INTEGRATION TESTS ===== + + @pytest.mark.asyncio + async def test_user_stopped_speaking_during_response_wait( + self, engine, mock_workflow + ): + """Test: User stops speaking triggers transition during wait_for_response.""" + # Setup + start_node = self.create_node( + "start_node", is_start=True, is_static=True, wait_for_user_response=True + ) + next_node = self.create_node("next_node") + + edge = self.create_edge("start_node", "next_node") + start_node.out_edges = [edge] + + mock_workflow.nodes = {"start_node": start_node, "next_node": next_node} + + # Set current node to start node + engine._current_node = start_node + engine._user_response_timeout_task = asyncio.create_task(asyncio.sleep(3)) + + # Create callback and execute + callback = engine.create_user_stopped_speaking_callback() + + # Mock set_node to avoid recursion + with patch.object(engine, "set_node", new=AsyncMock()) as mock_set_node: + await callback() + + # Verify + mock_set_node.assert_called_once_with("next_node") + assert engine._queue_context_frame is False # Should be set to False + + @pytest.mark.asyncio + async def test_context_push_callback_executes_pending_transitions(self, engine): + """Test: flush_pending_transitions executes deferred transitions.""" + # Setup pending transitions + mock_generated_transition = AsyncMock() + mock_control_transition = AsyncMock() + + engine._pending_generated_transition_after_context_push = ( + mock_generated_transition + ) + engine._pending_control_transition_after_context_push = mock_control_transition + + # Execute + await engine.flush_pending_transitions(source="context_push") + + # Verify both transitions were executed + mock_generated_transition.assert_called_once() + mock_control_transition.assert_called_once() + + # Verify they were cleared + assert engine._pending_generated_transition_after_context_push is None + assert engine._pending_control_transition_after_context_push is None + + # ===== COMPLEX SCENARIO TESTS ===== + + +# Add helper for testing with real async behavior +def ANY(cls=None): + """Helper for matching any argument in mock calls.""" + + class AnyMatcher: + def __init__(self, cls): + self.cls = cls + + def __eq__(self, other): + if self.cls: + return isinstance(other, self.cls) + return True + + return AnyMatcher(cls) diff --git a/api/tests/test_run_integrations_db_client.py b/api/tests/test_run_integrations_db_client.py new file mode 100644 index 0000000..6c3f9d6 --- /dev/null +++ b/api/tests/test_run_integrations_db_client.py @@ -0,0 +1,266 @@ +"""Tests for run_integrations with new DB client methods.""" + +from unittest.mock import AsyncMock, MagicMock, patch + +import pytest + +from api.enums import WorkflowRunMode +from api.tasks.run_integrations import run_integrations_post_workflow_run + + +@pytest.fixture(autouse=True) +def mock_logger(): + """Mock the logger for all tests.""" + with patch("api.tasks.run_integrations.logger") as mock_logger: + mock_logger.bind.return_value = mock_logger + yield mock_logger + + +@pytest.fixture +def mock_workflow_run(): + """Create a mock workflow run with all required attributes.""" + workflow_run = MagicMock() + workflow_run.id = 1 + workflow_run.mode = "browser" + workflow_run.gathered_context = { + "call_disposition": "XFER", + "mapped_call_disposition": "XFER", # Required for Slack integration + "call_duration": "120", + "agent_name": "TestAgent", + } + workflow_run.initial_context = {"vendor_id": "123"} + + # Setup workflow and user chain + workflow_run.workflow = MagicMock() + workflow_run.workflow.user = MagicMock() + workflow_run.workflow.user.selected_organization_id = 100 + + return workflow_run + + +@pytest.fixture +def mock_integration(): + """Create a mock integration.""" + integration = MagicMock() + integration.id = 1 + integration.organisation_id = 100 + integration.provider = "slack" + integration.is_active = True + integration.connection_details = { + "connection_config": {"incoming_webhook.url": "https://hooks.slack.com/test"} + } + return integration + + +@pytest.mark.asyncio +async def test_run_integrations_with_db_client_methods( + mock_workflow_run, mock_integration +): + """Test that run_integrations uses the new DB client methods correctly.""" + + with patch("api.tasks.run_integrations.set_current_run_id") as mock_set_run_id: + with patch("api.tasks.run_integrations.db_client") as mock_db_client: + # Mock the new DB client methods + mock_db_client.get_workflow_run_with_context = AsyncMock( + return_value=(mock_workflow_run, 100) + ) + mock_db_client.get_active_integrations_by_organization = AsyncMock( + return_value=[mock_integration] + ) + mock_db_client.get_configuration_value = AsyncMock( + return_value={ + "slack": { + "DISPOSITION_CODE": "Disposition: {{mapped_call_disposition}}" + } + } + ) + + # Mock the aiohttp session for Slack webhook + with patch( + "api.tasks.run_integrations.aiohttp.ClientSession" + ) as mock_session_class: + mock_response = MagicMock() + mock_response.status = 200 + + mock_session = MagicMock() + mock_session.__aenter__.return_value = mock_session + mock_session.__aexit__.return_value = AsyncMock() + + mock_post = MagicMock() + mock_post.__aenter__.return_value = mock_response + mock_post.__aexit__.return_value = AsyncMock() + + mock_session.post.return_value = mock_post + mock_session_class.return_value = mock_session + + # Call the function + await run_integrations_post_workflow_run(None, 1) + + # Verify the correct DB client methods were called + mock_set_run_id.assert_called_once_with(1) + mock_db_client.get_workflow_run_with_context.assert_called_once_with(1) + mock_db_client.get_active_integrations_by_organization.assert_called_once_with( + 100 + ) + + # Verify the Slack webhook was called + mock_session.post.assert_called_once() + assert ( + mock_session.post.call_args[0][0] == "https://hooks.slack.com/test" + ) + + +@pytest.mark.asyncio +async def test_run_integrations_no_workflow_run(): + """Test handling when workflow run is not found.""" + + with patch("api.tasks.run_integrations.set_current_run_id"): + with patch("api.tasks.run_integrations.db_client") as mock_db_client: + # Mock workflow run not found + mock_db_client.get_workflow_run_with_context = AsyncMock( + return_value=(None, None) + ) + + # Call the function + await run_integrations_post_workflow_run(None, 999) + + # Verify it returns early and doesn't call other DB methods + mock_db_client.get_workflow_run_with_context.assert_called_once_with(999) + mock_db_client.get_active_integrations_by_organization.assert_not_called() + + +@pytest.mark.asyncio +async def test_run_integrations_no_organization(): + """Test handling when user has no organization.""" + + mock_workflow_run = MagicMock() + mock_workflow_run.id = 1 + mock_workflow_run.gathered_context = {"test": "data"} + mock_workflow_run.workflow = MagicMock() + mock_workflow_run.workflow.user = MagicMock() + + with patch("api.tasks.run_integrations.set_current_run_id"): + with patch("api.tasks.run_integrations.db_client") as mock_db_client: + # Mock workflow run found but no organization + mock_db_client.get_workflow_run_with_context = AsyncMock( + return_value=(mock_workflow_run, None) + ) + + # Call the function + await run_integrations_post_workflow_run(None, 1) + + # Verify it returns early after checking organization + mock_db_client.get_workflow_run_with_context.assert_called_once_with(1) + mock_db_client.get_active_integrations_by_organization.assert_not_called() + + +@pytest.mark.asyncio +async def test_run_integrations_no_gathered_context(mock_workflow_run): + """Test handling when workflow run has no gathered context.""" + + mock_workflow_run.gathered_context = None + + with patch("api.tasks.run_integrations.set_current_run_id"): + with patch("api.tasks.run_integrations.db_client") as mock_db_client: + # Mock workflow run with no gathered context + mock_db_client.get_workflow_run_with_context = AsyncMock( + return_value=(mock_workflow_run, 100) + ) + + # Call the function + await run_integrations_post_workflow_run(None, 1) + + # Verify it returns early after checking gathered_context + mock_db_client.get_workflow_run_with_context.assert_called_once_with(1) + mock_db_client.get_active_integrations_by_organization.assert_not_called() + + +@pytest.mark.asyncio +async def test_run_integrations_stasis_mode(mock_workflow_run): + """Test that stasis mode triggers vendor sync.""" + + mock_workflow_run.mode = WorkflowRunMode.STASIS.value + mock_workflow_run.initial_context = { + "vendor": "test_vendor", + "vendor_base_url": "https://api.vendor.com", + "vendor_id": "123", + } + + with patch("api.tasks.run_integrations.set_current_run_id"): + with patch("api.tasks.run_integrations.db_client") as mock_db_client: + with patch("api.tasks.run_integrations._sync_vendor_data") as mock_sync: + mock_sync.return_value = None + + mock_db_client.get_workflow_run_with_context = AsyncMock( + return_value=(mock_workflow_run, 100) + ) + mock_db_client.get_active_integrations_by_organization = AsyncMock( + return_value=[] + ) + + # Call the function + await run_integrations_post_workflow_run(None, 1) + + # Verify vendor sync was called + mock_sync.assert_called_once_with( + mock_workflow_run.initial_context, + mock_workflow_run.gathered_context, + ) + + +@pytest.mark.asyncio +async def test_run_integrations_multiple_integrations(mock_workflow_run): + """Test processing multiple integrations.""" + + # Create multiple mock integrations + slack_integration = MagicMock() + slack_integration.provider = "slack" + slack_integration.connection_details = { + "connection_config": {"incoming_webhook.url": "https://hooks.slack.com/test1"} + } + + slack_integration2 = MagicMock() + slack_integration2.provider = "slack" + slack_integration2.connection_details = { + "connection_config": {"incoming_webhook.url": "https://hooks.slack.com/test2"} + } + + with patch("api.tasks.run_integrations.set_current_run_id"): + with patch("api.tasks.run_integrations.db_client") as mock_db_client: + mock_db_client.get_workflow_run_with_context = AsyncMock( + return_value=(mock_workflow_run, 100) + ) + mock_db_client.get_active_integrations_by_organization = AsyncMock( + return_value=[slack_integration, slack_integration2] + ) + mock_db_client.get_configuration_value = AsyncMock( + return_value={"slack": {"DISPOSITION_CODE": "Test message"}} + ) + + with patch( + "api.tasks.run_integrations.aiohttp.ClientSession" + ) as mock_session_class: + mock_response = MagicMock() + mock_response.status = 200 + + mock_session = MagicMock() + mock_session.__aenter__.return_value = mock_session + mock_session.__aexit__.return_value = AsyncMock() + + mock_post = MagicMock() + mock_post.__aenter__.return_value = mock_response + mock_post.__aexit__.return_value = AsyncMock() + + mock_session.post.return_value = mock_post + mock_session_class.return_value = mock_session + + # Call the function + await run_integrations_post_workflow_run(None, 1) + + # Verify both integrations were processed + assert mock_session.post.call_count == 2 + + # Check that both webhooks were called + call_urls = [call[0][0] for call in mock_session.post.call_args_list] + assert "https://hooks.slack.com/test1" in call_urls + assert "https://hooks.slack.com/test2" in call_urls diff --git a/api/tests/test_run_integrations_template.py b/api/tests/test_run_integrations_template.py new file mode 100644 index 0000000..0ec8e29 --- /dev/null +++ b/api/tests/test_run_integrations_template.py @@ -0,0 +1,136 @@ +from unittest.mock import AsyncMock, MagicMock, patch + +import pytest + +from api.tasks.run_integrations import _process_slack_integration + + +@pytest.fixture(autouse=True) +def mock_logger(): + """Mock the logger for all tests.""" + with patch("api.tasks.run_integrations.logger") as mock_logger: + # Mock the bind method to return the logger itself + mock_logger.bind.return_value = mock_logger + yield mock_logger + + +@pytest.mark.asyncio +async def test_slack_integration_with_template(): + """Test that Slack integration uses render_template correctly.""" + # Mock integration + mock_integration = MagicMock() + mock_integration.id = 1 + mock_integration.organisation_id = 123 + mock_integration.connection_details = { + "connection_config": {"incoming_webhook.url": "https://hooks.slack.com/test"} + } + + # Mock gathered context + gathered_context = { + "call_disposition": "XFER", + "mapped_call_disposition": "XFER", # Required for Slack integration to proceed + "call_duration": "300", + "agent_name": "Alex", + } + + # Mock db_client + with patch("api.tasks.run_integrations.db_client") as mock_db_client: + # Mock message template configuration + mock_db_client.get_configuration_value = AsyncMock( + return_value={ + "slack": { + "DISPOSITION_CODE": "Agent: {{agent_name}}\\nDisposition: {{call_disposition}}\\nDuration: {{call_duration}}s" + } + } + ) + + # Mock aiohttp session + with patch( + "api.tasks.run_integrations.aiohttp.ClientSession" + ) as mock_session_class: + mock_response = MagicMock() + mock_response.status = 200 + + mock_session = MagicMock() + mock_session.__aenter__.return_value = mock_session + mock_session.__aexit__.return_value = AsyncMock() + + mock_post = MagicMock() + mock_post.__aenter__.return_value = mock_response + mock_post.__aexit__.return_value = AsyncMock() + + mock_session.post.return_value = mock_post + mock_session_class.return_value = mock_session + + # Call the function + await _process_slack_integration(mock_integration, gathered_context) + + # Verify the message was formatted correctly + mock_session.post.assert_called_once() + call_args = mock_session.post.call_args + + # Check the webhook URL + assert call_args[0][0] == "https://hooks.slack.com/test" + + # Check the message content + json_data = call_args[1]["json"] + + # Check that the template was rendered correctly + expected_text = "Agent: Alex\nDisposition: XFER\nDuration: 300s" + assert json_data["text"] == expected_text + + +@pytest.mark.asyncio +async def test_slack_integration_with_missing_template_vars(): + """Test template rendering with missing variables.""" + # Mock integration + mock_integration = MagicMock() + mock_integration.id = 1 + mock_integration.organisation_id = 123 + mock_integration.connection_details = { + "connection_config": {"incoming_webhook.url": "https://hooks.slack.com/test"} + } + + # Mock gathered context with missing values + gathered_context = { + "call_disposition": "XFER", + "mapped_call_disposition": "XFER", # Required for Slack integration to proceed + # call_duration is missing + } + + # Mock db_client + with patch("api.tasks.run_integrations.db_client") as mock_db_client: + # Mock message template configuration with fallback + mock_db_client.get_configuration_value = AsyncMock( + return_value={ + "slack": { + "DISPOSITION_CODE": "Disposition: {{call_disposition}}\\nDuration: {{call_duration | fallback:N/A}}" + } + } + ) + + # Mock aiohttp session + with patch( + "api.tasks.run_integrations.aiohttp.ClientSession" + ) as mock_session_class: + mock_response = MagicMock() + mock_response.status = 200 + + mock_session = MagicMock() + mock_session.__aenter__.return_value = mock_session + mock_session.__aexit__.return_value = AsyncMock() + + mock_post = MagicMock() + mock_post.__aenter__.return_value = mock_response + mock_post.__aexit__.return_value = AsyncMock() + + mock_session.post.return_value = mock_post + mock_session_class.return_value = mock_session + + # Call the function + await _process_slack_integration(mock_integration, gathered_context) + + # Check that the template was rendered with fallback + json_data = mock_session.post.call_args[1]["json"] + expected_text = "Disposition: XFER\nDuration: N/A" + assert json_data["text"] == expected_text diff --git a/api/tests/test_s3_signed_url.py b/api/tests/test_s3_signed_url.py new file mode 100644 index 0000000..e299696 --- /dev/null +++ b/api/tests/test_s3_signed_url.py @@ -0,0 +1,117 @@ +"""Tests for the `/s3/signed-url` endpoint. + +This test-suite verifies: +1. Regular users can retrieve signed URLs for resources belonging to their own workflow runs. +2. Regular users are *forbidden* from accessing resources that belong to other users. +3. Superusers can access any resource irrespective of ownership. +""" + +import os +from unittest.mock import AsyncMock + +import pytest +from fastapi import status + +# Ensure the S3 environment variables exist so that the module import does not fail +os.environ.setdefault("S3_BUCKET", "test-bucket") +os.environ.setdefault("S3_REGION", "us-east-1") + + +@pytest.mark.asyncio +async def test_signed_url_for_own_run(monkeypatch, test_client_factory, db_session): + """A normal user should be able to fetch a signed URL for their own workflow run.""" + from api.db.models import UserModel + + # ------------------------------------------------------------------ + # 1. Set-up – create user, workflow & workflow run + # ------------------------------------------------------------------ + user: UserModel = await db_session.get_or_create_user_by_provider_id("user_own_run") + workflow = await db_session.create_workflow("wf", {}, user.id) + run = await db_session.create_workflow_run("run", workflow.id, "chat", user.id) + + key = f"transcripts/{run.id}.txt" + + # Patch S3 signed-url generator to avoid network calls + monkeypatch.setattr( + "api.services.filesystem.s3.s3_fs.aget_signed_url", + AsyncMock(return_value="https://signed-url"), + ) + + async with test_client_factory(user) as client: + response = await client.get(f"/api/v1/s3/signed-url?key={key}") + + assert response.status_code == status.HTTP_200_OK + data = response.json() + assert data == {"url": "https://signed-url", "expires_in": 3600} + + +@pytest.mark.asyncio +async def test_signed_url_for_other_users_run_forbidden( + monkeypatch, test_client_factory, db_session +): + """A normal user must *not* access workflow runs owned by someone else.""" + from api.db.models import UserModel + + # Owner of the workflow run + owner: UserModel = await db_session.get_or_create_user_by_provider_id("owner_user") + workflow = await db_session.create_workflow("wf", {}, owner.id) + run = await db_session.create_workflow_run("run", workflow.id, "chat", owner.id) + + # Second user attempting access + intruder: UserModel = await db_session.get_or_create_user_by_provider_id( + "intruder_user" + ) + + key = f"recordings/{run.id}.wav" + + monkeypatch.setattr( + "api.services.filesystem.s3.s3_fs.aget_signed_url", + AsyncMock(return_value="https://signed-url"), + ) + + async with test_client_factory(intruder) as client: + response = await client.get(f"/api/v1/s3/signed-url?key={key}") + + assert response.status_code == status.HTTP_403_FORBIDDEN + + +@pytest.mark.asyncio +async def test_superuser_can_access_any_run( + monkeypatch, test_client_factory, db_session +): + """Superusers should be able to fetch signed URLs for any workflow run.""" + from api.db.models import UserModel + + # Normal user & run owner + owner: UserModel = await db_session.get_or_create_user_by_provider_id( + "owner_of_run" + ) + workflow = await db_session.create_workflow("wf", {}, owner.id) + run = await db_session.create_workflow_run("run", workflow.id, "chat", owner.id) + + # Superuser + superuser: UserModel = await db_session.get_or_create_user_by_provider_id( + "admin_user" + ) + + # Promote to superuser + # We need to commit the change so that the DB reflects it + async with db_session.async_session() as session: + db_user = await session.get(UserModel, superuser.id) + db_user.is_superuser = True + await session.commit() + await session.refresh(db_user) # ensure we have the latest state + superuser.is_superuser = True + + key = f"transcripts/{run.id}.txt" + + monkeypatch.setattr( + "api.services.filesystem.s3.s3_fs.aget_signed_url", + AsyncMock(return_value="https://signed-url"), + ) + + async with test_client_factory(superuser) as client: + response = await client.get(f"/api/v1/s3/signed-url?key={key}") + + assert response.status_code == status.HTTP_200_OK + assert response.json()["url"] == "https://signed-url" diff --git a/api/tests/test_s3_upload_tasks.py b/api/tests/test_s3_upload_tasks.py new file mode 100644 index 0000000..6e6dadc --- /dev/null +++ b/api/tests/test_s3_upload_tasks.py @@ -0,0 +1,129 @@ +import os +import tempfile +from unittest.mock import AsyncMock, patch + +import pytest + +from api.tasks.s3_upload import upload_audio_to_s3, upload_transcript_to_s3 + + +@pytest.mark.asyncio +async def test_upload_audio_to_s3_success(): + """Test successful audio upload to S3.""" + # Create a temporary file + with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as tf: + tf.write(b"fake audio data") + temp_path = tf.name + + try: + # Mock dependencies + mock_ctx = AsyncMock() + mock_s3_fs = AsyncMock() + mock_db_client = AsyncMock() + + with ( + patch("api.tasks.s3_upload.s3_fs", mock_s3_fs), + patch("api.tasks.s3_upload.db_client", mock_db_client), + ): + await upload_audio_to_s3( + mock_ctx, workflow_run_id=123, temp_file_path=temp_path + ) + + # Verify S3 upload was called + mock_s3_fs.aupload_file.assert_called_once_with( + temp_path, "recordings/123.wav" + ) + + # Verify DB update was called + mock_db_client.update_workflow_run.assert_called_once_with( + run_id=123, recording_url="recordings/123.wav" + ) + + # Verify temp file was cleaned up + assert not os.path.exists(temp_path) + + finally: + # Clean up if test failed + if os.path.exists(temp_path): + os.remove(temp_path) + + +@pytest.mark.asyncio +async def test_upload_audio_to_s3_file_not_found(): + """Test audio upload when temp file doesn't exist.""" + mock_ctx = AsyncMock() + + with pytest.raises(FileNotFoundError): + await upload_audio_to_s3( + mock_ctx, workflow_run_id=123, temp_file_path="/nonexistent/file.wav" + ) + + +@pytest.mark.asyncio +async def test_upload_transcript_to_s3_success(): + """Test successful transcript upload to S3.""" + # Create a temporary file + with tempfile.NamedTemporaryFile(mode="w", suffix=".txt", delete=False) as tf: + tf.write("Test transcript content") + temp_path = tf.name + + try: + # Mock dependencies + mock_ctx = AsyncMock() + mock_s3_fs = AsyncMock() + mock_db_client = AsyncMock() + + with ( + patch("api.tasks.s3_upload.s3_fs", mock_s3_fs), + patch("api.tasks.s3_upload.db_client", mock_db_client), + ): + await upload_transcript_to_s3( + mock_ctx, workflow_run_id=456, temp_file_path=temp_path + ) + + # Verify S3 upload was called + mock_s3_fs.aupload_file.assert_called_once_with( + temp_path, "transcripts/456.txt" + ) + + # Verify DB update was called + mock_db_client.update_workflow_run.assert_called_once_with( + run_id=456, transcript_url="transcripts/456.txt" + ) + + # Verify temp file was cleaned up + assert not os.path.exists(temp_path) + + finally: + # Clean up if test failed + if os.path.exists(temp_path): + os.remove(temp_path) + + +@pytest.mark.asyncio +async def test_upload_s3_cleanup_on_error(): + """Test that temp files are cleaned up even when S3 upload fails.""" + # Create a temporary file + with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as tf: + tf.write(b"fake audio data") + temp_path = tf.name + + try: + mock_ctx = AsyncMock() + mock_s3_fs = AsyncMock() + # Make S3 upload fail + mock_s3_fs.aupload_file.side_effect = Exception("S3 upload failed") + + with patch("api.tasks.s3_upload.s3_fs", mock_s3_fs): + with pytest.raises(Exception): + await upload_audio_to_s3( + mock_ctx, workflow_run_id=123, temp_file_path=temp_path + ) + + # Verify temp file was still cleaned up + assert not os.path.exists(temp_path) + + finally: + # Clean up if test failed + if os.path.exists(temp_path): + os.remove(temp_path) diff --git a/api/tests/test_template_renderer.py b/api/tests/test_template_renderer.py new file mode 100644 index 0000000..727d4fe --- /dev/null +++ b/api/tests/test_template_renderer.py @@ -0,0 +1,89 @@ +from api.utils.template_renderer import render_template + + +def test_render_template_basic(): + """Test basic template rendering.""" + template = "Hello {{name}}, your balance is {{balance}}." + context = {"name": "John", "balance": "$1000"} + + result = render_template(template, context) + assert result == "Hello John, your balance is $1000." + + +def test_render_template_with_spaces(): + """Test template rendering with spaces around variables.""" + template = "Hello {{ name }}, your balance is {{ balance }}." + context = {"name": "John", "balance": "$1000"} + + result = render_template(template, context) + assert result == "Hello John, your balance is $1000." + + +def test_render_template_missing_variable(): + """Test template rendering with missing variables.""" + template = "Hello {{name}}, your balance is {{balance}}." + context = {"name": "John"} + + result = render_template(template, context) + assert result == "Hello John, your balance is ." + + +def test_render_template_with_fallback(): + """Test template rendering with fallback values.""" + template = "Hello {{name | fallback}}, your balance is {{balance | fallback:$0}}." + context = {} + + result = render_template(template, context) + assert result == "Hello Name, your balance is $0." + + +def test_render_template_with_fallback_existing_value(): + """Test that fallback is not used when value exists.""" + template = "Hello {{name | fallback:Guest}}" + context = {"name": "John"} + + result = render_template(template, context) + assert result == "Hello John" + + +def test_render_template_with_line_breaks(): + """Test template rendering with line breaks.""" + template = ( + "DISPOSITION_CODE: {{call_disposition}}\\nCALL_DURATION: {{call_duration}}" + ) + context = {"call_disposition": "XFER", "call_duration": "300"} + + result = render_template(template, context) + expected = "DISPOSITION_CODE: XFER\nCALL_DURATION: 300" + assert result == expected + + +def test_render_template_empty(): + """Test rendering empty template.""" + assert render_template("", {}) == "" + assert render_template(None, {}) == None + + +def test_render_template_no_placeholders(): + """Test template with no placeholders.""" + template = "This is a plain text message" + result = render_template(template, {"unused": "value"}) + assert result == "This is a plain text message" + + +def test_render_template_none_values(): + """Test template with None values.""" + template = "Value: {{value}}" + context = {"value": None} + + result = render_template(template, context) + assert result == "Value: " + + +def test_render_template_numeric_values(): + """Test template with numeric values.""" + template = "Count: {{count}}, Price: {{price}}" + context = {"count": 42, "price": 19.99} + + result = render_template(template, context) + assert result == "Count: 42, Price: 19.99" diff --git a/api/tests/test_usage_concurrency.py b/api/tests/test_usage_concurrency.py new file mode 100644 index 0000000..d775267 --- /dev/null +++ b/api/tests/test_usage_concurrency.py @@ -0,0 +1,152 @@ +#!/usr/bin/env python +""" +Test script to verify atomic operations in organization_usage_client.py +This simulates concurrent access from multiple processes. +""" + +import asyncio +import os +from concurrent.futures import ProcessPoolExecutor + +# Set up environment +os.environ.setdefault("DATABASE_URL", os.environ.get("DATABASE_URL", "")) + +from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine +from sqlalchemy.orm import sessionmaker + +from api.db.organization_usage_client import OrganizationUsageClient + + +async def reserve_quota_process(org_id: int, tokens: int, process_id: int): + """Simulate a process trying to reserve quota.""" + engine = create_async_engine(os.environ["DATABASE_URL"]) + async_session = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False) + + client = OrganizationUsageClient(async_session) + + results = [] + for i in range(5): + result = await client.check_and_reserve_quota(org_id, tokens) + results.append((process_id, i, result)) + await asyncio.sleep(0.01) # Small delay to increase contention + + await engine.dispose() + return results + + +async def update_usage_process(org_id: int, tokens: int, process_id: int): + """Simulate a process updating usage after runs.""" + engine = create_async_engine(os.environ["DATABASE_URL"]) + async_session = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False) + + client = OrganizationUsageClient(async_session) + + for i in range(5): + await client.update_usage_after_run(org_id, tokens, duration_seconds=10) + await asyncio.sleep(0.01) + + await engine.dispose() + return f"Process {process_id} completed updates" + + +def run_reserve_quota(args): + """Wrapper to run async function in process.""" + org_id, tokens, process_id = args + return asyncio.run(reserve_quota_process(org_id, tokens, process_id)) + + +def run_update_usage(args): + """Wrapper to run async function in process.""" + org_id, tokens, process_id = args + return asyncio.run(update_usage_process(org_id, tokens, process_id)) + + +async def test_concurrent_quota_reservation(): + """Test that concurrent quota reservations are handled atomically.""" + print("Testing concurrent quota reservations...") + + # Assuming org_id 1 exists with quota enabled + org_id = 1 + tokens_per_request = 100 + + # Run multiple processes trying to reserve quota simultaneously + with ProcessPoolExecutor(max_workers=3) as executor: + futures = [] + for i in range(3): + futures.append( + executor.submit(run_reserve_quota, (org_id, tokens_per_request, i)) + ) + + results = [] + for future in futures: + results.extend(future.result()) + + print(f"Reservation results: {results}") + + # Check that reservations were handled atomically + successful_reservations = sum(1 for _, _, success in results if success) + print(f"Successful reservations: {successful_reservations}") + + +async def test_concurrent_usage_updates(): + """Test that concurrent usage updates are handled atomically.""" + print("\nTesting concurrent usage updates...") + + org_id = 1 + tokens_per_update = 50 + + # Get initial usage + engine = create_async_engine(os.environ["DATABASE_URL"]) + async_session = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False) + client = OrganizationUsageClient(async_session) + + initial_usage = await client.get_current_usage(org_id) + initial_tokens = initial_usage["used_dograh_tokens"] + print(f"Initial tokens: {initial_tokens}") + + # Run multiple processes updating usage simultaneously + with ProcessPoolExecutor(max_workers=3) as executor: + futures = [] + for i in range(3): + futures.append( + executor.submit(run_update_usage, (org_id, tokens_per_update, i)) + ) + + for future in futures: + print(future.result()) + + # Check final usage + final_usage = await client.get_current_usage(org_id) + final_tokens = final_usage["used_dograh_tokens"] + expected_tokens = initial_tokens + ( + 3 * 5 * tokens_per_update + ) # 3 processes * 5 updates * 50 tokens + + print(f"Final tokens: {final_tokens}") + print(f"Expected tokens: {expected_tokens}") + print(f"Difference: {final_tokens - expected_tokens}") + + await engine.dispose() + + if final_tokens == expected_tokens: + print("✅ All updates were applied atomically!") + else: + print("❌ Some updates were lost due to race conditions!") + + +async def main(): + """Run all concurrency tests.""" + try: + await test_concurrent_quota_reservation() + await test_concurrent_usage_updates() + except Exception as e: + print(f"Error during testing: {e}") + import traceback + + traceback.print_exc() + + +if __name__ == "__main__": + print("Starting organization usage concurrency tests...") + print(f"Using DATABASE_URL: {os.environ.get('DATABASE_URL', 'NOT SET')}") + asyncio.run(main()) diff --git a/api/tests/test_variable_extraction.py b/api/tests/test_variable_extraction.py new file mode 100644 index 0000000..552a1ac --- /dev/null +++ b/api/tests/test_variable_extraction.py @@ -0,0 +1,140 @@ +import json +import os +from unittest.mock import AsyncMock, patch + +import pytest +from pipecat.services.openai.llm import OpenAILLMContext + +from api.services.workflow.dto import ExtractionVariableDTO, VariableType +from api.services.workflow.pipecat_engine_variable_extractor import ( + VariableExtractionManager, +) + + +class DummyLLM: + """A minimal stub that mimics the parts of an LLM service used by the extractor.""" + + def __init__(self, streamed_response: str | None = None): + # Optionally provide a pre-defined streaming response for _perform_extraction tests + self._streamed_response = streamed_response or "{}" + self.registered_functions: dict[str, AsyncMock] = {} + + # ------------------------------------------------------------------ + # API used by VariableExtractionManager + # ------------------------------------------------------------------ + def register_function(self, name: str, func, cancel_on_interruption=True): # noqa: D401 – simple delegate + self.registered_functions[name] = func + + async def get_chat_completions(self, _context, _messages): + """Return an async generator that yields a single chunk with the full response.""" + + class _Delta: # noqa: D401 – tiny helper classes for stub response + def __init__(self, content): + self.content = content + + class _Choice: + def __init__(self, delta): + self.delta = delta + + class _Chunk: + def __init__(self, content): + self.choices = [_Choice(_Delta(content))] + + async def _stream(): + yield _Chunk(self._streamed_response) + + return _stream() + + +class DummyEngine: + """A bare-bones Engine stub exposing only what the extractor relies on.""" + + def __init__(self, llm): + self.llm = llm + self.context = OpenAILLMContext() + self._pending_function_calls = 0 + # VariableExtractionManager currently updates this private attribute + self._gathered_context: dict = {} + + +# ------------------------------------------------------------------ +# Tests +# ------------------------------------------------------------------ + + +@pytest.mark.asyncio +async def test_perform_extraction_parses_json_correctly(): + """_perform_extraction should return the parsed JSON from the LLM stream.""" + # Set dummy OpenAI API key to prevent initialization errors + with patch.dict(os.environ, {"OPENAI_API_KEY": "test-key"}): + expected_payload = {"name": "Alice", "age": 30} + llm = DummyLLM(json.dumps(expected_payload)) + engine = DummyEngine(llm) + manager = VariableExtractionManager(engine) + + # Mock the AsyncOpenAI client and its response + mock_response = AsyncMock() + mock_response.choices = [AsyncMock()] + mock_response.choices[0].message = AsyncMock() + mock_response.choices[0].message.content = json.dumps(expected_payload) + + mock_client = AsyncMock() + mock_client.chat.completions.create.return_value = mock_response + + with patch( + "api.services.workflow.pipecat_engine_variable_extractor.AsyncOpenAI", + return_value=mock_client, + ): + # Minimal set of variables to extract – the prompts themselves are irrelevant here + extraction_variables = [ + ExtractionVariableDTO( + name="name", type=VariableType.string, prompt="user name" + ), + ExtractionVariableDTO( + name="age", type=VariableType.number, prompt="user age" + ), + ] + + result = await manager._perform_extraction( + extraction_variables, parent_ctx=None, extraction_prompt="" + ) + + assert result == expected_payload + + +@pytest.mark.asyncio +async def test_perform_extraction_with_custom_system_prompt(): + """_perform_extraction should use the provided extraction_prompt as system prompt.""" + # Set dummy OpenAI API key to prevent initialization errors + with patch.dict(os.environ, {"OPENAI_API_KEY": "test-key"}): + expected_payload = {"color": "blue"} + llm = DummyLLM(json.dumps(expected_payload)) + engine = DummyEngine(llm) + manager = VariableExtractionManager(engine) + + # Mock the AsyncOpenAI client and its response + mock_response = AsyncMock() + mock_response.choices = [AsyncMock()] + mock_response.choices[0].message = AsyncMock() + mock_response.choices[0].message.content = json.dumps(expected_payload) + + mock_client = AsyncMock() + mock_client.chat.completions.create.return_value = mock_response + + with patch( + "api.services.workflow.pipecat_engine_variable_extractor.AsyncOpenAI", + return_value=mock_client, + ): + extraction_variables = [ + ExtractionVariableDTO( + name="color", type=VariableType.string, prompt="favourite color" + ) + ] + + # Call with a custom extraction prompt + custom_prompt = "You are a color extraction specialist." + result = await manager._perform_extraction( + extraction_variables, parent_ctx=None, extraction_prompt=custom_prompt + ) + + assert result == expected_payload diff --git a/api/tests/test_voicemail_detection_rtc.py b/api/tests/test_voicemail_detection_rtc.py new file mode 100644 index 0000000..90a7d7d --- /dev/null +++ b/api/tests/test_voicemail_detection_rtc.py @@ -0,0 +1,547 @@ +""" +Test voicemail detection in RTC connection flow. + +This test emulates how a call is connected using SmallWebRTC, +triggers voicemail detection, and verifies the disconnect reason. +""" + +import json +from unittest.mock import AsyncMock, Mock, patch + +import pytest +from pipecat.utils.enums import EndTaskReason + +from api.routes.rtc_offer import RTCOfferRequest, offer +from api.services.workflow.pipecat_engine_voicemail_detector import VoicemailDetector + + +@pytest.mark.asyncio +class TestVoicemailDetectionRTC: + """Test voicemail detection through RTC connection flow.""" + + async def test_voicemail_detection_full_flow(self): + """ + Test complete voicemail detection flow: + 1. RTC connection request + 2. Transport sends on_client_connected event + 3. Engine initializes with voicemail detection enabled + 4. Voicemail detector returns true + 5. Call terminates with voicemail_detected reason + 6. Transport sends on_client_disconnected event + 7. Disconnect reason is properly set + """ + # Mock user and authentication + mock_user = Mock() + mock_user.id = 1 + mock_user.organization_id = 1 + + # Mock workflow with voicemail detection enabled + mock_workflow = Mock() + mock_workflow.id = 100 + mock_workflow.workflow_definition_with_fallback = { + "edges": [], + "nodes": [ + { + "id": "start", + "type": "start", + "data": { + "detect_voicemail": True, + "system_prompt": "You are a helpful assistant", + }, + } + ], + } + + # Mock workflow run + mock_workflow_run = Mock() + mock_workflow_run.id = 200 + mock_workflow_run.is_completed = False + + # Create request + request = RTCOfferRequest( + pc_id="test_pc_123", + sdp="test_sdp_offer", + type="offer", + workflow_id=mock_workflow.id, + workflow_run_id=mock_workflow_run.id, + restart_pc=False, + call_context_vars={"test_var": "test_value"}, + ) + + # Mock dependencies + with ( + patch("api.services.auth.depends.get_user") as mock_get_user_dep, + patch("api.routes.rtc_offer.SmallWebRTCConnection") as MockWebRTCConnection, + patch("api.routes.rtc_offer.run_pipeline_smallwebrtc") as mock_run_pipeline, + ): + # Setup mocks + mock_get_user_dep.return_value = mock_user + + # Mock WebRTC connection + mock_connection = Mock() + mock_connection.pc_id = "test_pc_123" + mock_connection.initialize = AsyncMock() + mock_connection.get_answer = Mock( + return_value={ + "pc_id": "test_pc_123", + "sdp": "test_sdp_answer", + "type": "answer", + } + ) + MockWebRTCConnection.return_value = mock_connection + + # Track registered event handlers + registered_handlers = {} + + def mock_event_handler(event_name): + def decorator(func): + registered_handlers[event_name] = func + return func + + return decorator + + mock_connection.event_handler = mock_event_handler + + # Mock BackgroundTasks + mock_background_tasks = Mock() + + # Create the offer + response = await offer(request, mock_background_tasks, mock_user) + + # Verify response + assert response["pc_id"] == "test_pc_123" + assert response["type"] == "answer" + + # Verify connection was initialized + mock_connection.initialize.assert_called_once_with( + sdp="test_sdp_offer", type="offer" + ) + + # Verify background task was added + mock_background_tasks.add_task.assert_called_once() + task_args = mock_background_tasks.add_task.call_args[0] + assert task_args[0] == mock_run_pipeline + assert task_args[1] == mock_connection + assert task_args[2] == mock_workflow.id + assert task_args[3] == mock_workflow_run.id + assert task_args[4] == mock_user.id + assert task_args[5] == {"test_var": "test_value"} + + async def test_voicemail_detection_in_pipeline(self): + """Tests whether the updates happen in on_client_disconnected properly + with values set in the engine""" + # Mock components + mock_transport = AsyncMock() + mock_engine = Mock() # Use Mock instead of AsyncMock for engine + mock_engine.initialize = AsyncMock() + mock_engine.cleanup = AsyncMock() + mock_audio_buffer = AsyncMock() + mock_task = AsyncMock() + mock_aggregator = Mock() + + # Setup engine with voicemail detector + mock_voicemail_detector = AsyncMock(spec=VoicemailDetector) + mock_engine.voicemail_detector = mock_voicemail_detector + mock_engine.get_call_disposition = Mock( + return_value=EndTaskReason.VOICEMAIL_DETECTED.value + ) + mock_engine.get_gathered_context = Mock( + return_value={ + "voicemail_transcript": "Hi, you've reached John's voicemail. Please leave a message.", + "voicemail_confidence": 0.95, + } + ) + + # Mock usage metrics + mock_aggregator.get_all_usage_metrics_serialized.return_value = {} + + # Register event handlers + from api.services.pipecat.event_handlers import ( + register_transport_event_handlers, + ) + + # Track registered handlers + handlers = {} + + def track_handler(event_name): + def decorator(func): + handlers[event_name] = func + return func + + return decorator + + mock_transport.event_handler = track_handler + + # Create a mock db_client module with update_workflow_run method + mock_db_client = Mock() + mock_db_client.update_workflow_run = AsyncMock() + + with ( + patch("api.services.pipecat.event_handlers.db_client", mock_db_client), + patch( + "api.services.pipecat.event_handlers.enqueue_job", + new_callable=AsyncMock, + ) as mock_enqueue_job, + patch( + "api.services.pipecat.event_handlers.get_organization_id_from_workflow_run", + return_value=1, + ), + patch( + "api.services.pipecat.event_handlers.apply_disposition_mapping", + side_effect=lambda value, org_id: value, # Return value unchanged + ), + ): + # Register handlers + register_transport_event_handlers( + mock_transport, + workflow_run_id=123, + audio_buffer=mock_audio_buffer, + task=mock_task, + engine=mock_engine, + usage_metrics_aggregator=mock_aggregator, + ) + + # Verify handlers were registered + assert "on_client_connected" in handlers + assert "on_client_disconnected" in handlers + + # Simulate client connection + await handlers["on_client_connected"]( + mock_transport, {"id": "participant_1"} + ) + + # Verify initialization + mock_audio_buffer.start_recording.assert_called_once() + mock_engine.initialize.assert_called_once() + + # Simulate voicemail detection and disconnect + await handlers["on_client_disconnected"]( + mock_transport, {"id": "participant_1"}, None + ) + + # Verify engine cleanup + mock_engine.cleanup.assert_called_once() + + # TODO: check whether task was cancelled or not once have more + # clarity on how to handle engine disconnect vs remote hangup + # Verify task was NOT cancelled (engine disconnect) + # mock_task.cancel.assert_not_called() + + # Verify workflow run was updated with voicemail context + mock_db_client.update_workflow_run.assert_called() + call_args = mock_db_client.update_workflow_run.call_args + assert call_args[1]["run_id"] == 123 + # Check that the mapped_call_disposition was set correctly + assert ( + call_args[1]["gathered_context"]["mapped_call_disposition"] + == "voicemail_detected" + ) + + async def test_voicemail_detector_audio_processing(self): + """Test VoicemailDetector audio processing and detection logic - tests that voicemail detector + calls engine's send_end_task_frame with the correct reason and metadata""" + # Create voicemail detector + detector = VoicemailDetector(detection_duration=5.0, workflow_run_id=123) + + # Mock OpenAI client + mock_openai = AsyncMock() + mock_whisper_response = Mock() + mock_whisper_response.text = "Hi, you've reached the voicemail of John Smith. Please leave a message after the beep." + mock_openai.audio.transcriptions.create.return_value = mock_whisper_response + + mock_gpt_response = Mock() + mock_gpt_response.choices = [Mock()] + mock_gpt_response.choices[0].message.content = json.dumps( + { + "is_voicemail": True, + "confidence": 0.98, + "reasoning": "Clear voicemail greeting with request to leave message", + } + ) + mock_openai.chat.completions.create.return_value = mock_gpt_response + + # Mock engine + mock_engine = AsyncMock() + mock_engine.task = AsyncMock() + + with ( + patch( + "api.services.workflow.pipecat_engine_voicemail_detector.AsyncOpenAI", + return_value=mock_openai, + ), + patch( + "api.services.workflow.pipecat_engine_voicemail_detector.s3_fs" + ) as mock_s3, + ): + # Mock S3 upload to return None (simulating successful upload) + mock_s3.aupload_file = AsyncMock(return_value=True) + # Start detection + await detector.start_detection(mock_engine) + assert detector.is_detecting == True + + # Simulate audio data (16kHz, mono, 5 seconds) + sample_rate = 16000 + duration = 5.0 + audio_data = b"\x00\x00" * int(sample_rate * duration) # Silent audio + + # Process audio in chunks + chunk_size = 1600 # 100ms chunks + for i in range(0, len(audio_data), chunk_size): + chunk = audio_data[i : i + chunk_size] + await detector.handle_audio_data(None, chunk, sample_rate, 1) + + # Wait for detection to complete + if detector._detection_task: + await detector._detection_task + + # Verify OpenAI calls + mock_openai.audio.transcriptions.create.assert_called_once() + mock_openai.chat.completions.create.assert_called_once() + + # Verify send_end_task_frame was called with voicemail detection + mock_engine.send_end_task_frame.assert_called_once_with( + reason=EndTaskReason.VOICEMAIL_DETECTED.value, + additional_metadata={ + "voicemail_transcript": "Hi, you've reached the voicemail of John Smith. Please leave a message after the beep.", + "voicemail_confidence": 0.98, + "voicemail_reasoning": "Clear voicemail greeting with request to leave message", + "voicemail_detection_duration": 5.0, + "voicemail_audio_s3_path": "voicemail_detections/123_voicemail_98_5.wav", # S3 upload returns True, so filename is used + }, + abort_immediately=True, + ) + + async def test_voicemail_detector_no_detection(self): + """Test VoicemailDetector when voicemail is not detected.""" + # Create voicemail detector + detector = VoicemailDetector(detection_duration=5.0, workflow_run_id=124) + + # Mock OpenAI client + mock_openai = AsyncMock() + mock_whisper_response = Mock() + mock_whisper_response.text = "Hello? Hello? Can you hear me?" + mock_openai.audio.transcriptions.create.return_value = mock_whisper_response + + mock_gpt_response = Mock() + mock_gpt_response.choices = [Mock()] + mock_gpt_response.choices[0].message.content = json.dumps( + { + "is_voicemail": False, + "confidence": 0.95, + "reasoning": "Live person speaking, asking if caller can hear them", + } + ) + mock_openai.chat.completions.create.return_value = mock_gpt_response + + # Mock engine + mock_engine = AsyncMock() + mock_engine.task = AsyncMock() + + with patch( + "api.services.workflow.pipecat_engine_voicemail_detector.AsyncOpenAI", + return_value=mock_openai, + ): + # Start detection + await detector.start_detection(mock_engine) + + # Simulate audio data + sample_rate = 16000 + duration = 5.0 + audio_data = b"\x00\x00" * int(sample_rate * duration) + + # Process audio + await detector.handle_audio_data(None, audio_data, sample_rate, 1) + + # Wait for detection + if detector._detection_task: + await detector._detection_task + + # Verify send_end_task_frame was NOT called + mock_engine.send_end_task_frame.assert_not_called() + + async def test_voicemail_detector_cancellation(self): + """Test VoicemailDetector cancellation before completion.""" + # Create voicemail detector + detector = VoicemailDetector(detection_duration=10.0, workflow_run_id=125) + + # Mock engine + mock_engine = AsyncMock() + + # Start detection + await detector.start_detection(mock_engine) + assert detector.is_detecting == True + + # Cancel detection immediately + await detector.stop_detection() + assert detector._is_cancelled == True + + # Try to add audio data after cancellation + await detector.handle_audio_data(None, b"\x00\x00" * 1000, 16000, 1) + + # Verify buffer didn't grow (no audio accepted after cancellation) + assert len(detector.audio_buffer) == 0 + + async def test_disconnect_reason_propagation(self): + """Test that voicemail disconnect reason is properly propagated.""" + # Create disconnect reason info directly + disconnect_info = { + "disposition_code": EndTaskReason.VOICEMAIL_DETECTED.value, + "details": "Voicemail detected after 5 seconds of audio", + "is_remote": False, + "is_user_initiated": False, + "is_successful_transfer": False, + "transport_metadata": { + "voicemail_confidence": 0.97, + "voicemail_transcript": "You've reached voicemail...", + }, + } + + # Verify attributes + assert disconnect_info["disposition_code"] == "voicemail_detected" + assert disconnect_info["is_remote"] == False + assert disconnect_info["is_user_initiated"] == False + assert disconnect_info["is_successful_transfer"] == False + assert ( + disconnect_info["details"] == "Voicemail detected after 5 seconds of audio" + ) + assert disconnect_info["transport_metadata"]["voicemail_confidence"] == 0.97 + + async def test_voicemail_detection_end_to_end(self): + """ + Complete end-to-end test covering: + 1. on_client_connected event + 2. Engine initialization with voicemail detection + 3. Audio processing and voicemail detection + 4. Engine setting disconnect reason + 5. on_client_disconnected event + 6. Proper disconnect reason in workflow run update + """ + # Create comprehensive mocks + from api.services.pipecat.event_handlers import ( + register_transport_event_handlers, + ) + + # Mock transport + mock_transport = AsyncMock() + handlers = {} + + def track_handler(event_name): + def decorator(func): + handlers[event_name] = func + return func + + return decorator + + mock_transport.event_handler = track_handler + + # Mock audio buffer + mock_audio_buffer = Mock() + mock_audio_buffer.start_recording = AsyncMock() + mock_audio_buffer.stop_recording = AsyncMock() + + # Mock task + mock_task = AsyncMock() + + # Mock aggregator + mock_aggregator = Mock() + mock_aggregator.get_all_usage_metrics_serialized.return_value = {} + + # Create a mock engine with voicemail detection + mock_engine = Mock() + mock_engine.initialize = AsyncMock() + mock_engine.cleanup = AsyncMock() + + # Mock voicemail detector + mock_voicemail_detector = Mock() + mock_engine.voicemail_detector = mock_voicemail_detector + mock_engine._voicemail_detector = mock_voicemail_detector + + # Initially no disconnect reason + mock_engine.get_call_disposition = Mock(return_value=None) + mock_engine.get_gathered_context = Mock(return_value={}) + + # Mock db_client + mock_db_client = Mock() + mock_db_client.update_workflow_run = AsyncMock() + + with ( + patch("api.services.pipecat.event_handlers.db_client", mock_db_client), + patch( + "api.services.pipecat.event_handlers.enqueue_job", + new_callable=AsyncMock, + ) as mock_enqueue_job, + patch( + "api.services.pipecat.event_handlers.get_organization_id_from_workflow_run", + return_value=1, + ), + patch( + "api.services.pipecat.event_handlers.apply_disposition_mapping", + side_effect=lambda value, org_id: value, # Return value unchanged + ), + ): + # Register event handlers + register_transport_event_handlers( + mock_transport, + workflow_run_id=123, + audio_buffer=mock_audio_buffer, + task=mock_task, + engine=mock_engine, + usage_metrics_aggregator=mock_aggregator, + ) + + # Verify handlers were registered + assert "on_client_connected" in handlers + assert "on_client_disconnected" in handlers + + # Step 1: Client connects + await handlers["on_client_connected"]( + mock_transport, {"id": "participant_1"} + ) + + # Verify initialization + mock_audio_buffer.start_recording.assert_called_once() + mock_engine.initialize.assert_called_once() + + # Step 2-3: Simulate voicemail detection occurs + # Update engine state to reflect voicemail was detected + mock_engine.get_call_disposition = Mock( + return_value=EndTaskReason.VOICEMAIL_DETECTED.value + ) + mock_engine.get_gathered_context = Mock( + return_value={ + "voicemail_transcript": "You've reached voicemail, leave a message", + "voicemail_confidence": 0.95, + } + ) + + # Step 5: Client disconnects + await handlers["on_client_disconnected"]( + mock_transport, {"id": "participant_1"}, None + ) + + # Verify engine cleanup + mock_engine.cleanup.assert_called_once() + + # Step 6: Verify proper disconnect reason in workflow run update + mock_db_client.update_workflow_run.assert_called() + call_args = mock_db_client.update_workflow_run.call_args + + # Check the gathered context includes disconnect reason + gathered_context = call_args[1]["gathered_context"] + assert gathered_context["mapped_call_disposition"] == "voicemail_detected" + assert gathered_context["voicemail_confidence"] == 0.95 + assert ( + gathered_context["voicemail_transcript"] + == "You've reached voicemail, leave a message" + ) + + # Verify task was NOT cancelled (engine-initiated disconnect) + mock_task.cancel.assert_not_called() + + # Verify audio buffer was stopped + mock_audio_buffer.stop_recording.assert_called_once() + + # Verify background jobs were enqueued + assert ( + mock_enqueue_job.call_count >= 3 + ) # At least 3 jobs should be enqueued diff --git a/api/tests/test_workflow_routes.py b/api/tests/test_workflow_routes.py new file mode 100644 index 0000000..db7af26 --- /dev/null +++ b/api/tests/test_workflow_routes.py @@ -0,0 +1,667 @@ +""" +Tests for workflow API routes. + +This module tests the create, update, get, and validate workflow endpoints. +The fixtures for database setup, test client, and utilities are in conftest.py. +""" + +import pytest +from fastapi import status + + +@pytest.fixture +def sample_workflow_definition(): + """Sample workflow definition for testing.""" + return { + "nodes": [ + { + "id": "6581", + "type": "startCall", + "position": {"x": 427, "y": 23}, + "data": { + "prompt": "Hello, I am Abhishek from Dograh. ", + "is_static": True, + "name": "Start Call", + "is_start": True, + "invalid": False, + "validationMessage": None, + "allow_interrupt": False, + }, + "measured": {"width": 300, "height": 100}, + "selected": True, + "dragging": False, + }, + { + "id": "915", + "type": "agentNode", + "position": {"x": 305, "y": 340}, + "data": { + "prompt": "You are a voice agent whose mode of speaking is voice. Ask the user whether they want to talk to a sales guy or a customer service agent.", + "name": "Agent", + "invalid": False, + "validationMessage": None, + "allow_interrupt": False, + }, + "measured": {"width": 300, "height": 100}, + "selected": False, + "dragging": False, + }, + { + "id": "7598", + "type": "agentNode", + "position": {"x": 90, "y": 650}, + "data": { + "prompt": "You are a customer service agent whose mode of communication with the user is voice. Tell them that someone from our team will reach out to them soon", + "name": "Agent", + "invalid": False, + "validationMessage": None, + "allow_interrupt": True, + }, + "measured": {"width": 300, "height": 100}, + "selected": False, + "dragging": False, + }, + { + "id": "6919", + "type": "agentNode", + "position": {"x": 520, "y": 650}, + "data": { + "prompt": "You are a sales representative whose mode of communication with the user is voice. Tell the user that someone from our team will reach out to you soon", + "name": "Agent", + "invalid": False, + "validationMessage": None, + "allow_interrupt": True, + }, + "measured": {"width": 300, "height": 100}, + "selected": False, + "dragging": False, + }, + { + "id": "1802", + "type": "endCall", + "position": {"x": 305, "y": 960}, + "data": { + "prompt": "Thank you!", + "invalid": False, + "validationMessage": None, + "is_static": True, + "name": "End Call", + "is_end": True, + "allow_interrupt": False, + }, + "measured": {"width": 300, "height": 100}, + "selected": False, + "dragging": False, + }, + ], + "edges": [ + { + "animated": True, + "type": "custom", + "source": "915", + "target": "7598", + "id": "xy-edge__915-7598", + "selected": False, + "data": { + "condition": "The customer wants to talk to a customer service agent", + "label": "customer service agent", + "invalid": False, + "validationMessage": None, + }, + }, + { + "animated": True, + "type": "custom", + "source": "915", + "target": "6919", + "id": "xy-edge__915-6919", + "selected": False, + "data": { + "condition": "customer wants to talk to a sales representative", + "label": "sales representative", + "invalid": False, + "validationMessage": None, + }, + }, + { + "animated": True, + "type": "custom", + "source": "6581", + "target": "915", + "id": "xy-edge__6581-915", + "selected": False, + "data": { + "condition": "Always take this route", + "label": "Always take this route", + "invalid": False, + "validationMessage": None, + }, + }, + { + "animated": True, + "type": "custom", + "source": "7598", + "target": "1802", + "id": "xy-edge__7598-1802", + "selected": False, + "data": { + "condition": "end call", + "label": "end call", + "invalid": False, + "validationMessage": None, + }, + }, + { + "animated": True, + "type": "custom", + "source": "6919", + "target": "1802", + "id": "xy-edge__6919-1802", + "selected": False, + "data": { + "condition": "end call", + "label": "end call", + "invalid": False, + "validationMessage": None, + }, + }, + ], + "viewport": {"x": 0, "y": 0, "zoom": 1}, + } + + +class TestCreateWorkflow: + """Test cases for creating workflows.""" + + async def test_create_workflow_success( + self, test_client_factory, db_session, sample_workflow_definition + ): + """Test successful workflow creation.""" + # Create a test user for this test + test_user = await db_session.get_or_create_user_by_provider_id( + "test_user_create_success" + ) + + request_data = { + "name": "Test Workflow", + "workflow_definition": sample_workflow_definition, + } + + async with test_client_factory(test_user) as client: + response = await client.post("/api/v1/workflow/create", json=request_data) + + assert response.status_code == status.HTTP_200_OK + data = response.json() + + assert "id" in data + assert data["name"] == "Test Workflow" + assert data["workflow_definition"] == sample_workflow_definition + assert "created_at" in data + assert "current_definition_id" in data + + async def test_create_workflow_invalid_definition( + self, test_client_factory, db_session + ): + """Test workflow creation with invalid definition.""" + # Create a test user for this test + test_user = await db_session.get_or_create_user_by_provider_id( + "test_user_invalid_def" + ) + + request_data = { + "name": "Invalid Workflow", + "workflow_definition": {"invalid": "structure"}, + } + + async with test_client_factory(test_user) as client: + response = await client.post("/api/v1/workflow/create", json=request_data) + + # The API should still create the workflow even with invalid definition + # Validation happens in the validate endpoint + assert response.status_code == status.HTTP_200_OK + + @pytest.mark.asyncio + async def test_create_workflow_missing_name( + self, test_client_factory, db_session, sample_workflow_definition + ): + """Test workflow creation without name.""" + # Create a test user for this test + test_user = await db_session.get_or_create_user_by_provider_id( + "test_user_missing_name" + ) + + request_data = {"workflow_definition": sample_workflow_definition} + + async with test_client_factory(test_user) as client: + response = await client.post("/api/v1/workflow/create", json=request_data) + + assert response.status_code == status.HTTP_422_UNPROCESSABLE_ENTITY + + @pytest.mark.asyncio + async def test_create_workflow_missing_definition( + self, test_client_factory, db_session + ): + """Test workflow creation without workflow definition.""" + # Create a test user for this test + test_user = await db_session.get_or_create_user_by_provider_id( + "test_user_missing_definition" + ) + + request_data = {"name": "Test Workflow"} + + async with test_client_factory(test_user) as client: + response = await client.post("/api/v1/workflow/create", json=request_data) + + assert response.status_code == status.HTTP_422_UNPROCESSABLE_ENTITY + + +class TestGetWorkflows: + """Test cases for fetching workflows.""" + + @pytest.mark.asyncio + async def test_get_all_workflows_empty(self, test_client_factory, db_session): + """Test getting all workflows when none exist.""" + # Create a test user within the test function + test_user = await db_session.get_or_create_user_by_provider_id( + "test_user_empty_workflows" + ) + + # Create a test client for this specific user + async with test_client_factory(test_user) as client: + response = await client.get("/api/v1/workflow/fetch") + + assert response.status_code == status.HTTP_200_OK + data = response.json() + assert isinstance(data, list) + assert len(data) == 0 + + @pytest.mark.asyncio + async def test_get_all_workflows_with_data( + self, test_client_factory, db_session, sample_workflow_definition + ): + """Test getting all workflows when some exist.""" + # Create a test user within the test function + test_user = await db_session.get_or_create_user_by_provider_id( + "test_user_with_workflows" + ) + + # Create a test client for this specific user + async with test_client_factory(test_user) as client: + # Create a workflow first + create_response = await client.post( + "/api/v1/workflow/create", + json={ + "name": "Test Workflow 1", + "workflow_definition": sample_workflow_definition, + }, + ) + assert create_response.status_code == status.HTTP_200_OK + + # Create another workflow + create_response2 = await client.post( + "/api/v1/workflow/create", + json={ + "name": "Test Workflow 2", + "workflow_definition": sample_workflow_definition, + }, + ) + assert create_response2.status_code == status.HTTP_200_OK + + # Get all workflows + response = await client.get("/api/v1/workflow/fetch") + + assert response.status_code == status.HTTP_200_OK + data = response.json() + assert isinstance(data, list) + assert len(data) == 2 + + # Check that both workflows are returned + workflow_names = [w["name"] for w in data] + assert "Test Workflow 1" in workflow_names + assert "Test Workflow 2" in workflow_names + + @pytest.mark.asyncio + async def test_get_specific_workflow( + self, test_client_factory, db_session, sample_workflow_definition + ): + """Test getting a specific workflow by ID.""" + # Create a test user for this test + test_user = await db_session.get_or_create_user_by_provider_id( + "test_user_specific_workflow" + ) + + async with test_client_factory(test_user) as client: + # Create a workflow first + create_response = await client.post( + "/api/v1/workflow/create", + json={ + "name": "Specific Workflow", + "workflow_definition": sample_workflow_definition, + }, + ) + assert create_response.status_code == status.HTTP_200_OK + created_workflow = create_response.json() + workflow_id = created_workflow["id"] + + # Get the specific workflow + response = await client.get( + f"/api/v1/workflow/fetch?workflow_id={workflow_id}" + ) + + assert response.status_code == status.HTTP_200_OK + data = response.json() + + assert data["id"] == workflow_id + assert data["name"] == "Specific Workflow" + assert data["workflow_definition"] == sample_workflow_definition + + @pytest.mark.asyncio + async def test_get_nonexistent_workflow(self, test_client_factory, db_session): + """Test getting a workflow that doesn't exist.""" + # Create a test user for this test + test_user = await db_session.get_or_create_user_by_provider_id( + "test_user_nonexistent" + ) + + async with test_client_factory(test_user) as client: + response = await client.get("/api/v1/workflow/fetch?workflow_id=99999") + + assert response.status_code == status.HTTP_404_NOT_FOUND + assert "not found" in response.json()["detail"].lower() + + +class TestUpdateWorkflow: + """Test cases for updating workflows.""" + + @pytest.mark.asyncio + async def test_update_workflow_name_only( + self, test_client_factory, db_session, sample_workflow_definition + ): + """Test updating only the workflow name.""" + # Create a test user for this test + test_user = await db_session.get_or_create_user_by_provider_id( + "test_user_update_name" + ) + + async with test_client_factory(test_user) as client: + # Create a workflow first + create_response = await client.post( + "/api/v1/workflow/create", + json={ + "name": "Original Name", + "workflow_definition": sample_workflow_definition, + }, + ) + assert create_response.status_code == status.HTTP_200_OK + workflow_id = create_response.json()["id"] + + # Update the workflow name + update_data = {"name": "Updated Name"} + response = await client.put( + f"/api/v1/workflow/{workflow_id}", json=update_data + ) + + assert response.status_code == status.HTTP_200_OK + data = response.json() + + assert data["id"] == workflow_id + assert data["name"] == "Updated Name" + assert ( + data["workflow_definition"] == sample_workflow_definition + ) # Should remain unchanged + + @pytest.mark.asyncio + async def test_update_workflow_name_and_definition( + self, test_client_factory, db_session, sample_workflow_definition + ): + """Test updating both workflow name and definition.""" + # Create a test user for this test + test_user = await db_session.get_or_create_user_by_provider_id( + "test_user_update_both" + ) + + async with test_client_factory(test_user) as client: + # Create a workflow first + create_response = await client.post( + "/api/v1/workflow/create", + json={ + "name": "Original Name", + "workflow_definition": sample_workflow_definition, + }, + ) + assert create_response.status_code == status.HTTP_200_OK + workflow_id = create_response.json()["id"] + + # Create new workflow definition + new_definition = { + "nodes": [ + { + "id": "start", + "type": "start", + "position": {"x": 50, "y": 50}, + "data": {"label": "New Start"}, + } + ], + "edges": [], + } + + # Update the workflow + update_data = { + "name": "Updated Name", + "workflow_definition": new_definition, + } + response = await client.put( + f"/api/v1/workflow/{workflow_id}", json=update_data + ) + + assert response.status_code == status.HTTP_200_OK + data = response.json() + + assert data["id"] == workflow_id + assert data["name"] == "Updated Name" + assert data["workflow_definition"] == new_definition + + @pytest.mark.asyncio + async def test_update_nonexistent_workflow(self, test_client_factory, db_session): + """Test updating a workflow that doesn't exist.""" + # Create a test user for this test + test_user = await db_session.get_or_create_user_by_provider_id( + "test_user_update_nonexistent" + ) + + update_data = {"name": "Updated Name"} + async with test_client_factory(test_user) as client: + response = await client.put("/api/v1/workflow/99999", json=update_data) + + assert response.status_code == status.HTTP_404_NOT_FOUND + assert "not found" in response.json()["detail"].lower() + + @pytest.mark.asyncio + async def test_update_workflow_missing_name( + self, test_client_factory, db_session, sample_workflow_definition + ): + """Test updating a workflow without providing a name.""" + # Create a test user for this test + test_user = await db_session.get_or_create_user_by_provider_id( + "test_user_update_missing_name" + ) + + async with test_client_factory(test_user) as client: + # Create a workflow first + create_response = await client.post( + "/api/v1/workflow/create", + json={ + "name": "Original Name", + "workflow_definition": sample_workflow_definition, + }, + ) + assert create_response.status_code == status.HTTP_200_OK + workflow_id = create_response.json()["id"] + + # Try to update without providing name + update_data = {"workflow_definition": sample_workflow_definition} + response = await client.put( + f"/api/v1/workflow/{workflow_id}", json=update_data + ) + + assert response.status_code == status.HTTP_422_UNPROCESSABLE_ENTITY + + +class TestWorkflowValidation: + """Test cases for workflow validation endpoint.""" + + @pytest.mark.asyncio + async def test_validate_workflow_success( + self, test_client_factory, db_session, sample_workflow_definition + ): + """Test successful workflow validation.""" + # Create a test user for this test + test_user = await db_session.get_or_create_user_by_provider_id( + "test_user_validate_success" + ) + + async with test_client_factory(test_user) as client: + # Create a workflow first + create_response = await client.post( + "/api/v1/workflow/create", + json={ + "name": "Valid Workflow", + "workflow_definition": sample_workflow_definition, + }, + ) + assert create_response.status_code == status.HTTP_200_OK + workflow_id = create_response.json()["id"] + + # Validate the workflow + response = await client.post(f"/api/v1/workflow/{workflow_id}/validate") + + assert response.status_code == status.HTTP_200_OK + data = response.json() + + assert data["is_valid"] is True + assert data["errors"] == [] + + @pytest.mark.asyncio + async def test_validate_nonexistent_workflow(self, test_client_factory, db_session): + """Test validating a workflow that doesn't exist.""" + # Create a test user for this test + test_user = await db_session.get_or_create_user_by_provider_id( + "test_user_validate_nonexistent" + ) + + async with test_client_factory(test_user) as client: + response = await client.post("/api/v1/workflow/99999/validate") + + assert response.status_code == status.HTTP_404_NOT_FOUND + assert "not found" in response.json()["detail"].lower() + + +class TestWorkflowIntegration: + """Integration tests for workflow operations.""" + + @pytest.mark.asyncio + async def test_full_workflow_lifecycle( + self, test_client_factory, db_session, sample_workflow_definition + ): + """Test the complete lifecycle of a workflow: create, get, update, validate.""" + # Create a test user for this test + test_user = await db_session.get_or_create_user_by_provider_id( + "test_user_lifecycle" + ) + + async with test_client_factory(test_user) as client: + # 1. Create workflow + create_response = await client.post( + "/api/v1/workflow/create", + json={ + "name": "Lifecycle Test Workflow", + "workflow_definition": sample_workflow_definition, + }, + ) + assert create_response.status_code == status.HTTP_200_OK + workflow_id = create_response.json()["id"] + + # 2. Get the created workflow + get_response = await client.get( + f"/api/v1/workflow/fetch?workflow_id={workflow_id}" + ) + assert get_response.status_code == status.HTTP_200_OK + workflow_data = get_response.json() + assert workflow_data["name"] == "Lifecycle Test Workflow" + + # 3. Add a new node in the workflow definition + new_node = { + "id": "6919_new", + "type": "agentNode", + "position": {"x": 520, "y": 650}, + "data": { + "prompt": "Something new", + "name": "Agent", + "invalid": False, + "validationMessage": None, + "allow_interrupt": True, + }, + "measured": {"width": 300, "height": 100}, + "selected": False, + "dragging": False, + } + new_edges = [ + { + "source": "6919", + "target": "6919_new", + "id": "xy-edge__6919-6919_new", + "data": { + "condition": "Always take this route", + "label": "Always take this route", + "invalid": False, + "validationMessage": None, + }, + }, + { + "source": "6919_new", + "target": "1802", + "id": "xy-edge__6919_new-1802", + "data": { + "condition": "Always take this route", + "label": "Always take this route", + "invalid": False, + "validationMessage": None, + }, + }, + ] + new_definition = { + "nodes": [ + *sample_workflow_definition["nodes"], + new_node, + ], + "edges": [ + *sample_workflow_definition["edges"], + *new_edges, + ], + } + + update_response = await client.put( + f"/api/v1/workflow/{workflow_id}", + json={ + "name": "Updated Lifecycle Workflow", + "workflow_definition": new_definition, + }, + ) + assert update_response.status_code == status.HTTP_200_OK + assert update_response.json()["name"] == "Updated Lifecycle Workflow" + + # 4. Validate the updated workflow + validate_response = await client.post( + f"/api/v1/workflow/{workflow_id}/validate" + ) + assert validate_response.status_code == status.HTTP_200_OK + assert validate_response.json()["is_valid"] is True + + # 5. Verify the update by getting the workflow again + final_get_response = await client.get( + f"/api/v1/workflow/fetch?workflow_id={workflow_id}" + ) + assert final_get_response.status_code == status.HTTP_200_OK + final_data = final_get_response.json() + assert final_data["name"] == "Updated Lifecycle Workflow" + assert final_data["workflow_definition"] == new_definition diff --git a/api/utils/api_key.py b/api/utils/api_key.py new file mode 100644 index 0000000..0c8df4c --- /dev/null +++ b/api/utils/api_key.py @@ -0,0 +1,31 @@ +import hashlib +import secrets +from typing import Tuple + + +def generate_api_key() -> Tuple[str, str, str]: + """Generate a new API key with its hash and prefix. + + Returns: + Tuple of (raw_api_key, key_hash, key_prefix) + - raw_api_key: The actual API key to give to the user + - key_hash: SHA256 hash of the key for storage + - key_prefix: First 8 characters for display purposes + """ + raw_api_key = f"dgr_{secrets.token_urlsafe(32)}" + key_hash = hashlib.sha256(raw_api_key.encode()).hexdigest() + key_prefix = raw_api_key[:8] + + return raw_api_key, key_hash, key_prefix + + +def hash_api_key(raw_api_key: str) -> str: + """Hash an API key for comparison. + + Args: + raw_api_key: The raw API key to hash + + Returns: + SHA256 hash of the API key + """ + return hashlib.sha256(raw_api_key.encode()).hexdigest() diff --git a/api/utils/audio_converter.py b/api/utils/audio_converter.py new file mode 100644 index 0000000..a52b3ed --- /dev/null +++ b/api/utils/audio_converter.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python3 +"""Utility script to convert audio file sample rates using Pipecat's resampler.""" + +import asyncio +import sys +from pathlib import Path + +import numpy as np +import soundfile as sf + +# Add pipecat to path +sys.path.insert(0, str(Path(__file__).parent.parent.parent.parent / "pipecat" / "src")) + +from pipecat.audio.utils import create_file_resampler + + +async def convert_audio_sample_rate(input_path: str, output_sample_rates: list[int]): + """Convert an audio file to different sample rates. + + Args: + input_path: Path to the input audio file + output_sample_rates: List of target sample rates to convert to + """ + input_file = Path(input_path) + if not input_file.exists(): + print(f"Error: Input file '{input_path}' not found") + return + + # Load the audio file using soundfile + print(f"Loading audio file: {input_path}") + audio_data, original_sample_rate = sf.read(input_path, dtype="int16") + + print(f"Original sample rate: {original_sample_rate} Hz") + print(f"Shape: {audio_data.shape}") + print(f"Duration: {len(audio_data) / original_sample_rate:.2f} seconds") + + # Convert to mono if stereo + if len(audio_data.shape) > 1 and audio_data.shape[1] > 1: + print("Converting to mono...") + audio_data = np.mean(audio_data, axis=1).astype(np.int16) + + # Convert numpy array to bytes for resampler + raw_audio = audio_data.tobytes() + + # Create resampler + resampler = create_file_resampler() + + # Convert to each target sample rate + for target_rate in output_sample_rates: + print(f"\nConverting to {target_rate} Hz...") + + # Resample the audio + resampled_audio = await resampler.resample( + raw_audio, original_sample_rate, target_rate + ) + + # Convert bytes back to numpy array + resampled_data = np.frombuffer(resampled_audio, dtype=np.int16) + + # Generate output filename + output_name = input_file.stem.replace("24000", str(target_rate)) + if "24000" not in input_file.stem: + output_name = f"{input_file.stem}-{target_rate}-mono" + + # Save as MP3 using ffmpeg if available, otherwise WAV + output_path = input_file.parent / f"{output_name}.mp3" + wav_path = input_file.parent / f"{output_name}.wav" + + # First save as WAV + sf.write(wav_path, resampled_data, target_rate, subtype="PCM_16") + print(f"Saved WAV: {wav_path}") + + +async def main(): + """Main function to convert the office ambience file.""" + input_file = "/Users/abhishekkumar/Projects/dograh/dograh/api/assets/office-ambience-24000-mono.mp3" + target_rates = [8000, 16000] + + await convert_audio_sample_rate(input_file, target_rates) + print("\nConversion complete!") + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/api/utils/template_renderer.py b/api/utils/template_renderer.py new file mode 100644 index 0000000..fc27d34 --- /dev/null +++ b/api/utils/template_renderer.py @@ -0,0 +1,51 @@ +"""Common template rendering utility.""" + +import re +from typing import Any, Dict + + +def render_template(template_str: str, template_var_mapping: Dict[str, Any]) -> str: # noqa: C901 – complex but self-contained + """Replace template placeholders in *template_str* with values from *template_var_mapping*. + + Supported syntax: + * ``{{ variable_name }}`` + * ``{{ variable_name | fallback }}`` + * ``{{ variable_name | fallback:default_value }}`` + + If the variable is undefined and a *fallback* filter is specified the value + of *default_value* (or the *variable_name* itself if no default is given) + is used instead. + """ + + if not template_str: + return template_str + + # Regex matches e.g. ``{{ name }}``, ``{{ name | fallback }}``, ``{{ name | fallback:John }}`` + pattern = r"\{\{\s*([^|\s}]+)(?:\s*\|\s*([^:}]+)(?::([^}]+))?)?\s*\}\}" + + def _replace(match: re.Match[str]) -> str: # type: ignore[type-arg] + variable_name = match.group(1).strip() + filter_name = match.group(2).strip() if match.group(2) else None + filter_value = match.group(3).strip() if match.group(3) else None + + # Pull value from context + value = template_var_mapping.get(variable_name) + + # Apply filters + if filter_name == "fallback": + if value is None or value == "": + # Use explicit default value or a title-cased variable name. + value = ( + filter_value if filter_value is not None else variable_name.title() + ) + + # Convert *None* to an empty string so that re.sub replacement works. + return str(value) if value is not None else "" + + # Replace template variables + result = re.sub(pattern, _replace, template_str) + + # Handle line breaks (convert literal \n to actual newlines) + result = result.replace("\\n", "\n") + + return result diff --git a/api/utils/worker.py b/api/utils/worker.py new file mode 100644 index 0000000..1996e18 --- /dev/null +++ b/api/utils/worker.py @@ -0,0 +1,63 @@ +"""Utilities for worker process identification.""" + +import multiprocessing +import os + +from loguru import logger + + +def get_worker_id() -> int: + """Get the current worker ID from environment or process name. + + Returns: + Worker ID (0-based index), or 0 if not in a worker process. + """ + # Check for custom ASGI_WORKER_ID (for future compatibility) + worker_id = os.getenv("ASGI_WORKER_ID") + if worker_id: + return int(worker_id) + + # Debug log the process name to understand worker identification + process_name = multiprocessing.current_process().name + + # Try to extract worker number from process name + # Uvicorn with --workers creates processes like "SpawnProcess-1", "SpawnProcess-2", etc. + # TODO FIXME: If a worker process crashes and uvicorn creates a new process, + # it assigns ID which may be beyond NUM_FASTAPI_WORKERS. Example: if we have + # 2 fastapi workers configured, and one of them dies, we can get a process name with + # SpawnProcess-3 which is bad + if "SpawnProcess" in process_name: + try: + # Extract the number after "SpawnProcess-" + worker_num = int(process_name.split("-")[-1]) + # Convert to 0-based index + return worker_num - 1 + except (ValueError, IndexError): + logger.warning( + f"Could not extract worker ID from process name: {process_name}" + ) + + # Gunicorn creates workers with names like "Worker-1", "Worker-2", etc. + if "Worker" in process_name: + try: + # Extract the number after "Worker-" + worker_num = int(process_name.split("-")[-1]) + # Convert to 0-based index + return worker_num - 1 + except (ValueError, IndexError): + logger.warning( + f"Could not extract worker ID from process name: {process_name}" + ) + + # Not in a worker process (main process or single-process mode) + return 0 + + +def is_worker_process() -> bool: + """Check if we're running in a worker process (not the main process). + + Returns: + True if in a worker process, False if in main process or single-process mode. + """ + process_name = multiprocessing.current_process().name + return "SpawnProcess" in process_name or "Worker" in process_name diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..e66c522 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,206 @@ +services: + postgres: + image: postgres:17 + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: postgres + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + ports: + - "5432:5432" + volumes: + - postgres_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 3s + timeout: 3s + retries: 10 + networks: + - app-network + + redis: + image: redis:7 + ports: + - "6379:6379" + command: > + --requirepass redissecret + volumes: + - redis_data:/data + healthcheck: + test: ["CMD", "redis-cli", "-a", "redissecret", "ping"] + interval: 3s + timeout: 10s + retries: 10 + networks: + - app-network + + minio: + image: minio/minio + container_name: minio + command: server /data --console-address ":9001" + environment: + MINIO_ROOT_USER: minioadmin + MINIO_ROOT_PASSWORD: minioadmin + ports: + - "127.0.0.1:9000:9000" # Bind to localhost explicitly + - "127.0.0.1:9001:9001" + volumes: + - minio-data:/data + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] + interval: 10s + timeout: 5s + retries: 5 + networks: + - app-network + + api: + image: chewieee/dograh-api:v7 + volumes: + - shared-tmp:/tmp + environment: + # Core application config + ENVIRONMENT: "local" + LOG_LEVEL: "INFO" + + # Database configuration (using containerized postgres) + DATABASE_URL: "postgresql+asyncpg://postgres:postgres@postgres:5432/postgres" + + # Redis configuration (using containerized redis) + REDIS_URL: "redis://:redissecret@redis:6379" + + # Storage configuration - using local MinIO + ENABLE_AWS_S3: "false" + + # MinIO + MINIO_ENDPOINT: "minio:9000" + MINIO_ACCESS_KEY: "minioadmin" + MINIO_SECRET_KEY: "minioadmin" + MINIO_BUCKET: "voice-audio" + MINIO_SECURE: "false" + + MPS_API_URL: "https://dograh.a.pinggy.link" + + # Langfuse + ENABLE_TRACING: "false" + # LANGFUSE_SECRET_KEY: "" + # LANGFUSE_PUBLIC_KEY: "" + # LANGFUSE_HOST: "https://langfuse.dograh.com" + + # Sentry + ENABLE_SETRY: "false" + SENTRY_DSN: "" + + ports: + - "8000:8000" + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_healthy + minio: + condition: service_healthy + command: > + bash -c " + cd /app/api && + alembic upgrade head && + uvicorn api.app:app --host 0.0.0.0 --port 8000 + " + healthcheck: + test: + [ + "CMD-SHELL", + 'python -c "import urllib.request; urllib.request.urlopen(''http://localhost:8000/api/v1/health'').read()"', + ] + interval: 30s + timeout: 10s + retries: 3 + start_period: 60s + networks: + - app-network + + arq-worker: + image: chewieee/dograh-api:v7 + volumes: + - shared-tmp:/tmp + environment: + # Core application config + ENVIRONMENT: "local" + LOG_LEVEL: "INFO" + + # Database configuration (using containerized postgres) + DATABASE_URL: "postgresql+asyncpg://postgres:postgres@postgres:5432/postgres" + + # Redis configuration (using containerized redis) + REDIS_URL: "redis://:redissecret@redis:6379" + + # Storage configuration - using local MinIO + ENABLE_AWS_S3: "false" + + # MinIO + MINIO_ENDPOINT: "minio:9000" + MINIO_ACCESS_KEY: "minioadmin" + MINIO_SECRET_KEY: "minioadmin" + MINIO_BUCKET: "voice-audio" + MINIO_SECURE: "false" + + # Sentry + ENABLE_SETRY: "false" + SENTRY_DSN: "" + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_healthy + networks: + - app-network + + ui: + image: chewieee/dograh-ui:v10 + environment: + NEXT_PUBLIC_NODE_ENV: "local" + NEXT_PUBLIC_AUTH_PROVIDER: "local" + # Client-side URL (from browser) + NEXT_PUBLIC_BACKEND_URL: "http://localhost:8000" + # Server-side URL (SSR, internal Docker network) + BACKEND_URL: "http://api:8000" + + # Posthog + NEXT_PUBLIC_ENABLE_POSTHOG: "true" + NEXT_PUBLIC_POSTHOG_KEY: "phc_st6dverimoydkpM5m0a9aeAr8znUYWznEaQa8v80E2D" + + # Sentry + NEXT_PUBLIC_ENABLE_SENTRY: "false" + ports: + - "3000:3000" + depends_on: + api: + condition: service_healthy + healthcheck: + test: + [ + "CMD-SHELL", + "wget --no-verbose --tries=1 --spider http://localhost:3000 || exit 1", + ] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + networks: + - app-network + +volumes: + postgres_data: + redis_data: + minio-data: + driver: local + shared-tmp: + driver: local + +networks: + app-network: + driver: bridge diff --git a/tests/test_audio_chunk_size.py b/tests/test_audio_chunk_size.py new file mode 100644 index 0000000..d7e6b49 --- /dev/null +++ b/tests/test_audio_chunk_size.py @@ -0,0 +1,208 @@ +"""Tests for audio chunk size calculations to ensure robustness against upstream changes.""" + +import pytest + +from pipecat.audio.audio_utils import ( + AudioEncoding, + calculate_audio_bytes_per_sample, + calculate_chunk_size_bytes, + calculate_duration_ms, + get_audio_encoding, +) + + +class TestAudioEncoding: + """Test audio encoding detection from metadata.""" + + def test_get_audio_encoding_pcm_default(self): + """Test that PCM is the default encoding.""" + assert get_audio_encoding({}) == AudioEncoding.PCM + assert get_audio_encoding({"audio_encoding": ""}) == AudioEncoding.PCM + assert get_audio_encoding({"audio_encoding": "unknown"}) == AudioEncoding.PCM + + def test_get_audio_encoding_ulaw(self): + """Test μ-law encoding detection.""" + assert get_audio_encoding({"audio_encoding": "ulaw"}) == AudioEncoding.ULAW + assert get_audio_encoding({"audio_encoding": "ULAW"}) == AudioEncoding.ULAW + assert get_audio_encoding({"audio_encoding": "Ulaw"}) == AudioEncoding.ULAW + + def test_get_audio_encoding_alaw(self): + """Test A-law encoding detection.""" + assert get_audio_encoding({"audio_encoding": "alaw"}) == AudioEncoding.ALAW + assert get_audio_encoding({"audio_encoding": "ALAW"}) == AudioEncoding.ALAW + + +class TestAudioBytesPerSample: + """Test bytes per sample calculation for different encodings.""" + + def test_pcm_bytes_per_sample(self): + """Test PCM uses 2 bytes per sample.""" + assert calculate_audio_bytes_per_sample(AudioEncoding.PCM) == 2 + + def test_ulaw_bytes_per_sample(self): + """Test μ-law uses 1 byte per sample.""" + assert calculate_audio_bytes_per_sample(AudioEncoding.ULAW) == 1 + + def test_alaw_bytes_per_sample(self): + """Test A-law uses 1 byte per sample.""" + assert calculate_audio_bytes_per_sample(AudioEncoding.ALAW) == 1 + + +class TestChunkSizeCalculation: + """Test chunk size calculations for various configurations.""" + + def test_pcm_8khz_20ms_mono(self): + """Test PCM 8kHz 20ms mono chunk size.""" + chunk_size = calculate_chunk_size_bytes(8000, 20, 1, AudioEncoding.PCM) + assert chunk_size == 320 # 8000/1000 * 20 * 1 * 2 + + def test_ulaw_8khz_20ms_mono(self): + """Test μ-law 8kHz 20ms mono chunk size.""" + chunk_size = calculate_chunk_size_bytes(8000, 20, 1, AudioEncoding.ULAW) + assert chunk_size == 160 # 8000/1000 * 20 * 1 * 1 + + def test_pcm_16khz_10ms_mono(self): + """Test PCM 16kHz 10ms mono chunk size.""" + chunk_size = calculate_chunk_size_bytes(16000, 10, 1, AudioEncoding.PCM) + assert chunk_size == 320 # 16000/1000 * 10 * 1 * 2 + + def test_pcm_44100hz_10ms_stereo(self): + """Test PCM 44.1kHz 10ms stereo chunk size.""" + chunk_size = calculate_chunk_size_bytes(44100, 10, 2, AudioEncoding.PCM) + assert chunk_size == 1764 # 44100/1000 * 10 * 2 * 2 + + def test_different_durations(self): + """Test various durations for consistency.""" + # 10ms chunks + assert calculate_chunk_size_bytes(8000, 10, 1, AudioEncoding.PCM) == 160 + assert calculate_chunk_size_bytes(8000, 10, 1, AudioEncoding.ULAW) == 80 + + # 20ms chunks + assert calculate_chunk_size_bytes(8000, 20, 1, AudioEncoding.PCM) == 320 + assert calculate_chunk_size_bytes(8000, 20, 1, AudioEncoding.ULAW) == 160 + + # 40ms chunks + assert calculate_chunk_size_bytes(8000, 40, 1, AudioEncoding.PCM) == 640 + assert calculate_chunk_size_bytes(8000, 40, 1, AudioEncoding.ULAW) == 320 + + +class TestDurationCalculation: + """Test duration calculation from byte count.""" + + def test_pcm_duration_calculation(self): + """Test duration calculation for PCM audio.""" + # 320 bytes of 8kHz mono PCM should be 20ms + duration = calculate_duration_ms(320, 8000, 1, AudioEncoding.PCM) + assert duration == 20.0 + + # 160 bytes of 8kHz mono PCM should be 10ms + duration = calculate_duration_ms(160, 8000, 1, AudioEncoding.PCM) + assert duration == 10.0 + + def test_ulaw_duration_calculation(self): + """Test duration calculation for μ-law audio.""" + # 160 bytes of 8kHz mono μ-law should be 20ms + duration = calculate_duration_ms(160, 8000, 1, AudioEncoding.ULAW) + assert duration == 20.0 + + # 80 bytes of 8kHz mono μ-law should be 10ms + duration = calculate_duration_ms(80, 8000, 1, AudioEncoding.ULAW) + assert duration == 10.0 + + def test_round_trip_consistency(self): + """Test that chunk size and duration calculations are consistent.""" + test_cases = [ + (8000, 20, 1, AudioEncoding.PCM), + (8000, 20, 1, AudioEncoding.ULAW), + (16000, 10, 1, AudioEncoding.PCM), + (44100, 10, 2, AudioEncoding.PCM), + ] + + for sample_rate, duration_ms, channels, encoding in test_cases: + chunk_size = calculate_chunk_size_bytes( + sample_rate, duration_ms, channels, encoding + ) + calculated_duration = calculate_duration_ms( + chunk_size, sample_rate, channels, encoding + ) + assert abs(calculated_duration - duration_ms) < 0.1, ( + f"Round trip failed for {sample_rate}Hz {duration_ms}ms {channels}ch {encoding}: " + f"expected {duration_ms}ms, got {calculated_duration}ms" + ) + + +class TestRobustnessAgainstUpstreamChanges: + """Test scenarios that ensure our code is robust against upstream changes.""" + + def test_chunk_size_independence(self): + """Test that our calculations don't depend on upstream PCM assumptions.""" + # Simulate what upstream calculates for PCM + upstream_sample_rate = 8000 + upstream_channels = 1 + upstream_10ms_chunks = 2 # 20ms total + + # Upstream calculation (assumes PCM with 2 bytes per sample) + upstream_audio_bytes_10ms = ( + int(upstream_sample_rate / 100) * upstream_channels * 2 + ) + upstream_chunk_size = upstream_audio_bytes_10ms * upstream_10ms_chunks + + # Our calculation for PCM should match upstream + our_pcm_chunk_size = calculate_chunk_size_bytes( + upstream_sample_rate, + upstream_10ms_chunks * 10, + upstream_channels, + AudioEncoding.PCM, + ) + assert our_pcm_chunk_size == upstream_chunk_size + + # Our calculation for μ-law should be different + our_ulaw_chunk_size = calculate_chunk_size_bytes( + upstream_sample_rate, + upstream_10ms_chunks * 10, + upstream_channels, + AudioEncoding.ULAW, + ) + assert our_ulaw_chunk_size == upstream_chunk_size // 2 + + def test_various_upstream_configurations(self): + """Test that our calculations work correctly for various upstream configs.""" + configurations = [ + # (sample_rate, channels, 10ms_chunks) + (8000, 1, 1), # 10ms chunks + (8000, 1, 2), # 20ms chunks + (8000, 1, 4), # 40ms chunks + (16000, 1, 2), # 16kHz, 20ms + (24000, 1, 2), # 24kHz, 20ms + (44100, 2, 1), # 44.1kHz stereo, 10ms + ] + + for sample_rate, channels, chunks_10ms in configurations: + # Simulate upstream PCM calculation + upstream_bytes_10ms = int(sample_rate / 100) * channels * 2 + upstream_chunk_size = upstream_bytes_10ms * chunks_10ms + + # Our calculations + duration_ms = chunks_10ms * 10 + + # PCM should match upstream + pcm_size = calculate_chunk_size_bytes( + sample_rate, duration_ms, channels, AudioEncoding.PCM + ) + assert pcm_size == upstream_chunk_size, ( + f"PCM mismatch for {sample_rate}Hz {channels}ch {duration_ms}ms: " + f"expected {upstream_chunk_size}, got {pcm_size}" + ) + + # μ-law should be half of PCM + ulaw_size = calculate_chunk_size_bytes( + sample_rate, duration_ms, channels, AudioEncoding.ULAW + ) + assert ulaw_size == upstream_chunk_size // 2, ( + f"μ-law mismatch for {sample_rate}Hz {channels}ch {duration_ms}ms: " + f"expected {upstream_chunk_size // 2}, got {ulaw_size}" + ) + + +if __name__ == "__main__": + pytest.main([__file__, "-v"]) diff --git a/tests/test_stasis_audio_handling.py b/tests/test_stasis_audio_handling.py new file mode 100644 index 0000000..2c5f87d --- /dev/null +++ b/tests/test_stasis_audio_handling.py @@ -0,0 +1,178 @@ +"""Tests specific to Stasis RTP audio handling to ensure correct μ-law processing.""" + +import pytest +from api.services.telephony.stasis_rtp_serializer import StasisRTPFrameSerializer + +from pipecat.audio.audio_utils import AudioEncoding, calculate_chunk_size_bytes +from pipecat.frames.frames import TTSAudioRawFrame + + +class TestStasisAudioFlow: + """Test the complete audio flow for Stasis RTP transport.""" + + def test_elevenlabs_ulaw_metadata(self): + """Test that ElevenLabs μ-law audio frames have correct metadata.""" + # Create a frame as ElevenLabs would + audio_data = b"\xff" * 160 # 160 bytes of μ-law silence + frame = TTSAudioRawFrame(audio=audio_data, sample_rate=8000, num_channels=1) + frame.metadata["audio_encoding"] = "ulaw" + + # Verify metadata + assert frame.metadata.get("audio_encoding") == "ulaw" + assert len(frame.audio) == 160 # 20ms of 8kHz μ-law + + @pytest.mark.asyncio + async def test_serializer_passthrough_for_ulaw(self): + """Test that StasisRTPFrameSerializer passes through μ-law audio.""" + serializer = StasisRTPFrameSerializer() + + # Create a μ-law frame + ulaw_data = b"\xff" * 160 + frame = TTSAudioRawFrame(audio=ulaw_data, sample_rate=8000, num_channels=1) + frame.metadata["audio_encoding"] = "ulaw" + + # Serialize should pass through without conversion + result = await serializer.serialize(frame) + + assert result == ulaw_data # Should be unchanged + assert len(result) == 160 + + def test_chunk_size_for_stasis_configuration(self): + """Test chunk size calculation for typical Stasis configurations.""" + # Stasis typically uses 20ms packets at 8kHz + + # PCM calculation (what upstream assumes) + pcm_chunk_size = calculate_chunk_size_bytes( + sample_rate=8000, duration_ms=20, num_channels=1, encoding=AudioEncoding.PCM + ) + assert pcm_chunk_size == 320 + + # μ-law calculation (what we actually need) + ulaw_chunk_size = calculate_chunk_size_bytes( + sample_rate=8000, + duration_ms=20, + num_channels=1, + encoding=AudioEncoding.ULAW, + ) + assert ulaw_chunk_size == 160 + + # The ratio should always be 2:1 for PCM:μ-law + assert pcm_chunk_size == ulaw_chunk_size * 2 + + def test_rtp_packet_timing(self): + """Test that RTP packet timing is correct for μ-law audio.""" + # For 8kHz μ-law: + # - 20ms = 160 bytes + # - RTP timestamp increments by 160 for each packet + + sample_rate = 8000 + packet_duration_ms = 20 + + # Calculate bytes per packet + bytes_per_packet = calculate_chunk_size_bytes( + sample_rate, packet_duration_ms, 1, AudioEncoding.ULAW + ) + + # RTP timestamp increment should equal samples per packet + samples_per_packet = int(sample_rate * packet_duration_ms / 1000) + rtp_timestamp_increment = samples_per_packet + + assert bytes_per_packet == 160 + assert rtp_timestamp_increment == 160 + + def test_audio_speed_scenario(self): + """Test the scenario that was causing audio to play too fast.""" + # Original problem: 320 bytes of μ-law was being sent as one chunk + # This is 40ms of audio, not 20ms, causing 2x playback speed + + # Incorrect scenario (what was happening) + incorrect_chunk_size = 320 # PCM assumption + incorrect_duration = incorrect_chunk_size / ( + 8000 * 1 + ) # bytes / (samples/sec * bytes/sample) + # For μ-law: 320 bytes = 320 samples = 0.04 seconds = 40ms + + # Correct scenario (what should happen) + correct_chunk_size = 160 # μ-law reality + correct_duration = correct_chunk_size / ( + 8000 * 1 + ) # 160 samples = 0.02 seconds = 20ms + + assert incorrect_duration == 0.04 # 40ms - too much! + assert correct_duration == 0.02 # 20ms - correct! + + def test_transport_chunk_calculation(self): + """Test that transport correctly calculates chunk sizes for different encodings.""" + from pipecat.transports.base_transport import TransportParams + + # Standard transport params for Stasis + params = TransportParams( + audio_out_enabled=True, + audio_out_sample_rate=8000, + audio_out_channels=1, + audio_out_10ms_chunks=2, # 20ms total + ) + + # Calculate what the transport would compute for PCM + audio_bytes_10ms_pcm = ( + int(params.audio_out_sample_rate / 100) * params.audio_out_channels * 2 + ) + chunk_size_pcm = audio_bytes_10ms_pcm * params.audio_out_10ms_chunks + + assert audio_bytes_10ms_pcm == 160 # 10ms of PCM + assert chunk_size_pcm == 320 # 20ms of PCM + + # Our calculation for μ-law + duration_ms = params.audio_out_10ms_chunks * 10 + chunk_size_ulaw = calculate_chunk_size_bytes( + params.audio_out_sample_rate, + duration_ms, + params.audio_out_channels, + AudioEncoding.ULAW, + ) + + assert chunk_size_ulaw == 160 # 20ms of μ-law + assert chunk_size_ulaw == chunk_size_pcm // 2 + + +class TestEdgeCases: + """Test edge cases and error conditions.""" + + def test_mixed_encoding_stream(self): + """Test handling of streams that mix PCM and μ-law frames.""" + # This shouldn't happen in practice, but we should handle it gracefully + + # PCM frame + pcm_frame = TTSAudioRawFrame( + audio=b"\x00" * 320, sample_rate=8000, num_channels=1 + ) + pcm_chunk_size = calculate_chunk_size_bytes(8000, 20, 1, AudioEncoding.PCM) + assert pcm_chunk_size == 320 + + # μ-law frame + ulaw_frame = TTSAudioRawFrame( + audio=b"\xff" * 160, sample_rate=8000, num_channels=1 + ) + ulaw_frame.metadata["audio_encoding"] = "ulaw" + ulaw_chunk_size = calculate_chunk_size_bytes(8000, 20, 1, AudioEncoding.ULAW) + assert ulaw_chunk_size == 160 + + def test_non_standard_sample_rates(self): + """Test chunk size calculations for non-standard sample rates.""" + # While Stasis typically uses 8kHz, we should handle other rates correctly + + test_cases = [ + (16000, 20, AudioEncoding.ULAW, 320), # 16kHz μ-law + (24000, 20, AudioEncoding.ULAW, 480), # 24kHz μ-law + (48000, 10, AudioEncoding.ULAW, 480), # 48kHz μ-law, 10ms + ] + + for sample_rate, duration_ms, encoding, expected_size in test_cases: + chunk_size = calculate_chunk_size_bytes( + sample_rate, duration_ms, 1, encoding + ) + assert chunk_size == expected_size + + +if __name__ == "__main__": + pytest.main([__file__, "-v"]) diff --git a/ui/.dockerignore b/ui/.dockerignore new file mode 100644 index 0000000..7475a2a --- /dev/null +++ b/ui/.dockerignore @@ -0,0 +1,97 @@ +# Dependencies +node_modules/ +.pnp +.pnp.js + +# Next.js build output +.next/ +out/ +build/ +dist/ + +# Testing +coverage/ +.nyc_output + +# Debugging +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# Environment files +.env +.env.* + +# Version control +.git/ +.gitignore +.gitattributes + +# IDE and editor files +.vscode/ +.idea/ +*.swp +*.swo +*~ +.DS_Store +Thumbs.db + +# Documentation +*.md +docs/ +README* + +# TypeScript +*.tsbuildinfo + +# Misc +.eslintcache +.npm +.yarn + +# CI/CD +.github/ +.gitlab-ci.yml +.travis.yml + +# Development tools +.pre-commit-config.yaml +eslint.config.mjs +prettier.config.js +jest.config.js +openapi-ts.config.ts + +# Docker files +Dockerfile +docker-compose*.yml +docker-compose*.yaml +.dockerignore + +# Temporary files +*.log +*.tmp +tmp/ +temp/ + +# Storybook +.storybook/ +storybook-static/ + +# Vercel +.vercel + +# SWC +.swc/ + +# Turbo +.turbo/ + +# Claude/Cursor specific +.claude/ +.cursor/ + +# Package manager files (only need package*.json) +yarn.lock +pnpm-lock.yaml +bun.lockb \ No newline at end of file diff --git a/ui/.gitignore b/ui/.gitignore new file mode 100644 index 0000000..219f1c8 --- /dev/null +++ b/ui/.gitignore @@ -0,0 +1,43 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +# Sentry Config File +.env.sentry-build-plugin + +.env.local \ No newline at end of file diff --git a/ui/.pre-commit-config.yaml b/ui/.pre-commit-config.yaml new file mode 100644 index 0000000..b3d4bc8 --- /dev/null +++ b/ui/.pre-commit-config.yaml @@ -0,0 +1,8 @@ +repos: + - repo: local + hooks: + - id: format-and-lint + name: "Run Ruff + ESLint autofix" + entry: ./scripts/pre_commit.sh + language: script # runs in your shell, cross-platform + pass_filenames: false # we run the script once, not per-file diff --git a/ui/Dockerfile b/ui/Dockerfile new file mode 100644 index 0000000..126c7cc --- /dev/null +++ b/ui/Dockerfile @@ -0,0 +1,33 @@ +FROM node:20-alpine + +WORKDIR /app + +ENV NEXT_PUBLIC_NODE_ENV=local +ENV NEXT_PUBLIC_AUTH_PROVIDER=local +ENV NEXT_PUBLIC_BACKEND_URL="http://localhost:8000" +ENV BACKEND_URL="http://api:8000" + + +# Copy package files and other config files needed for build +COPY package*.json ./ +COPY tsconfig.json ./ +COPY next.config.ts ./ +COPY components.json ./ +COPY sentry.edge.config.ts ./ +COPY sentry.server.config.ts ./ +COPY postcss.config.mjs ./ + +# Install dependencies (including dev deps for building) +RUN npm ci + +# Copy all source file +COPY public ./public +COPY src ./src + +RUN npm run build + +# Expose the port Next.js runs on +EXPOSE 3000 + +# Start the production server +CMD ["npm", "run", "start"] \ No newline at end of file diff --git a/ui/README.md b/ui/README.md new file mode 100644 index 0000000..00dc4a4 --- /dev/null +++ b/ui/README.md @@ -0,0 +1,23 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +### Login Flow + +1. The redirection happens server side using `ui/src/stack.tsx` after the user has logged in. + +### Sentry and PostHog + +1. Initialized in `ui/src/instrumentation-client.ts` diff --git a/ui/components.json b/ui/components.json new file mode 100644 index 0000000..ffe928f --- /dev/null +++ b/ui/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/ui/eslint.config.mjs b/ui/eslint.config.mjs new file mode 100644 index 0000000..b8220fc --- /dev/null +++ b/ui/eslint.config.mjs @@ -0,0 +1,41 @@ +import { FlatCompat } from "@eslint/eslintrc"; +import simpleImportSort from "eslint-plugin-simple-import-sort"; +import unusedImports from "eslint-plugin-unused-imports"; +import { dirname } from "path"; +import { fileURLToPath } from "url"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +const eslintConfig = [ + ...compat.extends("next/core-web-vitals", "next/typescript"), + { + plugins: { + "simple-import-sort": simpleImportSort, + "unused-imports": unusedImports, + }, + rules: { + /* formatting / layout */ + "no-multiple-empty-lines": ["error", { max: 2, maxBOF: 1, maxEOF: 1 }], + "eol-last": ["error", "always"], + "no-trailing-spaces": "error", + + /* imports */ + "simple-import-sort/imports": "error", + "simple-import-sort/exports": "error", + "unused-imports/no-unused-imports": "error", + "unused-imports/no-unused-vars": ["warn", { vars: "all", args: "after-used" }], + + }, + languageOptions: { + sourceType: "module", + ecmaVersion: "latest" + } + } +]; + +export default eslintConfig; diff --git a/ui/next.config.ts b/ui/next.config.ts new file mode 100644 index 0000000..604a811 --- /dev/null +++ b/ui/next.config.ts @@ -0,0 +1,64 @@ +import { withSentryConfig } from "@sentry/nextjs"; +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + /* config options here */ + experimental: { + serverSourceMaps: true, + }, + async rewrites() { + return [ + // API proxy for backend calls + { + source: "/api/:path*", + destination: `${process.env.BACKEND_URL || 'http://localhost:8000'}/api/:path*`, + }, + { + source: "/ingest/static/:path*", + destination: "https://us-assets.i.posthog.com/static/:path*", + }, + { + source: "/ingest/:path*", + destination: "https://us.i.posthog.com/:path*", + }, + { + source: "/ingest/decide", + destination: "https://us.i.posthog.com/decide", + }, + ]; + }, + // This is required to support PostHog trailing slash API requests + skipTrailingSlashRedirect: true, +}; + +export default withSentryConfig(nextConfig, { + // For all available options, see: + // https://www.npmjs.com/package/@sentry/webpack-plugin#options + + org: "dograh", + project: "javascript-nextjs", + + // Only print logs for uploading source maps in CI + silent: !process.env.CI, + + // For all available options, see: + // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/ + + // Upload a larger set of source maps for prettier stack traces (increases build time) + widenClientFileUpload: true, + + // Route browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers. + // This can increase your server load as well as your hosting bill. + // Note: Check that the configured route will not match with your Next.js middleware, otherwise reporting of client- + // side errors will fail. + tunnelRoute: "/monitoring", + + // Automatically tree-shake Sentry logger statements to reduce bundle size + disableLogger: true, + + // Enables automatic instrumentation of Vercel Cron Monitors. (Does not yet work with App Router route handlers.) + // See the following for more information: + // https://docs.sentry.io/product/crons/ + // https://vercel.com/docs/cron-jobs + automaticVercelMonitors: true, +}); diff --git a/ui/openapi-ts.config.ts b/ui/openapi-ts.config.ts new file mode 100644 index 0000000..d6ab3b4 --- /dev/null +++ b/ui/openapi-ts.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from '@hey-api/openapi-ts'; + +export default defineConfig({ + input: 'http://127.0.0.1:8000/api/v1/openapi.json', + output: 'src/client', + plugins: [{ + name: '@hey-api/client-fetch', + runtimeConfigPath: './src/lib/apiClient.ts', + }], +}); diff --git a/ui/package-lock.json b/ui/package-lock.json new file mode 100644 index 0000000..bedab21 --- /dev/null +++ b/ui/package-lock.json @@ -0,0 +1,17926 @@ +{ + "name": "ui", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ui", + "version": "0.1.0", + "dependencies": { + "@dagrejs/dagre": "^1.1.4", + "@hey-api/client-fetch": "^0.10.0", + "@livekit/components-react": "^2.9.0", + "@nangohq/frontend": "^0.60.3", + "@radix-ui/react-checkbox": "^1.3.2", + "@radix-ui/react-dialog": "^1.1.13", + "@radix-ui/react-dropdown-menu": "^2.1.7", + "@radix-ui/react-label": "^2.1.3", + "@radix-ui/react-popover": "^1.1.14", + "@radix-ui/react-progress": "^1.1.7", + "@radix-ui/react-radio-group": "^1.3.7", + "@radix-ui/react-select": "^2.2.2", + "@radix-ui/react-separator": "^1.1.3", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-switch": "^1.1.4", + "@radix-ui/react-tooltip": "^1.2.0", + "@sentry/nextjs": "^9.28.1", + "@stackframe/stack": "^2.8.28", + "@xyflow/react": "^12.5.5", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "date-fns": "^4.1.0", + "livekit-client": "^2.9.9", + "lucide-react": "^0.487.0", + "next": "^15.3.3", + "next-themes": "^0.4.6", + "pino": "^9.9.2", + "pino-pretty": "^13.1.1", + "posthog-js": "^1.255.1", + "posthog-node": "^5.1.1", + "react": "^19.1.0", + "react-day-picker": "^9.8.0", + "react-dom": "^19.1.0", + "react-hook-form": "^7.56.4", + "react-international-phone": "^4.5.0", + "react-timezone-select": "^3.2.8", + "recharts": "^3.1.2", + "shadcn-ui": "^0.9.5", + "sonner": "^2.0.5", + "tailwind-merge": "^3.2.0", + "tailwindcss-animate": "^1.0.7", + "tw-animate-css": "^1.2.5" + }, + "devDependencies": { + "@eslint/eslintrc": "^3", + "@hey-api/openapi-ts": "^0.66.2", + "@tailwindcss/postcss": "^4", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "@types/source-map-support": "^0.5.10", + "eslint": "^9", + "eslint-config-next": "^15.3.3", + "eslint-plugin-simple-import-sort": "^12.1.1", + "eslint-plugin-unused-imports": "^4.1.4", + "source-map-support": "^0.5.21", + "tailwindcss": "^4", + "typescript": "^5" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", + "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz", + "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.8", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", + "license": "MIT", + "peer": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bufbuild/protobuf": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-1.10.0.tgz", + "integrity": "sha512-QDdVFLoN93Zjg36NoQPZfsVH9tZew7wKDKyV5qRdj8ntT4wQCOradQjRaTdwMhWUYsgKsvCINKKm87FdEk96Ag==", + "license": "(Apache-2.0 AND BSD-3-Clause)" + }, + "node_modules/@dagrejs/dagre": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@dagrejs/dagre/-/dagre-1.1.4.tgz", + "integrity": "sha512-QUTc54Cg/wvmlEUxB+uvoPVKFazM1H18kVHBQNmK2NbrDR5ihOCR6CXLnDSZzMcSQKJtabPUWridBOlJM3WkDg==", + "license": "MIT", + "dependencies": { + "@dagrejs/graphlib": "2.2.4" + } + }, + "node_modules/@dagrejs/graphlib": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@dagrejs/graphlib/-/graphlib-2.2.4.tgz", + "integrity": "sha512-mepCf/e9+SKYy1d02/UkvSy6+6MoyXhVxP8lLDfA7BPE1X1d4dR0sZznmbM8/XVJ1GPM+Svnx7Xj6ZweByWUkw==", + "license": "MIT", + "engines": { + "node": ">17.0.0" + } + }, + "node_modules/@date-fns/tz": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@date-fns/tz/-/tz-1.2.0.tgz", + "integrity": "sha512-LBrd7MiJZ9McsOgxqWX7AaxrDjcFVjWH/tIKJd7pnR7McaslGYOP1QmmiBXdJH/H/yLCT+rcQ7FaPBUxRGUtrg==", + "license": "MIT" + }, + "node_modules/@emnapi/core": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.0.tgz", + "integrity": "sha512-H+N/FqT07NmLmt6OFFtDfwe8PNygprzBikrEMyQfgqSmT0vzE515Pz7R8izwB9q/zsH/MA64AKoul3sA6/CzVg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", + "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz", + "integrity": "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.3.3", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT", + "peer": true + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT", + "peer": true + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "license": "MIT", + "peer": true + }, + "node_modules/@emotion/react": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "license": "MIT", + "peer": true + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "license": "MIT", + "peer": true + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", + "license": "MIT", + "peer": true + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "license": "MIT", + "peer": true + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", + "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", + "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", + "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", + "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", + "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", + "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", + "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", + "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", + "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", + "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", + "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", + "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", + "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", + "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", + "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", + "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", + "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", + "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", + "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", + "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", + "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", + "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", + "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", + "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", + "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz", + "integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", + "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", + "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.13.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", + "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", + "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", + "license": "MIT" + }, + "node_modules/@hey-api/client-fetch": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@hey-api/client-fetch/-/client-fetch-0.10.0.tgz", + "integrity": "sha512-C7vzj4t52qPiHCqjn1l8cRTI2p4pZCd7ViLtJDTHr5ZwI4sWOYC1tmv6bd529qqY6HFFbhGCz4TAZSwKAMJncg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/hey-api" + }, + "peerDependencies": { + "@hey-api/openapi-ts": "< 2" + } + }, + "node_modules/@hey-api/json-schema-ref-parser": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@hey-api/json-schema-ref-parser/-/json-schema-ref-parser-1.0.4.tgz", + "integrity": "sha512-IaJ4yFgU5r63KZyeySHRKSM1bavFIda8KdwCFi5BxQCIklltzEByBksNOPms+yHXpWWfR+OopIusVZV8roycYg==", + "license": "MIT", + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.15", + "js-yaml": "^4.1.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/hey-api" + } + }, + "node_modules/@hey-api/openapi-ts": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/@hey-api/openapi-ts/-/openapi-ts-0.66.2.tgz", + "integrity": "sha512-77nofk/zacBNDwVb86kjS2sMIrwbwoBgUNw10crhPPrhV7HUs6A4SzZxePLEGRyHbM54v0g+XL6P8DSr98BM+A==", + "license": "MIT", + "dependencies": { + "@hey-api/json-schema-ref-parser": "1.0.4", + "c12": "2.0.1", + "commander": "13.0.0", + "handlebars": "4.7.8" + }, + "bin": { + "openapi-ts": "bin/index.cjs" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=22.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/hey-api" + }, + "peerDependencies": { + "typescript": "^5.5.3" + } + }, + "node_modules/@hookform/resolvers": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.10.0.tgz", + "integrity": "sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag==", + "license": "MIT", + "peerDependencies": { + "react-hook-form": "^7.0.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.2.tgz", + "integrity": "sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.2.tgz", + "integrity": "sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", + "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz", + "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz", + "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz", + "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz", + "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz", + "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz", + "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz", + "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz", + "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.2.tgz", + "integrity": "sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.2.tgz", + "integrity": "sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.2.tgz", + "integrity": "sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.2.tgz", + "integrity": "sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.2.tgz", + "integrity": "sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.2.tgz", + "integrity": "sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.2.tgz", + "integrity": "sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.4.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.2.tgz", + "integrity": "sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.2.tgz", + "integrity": "sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.2.tgz", + "integrity": "sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "license": "MIT" + }, + "node_modules/@livekit/components-core": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@livekit/components-core/-/components-core-0.12.2.tgz", + "integrity": "sha512-lSNEyWuJ94PNVR7uycpqxV5XG+GmPpRCRPFEiVnAKG8xbTKlBrlu6ruPgg3/dZG4oHCPOpTN7VPV4jbcUjFAoA==", + "license": "Apache-2.0", + "dependencies": { + "@floating-ui/dom": "1.6.13", + "loglevel": "1.9.1", + "rxjs": "7.8.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "livekit-client": "^2.9.5", + "tslib": "^2.6.2" + } + }, + "node_modules/@livekit/components-core/node_modules/loglevel": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", + "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/@livekit/components-react": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@livekit/components-react/-/components-react-2.9.0.tgz", + "integrity": "sha512-HAY1d1N2n5e8KP3ogTGgvHpO4afDSKAt1pqDsHPumTYcNTGKuMtIfMc4CfUMrtVMQAggzouOTYfb/gC4gnaYiQ==", + "license": "Apache-2.0", + "dependencies": { + "@livekit/components-core": "0.12.2", + "clsx": "2.1.1", + "usehooks-ts": "3.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@livekit/krisp-noise-filter": "^0.2.12", + "livekit-client": "^2.9.5", + "react": ">=18", + "react-dom": ">=18", + "tslib": "^2.6.2" + }, + "peerDependenciesMeta": { + "@livekit/krisp-noise-filter": { + "optional": true + } + } + }, + "node_modules/@livekit/mutex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@livekit/mutex/-/mutex-1.1.1.tgz", + "integrity": "sha512-EsshAucklmpuUAfkABPxJNhzj9v2sG7JuzFDL4ML1oJQSV14sqrpTYnsaOudMAw9yOaW53NU3QQTlUQoRs4czw==", + "license": "Apache-2.0" + }, + "node_modules/@livekit/protocol": { + "version": "1.34.0", + "resolved": "https://registry.npmjs.org/@livekit/protocol/-/protocol-1.34.0.tgz", + "integrity": "sha512-bU7pCLAMRVTVZb1KSxA46q55bhOc4iATrY/gccy2/oX1D57tiZEI+8wGRWHeDwBb0UwnABu6JXzC4tTFkdsaOg==", + "license": "Apache-2.0", + "dependencies": { + "@bufbuild/protobuf": "^1.10.0" + } + }, + "node_modules/@nangohq/frontend": { + "version": "0.60.3", + "resolved": "https://registry.npmjs.org/@nangohq/frontend/-/frontend-0.60.3.tgz", + "integrity": "sha512-Jj0LfV2jODn4VwO6h0NCUXISDGsVkiLcliV5aUR/nDEctvNgXnYsF9UrsVvd0JncmCgQh60lPadDAG2/6cHUCA==", + "license": "SEE LICENSE IN LICENSE FILE IN GIT REPOSITORY", + "dependencies": { + "@nangohq/types": "0.60.3" + } + }, + "node_modules/@nangohq/types": { + "version": "0.60.3", + "resolved": "https://registry.npmjs.org/@nangohq/types/-/types-0.60.3.tgz", + "integrity": "sha512-MlFpTlfvBZcR1JGNDQpZX0S8cNuzY5bTSTVfQvz0h77IJSgIc+E+d7AlLg54I+4DIObx2sVFjI5DVZQpAQer1w==", + "license": "SEE LICENSE IN LICENSE FILE IN GIT REPOSITORY", + "dependencies": { + "axios": "1.9.0", + "json-schema": "0.4.0", + "type-fest": "4.41.0" + } + }, + "node_modules/@nangohq/types/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.8.tgz", + "integrity": "sha512-OBlgKdX7gin7OIq4fadsjpg+cp2ZphvAIKucHsNfTdJiqdOmOEwQd/bHi0VwNrcw5xpBJyUw6cK/QilCqy1BSg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.0", + "@emnapi/runtime": "^1.4.0", + "@tybys/wasm-util": "^0.9.0" + } + }, + "node_modules/@next/env": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.3.tgz", + "integrity": "sha512-OdiMrzCl2Xi0VTjiQQUK0Xh7bJHnOuET2s+3V+Y40WJBAXrJeGA3f+I8MZJ/YQ3mVGi5XGR1L66oFlgqXhQ4Vw==", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.3.3.tgz", + "integrity": "sha512-VKZJEiEdpKkfBmcokGjHu0vGDG+8CehGs90tBEy/IDoDDKGngeyIStt2MmE5FYNyU9BhgR7tybNWTAJY/30u+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "3.3.1" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.3.tgz", + "integrity": "sha512-WRJERLuH+O3oYB4yZNVahSVFmtxRNjNF1I1c34tYMoJb0Pve+7/RaLAJJizyYiFhjYNGHRAE1Ri2Fd23zgDqhg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.3.tgz", + "integrity": "sha512-XHdzH/yBc55lu78k/XwtuFR/ZXUTcflpRXcsu0nKmF45U96jt1tsOZhVrn5YH+paw66zOANpOnFQ9i6/j+UYvw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.3.tgz", + "integrity": "sha512-VZ3sYL2LXB8znNGcjhocikEkag/8xiLgnvQts41tq6i+wql63SMS1Q6N8RVXHw5pEUjiof+II3HkDd7GFcgkzw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.3.tgz", + "integrity": "sha512-h6Y1fLU4RWAp1HPNJWDYBQ+e3G7sLckyBXhmH9ajn8l/RSMnhbuPBV/fXmy3muMcVwoJdHL+UtzRzs0nXOf9SA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.3.tgz", + "integrity": "sha512-jJ8HRiF3N8Zw6hGlytCj5BiHyG/K+fnTKVDEKvUCyiQ/0r5tgwO7OgaRiOjjRoIx2vwLR+Rz8hQoPrnmFbJdfw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.3.tgz", + "integrity": "sha512-HrUcTr4N+RgiiGn3jjeT6Oo208UT/7BuTr7K0mdKRBtTbT4v9zJqCDKO97DUqqoBK1qyzP1RwvrWTvU6EPh/Cw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.3.tgz", + "integrity": "sha512-SxorONgi6K7ZUysMtRF3mIeHC5aA3IQLmKFQzU0OuhuUYwpOBc1ypaLJLP5Bf3M9k53KUUUj4vTPwzGvl/NwlQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.3.tgz", + "integrity": "sha512-4QZG6F8enl9/S2+yIiOiju0iCTFd93d8VC1q9LZS4p/Xuk81W2QDjCFeoogmrWWkAD59z8ZxepBQap2dKS5ruw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.200.0.tgz", + "integrity": "sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/context-async-hooks": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.1.tgz", + "integrity": "sha512-XuY23lSI3d4PEqKA+7SLtAgwqIfc6E/E9eAQWLN1vlpC53ybO3o6jW4BsXo1xvz9lYyyWItfQDDLzezER01mCw==", + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.1.tgz", + "integrity": "sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/instrumentation": { + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.200.0.tgz", + "integrity": "sha512-pmPlzfJd+vvgaZd/reMsC8RWgTXn2WY1OWT5RT42m3aOn5532TozwXNDhg1vzqJ+jnvmkREcdLr27ebJEQt0Jg==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@opentelemetry/api-logs": "0.200.0", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "shimmer": "^1.2.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-amqplib": { + "version": "0.46.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.46.1.tgz", + "integrity": "sha512-AyXVnlCf/xV3K/rNumzKxZqsULyITJH6OVLiW6730JPRqWA7Zc9bvYoVNpN6iOpTU8CasH34SU/ksVJmObFibQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-amqplib/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-amqplib/node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/instrumentation-amqplib/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-amqplib/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-connect": { + "version": "0.43.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.43.1.tgz", + "integrity": "sha512-ht7YGWQuV5BopMcw5Q2hXn3I8eG8TH0J/kc/GMcW4CuNTgiP6wCu44BOnucJWL3CmFWaRHI//vWyAhaC8BwePw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/connect": "3.4.38" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-connect/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-connect/node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/instrumentation-connect/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-connect/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-dataloader": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.16.1.tgz", + "integrity": "sha512-K/qU4CjnzOpNkkKO4DfCLSQshejRNAJtd4esgigo/50nxCB6XCyi1dhAblUHM9jG5dRm8eu0FB+t87nIo99LYQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-dataloader/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-dataloader/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-express": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.47.1.tgz", + "integrity": "sha512-QNXPTWteDclR2B4pDFpz0TNghgB33UMjUt14B+BZPmtH1MwUFAfLHBaP5If0Z5NZC+jaH8oF2glgYjrmhZWmSw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-express/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-express/node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/instrumentation-express/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-express/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-fs": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.19.1.tgz", + "integrity": "sha512-6g0FhB3B9UobAR60BGTcXg4IHZ6aaYJzp0Ki5FhnxyAPt8Ns+9SSvgcrnsN2eGmk3RWG5vYycUGOEApycQL24A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-fs/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-fs/node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/instrumentation-fs/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-fs/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-generic-pool": { + "version": "0.43.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.43.1.tgz", + "integrity": "sha512-M6qGYsp1cURtvVLGDrPPZemMFEbuMmCXgQYTReC/IbimV5sGrLBjB+/hANUpRZjX67nGLdKSVLZuQQAiNz+sww==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-generic-pool/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-generic-pool/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-graphql": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.47.1.tgz", + "integrity": "sha512-EGQRWMGqwiuVma8ZLAZnExQ7sBvbOx0N/AE/nlafISPs8S+QtXX+Viy6dcQwVWwYHQPAcuY3bFt3xgoAwb4ZNQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-graphql/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-graphql/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-hapi": { + "version": "0.45.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.45.2.tgz", + "integrity": "sha512-7Ehow/7Wp3aoyCrZwQpU7a2CnoMq0XhIcioFuKjBb0PLYfBfmTsFTUyatlHu0fRxhwcRsSQRTvEhmZu8CppBpQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-hapi/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-hapi/node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/instrumentation-hapi/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-hapi/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-http": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.57.2.tgz", + "integrity": "sha512-1Uz5iJ9ZAlFOiPuwYg29Bf7bJJc/GeoeJIFKJYQf67nTVKFe8RHbEtxgkOmK4UGZNHKXcpW4P8cWBYzBn1USpg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/instrumentation": "0.57.2", + "@opentelemetry/semantic-conventions": "1.28.0", + "forwarded-parse": "2.1.2", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-ioredis": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.47.1.tgz", + "integrity": "sha512-OtFGSN+kgk/aoKgdkKQnBsQFDiG8WdCxu+UrHr0bXScdAmtSzLSraLo7wFIb25RVHfRWvzI5kZomqJYEg/l1iA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/redis-common": "^0.36.2", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-ioredis/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-ioredis/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-kafkajs": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.7.1.tgz", + "integrity": "sha512-OtjaKs8H7oysfErajdYr1yuWSjMAectT7Dwr+axIoZqT9lmEOkD/H/3rgAs8h/NIuEi2imSXD+vL4MZtOuJfqQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-kafkajs/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-kafkajs/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-knex": { + "version": "0.44.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.44.1.tgz", + "integrity": "sha512-U4dQxkNhvPexffjEmGwCq68FuftFK15JgUF05y/HlK3M6W/G2iEaACIfXdSnwVNe9Qh0sPfw8LbOPxrWzGWGMQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-knex/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-knex/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-koa": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.47.1.tgz", + "integrity": "sha512-l/c+Z9F86cOiPJUllUCt09v+kICKvT+Vg1vOAJHtHPsJIzurGayucfCMq2acd/A/yxeNWunl9d9eqZ0G+XiI6A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-koa/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-koa/node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/instrumentation-koa/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-koa/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-lru-memoizer": { + "version": "0.44.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.44.1.tgz", + "integrity": "sha512-5MPkYCvG2yw7WONEjYj5lr5JFehTobW7wX+ZUFy81oF2lr9IPfZk9qO+FTaM0bGEiymwfLwKe6jE15nHn1nmHg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-lru-memoizer/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-lru-memoizer/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mongodb": { + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.52.0.tgz", + "integrity": "sha512-1xmAqOtRUQGR7QfJFfGV/M2kC7wmI2WgZdpru8hJl3S0r4hW0n3OQpEHlSGXJAaNFyvT+ilnwkT+g5L4ljHR6g==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mongodb/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-mongodb/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mongoose": { + "version": "0.46.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.46.1.tgz", + "integrity": "sha512-3kINtW1LUTPkiXFRSSBmva1SXzS/72we/jL22N+BnF3DFcoewkdkHPYOIdAAk9gSicJ4d5Ojtt1/HeibEc5OQg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mongoose/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-mongoose/node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mongoose/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mongoose/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-mysql": { + "version": "0.45.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.45.1.tgz", + "integrity": "sha512-TKp4hQ8iKQsY7vnp/j0yJJ4ZsP109Ht6l4RHTj0lNEG1TfgTrIH5vJMbgmoYXWzNHAqBH2e7fncN12p3BP8LFg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/mysql": "2.15.26" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mysql/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-mysql/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mysql2": { + "version": "0.45.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.45.2.tgz", + "integrity": "sha512-h6Ad60FjCYdJZ5DTz1Lk2VmQsShiViKe0G7sYikb0GHI0NVvApp2XQNRHNjEMz87roFttGPLHOYVPlfy+yVIhQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@opentelemetry/sql-common": "^0.40.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mysql2/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-mysql2/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-pg": { + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.51.1.tgz", + "integrity": "sha512-QxgjSrxyWZc7Vk+qGSfsejPVFL1AgAJdSBMYZdDUbwg730D09ub3PXScB9d04vIqPriZ+0dqzjmQx0yWKiCi2Q==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.26.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@opentelemetry/sql-common": "^0.40.1", + "@types/pg": "8.6.1", + "@types/pg-pool": "2.0.6" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-pg/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-pg/node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/instrumentation-pg/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-pg/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-redis-4": { + "version": "0.46.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.46.1.tgz", + "integrity": "sha512-UMqleEoabYMsWoTkqyt9WAzXwZ4BlFZHO40wr3d5ZvtjKCHlD4YXLm+6OLCeIi/HkX7EXvQaz8gtAwkwwSEvcQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/redis-common": "^0.36.2", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-redis-4/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-redis-4/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-tedious": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.18.1.tgz", + "integrity": "sha512-5Cuy/nj0HBaH+ZJ4leuD7RjgvA844aY2WW+B5uLcWtxGjRZl3MNLuxnNg5DYWZNPO+NafSSnra0q49KWAHsKBg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/tedious": "^4.0.14" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-tedious/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-tedious/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-undici": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.10.1.tgz", + "integrity": "sha512-rkOGikPEyRpMCmNu9AQuV5dtRlDmJp2dK5sw8roVshAGoB6hH/3QjDtRhdwd75SsJwgynWUNRUYe0wAkTo16tQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.7.0" + } + }, + "node_modules/@opentelemetry/instrumentation-undici/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-undici/node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/instrumentation-undici/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-undici/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/redis-common": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz", + "integrity": "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.1.tgz", + "integrity": "sha512-dZOB3R6zvBwDKnHDTB4X1xtMArB/d324VsbiPkX/Yu0Q8T2xceRthoIVFhJdvgVM2QhGVUyX9tzwiNxGtoBJUw==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@opentelemetry/core": "2.0.1", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.1.tgz", + "integrity": "sha512-xYLlvk/xdScGx1aEqvxLwf6sXQLXCjk3/1SQT9X9AoN5rXRhkdvIFShuNNmtTEPRBqcsMbS4p/gJLNI2wXaDuQ==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@opentelemetry/core": "2.0.1", + "@opentelemetry/resources": "2.0.1", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.34.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.34.0.tgz", + "integrity": "sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sql-common": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz", + "integrity": "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.1.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0" + } + }, + "node_modules/@opentelemetry/sql-common/node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sql-common/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@oslojs/asn1": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@oslojs/asn1/-/asn1-1.0.0.tgz", + "integrity": "sha512-zw/wn0sj0j0QKbIXfIlnEcTviaCzYOY3V5rAyjR6YtOByFtJiT574+8p9Wlach0lZH9fddD4yb9laEAIl4vXQA==", + "license": "MIT", + "dependencies": { + "@oslojs/binary": "1.0.0" + } + }, + "node_modules/@oslojs/binary": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@oslojs/binary/-/binary-1.0.0.tgz", + "integrity": "sha512-9RCU6OwXU6p67H4NODbuxv2S3eenuQ4/WFLrsq+K/k682xrznH5EVWA7N4VFk9VYVcbFtKqur5YQQZc0ySGhsQ==", + "license": "MIT" + }, + "node_modules/@oslojs/crypto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@oslojs/crypto/-/crypto-1.0.0.tgz", + "integrity": "sha512-dVz8TkkgYdr3tlwxHd7SCYGxoN7ynwHLA0nei/Aq9C+ERU0BK+U8+/3soEzBUxUNKYBf42351DyJUZ2REla50w==", + "license": "MIT", + "dependencies": { + "@oslojs/asn1": "1.0.0", + "@oslojs/binary": "1.0.0" + } + }, + "node_modules/@oslojs/encoding": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.0.0.tgz", + "integrity": "sha512-dyIB0SdZgMm5BhGwdSp8rMxEFIopLKxDG1vxIBaiogyom6ZqH2aXPb6DEC2WzOOWKdPSq1cxdNeRx2wAn1Z+ZQ==", + "license": "MIT" + }, + "node_modules/@oslojs/otp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@oslojs/otp/-/otp-1.1.0.tgz", + "integrity": "sha512-tpdxlnCLcY6IZLLqH8kGD8PSvIVyev/+Gbglgvrk9e4YzgKO7+7FL8NWBofL7LZI6MgQ1HnNUuotRG6t1JJ0dg==", + "license": "MIT", + "dependencies": { + "@oslojs/binary": "1.0.0", + "@oslojs/crypto": "1.0.0", + "@oslojs/encoding": "1.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@prisma/instrumentation": { + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-6.8.2.tgz", + "integrity": "sha512-5NCTbZjw7a+WIZ/ey6G8SY+YKcyM2zBF0hOT1muvqC9TbVtTCr5Qv3RL/2iNDOzLUHEvo4I1uEfioyfuNOGK8Q==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.8" + } + }, + "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-accordion": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.12.tgz", + "integrity": "sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collapsible": "1.1.12", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.15.tgz", + "integrity": "sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dialog": "1.1.15", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-alert-dialog/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.3.tgz", + "integrity": "sha512-2dvVU4jva0qkNZH6HHWuSz5FN5GeU5tymvCgutF8WaXz9WnD1NgUhy73cqzkjkN4Zkn8lfTPv5JIfrC221W+Nw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-aspect-ratio": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.7.tgz", + "integrity": "sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-aspect-ratio/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-avatar": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.10.tgz", + "integrity": "sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-is-hydrated": "0.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.2.tgz", + "integrity": "sha512-yd+dI56KZqawxKZrJ31eENUwqc1QSqg4OZ15rybGjF2ZNwMO+wCyHzAVLRp9qoYJf7kYy0YpZ2b0JCzJ42HZpA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-presence": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.4.tgz", + "integrity": "sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.12.tgz", + "integrity": "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.3.tgz", + "integrity": "sha512-mM2pxoQw5HJ49rkzwOs7Y6J4oYH22wS8BfK2/bBxROlI4xuR0c4jEenQP63LlTlDkO6Buj2Vt+QYAYcOgqtrXA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-slot": "1.2.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu": { + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.2.16.tgz", + "integrity": "sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/react-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.16.tgz", + "integrity": "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.6.tgz", + "integrity": "sha512-7gpgMT2gyKym9Jz2ZhlRXSg2y6cNQIK8d/cqBZ0RBCaps8pFryCWXiUKI+uHGFrhMrbGUP7U6PWgiXzIxoyF3Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.7.tgz", + "integrity": "sha512-7/1LiuNZuCQE3IzdicGoHdQOHkS2Q08+7p8w6TXZ6ZjgAULaCI85ZY15yPl4o4FVgoKLRT43/rsfNVN8osClQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.7", + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-use-controllable-state": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz", + "integrity": "sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.3.tgz", + "integrity": "sha512-4XaDlq0bPt7oJwR+0k0clCiCO/7lO7NKZTAaJBYxDNQT/vj4ig0/UvctrRscZaFREpRvUTkpKR96ov1e6jptQg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.15.tgz", + "integrity": "sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-hover-card/node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card/node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card/node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-icons": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.2.tgz", + "integrity": "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==", + "license": "MIT", + "peerDependencies": { + "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.3.tgz", + "integrity": "sha512-zwSQ1NzSKG95yA0tvBMgv6XPHoqapJCcg9nsUBaQQ66iRBhZNhlpaQG2ERYYX4O4stkYFK5rxj5NsWfO9CS+Hg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.7.tgz", + "integrity": "sha512-tBODsrk68rOi1/iQzbM54toFF+gSw/y+eQgttFflqlGekuSebNqvFNHjJgjqPhiMb4Fw9A0zNFly1QT6ZFdQ+Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.6", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.3", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.3", + "@radix-ui/react-portal": "1.1.5", + "@radix-ui/react-presence": "1.1.3", + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-roving-focus": "1.1.3", + "@radix-ui/react-slot": "1.2.0", + "@radix-ui/react-use-callback-ref": "1.1.1", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.1.16.tgz", + "integrity": "sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.16.tgz", + "integrity": "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.14.tgz", + "integrity": "sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.14.tgz", + "integrity": "sha512-ODz16+1iIbGUfFEfKx2HTPKizg2MN39uIOV8MXeHnmdd3i/N9Wt7vU46wbHsqA0xoaQyXVcs0KIlBdOA2Y95bw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.7", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.10.tgz", + "integrity": "sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-popper": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.7.tgz", + "integrity": "sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-presence": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.4.tgz", + "integrity": "sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.3.tgz", + "integrity": "sha512-iNb9LYUMkne9zIahukgQmHlSBp9XWGeQQ7FvUGNk45ywzOb6kQa+Ca38OphXlWDiKvyneo9S+KSJsLfLt8812A==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.5.tgz", + "integrity": "sha512-ps/67ZqsFm+Mb6lSPJpfhRLrVL2i2fntgCmGMqqth4eaGUf+knAuuRtWVJrNjUhExgmdRqftSgzpf0DF0n6yXA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.3.tgz", + "integrity": "sha512-IrVLIhskYhH3nLvtcBLQFZr61tBG7wx7O3kEmdzcYwRGAEBmBicGGL7ATzNgruYJ3xBTbuzEEq9OXJM3PAX3tA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.3.tgz", + "integrity": "sha512-Pf/t/GkndH7CQ8wE2hbkXA+WyZ83fhQQn5DDmwDiDo6AwN/fhaH8oqZ0jRjMrO2iaMhDi6P1HRx6AZwyMinY1g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.7.tgz", + "integrity": "sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.3.7.tgz", + "integrity": "sha512-9w5XhD0KPOrm92OTTE0SysH3sYzHsSTHNvZgUBo/VZ80VdYyB5RneDbc0dKpURS24IxkoFRu/hI0i4XyfFwY6g==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-presence": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.4.tgz", + "integrity": "sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.10.tgz", + "integrity": "sha512-dT9aOXUen9JSsxnMPv/0VqySQf5eDQ6LCk5Sw28kamz8wSOW2bJdlX2Bg5VUIIcV+6XlHpWTIuTPCf/UNIyq8Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.3.tgz", + "integrity": "sha512-ufbpLUjZiOg4iYgb2hQrWXEPYX6jOLBbR27bDyAff5GYMRrCzcze8lukjuXVUQvJ6HZe8+oL+hhswDcjmcgVyg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.10.tgz", + "integrity": "sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-scroll-area/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.2.tgz", + "integrity": "sha512-HjkVHtBkuq+r3zUAZ/CvNWUGKPfuicGDbgtZgiQuFmNcV5F+Tgy24ep2nsAW2nFgvhGPJVqeBZa6KyVN0EyrBA==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.4", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.7", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.4", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.4", + "@radix-ui/react-portal": "1.1.6", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-slot": "1.2.0", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.0", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-arrow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.4.tgz", + "integrity": "sha512-qz+fxrqgNxG0dYew5l7qR3c7wdgRu1XVUHGnGYX7rg5HM4p9SWaRmJwfgR3J0SgyUKayLmzQIun+N6rWRgiRKw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-collection": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.4.tgz", + "integrity": "sha512-cv4vSf7HttqXilDnAnvINd53OTl1/bjUYVZrkFnA7nwmY9Ob2POUy0WY0sfqBAe1s5FyKsyceQlqiEGPYNTadg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-slot": "1.2.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.7.tgz", + "integrity": "sha512-j5+WBUdhccJsmH5/H0K6RncjDtoALSEr6jbkaZu+bjw6hOPOhHycr6vEUujl+HBK8kjUfWcoCJXxP6e4lUlMZw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.4.tgz", + "integrity": "sha512-r2annK27lIW5w9Ho5NyQgqs0MmgZSTIKXWpVCJaLC1q2kZrZkcqnmHkCHMEmv8XLvsLlurKMPT+kbKkRkm/xVA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-popper": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.4.tgz", + "integrity": "sha512-3p2Rgm/a1cK0r/UVkx5F/K9v/EplfjAeIFCGOPYPO4lZ0jtg4iSQXt/YGTSLWaf4x7NG6Z4+uKFcylcTZjeqDA==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.4", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-portal": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.6.tgz", + "integrity": "sha512-XmsIl2z1n/TsYFLIdYam2rmFwf9OC/Sh2avkbmVMDuBZIe7hSpM0cYnWPAo7nHOVx8zTuwDZGByfcqLdnzp3Vw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-primitive": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.0.tgz", + "integrity": "sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.0.tgz", + "integrity": "sha512-rQj0aAWOpCdCMRbI6pLQm8r7S2BM3YhTa0SzOYD55k+hJA8oo9J+H+9wLM9oMlZWOX/wJWPTzfDfmZkf7LvCfg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.3.tgz", + "integrity": "sha512-2omrWKJvxR0U/tkIXezcc1nFMwtLU0+b/rDK40gnzJqTLWQ/TD/D5IYVefp9sC3QWfeQbpSbEA6op9MQKyaALQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.3.6.tgz", + "integrity": "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-slider/node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.1.4.tgz", + "integrity": "sha512-zGP6W8plLeogoeGMiTHJ/uvf+TE1C2chVsEwfP8YlvpQKJHktG+iCkUtCLGPAuDV8/qDSmIRPm4NggaTxFMVBQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-use-controllable-state": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", + "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.15.tgz", + "integrity": "sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", + "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz", + "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-toggle": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-toggle/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.0.tgz", + "integrity": "sha512-b1Sdc75s7zN9B8ONQTGBSHL3XS8+IcjcOIY51fhM4R1Hx8s0YbgqgyNZiri4qcYMVZK8hfCZVBiyCm7N9rs0rw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.6", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.3", + "@radix-ui/react-portal": "1.1.5", + "@radix-ui/react-presence": "1.1.3", + "@radix-ui/react-primitive": "2.0.3", + "@radix-ui/react-slot": "1.2.0", + "@radix-ui/react-use-controllable-state": "1.1.1", + "@radix-ui/react-visually-hidden": "1.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.1.tgz", + "integrity": "sha512-YnEXIy8/ga01Y1PN0VfaNH//MhA91JlEGVBDxDzROqwrAtG5Yr2QGEPz8A/rJA3C7ZAHryOYGaUv8fLSW2H/mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-is-hydrated": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.0.tgz", + "integrity": "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.3.tgz", + "integrity": "sha512-oXSF3ZQRd5fvomd9hmUCb2EHSZbPp3ZSHAHJJU/DlF9XoFkJBBW8RHU/E8WEH+RbSfJd/QFA0sl8ClJXknBwHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, + "node_modules/@reduxjs/toolkit": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.8.2.tgz", + "integrity": "sha512-MYlOhQ0sLdw4ud48FoC5w0dH9VfWQjtCjreKwYTT3l+r427qYC5Y8PihNutepr8XrNaBUDQo9khWUwQxZaqt5A==", + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@standard-schema/utils": "^0.3.0", + "immer": "^10.0.3", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "28.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.1.tgz", + "integrity": "sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "fdir": "^6.2.0", + "is-reference": "1.2.1", + "magic-string": "^0.30.3", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=16.0.0 || 14 >= 14.17" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz", + "integrity": "sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz", + "integrity": "sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz", + "integrity": "sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz", + "integrity": "sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz", + "integrity": "sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz", + "integrity": "sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz", + "integrity": "sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz", + "integrity": "sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz", + "integrity": "sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz", + "integrity": "sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz", + "integrity": "sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz", + "integrity": "sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz", + "integrity": "sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz", + "integrity": "sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz", + "integrity": "sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz", + "integrity": "sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz", + "integrity": "sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz", + "integrity": "sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz", + "integrity": "sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.11.0.tgz", + "integrity": "sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sentry-internal/browser-utils": { + "version": "9.28.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-9.28.1.tgz", + "integrity": "sha512-P/FEZkT7UqTw9P/2n/Y4Aa1OtGP6dnCvyqzPPkjiRdVa7Ep7S5ElBJloGv7077TLLBtAfCsEUVRlM1F6/jQoaA==", + "license": "MIT", + "dependencies": { + "@sentry/core": "9.28.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry-internal/feedback": { + "version": "9.28.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-9.28.1.tgz", + "integrity": "sha512-HOk/c26D3nlClO/xEefev8fIJzRA621PFQvNFPu/y0Z5HujEqSmIsrff0cXszPPYD95h4Mwk63E0ZYdspdeXcw==", + "license": "MIT", + "dependencies": { + "@sentry/core": "9.28.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry-internal/replay": { + "version": "9.28.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-9.28.1.tgz", + "integrity": "sha512-Tv9pkfAX+1bmhxF42TL0c4uTiK2+rp5LMYEPdz6JBfpfvG/Z1unPGsuB7fQmHYKyfHBQJmi92DZV+smljm7w/g==", + "license": "MIT", + "dependencies": { + "@sentry-internal/browser-utils": "9.28.1", + "@sentry/core": "9.28.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry-internal/replay-canvas": { + "version": "9.28.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-9.28.1.tgz", + "integrity": "sha512-RtkogfcIpXLFCyV8CTnXmVTH2QauT/KwmUAXBbeOz3rRWsM19yjN1moHrsjxn7OdjTv+D4qWSCA8Ka1aKSpr7g==", + "license": "MIT", + "dependencies": { + "@sentry-internal/replay": "9.28.1", + "@sentry/core": "9.28.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/babel-plugin-component-annotate": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-3.5.0.tgz", + "integrity": "sha512-s2go8w03CDHbF9luFGtBHKJp4cSpsQzNVqgIa9Pfa4wnjipvrK6CxVT4icpLA3YO6kg5u622Yoa5GF3cJdippw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@sentry/browser": { + "version": "9.28.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-9.28.1.tgz", + "integrity": "sha512-XAS46iQSq8lXTnv9udQP025JTf3PwSVRE9ePJVQhx25QBWxedqGhEOv5qqX9b1Ijf8KiZYXXhBWMQxBBXVzUaw==", + "license": "MIT", + "dependencies": { + "@sentry-internal/browser-utils": "9.28.1", + "@sentry-internal/feedback": "9.28.1", + "@sentry-internal/replay": "9.28.1", + "@sentry-internal/replay-canvas": "9.28.1", + "@sentry/core": "9.28.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/bundler-plugin-core": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-3.5.0.tgz", + "integrity": "sha512-zDzPrhJqAAy2VzV4g540qAZH4qxzisstK2+NIJPZUUKztWRWUV2cMHsyUtdctYgloGkLyGpZJBE3RE6dmP/xqQ==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.18.5", + "@sentry/babel-plugin-component-annotate": "3.5.0", + "@sentry/cli": "2.42.2", + "dotenv": "^16.3.1", + "find-up": "^5.0.0", + "glob": "^9.3.2", + "magic-string": "0.30.8", + "unplugin": "1.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@sentry/bundler-plugin-core/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@sentry/bundler-plugin-core/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@sentry/bundler-plugin-core/node_modules/magic-string": { + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sentry/bundler-plugin-core/node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@sentry/bundler-plugin-core/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/cli": { + "version": "2.42.2", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.42.2.tgz", + "integrity": "sha512-spb7S/RUumCGyiSTg8DlrCX4bivCNmU/A1hcfkwuciTFGu8l5CDc2I6jJWWZw8/0enDGxuj5XujgXvU5tr4bxg==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.7", + "progress": "^2.0.3", + "proxy-from-env": "^1.1.0", + "which": "^2.0.2" + }, + "bin": { + "sentry-cli": "bin/sentry-cli" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@sentry/cli-darwin": "2.42.2", + "@sentry/cli-linux-arm": "2.42.2", + "@sentry/cli-linux-arm64": "2.42.2", + "@sentry/cli-linux-i686": "2.42.2", + "@sentry/cli-linux-x64": "2.42.2", + "@sentry/cli-win32-i686": "2.42.2", + "@sentry/cli-win32-x64": "2.42.2" + } + }, + "node_modules/@sentry/cli-darwin": { + "version": "2.42.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.42.2.tgz", + "integrity": "sha512-GtJSuxER7Vrp1IpxdUyRZzcckzMnb4N5KTW7sbTwUiwqARRo+wxS+gczYrS8tdgtmXs5XYhzhs+t4d52ITHMIg==", + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-linux-arm": { + "version": "2.42.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.42.2.tgz", + "integrity": "sha512-7udCw+YL9lwq+9eL3WLspvnuG+k5Icg92YE7zsteTzWLwgPVzaxeZD2f8hwhsu+wmL+jNqbpCRmktPteh3i2mg==", + "cpu": [ + "arm" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-linux-arm64": { + "version": "2.42.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.42.2.tgz", + "integrity": "sha512-BOxzI7sgEU5Dhq3o4SblFXdE9zScpz6EXc5Zwr1UDZvzgXZGosUtKVc7d1LmkrHP8Q2o18HcDWtF3WvJRb5Zpw==", + "cpu": [ + "arm64" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-linux-i686": { + "version": "2.42.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.42.2.tgz", + "integrity": "sha512-Sw/dQp5ZPvKnq3/y7wIJyxTUJYPGoTX/YeMbDs8BzDlu9to2LWV3K3r7hE7W1Lpbaw4tSquUHiQjP5QHCOS7aQ==", + "cpu": [ + "x86", + "ia32" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-linux-x64": { + "version": "2.42.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.42.2.tgz", + "integrity": "sha512-mU4zUspAal6TIwlNLBV5oq6yYqiENnCWSxtSQVzWs0Jyq97wtqGNG9U+QrnwjJZ+ta/hvye9fvL2X25D/RxHQw==", + "cpu": [ + "x64" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-win32-i686": { + "version": "2.42.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.42.2.tgz", + "integrity": "sha512-iHvFHPGqgJMNqXJoQpqttfsv2GI3cGodeTq4aoVLU/BT3+hXzbV0x1VpvvEhncJkDgDicJpFLM8sEPHb3b8abw==", + "cpu": [ + "x86", + "ia32" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-win32-x64": { + "version": "2.42.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.42.2.tgz", + "integrity": "sha512-vPPGHjYoaGmfrU7xhfFxG7qlTBacroz5NdT+0FmDn6692D8IvpNXl1K+eV3Kag44ipJBBeR8g1HRJyx/F/9ACw==", + "cpu": [ + "x64" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/core": { + "version": "9.28.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.28.1.tgz", + "integrity": "sha512-6q59r/71MeE+4StkvwdKAAyhBBNpWcii0HeiWBZ3l1gaFYQlb6bChjZJRZmxSzF5dnvkdF4duQbAC3JmjeIbPA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/nextjs": { + "version": "9.28.1", + "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-9.28.1.tgz", + "integrity": "sha512-3ryNddo0S+Ni2pcUx9u3hxhXvbGpjU8dLO8lemH3chlDMG787URD/IpO9o+mN/WXJcA/UnNFgDMebQ4bXSRj1g==", + "license": "MIT", + "dependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/semantic-conventions": "^1.34.0", + "@rollup/plugin-commonjs": "28.0.1", + "@sentry-internal/browser-utils": "9.28.1", + "@sentry/core": "9.28.1", + "@sentry/node": "9.28.1", + "@sentry/opentelemetry": "9.28.1", + "@sentry/react": "9.28.1", + "@sentry/vercel-edge": "9.28.1", + "@sentry/webpack-plugin": "3.5.0", + "chalk": "3.0.0", + "resolve": "1.22.8", + "rollup": "4.35.0", + "stacktrace-parser": "^0.1.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "next": "^13.2.0 || ^14.0 || ^15.0.0-rc.0" + } + }, + "node_modules/@sentry/nextjs/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/nextjs/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@sentry/node": { + "version": "9.28.1", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-9.28.1.tgz", + "integrity": "sha512-1bC8ywFPs1EIKzRlUhLoreTR/fUU45O+ezVNvOu0I6JURMwjyC8uT23f0Xkiolx4WjKZXER+d0el3HojPaYkYw==", + "license": "MIT", + "dependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^1.30.1", + "@opentelemetry/core": "^1.30.1", + "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation-amqplib": "^0.46.1", + "@opentelemetry/instrumentation-connect": "0.43.1", + "@opentelemetry/instrumentation-dataloader": "0.16.1", + "@opentelemetry/instrumentation-express": "0.47.1", + "@opentelemetry/instrumentation-fs": "0.19.1", + "@opentelemetry/instrumentation-generic-pool": "0.43.1", + "@opentelemetry/instrumentation-graphql": "0.47.1", + "@opentelemetry/instrumentation-hapi": "0.45.2", + "@opentelemetry/instrumentation-http": "0.57.2", + "@opentelemetry/instrumentation-ioredis": "0.47.1", + "@opentelemetry/instrumentation-kafkajs": "0.7.1", + "@opentelemetry/instrumentation-knex": "0.44.1", + "@opentelemetry/instrumentation-koa": "0.47.1", + "@opentelemetry/instrumentation-lru-memoizer": "0.44.1", + "@opentelemetry/instrumentation-mongodb": "0.52.0", + "@opentelemetry/instrumentation-mongoose": "0.46.1", + "@opentelemetry/instrumentation-mysql": "0.45.1", + "@opentelemetry/instrumentation-mysql2": "0.45.2", + "@opentelemetry/instrumentation-pg": "0.51.1", + "@opentelemetry/instrumentation-redis-4": "0.46.1", + "@opentelemetry/instrumentation-tedious": "0.18.1", + "@opentelemetry/instrumentation-undici": "0.10.1", + "@opentelemetry/resources": "^1.30.1", + "@opentelemetry/sdk-trace-base": "^1.30.1", + "@opentelemetry/semantic-conventions": "^1.34.0", + "@prisma/instrumentation": "6.8.2", + "@sentry/core": "9.28.1", + "@sentry/opentelemetry": "9.28.1", + "import-in-the-middle": "^1.13.1", + "minimatch": "^9.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/node/node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@sentry/node/node_modules/@opentelemetry/context-async-hooks": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz", + "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@sentry/node/node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@sentry/node/node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@sentry/node/node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@sentry/node/node_modules/@opentelemetry/resources": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", + "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@sentry/node/node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@sentry/node/node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", + "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@sentry/node/node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@sentry/node/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@sentry/node/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@sentry/opentelemetry": { + "version": "9.28.1", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-9.28.1.tgz", + "integrity": "sha512-1xxriB2diNSlNpkMosdgIKzPOPwAiyFg7XgEWKpLtDYWj7WVbLNyLkUWriFr4JgU40uZp3LW+sGgnshA48/zQQ==", + "license": "MIT", + "dependencies": { + "@sentry/core": "9.28.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.0.0", + "@opentelemetry/core": "^1.30.1 || ^2.0.0", + "@opentelemetry/instrumentation": "^0.57.1 || ^0.200.0", + "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.0.0", + "@opentelemetry/semantic-conventions": "^1.34.0" + } + }, + "node_modules/@sentry/react": { + "version": "9.28.1", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-9.28.1.tgz", + "integrity": "sha512-XnEURhb2wG7FFCGMuW/IJc8YeDMb9LM7cZSBwBDcplR11mCRsLpf4AGm6K1nWmAn5ZvWrXRO/TBAf9DNRAfnfg==", + "license": "MIT", + "dependencies": { + "@sentry/browser": "9.28.1", + "@sentry/core": "9.28.1", + "hoist-non-react-statics": "^3.3.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^16.14.0 || 17.x || 18.x || 19.x" + } + }, + "node_modules/@sentry/vercel-edge": { + "version": "9.28.1", + "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-9.28.1.tgz", + "integrity": "sha512-fX4Zc3uzpnJxcallZrWCvXFaMDBy710KlnPll3ja82QJVIhyzCf2ot109jGW8mKlpMXXBbDSKGZlY0v4pQW+lg==", + "license": "MIT", + "dependencies": { + "@opentelemetry/api": "^1.9.0", + "@sentry/core": "9.28.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/webpack-plugin": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-3.5.0.tgz", + "integrity": "sha512-xvclj0QY2HyU7uJLzOlHSrZQBDwfnGKJxp8mmlU4L7CwmK+8xMCqlO7tYZoqE4K/wU3c2xpXql70x8qmvNMxzQ==", + "license": "MIT", + "dependencies": { + "@sentry/bundler-plugin-core": "3.5.0", + "unplugin": "1.0.1", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "webpack": ">=4.40.0" + } + }, + "node_modules/@simplewebauthn/browser": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-11.0.0.tgz", + "integrity": "sha512-KEGCStrl08QC2I561BzxqGiwoknblP6O1YW7jApdXLPtIqZ+vgJYAv8ssLCdm1wD8HGAHd49CJLkUF8X70x/pg==", + "license": "MIT", + "dependencies": { + "@simplewebauthn/types": "^11.0.0" + } + }, + "node_modules/@simplewebauthn/types": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@simplewebauthn/types/-/types-11.0.0.tgz", + "integrity": "sha512-b2o0wC5u2rWts31dTgBkAtSNKGX0cvL6h8QedNsKmj8O4QoLFQFR3DBVBUlpyVEhYKA+mXGUaXbcOc4JdQ3HzA==", + "license": "MIT" + }, + "node_modules/@stackframe/stack": { + "version": "2.8.28", + "resolved": "https://registry.npmjs.org/@stackframe/stack/-/stack-2.8.28.tgz", + "integrity": "sha512-iAuamWNDFT3x8UVEG0We0nMOA9ecMWWEX+mq4lP9QB4bILY7soF2U7CZSY1t8ac2L22lACiSE9opgvQrbzyMmg==", + "dependencies": { + "@hookform/resolvers": "^3.3.4", + "@oslojs/otp": "^1.1.0", + "@simplewebauthn/browser": "^11.0.0", + "@stackframe/stack-sc": "2.8.28", + "@stackframe/stack-shared": "2.8.28", + "@stackframe/stack-ui": "2.8.28", + "@tanstack/react-table": "^8.20.5", + "browser-image-compression": "^2.0.2", + "color": "^4.2.3", + "cookie": "^0.6.0", + "jose": "^5.2.2", + "js-cookie": "^3.0.5", + "lucide-react": "^0.378.0", + "oauth4webapi": "^2.10.3", + "qrcode": "^1.5.4", + "react-easy-crop": "^5.4.1", + "react-hook-form": "^7.51.4", + "rimraf": "^5.0.5", + "tailwindcss-animate": "^1.0.7", + "tsx": "^4.7.2", + "yup": "^1.4.0" + }, + "peerDependencies": { + "@types/react": ">=18.2 || >=19.0.0-rc.0", + "@types/react-dom": ">=18.2 || >=19.0.0-rc.0", + "next": ">=14.1 || >=15.0.0-canary.0 || >=15.0.0-rc.0", + "react": ">=18.2 || >=19.0.0-rc.0", + "react-dom": ">=18.2 || >=19.0.0-rc.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@stackframe/stack-sc": { + "version": "2.8.28", + "resolved": "https://registry.npmjs.org/@stackframe/stack-sc/-/stack-sc-2.8.28.tgz", + "integrity": "sha512-PqWAUxzaotMeeHPdL2Jlx404BE9qDdkJOAaammE3LBh5RLzWXIQLhWjo+qNRU2uSPvcBKpFewsy3U+onQGh9Tw==", + "peerDependencies": { + "@types/react": ">=18.3.12 || >=19.0.0-rc.0", + "@types/react-dom": ">=18.3.1 || >=19.0.0-rc.0", + "next": ">=14.1 || >=15.0.0-rc.0", + "react": ">=18.2 || >=19.0.0-rc.0", + "react-dom": ">=18.2 || >=19.0.0-rc.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@stackframe/stack-shared": { + "version": "2.8.28", + "resolved": "https://registry.npmjs.org/@stackframe/stack-shared/-/stack-shared-2.8.28.tgz", + "integrity": "sha512-MnJ8ZTypS4CvwANX+xwITBI6AsfsePLE0L/nWwglX68A+Z1CR8LmNlcyh4yaPi9xy/GsBY8IDgzG9ke5byH74g==", + "dependencies": { + "@opentelemetry/api": "^1.9.0", + "@simplewebauthn/browser": "^11.0.0", + "async-mutex": "^0.5.0", + "bcryptjs": "^3.0.2", + "crc": "^4.3.2", + "elliptic": "^6.5.7", + "esbuild-wasm": "^0.20.2", + "ip-regex": "^5.0.0", + "jose": "^5.2.2", + "oauth4webapi": "^2.10.3", + "semver": "^7.6.3", + "uuid": "^9.0.1" + }, + "peerDependencies": { + "@types/react": ">=18.2 || >=19.0.0-rc.0", + "@types/react-dom": ">=18.2 || >=19.0.0-rc.0", + "react": ">=18.2 || >=19.0.0-rc.0", + "react-dom": ">=18.2 || >=19.0.0-rc.0", + "yup": "^1.4.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + }, + "react": { + "optional": true + }, + "yup": { + "optional": true + } + } + }, + "node_modules/@stackframe/stack-ui": { + "version": "2.8.28", + "resolved": "https://registry.npmjs.org/@stackframe/stack-ui/-/stack-ui-2.8.28.tgz", + "integrity": "sha512-4IcN/5K8rVnzJMP4Ewja2E6Ipy1XcO5kTAsgVeCRYujvTqpTUi+Wmx+C9Nqv+nIAz4WZzzJIdJNB5oTAonL3Cg==", + "dependencies": { + "@radix-ui/react-accordion": "^1.2.1", + "@radix-ui/react-alert-dialog": "^1.1.2", + "@radix-ui/react-aspect-ratio": "^1.1.0", + "@radix-ui/react-avatar": "^1.1.1", + "@radix-ui/react-checkbox": "^1.1.2", + "@radix-ui/react-collapsible": "^1.1.1", + "@radix-ui/react-context": "^1.1.1", + "@radix-ui/react-context-menu": "^2.2.2", + "@radix-ui/react-dialog": "^1.1.2", + "@radix-ui/react-dropdown-menu": "^2.1.2", + "@radix-ui/react-hover-card": "^1.1.2", + "@radix-ui/react-icons": "^1.3.1", + "@radix-ui/react-label": "^2.1.0", + "@radix-ui/react-menubar": "^1.1.2", + "@radix-ui/react-navigation-menu": "^1.2.1", + "@radix-ui/react-popover": "^1.1.2", + "@radix-ui/react-progress": "^1.1.0", + "@radix-ui/react-radio-group": "^1.2.1", + "@radix-ui/react-scroll-area": "^1.2.0", + "@radix-ui/react-select": "^2.1.2", + "@radix-ui/react-separator": "^1.1.0", + "@radix-ui/react-slider": "^1.2.1", + "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-switch": "^1.1.1", + "@radix-ui/react-tabs": "^1.1.1", + "@radix-ui/react-toast": "^1.2.2", + "@radix-ui/react-toggle": "^1.1.0", + "@radix-ui/react-toggle-group": "^1.1.0", + "@radix-ui/react-tooltip": "^1.1.3", + "@stackframe/stack-shared": "2.8.28", + "@tanstack/react-table": "^8.20.5", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "cmdk": "^1.0.4", + "date-fns": "^3.6.0", + "export-to-csv": "^1.4.0", + "input-otp": "^1.4.1", + "lucide-react": "^0.508.0", + "react-day-picker": "^9.6.7", + "react-hook-form": "^7.53.1", + "react-resizable-panels": "^2.1.6", + "tailwind-merge": "^2.5.4" + }, + "peerDependencies": { + "@types/react": ">=18.2.12 || >=19.0.0-rc.0", + "@types/react-dom": ">=18.2.12 || >=19.0.0-rc.0", + "react": ">=18.2 || >=19.0.0-rc.0", + "react-dom": ">=18.2 || >=19.0.0-rc.0", + "yup": "^1.4.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + }, + "yup": { + "optional": true + } + } + }, + "node_modules/@stackframe/stack-ui/node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/@stackframe/stack-ui/node_modules/lucide-react": { + "version": "0.508.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.508.0.tgz", + "integrity": "sha512-gcP16PnexqtOFrTtv98kVsGzTfnbPekzZiQfByi2S89xfk7E/4uKE1USZqccIp58v42LqkO7MuwpCqshwSrJCg==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@stackframe/stack-ui/node_modules/tailwind-merge": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", + "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/@stackframe/stack/node_modules/lucide-react": { + "version": "0.378.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.378.0.tgz", + "integrity": "sha512-u6EPU8juLUk9ytRcyapkWI18epAv3RU+6+TC23ivjR0e+glWKBobFeSgRwOIJihzktILQuy6E0E80P2jVTDR5g==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "license": "MIT" + }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", + "license": "MIT" + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "license": "Apache-2.0" + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.1.tgz", + "integrity": "sha512-xvlh4pvfG/bkv0fEtJDABAm1tjtSmSyi2QmS4zyj1EKNI1UiOYiUq1IphSwDsNJ5vJ9cWEGs4rJXpUdCN2kujQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.29.2", + "tailwindcss": "4.1.1" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.1.tgz", + "integrity": "sha512-7+YBgnPQ4+jv6B6WVOerJ6WOzDzNJXrRKDts674v6TKAqFqYRr9+EBtSziO7nNcwQ8JtoZNMeqA+WJDjtCM/7w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.1", + "@tailwindcss/oxide-darwin-arm64": "4.1.1", + "@tailwindcss/oxide-darwin-x64": "4.1.1", + "@tailwindcss/oxide-freebsd-x64": "4.1.1", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.1", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.1", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.1", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.1", + "@tailwindcss/oxide-linux-x64-musl": "4.1.1", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.1", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.1" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.1.tgz", + "integrity": "sha512-gTyRzfdParpoCU1yyUC/iN6XK6T0Ra4bDlF8Aeul5NP9cLzKEZDogdNVNGv5WZmCDkVol7qlex7TMmcfytMmmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.1.tgz", + "integrity": "sha512-dI0QbdMWBvLB3MtaTKetzUKG9CUUQow8JSP4Nm+OxVokeZ+N+f1OmZW/hW1LzMxpx9RQCBgSRL+IIvKRat5Wdg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.1.tgz", + "integrity": "sha512-2Y+NPQOTRBCItshPgY/CWg4bKi7E9evMg4bgdb6h9iZObCZLOe3doPcuSxGS3DB0dKyMFKE8pTdWtFUbxZBMSA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.1.tgz", + "integrity": "sha512-N97NGMsB/7CHShbc5ube4dcsW/bYENkBrg8yWi8ieN9boYVRdw3cZviVryV/Nfu9bKbBV9kUvduFF2qBI7rEqg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.1.tgz", + "integrity": "sha512-33Lk6KbHnUZbXqza6RWNFo9wqPQ4+H5BAn1CkUUfC1RZ1vYbyDN6+iJPj53wmnWJ3mhRI8jWt3Jt1fO02IVdUQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.1.tgz", + "integrity": "sha512-LyW35RzSUy+80WYScv03HKasAUmMFDaSbNpWfk1gG5gEE9kuRGnDzSrqMoLAmY/kzMCYP/1kqmUiAx8EFLkI2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.1.tgz", + "integrity": "sha512-1KPnDMlHdqjPTUSFjx55pafvs8RZXRgxfeRgUrukwDKkuj7gFk28vW3Mx65YdiugAc9NWs3VgueZWaM1Po6uGw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.1.tgz", + "integrity": "sha512-4WdzA+MRlsinEEE6yxNMLJxpw0kE9XVipbAKdTL8BeUpyC2TdA3TL46lBulXzKp3BIxh3nqyR/UCqzl5o+3waQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.1.tgz", + "integrity": "sha512-q7Ugbw3ARcjCW2VMUYrcMbJ6aMQuWPArBBE2EqC/swPZTdGADvMQSlvR0VKusUM4HoSsO7ZbvcZ53YwR57+AKw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.1.tgz", + "integrity": "sha512-0KpqsovgHcIzm7eAGzzEZsEs0/nPYXnRBv+aPq/GehpNQuE/NAQu+YgZXIIof+VflDFuyXOEnaFr7T5MZ1INhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.1.tgz", + "integrity": "sha512-B1mjeXNS26kBOHv5sXARf6Wd0PWHV9x1TDlW0ummrBUOUAxAy5wcy4Nii1wzNvCdvC448hgiL06ylhwAbNthmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.1.tgz", + "integrity": "sha512-GX9AEM+msH0i2Yh1b6CuDRaZRo3kmbvIrLbSfvJ53C3uaAgsQ//fTQAh9HMQ6t1a9zvoUptlYqG//plWsBQTCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.1.1", + "@tailwindcss/oxide": "4.1.1", + "postcss": "^8.4.41", + "tailwindcss": "4.1.1" + } + }, + "node_modules/@tanstack/react-table": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.21.3.tgz", + "integrity": "sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww==", + "license": "MIT", + "dependencies": { + "@tanstack/table-core": "8.21.3" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@tanstack/table-core": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.21.3.tgz", + "integrity": "sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mysql": { + "version": "2.15.26", + "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz", + "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "20.17.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.30.tgz", + "integrity": "sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT", + "peer": true + }, + "node_modules/@types/pg": { + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", + "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } + }, + "node_modules/@types/pg-pool": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.6.tgz", + "integrity": "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==", + "license": "MIT", + "dependencies": { + "@types/pg": "*" + } + }, + "node_modules/@types/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.0.tgz", + "integrity": "sha512-UaicktuQI+9UKyA4njtDOGBD/67t8YEBt2xdfqu8+gP9hqPUPsiXlNPcpS2gVdjmis5GKPG3fCxbQLVgxsQZ8w==", + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.1.tgz", + "integrity": "sha512-jFf/woGTVTjUJsl2O7hcopJ1r0upqoq/vIOoCj0yLh3RIXxWcljlpuZ+vEBRXsymD1jhfeJrlyTy/S1UW+4y1w==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/shimmer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", + "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==", + "license": "MIT" + }, + "node_modules/@types/source-map-support": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@types/source-map-support/-/source-map-support-0.5.10.tgz", + "integrity": "sha512-tgVP2H469x9zq34Z0m/fgPewGhg/MLClalNOiPIzQlXrSS2YrKu/xCdSCKnEDwkFha51VKEKB6A9wW26/ZNwzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "^0.6.0" + } + }, + "node_modules/@types/tedious": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz", + "integrity": "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.0.tgz", + "integrity": "sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/type-utils": "8.29.0", + "@typescript-eslint/utils": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.0.tgz", + "integrity": "sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/typescript-estree": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz", + "integrity": "sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.0.tgz", + "integrity": "sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.29.0", + "@typescript-eslint/utils": "8.29.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz", + "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz", + "integrity": "sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.0.tgz", + "integrity": "sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/typescript-estree": "8.29.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz", + "integrity": "sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.29.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.3.3.tgz", + "integrity": "sha512-EpRILdWr3/xDa/7MoyfO7JuBIJqpBMphtu4+80BK1bRfFcniVT74h3Z7q1+WOc92FuIAYatB1vn9TJR67sORGw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.3.3.tgz", + "integrity": "sha512-ntj/g7lPyqwinMJWZ+DKHBse8HhVxswGTmNgFKJtdgGub3M3zp5BSZ3bvMP+kBT6dnYJLSVlDqdwOq1P8i0+/g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.3.3.tgz", + "integrity": "sha512-l6BT8f2CU821EW7U8hSUK8XPq4bmyTlt9Mn4ERrfjJNoCw0/JoHAh9amZZtV3cwC3bwwIat+GUnrcHTG9+qixw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.3.3.tgz", + "integrity": "sha512-8ScEc5a4y7oE2BonRvzJ+2GSkBaYWyh0/Ko4Q25e/ix6ANpJNhwEPZvCR6GVRmsQAYMIfQvYLdM6YEN+qRjnAQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.3.3.tgz", + "integrity": "sha512-8qQ6l1VTzLNd3xb2IEXISOKwMGXDCzY/UNy/7SovFW2Sp0K3YbL7Ao7R18v6SQkLqQlhhqSBIFRk+u6+qu5R5A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.3.3.tgz", + "integrity": "sha512-v81R2wjqcWXJlQY23byqYHt9221h4anQ6wwN64oMD/WAE+FmxPHFZee5bhRkNVtzqO/q7wki33VFWlhiADwUeQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.3.3.tgz", + "integrity": "sha512-cAOx/j0u5coMg4oct/BwMzvWJdVciVauUvsd+GQB/1FZYKQZmqPy0EjJzJGbVzFc6gbnfEcSqvQE6gvbGf2N8Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.3.3.tgz", + "integrity": "sha512-mq2blqwErgDJD4gtFDlTX/HZ7lNP8YCHYFij2gkXPtMzrXxPW1hOtxL6xg4NWxvnj4bppppb0W3s/buvM55yfg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.3.3.tgz", + "integrity": "sha512-u0VRzfFYysarYHnztj2k2xr+eu9rmgoTUUgCCIT37Nr+j0A05Xk2c3RY8Mh5+DhCl2aYibihnaAEJHeR0UOFIQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.3.3.tgz", + "integrity": "sha512-OrVo5ZsG29kBF0Ug95a2KidS16PqAMmQNozM6InbquOfW/udouk063e25JVLqIBhHLB2WyBnixOQ19tmeC/hIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.3.3.tgz", + "integrity": "sha512-PYnmrwZ4HMp9SkrOhqPghY/aoL+Rtd4CQbr93GlrRTjK6kDzfMfgz3UH3jt6elrQAfupa1qyr1uXzeVmoEAxUA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.3.3.tgz", + "integrity": "sha512-81AnQY6fShmktQw4hWDUIilsKSdvr/acdJ5azAreu2IWNlaJOKphJSsUVWE+yCk6kBMoQyG9ZHCb/krb5K0PEA==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.7" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.3.3.tgz", + "integrity": "sha512-X/42BMNw7cW6xrB9syuP5RusRnWGoq+IqvJO8IDpp/BZg64J1uuIW6qA/1Cl13Y4LyLXbJVYbYNSKwR/FiHEng==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.3.3.tgz", + "integrity": "sha512-EGNnNGQxMU5aTN7js3ETYvuw882zcO+dsVjs+DwO2j/fRVKth87C8e2GzxW1L3+iWAXMyJhvFBKRavk9Og1Z6A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.3.3.tgz", + "integrity": "sha512-GraLbYqOJcmW1qY3osB+2YIiD62nVf2/bVLHZmrb4t/YSUwE03l7TwcDJl08T/Tm3SVhepX8RQkpzWbag/Sb4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0", + "peer": true + }, + "node_modules/@xyflow/react": { + "version": "12.5.5", + "resolved": "https://registry.npmjs.org/@xyflow/react/-/react-12.5.5.tgz", + "integrity": "sha512-mAtHuS4ktYBL1ph5AJt7X/VmpzzlmQBN3+OXxyT/1PzxwrVto6AKc3caerfxzwBsg3cA4J8lB63F3WLAuPMmHw==", + "license": "MIT", + "dependencies": { + "@xyflow/system": "0.0.55", + "classcat": "^5.0.3", + "zustand": "^4.4.0" + }, + "peerDependencies": { + "react": ">=17", + "react-dom": ">=17" + } + }, + "node_modules/@xyflow/system": { + "version": "0.0.55", + "resolved": "https://registry.npmjs.org/@xyflow/system/-/system-0.0.55.tgz", + "integrity": "sha512-6cngWlE4oMXm+zrsbJxerP3wUNUFJcv/cE5kDfu0qO55OWK3fAeSOLW9td3xEVQlomjIW5knds1MzeMnBeCfqw==", + "license": "MIT", + "dependencies": { + "@types/d3-drag": "^3.0.7", + "@types/d3-selection": "^3.0.10", + "@types/d3-transition": "^3.0.8", + "@types/d3-zoom": "^3.0.8", + "d3-drag": "^3.0.0", + "d3-selection": "^3.0.0", + "d3-zoom": "^3.0.0" + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "peer": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT", + "peer": true + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/async-mutex": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", + "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", + "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/bcryptjs": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-3.0.2.tgz", + "integrity": "sha512-k38b3XOZKv60C4E2hVsXTolJWfkGRMbILBIe2IBITXciy5bOsTKot5kDrf3ZfufQtQOUN5mXceUEpU1rTl9Uog==", + "license": "BSD-3-Clause", + "bin": { + "bcrypt": "bin/bcrypt" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "license": "MIT" + }, + "node_modules/browser-image-compression": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/browser-image-compression/-/browser-image-compression-2.0.2.tgz", + "integrity": "sha512-pBLlQyUf6yB8SmmngrcOw3EoS4RpQ1BcylI3T9Yqn7+4nrQTXJD4sJDe5ODnJdrvNMaio5OicFo75rDyJD2Ucw==", + "license": "MIT", + "dependencies": { + "uzip": "0.20201231.0" + } + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/c12": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/c12/-/c12-2.0.1.tgz", + "integrity": "sha512-Z4JgsKXHG37C6PYUtIxCfLJZvo6FyhHJoClwwb9ftUkLpPSkuYqn6Tr+vnaN8hymm0kIbcg6Ey3kv/Q71k5w/A==", + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.1", + "confbox": "^0.1.7", + "defu": "^6.1.4", + "dotenv": "^16.4.5", + "giget": "^1.2.3", + "jiti": "^2.3.0", + "mlly": "^1.7.1", + "ohash": "^1.1.4", + "pathe": "^1.1.2", + "perfect-debounce": "^1.0.0", + "pkg-types": "^1.2.0", + "rc9": "^2.1.2" + }, + "peerDependencies": { + "magicast": "^0.3.5" + }, + "peerDependenciesMeta": { + "magicast": { + "optional": true + } + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001709", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001709.tgz", + "integrity": "sha512-NgL3vUTnDrPCZ3zTahp4fsugQ4dc7EKTSzwQDPEel6DMoMnfH2jhry9n2Zm8onbSR+f/QtKHFOA+iAQu4kbtWA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "license": "MIT" + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/classcat": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.5.tgz", + "integrity": "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==", + "license": "MIT" + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cmdk": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.1.1.tgz", + "integrity": "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-id": "^1.1.0", + "@radix-ui/react-primitive": "^2.0.2" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.0.0.tgz", + "integrity": "sha512-oPYleIY8wmTVzkvQq10AEok6YcTC4sRUBl8F9gVuwchGVUCTbl/vhLTaQqutuuySYOsu8YTgV+OxKc/8Yvx+mQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/core-js": { + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.43.0.tgz", + "integrity": "sha512-N6wEbTTZSYOY2rYAn85CuvWWkCK6QweMn7/4Nr3w+gDBeBhk/x4EJeY6FPo4QzDoJZxVTv8U7CMvgWk6pOHHqA==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/crc": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/crc/-/crc-4.3.2.tgz", + "integrity": "sha512-uGDHf4KLLh2zsHa8D8hIQ1H/HtFQhyHrc0uhHBcoKGol/Xnb+MPYfUMw7cvON6ze/GUESTudKayDcJC5HnJv1A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "buffer": ">=6.0.3" + }, + "peerDependenciesMeta": { + "buffer": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/date-fns-jalali": { + "version": "4.1.0-0", + "resolved": "https://registry.npmjs.org/date-fns-jalali/-/date-fns-jalali-4.1.0-0.tgz", + "integrity": "sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==", + "license": "MIT" + }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "devOptional": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==", + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.137.tgz", + "integrity": "sha512-/QSJaU2JyIuTbbABAo/crOs+SuAZLS+fVVS10PVrIT9hrRkmZl8Hb0xPSkKRUUWHQtYzXHpQUW3Dy5hwMzGZkA==", + "license": "ISC" + }, + "node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", + "peer": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-ex/node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT", + "peer": true + }, + "node_modules/es-abstract": { + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "license": "MIT", + "peer": true + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-toolkit": { + "version": "1.39.9", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.39.9.tgz", + "integrity": "sha512-9OtbkZmTA2Qc9groyA1PUNeb6knVTkvB2RSdr/LcJXDL8IdEakaxwXLHXa7VX/Wj0GmdMJPR3WhnPGhiP3E+qg==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks" + ] + }, + "node_modules/esbuild": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.20.2.tgz", + "integrity": "sha512-7o6nmsEqlcXJXMNqnx5K+M4w4OPx7yTFXQHcJyeP3SkXb8p2T8N9E1ayK4vd/qDBepH6fuPoZwiFvZm8x5qv+w==", + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", + "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.2.0", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.23.0", + "@eslint/plugin-kit": "^0.2.7", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-next": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.3.3.tgz", + "integrity": "sha512-QJLv/Ouk2vZnxL4b67njJwTLjTf7uZRltI0LL4GERYR4qMF5z08+gxkfODAeaK7TiC6o+cER91bDaEnwrTWV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@next/eslint-plugin-next": "15.3.3", + "@rushstack/eslint-patch": "^1.10.3", + "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-react": "^7.37.0", + "eslint-plugin-react-hooks": "^5.0.0" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.0.tgz", + "integrity": "sha512-aV3/dVsT0/H9BtpNwbaqvl+0xGMRGzncLyhm793NFGvbwGGvzyAykqWZ8oZlZuGwuHkwJjhWJkG1cM3ynvd2pQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.12", + "unrs-resolver": "^1.3.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-simple-import-sort": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz", + "integrity": "sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-unused-imports": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.4.tgz", + "integrity": "sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0", + "eslint": "^9.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/export-to-csv": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/export-to-csv/-/export-to-csv-1.4.0.tgz", + "integrity": "sha512-6CX17Cu+rC2Fi2CyZ4CkgVG3hLl6BFsdAxfXiZkmDFIDY4mRx2y2spdeH6dqPHI9rP+AsHEfGeKz84Uuw7+Pmg==", + "license": "MIT", + "engines": { + "node": "^v12.20.0 || >=v14.13.0" + } + }, + "node_modules/fast-copy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", + "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-redact": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fflate": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", + "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==", + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT", + "peer": true + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", + "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded-parse": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/forwarded-parse/-/forwarded-parse-2.1.2.tgz", + "integrity": "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==", + "license": "MIT" + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", + "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/giget": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.5.tgz", + "integrity": "sha512-r1ekGw/Bgpi3HLV3h1MRBIlSAdHoIMklpaQ3OQLFcRw9PwAj2rqigvIbg+dBUI51OxVI2jsEtDywDBjSiuf7Ug==", + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.4.0", + "defu": "^6.1.4", + "node-fetch-native": "^1.6.6", + "nypm": "^0.5.4", + "pathe": "^2.0.3", + "tar": "^6.2.1" + }, + "bin": { + "giget": "dist/cli.mjs" + } + }, + "node_modules/giget/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause", + "peer": true + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/help-me": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", + "license": "MIT" + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-in-the-middle": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.14.0.tgz", + "integrity": "sha512-g5zLT0HaztRJWysayWYiUq/7E5H825QIiecMD2pI5QO7Wzr847l6GDvPvmZaDIdrDtS2w7qRczywxiK6SL5vRw==", + "license": "Apache-2.0", + "dependencies": { + "acorn": "^8.14.0", + "acorn-import-attributes": "^1.9.5", + "cjs-module-lexer": "^1.2.2", + "module-details-from-path": "^1.0.3" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/input-otp": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/input-otp/-/input-otp-1.4.2.tgz", + "integrity": "sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/ip-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", + "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jose": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-5.10.0.tgz", + "integrity": "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT", + "peer": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz", + "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==", + "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-darwin-arm64": "1.29.2", + "lightningcss-darwin-x64": "1.29.2", + "lightningcss-freebsd-x64": "1.29.2", + "lightningcss-linux-arm-gnueabihf": "1.29.2", + "lightningcss-linux-arm64-gnu": "1.29.2", + "lightningcss-linux-arm64-musl": "1.29.2", + "lightningcss-linux-x64-gnu": "1.29.2", + "lightningcss-linux-x64-musl": "1.29.2", + "lightningcss-win32-arm64-msvc": "1.29.2", + "lightningcss-win32-x64-msvc": "1.29.2" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz", + "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==", + "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.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz", + "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==", + "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.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz", + "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==", + "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.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz", + "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==", + "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.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz", + "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==", + "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.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz", + "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==", + "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.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz", + "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==", + "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.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz", + "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==", + "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.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz", + "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==", + "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.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz", + "integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==", + "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/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT", + "peer": true + }, + "node_modules/livekit-client": { + "version": "2.9.9", + "resolved": "https://registry.npmjs.org/livekit-client/-/livekit-client-2.9.9.tgz", + "integrity": "sha512-Mrm9Z/kPmJP5r4EMbzXPfB27gRP+tZtU7Zzen2o8u6w5N6FxaqXerRFqtXddGXaVzZouJOAg51/5A9u3saC/2A==", + "license": "Apache-2.0", + "dependencies": { + "@livekit/mutex": "1.1.1", + "@livekit/protocol": "1.34.0", + "events": "^3.3.0", + "loglevel": "^1.9.2", + "sdp-transform": "^2.15.0", + "ts-debounce": "^4.0.0", + "tslib": "2.8.1", + "typed-emitter": "^2.1.0", + "webrtc-adapter": "^9.0.1" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loglevel": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", + "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/lucide-react": { + "version": "0.487.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.487.0.tgz", + "integrity": "sha512-aKqhOQ+YmFnwq8dWgGjOuLc8V1R9/c/yOd+zDY4+ohsR2Jo05lSGc3WsstYPIzcTpeosN7LoCkLReUUITvaIvw==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT", + "peer": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT", + "peer": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mlly": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", + "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "pathe": "^2.0.1", + "pkg-types": "^1.3.0", + "ufo": "^1.5.4" + } + }, + "node_modules/mlly/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/module-details-from-path": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", + "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "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/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/next": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/next/-/next-15.3.3.tgz", + "integrity": "sha512-JqNj29hHNmCLtNvd090SyRbXJiivQ+58XjCcrC50Crb5g5u2zi7Y2YivbsEfzk6AtVI80akdOQbaMZwWB1Hthw==", + "license": "MIT", + "dependencies": { + "@next/env": "15.3.3", + "@swc/counter": "0.1.3", + "@swc/helpers": "0.5.15", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "15.3.3", + "@next/swc-darwin-x64": "15.3.3", + "@next/swc-linux-arm64-gnu": "15.3.3", + "@next/swc-linux-arm64-musl": "15.3.3", + "@next/swc-linux-x64-gnu": "15.3.3", + "@next/swc-linux-x64-musl": "15.3.3", + "@next/swc-win32-arm64-msvc": "15.3.3", + "@next/swc-win32-x64-msvc": "15.3.3", + "sharp": "^0.34.1" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next-themes": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", + "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "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.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz", + "integrity": "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-wheel": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", + "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==", + "license": "BSD-3-Clause" + }, + "node_modules/nypm": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.5.4.tgz", + "integrity": "sha512-X0SNNrZiGU8/e/zAB7sCTtdxWTMSIO73q+xuKgglm2Yvzwlo8UoC5FNySQFCvl84uPaeADkqHUZUkWy4aH4xOA==", + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.4.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "tinyexec": "^0.3.2", + "ufo": "^1.5.4" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": "^14.16.0 || >=16.10.0" + } + }, + "node_modules/nypm/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/oauth4webapi": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/oauth4webapi/-/oauth4webapi-2.17.0.tgz", + "integrity": "sha512-lbC0Z7uzAFNFyzEYRIC+pkSVvDHJTbEW+dYlSBAlCYDe6RxUkJ26bClhk8ocBZip1wfI9uKTe0fm4Ib4RHn6uQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ohash": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.6.tgz", + "integrity": "sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==", + "license": "MIT" + }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.0.tgz", + "integrity": "sha512-IpdytjudNuLv8nhlHs/UrVBhU0e78J0oIS/0AVdTbWxSOkFUVdsHC/NrorO6nXsQNDTT1kzDSOMJubBQviX18Q==", + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pino": { + "version": "9.9.2", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.9.2.tgz", + "integrity": "sha512-nepuunEhXfRllKa5w9PsNLjWayPsfO3jc6odPuoRaaJ/rb/YEvqhazOBZFzK0gmaHIFCMggvDSqnIcH8dfcGTA==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^2.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^5.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^3.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", + "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", + "license": "MIT", + "dependencies": { + "split2": "^4.0.0" + } + }, + "node_modules/pino-pretty": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-13.1.1.tgz", + "integrity": "sha512-TNNEOg0eA0u+/WuqH0MH0Xui7uqVk9D74ESOpjtebSQYbNWJk/dIxCXIxFsNfeN53JmtWqYHP2OrIZjT/CBEnA==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.2", + "fast-safe-stringify": "^2.1.1", + "help-me": "^5.0.0", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^2.0.0", + "pump": "^3.0.0", + "secure-json-parse": "^4.0.0", + "sonic-boom": "^4.0.1", + "strip-json-comments": "^5.0.2" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/pino-pretty/node_modules/strip-json-comments": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.3.tgz", + "integrity": "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pino-std-serializers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", + "license": "MIT" + }, + "node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/pkg-types/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "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.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/posthog-js": { + "version": "1.255.1", + "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.255.1.tgz", + "integrity": "sha512-KMh0o9MhORhEZVjXpktXB5rJ8PfDk+poqBoTSoLzWgNjhJf6D8jcyB9jUMA6vVPfn4YeepVX5NuclDRqOwr5Mw==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "core-js": "^3.38.1", + "fflate": "^0.4.8", + "preact": "^10.19.3", + "web-vitals": "^4.2.4" + }, + "peerDependencies": { + "@rrweb/types": "2.0.0-alpha.17", + "rrweb-snapshot": "2.0.0-alpha.17" + }, + "peerDependenciesMeta": { + "@rrweb/types": { + "optional": true + }, + "rrweb-snapshot": { + "optional": true + } + } + }, + "node_modules/posthog-node": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-5.1.1.tgz", + "integrity": "sha512-6VISkNdxO24ehXiDA4dugyCSIV7lpGVaEu5kn/dlAj+SJ1lgcDru9PQ8p/+GSXsXVxohd1t7kHL2JKc9NoGb0w==", + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/preact": { + "version": "10.26.9", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.26.9.tgz", + "integrity": "sha512-SSjF9vcnF27mJK1XyFMNJzFd5u3pQiATFqoaDy03XuN00u4ziveVVEGt5RKJrDR8MHE/wJo9Nnad56RLzS2RMA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process-warning": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-expr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", + "license": "MIT" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", + "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", + "license": "MIT", + "dependencies": { + "dijkstrajs": "^1.0.1", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rc9": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz", + "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==", + "license": "MIT", + "dependencies": { + "defu": "^6.1.4", + "destr": "^2.0.3" + } + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-day-picker": { + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-9.8.0.tgz", + "integrity": "sha512-E0yhhg7R+pdgbl/2toTb0xBhsEAtmAx1l7qjIWYfcxOy8w4rTSVfbtBoSzVVhPwKP/5E9iL38LivzoE3AQDhCQ==", + "license": "MIT", + "dependencies": { + "@date-fns/tz": "1.2.0", + "date-fns": "4.1.0", + "date-fns-jalali": "4.1.0-0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/gpbl" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/react-easy-crop": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-easy-crop/-/react-easy-crop-5.5.0.tgz", + "integrity": "sha512-OZzU+yXMhe69vLkDex+5QxcfT94FdcgVCyW2dBUw35ZoC3Is42TUxUy04w8nH1mfMKaizVdC3rh/wUfNW1mK4w==", + "license": "MIT", + "dependencies": { + "normalize-wheel": "^1.0.1", + "tslib": "^2.0.1" + }, + "peerDependencies": { + "react": ">=16.4.0", + "react-dom": ">=16.4.0" + } + }, + "node_modules/react-hook-form": { + "version": "7.56.4", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.56.4.tgz", + "integrity": "sha512-Rob7Ftz2vyZ/ZGsQZPaRdIefkgOSrQSPXfqBdvOPwJfoGnjwRJUs7EM7Kc1mcoDv3NOtqBzPGbcMB8CGn9CKgw==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, + "node_modules/react-international-phone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/react-international-phone/-/react-international-phone-4.5.0.tgz", + "integrity": "sha512-wjwHv+VfiwM49B5/6El4Z5vZKmf3ILpUeiOCI9X+b0Dq4g5nL8gROcwCdVcTXywxznbDSoxSassBX3i9tPZX6g==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react-redux": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", + "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", + "license": "MIT", + "dependencies": { + "@types/use-sync-external-store": "^0.0.6", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25 || ^19", + "react": "^18.0 || ^19", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz", + "integrity": "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-resizable-panels": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-2.1.9.tgz", + "integrity": "sha512-z77+X08YDIrgAes4jl8xhnUu1LNIRp4+E7cv4xHmLOxxUPO/ML7PSrE813b90vj7xvQ1lcf7g2uA9GeMZonjhQ==", + "license": "MIT", + "peerDependencies": { + "react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/react-select": { + "version": "5.10.2", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.10.2.tgz", + "integrity": "sha512-Z33nHdEFWq9tfnfVXaiM12rbJmk+QjFEztWLtmXqQhz6Al4UZZ9xc0wiatmGtUOCCnHN0WizL3tCMYRENX4rVQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.12.0", + "@emotion/cache": "^11.4.0", + "@emotion/react": "^11.8.1", + "@floating-ui/dom": "^1.0.1", + "@types/react-transition-group": "^4.4.0", + "memoize-one": "^6.0.0", + "prop-types": "^15.6.0", + "react-transition-group": "^4.3.0", + "use-isomorphic-layout-effect": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-timezone-select": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/react-timezone-select/-/react-timezone-select-3.2.8.tgz", + "integrity": "sha512-efEIVmYAHtm+oS+YlE/9DbieMka1Lop0v1LsW1TdLq0yCBnnAzROKDUY09CICY8TCijZlo0fk+wHZZkV5NpVNw==", + "license": "MIT", + "dependencies": { + "spacetime": "^7.6.0", + "timezone-soft": "^1.5.2" + }, + "peerDependencies": { + "react": "^16 || ^17.0.1 || ^18 || ^19.0.0-0", + "react-dom": "^16 || ^17.0.1 || ^18 || ^19.0.0-0", + "react-select": "^5.8.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/recharts": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-3.1.2.tgz", + "integrity": "sha512-vhNbYwaxNbk/IATK0Ki29k3qvTkGqwvCgyQAQ9MavvvBwjvKnMTswdbklJpcOAoMPN/qxF3Lyqob0zO+ZXkZ4g==", + "license": "MIT", + "dependencies": { + "@reduxjs/toolkit": "1.x.x || 2.x.x", + "clsx": "^2.1.1", + "decimal.js-light": "^2.5.1", + "es-toolkit": "^1.39.3", + "eventemitter3": "^5.0.1", + "immer": "^10.1.1", + "react-redux": "8.x.x || 9.x.x", + "reselect": "5.1.1", + "tiny-invariant": "^1.3.3", + "use-sync-external-store": "^1.2.2", + "victory-vendor": "^37.0.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "license": "MIT", + "peerDependencies": { + "redux": "^5.0.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT", + "peer": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-in-the-middle": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.2.tgz", + "integrity": "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "license": "ISC" + }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "license": "ISC", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.35.0.tgz", + "integrity": "sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.35.0", + "@rollup/rollup-android-arm64": "4.35.0", + "@rollup/rollup-darwin-arm64": "4.35.0", + "@rollup/rollup-darwin-x64": "4.35.0", + "@rollup/rollup-freebsd-arm64": "4.35.0", + "@rollup/rollup-freebsd-x64": "4.35.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.35.0", + "@rollup/rollup-linux-arm-musleabihf": "4.35.0", + "@rollup/rollup-linux-arm64-gnu": "4.35.0", + "@rollup/rollup-linux-arm64-musl": "4.35.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.35.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.35.0", + "@rollup/rollup-linux-riscv64-gnu": "4.35.0", + "@rollup/rollup-linux-s390x-gnu": "4.35.0", + "@rollup/rollup-linux-x64-gnu": "4.35.0", + "@rollup/rollup-linux-x64-musl": "4.35.0", + "@rollup/rollup-win32-arm64-msvc": "4.35.0", + "@rollup/rollup-win32-ia32-msvc": "4.35.0", + "@rollup/rollup-win32-x64-msvc": "4.35.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peer": true + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" + }, + "node_modules/schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT", + "peer": true + }, + "node_modules/sdp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/sdp/-/sdp-3.2.0.tgz", + "integrity": "sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==", + "license": "MIT" + }, + "node_modules/sdp-transform": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/sdp-transform/-/sdp-transform-2.15.0.tgz", + "integrity": "sha512-KrOH82c/W+GYQ0LHqtr3caRpM3ITglq3ljGUIb8LTki7ByacJZ9z+piSGiwZDsRyhQbYBOBJgr2k6X4BZXi3Kw==", + "license": "MIT", + "bin": { + "sdp-verify": "checker.js" + } + }, + "node_modules/secure-json-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.0.0.tgz", + "integrity": "sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shadcn-ui": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/shadcn-ui/-/shadcn-ui-0.9.5.tgz", + "integrity": "sha512-dsBQWpdLLYCdSdmvOmu53nJhhWnQD1OiblhuhkI4rPYxPKTyfbmZ2NTJHWMu1fXN9PTfN6IVK5vvh+BrjHJx2g==", + "license": "MIT", + "dependencies": { + "chalk": "^5.4.1" + }, + "bin": { + "shadcn-ui": "dist/index.js" + } + }, + "node_modules/shadcn-ui/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/sharp": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.2.tgz", + "integrity": "sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.4", + "semver": "^7.7.2" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.2", + "@img/sharp-darwin-x64": "0.34.2", + "@img/sharp-libvips-darwin-arm64": "1.1.0", + "@img/sharp-libvips-darwin-x64": "1.1.0", + "@img/sharp-libvips-linux-arm": "1.1.0", + "@img/sharp-libvips-linux-arm64": "1.1.0", + "@img/sharp-libvips-linux-ppc64": "1.1.0", + "@img/sharp-libvips-linux-s390x": "1.1.0", + "@img/sharp-libvips-linux-x64": "1.1.0", + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0", + "@img/sharp-libvips-linuxmusl-x64": "1.1.0", + "@img/sharp-linux-arm": "0.34.2", + "@img/sharp-linux-arm64": "0.34.2", + "@img/sharp-linux-s390x": "0.34.2", + "@img/sharp-linux-x64": "0.34.2", + "@img/sharp-linuxmusl-arm64": "0.34.2", + "@img/sharp-linuxmusl-x64": "0.34.2", + "@img/sharp-wasm32": "0.34.2", + "@img/sharp-win32-arm64": "0.34.2", + "@img/sharp-win32-ia32": "0.34.2", + "@img/sharp-win32-x64": "0.34.2" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", + "license": "BSD-2-Clause" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/sonic-boom": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/sonner": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-2.0.5.tgz", + "integrity": "sha512-YwbHQO6cSso3HBXlbCkgrgzDNIhws14r4MO87Ofy+cV2X7ES4pOoAK3+veSmVTvqNx1BWUxlhPmZzP00Crk2aQ==", + "license": "MIT", + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spacetime": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-7.10.0.tgz", + "integrity": "sha512-tanJSLq0/+Qvq1bmK0Nh2Ppk0lFOkGwpes29/64E6hyK4kn5d6LPt65Eidm2Xaf3gLvmG8KaXh8LmeymPlw0Aw==", + "license": "Apache-2.0" + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/stacktrace-parser": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz", + "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "license": "MIT", + "peer": true + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwind-merge": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.2.0.tgz", + "integrity": "sha512-FQT/OVqCD+7edmmJpsgCsY820RTD5AkBryuG5IUqR5YQZSdj5xlH5nLgH7YPths7WsLPSpSBNneJdM8aS8aeFA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.1.tgz", + "integrity": "sha512-QNbdmeS979Efzim2g/bEvfuh+fTcIdp1y7gA+sb6OYSW74rt7Cr7M78AKdf6HqWT3d5AiTb7SwTT3sLQxr4/qw==", + "license": "MIT" + }, + "node_modules/tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "license": "MIT", + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.42.0.tgz", + "integrity": "sha512-UYCvU9YQW2f/Vwl+P0GfhxJxbUGLwd+5QrrGgLajzWAtC/23AX0vcise32kkP7Eu0Wu9VlzzHAXkLObgjQfFlQ==", + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.14.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT", + "peer": true + }, + "node_modules/thread-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", + "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", + "license": "MIT", + "dependencies": { + "real-require": "^0.2.0" + } + }, + "node_modules/timezone-soft": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/timezone-soft/-/timezone-soft-1.5.2.tgz", + "integrity": "sha512-BUr+CfBfeWXJwFAuEzPO9uF+v6sy3pL5SKLkDg4vdEhsyXgbBnpFoBCW8oEKSNTqNq9YHbVOjNb31xE7WyGmrA==", + "license": "MIT" + }, + "node_modules/tiny-case": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", + "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==", + "license": "MIT" + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", + "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.3", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", + "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "license": "MIT" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-debounce": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ts-debounce/-/ts-debounce-4.0.0.tgz", + "integrity": "sha512-+1iDGY6NmOGidq7i7xZGA4cm8DAa6fqdYcvO5Z6yBevH++Bdo9Qt/mN0TzHUgcCcKv1gmh9+W5dHqz8pMWbCbg==", + "license": "MIT" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "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==", + "license": "0BSD" + }, + "node_modules/tsx": { + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz", + "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", + "license": "MIT", + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tw-animate-css": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.2.5.tgz", + "integrity": "sha512-ABzjfgVo+fDbhRREGL4KQZUqqdPgvc5zVrLyeW9/6mVqvaDepXc7EvedA+pYmMnIOsUAQMwcWzNvom26J2qYvQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Wombosvideo" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-2.1.0.tgz", + "integrity": "sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==", + "license": "MIT", + "optionalDependencies": { + "rxjs": "*" + } + }, + "node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", + "license": "MIT" + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "license": "MIT" + }, + "node_modules/unplugin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.0.1.tgz", + "integrity": "sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==", + "license": "MIT", + "dependencies": { + "acorn": "^8.8.1", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.5.0" + } + }, + "node_modules/unplugin/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/unplugin/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/unplugin/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/unrs-resolver": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.3.3.tgz", + "integrity": "sha512-PFLAGQzYlyjniXdbmQ3dnGMZJXX5yrl2YS4DLRfR3BhgUsE1zpRIrccp9XMOGRfIHpdFvCn/nr5N1KMVda4x3A==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/JounQin" + }, + "optionalDependencies": { + "@unrs/resolver-binding-darwin-arm64": "1.3.3", + "@unrs/resolver-binding-darwin-x64": "1.3.3", + "@unrs/resolver-binding-freebsd-x64": "1.3.3", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.3.3", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.3.3", + "@unrs/resolver-binding-linux-arm64-gnu": "1.3.3", + "@unrs/resolver-binding-linux-arm64-musl": "1.3.3", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.3.3", + "@unrs/resolver-binding-linux-s390x-gnu": "1.3.3", + "@unrs/resolver-binding-linux-x64-gnu": "1.3.3", + "@unrs/resolver-binding-linux-x64-musl": "1.3.3", + "@unrs/resolver-binding-wasm32-wasi": "1.3.3", + "@unrs/resolver-binding-win32-arm64-msvc": "1.3.3", + "@unrs/resolver-binding-win32-ia32-msvc": "1.3.3", + "@unrs/resolver-binding-win32-x64-msvc": "1.3.3" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.1.tgz", + "integrity": "sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/usehooks-ts": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-3.1.1.tgz", + "integrity": "sha512-I4diPp9Cq6ieSUH2wu+fDAVQO43xwtulo+fKEidHUwZPnYImbtkTjzIJYcDcJqxgmX31GVqNFURodvcgHcW0pA==", + "license": "MIT", + "dependencies": { + "lodash.debounce": "^4.0.8" + }, + "engines": { + "node": ">=16.15.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/uzip": { + "version": "0.20201231.0", + "resolved": "https://registry.npmjs.org/uzip/-/uzip-0.20201231.0.tgz", + "integrity": "sha512-OZeJfZP+R0z9D6TmBgLq2LHzSSptGMGDGigGiEe0pr8UBe/7fdflgHlHBNDASTXB5jnFuxHpNaJywSg8YFeGng==", + "license": "MIT" + }, + "node_modules/victory-vendor": { + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz", + "integrity": "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/watchpack": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", + "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "license": "MIT", + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/web-vitals": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-4.2.4.tgz", + "integrity": "sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==", + "license": "Apache-2.0" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/webpack": { + "version": "5.99.9", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz", + "integrity": "sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-sources": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.2.tgz", + "integrity": "sha512-ykKKus8lqlgXX/1WjudpIEjqsafjOTcOJqxnAbMLAu/KCsDCJ6GBtvscewvTkrn24HsnvFwrSCbenFrhtcCsAA==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz", + "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==", + "license": "MIT" + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/webrtc-adapter": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/webrtc-adapter/-/webrtc-adapter-9.0.1.tgz", + "integrity": "sha512-1AQO+d4ElfVSXyzNVTOewgGT/tAomwwztX/6e3totvyyzXPvXIIuUUjAmyZGbKBKbZOXauuJooZm3g6IuFuiNQ==", + "license": "BSD-3-Clause", + "dependencies": { + "sdp": "^3.2.0" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">=3.10.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "license": "ISC" + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "license": "ISC" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "peer": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yup": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.7.0.tgz", + "integrity": "sha512-VJce62dBd+JQvoc+fCVq+KZfPHr+hXaxCcVgotfwWvlR0Ja3ffYKaJBT8rptPOSKOGJDCUnW2C2JWpud7aRP6Q==", + "license": "MIT", + "dependencies": { + "property-expr": "^2.0.5", + "tiny-case": "^1.0.3", + "toposort": "^2.0.2", + "type-fest": "^2.19.0" + } + }, + "node_modules/zustand": { + "version": "4.5.6", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.6.tgz", + "integrity": "sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.2.2" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + } + } +} diff --git a/ui/package.json b/ui/package.json new file mode 100644 index 0000000..b28a05e --- /dev/null +++ b/ui/package.json @@ -0,0 +1,73 @@ +{ + "name": "ui", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "NODE_OPTIONS='--enable-source-maps' next dev --turbopack", + "build": "next build", + "start": "next start", + "lint": "next lint", + "fix-lint": "npx eslint --fix . --ignore-pattern '.next/*' --ignore-pattern 'node_modules/*'", + "generate-client": "openapi-ts" + }, + "dependencies": { + "@dagrejs/dagre": "^1.1.4", + "@hey-api/client-fetch": "^0.10.0", + "@livekit/components-react": "^2.9.0", + "@nangohq/frontend": "^0.60.3", + "@radix-ui/react-checkbox": "^1.3.2", + "@radix-ui/react-dialog": "^1.1.13", + "@radix-ui/react-dropdown-menu": "^2.1.7", + "@radix-ui/react-label": "^2.1.3", + "@radix-ui/react-popover": "^1.1.14", + "@radix-ui/react-progress": "^1.1.7", + "@radix-ui/react-radio-group": "^1.3.7", + "@radix-ui/react-select": "^2.2.2", + "@radix-ui/react-separator": "^1.1.3", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-switch": "^1.1.4", + "@radix-ui/react-tooltip": "^1.2.0", + "@sentry/nextjs": "^9.28.1", + "@stackframe/stack": "^2.8.28", + "@xyflow/react": "^12.5.5", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "date-fns": "^4.1.0", + "livekit-client": "^2.9.9", + "lucide-react": "^0.487.0", + "next": "^15.3.3", + "next-themes": "^0.4.6", + "pino": "^9.9.2", + "pino-pretty": "^13.1.1", + "posthog-js": "^1.255.1", + "posthog-node": "^5.1.1", + "react": "^19.1.0", + "react-day-picker": "^9.8.0", + "react-dom": "^19.1.0", + "react-hook-form": "^7.56.4", + "react-international-phone": "^4.5.0", + "react-timezone-select": "^3.2.8", + "recharts": "^3.1.2", + "shadcn-ui": "^0.9.5", + "sonner": "^2.0.5", + "tailwind-merge": "^3.2.0", + "tailwindcss-animate": "^1.0.7", + "tw-animate-css": "^1.2.5" + }, + "devDependencies": { + "@eslint/eslintrc": "^3", + "@hey-api/openapi-ts": "^0.66.2", + "@tailwindcss/postcss": "^4", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "@types/source-map-support": "^0.5.10", + "eslint": "^9", + "eslint-config-next": "^15.3.3", + "eslint-plugin-simple-import-sort": "^12.1.1", + "eslint-plugin-unused-imports": "^4.1.4", + "source-map-support": "^0.5.21", + "tailwindcss": "^4", + "typescript": "^5" + } +} diff --git a/ui/postcss.config.mjs b/ui/postcss.config.mjs new file mode 100644 index 0000000..c7bcb4b --- /dev/null +++ b/ui/postcss.config.mjs @@ -0,0 +1,5 @@ +const config = { + plugins: ["@tailwindcss/postcss"], +}; + +export default config; diff --git a/ui/public/axiom_icon.svg b/ui/public/axiom_icon.svg new file mode 100644 index 0000000..8a21767 --- /dev/null +++ b/ui/public/axiom_icon.svg @@ -0,0 +1 @@ + diff --git a/ui/public/file.svg b/ui/public/file.svg new file mode 100644 index 0000000..004145c --- /dev/null +++ b/ui/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/public/globe.svg b/ui/public/globe.svg new file mode 100644 index 0000000..567f17b --- /dev/null +++ b/ui/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/public/langfuse_icon.svg b/ui/public/langfuse_icon.svg new file mode 100644 index 0000000..9842bdc --- /dev/null +++ b/ui/public/langfuse_icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/ui/public/next.svg b/ui/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/ui/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/public/vercel.svg b/ui/public/vercel.svg new file mode 100644 index 0000000..7705396 --- /dev/null +++ b/ui/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/public/window.svg b/ui/public/window.svg new file mode 100644 index 0000000..b2b2a44 --- /dev/null +++ b/ui/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/sentry.edge.config.ts b/ui/sentry.edge.config.ts new file mode 100644 index 0000000..da0fc30 --- /dev/null +++ b/ui/sentry.edge.config.ts @@ -0,0 +1,23 @@ +// This file configures the initialization of Sentry for edge features (middleware, edge routes, and so on). +// The config you add here will be used whenever one of the edge features is loaded. +// Note that this config is unrelated to the Vercel Edge Runtime and is also required when running locally. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from "@sentry/nextjs"; + +// Only initialize Sentry if explicitly enabled and DSN is provided +const enableSentry = process.env.NEXT_PUBLIC_ENABLE_SENTRY === 'true' && + process.env.NEXT_PUBLIC_SENTRY_DSN; + +if (enableSentry) { + Sentry.init({ + dsn: process.env.NEXT_PUBLIC_SENTRY_DSN, + + // Setting this option to true will print useful information to the console while you're setting up Sentry. + debug: false, + enabled: process.env.NEXT_PUBLIC_NODE_ENV === 'production' + }); + console.log('Sentry initialized for edge runtime error tracking'); +} else { + console.log('Sentry disabled on edge runtime (NEXT_PUBLIC_ENABLE_SENTRY=false or DSN not configured)'); +} diff --git a/ui/sentry.server.config.ts b/ui/sentry.server.config.ts new file mode 100644 index 0000000..6f4723d --- /dev/null +++ b/ui/sentry.server.config.ts @@ -0,0 +1,22 @@ +// This file configures the initialization of Sentry on the server. +// The config you add here will be used whenever the server handles a request. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from "@sentry/nextjs"; + +// Only initialize Sentry if explicitly enabled and DSN is provided +const enableSentry = process.env.NEXT_PUBLIC_ENABLE_SENTRY === 'true' && + process.env.NEXT_PUBLIC_SENTRY_DSN; + +if (enableSentry) { + Sentry.init({ + dsn: process.env.NEXT_PUBLIC_SENTRY_DSN, + + // Setting this option to true will print useful information to the console while you're setting up Sentry. + debug: false, + enabled: process.env.NEXT_PUBLIC_NODE_ENV === 'production' + }); + console.log('Sentry initialized for server-side error tracking'); +} else { + console.log('Sentry disabled on server (NEXT_PUBLIC_ENABLE_SENTRY=false or DSN not configured)'); +} diff --git a/ui/src/app/after-sign-in/page.tsx b/ui/src/app/after-sign-in/page.tsx new file mode 100644 index 0000000..10ce7ea --- /dev/null +++ b/ui/src/app/after-sign-in/page.tsx @@ -0,0 +1,20 @@ +import { redirect } from "next/navigation"; + +import { getServerAuthProvider, getServerUser } from "@/lib/auth/server"; +import { getRedirectUrl } from "@/lib/utils"; + +export default async function AfterSignInPage() { + const authProvider = getServerAuthProvider(); + const user = await getServerUser(); + + if (authProvider === 'stack' && user && 'getAuthJson' in user) { + const token = await user.getAuthJson(); + const permissions = 'listPermissions' in user && 'selectedTeam' in user + ? await user.listPermissions(user.selectedTeam!) ?? [] + : []; + const redirectUrl = await getRedirectUrl(token?.accessToken ?? "", permissions); + redirect(redirectUrl); + } + // For local provider or if user is not available, redirect to create-workflow + redirect('/create-workflow'); +} diff --git a/ui/src/app/api-keys/layout.tsx b/ui/src/app/api-keys/layout.tsx new file mode 100644 index 0000000..a3b46b5 --- /dev/null +++ b/ui/src/app/api-keys/layout.tsx @@ -0,0 +1,14 @@ +import BaseHeader from "@/components/header/BaseHeader"; + +export default function APIKeysLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + + {children} + + ); +} diff --git a/ui/src/app/api-keys/page.tsx b/ui/src/app/api-keys/page.tsx new file mode 100644 index 0000000..9991d12 --- /dev/null +++ b/ui/src/app/api-keys/page.tsx @@ -0,0 +1,677 @@ +"use client"; + +import { Copy, Eye, EyeOff, Key, Plus, RefreshCw, Trash2 } from 'lucide-react'; +import { useCallback, useEffect, useState } from 'react'; + +import { + archiveApiKeyApiV1UserApiKeysApiKeyIdDelete, + archiveServiceKeyApiV1UserServiceKeysServiceKeyIdDelete, + createApiKeyApiV1UserApiKeysPost, + createServiceKeyApiV1UserServiceKeysPost, + getApiKeysApiV1UserApiKeysGet, + getServiceKeysApiV1UserServiceKeysGet, + reactivateApiKeyApiV1UserApiKeysApiKeyIdReactivatePut +} from '@/client/sdk.gen'; +import type { ApiKeyResponse, CreateApiKeyResponse, CreateServiceKeyResponse,ServiceKeyResponse } from '@/client/types.gen'; +import { Badge } from '@/components/ui/badge'; +import { Button } from '@/components/ui/button'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; +import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; +import { Skeleton } from '@/components/ui/skeleton'; +import { useAuth } from '@/lib/auth'; + +export default function APIKeysPage() { + const { user, getAccessToken, redirectToLogin, loading } = useAuth(); + + const [apiKeys, setApiKeys] = useState([]); + const [serviceKeys, setServiceKeys] = useState([]); + const [isLoading, setIsLoading] = useState(true); + const [isServiceKeysLoading, setIsServiceKeysLoading] = useState(true); + const [showArchived, setShowArchived] = useState(false); + const [showServiceArchived, setShowServiceArchived] = useState(false); + const [isCreateDialogOpen, setIsCreateDialogOpen] = useState(false); + const [isCreateServiceDialogOpen, setIsCreateServiceDialogOpen] = useState(false); + const [newKeyName, setNewKeyName] = useState(''); + const [newServiceKeyName, setNewServiceKeyName] = useState(''); + const [createdKey, setCreatedKey] = useState(null); + const [createdServiceKey, setCreatedServiceKey] = useState(null); + const [showCreatedKeyDialog, setShowCreatedKeyDialog] = useState(false); + const [showCreatedServiceKeyDialog, setShowCreatedServiceKeyDialog] = useState(false); + const [error, setError] = useState(null); + + // Redirect if not authenticated + useEffect(() => { + if (!loading && !user) { + redirectToLogin(); + } + }, [loading, user, redirectToLogin]); + + const fetchApiKeys = useCallback(async () => { + if (!user) return; + + try { + setIsLoading(true); + setError(null); + const accessToken = await getAccessToken(); + + const response = await getApiKeysApiV1UserApiKeysGet({ + query: { + + include_archived: showArchived + + }, + headers: { + 'Authorization': `Bearer ${accessToken}`, + } + }); + + if (response.data) { + setApiKeys(response.data); + } + } catch (err) { + setError('Failed to fetch API keys'); + console.error('Error fetching API keys:', err); + } finally { + setIsLoading(false); + } + }, [user, getAccessToken, showArchived]); + + const fetchServiceKeys = useCallback(async () => { + if (!user) return; + + try { + setIsServiceKeysLoading(true); + setError(null); + const accessToken = await getAccessToken(); + + const response = await getServiceKeysApiV1UserServiceKeysGet({ + query: { + include_archived: showServiceArchived + }, + headers: { + 'Authorization': `Bearer ${accessToken}`, + } + }); + + if (response.data) { + setServiceKeys(response.data); + } + } catch (err) { + setError('Failed to fetch service keys'); + console.error('Error fetching service keys:', err); + } finally { + setIsServiceKeysLoading(false); + } + }, [user, getAccessToken, showServiceArchived]); + + useEffect(() => { + fetchApiKeys(); + }, [fetchApiKeys]); + + useEffect(() => { + fetchServiceKeys(); + }, [fetchServiceKeys]); + + const handleCreateKey = async () => { + if (!newKeyName.trim()) { + setError('Please enter a name for the API key'); + return; + } + + try { + setError(null); + const accessToken = await getAccessToken(); + + const response = await createApiKeyApiV1UserApiKeysPost({ + body: { + name: newKeyName + }, + headers: { + 'Authorization': `Bearer ${accessToken}`, + } + }); + + if (response.data) { + setCreatedKey(response.data); + setIsCreateDialogOpen(false); + setShowCreatedKeyDialog(true); + setNewKeyName(''); + fetchApiKeys(); + } + } catch (err) { + setError('Failed to create API key'); + console.error('Error creating API key:', err); + } + }; + + const handleCreateServiceKey = async () => { + if (!newServiceKeyName.trim()) { + setError('Please enter a name for the service key'); + return; + } + + try { + setError(null); + const accessToken = await getAccessToken(); + + const response = await createServiceKeyApiV1UserServiceKeysPost({ + body: { + name: newServiceKeyName, + expires_in_days: 90 + }, + headers: { + 'Authorization': `Bearer ${accessToken}`, + } + }); + + if (response.data) { + setCreatedServiceKey(response.data); + setIsCreateServiceDialogOpen(false); + setShowCreatedServiceKeyDialog(true); + setNewServiceKeyName(''); + fetchServiceKeys(); + } + } catch (err) { + setError('Failed to create service key'); + console.error('Error creating service key:', err); + } + }; + + const handleArchiveKey = async (keyId: number) => { + try { + setError(null); + const accessToken = await getAccessToken(); + + await archiveApiKeyApiV1UserApiKeysApiKeyIdDelete({ + path: { + api_key_id: keyId + }, + headers: { + 'Authorization': `Bearer ${accessToken}`, + } + }); + + fetchApiKeys(); + } catch (err) { + setError('Failed to archive API key'); + console.error('Error archiving API key:', err); + } + }; + + const handleArchiveServiceKey = async (keyId: string) => { + try { + setError(null); + const accessToken = await getAccessToken(); + + await archiveServiceKeyApiV1UserServiceKeysServiceKeyIdDelete({ + path: { + service_key_id: keyId + }, + headers: { + 'Authorization': `Bearer ${accessToken}`, + } + }); + + fetchServiceKeys(); + } catch (err) { + setError('Failed to archive service key'); + console.error('Error archiving service key:', err); + } + }; + + const handleReactivateKey = async (keyId: number) => { + try { + setError(null); + const accessToken = await getAccessToken(); + + await reactivateApiKeyApiV1UserApiKeysApiKeyIdReactivatePut({ + path: { + + api_key_id: keyId + + }, + headers: { + 'Authorization': `Bearer ${accessToken}`, + } + }); + + fetchApiKeys(); + } catch (err) { + setError('Failed to reactivate API key'); + console.error('Error reactivating API key:', err); + } + }; + + + const copyToClipboard = async (text: string) => { + try { + await navigator.clipboard.writeText(text); + } catch (err) { + console.error('Failed to copy to clipboard:', err); + } + }; + + const formatDate = (dateString: string | null) => { + if (!dateString) return 'Never'; + return new Date(dateString).toLocaleDateString('en-US', { + year: 'numeric', + month: 'short', + day: 'numeric', + hour: '2-digit', + minute: '2-digit' + }); + }; + + // Don't render content until auth is loaded + if (loading || !user) { + return ( +
+
+ + +
+
+ ); + } + + return ( +
+
+
+
+

Developer Portal

+

Manage your API keys to access Dograh services programmatically

+
+ + {error && ( +
+ {error} +
+ )} + + + +
+
+ API Keys + + Create and manage API keys for your organization + +
+
+ + +
+
+
+ + {isLoading ? ( +
+ {[1, 2, 3].map((i) => ( +
+
+ + +
+ +
+ ))} +
+ ) : apiKeys.length === 0 ? ( +
+ +

No API keys found

+ +
+ ) : ( +
+ {apiKeys.map((key) => ( +
+
+
+ {key.name} + {key.archived_at ? ( + Archived + ) : key.is_active ? ( + Active + ) : ( + Inactive + )} +
+
+ {key.key_prefix}... + + (Full key hidden for security) + +
+
+ Created: {formatDate(key.created_at)} • + Last used: {formatDate(key.last_used_at ?? null)} +
+
+
+ {key.archived_at ? ( + + ) : ( + + )} +
+
+ ))} +
+ )} +
+
+ + {/* Dograh Service Keys Section */} + + +
+
+ Dograh Service Keys + + Manage service keys for accessing Dograh AI services (LLM, TTS, STT) + +
+
+ + +
+
+
+ + {isServiceKeysLoading ? ( +
+ {[1, 2].map((i) => ( +
+
+ + +
+ +
+ ))} +
+ ) : serviceKeys.length === 0 ? ( +
+ +

No service keys found

+ +
+ ) : ( +
+ {serviceKeys.map((key) => ( +
+
+
+ {key.name} + {key.archived_at ? ( + Archived + ) : key.is_active ? ( + Active + ) : ( + Inactive + )} + {key.expires_at && new Date(key.expires_at) > new Date() && ( + + Expires: {formatDate(key.expires_at)} + + )} +
+
+ {key.key_prefix}... + + (Full key hidden for security) + +
+
+ Created: {formatDate(key.created_at)} • + Last used: {formatDate(key.last_used_at ?? null)} +
+
+
+ {!key.archived_at && ( + + )} +
+
+ ))} +
+ )} +
+
+ +
+

+ Important: Keep your API keys secure. Never share them publicly or commit them to version control. + API keys provide full access to your organization's resources. +

+
+
+
+ + {/* Create API Key Dialog */} + + + + Create New API Key + + Enter a descriptive name for your API key to help you identify it later. + + +
+
+ + setNewKeyName(e.target.value)} + placeholder="e.g., Production Server, Development Environment" + /> +
+
+ + + + +
+
+ + {/* Show Created Key Dialog */} + + + + API Key Created Successfully + + Make sure to copy your API key now. You won't be able to see it again! + + + {createdKey && ( +
+
+

Your API Key:

+
+ + {createdKey.api_key} + + +
+
+
+

+ Store this key securely. It will only be shown once and cannot be retrieved later. +

+
+
+ )} + + + +
+
+ + {/* Create Service Key Dialog */} + + + + Create New Service Key + + Create a service key to access Dograh AI services (LLM, TTS, STT) + + +
+
+ + setNewServiceKeyName(e.target.value)} + placeholder="e.g., Production AI Services, Development LLM Access" + /> +
+
+ + + + +
+
+ + {/* Show Created Service Key Dialog */} + + + + Service Key Created Successfully + + Make sure to copy your service key now. You won't be able to see it again! + + + {createdServiceKey && ( +
+
+

Your Service Key:

+
+ + {createdServiceKey.service_key} + + +
+
+
+

+ This key provides access to Dograh AI services including LLM, Text-to-Speech, and Speech-to-Text. + {createdServiceKey.expires_at && ( + + Expires on: {formatDate(createdServiceKey.expires_at)} + + )} +

+
+
+

+ Store this key securely. It will only be shown once and cannot be retrieved later. +

+
+
+ )} + + + +
+
+
+ ); +} diff --git a/ui/src/app/api/auth/oss/route.ts b/ui/src/app/api/auth/oss/route.ts new file mode 100644 index 0000000..3b21806 --- /dev/null +++ b/ui/src/app/api/auth/oss/route.ts @@ -0,0 +1,60 @@ +/* + Helps provide authentication token to LocalAuthService once its loaded + in the browser +*/ +import { cookies } from 'next/headers'; +import { NextResponse } from 'next/server'; + +const OSS_TOKEN_COOKIE = 'dograh_oss_token'; +const OSS_USER_COOKIE = 'dograh_oss_user'; + +function generateOSSToken(): string { + return `oss_${Date.now()}_${crypto.randomUUID()}`; +} + +export async function GET() { + const authProvider = process.env.NEXT_PUBLIC_AUTH_PROVIDER || 'stack'; + + // Only handle OSS mode + if (authProvider !== 'local') { + return NextResponse.json({ error: 'Not in OSS mode' }, { status: 400 }); + } + + const cookieStore = await cookies(); + let token = cookieStore.get(OSS_TOKEN_COOKIE)?.value; + let user = cookieStore.get(OSS_USER_COOKIE)?.value; + + // If no token exists, create one + if (!token) { + token = generateOSSToken(); + user = JSON.stringify({ + id: token, + name: 'Local User', + provider: 'local', + organizationId: `org_${token}`, + }); + + // Set cookies + cookieStore.set(OSS_TOKEN_COOKIE, token, { + httpOnly: true, + secure: process.env.NODE_ENV === 'production', + sameSite: 'lax', + maxAge: 60 * 60 * 24 * 30, // 30 days + path: '/', + }); + + cookieStore.set(OSS_USER_COOKIE, user, { + httpOnly: true, + secure: process.env.NODE_ENV === 'production', + sameSite: 'lax', + maxAge: 60 * 60 * 24 * 30, // 30 days + path: '/', + }); + } + + // Return the auth info as JSON (safe to expose to client) + return NextResponse.json({ + token, + user: JSON.parse(user!), + }); +} diff --git a/ui/src/app/automation/layout.tsx b/ui/src/app/automation/layout.tsx new file mode 100644 index 0000000..8ce7fe4 --- /dev/null +++ b/ui/src/app/automation/layout.tsx @@ -0,0 +1,14 @@ +import BaseHeader from "@/components/header/BaseHeader" + +export default function CampaignsLayout({ + children, +}: { + children: React.ReactNode +}) { + return ( + <> + + {children} + + ) +} diff --git a/ui/src/app/automation/page.tsx b/ui/src/app/automation/page.tsx new file mode 100644 index 0000000..cf97400 --- /dev/null +++ b/ui/src/app/automation/page.tsx @@ -0,0 +1,35 @@ +"use client"; + +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; + +export default function AutomationPage() { + return ( +
+
+
+

Automation

+

Automate your workflows and processes

+
+ + + + Coming Soon + + Automation features are currently under development + + + +
+

+ We're working on powerful automation features to help you streamline your workflows. +

+

+ Check back soon for updates! +

+
+
+
+
+
+ ); +} diff --git a/ui/src/app/campaigns/GoogleSheetSelector.tsx b/ui/src/app/campaigns/GoogleSheetSelector.tsx new file mode 100644 index 0000000..0ba5d71 --- /dev/null +++ b/ui/src/app/campaigns/GoogleSheetSelector.tsx @@ -0,0 +1,237 @@ +'use client'; + +import { useEffect, useState } from 'react'; +import { toast } from 'sonner'; + +import { getIntegrationAccessTokenApiV1IntegrationIntegrationIdAccessTokenGet, getIntegrationsApiV1IntegrationGet } from '@/client/sdk.gen'; +import type { IntegrationResponse } from '@/client/types.gen'; +import { Button } from '@/components/ui/button'; +import { Label } from '@/components/ui/label'; +import logger from '@/lib/logger'; + +interface GoogleSheetSelectorProps { + accessToken: string; + onSheetSelected: (sheetUrl: string, sheetName: string) => void; + selectedSheetUrl?: string; +} + +interface PickerBuilder { + addView: (viewId: string) => PickerBuilder; + setOAuthToken: (token: string) => PickerBuilder; + setDeveloperKey: (key: string) => PickerBuilder; + setCallback: (callback: (data: { action: string; docs?: Array<{ id: string; name: string; url: string }> }) => void) => PickerBuilder; + setTitle: (title: string) => PickerBuilder; + build: () => { setVisible: (visible: boolean) => void }; +} + +declare global { + interface Window { + gapi: { + load: (library: string, callback: () => void) => void; + }; + google: { + picker: { + PickerBuilder: new () => PickerBuilder; + ViewId: { + SPREADSHEETS: string; + }; + Action: { + PICKED: string; + }; + }; + }; + } +} + +// Google API configuration +const GOOGLE_API_KEY = process.env.NEXT_PUBLIC_GOOGLE_API_KEY || ''; + +export default function GoogleSheetSelector({ accessToken, onSheetSelected, selectedSheetUrl }: GoogleSheetSelectorProps) { + const [loading, setLoading] = useState(false); + const [pickerApiLoaded, setPickerApiLoaded] = useState(false); + const [googleIntegration, setGoogleIntegration] = useState(null); + const [selectedSheetName, setSelectedSheetName] = useState(''); + const [checkingIntegration, setCheckingIntegration] = useState(true); + + // Load Google Picker API + useEffect(() => { + const script = document.createElement('script'); + script.src = 'https://apis.google.com/js/api.js'; + script.onload = () => { + window.gapi.load('picker', () => { + setPickerApiLoaded(true); + logger.info('Google Picker API loaded'); + }); + }; + document.body.appendChild(script); + + return () => { + if (document.body.contains(script)) { + document.body.removeChild(script); + } + }; + }, []); + + // Check for Google Sheet integration + useEffect(() => { + const checkGoogleIntegration = async () => { + if (!accessToken) { + return; + } + + try { + const response = await getIntegrationsApiV1IntegrationGet({ + headers: { + 'Authorization': `Bearer ${accessToken}`, + } + }); + + if (response.data) { + const integrations = Array.isArray(response.data) ? response.data : [response.data]; + const googleSheet = integrations.find(i => i.provider === 'google-sheet'); + setGoogleIntegration(googleSheet || null); + } + } catch (error) { + logger.error('Failed to check Google integration:', error); + } finally { + setCheckingIntegration(false); + } + }; + + checkGoogleIntegration(); + }, [accessToken]); + + const fetchGoogleAccessToken = async () => { + if (!googleIntegration) return null; + + try { + const response = await getIntegrationAccessTokenApiV1IntegrationIntegrationIdAccessTokenGet({ + path: { + integration_id: googleIntegration.id, + }, + headers: { + Authorization: `Bearer ${accessToken}`, + } + }); + + if (response.data?.access_token) { + return response.data.access_token; + } + return null; + } catch (error) { + logger.error('Failed to fetch Google access token:', error); + return null; + } + }; + + const openGooglePicker = async () => { + if (!pickerApiLoaded) { + toast.error('Google Picker is still loading. Please try again.'); + return; + } + + if (!GOOGLE_API_KEY) { + toast.error('Google API Key is not configured.'); + return; + } + + if (!googleIntegration) { + toast.error('Please connect Google Sheets in the Integrations page first.'); + return; + } + + setLoading(true); + + try { + const token = await fetchGoogleAccessToken(); + if (!token) { + toast.error('Failed to get Google access token. Please re-authorize in Integrations.'); + setLoading(false); + return; + } + + const picker = new window.google.picker.PickerBuilder() + .addView(window.google.picker.ViewId.SPREADSHEETS) + .setOAuthToken(token) + .setDeveloperKey(GOOGLE_API_KEY) + .setCallback((data: { action: string; docs?: Array<{ id: string; name: string; url: string }> }) => { + if (data.action === window.google.picker.Action.PICKED && data.docs && data.docs.length > 0) { + const doc = data.docs[0]; + setSelectedSheetName(doc.name); + onSheetSelected(doc.url, doc.name); + toast.success(`Selected: ${doc.name}`); + } + setLoading(false); + }) + .setTitle('Select a Google Sheet for your campaign') + .build(); + + picker.setVisible(true); + } catch (error) { + toast.error('Error opening Google Picker'); + logger.error('Error opening Google Picker:', error); + setLoading(false); + } + }; + + if (checkingIntegration) { + return ( +
+ +
Checking Google integration...
+
+ ); + } + + if (!googleIntegration) { + return ( +
+ +
+

+ Google Sheets integration not found +

+

+ Please go to the{' '} + + Integrations page + + {' '}and connect your Google account first. +

+
+
+ ); + } + + return ( +
+ +
+ + {selectedSheetUrl && ( + + )} +
+

+ Select a Google Sheet from your connected Google account +

+
+ ); +} diff --git a/ui/src/app/campaigns/[campaignId]/page.tsx b/ui/src/app/campaigns/[campaignId]/page.tsx new file mode 100644 index 0000000..3cbd6e8 --- /dev/null +++ b/ui/src/app/campaigns/[campaignId]/page.tsx @@ -0,0 +1,463 @@ +"use client"; + +import { ArrowLeft, Pause, Play, RefreshCw } from 'lucide-react'; +import { useParams, useRouter } from 'next/navigation'; +import { useCallback, useEffect, useState } from 'react'; +import { toast } from 'sonner'; + +import { + getCampaignApiV1CampaignCampaignIdGet, + getCampaignRunsApiV1CampaignCampaignIdRunsGet, + pauseCampaignApiV1CampaignCampaignIdPausePost, + resumeCampaignApiV1CampaignCampaignIdResumePost, + startCampaignApiV1CampaignCampaignIdStartPost} from '@/client/sdk.gen'; +import type { CampaignResponse, WorkflowRunResponse } from '@/client/types.gen'; +import { Badge } from '@/components/ui/badge'; +import { Button } from '@/components/ui/button'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from '@/components/ui/table'; +import { useAuth } from '@/lib/auth'; + +export default function CampaignDetailPage() { + const { user, getAccessToken, redirectToLogin, loading } = useAuth(); + const router = useRouter(); + const params = useParams(); + const campaignId = parseInt(params.campaignId as string); + + // Redirect if not authenticated + useEffect(() => { + if (!loading && !user) { + redirectToLogin(); + } + }, [loading, user, redirectToLogin]); + + // Campaign state + const [campaign, setCampaign] = useState(null); + const [isLoadingCampaign, setIsLoadingCampaign] = useState(true); + + // Runs state + const [runs, setRuns] = useState([]); + const [isLoadingRuns, setIsLoadingRuns] = useState(false); + + // Action state + const [isExecutingAction, setIsExecutingAction] = useState(false); + + // Fetch campaign details + const fetchCampaign = useCallback(async () => { + if (!user) return; + setIsLoadingCampaign(true); + try { + const accessToken = await getAccessToken(); + const response = await getCampaignApiV1CampaignCampaignIdGet({ + path: { + campaign_id: campaignId, + }, + headers: { + 'Authorization': `Bearer ${accessToken}`, + } + }); + + if (response.data) { + setCampaign(response.data); + } + } catch (error) { + console.error('Failed to fetch campaign:', error); + toast.error('Failed to load campaign details'); + } finally { + setIsLoadingCampaign(false); + } + }, [user, getAccessToken, campaignId]); + + // Fetch campaign runs + const fetchCampaignRuns = useCallback(async () => { + if (!user) return; + setIsLoadingRuns(true); + try { + const accessToken = await getAccessToken(); + const response = await getCampaignRunsApiV1CampaignCampaignIdRunsGet({ + path: { + campaign_id: campaignId, + }, + headers: { + 'Authorization': `Bearer ${accessToken}`, + } + }); + + if (response.data) { + setRuns(response.data); + } + } catch (error) { + console.error('Failed to fetch campaign runs:', error); + } finally { + setIsLoadingRuns(false); + } + }, [user, getAccessToken, campaignId]); + + // Initial load + useEffect(() => { + fetchCampaign(); + fetchCampaignRuns(); + }, [fetchCampaign, fetchCampaignRuns]); + + // Handle back navigation + const handleBack = () => { + router.push('/campaigns'); + }; + + // Handle workflow link click + const handleWorkflowClick = () => { + if (campaign) { + router.push(`/workflow/${campaign.workflow_id}`); + } + }; + + // Handle run click + const handleRunClick = (runId: number) => { + if (campaign) { + router.push(`/workflow/${campaign.workflow_id}/run/${runId}`); + } + }; + + // Handle start campaign + const handleStart = async () => { + if (!user) return; + setIsExecutingAction(true); + try { + const accessToken = await getAccessToken(); + const response = await startCampaignApiV1CampaignCampaignIdStartPost({ + path: { + campaign_id: campaignId, + }, + headers: { + 'Authorization': `Bearer ${accessToken}`, + } + }); + + if (response.data) { + setCampaign(response.data); + toast.success('Campaign started'); + } else if (response.error) { + // Extract error message from response + let errorMsg = 'Failed to start campaign'; + if (typeof response.error === 'string') { + errorMsg = response.error; + } else if (response.error && typeof response.error === 'object') { + errorMsg = (response.error as unknown as { detail?: string }).detail || JSON.stringify(response.error); + } + toast.error(errorMsg); + } + } catch (error) { + console.error('Failed to start campaign:', error); + toast.error('Failed to start campaign'); + } finally { + setIsExecutingAction(false); + } + }; + + // Handle resume campaign + const handleResume = async () => { + if (!user) return; + setIsExecutingAction(true); + try { + const accessToken = await getAccessToken(); + const response = await resumeCampaignApiV1CampaignCampaignIdResumePost({ + path: { + campaign_id: campaignId, + }, + headers: { + 'Authorization': `Bearer ${accessToken}`, + } + }); + + if (response.data) { + setCampaign(response.data); + toast.success('Campaign resumed'); + } else if (response.error) { + // Extract error message from response + let errorMsg = 'Failed to resume campaign'; + if (typeof response.error === 'string') { + errorMsg = response.error; + } else if (response.error && typeof response.error === 'object') { + errorMsg = (response.error as unknown as { detail?: string }).detail || JSON.stringify(response.error); + } + toast.error(errorMsg); + } + } catch (error) { + console.error('Failed to resume campaign:', error); + toast.error('Failed to resume campaign'); + } finally { + setIsExecutingAction(false); + } + }; + + // Handle pause campaign + const handlePause = async () => { + if (!user) return; + setIsExecutingAction(true); + try { + const accessToken = await getAccessToken(); + const response = await pauseCampaignApiV1CampaignCampaignIdPausePost({ + path: { + campaign_id: campaignId, + }, + headers: { + 'Authorization': `Bearer ${accessToken}`, + } + }); + + if (response.data) { + setCampaign(response.data); + toast.success('Campaign paused'); + } + } catch (error) { + console.error('Failed to pause campaign:', error); + toast.error('Failed to pause campaign'); + } finally { + setIsExecutingAction(false); + } + }; + + // Format date for display + const formatDate = (dateString: string) => { + return new Date(dateString).toLocaleDateString(); + }; + + const formatDateTime = (dateString: string) => { + return new Date(dateString).toLocaleString(); + }; + + // Get badge variant for state + const getStateBadgeVariant = (state: string) => { + switch (state) { + case 'created': + return 'secondary'; + case 'running': + return 'default'; + case 'paused': + return 'outline'; + case 'completed': + return 'secondary'; + case 'failed': + return 'destructive'; + default: + return 'secondary'; + } + }; + + // Render action button based on state + const renderActionButton = () => { + if (!campaign || isExecutingAction) return null; + + switch (campaign.state) { + case 'created': + return ( + + ); + case 'running': + return ( + + ); + case 'paused': + return ( + + ); + default: + return null; + } + }; + + if (isLoadingCampaign) { + return ( +
+
+
+
+
+
+
+
+ ); + } + + if (!campaign) { + return ( +
+
+

Campaign not found

+
+
+ ); + } + + return ( +
+
+
+ +
+
+

{campaign.name}

+
+ + {campaign.state} + + + Created {formatDate(campaign.created_at)} + +
+
+ {renderActionButton()} +
+
+ + {/* Campaign Details */} + + + Campaign Details + + Configuration and source information + + + +
+
+
Workflow
+
+ +
+
+
+
Source Type
+
{campaign.source_type.replace('-', ' ')}
+
+
+
Source Sheet
+
+ + {campaign.source_id} + +
+
+
+
State
+
{campaign.state}
+
+ {campaign.started_at && ( +
+
Started At
+
{formatDateTime(campaign.started_at)}
+
+ )} + {campaign.completed_at && ( +
+
Completed At
+
{formatDateTime(campaign.completed_at)}
+
+ )} +
+
+
+ + {/* Workflow Runs */} + + + Workflow Runs + + Executions triggered by this campaign + + + + {isLoadingRuns ? ( +
+ {[...Array(3)].map((_, i) => ( +
+ ))} +
+ ) : runs.length > 0 ? ( +
+ + + + Run ID + State + Created + Action + + + + {runs.map((run) => ( + handleRunClick(run.id)} + > + #{run.id} + + + {run.state} + + + {formatDateTime(run.created_at)} + + + + + ))} + +
+
+ ) : ( +

+ {campaign.state === 'created' + ? 'No runs yet. Start the campaign to begin execution.' + : 'No workflow runs found for this campaign.'} +

+ )} +
+
+
+
+ ); +} diff --git a/ui/src/app/campaigns/layout.tsx b/ui/src/app/campaigns/layout.tsx new file mode 100644 index 0000000..8ce7fe4 --- /dev/null +++ b/ui/src/app/campaigns/layout.tsx @@ -0,0 +1,14 @@ +import BaseHeader from "@/components/header/BaseHeader" + +export default function CampaignsLayout({ + children, +}: { + children: React.ReactNode +}) { + return ( + <> + + {children} + + ) +} diff --git a/ui/src/app/campaigns/new/page.tsx b/ui/src/app/campaigns/new/page.tsx new file mode 100644 index 0000000..07c18e4 --- /dev/null +++ b/ui/src/app/campaigns/new/page.tsx @@ -0,0 +1,227 @@ +"use client"; + +import { ArrowLeft } from 'lucide-react'; +import { useRouter } from 'next/navigation'; +import { useCallback, useEffect, useState } from 'react'; +import { toast } from 'sonner'; + +import { createCampaignApiV1CampaignCreatePost, getWorkflowsSummaryApiV1WorkflowSummaryGet } from '@/client/sdk.gen'; +import type { WorkflowSummaryResponse } from '@/client/types.gen'; +import { Button } from '@/components/ui/button'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '@/components/ui/select'; +import { useAuth } from '@/lib/auth'; + +import GoogleSheetSelector from '../GoogleSheetSelector'; + +export default function NewCampaignPage() { + const { user, getAccessToken, redirectToLogin, loading } = useAuth(); + const router = useRouter(); + + // Form state + const [campaignName, setCampaignName] = useState(''); + const [selectedWorkflowId, setSelectedWorkflowId] = useState(''); + const [selectedSheetUrl, setSelectedSheetUrl] = useState(''); + const [isSubmitting, setIsSubmitting] = useState(false); + const [userAccessToken, setUserAccessToken] = useState(''); + + // Workflows state + const [workflows, setWorkflows] = useState([]); + const [isLoadingWorkflows, setIsLoadingWorkflows] = useState(true); + + // Redirect if not authenticated + useEffect(() => { + if (!loading && !user) { + redirectToLogin(); + } + }, [loading, user, redirectToLogin]); + + // Fetch workflows + const fetchWorkflows = useCallback(async () => { + if (!user) return; + try { + const accessToken = await getAccessToken(); + setUserAccessToken(accessToken); + const response = await getWorkflowsSummaryApiV1WorkflowSummaryGet({ + headers: { + 'Authorization': `Bearer ${accessToken}`, + } + }); + + if (response.data) { + setWorkflows(response.data); + } + } catch (error) { + console.error('Failed to fetch workflows:', error); + toast.error('Failed to load workflows'); + } finally { + setIsLoadingWorkflows(false); + } + }, [user, getAccessToken]); + + // Initial load + useEffect(() => { + if (user) { + fetchWorkflows(); + } + }, [fetchWorkflows, user]); + + // Handle form submission + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + + if (!campaignName || !selectedWorkflowId || !selectedSheetUrl) { + toast.error('Please fill in all fields'); + return; + } + + setIsSubmitting(true); + + try { + const accessToken = await getAccessToken(); + const response = await createCampaignApiV1CampaignCreatePost({ + body: { + name: campaignName, + workflow_id: parseInt(selectedWorkflowId), + source_id: selectedSheetUrl, + }, + headers: { + 'Authorization': `Bearer ${accessToken}`, + } + }); + + if (response.data) { + toast.success('Campaign created successfully'); + router.push(`/campaigns/${response.data.id}`); + } + } catch (error) { + console.error('Failed to create campaign:', error); + toast.error('Failed to create campaign'); + } finally { + setIsSubmitting(false); + } + }; + + // Handle back navigation + const handleBack = () => { + router.push('/campaigns'); + }; + + // Handle sheet selection + const handleSheetSelected = (sheetUrl: string) => { + setSelectedSheetUrl(sheetUrl); + }; + + return ( +
+
+
+ +

Create New Campaign

+

Set up a new campaign to execute workflows at scale

+
+ + + + Campaign Details + + Configure your campaign settings + + + +
+
+ + setCampaignName(e.target.value)} + maxLength={255} + required + /> +

+ Choose a descriptive name for your campaign +

+
+ +
+ + +

+ Select the workflow to execute for each row in the spreadsheet +

+
+ + + +
+ + +
+ +
+
+
+
+ ); +} diff --git a/ui/src/app/campaigns/page.tsx b/ui/src/app/campaigns/page.tsx new file mode 100644 index 0000000..00f48c4 --- /dev/null +++ b/ui/src/app/campaigns/page.tsx @@ -0,0 +1,186 @@ +"use client"; + +import { Plus } from 'lucide-react'; +import { useRouter } from 'next/navigation'; +import { useCallback, useEffect, useState } from 'react'; + +import { getCampaignsApiV1CampaignGet } from '@/client/sdk.gen'; +import type { CampaignsResponse } from '@/client/types.gen'; +import { Badge } from '@/components/ui/badge'; +import { Button } from '@/components/ui/button'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from '@/components/ui/table'; +import { useAuth } from '@/lib/auth'; + +export default function CampaignsPage() { + const { user, getAccessToken, redirectToLogin, loading } = useAuth(); + const router = useRouter(); + + // Campaigns state + const [campaignsData, setCampaignsData] = useState(null); + const [isLoading, setIsLoading] = useState(true); + + // Redirect if not authenticated + useEffect(() => { + if (!loading && !user) { + redirectToLogin(); + } + }, [loading, user, redirectToLogin]); + + // Fetch campaigns + const fetchCampaigns = useCallback(async () => { + if (!user) return; + setIsLoading(true); + try { + const accessToken = await getAccessToken(); + const response = await getCampaignsApiV1CampaignGet({ + headers: { + 'Authorization': `Bearer ${accessToken}`, + } + }); + + if (response.data) { + setCampaignsData(response.data); + } + } catch (error) { + console.error('Failed to fetch campaigns:', error); + } finally { + setIsLoading(false); + } + }, [user, getAccessToken]); + + // Initial load + useEffect(() => { + if (user) { + fetchCampaigns(); + } + }, [fetchCampaigns, user]); + + // Handle row click to navigate to campaign detail + const handleRowClick = (campaignId: number) => { + router.push(`/campaigns/${campaignId}`); + }; + + // Handle create campaign button + const handleCreateCampaign = () => { + router.push('/campaigns/new'); + }; + + // Format date for display + const formatDate = (dateString: string) => { + return new Date(dateString).toLocaleDateString(); + }; + + // Get badge variant for state + const getStateBadgeVariant = (state: string) => { + switch (state) { + case 'created': + return 'secondary'; + case 'running': + return 'default'; + case 'paused': + return 'outline'; + case 'completed': + return 'secondary'; + case 'failed': + return 'destructive'; + default: + return 'secondary'; + } + }; + + return ( +
+
+
+
+

Campaigns

+

Manage your bulk workflow execution campaigns

+
+ +
+ + {/* Campaigns Table */} + + + All Campaigns + + View and manage your campaigns + + + + {isLoading ? ( +
+ {[...Array(5)].map((_, i) => ( +
+ ))} +
+ ) : campaignsData && campaignsData.campaigns.length > 0 ? ( +
+ + + + Name + Workflow + State + Created + Action + + + + {campaignsData.campaigns.map((campaign) => ( + handleRowClick(campaign.id)} + > + {campaign.name} + {campaign.workflow_name} + + + {campaign.state} + + + {formatDate(campaign.created_at)} + + + + + ))} + +
+
+ ) : ( +
+

No campaigns found

+ +
+ )} +
+
+
+
+ ); +} diff --git a/ui/src/app/create-workflow/layout.tsx b/ui/src/app/create-workflow/layout.tsx new file mode 100644 index 0000000..b4c0657 --- /dev/null +++ b/ui/src/app/create-workflow/layout.tsx @@ -0,0 +1,14 @@ +import BaseHeader from "@/components/header/BaseHeader" + +export default function CreateWorkflowLayout({ + children, +}: { + children: React.ReactNode +}) { + return ( + <> + + {children} + + ) +} diff --git a/ui/src/app/create-workflow/page.tsx b/ui/src/app/create-workflow/page.tsx new file mode 100644 index 0000000..ed5b53e --- /dev/null +++ b/ui/src/app/create-workflow/page.tsx @@ -0,0 +1,170 @@ +'use client'; + +import { useRouter } from 'next/navigation'; +import { useState } from 'react'; + +import { createWorkflowFromTemplateApiV1WorkflowCreateTemplatePost } from '@/client/sdk.gen'; +import { Button } from '@/components/ui/button'; +import { Card, CardContent, CardDescription, CardHeader } from '@/components/ui/card'; +import { Input } from '@/components/ui/input'; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; +import { useAuth } from '@/lib/auth'; +import logger from '@/lib/logger'; + +export default function CreateWorkflowPage() { + const router = useRouter(); + const { user, getAccessToken } = useAuth(); + const [isLoading, setIsLoading] = useState(false); + const [error, setError] = useState(null); + + const [callType, setCallType] = useState<'INBOUND' | 'OUTBOUND'>('INBOUND'); + const [useCase, setUseCase] = useState(''); + const [activityDescription, setActivityDescription] = useState(''); + + const handleCreateWorkflow = async () => { + if (!useCase || !activityDescription) { + setError('Please fill in all fields'); + return; + } + + if (!user) { + setError('You must be logged in to create a workflow'); + return; + } + + setIsLoading(true); + setError(null); + + try { + const accessToken = await getAccessToken(); + + // Call the API to create workflow from template + const response = await createWorkflowFromTemplateApiV1WorkflowCreateTemplatePost({ + body: { + call_type: callType, + use_case: useCase, + activity_description: activityDescription, + }, + headers: { + 'Authorization': `Bearer ${accessToken}`, + }, + }); + + if (response.data?.id) { + router.push(`/workflow/${response.data.id}`); + } + } catch (err) { + setError('Failed to create workflow. Please try again.'); + logger.error(`Error creating workflow: ${err}`); + } finally { + setIsLoading(false); + } + }; + + return ( +
+ + +

+ Create Your Voice Agent Workflow +

+ + Tell us about your use case and we'll create a customized workflow for you + +
+ +
+
+
+
+ I want to create an + + voice agent +
+
+ +
+ +
+ Which serves the use case: + setUseCase(e.target.value)} + /> +
+
+ +
+ +
+ Which can: +