⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⠟⢉⡇⢀⡾⠛⠋⢻⡿⠛⣿⣿⣿⣿⣿⣿⣿⣶⣮⡢⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⠏⠀⢸⠃⣸⠁⠀⠀⢸⠃⣰⣿⠏⣻⢿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⠀⠀⣿⠀⣿⠀⠀⠀⠘⢠⣿⣿⣰⣿⣾⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⢻⡄⠀⡇⢰⡏⠀⡄⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣾⡏⢸⣷⠀⡇⢸⡇⠀⡇⠀⢰⣿⣿⣿⣿⣿⣿⡿⢸⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢀⢾⣿⠃⢸⣿⣰⡇⣿⡇⠀⢿⠀⠈⣿⣿⣿⣿⣿⣿⣅⣸⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢠⠋⣼⡿⠀⢸⣿⣿⣥⣿⣧⠀⢸⠀⠀⣿⣿⣿⢿⣿⠁⠀⣿⣿⣿⣿⢿⣿⣿⡧⠀⠀⠀⠀
⠀⠀⠀⠀⢠⠃⢠⣿⡇⢠⣿⣿⣿⣿⣿⣿⠀⣿⠀⢰⣿⠓⢟⣿⣿⡗⢠⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀
⠀⠀⠀⢠⠃⢀⣾⡿⢠⣿⣿⣿⣿⣿⣿⣿⣷⣿⠀⢸⣿⠃⠸⠿⠃⠀⠀⠈⢠⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀
⠀⠀⢠⠃⢀⣼⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣾⣟⡆⠀⠀⠀⠀⠀⠀⠈⠉⣼⣿⣿⢹⣷⠀⠀⠀⠀
⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣿⣿⣿⠀⣿⣿⠁⠀⠀⠀⠀⠀⠀⠐⢡⣿⣿⡏⣾⠈⣇⠀⠀⠀
⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢠⠃⣿⣿⠀⣿⣿⠀⠀⠀⠀⢀⡤⢤⡶⢻⣿⣿⣹⣿⡆⠸⡄⠀⠀
⣰⣿⣿⣿⣿⣿⡿⣿⣿⣿⡿⢿⠛⠃⣸⠰⣿⣿⢠⣿⠟⣷⣦⣀⣀⣼⣿⠁⠃⣴⣿⢿⣿⢻⡇⠀⢧⠀⠀
⣿⣿⣿⣿⣿⣵⠾⠛⣩⠞⠁⠘⡆⠀⢹⢸⣿⣯⣾⡿⣰⣿⡿⠛⠉⢙⣻⣿⣶⣾⣿⣿⣿⣸⠇⠀⠸⡄⠀
⣿⣿⡿⠭⠥⣴⠖⠋⢀⣠⣶⣶⢿⣄⣸⣿⣿⣿⣿⣿⢹⠏⢸⢻⣿⣿⣿⣿⡿⣿⣿⣿⠟⢻⠀⠀⠀⢇⠀
⣿⡏⠀⠀⣸⣧⣤⢶⡿⠿⣿⣏⢻⡿⣼⣿⣿⣿⡟⣠⠿⣶⣾⣿⣿⣿⣿⣇⣼⣿⣿⠟⠀⢸⡇⠀⠀⢸⠀
⣿⣧⠀⠀⣗⠀⠀⠀⢿⣧⠀⢹⠈⢣⣹⣿⣿⣿⡿⠁⠀⠀⢉⣿⡿⠋⠙⢻⣿⣿⡟⠀⠀⣸⠀⠀⠀⢸⡄
⣿⣿⡆⠀⢿⣾⣆⠀⣼⣿⣇⢘⡇⠐⣿⣯⣿⣯⠃⠀⠀⠰⠿⠋⠀⠀⠀⢸⣿⡟⢀⡆⠀⣿⠀⠀⠀⢸⡇
⣿⣿⣿⡄⠀⠉⠻⣷⣌⠻⣿⣿⣿⡆⣿⣿⣿⣈⡀⠀⠀⠀⠀⠀⠀⠀⢀⣾⡟⣠⣿⡇⣸⣿⡄⠀⠀⣼⠃
⣿⣿⣿⣿⠀⠀⠀⠈⢻⣿⣿⣿⣿⣿⣿⣿⣷⠛⢿⣆⠀⠀⠀⠀⠀⢀⣾⣟⣴⡿⠋⠁⢻⣿⣧⠀⣰⡿⠀
⣿⣿⣿⣿⠃⠀⣀⠀⠀⢻⣿⣿⣿⣿⣿⣿⡿⠀⠈⣿⣷⡀⠀⠀⣠⣿⣿⣿⣯⣤⡄⠀⢸⣿⣿⣶⡿⠁⠀
⣿⣿⣿⡏⠀⠀⢻⣷⣄⡈⢿⣿⣿⣿⣿⣿⣿⣄⢀⣿⣿⠗⠀⣰⣿⣿⣿⣿⣿⣿⣷⡀⢀⣿⣿⣿⠀⠀⠀
⣿⣿⣿⡇⠀⠀⠀⠛⣿⣿⣼⣿⣿⣿⣿⣿⣿⣿⣾⣿⠏⠀⠀⣿⣿⣿⣿⣿⣿⡟⢿⣿⣾⣿⣿⣿⡄⠀⠀
⣿⣿⣿⣿⣄⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⣿⣿⣿⡿⢸⣿⣿⣶⣿⣿⢿⣿⣿⡇⠀⠀
⣿⣿⣿⣿⣝⣿⣆⣀⠀⢠⣌⡉⠛⡿⣿⣿⣿⣿⣧⠀⠀⠀⠀⢹⣿⣿⡇⠈⣿⣿⣮⣿⣿⢸⣿⡟⢹⠀⠀
.
├── Makefile
├── README.md
├── backend
│ ├── CertGamesRun.py
│ ├── Makefile
│ ├── api
│ │ ├── CertGamesAPI.py
│ │ ├── __init__.py
│ │ ├── admin
│ │ │ ├── __init__.py
│ │ │ ├── auth
│ │ │ │ ├── __init__.py
│ │ │ │ ├── controllers.py
│ │ │ │ ├── qa
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── auth_integration
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── qa_auth_integration.py
│ │ │ │ │ ├── auth_unit
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_auth_schemas.py
│ │ │ │ │ │ └── qa_auth_services.py
│ │ │ │ │ └── conftest.py
│ │ │ │ ├── routes.py
│ │ │ │ ├── schemas.py
│ │ │ │ └── services.py
│ │ │ ├── domains
│ │ │ │ ├── __init__.py
│ │ │ │ ├── analytics
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── controllers.py
│ │ │ │ │ ├── nsdocs.py
│ │ │ │ │ ├── qa
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── analytics_integration
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ └── qa_analytics.py
│ │ │ │ │ │ ├── conftest.py
│ │ │ │ │ │ └── test_data.py
│ │ │ │ │ ├── queries.py
│ │ │ │ │ ├── routes.py
│ │ │ │ │ ├── schemas.py
│ │ │ │ │ └── services.py
│ │ │ │ ├── audit
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── controllers.py
│ │ │ │ │ ├── qa
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── audit_integration
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ └── qa_audit.py
│ │ │ │ │ │ ├── conftest.py
│ │ │ │ │ │ └── test_data.py
│ │ │ │ │ ├── queries.py
│ │ │ │ │ ├── routes.py
│ │ │ │ │ ├── schemas.py
│ │ │ │ │ └── services.py
│ │ │ │ ├── link_user
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── controllers.py
│ │ │ │ │ ├── routes.py
│ │ │ │ │ ├── schemas.py
│ │ │ │ │ └── services.py
│ │ │ │ ├── monitoring
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── controllers.py
│ │ │ │ │ ├── qa
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── conftest.py
│ │ │ │ │ │ ├── monitoring_integration
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ └── qa_monitoring.py
│ │ │ │ │ │ └── test_data.py
│ │ │ │ │ ├── queries.py
│ │ │ │ │ ├── routes.py
│ │ │ │ │ ├── schemas.py
│ │ │ │ │ └── services.py
│ │ │ │ ├── revenue
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── controllers.py
│ │ │ │ │ ├── qa
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── conftest.py
│ │ │ │ │ │ ├── revenue_integration
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ └── qa_revenue.py
│ │ │ │ │ │ └── test_data.py
│ │ │ │ │ ├── queries.py
│ │ │ │ │ ├── routes.py
│ │ │ │ │ ├── schemas.py
│ │ │ │ │ └── services.py
│ │ │ │ ├── security
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── controllers.py
│ │ │ │ │ ├── qa
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── conftest.py
│ │ │ │ │ │ ├── security_integration
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ └── qa_security.py
│ │ │ │ │ │ └── test_data.py
│ │ │ │ │ ├── queries.py
│ │ │ │ │ ├── routes.py
│ │ │ │ │ ├── schemas.py
│ │ │ │ │ └── services.py
│ │ │ │ ├── support
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── controllers.py
│ │ │ │ │ ├── qa
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── conftest.py
│ │ │ │ │ │ ├── support_integration
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ └── qa_support.py
│ │ │ │ │ │ └── test_data.py
│ │ │ │ │ ├── routes.py
│ │ │ │ │ ├── schemas.py
│ │ │ │ │ └── services.py
│ │ │ │ └── users
│ │ │ │ ├── __init__.py
│ │ │ │ ├── controllers.py
│ │ │ │ ├── nsdocs.py
│ │ │ │ ├── qa
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── conftest.py
│ │ │ │ │ ├── test_data.py
│ │ │ │ │ └── users_integration
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── qa_users.py
│ │ │ │ ├── queries.py
│ │ │ │ ├── routes.py
│ │ │ │ ├── schemas.py
│ │ │ │ └── services.py
│ │ │ ├── models
│ │ │ │ ├── __init__.py
│ │ │ │ ├── analytics
│ │ │ │ │ ├── DatabaseMetrics.py
│ │ │ │ │ ├── EndpointMetrics.py
│ │ │ │ │ ├── ErrorLog.py
│ │ │ │ │ ├── PerformanceMetric.py
│ │ │ │ │ ├── WebVital.py
│ │ │ │ │ └── __init__.py
│ │ │ │ ├── audit
│ │ │ │ │ ├── AuditLog.py
│ │ │ │ │ └── __init__.py
│ │ │ │ ├── monitoring
│ │ │ │ │ ├── AIUsageLog.py
│ │ │ │ │ ├── RequestLog.py
│ │ │ │ │ └── __init__.py
│ │ │ │ ├── qa
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── anal_unit
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_database_metrics_models.py
│ │ │ │ │ │ ├── qa_endpoint_metrics_models.py
│ │ │ │ │ │ ├── qa_error_log_models.py
│ │ │ │ │ │ ├── qa_performance_metric_models.py
│ │ │ │ │ │ └── qa_web_vital_models.py
│ │ │ │ │ ├── audit_unit
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── qa_audit_log_models.py
│ │ │ │ │ ├── conftest.py
│ │ │ │ │ ├── monitoring_unit
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_ai_usage_log_models.py
│ │ │ │ │ │ └── qa_request_log_models.py
│ │ │ │ │ ├── revenue_unit
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_subscription_event_models.py
│ │ │ │ │ │ └── qa_subscription_metrics_models.py
│ │ │ │ │ ├── security_unit
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_active_token_count_models.py
│ │ │ │ │ │ ├── qa_data_retention_models.py
│ │ │ │ │ │ ├── qa_ip_blocklist_models.py
│ │ │ │ │ │ ├── qa_rate_limit_models.py
│ │ │ │ │ │ ├── qa_security_event_models.py
│ │ │ │ │ │ └── qa_token_blocklist_models.py
│ │ │ │ │ └── users_unit
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_admin_user_models.py
│ │ │ │ │ └── qa_user_management_models.py
│ │ │ │ ├── revenue
│ │ │ │ │ ├── SubscriptionEvent.py
│ │ │ │ │ ├── SubscriptionMetrics.py
│ │ │ │ │ └── __init__.py
│ │ │ │ ├── security
│ │ │ │ │ ├── ActiveTokenCount.py
│ │ │ │ │ ├── DataRetention.py
│ │ │ │ │ ├── IPBlocklist.py
│ │ │ │ │ ├── RateLimit.py
│ │ │ │ │ ├── SecurityEvent.py
│ │ │ │ │ ├── TokenBlocklist.py
│ │ │ │ │ └── __init__.py
│ │ │ │ └── users
│ │ │ │ ├── AdminUser.py
│ │ │ │ ├── UserManagement.py
│ │ │ │ └── __init__.py
│ │ │ ├── qa
│ │ │ │ ├── __init__.py
│ │ │ │ ├── conftest.py
│ │ │ │ ├── fixtures.py
│ │ │ │ ├── helpers.py
│ │ │ │ └── test_data.py
│ │ │ ├── roles
│ │ │ │ ├── __init__.py
│ │ │ │ ├── controllers.py
│ │ │ │ ├── models.py
│ │ │ │ ├── permissions.py
│ │ │ │ ├── qa
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── conftest.py
│ │ │ │ │ ├── roles_integrations
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── qa_roles_integration.py
│ │ │ │ │ └── roles_unit
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_roles_models.py
│ │ │ │ │ └── qa_roles_permissions.py
│ │ │ │ ├── routes.py
│ │ │ │ ├── schemas.py
│ │ │ │ └── services.py
│ │ │ └── utils
│ │ │ ├── __init__.py
│ │ │ ├── decorators
│ │ │ │ ├── __init__.py
│ │ │ │ ├── response.py
│ │ │ │ └── unified.py
│ │ │ ├── middleware
│ │ │ │ ├── __init__.py
│ │ │ │ ├── csrf.py
│ │ │ │ └── exceptions.py
│ │ │ └── qa
│ │ │ ├── __init__.py
│ │ │ ├── conftest.py
│ │ │ ├── qa_decorators_unit.py
│ │ │ └── qa_middleware_unit.py
│ │ ├── core
│ │ │ ├── __init__.py
│ │ │ ├── auth
│ │ │ │ ├── __init__.py
│ │ │ │ ├── auth_optional.py
│ │ │ │ ├── auth_required.py
│ │ │ │ ├── jwt_auth.py
│ │ │ │ ├── subscription_required.py
│ │ │ │ └── unified_auth.py
│ │ │ ├── database
│ │ │ │ ├── Base.py
│ │ │ │ ├── __init__.py
│ │ │ │ └── connection.py
│ │ │ ├── decorators
│ │ │ │ ├── __init__.py
│ │ │ │ ├── cache.py
│ │ │ │ ├── guards
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── pattern_guard.py
│ │ │ │ │ ├── rate_guard.py
│ │ │ │ │ ├── size_guard.py
│ │ │ │ │ └── tracing_guard.py
│ │ │ │ ├── load.py
│ │ │ │ ├── response.py
│ │ │ │ ├── rules.py
│ │ │ │ ├── schema.py
│ │ │ │ ├── secure.py
│ │ │ │ ├── throttle.py
│ │ │ │ └── unified.py
│ │ │ ├── limiters
│ │ │ │ ├── __init__.py
│ │ │ │ ├── fallback_rate_limiter.py
│ │ │ │ ├── shared_rate_limiter.py
│ │ │ │ └── throttle_helpers.py
│ │ │ ├── qa
│ │ │ │ ├── __init__.py
│ │ │ │ ├── conftest.py
│ │ │ │ └── core_unit
│ │ │ │ ├── __init__.py
│ │ │ │ ├── qa_auth
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── qa_jwt_auth.py
│ │ │ │ ├── qa_database
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── qa_database.py
│ │ │ │ ├── qa_decorators
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_auth_decorators.py
│ │ │ │ │ ├── qa_decorators_sgr.py
│ │ │ │ │ ├── qa_pattern_guard.py
│ │ │ │ │ ├── qa_rate_guard.py
│ │ │ │ │ ├── qa_secure_decorator.py
│ │ │ │ │ ├── qa_size_guard.py
│ │ │ │ │ └── qa_unified_decorator.py
│ │ │ │ ├── qa_limiters
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_ai_throttle.py
│ │ │ │ │ ├── qa_fallback_rate_limiter.py
│ │ │ │ │ └── qa_shared_rate_limiter.py
│ │ │ │ ├── qa_services
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_audit_logging.py
│ │ │ │ │ └── qa_security_service.py
│ │ │ │ └── qa_validation
│ │ │ │ ├── __init__.py
│ │ │ │ └── qa_string_validators.py
│ │ │ ├── services
│ │ │ │ ├── __init__.py
│ │ │ │ ├── clients
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── atlas_client.py
│ │ │ │ │ └── geo_ip.py
│ │ │ │ ├── logging
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── audit.py
│ │ │ │ ├── security
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── security_service.py
│ │ │ │ └── senders
│ │ │ │ ├── __init__.py
│ │ │ │ ├── admin_sender.py
│ │ │ │ └── email.py
│ │ │ └── validation
│ │ │ ├── __init__.py
│ │ │ ├── exceptions.py
│ │ │ └── validators.py
│ │ ├── domains
│ │ │ ├── __init__.py
│ │ │ ├── account
│ │ │ │ ├── __init__.py
│ │ │ │ ├── controllers
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── auth
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── me_ctrl.py
│ │ │ │ │ │ ├── refresh_ctrl.py
│ │ │ │ │ │ ├── reset_ctrl.py
│ │ │ │ │ │ └── session_ctrl.py
│ │ │ │ │ ├── oauth
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── apple_ctrl.py
│ │ │ │ │ │ ├── apple_mobile_ctrl.py
│ │ │ │ │ │ ├── github_ctrl.py
│ │ │ │ │ │ ├── google_ctrl.py
│ │ │ │ │ │ ├── google_mobile_ctrl.py
│ │ │ │ │ │ └── shared_ctrl.py
│ │ │ │ │ ├── settings
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── profile_ctrl.py
│ │ │ │ │ └── subscription
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── apple_ctrl.py
│ │ │ │ │ ├── shared_ctrl.py
│ │ │ │ │ └── stripe_ctrl.py
│ │ │ │ ├── metadata
│ │ │ │ │ └── README.md
│ │ │ │ ├── middleware
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── auth_requirements.py
│ │ │ │ │ ├── loaders.py
│ │ │ │ │ ├── rules.py
│ │ │ │ │ └── schemas.py
│ │ │ │ ├── models
│ │ │ │ │ ├── PasswordReset.py
│ │ │ │ │ ├── TempRegistration.py
│ │ │ │ │ ├── User.py
│ │ │ │ │ └── __init__.py
│ │ │ │ ├── nsdocs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── auth_docs.py
│ │ │ │ │ ├── oauth_docs.py
│ │ │ │ │ ├── settings_docs.py
│ │ │ │ │ └── subscription_docs.py
│ │ │ │ ├── qa
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── account_integration
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── auth
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ │ ├── oauth
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ │ ├── profile
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ │ └── subscription
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ ├── account_unit
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_controllers
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── qa_apple_oauth_controller.py
│ │ │ │ │ │ │ ├── qa_auth_controllers.py
│ │ │ │ │ │ │ ├── qa_github_oauth_controller.py
│ │ │ │ │ │ │ ├── qa_google_oauth_controller.py
│ │ │ │ │ │ │ ├── qa_profile_controller.py
│ │ │ │ │ │ │ └── qa_subscription_controllers.py
│ │ │ │ │ │ ├── qa_middleware
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── qa_loaders.py
│ │ │ │ │ │ │ ├── qa_rules.py
│ │ │ │ │ │ │ └── qa_schemas.py
│ │ │ │ │ │ ├── qa_models
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── qa_passwordreset_model.py
│ │ │ │ │ │ │ ├── qa_tempregistration_model.py
│ │ │ │ │ │ │ └── qa_user_model.py
│ │ │ │ │ │ └── qa_services
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_apple_receipt_verifier.py
│ │ │ │ │ │ ├── qa_auth_service.py
│ │ │ │ │ │ ├── qa_oauth_service.py
│ │ │ │ │ │ ├── qa_settings_service.py
│ │ │ │ │ │ └── qa_subscription_service.py
│ │ │ │ │ └── conftest.py
│ │ │ │ ├── routes
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── auth
│ │ │ │ │ │ ├── me.py
│ │ │ │ │ │ ├── refresh.py
│ │ │ │ │ │ ├── reset.py
│ │ │ │ │ │ └── session.py
│ │ │ │ │ ├── oauth
│ │ │ │ │ │ ├── apple.py
│ │ │ │ │ │ ├── github.py
│ │ │ │ │ │ └── google.py
│ │ │ │ │ ├── settings
│ │ │ │ │ │ └── profile.py
│ │ │ │ │ └── subscription
│ │ │ │ │ ├── apple.py
│ │ │ │ │ ├── shared.py
│ │ │ │ │ └── stripe.py
│ │ │ │ └── services
│ │ │ │ ├── AppleReceiptVerifier.py
│ │ │ │ ├── __init__.py
│ │ │ │ ├── auth.py
│ │ │ │ ├── oauth.py
│ │ │ │ ├── settings.py
│ │ │ │ └── subscription.py
│ │ │ ├── community
│ │ │ │ ├── __init__.py
│ │ │ │ ├── controllers
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── leaderboard_ctrl.py
│ │ │ │ │ └── support_ctrl.py
│ │ │ │ ├── metadata
│ │ │ │ │ └── README.md
│ │ │ │ ├── middleware
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── loaders.py
│ │ │ │ │ ├── rules.py
│ │ │ │ │ └── schemas.py
│ │ │ │ ├── models
│ │ │ │ │ ├── SupportThread.py
│ │ │ │ │ └── __init__.py
│ │ │ │ ├── nsdocs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── community_docs.py
│ │ │ │ ├── qa
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── community_integration
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── leaderboard_integration
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ │ └── support_integration
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ ├── community_unit
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_middleware
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── qa_loaders.py
│ │ │ │ │ │ │ ├── qa_rules.py
│ │ │ │ │ │ │ └── qa_schemas.py
│ │ │ │ │ │ ├── qa_models
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ └── qa_support_thread_model.py
│ │ │ │ │ │ └── qa_services
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_leaderboard_engine.py
│ │ │ │ │ │ ├── qa_leaderboard_ops.py
│ │ │ │ │ │ └── qa_support_ops.py
│ │ │ │ │ └── conftest.py
│ │ │ │ ├── routes
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── leaderboard.py
│ │ │ │ │ └── support.py
│ │ │ │ └── services
│ │ │ │ ├── __init__.py
│ │ │ │ ├── leaderboard_engine.py
│ │ │ │ ├── leaderboard_ops.py
│ │ │ │ └── support_ops.py
│ │ │ ├── content
│ │ │ │ ├── __init__.py
│ │ │ │ ├── controllers
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── daily_ctrl.py
│ │ │ │ ├── metadata
│ │ │ │ │ └── README.md
│ │ │ │ ├── middleware
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── loaders.py
│ │ │ │ │ ├── rules.py
│ │ │ │ │ └── schemas.py
│ │ │ │ ├── models
│ │ │ │ │ ├── Daily.py
│ │ │ │ │ └── __init__.py
│ │ │ │ ├── nsdocs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── daily_docs.py
│ │ │ │ ├── qa
│ │ │ │ │ ├── conftest.py
│ │ │ │ │ ├── content_integration
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ └── content_unit
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_controllers
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── qa_daily_ctrl.py
│ │ │ │ │ ├── qa_middleware
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_loaders.py
│ │ │ │ │ │ ├── qa_rules.py
│ │ │ │ │ │ └── qa_schemas.py
│ │ │ │ │ ├── qa_models
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── qa_daily_model.py
│ │ │ │ │ └── qa_services
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── qa_daily_ops.py
│ │ │ │ ├── routes
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── daily.py
│ │ │ │ └── services
│ │ │ │ ├── __init__.py
│ │ │ │ └── daily_ops.py
│ │ │ ├── freemium
│ │ │ │ ├── __init__.py
│ │ │ │ ├── controllers
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── decrement_ctrl.py
│ │ │ │ │ └── limits_ctrl.py
│ │ │ │ ├── metadata
│ │ │ │ │ └── README.md
│ │ │ │ ├── middleware
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── loaders.py
│ │ │ │ │ ├── rules.py
│ │ │ │ │ └── schemas.py
│ │ │ │ ├── models
│ │ │ │ │ ├── FreemiumUsage.py
│ │ │ │ │ └── __init__.py
│ │ │ │ ├── nsdocs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── freemium_docs.py
│ │ │ │ ├── qa
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── conftest.py
│ │ │ │ │ ├── freemium_integration
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── limits
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ │ ├── usage_tracking
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ │ └── workflows
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ └── freemium_unit
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_controllers
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_decrement_ctrl.py
│ │ │ │ │ │ └── qa_limits_ctrl.py
│ │ │ │ │ ├── qa_middleware
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── qa_rules.py
│ │ │ │ │ ├── qa_models
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── qa_freemium_usage_model.py
│ │ │ │ │ └── qa_services
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── qa_freemium_ops.py
│ │ │ │ ├── routes
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── decrement.py
│ │ │ │ │ └── limits.py
│ │ │ │ └── services
│ │ │ │ ├── __init__.py
│ │ │ │ └── freemium_ops.py
│ │ │ ├── games
│ │ │ │ ├── __init__.py
│ │ │ │ ├── controllers
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── incident
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── _default.py
│ │ │ │ │ │ └── incident_ctrl.py
│ │ │ │ │ ├── phishing
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── _default.py
│ │ │ │ │ │ └── phishing_ctrl.py
│ │ │ │ │ └── threat
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── threat_ctrl.py
│ │ │ │ ├── metadata
│ │ │ │ │ └── README.md
│ │ │ │ ├── middleware
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── loaders.py
│ │ │ │ │ ├── rules.py
│ │ │ │ │ └── schemas.py
│ │ │ │ ├── models
│ │ │ │ │ ├── Incident.py
│ │ │ │ │ ├── Phishing.py
│ │ │ │ │ ├── Threat.py
│ │ │ │ │ └── __init__.py
│ │ │ │ ├── nsdocs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── incident_docs.py
│ │ │ │ │ ├── phishing_docs.py
│ │ │ │ │ └── threat_docs.py
│ │ │ │ ├── qa
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── conftest.py
│ │ │ │ │ ├── games_integration
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── incident
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ │ ├── phishing
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ │ └── threat
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ └── games_unit
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_controllers
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_incident_ctrl.py
│ │ │ │ │ │ ├── qa_phishing_ctrl.py
│ │ │ │ │ │ └── qa_threat_ctrl.py
│ │ │ │ │ ├── qa_middleware
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_loaders.py
│ │ │ │ │ │ ├── qa_rules.py
│ │ │ │ │ │ └── qa_schemas.py
│ │ │ │ │ ├── qa_models
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_incident_model.py
│ │ │ │ │ │ ├── qa_phishing_model.py
│ │ │ │ │ │ └── qa_threat_model.py
│ │ │ │ │ └── qa_services
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_incident_achievement_engine.py
│ │ │ │ │ ├── qa_incident_completion_engine.py
│ │ │ │ │ ├── qa_incident_ops.py
│ │ │ │ │ ├── qa_phishing_ops.py
│ │ │ │ │ ├── qa_threat_achievement_engine.py
│ │ │ │ │ ├── qa_threat_completion_engine.py
│ │ │ │ │ ├── qa_threat_evaluation_engine.py
│ │ │ │ │ └── qa_threat_ops.py
│ │ │ │ ├── routes
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── incident.py
│ │ │ │ │ ├── phishing.py
│ │ │ │ │ └── threat.py
│ │ │ │ └── services
│ │ │ │ ├── __init__.py
│ │ │ │ ├── incident
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── achievement_engine.py
│ │ │ │ │ ├── completion_engine.py
│ │ │ │ │ └── incident_ops.py
│ │ │ │ ├── phishing
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── phishing_ops.py
│ │ │ │ └── threat
│ │ │ │ ├── __init__.py
│ │ │ │ ├── achievement_engine.py
│ │ │ │ ├── completion_engine.py
│ │ │ │ ├── evaluation_engine.py
│ │ │ │ └── threat_ops.py
│ │ │ ├── marketing
│ │ │ │ ├── __init__.py
│ │ │ │ ├── controllers
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── contact_ctrl.py
│ │ │ │ │ └── newsletter_ctrl.py
│ │ │ │ ├── metadata
│ │ │ │ │ └── README.md
│ │ │ │ ├── middleware
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── loaders.py
│ │ │ │ │ ├── rules.py
│ │ │ │ │ └── schemas.py
│ │ │ │ ├── models
│ │ │ │ │ ├── Contact.py
│ │ │ │ │ ├── Newsletter.py
│ │ │ │ │ └── __init__.py
│ │ │ │ ├── nsdocs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── marketing_docs.py
│ │ │ │ ├── qa
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── conftest.py
│ │ │ │ │ ├── marketing_integration
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── contact
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ │ └── newsletter
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ └── marketing_unit
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_controllers
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_contact_ctrl.py
│ │ │ │ │ │ └── qa_newsletter_ctrl.py
│ │ │ │ │ ├── qa_middleware
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_loaders.py
│ │ │ │ │ │ ├── qa_rules.py
│ │ │ │ │ │ └── qa_schemas.py
│ │ │ │ │ ├── qa_models
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_contact_model.py
│ │ │ │ │ │ └── qa_newsletter_model.py
│ │ │ │ │ └── qa_services
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_contact_ops.py
│ │ │ │ │ └── qa_newsletter_ops.py
│ │ │ │ ├── routes
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── contact.py
│ │ │ │ │ └── newsletter.py
│ │ │ │ └── services
│ │ │ │ ├── __init__.py
│ │ │ │ ├── contact_ops.py
│ │ │ │ └── newsletter_ops.py
│ │ │ ├── progression
│ │ │ │ ├── __init__.py
│ │ │ │ ├── controllers
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── achievement
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── catalog_ctrl.py
│ │ │ │ │ │ ├── progress_ctrl.py
│ │ │ │ │ │ └── simulate_ctrl.py
│ │ │ │ │ └── attributes
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── coin_ctrl.py
│ │ │ │ │ └── xp_ctrl.py
│ │ │ │ ├── metadata
│ │ │ │ │ └── README.md
│ │ │ │ ├── middleware
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── loaders.py
│ │ │ │ │ ├── rules.py
│ │ │ │ │ └── schemas.py
│ │ │ │ ├── models
│ │ │ │ │ ├── Achievement.py
│ │ │ │ │ └── __init__.py
│ │ │ │ ├── nsdocs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── progression_docs.py
│ │ │ │ ├── qa
│ │ │ │ │ ├── conftest.py
│ │ │ │ │ ├── progression_integration
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── achievement
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ │ └── attributes
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ └── progression_unit
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_controllers
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_catalog_ctrl.py
│ │ │ │ │ │ ├── qa_coin_ctrl.py
│ │ │ │ │ │ ├── qa_progress_ctrl.py
│ │ │ │ │ │ ├── qa_simulate_ctrl.py
│ │ │ │ │ │ └── qa_xp_ctrl.py
│ │ │ │ │ ├── qa_middleware
│ │ │ │ │ │ ├── qa_loaders.py
│ │ │ │ │ │ ├── qa_rules.py
│ │ │ │ │ │ └── qa_schemas.py
│ │ │ │ │ ├── qa_models
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── qa_achievement_model.py
│ │ │ │ │ └── qa_services
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_achieve_engine.py
│ │ │ │ │ ├── qa_achievement_ops.py
│ │ │ │ │ ├── qa_counter_ops.py
│ │ │ │ │ ├── qa_level_ops.py
│ │ │ │ │ ├── qa_progression_ops.py
│ │ │ │ │ ├── qa_unlock_engine.py
│ │ │ │ │ └── qa_xp_engine.py
│ │ │ │ ├── routes
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── achievement.py
│ │ │ │ │ ├── coin.py
│ │ │ │ │ └── xp.py
│ │ │ │ └── services
│ │ │ │ ├── __init__.py
│ │ │ │ ├── achieve_engine.py
│ │ │ │ ├── achievement_ops.py
│ │ │ │ ├── counter_ops.py
│ │ │ │ ├── level_ops.py
│ │ │ │ ├── progression_ops.py
│ │ │ │ ├── unlock_engine.py
│ │ │ │ └── xp_engine.py
│ │ │ ├── shop
│ │ │ │ ├── __init__.py
│ │ │ │ ├── controllers
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── catalog_ctrl.py
│ │ │ │ │ ├── equipment_ctrl.py
│ │ │ │ │ ├── inventory_ctrl.py
│ │ │ │ │ └── purchase_ctrl.py
│ │ │ │ ├── metadata
│ │ │ │ │ └── README.md
│ │ │ │ ├── middleware
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── loaders.py
│ │ │ │ │ ├── rules.py
│ │ │ │ │ └── schemas.py
│ │ │ │ ├── models
│ │ │ │ │ ├── Shop.py
│ │ │ │ │ └── __init__.py
│ │ │ │ ├── nsdocs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── shop_docs.py
│ │ │ │ ├── qa
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── conftest.py
│ │ │ │ │ ├── shop_integration
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ └── shop_unit
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_controllers
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_catalog_ctrl.py
│ │ │ │ │ │ ├── qa_equipment_ctrl.py
│ │ │ │ │ │ ├── qa_inventory_ctrl.py
│ │ │ │ │ │ └── qa_purchase_ctrl.py
│ │ │ │ │ ├── qa_middleware
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_loaders.py
│ │ │ │ │ │ ├── qa_rules.py
│ │ │ │ │ │ └── qa_schemas.py
│ │ │ │ │ ├── qa_models
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── qa_shop_model.py
│ │ │ │ │ └── qa_services
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_catalog_ops.py
│ │ │ │ │ ├── qa_equipment_ops.py
│ │ │ │ │ ├── qa_purchase_ops.py
│ │ │ │ │ └── qa_purchase_service.py
│ │ │ │ ├── routes
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── catalog.py
│ │ │ │ │ ├── equipment.py
│ │ │ │ │ ├── inventory.py
│ │ │ │ │ └── purchase.py
│ │ │ │ └── services
│ │ │ │ ├── __init__.py
│ │ │ │ ├── catalog_ops.py
│ │ │ │ ├── equipment_ops.py
│ │ │ │ └── purchase_ops.py
│ │ │ ├── testing
│ │ │ │ ├── __init__.py
│ │ │ │ ├── controllers
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── analysis
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── performance.py
│ │ │ │ │ │ ├── progress.py
│ │ │ │ │ │ └── review.py
│ │ │ │ │ ├── discovery
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── catalog.py
│ │ │ │ │ └── session
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── actions.py
│ │ │ │ │ └── attempts.py
│ │ │ │ ├── metadata
│ │ │ │ │ └── README.md
│ │ │ │ ├── middleware
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── loaders.py
│ │ │ │ │ ├── rules.py
│ │ │ │ │ └── schemas.py
│ │ │ │ ├── models
│ │ │ │ │ ├── Test.py
│ │ │ │ │ └── __init__.py
│ │ │ │ ├── nsdocs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── analysis_docs.py
│ │ │ │ │ ├── discovery_docs.py
│ │ │ │ │ └── session_docs.py
│ │ │ │ ├── qa
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── conftest.py
│ │ │ │ │ ├── testing_integration
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── analytics
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ │ ├── review
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ │ └── session
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_edge_cases.py
│ │ │ │ │ │ ├── qa_error_handling.py
│ │ │ │ │ │ └── qa_happy_paths.py
│ │ │ │ │ └── testing_unit
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_controllers
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_analysis_controllers.py
│ │ │ │ │ │ ├── qa_discovery_controllers.py
│ │ │ │ │ │ └── qa_session_controllers.py
│ │ │ │ │ ├── qa_middleware
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── qa_loaders.py
│ │ │ │ │ │ ├── qa_rules.py
│ │ │ │ │ │ └── qa_schemas.py
│ │ │ │ │ ├── qa_models
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── qa_test_model.py
│ │ │ │ │ └── qa_services
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_analysis_ops.py
│ │ │ │ │ ├── qa_discovery_ops.py
│ │ │ │ │ ├── qa_reward_ops.py
│ │ │ │ │ └── qa_session_ops.py
│ │ │ │ ├── routes
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── actions.py
│ │ │ │ │ ├── analytics.py
│ │ │ │ │ ├── attempts.py
│ │ │ │ │ ├── catalog.py
│ │ │ │ │ └── review.py
│ │ │ │ └── services
│ │ │ │ ├── __init__.py
│ │ │ │ ├── analysis_ops.py
│ │ │ │ ├── discovery_ops.py
│ │ │ │ ├── reward_ops.py
│ │ │ │ └── session_ops.py
│ │ │ └── tools
│ │ │ ├── __init__.py
│ │ │ ├── controllers
│ │ │ │ ├── __init__.py
│ │ │ │ ├── analogy_ctrl.py
│ │ │ │ ├── grc_ctrl.py
│ │ │ │ ├── scenario_ctrl.py
│ │ │ │ └── xploit_ctrl.py
│ │ │ ├── metadata
│ │ │ │ └── README.md
│ │ │ ├── middleware
│ │ │ │ └── __init__.py
│ │ │ ├── models
│ │ │ │ └── __init__.py
│ │ │ ├── nsdocs
│ │ │ │ ├── __init__.py
│ │ │ │ └── tools_docs.py
│ │ │ ├── qa
│ │ │ │ ├── __init__.py
│ │ │ │ ├── conftest.py
│ │ │ │ ├── tools_integration
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_analogy_integration.py
│ │ │ │ │ ├── qa_grc_integration.py
│ │ │ │ │ ├── qa_scenario_integration.py
│ │ │ │ │ └── qa_xploit_integration.py
│ │ │ │ └── tools_unit
│ │ │ │ ├── __init__.py
│ │ │ │ ├── qa_controllers
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── qa_analogy_ctrl.py
│ │ │ │ │ ├── qa_grc_ctrl.py
│ │ │ │ │ ├── qa_scenario_ctrl.py
│ │ │ │ │ └── qa_xploit_ctrl.py
│ │ │ │ └── qa_services
│ │ │ │ ├── __init__.py
│ │ │ │ ├── qa_analogy_engine.py
│ │ │ │ ├── qa_grc_engine.py
│ │ │ │ ├── qa_llm_ops.py
│ │ │ │ ├── qa_scenario_engine.py
│ │ │ │ └── qa_xploit_engine.py
│ │ │ ├── routes
│ │ │ │ ├── __init__.py
│ │ │ │ ├── analogy.py
│ │ │ │ ├── grc.py
│ │ │ │ ├── scenario.py
│ │ │ │ └── xploit.py
│ │ │ └── services
│ │ │ ├── OpenAI.py
│ │ │ ├── __init__.py
│ │ │ ├── analogy_engine.py
│ │ │ ├── grc_engine.py
│ │ │ ├── llm_ops.py
│ │ │ ├── prompts.py
│ │ │ ├── scenario_engine.py
│ │ │ └── xploit_engine.py
│ │ └── tasks
│ │ ├── __init__.py
│ │ ├── celery.py
│ │ ├── clean.py
│ │ └── update.py
│ ├── app
│ │ ├── __init__.py
│ │ ├── clients
│ │ │ ├── __init__.py
│ │ │ ├── oauth.py
│ │ │ ├── socketio.py
│ │ │ └── webhooks.py
│ │ ├── engine
│ │ │ ├── __init__.py
│ │ │ ├── database.py
│ │ │ ├── extensions.py
│ │ │ ├── manager.py
│ │ │ └── rate_limiting.py
│ │ ├── factory.py
│ │ ├── handlers
│ │ │ ├── __init__.py
│ │ │ ├── error_handlers.py
│ │ │ ├── request_handlers.py
│ │ │ └── socketio.py
│ │ ├── http
│ │ │ ├── __init__.py
│ │ │ ├── cors.py
│ │ │ ├── csrf.py
│ │ │ └── root.py
│ │ ├── restx
│ │ │ ├── admin_ns.py
│ │ │ ├── api.py
│ │ │ └── ns.py
│ │ ├── static
│ │ │ ├── __init__.py
│ │ │ ├── assets.py
│ │ │ └── swagger-ui
│ │ │ ├── custom-logo.svg
│ │ │ └── custom-theme.css
│ │ └── templates
│ │ └── swagger-ui.html
│ ├── config.py
│ ├── dev-requirements.txt
│ ├── devtools
│ │ ├── __init__.py
│ │ ├── data
│ │ │ └── shopItems.js
│ │ ├── migrations
│ │ │ ├── ___init__.py
│ │ │ ├── dev
│ │ │ │ ├── ___init__.py
│ │ │ │ ├── cleanup_old_achievements_dev.py
│ │ │ │ └── migrate_achievements_to_v2_dev.py
│ │ │ └── prod
│ │ │ ├── ___init__.py
│ │ │ ├── cleanup_old_achievements_PRODUCTION.py
│ │ │ └── migrate_achievements_to_v2_PRODUCTION.py
│ │ ├── pytest
│ │ │ ├── __init__.py
│ │ │ └── pylint_duplicate.py
│ │ ├── scripts
│ │ │ ├── ___init__.py
│ │ │ ├── collect_database_metrics.py
│ │ │ └── link_admin_to_user.py
│ │ └── seed
│ │ ├── seed_analytics_data.py
│ │ ├── seed_dev_database_users.py
│ │ ├── seed_monitoring_data.py
│ │ ├── seed_recent_revenue_activity.py
│ │ ├── seed_revenue_data.py
│ │ ├── seed_security_data.py
│ │ └── seed_shop_items.py
│ ├── pyproject.toml
│ ├── qa
│ │ ├── __init__.py
│ │ ├── account_qa
│ │ │ ├── __init__.py
│ │ │ ├── conftest.py
│ │ │ └── fixtures
│ │ │ ├── __init__.py
│ │ │ ├── auth.py
│ │ │ ├── factories.py
│ │ │ ├── oauth.py
│ │ │ ├── subscription.py
│ │ │ └── test_data.py
│ │ ├── app_qa
│ │ │ ├── __init__.py
│ │ │ ├── qa_config_unit.py
│ │ │ ├── qa_error_handlers_unit.py
│ │ │ ├── qa_rate_limiting_unit.py
│ │ │ └── qa_settings_unit.py
│ │ ├── community_qa
│ │ │ ├── __init__.py
│ │ │ ├── conftest.py
│ │ │ └── fixtures
│ │ │ ├── __init__.py
│ │ │ ├── admin_mocking.py
│ │ │ ├── factories.py
│ │ │ ├── leaderboard_fixtures.py
│ │ │ ├── socketio_fixtures.py
│ │ │ └── test_data.py
│ │ ├── conftest.py
│ │ ├── super_global
│ │ │ ├── __init__.py
│ │ │ ├── conftest.py
│ │ │ └── fixtures
│ │ │ ├── __init__.py
│ │ │ ├── database.py
│ │ │ ├── factories.py
│ │ │ ├── helpers.py
│ │ │ └── test_data.py
│ │ └── testing_qa
│ │ ├── __init__.py
│ │ └── fixtures
│ │ ├── __init__.py
│ │ ├── factories.py
│ │ └── test_data.py
│ ├── requirements.txt
│ ├── run
│ │ ├── Dockerfile.dev
│ │ ├── Dockerfile.prod
│ │ ├── docker-compose.test.yml
│ │ └── uwsgi.ini
│ └── settings.py
├── docker-compose.yml
├── docker-compose.yml.admin
├── docker-compose.yml.dev
├── frontend
│ ├── admin-app
│ │ ├── eslint.config.js
│ │ ├── index.html
│ │ ├── ops
│ │ │ └── Dockerfile.dev
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── public
│ │ │ ├── avatars/
│ │ │ └── favicon.ico
│ │ ├── src
│ │ │ ├── App.tsx
│ │ │ ├── assets
│ │ │ │ └── fonts
│ │ │ │ ├── Azonix.otf
│ │ │ │ ├── Inter-VariableFont_opsz,wght.ttf
│ │ │ │ └── JetBrainsMono-VariableFont_wght.ttf
│ │ │ ├── common
│ │ │ │ ├── components
│ │ │ │ │ ├── ErrorBoundary
│ │ │ │ │ │ ├── ErrorBoundary.module.scss
│ │ │ │ │ │ ├── ErrorBoundary.tsx
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── LoadingSpinner
│ │ │ │ │ │ ├── LoadingSpinner.module.scss
│ │ │ │ │ │ └── LoadingSpinner.tsx
│ │ │ │ │ └── ProtectedRoute
│ │ │ │ │ └── ProtectedRoute.tsx
│ │ │ │ └── layouts
│ │ │ │ ├── AdminLayout
│ │ │ │ │ ├── AdminLayout.module.scss
│ │ │ │ │ └── AdminLayout.tsx
│ │ │ │ └── AuthLayout
│ │ │ │ ├── AuthLayout.module.scss
│ │ │ │ └── AuthLayout.tsx
│ │ │ ├── dev
│ │ │ │ ├── ErrorTestPage.module.scss
│ │ │ │ ├── ErrorTestPage.tsx
│ │ │ │ └── index.ts
│ │ │ ├── global.scss
│ │ │ ├── lib
│ │ │ │ ├── api
│ │ │ │ │ ├── axios.config.ts
│ │ │ │ │ └── query.config.ts
│ │ │ │ ├── export
│ │ │ │ │ ├── exportService.ts
│ │ │ │ │ ├── exportTypes.ts
│ │ │ │ │ ├── formatters
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── jsonFormatter.ts
│ │ │ │ │ │ └── pdfFormatter.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── forms
│ │ │ │ ├── router
│ │ │ │ │ └── routes.tsx
│ │ │ │ ├── socket
│ │ │ │ └── store
│ │ │ │ └── auth.store.ts
│ │ │ ├── main.tsx
│ │ │ ├── modules
│ │ │ │ ├── admin-management
│ │ │ │ │ ├── AdminManagement.module.scss
│ │ │ │ │ └── AdminManagement.page.tsx
│ │ │ │ ├── analytics
│ │ │ │ │ ├── Analytics.module.scss
│ │ │ │ │ ├── Analytics.page.tsx
│ │ │ │ │ ├── analytics.constants.ts
│ │ │ │ │ ├── analytics.queries.ts
│ │ │ │ │ ├── analytics.types.ts
│ │ │ │ │ ├── components
│ │ │ │ │ │ ├── dashboard
│ │ │ │ │ │ │ ├── DashboardOverview.module.scss
│ │ │ │ │ │ │ ├── DashboardOverview.tsx
│ │ │ │ │ │ │ ├── MetricsCard.module.scss
│ │ │ │ │ │ │ ├── MetricsCard.tsx
│ │ │ │ │ │ │ ├── MetricsGrid.module.scss
│ │ │ │ │ │ │ ├── MetricsGrid.tsx
│ │ │ │ │ │ │ ├── RecentActivity.module.scss
│ │ │ │ │ │ │ └── RecentActivity.tsx
│ │ │ │ │ │ ├── database
│ │ │ │ │ │ │ ├── CapacityProjection.module.scss
│ │ │ │ │ │ │ ├── CapacityProjection.tsx
│ │ │ │ │ │ │ ├── DatabaseOverview.module.scss
│ │ │ │ │ │ │ ├── DatabaseOverview.tsx
│ │ │ │ │ │ │ ├── IndexEfficiencyGrid.module.scss
│ │ │ │ │ │ │ ├── IndexEfficiencyGrid.tsx
│ │ │ │ │ │ │ ├── ResourceUsageChart.module.scss
│ │ │ │ │ │ │ ├── ResourceUsageChart.tsx
│ │ │ │ │ │ │ ├── SlowQueriesTable.module.scss
│ │ │ │ │ │ │ └── SlowQueriesTable.tsx
│ │ │ │ │ │ ├── endpoints
│ │ │ │ │ │ │ ├── EndpointHealthScore.module.scss
│ │ │ │ │ │ │ ├── EndpointHealthScore.tsx
│ │ │ │ │ │ │ ├── EndpointsOverview.module.scss
│ │ │ │ │ │ │ ├── EndpointsOverview.tsx
│ │ │ │ │ │ │ ├── IncidentManager.module.scss
│ │ │ │ │ │ │ ├── IncidentManager.tsx
│ │ │ │ │ │ │ ├── SlowEndpointsList.module.scss
│ │ │ │ │ │ │ └── SlowEndpointsList.tsx
│ │ │ │ │ │ ├── errors
│ │ │ │ │ │ │ ├── ErrorImpactMetrics.module.scss
│ │ │ │ │ │ │ ├── ErrorImpactMetrics.tsx
│ │ │ │ │ │ │ ├── ErrorTrendsChart.module.scss
│ │ │ │ │ │ │ ├── ErrorTrendsChart.tsx
│ │ │ │ │ │ │ ├── ErrorsExport.module.scss
│ │ │ │ │ │ │ ├── ErrorsExportButton.tsx
│ │ │ │ │ │ │ ├── ErrorsOverview.module.scss
│ │ │ │ │ │ │ ├── ErrorsOverview.tsx
│ │ │ │ │ │ │ ├── RecurringErrorsAlert.module.scss
│ │ │ │ │ │ │ ├── RecurringErrorsAlert.tsx
│ │ │ │ │ │ │ ├── UnresolvedErrorsList.module.scss
│ │ │ │ │ │ │ └── UnresolvedErrorsList.tsx
│ │ │ │ │ │ └── web-vitals
│ │ │ │ │ │ ├── PageMetricsTable.module.scss
│ │ │ │ │ │ ├── PageMetricsTable.tsx
│ │ │ │ │ │ ├── VitalsChart.module.scss
│ │ │ │ │ │ ├── VitalsChart.tsx
│ │ │ │ │ │ ├── VitalsGauges.module.scss
│ │ │ │ │ │ ├── VitalsGauges.tsx
│ │ │ │ │ │ ├── WebVitalsOverview.module.scss
│ │ │ │ │ │ └── WebVitalsOverview.tsx
│ │ │ │ │ └── utils
│ │ │ │ │ └── analyticsExportConfig.ts
│ │ │ │ ├── audit
│ │ │ │ │ ├── Audit.module.scss
│ │ │ │ │ └── Audit.page.tsx
│ │ │ │ ├── auth
│ │ │ │ │ ├── AuthCallback.page.tsx
│ │ │ │ │ ├── Login.module.scss
│ │ │ │ │ ├── Login.page.tsx
│ │ │ │ │ ├── auth.queries.ts
│ │ │ │ │ ├── auth.schemas.ts
│ │ │ │ │ └── auth.types.ts
│ │ │ │ ├── monitoring
│ │ │ │ │ ├── Monitoring.module.scss
│ │ │ │ │ ├── Monitoring.page.tsx
│ │ │ │ │ ├── components
│ │ │ │ │ │ ├── ai
│ │ │ │ │ │ │ ├── AIMonitoringTab.module.scss
│ │ │ │ │ │ │ ├── AIMonitoringTab.tsx
│ │ │ │ │ │ │ ├── AIPerformanceMetrics.module.scss
│ │ │ │ │ │ │ ├── AIPerformanceMetrics.tsx
│ │ │ │ │ │ │ ├── AIUsageOverview.module.scss
│ │ │ │ │ │ │ ├── AIUsageOverview.tsx
│ │ │ │ │ │ │ ├── CostBreakdownChart.module.scss
│ │ │ │ │ │ │ └── CostBreakdownChart.tsx
│ │ │ │ │ │ ├── dashboard
│ │ │ │ │ │ │ ├── MetricsCard.module.scss
│ │ │ │ │ │ │ ├── MetricsCard.tsx
│ │ │ │ │ │ │ ├── MonitoringDashboard.module.scss
│ │ │ │ │ │ │ ├── MonitoringDashboard.tsx
│ │ │ │ │ │ │ ├── SystemHealthScore.module.scss
│ │ │ │ │ │ │ └── SystemHealthScore.tsx
│ │ │ │ │ │ ├── health
│ │ │ │ │ │ │ ├── HealthGauges.module.scss
│ │ │ │ │ │ │ ├── HealthGauges.tsx
│ │ │ │ │ │ │ ├── MetricsTimeline.module.scss
│ │ │ │ │ │ │ ├── MetricsTimeline.tsx
│ │ │ │ │ │ │ ├── SystemHealthTab.module.scss
│ │ │ │ │ │ │ └── SystemHealthTab.tsx
│ │ │ │ │ │ └── requests
│ │ │ │ │ │ ├── EndpointStatsChart.module.scss
│ │ │ │ │ │ ├── EndpointStatsChart.tsx
│ │ │ │ │ │ ├── ErrorAnalysisPanel.module.scss
│ │ │ │ │ │ ├── ErrorAnalysisPanel.tsx
│ │ │ │ │ │ ├── RequestMonitoringTab.module.scss
│ │ │ │ │ │ ├── RequestMonitoringTab.tsx
│ │ │ │ │ │ ├── SlowRequestsTable.module.scss
│ │ │ │ │ │ └── SlowRequestsTable.tsx
│ │ │ │ │ ├── monitoring.constants.ts
│ │ │ │ │ ├── monitoring.queries.ts
│ │ │ │ │ ├── monitoring.types.ts
│ │ │ │ │ └── monitoring.utils.ts
│ │ │ │ ├── overview
│ │ │ │ │ ├── Overview.module.scss
│ │ │ │ │ └── Overview.page.tsx
│ │ │ │ ├── revenue
│ │ │ │ │ ├── Revenue.module.scss
│ │ │ │ │ ├── Revenue.page.tsx
│ │ │ │ │ ├── components
│ │ │ │ │ │ ├── cohort
│ │ │ │ │ │ │ ├── CohortRetention.module.scss
│ │ │ │ │ │ │ ├── CohortRetention.tsx
│ │ │ │ │ │ │ ├── RetentionHeatmap.module.scss
│ │ │ │ │ │ │ └── RetentionHeatmap.tsx
│ │ │ │ │ │ ├── conversion
│ │ │ │ │ │ │ ├── ConversionFunnel.module.scss
│ │ │ │ │ │ │ ├── ConversionFunnel.tsx
│ │ │ │ │ │ │ ├── ConversionRates.module.scss
│ │ │ │ │ │ │ ├── ConversionRates.tsx
│ │ │ │ │ │ │ ├── FunnelChart.module.scss
│ │ │ │ │ │ │ ├── FunnelChart.tsx
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── dashboard
│ │ │ │ │ │ │ ├── MetricsCard.module.scss
│ │ │ │ │ │ │ ├── MetricsCard.tsx
│ │ │ │ │ │ │ ├── RevenueDashboard.module.scss
│ │ │ │ │ │ │ ├── RevenueDashboard.tsx
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── events
│ │ │ │ │ │ │ ├── EventsTable.module.scss
│ │ │ │ │ │ │ ├── EventsTable.tsx
│ │ │ │ │ │ │ ├── SubscriptionEvents.module.scss
│ │ │ │ │ │ │ └── SubscriptionEvents.tsx
│ │ │ │ │ │ ├── mrr
│ │ │ │ │ │ │ ├── MRRAnalysis.module.scss
│ │ │ │ │ │ │ ├── MRRAnalysis.tsx
│ │ │ │ │ │ │ ├── MRRBreakdown.module.scss
│ │ │ │ │ │ │ ├── MRRBreakdown.tsx
│ │ │ │ │ │ │ ├── MRRChart.module.scss
│ │ │ │ │ │ │ ├── MRRChart.tsx
│ │ │ │ │ │ │ ├── PlatformBreakdown.module.scss
│ │ │ │ │ │ │ ├── PlatformBreakdown.tsx
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ └── trends
│ │ │ │ │ │ ├── RevenueTrends.module.scss
│ │ │ │ │ │ ├── RevenueTrends.tsx
│ │ │ │ │ │ ├── TrendChart.module.scss
│ │ │ │ │ │ ├── TrendChart.tsx
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── revenue.constants.ts
│ │ │ │ │ ├── revenue.queries.ts
│ │ │ │ │ ├── revenue.types.ts
│ │ │ │ │ └── revenue.utils.ts
│ │ │ │ ├── security
│ │ │ │ │ ├── Security.module.scss
│ │ │ │ │ ├── Security.page.tsx
│ │ │ │ │ ├── components
│ │ │ │ │ │ ├── dashboard
│ │ │ │ │ │ │ ├── SecurityDashboard.module.scss
│ │ │ │ │ │ │ ├── SecurityDashboard.tsx
│ │ │ │ │ │ │ ├── SecurityMetricsCard.module.scss
│ │ │ │ │ │ │ ├── SecurityMetricsCard.tsx
│ │ │ │ │ │ │ ├── ThreatOverview.module.scss
│ │ │ │ │ │ │ └── ThreatOverview.tsx
│ │ │ │ │ │ ├── events
│ │ │ │ │ │ │ ├── CreateEventModal.module.scss
│ │ │ │ │ │ │ ├── CreateEventModal.tsx
│ │ │ │ │ │ │ ├── EventDetailsModal.module.scss
│ │ │ │ │ │ │ ├── EventDetailsModal.tsx
│ │ │ │ │ │ │ ├── EventsTab.module.scss
│ │ │ │ │ │ │ ├── EventsTab.tsx
│ │ │ │ │ │ │ ├── SecurityEventsList.module.scss
│ │ │ │ │ │ │ └── SecurityEventsList.tsx
│ │ │ │ │ │ ├── ip-management
│ │ │ │ │ │ │ ├── BlockIPModal.module.scss
│ │ │ │ │ │ │ ├── BlockIPModal.tsx
│ │ │ │ │ │ │ ├── BlockedIPsList.module.scss
│ │ │ │ │ │ │ ├── BlockedIPsList.tsx
│ │ │ │ │ │ │ ├── BlocklistEffectiveness.module.scss
│ │ │ │ │ │ │ ├── BlocklistEffectiveness.tsx
│ │ │ │ │ │ │ ├── IPManagementTab.module.scss
│ │ │ │ │ │ │ └── IPManagementTab.tsx
│ │ │ │ │ │ ├── rate-limiting
│ │ │ │ │ │ │ ├── ClearRateLimitModal.module.scss
│ │ │ │ │ │ │ ├── ClearRateLimitModal.tsx
│ │ │ │ │ │ │ ├── RateLimitingTab.module.scss
│ │ │ │ │ │ │ ├── RateLimitingTab.tsx
│ │ │ │ │ │ │ ├── ViolationDetailsModal.module.scss
│ │ │ │ │ │ │ ├── ViolationDetailsModal.tsx
│ │ │ │ │ │ │ ├── ViolationStatistics.module.scss
│ │ │ │ │ │ │ ├── ViolationStatistics.tsx
│ │ │ │ │ │ │ ├── ViolationsTable.module.scss
│ │ │ │ │ │ │ └── ViolationsTable.tsx
│ │ │ │ │ │ ├── threats
│ │ │ │ │ │ │ ├── ActiveThreatsTable.module.scss
│ │ │ │ │ │ │ ├── ActiveThreatsTable.tsx
│ │ │ │ │ │ │ ├── ThreatIntelligence.module.scss
│ │ │ │ │ │ │ ├── ThreatIntelligence.tsx
│ │ │ │ │ │ │ ├── ThreatsTab.module.scss
│ │ │ │ │ │ │ └── ThreatsTab.tsx
│ │ │ │ │ │ └── users
│ │ │ │ │ │ ├── SuspiciousUsersTable.module.scss
│ │ │ │ │ │ ├── SuspiciousUsersTable.tsx
│ │ │ │ │ │ ├── TokenAnomalies.module.scss
│ │ │ │ │ │ ├── TokenAnomalies.tsx
│ │ │ │ │ │ ├── UserSecurityTab.module.scss
│ │ │ │ │ │ └── UserSecurityTab.tsx
│ │ │ │ │ ├── security.constants.ts
│ │ │ │ │ ├── security.queries.ts
│ │ │ │ │ ├── security.types.ts
│ │ │ │ │ └── utils
│ │ │ │ │ └── iconUtils.tsx
│ │ │ │ ├── settings
│ │ │ │ │ └── Settings.page.tsx
│ │ │ │ ├── support
│ │ │ │ │ ├── Support.module.scss
│ │ │ │ │ └── Support.page.tsx
│ │ │ │ └── users
│ │ │ │ ├── Users.module.scss
│ │ │ │ ├── Users.page.tsx
│ │ │ │ ├── components
│ │ │ │ │ ├── BulkOperationsPanel.module.scss
│ │ │ │ │ ├── BulkOperationsPanel.tsx
│ │ │ │ │ ├── UserCreateModal.module.scss
│ │ │ │ │ ├── UserCreateModal.tsx
│ │ │ │ │ ├── UserDetailModal.module.scss
│ │ │ │ │ ├── UserDetailModal.tsx
│ │ │ │ │ ├── UserDetailTabs
│ │ │ │ │ │ ├── UserAchievementsTab.module.scss
│ │ │ │ │ │ ├── UserAchievementsTab.tsx
│ │ │ │ │ │ ├── UserActivityTab.module.scss
│ │ │ │ │ │ ├── UserActivityTab.tsx
│ │ │ │ │ │ ├── UserAdminTab.module.scss
│ │ │ │ │ │ ├── UserAdminTab.tsx
│ │ │ │ │ │ ├── UserAnalyticsTab.tsx
│ │ │ │ │ │ ├── UserFreemiumTab.module.scss
│ │ │ │ │ │ ├── UserFreemiumTab.tsx
│ │ │ │ │ │ ├── UserGameStatsTab.module.scss
│ │ │ │ │ │ ├── UserGameStatsTab.tsx
│ │ │ │ │ │ ├── UserLocationTab.module.scss
│ │ │ │ │ │ ├── UserLocationTab.tsx
│ │ │ │ │ │ ├── UserManagementTab.module.scss
│ │ │ │ │ │ ├── UserManagementTab.tsx
│ │ │ │ │ │ ├── UserOverviewTab.module.scss
│ │ │ │ │ │ ├── UserOverviewTab.tsx
│ │ │ │ │ │ ├── UserPlatformTab.module.scss
│ │ │ │ │ │ ├── UserPlatformTab.tsx
│ │ │ │ │ │ ├── UserProfileTab.module.scss
│ │ │ │ │ │ ├── UserProfileTab.tsx
│ │ │ │ │ │ ├── UserShopTab.module.scss
│ │ │ │ │ │ ├── UserShopTab.tsx
│ │ │ │ │ │ ├── UserSubscriptionTab.module.scss
│ │ │ │ │ │ ├── UserSubscriptionTab.tsx
│ │ │ │ │ │ └── tabBase.scss
│ │ │ │ │ ├── UserFilters.module.scss
│ │ │ │ │ ├── UserFilters.tsx
│ │ │ │ │ ├── UserTable.module.scss
│ │ │ │ │ └── UserTable.tsx
│ │ │ │ ├── shop.queries.ts
│ │ │ │ ├── users.queries.ts
│ │ │ │ ├── users.types.ts
│ │ │ │ └── utils
│ │ │ │ ├── avatarUtils.ts
│ │ │ │ └── userExportConfig.ts
│ │ │ ├── styles
│ │ │ │ ├── abstracts
│ │ │ │ │ ├── _fonts.scss
│ │ │ │ │ ├── _functions.scss
│ │ │ │ │ ├── _index.scss
│ │ │ │ │ ├── _mixins.scss
│ │ │ │ │ └── _variables.scss
│ │ │ │ ├── base
│ │ │ │ │ ├── _index.scss
│ │ │ │ │ ├── _reset.scss
│ │ │ │ │ └── _typography.scss
│ │ │ │ ├── index.scss
│ │ │ │ └── utilities
│ │ │ │ └── _index.scss
│ │ │ ├── types
│ │ │ └── vite-env.d.ts
│ │ ├── stylelint.config.js
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ ├── tsconfig.node.json
│ │ ├── tsconfig.tsbuildinfo
│ │ └── vite.config.ts
│ └── my-react-app
│ ├── craco.config.js
│ ├── eslint.config.mjs
│ ├── ops
│ │ ├── Dockerfile.audit
│ │ ├── Dockerfile.dev
│ │ └── Dockerfile.prod
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ │ ├── ads.txt
│ │ ├── assets
│ │ │ ├── android-chrome-192x192.png
│ │ │ ├── android-chrome-512x512.png
│ │ │ ├── apple-touch-icon.png
│ │ │ ├── certgames-social.webp
│ │ │ ├── favicon-16x16.png
│ │ │ ├── favicon-32x32.png
│ │ │ ├── favicon.ico
│ │ │ ├── ios.png
│ │ │ └── manifest.json
│ │ ├── avatars/
│ │ ├── index.html
│ │ ├── robots.txt
│ │ ├── sitemap.xml
│ │ └── xp
│ │ ├── xp10.png
│ │ ├── xp100.png
│ │ ├── xp200.png
│ │ ├── xp25.png
│ │ └── xp50.png
│ └── src
│ ├── App.js
│ ├── AppSupport
│ │ ├── global.css
│ │ └── reportWebVitals.js
│ ├── api.js
│ ├── components
│ │ ├── GlobalTest
│ │ │ ├── GlobalTestList.js
│ │ │ └── GlobalTestPage.js
│ │ ├── SEO
│ │ │ ├── SEOHelmet.js
│ │ │ ├── StructuredData.js
│ │ │ └── og-default.webp
│ │ ├── Sidebar
│ │ │ ├── Sidebar.js
│ │ │ └── assets
│ │ │ ├── Sidebar.css
│ │ │ └── sidebarlogo.png
│ │ ├── cracked
│ │ │ ├── CrackedAdminDashboard.js
│ │ │ ├── CrackedAdminLoginPage.js
│ │ │ ├── csrfHelper.js
│ │ │ ├── modals
│ │ │ │ ├── ConfirmModal.css
│ │ │ │ └── ConfirmModal.js
│ │ │ ├── styles
│ │ │ │ ├── CrackedAdminDashboard.css
│ │ │ │ ├── CrackedAdminLogin.css
│ │ │ │ └── tabstyles
│ │ │ │ ├── ActivityLogsTab.css
│ │ │ │ ├── C2Tab.css
│ │ │ │ ├── CredentialsTab.css
│ │ │ │ ├── DailyTab.css
│ │ │ │ ├── DbShellTab.css
│ │ │ │ ├── HealthCheckTab.css
│ │ │ │ ├── HoneypotTab.css
│ │ │ │ ├── HtmlInteractionsTab.css
│ │ │ │ ├── LogIp.css
│ │ │ │ ├── NewsletterTab.css
│ │ │ │ ├── OverviewTab.css
│ │ │ │ ├── PerformanceTab.css
│ │ │ │ ├── RateLimitsTab.css
│ │ │ │ ├── RequestLogsTab.css
│ │ │ │ ├── RevenueTab.css
│ │ │ │ ├── ServerMetricsTab.css
│ │ │ │ ├── SupportTab.css
│ │ │ │ ├── TestsTab.css
│ │ │ │ ├── ToolsTab.css
│ │ │ │ └── UsersTab.css
│ │ │ └── tabs
│ │ │ ├── ActivityLogsTab.js
│ │ │ ├── C2Tab.js
│ │ │ ├── CredentialsTab.js
│ │ │ ├── DailyTab.js
│ │ │ ├── DbShellTab.js
│ │ │ ├── HealthChecksTab.js
│ │ │ ├── HoneypotTab.js
│ │ │ ├── HtmlInteractionsTab.js
│ │ │ ├── LogIp.js
│ │ │ ├── NewsletterTab.js
│ │ │ ├── OverviewTab.js
│ │ │ ├── PerformanceTab.js
│ │ │ ├── RateLimitsTab.js
│ │ │ ├── RequestLogsTab.js
│ │ │ ├── RevenueTab.js
│ │ │ ├── ServerMetricsTab.js
│ │ │ ├── SupportTab.js
│ │ │ ├── TestsTab.js
│ │ │ ├── ToolsTab.js
│ │ │ └── UsersTab.js
│ │ ├── css
│ │ │ ├── QuestionLimitBanner.css
│ │ │ ├── SocialShare.css
│ │ │ ├── UpgradePrompt.css
│ │ │ ├── footer.css
│ │ │ └── test.css
│ │ ├── pages
│ │ │ ├── AchievementPage
│ │ │ │ ├── AchievementPage.js
│ │ │ │ └── assets
│ │ │ │ ├── AchievementPage.css
│ │ │ │ ├── AchievementToast.css
│ │ │ │ └── AchievementToast.js
│ │ │ ├── AnalogyPage
│ │ │ │ ├── AnalogyHub.js
│ │ │ │ └── assets
│ │ │ │ ├── AnalogyHub.css
│ │ │ │ ├── backround1.jpg
│ │ │ │ └── loading2.png
│ │ │ ├── ApiDocs
│ │ │ │ ├── ApiDocsPage.css
│ │ │ │ └── ApiDocsPage.js
│ │ │ ├── DailyPage
│ │ │ │ ├── DailyCyberBrief.js
│ │ │ │ └── assets
│ │ │ │ └── DailyCyberBrief.css
│ │ │ ├── DailyStation
│ │ │ │ ├── DailyStationPage.js
│ │ │ │ └── assets
│ │ │ │ └── DailyStation.css
│ │ │ ├── GRCpage
│ │ │ │ ├── GRC.js
│ │ │ │ └── assets
│ │ │ │ └── GRC.css
│ │ │ ├── Info
│ │ │ │ ├── BlogPage.js
│ │ │ │ ├── BlogPostPage.js
│ │ │ │ ├── CareerPathsPage.js
│ │ │ │ ├── ContactPage.js
│ │ │ │ ├── DemosPage.js
│ │ │ │ ├── ExamsPage.js
│ │ │ │ ├── InfoPage.js
│ │ │ │ ├── PublicLeaderboardPage.js
│ │ │ │ ├── RoadmapPage.js
│ │ │ │ ├── components
│ │ │ │ │ ├── InfoNavbar.js
│ │ │ │ │ ├── YouTubeEmbed.js
│ │ │ │ │ ├── navbarScrollUtils.js
│ │ │ │ │ └── videoConfig.js
│ │ │ │ ├── css
│ │ │ │ │ ├── ApiDocsPage.css
│ │ │ │ │ ├── AvatarSprite.css
│ │ │ │ │ ├── BlogPage.css
│ │ │ │ │ ├── CareerPathsPage.css
│ │ │ │ │ ├── ContactPage.css
│ │ │ │ │ ├── DemosPage.css
│ │ │ │ │ ├── ExamsPage.css
│ │ │ │ │ ├── InfoNavbar.css
│ │ │ │ │ ├── InfoPage-Components.css
│ │ │ │ │ ├── InfoPage-Core.css
│ │ │ │ │ ├── InfoPage-Sections.css
│ │ │ │ │ ├── PublicLeaderboardPage.css
│ │ │ │ │ ├── RoadmapPage.css
│ │ │ │ │ └── easteregg.css
│ │ │ │ ├── easteregg.js
│ │ │ │ └── images/
│ │ │ ├── LeaderboardPage
│ │ │ │ ├── LeaderboardPage.js
│ │ │ │ └── assets
│ │ │ │ └── LeaderboardPage.css
│ │ │ ├── Legal
│ │ │ │ ├── PrivacyPolicy.js
│ │ │ │ ├── TermsOfService.js
│ │ │ │ └── assets
│ │ │ │ └── LegalPages.css
│ │ │ ├── Portfolio
│ │ │ │ ├── PortfolioPage.js
│ │ │ │ └── assets
│ │ │ │ ├── CodeEditor.js
│ │ │ │ ├── DeploymentMonitor.js
│ │ │ │ ├── PortfolioDeployment.js
│ │ │ │ ├── PortfolioForm.js
│ │ │ │ ├── PortfolioList.js
│ │ │ │ ├── PortfolioPreview.js
│ │ │ │ └── portfolio.css
│ │ │ ├── ResourcesPage
│ │ │ │ ├── Resources.js
│ │ │ │ └── assets
│ │ │ │ └── Resources.css
│ │ │ ├── ScenarioPage
│ │ │ │ ├── ScenarioSphere.js
│ │ │ │ └── assets
│ │ │ │ ├── ScenarioSphere.css
│ │ │ │ └── attacks.js
│ │ │ ├── ShopPage
│ │ │ │ ├── ShopPage.js
│ │ │ │ └── assets
│ │ │ │ └── ShopPage.css
│ │ │ ├── StatsPage
│ │ │ │ ├── StatsPage.js
│ │ │ │ └── assets
│ │ │ │ └── StatsPage.css
│ │ │ ├── SupportPage
│ │ │ │ ├── SupportAskAnythingPage.js
│ │ │ │ └── assets
│ │ │ │ └── SupportAskAnythingPage.css
│ │ │ ├── UserPage
│ │ │ │ ├── UserProfile.js
│ │ │ │ └── assets
│ │ │ │ ├── UserProfile.css
│ │ │ │ └── validationUtils.js
│ │ │ ├── XploitcraftPage
│ │ │ │ ├── Xploitcraft.js
│ │ │ │ └── assets
│ │ │ │ ├── Xploitcraft.css
│ │ │ │ ├── backround2.jpg
│ │ │ │ ├── evasionTechniquesList.js
│ │ │ │ ├── loading3.png
│ │ │ │ ├── logo5.png
│ │ │ │ └── vulnerabilitiesList.js
│ │ │ ├── auth
│ │ │ │ ├── CreateUsernameForm.js
│ │ │ │ ├── ErrorDisplay.js
│ │ │ │ ├── ForgotPassword.js
│ │ │ │ ├── Login.js
│ │ │ │ ├── OAuthSuccess.js
│ │ │ │ ├── PasswordRequirements.js
│ │ │ │ ├── Register.js
│ │ │ │ ├── ResetPassword.js
│ │ │ │ └── css
│ │ │ │ ├── CreateUsernameForm.css
│ │ │ │ ├── ErrorDisplay.css
│ │ │ │ ├── ForgotPassword.css
│ │ │ │ ├── Login.css
│ │ │ │ ├── PasswordRequirements.css
│ │ │ │ ├── Register.css
│ │ │ │ └── ResetPassword.css
│ │ │ ├── common
│ │ │ │ ├── ErrorMessage.js
│ │ │ │ ├── InputValidation.js
│ │ │ │ ├── LoadingSpinner.js
│ │ │ │ ├── NotFoundPage.js
│ │ │ │ └── assets
│ │ │ │ ├── NotFoundPage.css
│ │ │ │ └── common.css
│ │ │ ├── games
│ │ │ │ ├── CipherChallenge
│ │ │ │ │ ├── CipherChallenge.js
│ │ │ │ │ └── assets
│ │ │ │ │ ├── CipherDisplay.js
│ │ │ │ │ ├── CipherHints.js
│ │ │ │ │ ├── CipherInfoModal.js
│ │ │ │ │ ├── CipherInput.js
│ │ │ │ │ ├── CipherTools.js
│ │ │ │ │ ├── CongratulationsModal.js
│ │ │ │ │ ├── LevelSelector.js
│ │ │ │ │ └── css
│ │ │ │ │ ├── CipherChallenge.css
│ │ │ │ │ ├── CipherDisplay.css
│ │ │ │ │ ├── CipherHints.css
│ │ │ │ │ ├── CipherInfoModal.css
│ │ │ │ │ ├── CipherInput.css
│ │ │ │ │ ├── CipherTools.css
│ │ │ │ │ ├── CongratulationsModal.css
│ │ │ │ │ └── LevelSelector.css
│ │ │ │ ├── IncidentResponder
│ │ │ │ │ ├── IncidentResponder.js
│ │ │ │ │ └── assets
│ │ │ │ │ ├── DifficultySelector.js
│ │ │ │ │ ├── GameInstructions.js
│ │ │ │ │ ├── ScenarioIntro.js
│ │ │ │ │ ├── ScenarioResults.js
│ │ │ │ │ ├── ScenarioStage.js
│ │ │ │ │ ├── css
│ │ │ │ │ │ ├── GameInstructions.css
│ │ │ │ │ │ └── IncidentResponder.css
│ │ │ │ │ └── theme.mp3
│ │ │ │ ├── PhishingPhrenzy
│ │ │ │ │ ├── PhishingPhrenzy.js
│ │ │ │ │ └── assets
│ │ │ │ │ ├── GameOverModal.js
│ │ │ │ │ ├── PhishingCard.js
│ │ │ │ │ ├── cardTypeNames.js
│ │ │ │ │ └── css
│ │ │ │ │ ├── GameOverModal.css
│ │ │ │ │ ├── PhishingCard.css
│ │ │ │ │ ├── PhishingCard2.css
│ │ │ │ │ ├── PhishingCard3.css
│ │ │ │ │ ├── PhishingCard4.css
│ │ │ │ │ ├── PhishingCard5.css
│ │ │ │ │ └── PhishingPhrenzy.css
│ │ │ │ └── ThreatHunter
│ │ │ │ ├── ThreatHunter.js
│ │ │ │ └── assets
│ │ │ │ ├── AnalysisTools.js
│ │ │ │ ├── GameInstructions.js
│ │ │ │ ├── LogViewer.js
│ │ │ │ ├── ScenarioSelector.js
│ │ │ │ ├── ThreatControls.js
│ │ │ │ ├── ThreatResultsModal.js
│ │ │ │ └── css
│ │ │ │ ├── GameInstructions.css
│ │ │ │ └── ThreatHunter.css
│ │ │ ├── ios
│ │ │ │ ├── PrivacyPolicyIOS.js
│ │ │ │ ├── TermsOfServiceIOS.js
│ │ │ │ └── assets
│ │ │ │ └── AppleLegalPages.css
│ │ │ ├── store
│ │ │ │ ├── slice
│ │ │ │ │ ├── achievementsSlice.js
│ │ │ │ │ ├── cipherChallengeSlice.js
│ │ │ │ │ ├── incidentResponderSlice.js
│ │ │ │ │ ├── phishingPhrenzySlice.js
│ │ │ │ │ ├── shopSlice.js
│ │ │ │ │ ├── threatHunterSlice.js
│ │ │ │ │ └── userSlice.js
│ │ │ │ └── store.js
│ │ │ ├── subscription
│ │ │ │ ├── StripeCheckout.js
│ │ │ │ ├── SubscriptionCancel.js
│ │ │ │ ├── SubscriptionPage.js
│ │ │ │ ├── SubscriptionSuccess.js
│ │ │ │ └── css
│ │ │ │ ├── StripeCheckout.css
│ │ │ │ ├── SubscriptionCancel.css
│ │ │ │ ├── SubscriptionPage.css
│ │ │ │ └── SubscriptionSuccess.css
│ │ │ └── tests
│ │ │ ├── aplus
│ │ │ │ ├── APlusTestList.js
│ │ │ │ └── APlusTestPage.js
│ │ │ ├── aplus2
│ │ │ │ ├── APlusCore2TestPage.js
│ │ │ │ └── AplusCore2TestList.js
│ │ │ ├── aws-solutions-architect
│ │ │ │ ├── AwsSolutionsTestList.js
│ │ │ │ └── AwsSolutionsTestPage.js
│ │ │ ├── awscloud
│ │ │ │ ├── AWSCloudTestList.js
│ │ │ │ └── AWSCloudTestPage.js
│ │ │ ├── casp
│ │ │ │ ├── CaspPlusTestList.js
│ │ │ │ └── CaspPlusTestPage.js
│ │ │ ├── cissp
│ │ │ │ ├── CisspTestList.js
│ │ │ │ └── CisspTestPage.js
│ │ │ ├── cloudplus
│ │ │ │ ├── CloudPlusTestList.js
│ │ │ │ └── CloudPlusTestPage.js
│ │ │ ├── cysa
│ │ │ │ ├── CySAPlusTestList.js
│ │ │ │ └── CySAPlusTestPage.js
│ │ │ ├── dataplus
│ │ │ │ ├── DataPlusTestList.js
│ │ │ │ └── DataPlusTestPage.js
│ │ │ ├── isc2-cc
│ │ │ │ ├── Isc2CCTestList.js
│ │ │ │ └── Isc2CCTestPage.js
│ │ │ ├── linuxplus
│ │ │ │ ├── LinuxPlusTestList.js
│ │ │ │ └── LinuxPlusTestPage.js
│ │ │ ├── nplus
│ │ │ │ ├── NPlusTestList.js
│ │ │ │ └── NetworkPlusTestPage.js
│ │ │ ├── penplus
│ │ │ │ ├── PenPlusTestList.js
│ │ │ │ └── PenPlusTestPage.js
│ │ │ ├── secplus
│ │ │ │ ├── SecurityPlusTestList.js
│ │ │ │ └── SecurityPlusTestPage.js
│ │ │ └── serverplus
│ │ │ ├── ServerPlusTestList.js
│ │ │ └── ServerPlusTestPage.js
│ │ └── utils
│ │ ├── AuthSync.js
│ │ ├── Footer.js
│ │ ├── FormattedQuestion.js
│ │ ├── ProtectedRoute.js
│ │ ├── QuestionDropdown.js
│ │ ├── QuestionLimitBanner.js
│ │ ├── ResponsiveAvatar.js
│ │ ├── ScrollToTop.js
│ │ ├── SocialShare.js
│ │ ├── SubscriptionErrorHandler.js
│ │ ├── UpgradePrompt.js
│ │ ├── colorMapping.js
│ │ ├── iconMapping.js
│ │ └── rIcons.js
│ └── index.js
├── metadata
│ ├── REST
│ │ └── Endpoints.md
│ ├── deps
│ │ └── requirements.deps
│ ├── diagrams
│ │ ├── Achievement-flow.md
│ │ ├── Achievements.md
│ │ ├── Audit.md
│ │ ├── Register.html
│ │ ├── Shop.md
│ │ ├── Subscription.md
│ │ └── Test.md
│ ├── github
│ │ ├── CHANGELOG.md
│ │ └── LICENSE
│ └── misc
│ └── ASCII.md
├── nginx
│ ├── logs
│ ├── nginx.conf
│ ├── sites-enabled
│ │ └── proxy.conf
│ ├── sites-enabled-admin
│ │ └── proxy-admin.conf
│ └── sites-enabled-dev
│ └── proxy-dev.conf
└── redis
└── redis.conf
469 directories, 1937 files