diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml deleted file mode 100644 index abd5587..0000000 --- a/.github/workflows/prettier.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: make-it-sexy - -# This action works with pull requests and pushes -on: - pull_request: - push: - branches: - - main - paths: - - website/** - -permissions: - contents: write - pull-requests: write - -jobs: - prettier: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - # Make sure the actual branch is checked out when running on pull requests - ref: ${{ github.head_ref }} - - - name: Prettify code - uses: creyD/prettier_action@v4.3 - with: - # This part is also where you can pass other options, for example: - prettier_options: --write **/*.{ts,js} diff --git a/.github/workflows/react.yml b/.github/workflows/react.yml deleted file mode 100644 index f091894..0000000 --- a/.github/workflows/react.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: react-build-deploy - -permissions: - contents: write - pull-requests: write - -on: - push: - branches: - - "main" - paths: - - website/** - - pull_request: - branches: [ "main" ] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - - run : cd ./website && npm i - shell: bash - - run : cd ./website && npm ci - shell: bash - - run : cd ./website && npm run build - shell: bash - - run : git config user.name github-actions - shell: bash - - run : git config user.email github-actions@github.com - shell: bash - - run : cd ./website && git --work-tree dist add --all - - run : touch .nojekyll - shell: bash - - run : git commit -m "Automatic Build and Deploy run by GitHub Actions" - shell: bash - - run : git push origin HEAD:gh-pages --force - shell: bash diff --git a/website/public/.nojekyll b/.nojekyll similarity index 100% rename from website/public/.nojekyll rename to .nojekyll diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index d739a1b..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "cmake.configureOnOpen": false -} diff --git a/README.md b/README.md deleted file mode 100644 index 923e5e9..0000000 --- a/README.md +++ /dev/null @@ -1,49 +0,0 @@ -# WATT WIZARD - -Watt-Wizards is your go-to platform for sustainable living made fun and rewarding. This innovative app hooks into your smart home or breaker panel to track your energy and water usage in real-time. But that's not all! Challenge your friends in friendly competitions to see who can be the most resource-efficient. Earn points, unlock rewards, and level up your eco-conscious lifestyle, all while reducing your carbon footprint. Watt-Wizards turns everyday sustainability into an engaging game, making it easier than ever to save the planet—and your wallet." - -## What it does -Watt Wizard promotes energy conservation by making it a competitive yet friendly challenge. Users can pit their energy-saving skills against friends and family, vying for the top spot in energy efficiency. By gamifying the process, it taps into the same motivational drive that has made group fitness 25% more effective than individual workouts. Just as people push themselves harder in a group exercise setting, they're also more likely to take energy-saving actions when they know they're in a friendly competition. - -## How We Built It - -### Website: -Our website serves as the main portal for users to get acquainted with our app's features, benefits, and the journey of getting started. We chose **React** for the frontend development due to its component-based architecture, which allows for efficient code reuse and dynamic user interfaces. It aids in delivering a smooth and responsive experience for our users. The site's backend is powered by **Firebase**, offering us a scalable cloud solution that seamlessly integrates with our web and mobile platforms. Firebase's real-time database and authentication modules ensured that we have a secure and live-updated platform. Furthermore, the site was styled and structured using **HTML**, **TypeScript**, and various frontend libraries, accounting for the mentioned percentages in our codebase. - -### Mobile App: -The mobile app, the core of our user experience, was built using **Flutter**. Written in **Dart**, Flutter allowed us to create a cross-platform application that maintains a native feel on both Android and iOS devices. The app provides real-time tracking of energy savings, competitive leaderboards, and user rankings. We prioritized user-friendliness in our design, ensuring that users of all technical backgrounds could easily navigate and benefit from our app. Integration with Firebase ensures that user data is consistently synchronized, authenticated, and securely stored. - -### Arduino Firmware: -For the hardware component, we leveraged **Arduino**, programming our devices using a combination of **C++** and the Arduino scripting language. This firmware emulates a smart home device, collecting real-time energy consumption data. Given the nature of IoT devices and the need for efficient performance, our choice of C++ enabled us to manage memory usage directly and ensure swift data processing. The firmware is designed to communicate seamlessly with our mobile application, transmitting real-time energy consumption data for users to monitor and act upon. - -### Languages Utilized: -Our diverse tech stack incorporated various programming languages to meet specific needs: -- **Dart (31.8%)**: Primarily used for developing our Flutter mobile application. -- **C++ (25.5%)**: Used for Arduino firmware development to capture and process energy data. -- **CMake (17.4%)**: Assisted in managing the build process of our software using a compiler-independent method. -- **TypeScript (15.9%)**: Enhanced our React website development with static typing. -- **Ruby (2.6%)**: Possibly used in scripting, automation, or specific backend tasks. -- **HTML (2.4%)**: Structured our React website. -- **Other (4.4%)**: This likely includes various scripting, configuration, and styling languages that aided in the development and deployment processes. - -Our diverse choice of languages and technologies ensured that each component of our project was optimized for performance, scalability, and user experience. - -## Challenges I ran into -- **Integration across platforms**: Ensuring seamless communication between the Arduino device, mobile app, and website was challenging, especially when it came to real-time data transfer. -- **User Experience Design**: Designing an interface that was both engaging and user-friendly required multiple iterations and feedback sessions. -- **Data Accuracy**: Ensuring the Arduino device accurately captured and transmitted energy consumption data was crucial for the app's credibility and effectiveness. - -## Accomplishments that I'm proud of -- **Real-time Tracking**: Achieving real-time energy consumption tracking, which provides users with immediate feedback on their energy-saving actions. -- **Gamification**: Successfully translating the concept of energy saving into a competitive and fun game, making conservation more appealing to a broader audience. -- **Cross-platform Integration**: Seamlessly integrating data across the website, app, and Arduino device. - -## What I learned -- The importance of user feedback in refining the app experience. -- The technical intricacies of integrating hardware (Arduino) with software platforms. -- The power of gamification in driving behavior change. - -## What's next for Watt Wizard -- **Integration with more Smart Devices**: Expanding compatibility to include other smart home devices, allowing users to track a broader range of energy consumption. -- **Rewards System**: Introducing tangible rewards for top savers, such as discounts on energy bills or eco-friendly products. -- **Community Features**: Adding features like forums or chat rooms where users can share energy-saving tips and strategies with one another. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 358d8fd..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,43 +0,0 @@ -# Security Policy - -## Supported Versions - -Currently, only the following versions of our project are being actively supported with security updates: - -| Version | Supported | -| ------- | ------------------ | -| 5.1.x | :white_check_mark: | -| 5.0.x | :x: | -| 4.0.x | :white_check_mark: | -| < 4.0 | :x: | - -If you're using an unsupported version, we recommend upgrading to the latest supported version to ensure you receive all security updates. - -## Reporting a Vulnerability - -We take security issues very seriously. If you believe you've found a security vulnerability in our project, we encourage you to notify us. We will investigate all legitimate reports and do our best to quickly fix the problem. - -### Guidelines: - -1. **Private Disclosure**: Please keep the details of any vulnerabilities you discover private until they've been addressed by our team. This will help ensure that malicious actors do not take advantage of the issue before we can address it. - -2. **Provide Details**: Offer as much information as possible, including a description of the vulnerability, its potential impact, and steps for reproduction. This will aid our team in understanding and addressing the issue more rapidly. - -3. **Communication**: After submitting a report, you can expect to hear back from our team within 48 hours. We'll keep you updated on the status of the fix and provide an estimated timeline for resolution. - -4. **Responsible Disclosure**: If we confirm the vulnerability, we ask that you allow us adequate time to address the issue before publicly disclosing it. - -### How to Report: - -Send an email to our dedicated security team at [security@hackga.tech](mailto:security@hackga.tech). (Replace `example.com` with your actual domain.) - -## What's Next: - -Upon receiving a vulnerability report, our security team will: - -1. Confirm receipt of the report. -2. Investigate the reported issue. -3. Take appropriate action to address the vulnerability. -4. Notify the reporter about the status of the vulnerability, whether it's accepted, declined, or requires more info. - -Thank you for helping us ensure the safety and security of our project and its users! diff --git a/app/watt_wizard/.gitignore b/app/watt_wizard/.gitignore deleted file mode 100644 index 24476c5..0000000 --- a/app/watt_wizard/.gitignore +++ /dev/null @@ -1,44 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ -migrate_working_dir/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release diff --git a/app/watt_wizard/.metadata b/app/watt_wizard/.metadata deleted file mode 100644 index b48f68e..0000000 --- a/app/watt_wizard/.metadata +++ /dev/null @@ -1,45 +0,0 @@ -# This file tracks properties of this Flutter project. -# Used by Flutter tool to assess capabilities and perform upgrades etc. -# -# This file should be version controlled and should not be manually edited. - -version: - revision: "2f708eb8396e362e280fac22cf171c2cb467343c" - channel: "stable" - -project_type: app - -# Tracks metadata for the flutter migrate command -migration: - platforms: - - platform: root - create_revision: 2f708eb8396e362e280fac22cf171c2cb467343c - base_revision: 2f708eb8396e362e280fac22cf171c2cb467343c - - platform: android - create_revision: 2f708eb8396e362e280fac22cf171c2cb467343c - base_revision: 2f708eb8396e362e280fac22cf171c2cb467343c - - platform: ios - create_revision: 2f708eb8396e362e280fac22cf171c2cb467343c - base_revision: 2f708eb8396e362e280fac22cf171c2cb467343c - - platform: linux - create_revision: 2f708eb8396e362e280fac22cf171c2cb467343c - base_revision: 2f708eb8396e362e280fac22cf171c2cb467343c - - platform: macos - create_revision: 2f708eb8396e362e280fac22cf171c2cb467343c - base_revision: 2f708eb8396e362e280fac22cf171c2cb467343c - - platform: web - create_revision: 2f708eb8396e362e280fac22cf171c2cb467343c - base_revision: 2f708eb8396e362e280fac22cf171c2cb467343c - - platform: windows - create_revision: 2f708eb8396e362e280fac22cf171c2cb467343c - base_revision: 2f708eb8396e362e280fac22cf171c2cb467343c - - # User provided section - - # List of Local paths (relative to this file) that should be - # ignored by the migrate tool. - # - # Files that are not part of the templates will be ignored by default. - unmanaged_files: - - 'lib/main.dart' - - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/app/watt_wizard/README.md b/app/watt_wizard/README.md deleted file mode 100644 index 5fb9710..0000000 --- a/app/watt_wizard/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# watt_wizard - -A new Flutter project. - -## Getting Started - -This project is a starting point for a Flutter application. - -A few resources to get you started if this is your first Flutter project: - -- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) - -For help getting started with Flutter development, view the -[online documentation](https://docs.flutter.dev/), which offers tutorials, -samples, guidance on mobile development, and a full API reference. diff --git a/app/watt_wizard/analysis_options.yaml b/app/watt_wizard/analysis_options.yaml deleted file mode 100644 index 0d29021..0000000 --- a/app/watt_wizard/analysis_options.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# This file configures the analyzer, which statically analyzes Dart code to -# check for errors, warnings, and lints. -# -# The issues identified by the analyzer are surfaced in the UI of Dart-enabled -# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be -# invoked from the command line by running `flutter analyze`. - -# The following line activates a set of recommended lints for Flutter apps, -# packages, and plugins designed to encourage good coding practices. -include: package:flutter_lints/flutter.yaml - -linter: - # The lint rules applied to this project can be customized in the - # section below to disable rules from the `package:flutter_lints/flutter.yaml` - # included above or to enable additional rules. A list of all available lints - # and their documentation is published at https://dart.dev/lints. - # - # Instead of disabling a lint rule for the entire project in the - # section below, it can also be suppressed for a single line of code - # or a specific dart file by using the `// ignore: name_of_lint` and - # `// ignore_for_file: name_of_lint` syntax on the line or in the file - # producing the lint. - rules: - # avoid_print: false # Uncomment to disable the `avoid_print` rule - # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule - -# Additional information about this file can be found at -# https://dart.dev/guides/language/analysis-options diff --git a/app/watt_wizard/android/.gitignore b/app/watt_wizard/android/.gitignore deleted file mode 100644 index 6f56801..0000000 --- a/app/watt_wizard/android/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -gradle-wrapper.jar -/.gradle -/captures/ -/gradlew -/gradlew.bat -/local.properties -GeneratedPluginRegistrant.java - -# Remember to never publicly share your keystore. -# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app -key.properties -**/*.keystore -**/*.jks diff --git a/app/watt_wizard/android/app/build.gradle b/app/watt_wizard/android/app/build.gradle deleted file mode 100644 index ed1fa74..0000000 --- a/app/watt_wizard/android/app/build.gradle +++ /dev/null @@ -1,67 +0,0 @@ -plugins { - id "com.android.application" - id "kotlin-android" - id "dev.flutter.flutter-gradle-plugin" -} - -def localProperties = new Properties() -def localPropertiesFile = rootProject.file('local.properties') -if (localPropertiesFile.exists()) { - localPropertiesFile.withReader('UTF-8') { reader -> - localProperties.load(reader) - } -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - -android { - namespace "com.example.watt_wizard" - compileSdkVersion flutter.compileSdkVersion - ndkVersion flutter.ndkVersion - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = '1.8' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.watt_wizard" - // You can update the following values to match your application needs. - // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 21 - targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName - } - - buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug - } - } -} - -flutter { - source '../..' -} - -dependencies {} diff --git a/app/watt_wizard/android/app/google-services.json b/app/watt_wizard/android/app/google-services.json deleted file mode 100644 index 0bcd6db..0000000 --- a/app/watt_wizard/android/app/google-services.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "project_info": { - "project_number": "192909855910", - "project_id": "hackgt2023", - "storage_bucket": "hackgt2023.appspot.com" - }, - "client": [ - { - "client_info": { - "mobilesdk_app_id": "1:192909855910:android:a3092489a70c4c20873867", - "android_client_info": { - "package_name": "com.example.watt_wizard" - } - }, - "oauth_client": [], - "api_key": [ - { - "current_key": "AIzaSyATxM_RUX_OreCB3ftyZaI2ByYNNZTRqm4" - } - ], - "services": { - "appinvite_service": { - "other_platform_oauth_client": [] - } - } - } - ], - "configuration_version": "1" -} diff --git a/app/watt_wizard/android/app/src/debug/AndroidManifest.xml b/app/watt_wizard/android/app/src/debug/AndroidManifest.xml deleted file mode 100644 index 399f698..0000000 --- a/app/watt_wizard/android/app/src/debug/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/app/watt_wizard/android/app/src/main/AndroidManifest.xml b/app/watt_wizard/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 68f4ad0..0000000 --- a/app/watt_wizard/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/watt_wizard/android/app/src/main/kotlin/com/example/watt_wizard/MainActivity.kt b/app/watt_wizard/android/app/src/main/kotlin/com/example/watt_wizard/MainActivity.kt deleted file mode 100644 index 399e427..0000000 --- a/app/watt_wizard/android/app/src/main/kotlin/com/example/watt_wizard/MainActivity.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.example.watt_wizard - -import io.flutter.embedding.android.FlutterActivity - -class MainActivity: FlutterActivity() { -} diff --git a/app/watt_wizard/android/app/src/main/res/drawable-v21/launch_background.xml b/app/watt_wizard/android/app/src/main/res/drawable-v21/launch_background.xml deleted file mode 100644 index 0944b4d..0000000 --- a/app/watt_wizard/android/app/src/main/res/drawable-v21/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - diff --git a/app/watt_wizard/android/app/src/main/res/drawable/launch_background.xml b/app/watt_wizard/android/app/src/main/res/drawable/launch_background.xml deleted file mode 100644 index 6a36c4f..0000000 --- a/app/watt_wizard/android/app/src/main/res/drawable/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/watt_wizard/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index 90f9580..0000000 --- a/app/watt_wizard/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 8d60cb9..0000000 Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png b/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png deleted file mode 100644 index a05f3fc..0000000 Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png and /dev/null differ diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_fore.png b/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_fore.png deleted file mode 100644 index 4868daa..0000000 Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_fore.png and /dev/null differ diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index f86bc77..0000000 Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_back.png b/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_back.png deleted file mode 100644 index 3814b23..0000000 Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_back.png and /dev/null differ diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png b/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png deleted file mode 100644 index 78765d2..0000000 Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png and /dev/null differ diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 8b90d02..0000000 Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png b/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png deleted file mode 100644 index 2e1846f..0000000 Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png and /dev/null differ diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png b/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png deleted file mode 100644 index d94be19..0000000 Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png and /dev/null differ diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 7ba67bf..0000000 Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png b/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png deleted file mode 100644 index fe154c8..0000000 Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png and /dev/null differ diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png b/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png deleted file mode 100644 index 793300a..0000000 Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png and /dev/null differ diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 2b46da5..0000000 Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png b/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png deleted file mode 100644 index b640524..0000000 Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png and /dev/null differ diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png b/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png deleted file mode 100644 index 3109844..0000000 Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png and /dev/null differ diff --git a/app/watt_wizard/android/app/src/main/res/values-night/styles.xml b/app/watt_wizard/android/app/src/main/res/values-night/styles.xml deleted file mode 100644 index 06952be..0000000 --- a/app/watt_wizard/android/app/src/main/res/values-night/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/app/watt_wizard/android/app/src/main/res/values/styles.xml b/app/watt_wizard/android/app/src/main/res/values/styles.xml deleted file mode 100644 index cb1ef88..0000000 --- a/app/watt_wizard/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/app/watt_wizard/android/app/src/profile/AndroidManifest.xml b/app/watt_wizard/android/app/src/profile/AndroidManifest.xml deleted file mode 100644 index 399f698..0000000 --- a/app/watt_wizard/android/app/src/profile/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/app/watt_wizard/android/build.gradle b/app/watt_wizard/android/build.gradle deleted file mode 100644 index 0391438..0000000 --- a/app/watt_wizard/android/build.gradle +++ /dev/null @@ -1,34 +0,0 @@ -buildscript { - ext.kotlin_version = '1.7.10' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.3.0' - // START: FlutterFire Configuration - classpath 'com.google.gms:google-services:4.3.10' - // END: FlutterFire Configuration - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -allprojects { - repositories { - google() - mavenCentral() - } -} - -rootProject.buildDir = '../build' -subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { - project.evaluationDependsOn(':app') -} - -tasks.register("clean", Delete) { - delete rootProject.buildDir -} diff --git a/app/watt_wizard/android/gradle.properties b/app/watt_wizard/android/gradle.properties deleted file mode 100644 index 94adc3a..0000000 --- a/app/watt_wizard/android/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -org.gradle.jvmargs=-Xmx1536M -android.useAndroidX=true -android.enableJetifier=true diff --git a/app/watt_wizard/android/gradle/wrapper/gradle-wrapper.properties b/app/watt_wizard/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 3c472b9..0000000 --- a/app/watt_wizard/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip diff --git a/app/watt_wizard/android/settings.gradle b/app/watt_wizard/android/settings.gradle deleted file mode 100644 index 55c4ca8..0000000 --- a/app/watt_wizard/android/settings.gradle +++ /dev/null @@ -1,20 +0,0 @@ -pluginManagement { - def flutterSdkPath = { - def properties = new Properties() - file("local.properties").withInputStream { properties.load(it) } - def flutterSdkPath = properties.getProperty("flutter.sdk") - assert flutterSdkPath != null, "flutter.sdk not set in local.properties" - return flutterSdkPath - } - settings.ext.flutterSdkPath = flutterSdkPath() - - includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") - - plugins { - id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false - } -} - -include ":app" - -apply from: "${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/app/watt_wizard/assets/icon/android_round.png b/app/watt_wizard/assets/icon/android_round.png deleted file mode 100644 index 2b46da5..0000000 Binary files a/app/watt_wizard/assets/icon/android_round.png and /dev/null differ diff --git a/app/watt_wizard/assets/icon/ios_square.png b/app/watt_wizard/assets/icon/ios_square.png deleted file mode 100644 index 6473067..0000000 Binary files a/app/watt_wizard/assets/icon/ios_square.png and /dev/null differ diff --git a/app/watt_wizard/ios/.gitignore b/app/watt_wizard/ios/.gitignore deleted file mode 100644 index 7a7f987..0000000 --- a/app/watt_wizard/ios/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -**/dgph -*.mode1v3 -*.mode2v3 -*.moved-aside -*.pbxuser -*.perspectivev3 -**/*sync/ -.sconsign.dblite -.tags* -**/.vagrant/ -**/DerivedData/ -Icon? -**/Pods/ -**/.symlinks/ -profile -xcuserdata -**/.generated/ -Flutter/App.framework -Flutter/Flutter.framework -Flutter/Flutter.podspec -Flutter/Generated.xcconfig -Flutter/ephemeral/ -Flutter/app.flx -Flutter/app.zip -Flutter/flutter_assets/ -Flutter/flutter_export_environment.sh -ServiceDefinitions.json -Runner/GeneratedPluginRegistrant.* - -# Exceptions to above rules. -!default.mode1v3 -!default.mode2v3 -!default.pbxuser -!default.perspectivev3 diff --git a/app/watt_wizard/ios/Flutter/AppFrameworkInfo.plist b/app/watt_wizard/ios/Flutter/AppFrameworkInfo.plist deleted file mode 100644 index 9625e10..0000000 --- a/app/watt_wizard/ios/Flutter/AppFrameworkInfo.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - App - CFBundleIdentifier - io.flutter.flutter.app - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - App - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - MinimumOSVersion - 11.0 - - diff --git a/app/watt_wizard/ios/Flutter/Debug.xcconfig b/app/watt_wizard/ios/Flutter/Debug.xcconfig deleted file mode 100644 index ec97fc6..0000000 --- a/app/watt_wizard/ios/Flutter/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "Generated.xcconfig" diff --git a/app/watt_wizard/ios/Flutter/Release.xcconfig b/app/watt_wizard/ios/Flutter/Release.xcconfig deleted file mode 100644 index c4855bf..0000000 --- a/app/watt_wizard/ios/Flutter/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "Generated.xcconfig" diff --git a/app/watt_wizard/ios/Podfile b/app/watt_wizard/ios/Podfile deleted file mode 100644 index fdcc671..0000000 --- a/app/watt_wizard/ios/Podfile +++ /dev/null @@ -1,44 +0,0 @@ -# Uncomment this line to define a global platform for your project -# platform :ios, '11.0' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_ios_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - end -end diff --git a/app/watt_wizard/ios/Podfile.lock b/app/watt_wizard/ios/Podfile.lock deleted file mode 100644 index 6f349b5..0000000 --- a/app/watt_wizard/ios/Podfile.lock +++ /dev/null @@ -1,95 +0,0 @@ -PODS: - - Firebase/Auth (10.15.0): - - Firebase/CoreOnly - - FirebaseAuth (~> 10.15.0) - - Firebase/CoreOnly (10.15.0): - - FirebaseCore (= 10.15.0) - - firebase_auth (4.10.1): - - Firebase/Auth (= 10.15.0) - - firebase_core - - Flutter - - firebase_core (2.17.0): - - Firebase/CoreOnly (= 10.15.0) - - Flutter - - FirebaseAppCheckInterop (10.16.0) - - FirebaseAuth (10.15.0): - - FirebaseAppCheckInterop (~> 10.0) - - FirebaseCore (~> 10.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.8) - - GoogleUtilities/Environment (~> 7.8) - - GTMSessionFetcher/Core (< 4.0, >= 2.1) - - RecaptchaInterop (~> 100.0) - - FirebaseCore (10.15.0): - - FirebaseCoreInternal (~> 10.0) - - GoogleUtilities/Environment (~> 7.8) - - GoogleUtilities/Logger (~> 7.8) - - FirebaseCoreInternal (10.16.0): - - "GoogleUtilities/NSData+zlib (~> 7.8)" - - Flutter (1.0.0) - - flutter_blue_plus (0.0.1): - - Flutter - - GoogleUtilities/AppDelegateSwizzler (7.11.5): - - GoogleUtilities/Environment - - GoogleUtilities/Logger - - GoogleUtilities/Network - - GoogleUtilities/Environment (7.11.5): - - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/Logger (7.11.5): - - GoogleUtilities/Environment - - GoogleUtilities/Network (7.11.5): - - GoogleUtilities/Logger - - "GoogleUtilities/NSData+zlib" - - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (7.11.5)" - - GoogleUtilities/Reachability (7.11.5): - - GoogleUtilities/Logger - - GTMSessionFetcher/Core (3.1.1) - - PromisesObjC (2.3.1) - - RecaptchaInterop (100.0.0) - -DEPENDENCIES: - - firebase_auth (from `.symlinks/plugins/firebase_auth/ios`) - - firebase_core (from `.symlinks/plugins/firebase_core/ios`) - - Flutter (from `Flutter`) - - flutter_blue_plus (from `.symlinks/plugins/flutter_blue_plus/ios`) - -SPEC REPOS: - trunk: - - Firebase - - FirebaseAppCheckInterop - - FirebaseAuth - - FirebaseCore - - FirebaseCoreInternal - - GoogleUtilities - - GTMSessionFetcher - - PromisesObjC - - RecaptchaInterop - -EXTERNAL SOURCES: - firebase_auth: - :path: ".symlinks/plugins/firebase_auth/ios" - firebase_core: - :path: ".symlinks/plugins/firebase_core/ios" - Flutter: - :path: Flutter - flutter_blue_plus: - :path: ".symlinks/plugins/flutter_blue_plus/ios" - -SPEC CHECKSUMS: - Firebase: 66043bd4579e5b73811f96829c694c7af8d67435 - firebase_auth: b62e99e6ece589afe88ebe8919eb9563b52c384c - firebase_core: 28e84c2a4fcf6a50ef83f47b145ded8c1fa331e4 - FirebaseAppCheckInterop: 82358cff9f33452dd44259e88eea5e562500b1cb - FirebaseAuth: a55ec5f7f8a5b1c2dd750235c1bb419bfb642445 - FirebaseCore: 2cec518b43635f96afe7ac3a9c513e47558abd2e - FirebaseCoreInternal: 26233f705cc4531236818a07ac84d20c333e505a - Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 - flutter_blue_plus: 4837da7d00cf5d441fdd6635b3a57f936778ea96 - GoogleUtilities: 13e2c67ede716b8741c7989e26893d151b2b2084 - GTMSessionFetcher: e8647203b65cee28c5f73d0f473d096653945e72 - PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4 - RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21 - -PODFILE CHECKSUM: 70d9d25280d0dd177a5f637cdb0f0b0b12c6a189 - -COCOAPODS: 1.13.0 diff --git a/app/watt_wizard/ios/Runner.xcodeproj/project.pbxproj b/app/watt_wizard/ios/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 0d86fbe..0000000 --- a/app/watt_wizard/ios/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,728 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXBuildFile section */ - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 41537795E34FA001EE143254 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 733AA6FE2A4FAD019E87CDBB /* Pods_Runner.framework */; }; - 6553FAFCDC2913BA04B1C689 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = E3751F13A19ED5BCF0C09D8B /* GoogleService-Info.plist */; }; - 697348092253D698AA9D6296 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F28B475E2516064BCD44CB2 /* Pods_RunnerTests.framework */; }; - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 97C146E61CF9000F007C117D /* Project object */; - proxyType = 1; - remoteGlobalIDString = 97C146ED1CF9000F007C117D; - remoteInfo = Runner; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 9705A1C41CF9048500538489 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 08743A3CF09F8CF7840DA1FB /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 2BF400FBACB249FE6BC0CC53 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - 2F28B475E2516064BCD44CB2 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2F3A21A663C36D5C2A03B789 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; - 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 733AA6FE2A4FAD019E87CDBB /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; - 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B027CC5455B001989665BA70 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - DDDA5D190020F1C26D9811C2 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - E3751F13A19ED5BCF0C09D8B /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = ""; }; - F4A1E74F540296F10E51BF0F /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 09AF838A1E1F5EF0D33E350C /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 697348092253D698AA9D6296 /* Pods_RunnerTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 41537795E34FA001EE143254 /* Pods_Runner.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 331C8082294A63A400263BE5 /* RunnerTests */ = { - isa = PBXGroup; - children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, - ); - path = RunnerTests; - sourceTree = ""; - }; - 9740EEB11CF90186004384FC /* Flutter */ = { - isa = PBXGroup; - children = ( - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 9740EEB31CF90195004384FC /* Generated.xcconfig */, - ); - name = Flutter; - sourceTree = ""; - }; - 97C146E51CF9000F007C117D = { - isa = PBXGroup; - children = ( - 9740EEB11CF90186004384FC /* Flutter */, - 97C146F01CF9000F007C117D /* Runner */, - 97C146EF1CF9000F007C117D /* Products */, - 331C8082294A63A400263BE5 /* RunnerTests */, - E3751F13A19ED5BCF0C09D8B /* GoogleService-Info.plist */, - EB5B3D69821204F209175050 /* Pods */, - A9BF8DF1C7CACDB884E18B9A /* Frameworks */, - ); - sourceTree = ""; - }; - 97C146EF1CF9000F007C117D /* Products */ = { - isa = PBXGroup; - children = ( - 97C146EE1CF9000F007C117D /* Runner.app */, - 331C8081294A63A400263BE5 /* RunnerTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 97C146F01CF9000F007C117D /* Runner */ = { - isa = PBXGroup; - children = ( - 97C146FA1CF9000F007C117D /* Main.storyboard */, - 97C146FD1CF9000F007C117D /* Assets.xcassets */, - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, - 97C147021CF9000F007C117D /* Info.plist */, - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, - ); - path = Runner; - sourceTree = ""; - }; - A9BF8DF1C7CACDB884E18B9A /* Frameworks */ = { - isa = PBXGroup; - children = ( - 733AA6FE2A4FAD019E87CDBB /* Pods_Runner.framework */, - 2F28B475E2516064BCD44CB2 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - EB5B3D69821204F209175050 /* Pods */ = { - isa = PBXGroup; - children = ( - 2F3A21A663C36D5C2A03B789 /* Pods-Runner.debug.xcconfig */, - 08743A3CF09F8CF7840DA1FB /* Pods-Runner.release.xcconfig */, - F4A1E74F540296F10E51BF0F /* Pods-Runner.profile.xcconfig */, - B027CC5455B001989665BA70 /* Pods-RunnerTests.debug.xcconfig */, - DDDA5D190020F1C26D9811C2 /* Pods-RunnerTests.release.xcconfig */, - 2BF400FBACB249FE6BC0CC53 /* Pods-RunnerTests.profile.xcconfig */, - ); - path = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 331C8080294A63A400263BE5 /* RunnerTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; - buildPhases = ( - 000E60C6824E88237ED8F19B /* [CP] Check Pods Manifest.lock */, - 331C807D294A63A400263BE5 /* Sources */, - 331C807F294A63A400263BE5 /* Resources */, - 09AF838A1E1F5EF0D33E350C /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 331C8086294A63A400263BE5 /* PBXTargetDependency */, - ); - name = RunnerTests; - productName = RunnerTests; - productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 97C146ED1CF9000F007C117D /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - 2B6962DA59A4A54AB7DFED45 /* [CP] Check Pods Manifest.lock */, - 9740EEB61CF901F6004384FC /* Run Script */, - 97C146EA1CF9000F007C117D /* Sources */, - 97C146EB1CF9000F007C117D /* Frameworks */, - 97C146EC1CF9000F007C117D /* Resources */, - 9705A1C41CF9048500538489 /* Embed Frameworks */, - 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - A3050AD50B0B75530E959A45 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Runner; - productName = Runner; - productReference = 97C146EE1CF9000F007C117D /* Runner.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 97C146E61CF9000F007C117D /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 1430; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 331C8080294A63A400263BE5 = { - CreatedOnToolsVersion = 14.0; - TestTargetID = 97C146ED1CF9000F007C117D; - }; - 97C146ED1CF9000F007C117D = { - CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 1100; - }; - }; - }; - buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 97C146E51CF9000F007C117D; - productRefGroup = 97C146EF1CF9000F007C117D /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 97C146ED1CF9000F007C117D /* Runner */, - 331C8080294A63A400263BE5 /* RunnerTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 331C807F294A63A400263BE5 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 97C146EC1CF9000F007C117D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, - 6553FAFCDC2913BA04B1C689 /* GoogleService-Info.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 000E60C6824E88237ED8F19B /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 2B6962DA59A4A54AB7DFED45 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", - ); - name = "Thin Binary"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; - }; - 9740EEB61CF901F6004384FC /* Run Script */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Run Script"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; - }; - A3050AD50B0B75530E959A45 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 331C807D294A63A400263BE5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 97C146EA1CF9000F007C117D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 97C146ED1CF9000F007C117D /* Runner */; - targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 97C146FA1CF9000F007C117D /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C146FB1CF9000F007C117D /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C147001CF9000F007C117D /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 249021D3217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Profile; - }; - 249021D4217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = AK36DFTK26; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Profile; - }; - 331C8088294A63A400263BE5 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B027CC5455B001989665BA70 /* Pods-RunnerTests.debug.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; - }; - name = Debug; - }; - 331C8089294A63A400263BE5 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = DDDA5D190020F1C26D9811C2 /* Pods-RunnerTests.release.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; - }; - name = Release; - }; - 331C808A294A63A400263BE5 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 2BF400FBACB249FE6BC0CC53 /* Pods-RunnerTests.profile.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; - }; - name = Profile; - }; - 97C147031CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 97C147041CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 97C147061CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = AK36DFTK26; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 97C147071CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = AK36DFTK26; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 331C8088294A63A400263BE5 /* Debug */, - 331C8089294A63A400263BE5 /* Release */, - 331C808A294A63A400263BE5 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147031CF9000F007C117D /* Debug */, - 97C147041CF9000F007C117D /* Release */, - 249021D3217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147061CF9000F007C117D /* Debug */, - 97C147071CF9000F007C117D /* Release */, - 249021D4217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 97C146E61CF9000F007C117D /* Project object */; -} diff --git a/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a..0000000 --- a/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c..0000000 --- a/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/app/watt_wizard/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/app/watt_wizard/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index 87131a0..0000000 --- a/app/watt_wizard/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/watt_wizard/ios/Runner.xcworkspace/contents.xcworkspacedata b/app/watt_wizard/ios/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21a3cc1..0000000 --- a/app/watt_wizard/ios/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/app/watt_wizard/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/app/watt_wizard/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/app/watt_wizard/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/app/watt_wizard/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/app/watt_wizard/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c..0000000 --- a/app/watt_wizard/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/app/watt_wizard/ios/Runner/AppDelegate.swift b/app/watt_wizard/ios/Runner/AppDelegate.swift deleted file mode 100644 index 70693e4..0000000 --- a/app/watt_wizard/ios/Runner/AppDelegate.swift +++ /dev/null @@ -1,13 +0,0 @@ -import UIKit -import Flutter - -@UIApplicationMain -@objc class AppDelegate: FlutterAppDelegate { - override func application( - _ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? - ) -> Bool { - GeneratedPluginRegistrant.register(with: self) - return super.application(application, didFinishLaunchingWithOptions: launchOptions) - } -} diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index d36b1fa..0000000 --- a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@1x.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index ca0e9d0..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png deleted file mode 100644 index b3e4329..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png deleted file mode 100644 index 11beb66..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png deleted file mode 100644 index af9b3b3..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png deleted file mode 100644 index 4a3fbd4..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png deleted file mode 100644 index 4a22e7c..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png deleted file mode 100644 index 7b7a156..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png deleted file mode 100644 index 11beb66..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index 01546c7..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png deleted file mode 100644 index 61ff470..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png deleted file mode 100644 index e2ecf99..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png deleted file mode 100644 index 1bacdd3..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png deleted file mode 100644 index cb04fd3..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png deleted file mode 100644 index 9fb4bef..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index 61ff470..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index 3062241..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png deleted file mode 100644 index 4c2c84a..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png deleted file mode 100644 index 3038c76..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png deleted file mode 100644 index 4794a57..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png deleted file mode 100644 index 83ae483..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png deleted file mode 100644 index afb0d94..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json deleted file mode 100644 index 0bedcf2..0000000 --- a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "LaunchImage.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png deleted file mode 100644 index 9da19ea..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png deleted file mode 100644 index 9da19ea..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png deleted file mode 100644 index 9da19ea..0000000 Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png and /dev/null differ diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md deleted file mode 100644 index 89c2725..0000000 --- a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Launch Screen Assets - -You can customize the launch screen with your own desired assets by replacing the image files in this directory. - -You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/app/watt_wizard/ios/Runner/Base.lproj/LaunchScreen.storyboard b/app/watt_wizard/ios/Runner/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index f2e259c..0000000 --- a/app/watt_wizard/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/watt_wizard/ios/Runner/Base.lproj/Main.storyboard b/app/watt_wizard/ios/Runner/Base.lproj/Main.storyboard deleted file mode 100644 index f3c2851..0000000 --- a/app/watt_wizard/ios/Runner/Base.lproj/Main.storyboard +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/watt_wizard/ios/Runner/GoogleService-Info.plist b/app/watt_wizard/ios/Runner/GoogleService-Info.plist deleted file mode 100644 index 8262804..0000000 --- a/app/watt_wizard/ios/Runner/GoogleService-Info.plist +++ /dev/null @@ -1,30 +0,0 @@ - - - - - API_KEY - AIzaSyAecUFC5dEESq3rLDNNx-Kxx0_w5sZvWGs - GCM_SENDER_ID - 192909855910 - PLIST_VERSION - 1 - BUNDLE_ID - com.example.wattWizard - PROJECT_ID - hackgt2023 - STORAGE_BUCKET - hackgt2023.appspot.com - IS_ADS_ENABLED - - IS_ANALYTICS_ENABLED - - IS_APPINVITE_ENABLED - - IS_GCM_ENABLED - - IS_SIGNIN_ENABLED - - GOOGLE_APP_ID - 1:192909855910:ios:4a2fec003c262c61873867 - - \ No newline at end of file diff --git a/app/watt_wizard/ios/Runner/Info.plist b/app/watt_wizard/ios/Runner/Info.plist deleted file mode 100644 index 83ff996..0000000 --- a/app/watt_wizard/ios/Runner/Info.plist +++ /dev/null @@ -1,70 +0,0 @@ - - - - - CADisableMinimumFrameDurationOnPhone - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Watt Wizard - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - watt_wizard - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - NSBluetoothAlwaysUsageDescription - Need BLE permission - NSBluetoothPeripheralUsageDescription - Need BLE permission - NSLocationAlwaysAndWhenInUseUsageDescription - Need Location permission - NSLocationAlwaysUsageDescription - Need Location permission - NSLocationWhenInUseUsageDescription - Need Location permission - CFBundleURLTypes - - - CFBundleTypeRole - Editor - CFBundleURLSchemes - - app-1-192909855910-ios-4a2fec003c262c61873867 - - - - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS - - UIApplicationSupportsIndirectInputEvents - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/app/watt_wizard/ios/Runner/Runner-Bridging-Header.h b/app/watt_wizard/ios/Runner/Runner-Bridging-Header.h deleted file mode 100644 index 308a2a5..0000000 --- a/app/watt_wizard/ios/Runner/Runner-Bridging-Header.h +++ /dev/null @@ -1 +0,0 @@ -#import "GeneratedPluginRegistrant.h" diff --git a/app/watt_wizard/ios/RunnerTests/RunnerTests.swift b/app/watt_wizard/ios/RunnerTests/RunnerTests.swift deleted file mode 100644 index 86a7c3b..0000000 --- a/app/watt_wizard/ios/RunnerTests/RunnerTests.swift +++ /dev/null @@ -1,12 +0,0 @@ -import Flutter -import UIKit -import XCTest - -class RunnerTests: XCTestCase { - - func testExample() { - // If you add code to the Runner application, consider adding tests here. - // See https://developer.apple.com/documentation/xctest for more information about using XCTest. - } - -} diff --git a/app/watt_wizard/ios/firebase_app_id_file.json b/app/watt_wizard/ios/firebase_app_id_file.json deleted file mode 100644 index 124fa18..0000000 --- a/app/watt_wizard/ios/firebase_app_id_file.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "file_generated_by": "FlutterFire CLI", - "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory", - "GOOGLE_APP_ID": "1:192909855910:ios:4a2fec003c262c61873867", - "FIREBASE_PROJECT_ID": "hackgt2023", - "GCM_SENDER_ID": "192909855910" -} \ No newline at end of file diff --git a/app/watt_wizard/lib/firebase_options.dart b/app/watt_wizard/lib/firebase_options.dart deleted file mode 100644 index 84ce33e..0000000 --- a/app/watt_wizard/lib/firebase_options.dart +++ /dev/null @@ -1,80 +0,0 @@ -// File generated by FlutterFire CLI. -// ignore_for_file: lines_longer_than_80_chars, avoid_classes_with_only_static_members -import 'package:firebase_core/firebase_core.dart' show FirebaseOptions; -import 'package:flutter/foundation.dart' - show defaultTargetPlatform, kIsWeb, TargetPlatform; - -/// Default [FirebaseOptions] for use with your Firebase apps. -/// -/// Example: -/// ```dart -/// import 'firebase_options.dart'; -/// // ... -/// await Firebase.initializeApp( -/// options: DefaultFirebaseOptions.currentPlatform, -/// ); -/// ``` -class DefaultFirebaseOptions { - static FirebaseOptions get currentPlatform { - if (kIsWeb) { - return web; - } - switch (defaultTargetPlatform) { - case TargetPlatform.android: - return android; - case TargetPlatform.iOS: - return ios; - case TargetPlatform.macOS: - return macos; - case TargetPlatform.windows: - throw UnsupportedError( - 'DefaultFirebaseOptions have not been configured for windows - ' - 'you can reconfigure this by running the FlutterFire CLI again.', - ); - case TargetPlatform.linux: - throw UnsupportedError( - 'DefaultFirebaseOptions have not been configured for linux - ' - 'you can reconfigure this by running the FlutterFire CLI again.', - ); - default: - throw UnsupportedError( - 'DefaultFirebaseOptions are not supported for this platform.', - ); - } - } - - static const FirebaseOptions web = FirebaseOptions( - apiKey: 'AIzaSyAEZWnInWLWU5yqG7Y1NyKkQSon_RRxWNY', - appId: '1:192909855910:web:f50aa440ac666be3873867', - messagingSenderId: '192909855910', - projectId: 'hackgt2023', - authDomain: 'hackgt2023.firebaseapp.com', - storageBucket: 'hackgt2023.appspot.com', - ); - - static const FirebaseOptions android = FirebaseOptions( - apiKey: 'AIzaSyATxM_RUX_OreCB3ftyZaI2ByYNNZTRqm4', - appId: '1:192909855910:android:a3092489a70c4c20873867', - messagingSenderId: '192909855910', - projectId: 'hackgt2023', - storageBucket: 'hackgt2023.appspot.com', - ); - - static const FirebaseOptions ios = FirebaseOptions( - apiKey: 'AIzaSyAecUFC5dEESq3rLDNNx-Kxx0_w5sZvWGs', - appId: '1:192909855910:ios:4a2fec003c262c61873867', - messagingSenderId: '192909855910', - projectId: 'hackgt2023', - storageBucket: 'hackgt2023.appspot.com', - iosBundleId: 'com.example.wattWizard', - ); - - static const FirebaseOptions macos = FirebaseOptions( - apiKey: 'AIzaSyAecUFC5dEESq3rLDNNx-Kxx0_w5sZvWGs', - appId: '1:192909855910:ios:a49a650b4f8915ac873867', - messagingSenderId: '192909855910', - projectId: 'hackgt2023', - storageBucket: 'hackgt2023.appspot.com', - iosBundleId: 'com.example.wattWizard.RunnerTests', - ); -} diff --git a/app/watt_wizard/lib/homescreen.dart b/app/watt_wizard/lib/homescreen.dart deleted file mode 100644 index cf13275..0000000 --- a/app/watt_wizard/lib/homescreen.dart +++ /dev/null @@ -1,178 +0,0 @@ -import 'dart:async'; - -import 'package:firebase_auth/firebase_auth.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_blue_plus/flutter_blue_plus.dart'; -import 'package:watt_wizard/profile.dart'; - -import 'widgets/users_leaderboard.dart'; -import 'widgets/homes_leaderboard.dart'; - -class HomeScreen extends StatefulWidget { - const HomeScreen({super.key}); - - @override - State createState() => _HomeScreenState(); -} - -class _HomeScreenState extends State { - late User user; - BluetoothAdapterState _adapterState = BluetoothAdapterState.unknown; - late StreamSubscription _adapterStateStateSubscription; - - late String userInput; - - Future _showDialog() async { - return showDialog( - context: context, - barrierDismissible: false, // user must tap button to close dialog - builder: (BuildContext context) { - return AlertDialog( - title: Text('Enter Data'), - content: TextField( - onChanged: (value) { - userInput = value; - }, - decoration: InputDecoration(hintText: "Enter something"), - ), - actions: [ - TextButton( - child: Text('Submit'), - onPressed: () { - makeNewHome(userInput); - Navigator.of(context).pop(); // Close the dialog - }, - ), - ], - ); - }, - ); - } - - @override - void initState() { - user = FirebaseAuth.instance.currentUser!; - - FirebaseAuth.instance.userChanges().listen((event) { - if (event != null && mounted) { - setState(() { - user = event; - }); - } - - _adapterStateStateSubscription = FlutterBluePlus.adapterState.listen((state) { - _adapterState = state; - setState(() {}); - }); - }); - - super.initState(); - } - - @override - void dispose() { - _adapterStateStateSubscription.cancel(); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - double screenHeight = MediaQuery.of(context).size.height; - double screenWidth = MediaQuery.of(context).size.width; - double appBarHeight = AppBar().preferredSize.height; // Default is 56.0 - double tabBarHeight = 48.0; // Default height for TabBar - - double sizedBoxHeight = screenHeight - (2 * appBarHeight) - tabBarHeight; - double sizedBoxWidth = screenWidth; - - return DefaultTabController( - initialIndex: 0, - length: 2, - child: Scaffold( - appBar: AppBar( - backgroundColor: Theme.of(context).colorScheme.inversePrimary, - leading: IconButton( - icon: const Icon(Icons.logout), - onPressed: (user.displayName == null) - ? null - : () async { - await FirebaseAuth.instance.signOut(); - }, - ), - title: Text('Welcome, ${user.displayName ?? ""}'), - - actions: [ - IconButton( - onPressed: () { - Navigator.push( - context, - MaterialPageRoute(builder: (context) => ProfileScreen(username: user.displayName!)), - ); - }, - icon: const Icon(Icons.account_circle)), - ], - bottom: const TabBar( - tabs: [ - // Tab( - // icon: Icon(Icons.cloud_outlined), - // ), - Tab( - icon: Icon(Icons.person), - ), - Tab( - icon: Icon(Icons.home), - ), - ], - ), - ), - body: TabBarView( - children: [ - // Center( - // child: Column( - // mainAxisAlignment: MainAxisAlignment.center, - // children: [ - // Text( - // "Welcome ${user.displayName}", - // ), - // _adapterState == BluetoothAdapterState.on - // ? const Spacer() - // : FilledButton( - // onPressed: () async { - // if (Platform.isAndroid) { - // await FlutterBluePlus.turnOn(); - // } else {} - // }, - // child: const Text("Turn Bluetooth On"), - // ), - // ], - // ), - // ), - Center( - child: SizedBox( - width: sizedBoxWidth, - height: sizedBoxHeight, - child: const UserList(), - ), - ), - Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - SizedBox( - width: sizedBoxWidth, - height: sizedBoxHeight - 45, - child: const HomeList(), - ), - ElevatedButton( - onPressed: _showDialog, - child: const Text("Add Home"), - ) - ], - ), - ), - ], - ), - ), - ); - } -} diff --git a/app/watt_wizard/lib/main.dart b/app/watt_wizard/lib/main.dart deleted file mode 100644 index 08acf22..0000000 --- a/app/watt_wizard/lib/main.dart +++ /dev/null @@ -1,95 +0,0 @@ -import 'package:cloud_firestore/cloud_firestore.dart'; -import 'package:firebase_auth/firebase_auth.dart'; -import 'package:flutter/material.dart'; -import 'package:firebase_core/firebase_core.dart'; -import 'firebase_options.dart'; -import 'homescreen.dart'; - -final db = FirebaseFirestore.instance; - -Future main() async { - WidgetsFlutterBinding.ensureInitialized(); - await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); - runApp(const MyApp()); -} - -class MyApp extends StatelessWidget { - const MyApp({super.key}); - - // This widget is the root of your application. - @override - Widget build(BuildContext context) { - // if (Platform.isAndroid) { - // await FlutterBluePlus.turnOn(); - // } - - return MaterialApp( - title: 'Watt Wizard', - theme: ThemeData( - colorScheme: ColorScheme.fromSeed( - seedColor: const Color(0xff0abde3), - ), - scaffoldBackgroundColor: const Color(0xfff5f5f5), - useMaterial3: true, - ), - home: _landingPage(), - ); - } -} - -Widget _landingPage() { - return StreamBuilder( - stream: FirebaseAuth.instance.authStateChanges(), - builder: (BuildContext context, snapshot) { - if (snapshot.hasData) { - return const HomeScreen(); - } - return const MyHomePage(title: 'Sign in to Watt Wizard'); - }); -} - -class MyHomePage extends StatelessWidget { - const MyHomePage({super.key, required this.title}); - final String title; - - void _signInWithGitHub() async { - GithubAuthProvider githubProvider = GithubAuthProvider(); - await FirebaseAuth.instance.signInWithProvider(githubProvider); - if (FirebaseAuth.instance.currentUser != null) { - var userUID = await db.collection('users').doc(FirebaseAuth.instance.currentUser?.uid).get(); - if (!userUID.exists) { - await db.collection('users').doc(FirebaseAuth.instance.currentUser?.uid).set( - { - 'devices': [], - 'friends': [], - 'home': "", - 'name': FirebaseAuth.instance.currentUser?.displayName, - 'pfp': 'https://m.media-amazon.com/images/I/612-e1vHBAL._AC_SL1145_.jpg' - }, - ); - } - } - } - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - backgroundColor: Theme.of(context).colorScheme.inversePrimary, - title: Text(title), - ), - body: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - FilledButton.icon( - onPressed: _signInWithGitHub, - icon: const Icon(Icons.login), - label: const Text("Log in with GitHub"), - ), - ], - ), - ), - ); - } -} diff --git a/app/watt_wizard/lib/profile.dart b/app/watt_wizard/lib/profile.dart deleted file mode 100644 index 624d2f3..0000000 --- a/app/watt_wizard/lib/profile.dart +++ /dev/null @@ -1,174 +0,0 @@ -import 'dart:async'; - -import 'package:cloud_firestore/cloud_firestore.dart'; -import 'package:firebase_auth/firebase_auth.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_blue_plus/flutter_blue_plus.dart'; -import 'package:watt_wizard/widgets/connected_device_tile.dart'; -import 'package:watt_wizard/widgets/scan_result_tile.dart'; -import 'package:watt_wizard/utils/extra.dart'; - -final db = FirebaseFirestore.instance; - -class ProfileScreen extends StatefulWidget { - const ProfileScreen({super.key, required this.username}); - - final String username; - - @override - State createState() => _ProfileScreenState(); -} - -class _ProfileScreenState extends State { - List _connectedDevices = []; - List _scanResults = []; - bool _isScanning = false; - late StreamSubscription> _scanResultsSubscription; - late StreamSubscription _isScanningSubscription; - - @override - void initState() { - super.initState(); - - FlutterBluePlus.connectedSystemDevices.then((devices) { - List device = []; - for (BluetoothDevice d in devices) { - if (d.platformName == "Light Control") { - device.add(d); - } - } - _connectedDevices = device; - setState(() {}); - }); - - _scanResultsSubscription = FlutterBluePlus.scanResults.listen((results) { - List result = []; - for (ScanResult r in results) { - if (r.device.platformName == "Light Control" && !_connectedDevices.contains(r.device)) { - result.add(r); - } - } - _scanResults = result; - setState(() {}); - }); - - _isScanningSubscription = FlutterBluePlus.isScanning.listen((state) { - _isScanning = state; - setState(() {}); - }); - } - - @override - void dispose() { - _scanResultsSubscription.cancel(); - _isScanningSubscription.cancel(); - super.dispose(); - } - - Future onScanPressed() async { - await FlutterBluePlus.startScan(timeout: const Duration(seconds: 15)); - setState(() {}); // force refresh of connectedSystemDevices - } - - Future onStopPressed() async { - FlutterBluePlus.stopScan(); - } - - void onConnectPressed(BluetoothDevice device) async { - device.connectAndUpdateStream(); - _connectedDevices.add(device); - - var userDoc = await db.collection('users').doc(FirebaseAuth.instance.currentUser?.uid).get(); - List devices = await userDoc.get('devices'); - - int deviceHash = device.hashCode; - - if (!devices.any((element) => element['id'] == deviceHash)) { - await db.collection('users').doc(FirebaseAuth.instance.currentUser?.uid).update({ - 'devices': FieldValue.arrayUnion([ - { - 'id': deviceHash, - 'name': device.platformName, - 'power': [] - } - ]) - }); - } - - setState(() {}); - } - - Future onRefresh() { - if (_isScanning == false) { - FlutterBluePlus.startScan(timeout: const Duration(seconds: 15)); - } - setState(() {}); - return Future.delayed(const Duration(milliseconds: 500)); - } - - List _buildConnectedDeviceTiles(BuildContext context) { - return _connectedDevices - .map( - (d) => ConnectedDeviceTile( - device: d, - onConnect: () => onConnectPressed(d), - ), - ) - .toList(); - } - - List _buildScanResultTiles(BuildContext context) { - return _scanResults - .map( - (r) => ScanResultTile( - result: r, - onTap: () { - _scanResults.remove(r); - setState(() {}); - onConnectPressed(r.device); - }, - ), - ) - .toList(); - } - - Widget buildScanButton(BuildContext context) { - if (FlutterBluePlus.isScanningNow) { - return FloatingActionButton( - onPressed: onStopPressed, - backgroundColor: Colors.red, - child: const Icon(Icons.stop), - ); - } else { - return FloatingActionButton(onPressed: onScanPressed, child: const Text("SCAN")); - } - } - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - backgroundColor: Theme.of(context).colorScheme.inversePrimary, - leading: IconButton( - icon: const Icon(Icons.chevron_left), - onPressed: () { - Navigator.pop(context); - }, - ), - title: Text(widget.username), - ), - body: RefreshIndicator( - onRefresh: onRefresh, - child: ListView( - children: [ - const Text("Connected Devices"), - ..._buildConnectedDeviceTiles(context), - const Text("Scanned Devices:"), - ..._buildScanResultTiles(context), - ], - ), - ), - floatingActionButton: buildScanButton(context), - ); - } -} diff --git a/app/watt_wizard/lib/utils/extra.dart b/app/watt_wizard/lib/utils/extra.dart deleted file mode 100644 index 8a44c33..0000000 --- a/app/watt_wizard/lib/utils/extra.dart +++ /dev/null @@ -1,39 +0,0 @@ -import 'utils.dart'; - -import 'package:flutter_blue_plus/flutter_blue_plus.dart'; - -final Map> _global = {}; - -/// connect & disconnect + update stream -extension Extra on BluetoothDevice { - // convenience - StreamControllerReemit get _stream { - _global[remoteId] ??= StreamControllerReemit(initialValue: false); - return _global[remoteId]!; - } - - // get stream - Stream get isConnectingOrDisconnecting { - return _stream.stream; - } - - // connect & update stream - Future connectAndUpdateStream() async { - _stream.add(true); - try { - await connect(); - } finally { - _stream.add(false); - } - } - - // disconnect & update stream - Future disconnectAndUpdateStream() async { - _stream.add(true); - try { - await disconnect(); - } finally { - _stream.add(false); - } - } -} diff --git a/app/watt_wizard/lib/utils/utils.dart b/app/watt_wizard/lib/utils/utils.dart deleted file mode 100644 index 048a5a5..0000000 --- a/app/watt_wizard/lib/utils/utils.dart +++ /dev/null @@ -1,86 +0,0 @@ -import 'dart:async'; - -// It is essentially a stream but: -// 1. we cache the latestValue of the stream -// 2. the "latestValue" is re-emitted whenever the stream is listened to -class StreamControllerReemit { - T? _latestValue; - - final StreamController _controller = StreamController.broadcast(); - - StreamControllerReemit({T? initialValue}) : _latestValue = initialValue; - - Stream get stream { - return _latestValue != null - ? _controller.stream.newStreamWithInitialValue(_latestValue!) - : _controller.stream; - } - - T? get value => _latestValue; - - void add(T newValue) { - _latestValue = newValue; - _controller.add(newValue); - } - - Future close() { - return _controller.close(); - } -} - -// return a new stream that imediately emits an initial value -extension _StreamNewStreamWithInitialValue on Stream { - Stream newStreamWithInitialValue(T initialValue) { - return transform(_NewStreamWithInitialValueTransformer(initialValue)); - } -} - -// Helper for 'newStreamWithInitialValue' method for streams. -class _NewStreamWithInitialValueTransformer - extends StreamTransformerBase { - final T initialValue; - - _NewStreamWithInitialValueTransformer(this.initialValue); - - @override - Stream bind(Stream stream) { - if (stream.isBroadcast) { - return _bind(stream).asBroadcastStream(); - } else { - return _bind(stream); - } - } - - Stream _bind(Stream stream) { - StreamController? controller; - StreamSubscription? subscription; - - controller = StreamController( - onListen: () { - // Emit the initial value - controller?.add(initialValue); - - subscription = stream.listen( - controller?.add, - onError: (Object error) { - controller?.addError(error); - controller?.close(); - }, - onDone: controller?.close, - ); - }, - onPause: ([Future? resumeSignal]) { - subscription?.pause(resumeSignal); - }, - onResume: () { - subscription?.resume(); - }, - onCancel: () { - return subscription?.cancel(); - }, - sync: true, - ); - - return controller.stream; - } -} diff --git a/app/watt_wizard/lib/widgets/connected_device_tile.dart b/app/watt_wizard/lib/widgets/connected_device_tile.dart deleted file mode 100644 index 4959b2b..0000000 --- a/app/watt_wizard/lib/widgets/connected_device_tile.dart +++ /dev/null @@ -1,59 +0,0 @@ -import 'dart:async'; - -import 'package:flutter/material.dart'; -import 'package:flutter_blue_plus/flutter_blue_plus.dart'; - -class ConnectedDeviceTile extends StatefulWidget { - final BluetoothDevice device; - final VoidCallback onConnect; - - const ConnectedDeviceTile({ - required this.device, - required this.onConnect, - Key? key, - }) : super(key: key); - - @override - State createState() => _ConnectedDeviceTileState(); -} - -class _ConnectedDeviceTileState extends State { - BluetoothConnectionState _connectionState = - BluetoothConnectionState.disconnected; - - late StreamSubscription - _connectionStateSubscription; - - @override - void initState() { - super.initState(); - - _connectionStateSubscription = - widget.device.connectionState.listen((state) { - _connectionState = state; - setState(() {}); - }); - } - - @override - void dispose() { - _connectionStateSubscription.cancel(); - super.dispose(); - } - - bool get isConnected { - return _connectionState == BluetoothConnectionState.connected; - } - - @override - Widget build(BuildContext context) { - return ListTile( - title: Text(widget.device.platformName), - subtitle: Text(widget.device.remoteId.toString()), - trailing: ElevatedButton( - onPressed: isConnected ? null : widget.onConnect, - child: isConnected ? const Text('OPEN') : const Text('CONNECT'), - ), - ); - } -} diff --git a/app/watt_wizard/lib/widgets/homes_leaderboard.dart b/app/watt_wizard/lib/widgets/homes_leaderboard.dart deleted file mode 100644 index 1522cc6..0000000 --- a/app/watt_wizard/lib/widgets/homes_leaderboard.dart +++ /dev/null @@ -1,197 +0,0 @@ -// ignore_for_file: prefer_const_constructors_in_immutables,unnecessary_const,library_private_types_in_public_api,avoid_print -// Copyright 2021, the Chromium project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:cloud_firestore/cloud_firestore.dart'; -import 'package:firebase_auth/firebase_auth.dart'; -import 'package:firebase_core/firebase_core.dart'; -import 'package:flutter/material.dart'; -import '../firebase_options.dart'; - -// Future main() async { -// WidgetsFlutterBinding.ensureInitialized(); -// await Firebase.initializeApp(options: defaultFirebaseOptions); -// } - -final _db = FirebaseFirestore.instance; - -/// A reference to the list of movies. -/// We are using `withConverter` to ensure that interactions with the collection -/// are type-safe. -final _homesRef = _db.collection('homes').withConverter<_Home>( - fromFirestore: (snapshots, _) => _Home.fromJson(snapshots.data()!, snapshots.id), - toFirestore: (home, _) => home.toJson(), - ); - -void makeNewHome(String name) async { - await _db.collection('homes').add({ - 'name': name.substring(0, 30 > name.length ? name.length : 50), - 'pfp': "https://housing.gatech.edu/sites/default/files/styles/building_hero_/public/2022-04/building-at-night.jpeg.jpg", - 'users': [] - }); -} - -/// Holds all example app films -class HomeList extends StatefulWidget { - const HomeList({Key? key}) : super(key: key); - - @override - _HomeListState createState() => _HomeListState(); -} - -class _HomeListState extends State { - @override - Widget build(BuildContext context) { - return Scaffold( - body: StreamBuilder>( - stream: _homesRef.snapshots(), - builder: (context, snapshot) { - if (snapshot.hasError) { - return Center( - child: Text(snapshot.error.toString()), - ); - } - - if (!snapshot.hasData) { - return const Center(child: CircularProgressIndicator()); - } - - final data = snapshot.requireData; - - return ListView.builder( - itemCount: data.size, - itemBuilder: (context, index) { - return _HomeItem( - data.docs[index].data(), - data.docs[index].reference, - ); - }, - ); - }, - ), - ); - } -} - -Future updateHome(_Home home) async { - String userUID = FirebaseAuth.instance.currentUser!.uid; - - var userSnapshot = await _db.collection('users').doc(userUID).get(); - String userHome = userSnapshot.get('home') as String; - - await _db.collection('users').doc(userUID).update({ - 'home': home.id, - }); - - await _db.collection('homes').doc(userHome).update({ - 'users': FieldValue.arrayRemove([ - userUID - ]) - }).onError((error, stackTrace) => null); - - await _db.collection('homes').doc(home.id).update({ - 'users': FieldValue.arrayUnion([ - userUID - ]) - }); -} - -/// A single movie row. -class _HomeItem extends StatelessWidget { - _HomeItem(this.home, this.reference); - - final _Home home; - final DocumentReference<_Home> reference; - - /// Returns the movie poster. - Widget get pfp { - return ClipRRect( - borderRadius: BorderRadius.circular(15), - child: Image.network( - home.pfp, - width: 50, - height: 50, - fit: BoxFit.cover, - ), - ); - } - - /// Returns user details. - Widget get details { - return Padding( - padding: const EdgeInsets.only(left: 8, right: 8), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - name, - ], - ), - ); - } - - // Return the home name. - Widget get name { - return Text( - home.name, - style: TextStyle( - fontSize: 18, - fontWeight: FontWeight.bold, - color: Color(0xfff5f5f5), - ), - ); - } - - Widget updateHomeButton(BuildContext context, _Home home) { - return FloatingActionButton( - onPressed: () async { - await updateHome(home); - }, - child: const Text("SELECT"), - ); - } - - @override - Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.symmetric(vertical: 8), - child: ListTile( - leading: pfp, - title: Text(home.name), - trailing: updateHomeButton(context, home) - ), - ); - } -} - -@immutable -class _Home { - _Home({ - required this.pfp, - required this.users, - required this.name, - required this.id, - }); - - _Home.fromJson(Map json, String id) - : this( - pfp: json['pfp']! as String, - users: json['users']! as List, - name: json['name']! as String, - id: id, - ); - - final String pfp; - final List users; - final String name; - final String id; - - Map toJson() { - return { - 'users': users, - 'pfp': pfp, - 'name': name, - }; - } - -} diff --git a/app/watt_wizard/lib/widgets/scan_result_tile.dart b/app/watt_wizard/lib/widgets/scan_result_tile.dart deleted file mode 100644 index 10c01d4..0000000 --- a/app/watt_wizard/lib/widgets/scan_result_tile.dart +++ /dev/null @@ -1,151 +0,0 @@ -import 'dart:async'; - -import 'package:flutter/material.dart'; -import 'package:flutter_blue_plus/flutter_blue_plus.dart'; - -class ScanResultTile extends StatefulWidget { - const ScanResultTile({Key? key, required this.result, this.onTap}) - : super(key: key); - - final ScanResult result; - final VoidCallback? onTap; - - @override - State createState() => _ScanResultTileState(); -} - -class _ScanResultTileState extends State { - BluetoothConnectionState _connectionState = - BluetoothConnectionState.disconnected; - - late StreamSubscription - _connectionStateSubscription; - - @override - void initState() { - super.initState(); - - _connectionStateSubscription = - widget.result.device.connectionState.listen((state) { - _connectionState = state; - setState(() {}); - }); - } - - @override - void dispose() { - _connectionStateSubscription.cancel(); - super.dispose(); - } - - String getNiceHexArray(List bytes) { - return '[${bytes.map((i) => i.toRadixString(16).padLeft(2, '0')).join(', ')}]'; - } - - String getNiceManufacturerData(Map> data) { - if (data.isEmpty) { - return 'N/A'; - } - return data.entries - .map((entry) => - '${entry.key.toRadixString(16)}: ${getNiceHexArray(entry.value)}') - .join(', ') - .toUpperCase(); - } - - String getNiceServiceData(Map> data) { - if (data.isEmpty) { - return 'N/A'; - } - return data.entries - .map((v) => '${v.key}: ${getNiceHexArray(v.value)}') - .join(', ') - .toUpperCase(); - } - - String getNiceServiceUuids(List serviceUuids) { - return serviceUuids.isEmpty ? 'N/A' : serviceUuids.join(', ').toUpperCase(); - } - - bool get isConnected { - return _connectionState == BluetoothConnectionState.connected; - } - - Widget _buildTitle(BuildContext context) { - if (widget.result.device.platformName.isNotEmpty) { - return Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - widget.result.device.platformName, - overflow: TextOverflow.ellipsis, - ), - Text( - widget.result.device.remoteId.toString(), - style: Theme.of(context).textTheme.bodySmall, - ) - ], - ); - } else { - return Text(widget.result.device.remoteId.toString()); - } - } - - Widget _buildConnectButton(BuildContext context) { - return ElevatedButton( - child: isConnected ? const Text('OPEN') : const Text('CONNECT'), - style: ElevatedButton.styleFrom( - backgroundColor: Colors.black, - foregroundColor: Colors.white, - ), - onPressed: - (widget.result.advertisementData.connectable) ? widget.onTap : null, - ); - } - - Widget _buildAdvRow(BuildContext context, String title, String value) { - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 4.0), - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text(title, style: Theme.of(context).textTheme.bodySmall), - const SizedBox( - width: 12.0, - ), - Expanded( - child: Text( - value, - style: Theme.of(context) - .textTheme - .bodySmall - ?.apply(color: Colors.black), - softWrap: true, - ), - ), - ], - ), - ); - } - - @override - Widget build(BuildContext context) { - var adv = widget.result.advertisementData; - return ExpansionTile( - title: _buildTitle(context), - leading: Text(widget.result.rssi.toString()), - trailing: _buildConnectButton(context), - children: [ - _buildAdvRow(context, 'Complete Local Name', adv.localName), - _buildAdvRow(context, 'Tx Power Level', '${adv.txPowerLevel ?? 'N/A'}'), - _buildAdvRow(context, 'Manufacturer Data', - getNiceManufacturerData(adv.manufacturerData)), - _buildAdvRow( - context, 'Service UUIDs', getNiceServiceUuids(adv.serviceUuids)), - _buildAdvRow( - context, 'Service Data', getNiceServiceData(adv.serviceData)), - ], - ); - } -} diff --git a/app/watt_wizard/lib/widgets/users_leaderboard.dart b/app/watt_wizard/lib/widgets/users_leaderboard.dart deleted file mode 100644 index 4ac87b0..0000000 --- a/app/watt_wizard/lib/widgets/users_leaderboard.dart +++ /dev/null @@ -1,146 +0,0 @@ -// ignore_for_file: prefer_const_constructors_in_immutables,unnecessary_const,library_private_types_in_public_api,avoid_print -// Copyright 2021, the Chromium project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:cloud_firestore/cloud_firestore.dart'; -import 'package:firebase_core/firebase_core.dart'; -import 'package:flutter/material.dart'; -import '../firebase_options.dart'; - -// Future main() async { -// WidgetsFlutterBinding.ensureInitialized(); -// await Firebase.initializeApp(options: defaultFirebaseOptions); -// } - -final _db = FirebaseFirestore.instance; - -/// A reference to the list of movies. -/// We are using `withConverter` to ensure that interactions with the collection -/// are type-safe. -final _usersRef = _db.collection('users').withConverter<_User>( - fromFirestore: (snapshots, _) => _User.fromJson(snapshots.data()!), - toFirestore: (user, _) => user.toJson(), - ); - -/// Holds all example app films -class UserList extends StatefulWidget { - const UserList({Key? key}) : super(key: key); - - @override - _UserListState createState() => _UserListState(); -} - -class _UserListState extends State { - @override - Widget build(BuildContext context) { - return Scaffold( - body: StreamBuilder>( - stream: _usersRef.snapshots(), - builder: (context, snapshot) { - if (snapshot.hasError) { - return Center( - child: Text(snapshot.error.toString()), - ); - } - - if (!snapshot.hasData) { - return const Center(child: CircularProgressIndicator()); - } - - final data = snapshot.requireData; - - return ListView.builder( - itemCount: data.size, - itemBuilder: (context, index) { - return _UserItem( - data.docs[index].data(), - data.docs[index].reference, - ); - }, - ); - }, - ), - ); - } -} - -/// A single movie row. -class _UserItem extends StatelessWidget { - _UserItem(this.user, this.reference); - - final _User user; - final DocumentReference<_User> reference; - - /// Returns the movie poster. - Widget get pfp { - return ClipRRect( - borderRadius: BorderRadius.circular(15), - child: Image.network( - user.pfp, - width: 60, - fit: BoxFit.cover, - ), - ); - } - - int get power { - int power = 0; - for (var i in user.devices) { - Map device = i as Map; - try { - List powerList = (device['power'] as List).map((item) => item as int).toList(); - power += powerList.last; - } catch (e) { - print('Power Array Empty for: ${user.name}'); - } - } - - return power; - } - - @override - Widget build(BuildContext context) { - return ListTile( - leading: pfp, - title: Text(user.name), - subtitle: Text("Active Power Consumption: $power"), - ); - } -} - -@immutable -class _User { - _User({ - required this.pfp, - required this.friends, - required this.home, - required this.name, - required this.devices, - }); - - _User.fromJson(Map json) - : this( - pfp: json['pfp']! as String, - home: json['home']! as String, - friends: json['friends']! as List, - name: json['name']! as String, - devices: json['devices']! as List, - ); - - final String pfp; - final List friends; - final String home; - final String name; - final List devices; - - Map toJson() { - return { - 'home': home, - 'friends': friends, - 'pfp': pfp, - 'name': name, - 'devices': devices - }; - } -} diff --git a/app/watt_wizard/linux/.gitignore b/app/watt_wizard/linux/.gitignore deleted file mode 100644 index d3896c9..0000000 --- a/app/watt_wizard/linux/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/app/watt_wizard/linux/CMakeLists.txt b/app/watt_wizard/linux/CMakeLists.txt deleted file mode 100644 index cf46d08..0000000 --- a/app/watt_wizard/linux/CMakeLists.txt +++ /dev/null @@ -1,139 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.10) -project(runner LANGUAGES CXX) - -# The name of the executable created for the application. Change this to change -# the on-disk name of your application. -set(BINARY_NAME "watt_wizard") -# The unique GTK application identifier for this application. See: -# https://wiki.gnome.org/HowDoI/ChooseApplicationID -set(APPLICATION_ID "com.example.watt_wizard") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(SET CMP0063 NEW) - -# Load bundled libraries from the lib/ directory relative to the binary. -set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") - -# Root filesystem for cross-building. -if(FLUTTER_TARGET_PLATFORM_SYSROOT) - set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -endif() - -# Define build configuration options. -if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") -endif() - -# Compilation settings that should be applied to most targets. -# -# Be cautious about adding new options here, as plugins use this function by -# default. In most cases, you should add new options to specific targets instead -# of modifying this function. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_14) - target_compile_options(${TARGET} PRIVATE -Wall -Werror) - target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") - target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) - -add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") - -# Define the application target. To change its name, change BINARY_NAME above, -# not the value here, or `flutter run` will no longer work. -# -# Any new source files that you add to the application should be added here. -add_executable(${BINARY_NAME} - "main.cc" - "my_application.cc" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" -) - -# Apply the standard set of build settings. This can be removed for applications -# that need different build settings. -apply_standard_settings(${BINARY_NAME}) - -# Add dependency libraries. Add any application-specific dependencies here. -target_link_libraries(${BINARY_NAME} PRIVATE flutter) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) - -# Run the Flutter tool portions of the build. This must not be removed. -add_dependencies(${BINARY_NAME} flutter_assemble) - -# Only the install-generated bundle's copy of the executable will launch -# correctly, since the resources must in the right relative locations. To avoid -# people trying to run the unbundled copy, put it in a subdirectory instead of -# the default top-level location. -set_target_properties(${BINARY_NAME} - PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" -) - - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# By default, "installing" just makes a relocatable bundle in the build -# directory. -set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -# Start with a clean build bundle directory every time. -install(CODE " - file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") - " COMPONENT Runtime) - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) - install(FILES "${bundled_library}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endforeach(bundled_library) - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") - install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() diff --git a/app/watt_wizard/linux/flutter/CMakeLists.txt b/app/watt_wizard/linux/flutter/CMakeLists.txt deleted file mode 100644 index d5bd016..0000000 --- a/app/watt_wizard/linux/flutter/CMakeLists.txt +++ /dev/null @@ -1,88 +0,0 @@ -# This file controls Flutter-level build steps. It should not be edited. -cmake_minimum_required(VERSION 3.10) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. - -# Serves the same purpose as list(TRANSFORM ... PREPEND ...), -# which isn't available in 3.10. -function(list_prepend LIST_NAME PREFIX) - set(NEW_LIST "") - foreach(element ${${LIST_NAME}}) - list(APPEND NEW_LIST "${PREFIX}${element}") - endforeach(element) - set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) -endfunction() - -# === Flutter Library === -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) -pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) -pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) - -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "fl_basic_message_channel.h" - "fl_binary_codec.h" - "fl_binary_messenger.h" - "fl_dart_project.h" - "fl_engine.h" - "fl_json_message_codec.h" - "fl_json_method_codec.h" - "fl_message_codec.h" - "fl_method_call.h" - "fl_method_channel.h" - "fl_method_codec.h" - "fl_method_response.h" - "fl_plugin_registrar.h" - "fl_plugin_registry.h" - "fl_standard_message_codec.h" - "fl_standard_method_codec.h" - "fl_string_codec.h" - "fl_value.h" - "fl_view.h" - "flutter_linux.h" -) -list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") -target_link_libraries(flutter INTERFACE - PkgConfig::GTK - PkgConfig::GLIB - PkgConfig::GIO -) -add_dependencies(flutter flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CMAKE_CURRENT_BINARY_DIR}/_phony_ - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" - ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} -) diff --git a/app/watt_wizard/linux/flutter/generated_plugin_registrant.cc b/app/watt_wizard/linux/flutter/generated_plugin_registrant.cc deleted file mode 100644 index e71a16d..0000000 --- a/app/watt_wizard/linux/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,11 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - - -void fl_register_plugins(FlPluginRegistry* registry) { -} diff --git a/app/watt_wizard/linux/flutter/generated_plugin_registrant.h b/app/watt_wizard/linux/flutter/generated_plugin_registrant.h deleted file mode 100644 index e0f0a47..0000000 --- a/app/watt_wizard/linux/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void fl_register_plugins(FlPluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/app/watt_wizard/linux/flutter/generated_plugins.cmake b/app/watt_wizard/linux/flutter/generated_plugins.cmake deleted file mode 100644 index 2e1de87..0000000 --- a/app/watt_wizard/linux/flutter/generated_plugins.cmake +++ /dev/null @@ -1,23 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/app/watt_wizard/linux/main.cc b/app/watt_wizard/linux/main.cc deleted file mode 100644 index e7c5c54..0000000 --- a/app/watt_wizard/linux/main.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include "my_application.h" - -int main(int argc, char** argv) { - g_autoptr(MyApplication) app = my_application_new(); - return g_application_run(G_APPLICATION(app), argc, argv); -} diff --git a/app/watt_wizard/linux/my_application.cc b/app/watt_wizard/linux/my_application.cc deleted file mode 100644 index 428ea07..0000000 --- a/app/watt_wizard/linux/my_application.cc +++ /dev/null @@ -1,104 +0,0 @@ -#include "my_application.h" - -#include -#ifdef GDK_WINDOWING_X11 -#include -#endif - -#include "flutter/generated_plugin_registrant.h" - -struct _MyApplication { - GtkApplication parent_instance; - char** dart_entrypoint_arguments; -}; - -G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) - -// Implements GApplication::activate. -static void my_application_activate(GApplication* application) { - MyApplication* self = MY_APPLICATION(application); - GtkWindow* window = - GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); - - // Use a header bar when running in GNOME as this is the common style used - // by applications and is the setup most users will be using (e.g. Ubuntu - // desktop). - // If running on X and not using GNOME then just use a traditional title bar - // in case the window manager does more exotic layout, e.g. tiling. - // If running on Wayland assume the header bar will work (may need changing - // if future cases occur). - gboolean use_header_bar = TRUE; -#ifdef GDK_WINDOWING_X11 - GdkScreen* screen = gtk_window_get_screen(window); - if (GDK_IS_X11_SCREEN(screen)) { - const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); - if (g_strcmp0(wm_name, "GNOME Shell") != 0) { - use_header_bar = FALSE; - } - } -#endif - if (use_header_bar) { - GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); - gtk_widget_show(GTK_WIDGET(header_bar)); - gtk_header_bar_set_title(header_bar, "watt_wizard"); - gtk_header_bar_set_show_close_button(header_bar, TRUE); - gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); - } else { - gtk_window_set_title(window, "watt_wizard"); - } - - gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); - - g_autoptr(FlDartProject) project = fl_dart_project_new(); - fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); - - FlView* view = fl_view_new(project); - gtk_widget_show(GTK_WIDGET(view)); - gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); - - fl_register_plugins(FL_PLUGIN_REGISTRY(view)); - - gtk_widget_grab_focus(GTK_WIDGET(view)); -} - -// Implements GApplication::local_command_line. -static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { - MyApplication* self = MY_APPLICATION(application); - // Strip out the first argument as it is the binary name. - self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); - - g_autoptr(GError) error = nullptr; - if (!g_application_register(application, nullptr, &error)) { - g_warning("Failed to register: %s", error->message); - *exit_status = 1; - return TRUE; - } - - g_application_activate(application); - *exit_status = 0; - - return TRUE; -} - -// Implements GObject::dispose. -static void my_application_dispose(GObject* object) { - MyApplication* self = MY_APPLICATION(object); - g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); - G_OBJECT_CLASS(my_application_parent_class)->dispose(object); -} - -static void my_application_class_init(MyApplicationClass* klass) { - G_APPLICATION_CLASS(klass)->activate = my_application_activate; - G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; - G_OBJECT_CLASS(klass)->dispose = my_application_dispose; -} - -static void my_application_init(MyApplication* self) {} - -MyApplication* my_application_new() { - return MY_APPLICATION(g_object_new(my_application_get_type(), - "application-id", APPLICATION_ID, - "flags", G_APPLICATION_NON_UNIQUE, - nullptr)); -} diff --git a/app/watt_wizard/linux/my_application.h b/app/watt_wizard/linux/my_application.h deleted file mode 100644 index 72271d5..0000000 --- a/app/watt_wizard/linux/my_application.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef FLUTTER_MY_APPLICATION_H_ -#define FLUTTER_MY_APPLICATION_H_ - -#include - -G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, - GtkApplication) - -/** - * my_application_new: - * - * Creates a new Flutter-based application. - * - * Returns: a new #MyApplication. - */ -MyApplication* my_application_new(); - -#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/app/watt_wizard/macos/.gitignore b/app/watt_wizard/macos/.gitignore deleted file mode 100644 index 746adbb..0000000 --- a/app/watt_wizard/macos/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -# Flutter-related -**/Flutter/ephemeral/ -**/Pods/ - -# Xcode-related -**/dgph -**/xcuserdata/ diff --git a/app/watt_wizard/macos/Flutter/Flutter-Debug.xcconfig b/app/watt_wizard/macos/Flutter/Flutter-Debug.xcconfig deleted file mode 100644 index 4b81f9b..0000000 --- a/app/watt_wizard/macos/Flutter/Flutter-Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/app/watt_wizard/macos/Flutter/Flutter-Release.xcconfig b/app/watt_wizard/macos/Flutter/Flutter-Release.xcconfig deleted file mode 100644 index 5caa9d1..0000000 --- a/app/watt_wizard/macos/Flutter/Flutter-Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/app/watt_wizard/macos/Flutter/GeneratedPluginRegistrant.swift b/app/watt_wizard/macos/Flutter/GeneratedPluginRegistrant.swift deleted file mode 100644 index 9c2c0d4..0000000 --- a/app/watt_wizard/macos/Flutter/GeneratedPluginRegistrant.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// Generated file. Do not edit. -// - -import FlutterMacOS -import Foundation - -import cloud_firestore -import firebase_auth -import firebase_core -import flutter_blue_plus - -func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { - FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin")) - FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) - FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) - FlutterBluePlusPlugin.register(with: registry.registrar(forPlugin: "FlutterBluePlusPlugin")) -} diff --git a/app/watt_wizard/macos/Podfile b/app/watt_wizard/macos/Podfile deleted file mode 100644 index c795730..0000000 --- a/app/watt_wizard/macos/Podfile +++ /dev/null @@ -1,43 +0,0 @@ -platform :osx, '10.14' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_macos_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_macos_build_settings(target) - end -end diff --git a/app/watt_wizard/macos/Runner.xcodeproj/project.pbxproj b/app/watt_wizard/macos/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 3bdb7d7..0000000 --- a/app/watt_wizard/macos/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,699 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXAggregateTarget section */ - 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; - buildPhases = ( - 33CC111E2044C6BF0003C045 /* ShellScript */, - ); - dependencies = ( - ); - name = "Flutter Assemble"; - productName = FLX; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - 9DC907619B55D327D732048F /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6C0CCBF4847BB7A9B689700C /* GoogleService-Info.plist */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 33CC10E52044A3C60003C045 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 33CC10EC2044A3C60003C045; - remoteInfo = Runner; - }; - 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 33CC10E52044A3C60003C045 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 33CC111A2044C6BA0003C045; - remoteInfo = FLX; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 33CC110E2044A8840003C045 /* Bundle Framework */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Bundle Framework"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; - 33CC10ED2044A3C60003C045 /* watt_wizard.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = watt_wizard.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; - 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; - 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; - 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; - 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; - 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 6C0CCBF4847BB7A9B689700C /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 331C80D2294CF70F00263BE5 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 33CC10EA2044A3C60003C045 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 331C80D6294CF71000263BE5 /* RunnerTests */ = { - isa = PBXGroup; - children = ( - 331C80D7294CF71000263BE5 /* RunnerTests.swift */, - ); - path = RunnerTests; - sourceTree = ""; - }; - 33BA886A226E78AF003329D5 /* Configs */ = { - isa = PBXGroup; - children = ( - 33E5194F232828860026EE4D /* AppInfo.xcconfig */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, - ); - path = Configs; - sourceTree = ""; - }; - 33CC10E42044A3C60003C045 = { - isa = PBXGroup; - children = ( - 33FAB671232836740065AC1E /* Runner */, - 33CEB47122A05771004F2AC0 /* Flutter */, - 331C80D6294CF71000263BE5 /* RunnerTests */, - 33CC10EE2044A3C60003C045 /* Products */, - D73912EC22F37F3D000D13A0 /* Frameworks */, - 6C0CCBF4847BB7A9B689700C /* GoogleService-Info.plist */, - ); - sourceTree = ""; - }; - 33CC10EE2044A3C60003C045 /* Products */ = { - isa = PBXGroup; - children = ( - 33CC10ED2044A3C60003C045 /* watt_wizard.app */, - 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 33CC11242044D66E0003C045 /* Resources */ = { - isa = PBXGroup; - children = ( - 33CC10F22044A3C60003C045 /* Assets.xcassets */, - 33CC10F42044A3C60003C045 /* MainMenu.xib */, - 33CC10F72044A3C60003C045 /* Info.plist */, - ); - name = Resources; - path = ..; - sourceTree = ""; - }; - 33CEB47122A05771004F2AC0 /* Flutter */ = { - isa = PBXGroup; - children = ( - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, - ); - path = Flutter; - sourceTree = ""; - }; - 33FAB671232836740065AC1E /* Runner */ = { - isa = PBXGroup; - children = ( - 33CC10F02044A3C60003C045 /* AppDelegate.swift */, - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, - 33E51913231747F40026EE4D /* DebugProfile.entitlements */, - 33E51914231749380026EE4D /* Release.entitlements */, - 33CC11242044D66E0003C045 /* Resources */, - 33BA886A226E78AF003329D5 /* Configs */, - ); - path = Runner; - sourceTree = ""; - }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { - isa = PBXGroup; - children = ( - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 331C80D4294CF70F00263BE5 /* RunnerTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; - buildPhases = ( - 331C80D1294CF70F00263BE5 /* Sources */, - 331C80D2294CF70F00263BE5 /* Frameworks */, - 331C80D3294CF70F00263BE5 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 331C80DA294CF71000263BE5 /* PBXTargetDependency */, - ); - name = RunnerTests; - productName = RunnerTests; - productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 33CC10EC2044A3C60003C045 /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - 33CC10E92044A3C60003C045 /* Sources */, - 33CC10EA2044A3C60003C045 /* Frameworks */, - 33CC10EB2044A3C60003C045 /* Resources */, - 33CC110E2044A8840003C045 /* Bundle Framework */, - 3399D490228B24CF009A79C7 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - 33CC11202044C79F0003C045 /* PBXTargetDependency */, - ); - name = Runner; - productName = Runner; - productReference = 33CC10ED2044A3C60003C045 /* watt_wizard.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 33CC10E52044A3C60003C045 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1430; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 331C80D4294CF70F00263BE5 = { - CreatedOnToolsVersion = 14.0; - TestTargetID = 33CC10EC2044A3C60003C045; - }; - 33CC10EC2044A3C60003C045 = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 1100; - ProvisioningStyle = Automatic; - SystemCapabilities = { - com.apple.Sandbox = { - enabled = 1; - }; - }; - }; - 33CC111A2044C6BA0003C045 = { - CreatedOnToolsVersion = 9.2; - ProvisioningStyle = Manual; - }; - }; - }; - buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 33CC10E42044A3C60003C045; - productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 33CC10EC2044A3C60003C045 /* Runner */, - 331C80D4294CF70F00263BE5 /* RunnerTests */, - 33CC111A2044C6BA0003C045 /* Flutter Assemble */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 331C80D3294CF70F00263BE5 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 33CC10EB2044A3C60003C045 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, - 9DC907619B55D327D732048F /* GoogleService-Info.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 3399D490228B24CF009A79C7 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; - }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, - ); - inputPaths = ( - Flutter/ephemeral/tripwire, - ); - outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 331C80D1294CF70F00263BE5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 33CC10E92044A3C60003C045 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 33CC10EC2044A3C60003C045 /* Runner */; - targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; - }; - 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; - targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 33CC10F52044A3C60003C045 /* Base */, - ); - name = MainMenu.xib; - path = Runner; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 331C80DB294CF71000263BE5 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/watt_wizard.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/watt_wizard"; - }; - name = Debug; - }; - 331C80DC294CF71000263BE5 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/watt_wizard.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/watt_wizard"; - }; - name = Release; - }; - 331C80DD294CF71000263BE5 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/watt_wizard.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/watt_wizard"; - }; - name = Profile; - }; - 338D0CE9231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Profile; - }; - 338D0CEA231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Profile; - }; - 338D0CEB231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Profile; - }; - 33CC10F92044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 33CC10FA2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Release; - }; - 33CC10FC2044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 33CC10FD2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - 33CC111C2044C6BA0003C045 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 33CC111D2044C6BA0003C045 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 331C80DB294CF71000263BE5 /* Debug */, - 331C80DC294CF71000263BE5 /* Release */, - 331C80DD294CF71000263BE5 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10F92044A3C60003C045 /* Debug */, - 33CC10FA2044A3C60003C045 /* Release */, - 338D0CE9231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10FC2044A3C60003C045 /* Debug */, - 33CC10FD2044A3C60003C045 /* Release */, - 338D0CEA231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC111C2044C6BA0003C045 /* Debug */, - 33CC111D2044C6BA0003C045 /* Release */, - 338D0CEB231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 33CC10E52044A3C60003C045 /* Project object */; -} diff --git a/app/watt_wizard/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/app/watt_wizard/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/app/watt_wizard/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/app/watt_wizard/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/app/watt_wizard/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index 983fc37..0000000 --- a/app/watt_wizard/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/watt_wizard/macos/Runner.xcworkspace/contents.xcworkspacedata b/app/watt_wizard/macos/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 1d526a1..0000000 --- a/app/watt_wizard/macos/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/app/watt_wizard/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/app/watt_wizard/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/app/watt_wizard/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/app/watt_wizard/macos/Runner/AppDelegate.swift b/app/watt_wizard/macos/Runner/AppDelegate.swift deleted file mode 100644 index d53ef64..0000000 --- a/app/watt_wizard/macos/Runner/AppDelegate.swift +++ /dev/null @@ -1,9 +0,0 @@ -import Cocoa -import FlutterMacOS - -@NSApplicationMain -class AppDelegate: FlutterAppDelegate { - override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { - return true - } -} diff --git a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index a2ec33f..0000000 --- a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "images" : [ - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_16.png", - "scale" : "1x" - }, - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "2x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "1x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_64.png", - "scale" : "2x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_128.png", - "scale" : "1x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "2x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "1x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "2x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "1x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_1024.png", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png deleted file mode 100644 index 82b6f9d..0000000 Binary files a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png and /dev/null differ diff --git a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png deleted file mode 100644 index 13b35eb..0000000 Binary files a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png and /dev/null differ diff --git a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png deleted file mode 100644 index 0a3f5fa..0000000 Binary files a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png and /dev/null differ diff --git a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png deleted file mode 100644 index bdb5722..0000000 Binary files a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png and /dev/null differ diff --git a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png deleted file mode 100644 index f083318..0000000 Binary files a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png and /dev/null differ diff --git a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png deleted file mode 100644 index 326c0e7..0000000 Binary files a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png and /dev/null differ diff --git a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png deleted file mode 100644 index 2f1632c..0000000 Binary files a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png and /dev/null differ diff --git a/app/watt_wizard/macos/Runner/Base.lproj/MainMenu.xib b/app/watt_wizard/macos/Runner/Base.lproj/MainMenu.xib deleted file mode 100644 index 80e867a..0000000 --- a/app/watt_wizard/macos/Runner/Base.lproj/MainMenu.xib +++ /dev/null @@ -1,343 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/watt_wizard/macos/Runner/Configs/AppInfo.xcconfig b/app/watt_wizard/macos/Runner/Configs/AppInfo.xcconfig deleted file mode 100644 index 015e006..0000000 --- a/app/watt_wizard/macos/Runner/Configs/AppInfo.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -// Application-level settings for the Runner target. -// -// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the -// future. If not, the values below would default to using the project name when this becomes a -// 'flutter create' template. - -// The application's name. By default this is also the title of the Flutter window. -PRODUCT_NAME = watt_wizard - -// The application's bundle identifier -PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard - -// The copyright displayed in application information -PRODUCT_COPYRIGHT = Copyright © 2023 com.example. All rights reserved. diff --git a/app/watt_wizard/macos/Runner/Configs/Debug.xcconfig b/app/watt_wizard/macos/Runner/Configs/Debug.xcconfig deleted file mode 100644 index 36b0fd9..0000000 --- a/app/watt_wizard/macos/Runner/Configs/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Debug.xcconfig" -#include "Warnings.xcconfig" diff --git a/app/watt_wizard/macos/Runner/Configs/Release.xcconfig b/app/watt_wizard/macos/Runner/Configs/Release.xcconfig deleted file mode 100644 index dff4f49..0000000 --- a/app/watt_wizard/macos/Runner/Configs/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Release.xcconfig" -#include "Warnings.xcconfig" diff --git a/app/watt_wizard/macos/Runner/Configs/Warnings.xcconfig b/app/watt_wizard/macos/Runner/Configs/Warnings.xcconfig deleted file mode 100644 index 42bcbf4..0000000 --- a/app/watt_wizard/macos/Runner/Configs/Warnings.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings -GCC_WARN_UNDECLARED_SELECTOR = YES -CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES -CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE -CLANG_WARN__DUPLICATE_METHOD_MATCH = YES -CLANG_WARN_PRAGMA_PACK = YES -CLANG_WARN_STRICT_PROTOTYPES = YES -CLANG_WARN_COMMA = YES -GCC_WARN_STRICT_SELECTOR_MATCH = YES -CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES -CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES -GCC_WARN_SHADOW = YES -CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/app/watt_wizard/macos/Runner/DebugProfile.entitlements b/app/watt_wizard/macos/Runner/DebugProfile.entitlements deleted file mode 100644 index dddb8a3..0000000 --- a/app/watt_wizard/macos/Runner/DebugProfile.entitlements +++ /dev/null @@ -1,12 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.cs.allow-jit - - com.apple.security.network.server - - - diff --git a/app/watt_wizard/macos/Runner/GoogleService-Info.plist b/app/watt_wizard/macos/Runner/GoogleService-Info.plist deleted file mode 100644 index 4f0408e..0000000 --- a/app/watt_wizard/macos/Runner/GoogleService-Info.plist +++ /dev/null @@ -1,30 +0,0 @@ - - - - - API_KEY - AIzaSyAecUFC5dEESq3rLDNNx-Kxx0_w5sZvWGs - GCM_SENDER_ID - 192909855910 - PLIST_VERSION - 1 - BUNDLE_ID - com.example.wattWizard.RunnerTests - PROJECT_ID - hackgt2023 - STORAGE_BUCKET - hackgt2023.appspot.com - IS_ADS_ENABLED - - IS_ANALYTICS_ENABLED - - IS_APPINVITE_ENABLED - - IS_GCM_ENABLED - - IS_SIGNIN_ENABLED - - GOOGLE_APP_ID - 1:192909855910:ios:a49a650b4f8915ac873867 - - \ No newline at end of file diff --git a/app/watt_wizard/macos/Runner/Info.plist b/app/watt_wizard/macos/Runner/Info.plist deleted file mode 100644 index 4789daa..0000000 --- a/app/watt_wizard/macos/Runner/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSHumanReadableCopyright - $(PRODUCT_COPYRIGHT) - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/app/watt_wizard/macos/Runner/MainFlutterWindow.swift b/app/watt_wizard/macos/Runner/MainFlutterWindow.swift deleted file mode 100644 index 3cc05eb..0000000 --- a/app/watt_wizard/macos/Runner/MainFlutterWindow.swift +++ /dev/null @@ -1,15 +0,0 @@ -import Cocoa -import FlutterMacOS - -class MainFlutterWindow: NSWindow { - override func awakeFromNib() { - let flutterViewController = FlutterViewController() - let windowFrame = self.frame - self.contentViewController = flutterViewController - self.setFrame(windowFrame, display: true) - - RegisterGeneratedPlugins(registry: flutterViewController) - - super.awakeFromNib() - } -} diff --git a/app/watt_wizard/macos/Runner/Release.entitlements b/app/watt_wizard/macos/Runner/Release.entitlements deleted file mode 100644 index 852fa1a..0000000 --- a/app/watt_wizard/macos/Runner/Release.entitlements +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.security.app-sandbox - - - diff --git a/app/watt_wizard/macos/RunnerTests/RunnerTests.swift b/app/watt_wizard/macos/RunnerTests/RunnerTests.swift deleted file mode 100644 index 5418c9f..0000000 --- a/app/watt_wizard/macos/RunnerTests/RunnerTests.swift +++ /dev/null @@ -1,12 +0,0 @@ -import FlutterMacOS -import Cocoa -import XCTest - -class RunnerTests: XCTestCase { - - func testExample() { - // If you add code to the Runner application, consider adding tests here. - // See https://developer.apple.com/documentation/xctest for more information about using XCTest. - } - -} diff --git a/app/watt_wizard/macos/firebase_app_id_file.json b/app/watt_wizard/macos/firebase_app_id_file.json deleted file mode 100644 index 5ff45d2..0000000 --- a/app/watt_wizard/macos/firebase_app_id_file.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "file_generated_by": "FlutterFire CLI", - "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory", - "GOOGLE_APP_ID": "1:192909855910:ios:a49a650b4f8915ac873867", - "FIREBASE_PROJECT_ID": "hackgt2023", - "GCM_SENDER_ID": "192909855910" -} \ No newline at end of file diff --git a/app/watt_wizard/pubspec.lock b/app/watt_wizard/pubspec.lock deleted file mode 100644 index 5b567bb..0000000 --- a/app/watt_wizard/pubspec.lock +++ /dev/null @@ -1,418 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - _flutterfire_internals: - dependency: transitive - description: - name: _flutterfire_internals - sha256: d84d98f1992976775f83083523a34c5d22fea191eec3abb2bd09537fb623c2e0 - url: "https://pub.dev" - source: hosted - version: "1.3.7" - archive: - dependency: transitive - description: - name: archive - sha256: "7e0d52067d05f2e0324268097ba723b71cb41ac8a6a2b24d1edf9c536b987b03" - url: "https://pub.dev" - source: hosted - version: "3.4.6" - args: - dependency: transitive - description: - name: args - sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 - url: "https://pub.dev" - source: hosted - version: "2.4.2" - async: - dependency: transitive - description: - name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" - url: "https://pub.dev" - source: hosted - version: "2.11.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - characters: - dependency: transitive - description: - name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" - url: "https://pub.dev" - source: hosted - version: "1.3.0" - checked_yaml: - dependency: transitive - description: - name: checked_yaml - sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff - url: "https://pub.dev" - source: hosted - version: "2.0.3" - cli_util: - dependency: transitive - description: - name: cli_util - sha256: b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7 - url: "https://pub.dev" - source: hosted - version: "0.4.0" - clock: - dependency: transitive - description: - name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf - url: "https://pub.dev" - source: hosted - version: "1.1.1" - cloud_firestore: - dependency: "direct main" - description: - name: cloud_firestore - sha256: "1179ae4c69e2ea18179d844d70fc6ed2f082a2bbeb7fa62d35a2a24e2992bd4d" - url: "https://pub.dev" - source: hosted - version: "4.9.3" - cloud_firestore_platform_interface: - dependency: transitive - description: - name: cloud_firestore_platform_interface - sha256: acdcf0743bbdd0e6b342f3d2033e15d260a2c6f9434dd34b008b8f1c35e62b23 - url: "https://pub.dev" - source: hosted - version: "5.16.2" - cloud_firestore_web: - dependency: transitive - description: - name: cloud_firestore_web - sha256: "321bb0732c8d782a49aede96805e59609e05cf98b6c34370faa04103f46a4a3a" - url: "https://pub.dev" - source: hosted - version: "3.7.2" - collection: - dependency: transitive - description: - name: collection - sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 - url: "https://pub.dev" - source: hosted - version: "1.17.2" - convert: - dependency: transitive - description: - name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" - source: hosted - version: "3.1.1" - crypto: - dependency: transitive - description: - name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab - url: "https://pub.dev" - source: hosted - version: "3.0.3" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d - url: "https://pub.dev" - source: hosted - version: "1.0.6" - fake_async: - dependency: transitive - description: - name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" - url: "https://pub.dev" - source: hosted - version: "1.3.1" - firebase_auth: - dependency: "direct main" - description: - name: firebase_auth - sha256: "95c74884ff25eafcbbbcd5506b738e68ee98ff54d09522a6092a2fb95d02ee7a" - url: "https://pub.dev" - source: hosted - version: "4.10.1" - firebase_auth_platform_interface: - dependency: transitive - description: - name: firebase_auth_platform_interface - sha256: "05d2636673e145d2b5eccc452c009808af4c15e8b402f34bb8fec63f2c76e86b" - url: "https://pub.dev" - source: hosted - version: "6.19.1" - firebase_auth_web: - dependency: transitive - description: - name: firebase_auth_web - sha256: "4b8374da5d8969f99453ebd65074c1d379fe781bb3680fa7f65a4d3ac4ec87b3" - url: "https://pub.dev" - source: hosted - version: "5.8.2" - firebase_core: - dependency: "direct main" - description: - name: firebase_core - sha256: "95580fa07c8ca3072a2bb1fecd792616a33f8683477d25b7d29d3a6a399e6ece" - url: "https://pub.dev" - source: hosted - version: "2.17.0" - firebase_core_platform_interface: - dependency: transitive - description: - name: firebase_core_platform_interface - sha256: b63e3be6c96ef5c33bdec1aab23c91eb00696f6452f0519401d640938c94cba2 - url: "https://pub.dev" - source: hosted - version: "4.8.0" - firebase_core_web: - dependency: transitive - description: - name: firebase_core_web - sha256: e8c408923cd3a25bd342c576a114f2126769cd1a57106a4edeaa67ea4a84e962 - url: "https://pub.dev" - source: hosted - version: "2.8.0" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_blue_plus: - dependency: "direct main" - description: - name: flutter_blue_plus - sha256: d90c8cd9600d971a9e4007441e0f06b5134b6ba8329e28f255d68b02832ea2d4 - url: "https://pub.dev" - source: hosted - version: "1.18.3" - flutter_launcher_icons: - dependency: "direct main" - description: - name: flutter_launcher_icons - sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" - url: "https://pub.dev" - source: hosted - version: "0.13.1" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 - url: "https://pub.dev" - source: hosted - version: "2.0.3" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.dev" - source: hosted - version: "4.0.2" - image: - dependency: transitive - description: - name: image - sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271" - url: "https://pub.dev" - source: hosted - version: "4.1.3" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" - json_annotation: - dependency: transitive - description: - name: json_annotation - sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 - url: "https://pub.dev" - source: hosted - version: "4.8.1" - lints: - dependency: transitive - description: - name: lints - sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - matcher: - dependency: transitive - description: - name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" - url: "https://pub.dev" - source: hosted - version: "0.12.16" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" - url: "https://pub.dev" - source: hosted - version: "0.5.0" - meta: - dependency: transitive - description: - name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" - url: "https://pub.dev" - source: hosted - version: "1.9.1" - path: - dependency: transitive - description: - name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" - url: "https://pub.dev" - source: hosted - version: "1.8.3" - petitparser: - dependency: transitive - description: - name: petitparser - sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 - url: "https://pub.dev" - source: hosted - version: "5.4.0" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d - url: "https://pub.dev" - source: hosted - version: "2.1.6" - pointycastle: - dependency: transitive - description: - name: pointycastle - sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" - url: "https://pub.dev" - source: hosted - version: "3.7.3" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" - url: "https://pub.dev" - source: hosted - version: "1.10.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.dev" - source: hosted - version: "1.11.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" - url: "https://pub.dev" - source: hosted - version: "0.6.0" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c - url: "https://pub.dev" - source: hosted - version: "1.3.2" - vector_math: - dependency: transitive - description: - name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - web: - dependency: transitive - description: - name: web - sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 - url: "https://pub.dev" - source: hosted - version: "0.1.4-beta" - xml: - dependency: transitive - description: - name: xml - sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" - url: "https://pub.dev" - source: hosted - version: "6.3.0" - yaml: - dependency: transitive - description: - name: yaml - sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" - url: "https://pub.dev" - source: hosted - version: "3.1.2" -sdks: - dart: ">=3.1.3 <4.0.0" - flutter: ">=3.3.0" diff --git a/app/watt_wizard/pubspec.yaml b/app/watt_wizard/pubspec.yaml deleted file mode 100644 index e592920..0000000 --- a/app/watt_wizard/pubspec.yaml +++ /dev/null @@ -1,98 +0,0 @@ -name: watt_wizard -description: A new Flutter project. -# The following line prevents the package from being accidentally published to -# pub.dev using `flutter pub publish`. This is preferred for private packages. -publish_to: "none" # Remove this line if you wish to publish to pub.dev - -# The following defines the version and build number for your application. -# A version number is three numbers separated by dots, like 1.2.43 -# followed by an optional build number separated by a +. -# Both the version and the builder number may be overridden in flutter -# build by specifying --build-name and --build-number, respectively. -# In Android, build-name is used as versionName while build-number used as versionCode. -# Read more about Android versioning at https://developer.android.com/studio/publish/versioning -# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. -# Read more about iOS versioning at -# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -# In Windows, build-name is used as the major, minor, and patch parts -# of the product and file versions while build-number is used as the build suffix. -version: 1.0.0+1 - -environment: - sdk: ">=3.1.3 <4.0.0" - -# Dependencies specify other packages that your package needs in order to work. -# To automatically upgrade your package dependencies to the latest versions -# consider running `flutter pub upgrade --major-versions`. Alternatively, -# dependencies can be manually updated by changing the version numbers below to -# the latest version available on pub.dev. To see which dependencies have newer -# versions available, run `flutter pub outdated`. -dependencies: - flutter: - sdk: flutter - flutter_launcher_icons: "^0.13.1" - - # The following adds the Cupertino Icons font to your application. - # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^1.0.2 - firebase_core: ^2.17.0 - firebase_auth: ^4.10.1 - flutter_blue_plus: ^1.18.3 - cloud_firestore: ^4.9.3 - -dev_dependencies: - flutter_test: - sdk: flutter - - # The "flutter_lints" package below contains a set of recommended lints to - # encourage good coding practices. The lint set provided by the package is - # activated in the `analysis_options.yaml` file located at the root of your - # package. See that file for information about deactivating specific lint - # rules and activating additional ones. - flutter_lints: ^2.0.0 - -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec - -# The following section is specific to Flutter packages. -flutter: - # The following line ensures that the Material Icons font is - # included with your application, so that you can use the icons in - # the material Icons class. - uses-material-design: true - - # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg - - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/assets-and-images/#resolution-aware - - # For details regarding adding assets from package dependencies, see - # https://flutter.dev/assets-and-images/#from-packages - - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts from package dependencies, - # see https://flutter.dev/custom-fonts/#from-packages - -flutter_launcher_icons: - ios: true - image_path_ios: "assets/icon/ios_square.png" - min_sdk_android: 21 # android min sdk min:16, default 21 diff --git a/app/watt_wizard/test/widget_test.dart b/app/watt_wizard/test/widget_test.dart deleted file mode 100644 index 3626d72..0000000 --- a/app/watt_wizard/test/widget_test.dart +++ /dev/null @@ -1,30 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility in the flutter_test package. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:watt_wizard/main.dart'; - -void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const MyApp()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); - }); -} diff --git a/app/watt_wizard/web/favicon.png b/app/watt_wizard/web/favicon.png deleted file mode 100644 index 8aaa46a..0000000 Binary files a/app/watt_wizard/web/favicon.png and /dev/null differ diff --git a/app/watt_wizard/web/icons/Icon-192.png b/app/watt_wizard/web/icons/Icon-192.png deleted file mode 100644 index b749bfe..0000000 Binary files a/app/watt_wizard/web/icons/Icon-192.png and /dev/null differ diff --git a/app/watt_wizard/web/icons/Icon-512.png b/app/watt_wizard/web/icons/Icon-512.png deleted file mode 100644 index 88cfd48..0000000 Binary files a/app/watt_wizard/web/icons/Icon-512.png and /dev/null differ diff --git a/app/watt_wizard/web/icons/Icon-maskable-192.png b/app/watt_wizard/web/icons/Icon-maskable-192.png deleted file mode 100644 index eb9b4d7..0000000 Binary files a/app/watt_wizard/web/icons/Icon-maskable-192.png and /dev/null differ diff --git a/app/watt_wizard/web/icons/Icon-maskable-512.png b/app/watt_wizard/web/icons/Icon-maskable-512.png deleted file mode 100644 index d69c566..0000000 Binary files a/app/watt_wizard/web/icons/Icon-maskable-512.png and /dev/null differ diff --git a/app/watt_wizard/web/index.html b/app/watt_wizard/web/index.html deleted file mode 100644 index 117750c..0000000 --- a/app/watt_wizard/web/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - watt_wizard - - - - - - - - - - diff --git a/app/watt_wizard/web/manifest.json b/app/watt_wizard/web/manifest.json deleted file mode 100644 index d0670cd..0000000 --- a/app/watt_wizard/web/manifest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "watt_wizard", - "short_name": "watt_wizard", - "start_url": ".", - "display": "standalone", - "background_color": "#0175C2", - "theme_color": "#0175C2", - "description": "A new Flutter project.", - "orientation": "portrait-primary", - "prefer_related_applications": false, - "icons": [ - { - "src": "icons/Icon-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "icons/Icon-512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "icons/Icon-maskable-192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "maskable" - }, - { - "src": "icons/Icon-maskable-512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "maskable" - } - ] -} diff --git a/app/watt_wizard/windows/.gitignore b/app/watt_wizard/windows/.gitignore deleted file mode 100644 index d492d0d..0000000 --- a/app/watt_wizard/windows/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -flutter/ephemeral/ - -# Visual Studio user-specific files. -*.suo -*.user -*.userosscache -*.sln.docstates - -# Visual Studio build-related files. -x64/ -x86/ - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ diff --git a/app/watt_wizard/windows/CMakeLists.txt b/app/watt_wizard/windows/CMakeLists.txt deleted file mode 100644 index 346e2e8..0000000 --- a/app/watt_wizard/windows/CMakeLists.txt +++ /dev/null @@ -1,102 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.14) -project(watt_wizard LANGUAGES CXX) - -# The name of the executable created for the application. Change this to change -# the on-disk name of your application. -set(BINARY_NAME "watt_wizard") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(VERSION 3.14...3.25) - -# Define build configuration option. -get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) -if(IS_MULTICONFIG) - set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" - CACHE STRING "" FORCE) -else() - if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") - endif() -endif() -# Define settings for the Profile build mode. -set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") -set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") -set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") -set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") - -# Use Unicode for all projects. -add_definitions(-DUNICODE -D_UNICODE) - -# Compilation settings that should be applied to most targets. -# -# Be cautious about adding new options here, as plugins use this function by -# default. In most cases, you should add new options to specific targets instead -# of modifying this function. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_17) - target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") - target_compile_options(${TARGET} PRIVATE /EHsc) - target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") - target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# Application build; see runner/CMakeLists.txt. -add_subdirectory("runner") - - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# Support files are copied into place next to the executable, so that it can -# run in place. This is done instead of making a separate bundle (as on Linux) -# so that building and running from within Visual Studio will work. -set(BUILD_BUNDLE_DIR "$") -# Make the "install" step default, as it's required to run. -set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -if(PLUGIN_BUNDLED_LIBRARIES) - install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - CONFIGURATIONS Profile;Release - COMPONENT Runtime) diff --git a/app/watt_wizard/windows/flutter/CMakeLists.txt b/app/watt_wizard/windows/flutter/CMakeLists.txt deleted file mode 100644 index 930d207..0000000 --- a/app/watt_wizard/windows/flutter/CMakeLists.txt +++ /dev/null @@ -1,104 +0,0 @@ -# This file controls Flutter-level build steps. It should not be edited. -cmake_minimum_required(VERSION 3.14) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. -set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") - -# === Flutter Library === -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "flutter_export.h" - "flutter_windows.h" - "flutter_messenger.h" - "flutter_plugin_registrar.h" - "flutter_texture_registrar.h" -) -list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") -add_dependencies(flutter flutter_assemble) - -# === Wrapper === -list(APPEND CPP_WRAPPER_SOURCES_CORE - "core_implementations.cc" - "standard_codec.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_PLUGIN - "plugin_registrar.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_APP - "flutter_engine.cc" - "flutter_view_controller.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") - -# Wrapper sources needed for a plugin. -add_library(flutter_wrapper_plugin STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} -) -apply_standard_settings(flutter_wrapper_plugin) -set_target_properties(flutter_wrapper_plugin PROPERTIES - POSITION_INDEPENDENT_CODE ON) -set_target_properties(flutter_wrapper_plugin PROPERTIES - CXX_VISIBILITY_PRESET hidden) -target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) -target_include_directories(flutter_wrapper_plugin PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_plugin flutter_assemble) - -# Wrapper sources needed for the runner. -add_library(flutter_wrapper_app STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_APP} -) -apply_standard_settings(flutter_wrapper_app) -target_link_libraries(flutter_wrapper_app PUBLIC flutter) -target_include_directories(flutter_wrapper_app PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_app flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") -set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} - ${PHONY_OUTPUT} - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" - windows-x64 $ - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} -) diff --git a/app/watt_wizard/windows/flutter/generated_plugin_registrant.cc b/app/watt_wizard/windows/flutter/generated_plugin_registrant.cc deleted file mode 100644 index d141b74..0000000 --- a/app/watt_wizard/windows/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,17 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - -#include -#include - -void RegisterPlugins(flutter::PluginRegistry* registry) { - FirebaseAuthPluginCApiRegisterWithRegistrar( - registry->GetRegistrarForPlugin("FirebaseAuthPluginCApi")); - FirebaseCorePluginCApiRegisterWithRegistrar( - registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); -} diff --git a/app/watt_wizard/windows/flutter/generated_plugin_registrant.h b/app/watt_wizard/windows/flutter/generated_plugin_registrant.h deleted file mode 100644 index dc139d8..0000000 --- a/app/watt_wizard/windows/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void RegisterPlugins(flutter::PluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/app/watt_wizard/windows/flutter/generated_plugins.cmake b/app/watt_wizard/windows/flutter/generated_plugins.cmake deleted file mode 100644 index 29944d5..0000000 --- a/app/watt_wizard/windows/flutter/generated_plugins.cmake +++ /dev/null @@ -1,25 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST - firebase_auth - firebase_core -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/app/watt_wizard/windows/runner/CMakeLists.txt b/app/watt_wizard/windows/runner/CMakeLists.txt deleted file mode 100644 index 394917c..0000000 --- a/app/watt_wizard/windows/runner/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -cmake_minimum_required(VERSION 3.14) -project(runner LANGUAGES CXX) - -# Define the application target. To change its name, change BINARY_NAME in the -# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer -# work. -# -# Any new source files that you add to the application should be added here. -add_executable(${BINARY_NAME} WIN32 - "flutter_window.cpp" - "main.cpp" - "utils.cpp" - "win32_window.cpp" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" - "Runner.rc" - "runner.exe.manifest" -) - -# Apply the standard set of build settings. This can be removed for applications -# that need different build settings. -apply_standard_settings(${BINARY_NAME}) - -# Add preprocessor definitions for the build version. -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") - -# Disable Windows macros that collide with C++ standard library functions. -target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") - -# Add dependency libraries and include directories. Add any application-specific -# dependencies here. -target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) -target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") -target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") - -# Run the Flutter tool portions of the build. This must not be removed. -add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/app/watt_wizard/windows/runner/Runner.rc b/app/watt_wizard/windows/runner/Runner.rc deleted file mode 100644 index 274ffd3..0000000 --- a/app/watt_wizard/windows/runner/Runner.rc +++ /dev/null @@ -1,121 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#pragma code_page(65001) -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (United States) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""winres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_APP_ICON ICON "resources\\app_icon.ico" - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) -#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD -#else -#define VERSION_AS_NUMBER 1,0,0,0 -#endif - -#if defined(FLUTTER_VERSION) -#define VERSION_AS_STRING FLUTTER_VERSION -#else -#define VERSION_AS_STRING "1.0.0" -#endif - -VS_VERSION_INFO VERSIONINFO - FILEVERSION VERSION_AS_NUMBER - PRODUCTVERSION VERSION_AS_NUMBER - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK -#ifdef _DEBUG - FILEFLAGS VS_FF_DEBUG -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_APP - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "CompanyName", "com.example" "\0" - VALUE "FileDescription", "watt_wizard" "\0" - VALUE "FileVersion", VERSION_AS_STRING "\0" - VALUE "InternalName", "watt_wizard" "\0" - VALUE "LegalCopyright", "Copyright (C) 2023 com.example. All rights reserved." "\0" - VALUE "OriginalFilename", "watt_wizard.exe" "\0" - VALUE "ProductName", "watt_wizard" "\0" - VALUE "ProductVersion", VERSION_AS_STRING "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - -#endif // English (United States) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED diff --git a/app/watt_wizard/windows/runner/flutter_window.cpp b/app/watt_wizard/windows/runner/flutter_window.cpp deleted file mode 100644 index 955ee30..0000000 --- a/app/watt_wizard/windows/runner/flutter_window.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#include "flutter_window.h" - -#include - -#include "flutter/generated_plugin_registrant.h" - -FlutterWindow::FlutterWindow(const flutter::DartProject& project) - : project_(project) {} - -FlutterWindow::~FlutterWindow() {} - -bool FlutterWindow::OnCreate() { - if (!Win32Window::OnCreate()) { - return false; - } - - RECT frame = GetClientArea(); - - // The size here must match the window dimensions to avoid unnecessary surface - // creation / destruction in the startup path. - flutter_controller_ = std::make_unique( - frame.right - frame.left, frame.bottom - frame.top, project_); - // Ensure that basic setup of the controller was successful. - if (!flutter_controller_->engine() || !flutter_controller_->view()) { - return false; - } - RegisterPlugins(flutter_controller_->engine()); - SetChildContent(flutter_controller_->view()->GetNativeWindow()); - - flutter_controller_->engine()->SetNextFrameCallback([&]() { - this->Show(); - }); - - // Flutter can complete the first frame before the "show window" callback is - // registered. The following call ensures a frame is pending to ensure the - // window is shown. It is a no-op if the first frame hasn't completed yet. - flutter_controller_->ForceRedraw(); - - return true; -} - -void FlutterWindow::OnDestroy() { - if (flutter_controller_) { - flutter_controller_ = nullptr; - } - - Win32Window::OnDestroy(); -} - -LRESULT -FlutterWindow::MessageHandler(HWND hwnd, UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - // Give Flutter, including plugins, an opportunity to handle window messages. - if (flutter_controller_) { - std::optional result = - flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, - lparam); - if (result) { - return *result; - } - } - - switch (message) { - case WM_FONTCHANGE: - flutter_controller_->engine()->ReloadSystemFonts(); - break; - } - - return Win32Window::MessageHandler(hwnd, message, wparam, lparam); -} diff --git a/app/watt_wizard/windows/runner/flutter_window.h b/app/watt_wizard/windows/runner/flutter_window.h deleted file mode 100644 index 6da0652..0000000 --- a/app/watt_wizard/windows/runner/flutter_window.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef RUNNER_FLUTTER_WINDOW_H_ -#define RUNNER_FLUTTER_WINDOW_H_ - -#include -#include - -#include - -#include "win32_window.h" - -// A window that does nothing but host a Flutter view. -class FlutterWindow : public Win32Window { - public: - // Creates a new FlutterWindow hosting a Flutter view running |project|. - explicit FlutterWindow(const flutter::DartProject& project); - virtual ~FlutterWindow(); - - protected: - // Win32Window: - bool OnCreate() override; - void OnDestroy() override; - LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, - LPARAM const lparam) noexcept override; - - private: - // The project to run. - flutter::DartProject project_; - - // The Flutter instance hosted by this window. - std::unique_ptr flutter_controller_; -}; - -#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/app/watt_wizard/windows/runner/main.cpp b/app/watt_wizard/windows/runner/main.cpp deleted file mode 100644 index 076ee6a..0000000 --- a/app/watt_wizard/windows/runner/main.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include - -#include "flutter_window.h" -#include "utils.h" - -int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, - _In_ wchar_t *command_line, _In_ int show_command) { - // Attach to console when present (e.g., 'flutter run') or create a - // new console when running with a debugger. - if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { - CreateAndAttachConsole(); - } - - // Initialize COM, so that it is available for use in the library and/or - // plugins. - ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); - - flutter::DartProject project(L"data"); - - std::vector command_line_arguments = - GetCommandLineArguments(); - - project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); - - FlutterWindow window(project); - Win32Window::Point origin(10, 10); - Win32Window::Size size(1280, 720); - if (!window.Create(L"watt_wizard", origin, size)) { - return EXIT_FAILURE; - } - window.SetQuitOnClose(true); - - ::MSG msg; - while (::GetMessage(&msg, nullptr, 0, 0)) { - ::TranslateMessage(&msg); - ::DispatchMessage(&msg); - } - - ::CoUninitialize(); - return EXIT_SUCCESS; -} diff --git a/app/watt_wizard/windows/runner/resource.h b/app/watt_wizard/windows/runner/resource.h deleted file mode 100644 index 66a65d1..0000000 --- a/app/watt_wizard/windows/runner/resource.h +++ /dev/null @@ -1,16 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by Runner.rc -// -#define IDI_APP_ICON 101 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 102 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/app/watt_wizard/windows/runner/resources/app_icon.ico b/app/watt_wizard/windows/runner/resources/app_icon.ico deleted file mode 100644 index c04e20c..0000000 Binary files a/app/watt_wizard/windows/runner/resources/app_icon.ico and /dev/null differ diff --git a/app/watt_wizard/windows/runner/runner.exe.manifest b/app/watt_wizard/windows/runner/runner.exe.manifest deleted file mode 100644 index a42ea76..0000000 --- a/app/watt_wizard/windows/runner/runner.exe.manifest +++ /dev/null @@ -1,20 +0,0 @@ - - - - - PerMonitorV2 - - - - - - - - - - - - - - - diff --git a/app/watt_wizard/windows/runner/utils.cpp b/app/watt_wizard/windows/runner/utils.cpp deleted file mode 100644 index b2b0873..0000000 --- a/app/watt_wizard/windows/runner/utils.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "utils.h" - -#include -#include -#include -#include - -#include - -void CreateAndAttachConsole() { - if (::AllocConsole()) { - FILE *unused; - if (freopen_s(&unused, "CONOUT$", "w", stdout)) { - _dup2(_fileno(stdout), 1); - } - if (freopen_s(&unused, "CONOUT$", "w", stderr)) { - _dup2(_fileno(stdout), 2); - } - std::ios::sync_with_stdio(); - FlutterDesktopResyncOutputStreams(); - } -} - -std::vector GetCommandLineArguments() { - // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. - int argc; - wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); - if (argv == nullptr) { - return std::vector(); - } - - std::vector command_line_arguments; - - // Skip the first argument as it's the binary name. - for (int i = 1; i < argc; i++) { - command_line_arguments.push_back(Utf8FromUtf16(argv[i])); - } - - ::LocalFree(argv); - - return command_line_arguments; -} - -std::string Utf8FromUtf16(const wchar_t* utf16_string) { - if (utf16_string == nullptr) { - return std::string(); - } - int target_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, nullptr, 0, nullptr, nullptr) - -1; // remove the trailing null character - int input_length = (int)wcslen(utf16_string); - std::string utf8_string; - if (target_length <= 0 || target_length > utf8_string.max_size()) { - return utf8_string; - } - utf8_string.resize(target_length); - int converted_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - input_length, utf8_string.data(), target_length, nullptr, nullptr); - if (converted_length == 0) { - return std::string(); - } - return utf8_string; -} diff --git a/app/watt_wizard/windows/runner/utils.h b/app/watt_wizard/windows/runner/utils.h deleted file mode 100644 index 3879d54..0000000 --- a/app/watt_wizard/windows/runner/utils.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef RUNNER_UTILS_H_ -#define RUNNER_UTILS_H_ - -#include -#include - -// Creates a console for the process, and redirects stdout and stderr to -// it for both the runner and the Flutter library. -void CreateAndAttachConsole(); - -// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string -// encoded in UTF-8. Returns an empty std::string on failure. -std::string Utf8FromUtf16(const wchar_t* utf16_string); - -// Gets the command line arguments passed in as a std::vector, -// encoded in UTF-8. Returns an empty std::vector on failure. -std::vector GetCommandLineArguments(); - -#endif // RUNNER_UTILS_H_ diff --git a/app/watt_wizard/windows/runner/win32_window.cpp b/app/watt_wizard/windows/runner/win32_window.cpp deleted file mode 100644 index 60608d0..0000000 --- a/app/watt_wizard/windows/runner/win32_window.cpp +++ /dev/null @@ -1,288 +0,0 @@ -#include "win32_window.h" - -#include -#include - -#include "resource.h" - -namespace { - -/// Window attribute that enables dark mode window decorations. -/// -/// Redefined in case the developer's machine has a Windows SDK older than -/// version 10.0.22000.0. -/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute -#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE -#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 -#endif - -constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; - -/// Registry key for app theme preference. -/// -/// A value of 0 indicates apps should use dark mode. A non-zero or missing -/// value indicates apps should use light mode. -constexpr const wchar_t kGetPreferredBrightnessRegKey[] = - L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; -constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; - -// The number of Win32Window objects that currently exist. -static int g_active_window_count = 0; - -using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); - -// Scale helper to convert logical scaler values to physical using passed in -// scale factor -int Scale(int source, double scale_factor) { - return static_cast(source * scale_factor); -} - -// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. -// This API is only needed for PerMonitor V1 awareness mode. -void EnableFullDpiSupportIfAvailable(HWND hwnd) { - HMODULE user32_module = LoadLibraryA("User32.dll"); - if (!user32_module) { - return; - } - auto enable_non_client_dpi_scaling = - reinterpret_cast( - GetProcAddress(user32_module, "EnableNonClientDpiScaling")); - if (enable_non_client_dpi_scaling != nullptr) { - enable_non_client_dpi_scaling(hwnd); - } - FreeLibrary(user32_module); -} - -} // namespace - -// Manages the Win32Window's window class registration. -class WindowClassRegistrar { - public: - ~WindowClassRegistrar() = default; - - // Returns the singleton registrar instance. - static WindowClassRegistrar* GetInstance() { - if (!instance_) { - instance_ = new WindowClassRegistrar(); - } - return instance_; - } - - // Returns the name of the window class, registering the class if it hasn't - // previously been registered. - const wchar_t* GetWindowClass(); - - // Unregisters the window class. Should only be called if there are no - // instances of the window. - void UnregisterWindowClass(); - - private: - WindowClassRegistrar() = default; - - static WindowClassRegistrar* instance_; - - bool class_registered_ = false; -}; - -WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; - -const wchar_t* WindowClassRegistrar::GetWindowClass() { - if (!class_registered_) { - WNDCLASS window_class{}; - window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); - window_class.lpszClassName = kWindowClassName; - window_class.style = CS_HREDRAW | CS_VREDRAW; - window_class.cbClsExtra = 0; - window_class.cbWndExtra = 0; - window_class.hInstance = GetModuleHandle(nullptr); - window_class.hIcon = - LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); - window_class.hbrBackground = 0; - window_class.lpszMenuName = nullptr; - window_class.lpfnWndProc = Win32Window::WndProc; - RegisterClass(&window_class); - class_registered_ = true; - } - return kWindowClassName; -} - -void WindowClassRegistrar::UnregisterWindowClass() { - UnregisterClass(kWindowClassName, nullptr); - class_registered_ = false; -} - -Win32Window::Win32Window() { - ++g_active_window_count; -} - -Win32Window::~Win32Window() { - --g_active_window_count; - Destroy(); -} - -bool Win32Window::Create(const std::wstring& title, - const Point& origin, - const Size& size) { - Destroy(); - - const wchar_t* window_class = - WindowClassRegistrar::GetInstance()->GetWindowClass(); - - const POINT target_point = {static_cast(origin.x), - static_cast(origin.y)}; - HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); - UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); - double scale_factor = dpi / 96.0; - - HWND window = CreateWindow( - window_class, title.c_str(), WS_OVERLAPPEDWINDOW, - Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), - Scale(size.width, scale_factor), Scale(size.height, scale_factor), - nullptr, nullptr, GetModuleHandle(nullptr), this); - - if (!window) { - return false; - } - - UpdateTheme(window); - - return OnCreate(); -} - -bool Win32Window::Show() { - return ShowWindow(window_handle_, SW_SHOWNORMAL); -} - -// static -LRESULT CALLBACK Win32Window::WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - if (message == WM_NCCREATE) { - auto window_struct = reinterpret_cast(lparam); - SetWindowLongPtr(window, GWLP_USERDATA, - reinterpret_cast(window_struct->lpCreateParams)); - - auto that = static_cast(window_struct->lpCreateParams); - EnableFullDpiSupportIfAvailable(window); - that->window_handle_ = window; - } else if (Win32Window* that = GetThisFromHandle(window)) { - return that->MessageHandler(window, message, wparam, lparam); - } - - return DefWindowProc(window, message, wparam, lparam); -} - -LRESULT -Win32Window::MessageHandler(HWND hwnd, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - switch (message) { - case WM_DESTROY: - window_handle_ = nullptr; - Destroy(); - if (quit_on_close_) { - PostQuitMessage(0); - } - return 0; - - case WM_DPICHANGED: { - auto newRectSize = reinterpret_cast(lparam); - LONG newWidth = newRectSize->right - newRectSize->left; - LONG newHeight = newRectSize->bottom - newRectSize->top; - - SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, - newHeight, SWP_NOZORDER | SWP_NOACTIVATE); - - return 0; - } - case WM_SIZE: { - RECT rect = GetClientArea(); - if (child_content_ != nullptr) { - // Size and position the child window. - MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, - rect.bottom - rect.top, TRUE); - } - return 0; - } - - case WM_ACTIVATE: - if (child_content_ != nullptr) { - SetFocus(child_content_); - } - return 0; - - case WM_DWMCOLORIZATIONCOLORCHANGED: - UpdateTheme(hwnd); - return 0; - } - - return DefWindowProc(window_handle_, message, wparam, lparam); -} - -void Win32Window::Destroy() { - OnDestroy(); - - if (window_handle_) { - DestroyWindow(window_handle_); - window_handle_ = nullptr; - } - if (g_active_window_count == 0) { - WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); - } -} - -Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { - return reinterpret_cast( - GetWindowLongPtr(window, GWLP_USERDATA)); -} - -void Win32Window::SetChildContent(HWND content) { - child_content_ = content; - SetParent(content, window_handle_); - RECT frame = GetClientArea(); - - MoveWindow(content, frame.left, frame.top, frame.right - frame.left, - frame.bottom - frame.top, true); - - SetFocus(child_content_); -} - -RECT Win32Window::GetClientArea() { - RECT frame; - GetClientRect(window_handle_, &frame); - return frame; -} - -HWND Win32Window::GetHandle() { - return window_handle_; -} - -void Win32Window::SetQuitOnClose(bool quit_on_close) { - quit_on_close_ = quit_on_close; -} - -bool Win32Window::OnCreate() { - // No-op; provided for subclasses. - return true; -} - -void Win32Window::OnDestroy() { - // No-op; provided for subclasses. -} - -void Win32Window::UpdateTheme(HWND const window) { - DWORD light_mode; - DWORD light_mode_size = sizeof(light_mode); - LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, - kGetPreferredBrightnessRegValue, - RRF_RT_REG_DWORD, nullptr, &light_mode, - &light_mode_size); - - if (result == ERROR_SUCCESS) { - BOOL enable_dark_mode = light_mode == 0; - DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, - &enable_dark_mode, sizeof(enable_dark_mode)); - } -} diff --git a/app/watt_wizard/windows/runner/win32_window.h b/app/watt_wizard/windows/runner/win32_window.h deleted file mode 100644 index e901dde..0000000 --- a/app/watt_wizard/windows/runner/win32_window.h +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef RUNNER_WIN32_WINDOW_H_ -#define RUNNER_WIN32_WINDOW_H_ - -#include - -#include -#include -#include - -// A class abstraction for a high DPI-aware Win32 Window. Intended to be -// inherited from by classes that wish to specialize with custom -// rendering and input handling -class Win32Window { - public: - struct Point { - unsigned int x; - unsigned int y; - Point(unsigned int x, unsigned int y) : x(x), y(y) {} - }; - - struct Size { - unsigned int width; - unsigned int height; - Size(unsigned int width, unsigned int height) - : width(width), height(height) {} - }; - - Win32Window(); - virtual ~Win32Window(); - - // Creates a win32 window with |title| that is positioned and sized using - // |origin| and |size|. New windows are created on the default monitor. Window - // sizes are specified to the OS in physical pixels, hence to ensure a - // consistent size this function will scale the inputted width and height as - // as appropriate for the default monitor. The window is invisible until - // |Show| is called. Returns true if the window was created successfully. - bool Create(const std::wstring& title, const Point& origin, const Size& size); - - // Show the current window. Returns true if the window was successfully shown. - bool Show(); - - // Release OS resources associated with window. - void Destroy(); - - // Inserts |content| into the window tree. - void SetChildContent(HWND content); - - // Returns the backing Window handle to enable clients to set icon and other - // window properties. Returns nullptr if the window has been destroyed. - HWND GetHandle(); - - // If true, closing this window will quit the application. - void SetQuitOnClose(bool quit_on_close); - - // Return a RECT representing the bounds of the current client area. - RECT GetClientArea(); - - protected: - // Processes and route salient window messages for mouse handling, - // size change and DPI. Delegates handling of these to member overloads that - // inheriting classes can handle. - virtual LRESULT MessageHandler(HWND window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Called when CreateAndShow is called, allowing subclass window-related - // setup. Subclasses should return false if setup fails. - virtual bool OnCreate(); - - // Called when Destroy is called. - virtual void OnDestroy(); - - private: - friend class WindowClassRegistrar; - - // OS callback called by message pump. Handles the WM_NCCREATE message which - // is passed when the non-client area is being created and enables automatic - // non-client DPI scaling so that the non-client area automatically - // responds to changes in DPI. All other messages are handled by - // MessageHandler. - static LRESULT CALLBACK WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Retrieves a class instance pointer for |window| - static Win32Window* GetThisFromHandle(HWND const window) noexcept; - - // Update the window frame's theme to match the system theme. - static void UpdateTheme(HWND const window); - - bool quit_on_close_ = false; - - // window handle for top level window. - HWND window_handle_ = nullptr; - - // window handle for hosted content. - HWND child_content_ = nullptr; -}; - -#endif // RUNNER_WIN32_WINDOW_H_ diff --git a/assets/index-25242b4c.css b/assets/index-25242b4c.css new file mode 100644 index 0000000..e02a37f --- /dev/null +++ b/assets/index-25242b4c.css @@ -0,0 +1 @@ +@keyframes blink{0%,to{color:transparent}50%{color:#000}}.cursor{font-weight:100;color:#fff;-webkit-animation-name:blink;-webkit-animation-duration:5s;-webkit-animation-iteration-count:infinite;-moz-animation-name:blink;-moz-animation-duration:5s;-moz-animation-iteration-count:infinite;animation-name:blink;animation-duration:5s;animation-iteration-count:infinite;animation-play-state:running}.type{color:#fff;font-size:50px;font-weight:100}.button-style{color:#fff}.subtitle{transition:all .5s ease-in-out}html,body{margin:0;padding:0} diff --git a/assets/index-9b8004fc.js b/assets/index-9b8004fc.js new file mode 100644 index 0000000..9a66631 --- /dev/null +++ b/assets/index-9b8004fc.js @@ -0,0 +1,3084 @@ +function m2(t,e){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();var g2=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function sf(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function y2(t){if(t.__esModule)return t;var e=t.default;if(typeof e=="function"){var n=function r(){return this instanceof r?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach(function(r){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}),n}var cT={exports:{}},of={},hT={exports:{}},me={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Wu=Symbol.for("react.element"),v2=Symbol.for("react.portal"),_2=Symbol.for("react.fragment"),w2=Symbol.for("react.strict_mode"),x2=Symbol.for("react.profiler"),b2=Symbol.for("react.provider"),E2=Symbol.for("react.context"),T2=Symbol.for("react.forward_ref"),S2=Symbol.for("react.suspense"),k2=Symbol.for("react.memo"),C2=Symbol.for("react.lazy"),bw=Symbol.iterator;function I2(t){return t===null||typeof t!="object"?null:(t=bw&&t[bw]||t["@@iterator"],typeof t=="function"?t:null)}var dT={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},fT=Object.assign,pT={};function ja(t,e,n){this.props=t,this.context=e,this.refs=pT,this.updater=n||dT}ja.prototype.isReactComponent={};ja.prototype.setState=function(t,e){if(typeof t!="object"&&typeof t!="function"&&t!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,t,e,"setState")};ja.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function mT(){}mT.prototype=ja.prototype;function uv(t,e,n){this.props=t,this.context=e,this.refs=pT,this.updater=n||dT}var cv=uv.prototype=new mT;cv.constructor=uv;fT(cv,ja.prototype);cv.isPureReactComponent=!0;var Ew=Array.isArray,gT=Object.prototype.hasOwnProperty,hv={current:null},yT={key:!0,ref:!0,__self:!0,__source:!0};function vT(t,e,n){var r,i={},s=null,o=null;if(e!=null)for(r in e.ref!==void 0&&(o=e.ref),e.key!==void 0&&(s=""+e.key),e)gT.call(e,r)&&!yT.hasOwnProperty(r)&&(i[r]=e[r]);var a=arguments.length-2;if(a===1)i.children=n;else if(1>>1,q=O[Q];if(0>>1;Qi(ve,L))Wi(re,ve)?(O[Q]=re,O[W]=L,Q=W):(O[Q]=ve,O[R]=L,Q=R);else if(Wi(re,L))O[Q]=re,O[W]=L,Q=W;else break e}}return N}function i(O,N){var L=O.sortIndex-N.sortIndex;return L!==0?L:O.id-N.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;t.unstable_now=function(){return s.now()}}else{var o=Date,a=o.now();t.unstable_now=function(){return o.now()-a}}var l=[],u=[],c=1,h=null,d=3,f=!1,p=!1,m=!1,w=typeof setTimeout=="function"?setTimeout:null,g=typeof clearTimeout=="function"?clearTimeout:null,y=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function v(O){for(var N=n(u);N!==null;){if(N.callback===null)r(u);else if(N.startTime<=O)r(u),N.sortIndex=N.expirationTime,e(l,N);else break;N=n(u)}}function _(O){if(m=!1,v(O),!p)if(n(l)!==null)p=!0,F(x);else{var N=n(u);N!==null&&K(_,N.startTime-O)}}function x(O,N){p=!1,m&&(m=!1,g(C),C=-1),f=!0;var L=d;try{for(v(N),h=n(l);h!==null&&(!(h.expirationTime>N)||O&&!P());){var Q=h.callback;if(typeof Q=="function"){h.callback=null,d=h.priorityLevel;var q=Q(h.expirationTime<=N);N=t.unstable_now(),typeof q=="function"?h.callback=q:h===n(l)&&r(l),v(N)}else r(l);h=n(l)}if(h!==null)var Se=!0;else{var R=n(u);R!==null&&K(_,R.startTime-N),Se=!1}return Se}finally{h=null,d=L,f=!1}}var b=!1,E=null,C=-1,A=5,S=-1;function P(){return!(t.unstable_now()-SO||125Q?(O.sortIndex=L,e(u,O),n(l)===null&&O===n(u)&&(m?(g(C),C=-1):m=!0,K(_,L-Q))):(O.sortIndex=q,e(l,O),p||f||(p=!0,F(x))),O},t.unstable_shouldYield=P,t.unstable_wrapCallback=function(O){var N=d;return function(){var L=d;d=N;try{return O.apply(this,arguments)}finally{d=L}}}})(bT);xT.exports=bT;var V2=xT.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ET=T,kn=V2;function H(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),dg=Object.prototype.hasOwnProperty,z2=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Sw={},kw={};function U2(t){return dg.call(kw,t)?!0:dg.call(Sw,t)?!1:z2.test(t)?kw[t]=!0:(Sw[t]=!0,!1)}function j2(t,e,n,r){if(n!==null&&n.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(t=t.toLowerCase().slice(0,5),t!=="data-"&&t!=="aria-");default:return!1}}function B2(t,e,n,r){if(e===null||typeof e>"u"||j2(t,e,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function en(t,e,n,r,i,s,o){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=t,this.type=e,this.sanitizeURL=s,this.removeEmptyString=o}var Mt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){Mt[t]=new en(t,0,!1,t,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var e=t[0];Mt[e]=new en(e,1,!1,t[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(t){Mt[t]=new en(t,2,!1,t.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){Mt[t]=new en(t,2,!1,t,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(t){Mt[t]=new en(t,3,!1,t.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(t){Mt[t]=new en(t,3,!0,t,null,!1,!1)});["capture","download"].forEach(function(t){Mt[t]=new en(t,4,!1,t,null,!1,!1)});["cols","rows","size","span"].forEach(function(t){Mt[t]=new en(t,6,!1,t,null,!1,!1)});["rowSpan","start"].forEach(function(t){Mt[t]=new en(t,5,!1,t.toLowerCase(),null,!1,!1)});var fv=/[\-:]([a-z])/g;function pv(t){return t[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(t){var e=t.replace(fv,pv);Mt[e]=new en(e,1,!1,t,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(t){var e=t.replace(fv,pv);Mt[e]=new en(e,1,!1,t,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(t){var e=t.replace(fv,pv);Mt[e]=new en(e,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(t){Mt[t]=new en(t,1,!1,t.toLowerCase(),null,!1,!1)});Mt.xlinkHref=new en("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(t){Mt[t]=new en(t,1,!1,t.toLowerCase(),null,!0,!0)});function mv(t,e,n,r){var i=Mt.hasOwnProperty(e)?Mt[e]:null;(i!==null?i.type!==0:r||!(2a||i[o]!==s[a]){var l=` +`+i[o].replace(" at new "," at ");return t.displayName&&l.includes("")&&(l=l.replace("",t.displayName)),l}while(1<=o&&0<=a);break}}}finally{jp=!1,Error.prepareStackTrace=n}return(t=t?t.displayName||t.name:"")?_l(t):""}function H2(t){switch(t.tag){case 5:return _l(t.type);case 16:return _l("Lazy");case 13:return _l("Suspense");case 19:return _l("SuspenseList");case 0:case 2:case 15:return t=Bp(t.type,!1),t;case 11:return t=Bp(t.type.render,!1),t;case 1:return t=Bp(t.type,!0),t;default:return""}}function gg(t){if(t==null)return null;if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case Do:return"Fragment";case Oo:return"Portal";case fg:return"Profiler";case gv:return"StrictMode";case pg:return"Suspense";case mg:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case kT:return(t.displayName||"Context")+".Consumer";case ST:return(t._context.displayName||"Context")+".Provider";case yv:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case vv:return e=t.displayName||null,e!==null?e:gg(t.type)||"Memo";case Mi:e=t._payload,t=t._init;try{return gg(t(e))}catch{}}return null}function W2(t){var e=t.type;switch(t.tag){case 24:return"Cache";case 9:return(e.displayName||"Context")+".Consumer";case 10:return(e._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return t=e.render,t=t.displayName||t.name||"",e.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case 7:return"Fragment";case 5:return e;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return gg(e);case 8:return e===gv?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e}return null}function rs(t){switch(typeof t){case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function IT(t){var e=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function q2(t){var e=IT(t)?"checked":"value",n=Object.getOwnPropertyDescriptor(t.constructor.prototype,e),r=""+t[e];if(!t.hasOwnProperty(e)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,s=n.set;return Object.defineProperty(t,e,{configurable:!0,get:function(){return i.call(this)},set:function(o){r=""+o,s.call(this,o)}}),Object.defineProperty(t,e,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(o){r=""+o},stopTracking:function(){t._valueTracker=null,delete t[e]}}}}function Pc(t){t._valueTracker||(t._valueTracker=q2(t))}function PT(t){if(!t)return!1;var e=t._valueTracker;if(!e)return!0;var n=e.getValue(),r="";return t&&(r=IT(t)?t.checked?"true":"false":t.value),t=r,t!==n?(e.setValue(t),!0):!1}function zh(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function yg(t,e){var n=e.checked;return Ke({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??t._wrapperState.initialChecked})}function Iw(t,e){var n=e.defaultValue==null?"":e.defaultValue,r=e.checked!=null?e.checked:e.defaultChecked;n=rs(e.value!=null?e.value:n),t._wrapperState={initialChecked:r,initialValue:n,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function AT(t,e){e=e.checked,e!=null&&mv(t,"checked",e,!1)}function vg(t,e){AT(t,e);var n=rs(e.value),r=e.type;if(n!=null)r==="number"?(n===0&&t.value===""||t.value!=n)&&(t.value=""+n):t.value!==""+n&&(t.value=""+n);else if(r==="submit"||r==="reset"){t.removeAttribute("value");return}e.hasOwnProperty("value")?_g(t,e.type,n):e.hasOwnProperty("defaultValue")&&_g(t,e.type,rs(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(t.defaultChecked=!!e.defaultChecked)}function Pw(t,e,n){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var r=e.type;if(!(r!=="submit"&&r!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+t._wrapperState.initialValue,n||e===t.value||(t.value=e),t.defaultValue=e}n=t.name,n!==""&&(t.name=""),t.defaultChecked=!!t._wrapperState.initialChecked,n!==""&&(t.name=n)}function _g(t,e,n){(e!=="number"||zh(t.ownerDocument)!==t)&&(n==null?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+n&&(t.defaultValue=""+n))}var wl=Array.isArray;function Qo(t,e,n,r){if(t=t.options,e){e={};for(var i=0;i"+e.valueOf().toString()+"",e=Ac.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;e.firstChild;)t.appendChild(e.firstChild)}});function Xl(t,e){if(e){var n=t.firstChild;if(n&&n===t.lastChild&&n.nodeType===3){n.nodeValue=e;return}}t.textContent=e}var Pl={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},G2=["Webkit","ms","Moz","O"];Object.keys(Pl).forEach(function(t){G2.forEach(function(e){e=e+t.charAt(0).toUpperCase()+t.substring(1),Pl[e]=Pl[t]})});function DT(t,e,n){return e==null||typeof e=="boolean"||e===""?"":n||typeof e!="number"||e===0||Pl.hasOwnProperty(t)&&Pl[t]?(""+e).trim():e+"px"}function NT(t,e){t=t.style;for(var n in e)if(e.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=DT(n,e[n],r);n==="float"&&(n="cssFloat"),r?t.setProperty(n,i):t[n]=i}}var K2=Ke({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function bg(t,e){if(e){if(K2[t]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(H(137,t));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(H(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(H(61))}if(e.style!=null&&typeof e.style!="object")throw Error(H(62))}}function Eg(t,e){if(t.indexOf("-")===-1)return typeof e.is=="string";switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Tg=null;function _v(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var Sg=null,Yo=null,Xo=null;function Mw(t){if(t=Ku(t)){if(typeof Sg!="function")throw Error(H(280));var e=t.stateNode;e&&(e=hf(e),Sg(t.stateNode,t.type,e))}}function $T(t){Yo?Xo?Xo.push(t):Xo=[t]:Yo=t}function LT(){if(Yo){var t=Yo,e=Xo;if(Xo=Yo=null,Mw(t),e)for(t=0;t>>=0,t===0?32:31-(sM(t)/oM|0)|0}var Rc=64,Mc=4194304;function xl(t){switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return t&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return t}}function Hh(t,e){var n=t.pendingLanes;if(n===0)return 0;var r=0,i=t.suspendedLanes,s=t.pingedLanes,o=n&268435455;if(o!==0){var a=o&~i;a!==0?r=xl(a):(s&=o,s!==0&&(r=xl(s)))}else o=n&~i,o!==0?r=xl(o):s!==0&&(r=xl(s));if(r===0)return 0;if(e!==0&&e!==r&&!(e&i)&&(i=r&-r,s=e&-e,i>=s||i===16&&(s&4194240)!==0))return e;if(r&4&&(r|=n&16),e=t.entangledLanes,e!==0)for(t=t.entanglements,e&=r;0n;n++)e.push(t);return e}function qu(t,e,n){t.pendingLanes|=e,e!==536870912&&(t.suspendedLanes=0,t.pingedLanes=0),t=t.eventTimes,e=31-sr(e),t[e]=n}function cM(t,e){var n=t.pendingLanes&~e;t.pendingLanes=e,t.suspendedLanes=0,t.pingedLanes=0,t.expiredLanes&=e,t.mutableReadLanes&=e,t.entangledLanes&=e,e=t.entanglements;var r=t.eventTimes;for(t=t.expirationTimes;0=Rl),Uw=String.fromCharCode(32),jw=!1;function rS(t,e){switch(t){case"keyup":return FM.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function iS(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var No=!1;function zM(t,e){switch(t){case"compositionend":return iS(e);case"keypress":return e.which!==32?null:(jw=!0,Uw);case"textInput":return t=e.data,t===Uw&&jw?null:t;default:return null}}function UM(t,e){if(No)return t==="compositionend"||!Cv&&rS(t,e)?(t=tS(),fh=Tv=Vi=null,No=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:n,offset:e-t};t=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=qw(n)}}function lS(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?lS(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function uS(){for(var t=window,e=zh();e instanceof t.HTMLIFrameElement;){try{var n=typeof e.contentWindow.location.href=="string"}catch{n=!1}if(n)t=e.contentWindow;else break;e=zh(t.document)}return e}function Iv(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}function YM(t){var e=uS(),n=t.focusedElem,r=t.selectionRange;if(e!==n&&n&&n.ownerDocument&&lS(n.ownerDocument.documentElement,n)){if(r!==null&&Iv(n)){if(e=r.start,t=r.end,t===void 0&&(t=e),"selectionStart"in n)n.selectionStart=e,n.selectionEnd=Math.min(t,n.value.length);else if(t=(e=n.ownerDocument||document)&&e.defaultView||window,t.getSelection){t=t.getSelection();var i=n.textContent.length,s=Math.min(r.start,i);r=r.end===void 0?s:Math.min(r.end,i),!t.extend&&s>r&&(i=r,r=s,s=i),i=Gw(n,s);var o=Gw(n,r);i&&o&&(t.rangeCount!==1||t.anchorNode!==i.node||t.anchorOffset!==i.offset||t.focusNode!==o.node||t.focusOffset!==o.offset)&&(e=e.createRange(),e.setStart(i.node,i.offset),t.removeAllRanges(),s>r?(t.addRange(e),t.extend(o.node,o.offset)):(e.setEnd(o.node,o.offset),t.addRange(e)))}}for(e=[],t=n;t=t.parentNode;)t.nodeType===1&&e.push({element:t,left:t.scrollLeft,top:t.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,$o=null,Rg=null,Ol=null,Mg=!1;function Kw(t,e,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Mg||$o==null||$o!==zh(r)||(r=$o,"selectionStart"in r&&Iv(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Ol&&ru(Ol,r)||(Ol=r,r=Gh(Rg,"onSelect"),0Vo||(t.current=Fg[Vo],Fg[Vo]=null,Vo--)}function De(t,e){Vo++,Fg[Vo]=t.current,t.current=e}var is={},Wt=hs(is),ln=hs(!1),Bs=is;function ha(t,e){var n=t.type.contextTypes;if(!n)return is;var r=t.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===e)return r.__reactInternalMemoizedMaskedChildContext;var i={},s;for(s in n)i[s]=e[s];return r&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=e,t.__reactInternalMemoizedMaskedChildContext=i),i}function un(t){return t=t.childContextTypes,t!=null}function Qh(){Ve(ln),Ve(Wt)}function t1(t,e,n){if(Wt.current!==is)throw Error(H(168));De(Wt,e),De(ln,n)}function vS(t,e,n){var r=t.stateNode;if(e=e.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in e))throw Error(H(108,W2(t)||"Unknown",i));return Ke({},n,r)}function Yh(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||is,Bs=Wt.current,De(Wt,t),De(ln,ln.current),!0}function n1(t,e,n){var r=t.stateNode;if(!r)throw Error(H(169));n?(t=vS(t,e,Bs),r.__reactInternalMemoizedMergedChildContext=t,Ve(ln),Ve(Wt),De(Wt,t)):Ve(ln),De(ln,n)}var Gr=null,df=!1,rm=!1;function _S(t){Gr===null?Gr=[t]:Gr.push(t)}function lO(t){df=!0,_S(t)}function ds(){if(!rm&&Gr!==null){rm=!0;var t=0,e=Re;try{var n=Gr;for(Re=1;t>=o,i-=o,Yr=1<<32-sr(e)+i|n<C?(A=E,E=null):A=E.sibling;var S=d(g,E,v[C],_);if(S===null){E===null&&(E=A);break}t&&E&&S.alternate===null&&e(g,E),y=s(S,y,C),b===null?x=S:b.sibling=S,b=S,E=A}if(C===v.length)return n(g,E),He&&_s(g,C),x;if(E===null){for(;CC?(A=E,E=null):A=E.sibling;var P=d(g,E,S.value,_);if(P===null){E===null&&(E=A);break}t&&E&&P.alternate===null&&e(g,E),y=s(P,y,C),b===null?x=P:b.sibling=P,b=P,E=A}if(S.done)return n(g,E),He&&_s(g,C),x;if(E===null){for(;!S.done;C++,S=v.next())S=h(g,S.value,_),S!==null&&(y=s(S,y,C),b===null?x=S:b.sibling=S,b=S);return He&&_s(g,C),x}for(E=r(g,E);!S.done;C++,S=v.next())S=f(E,g,C,S.value,_),S!==null&&(t&&S.alternate!==null&&E.delete(S.key===null?C:S.key),y=s(S,y,C),b===null?x=S:b.sibling=S,b=S);return t&&E.forEach(function(M){return e(g,M)}),He&&_s(g,C),x}function w(g,y,v,_){if(typeof v=="object"&&v!==null&&v.type===Do&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Ic:e:{for(var x=v.key,b=y;b!==null;){if(b.key===x){if(x=v.type,x===Do){if(b.tag===7){n(g,b.sibling),y=i(b,v.props.children),y.return=g,g=y;break e}}else if(b.elementType===x||typeof x=="object"&&x!==null&&x.$$typeof===Mi&&u1(x)===b.type){n(g,b.sibling),y=i(b,v.props),y.ref=ol(g,b,v),y.return=g,g=y;break e}n(g,b);break}else e(g,b);b=b.sibling}v.type===Do?(y=Ls(v.props.children,g.mode,_,v.key),y.return=g,g=y):(_=xh(v.type,v.key,v.props,null,g.mode,_),_.ref=ol(g,y,v),_.return=g,g=_)}return o(g);case Oo:e:{for(b=v.key;y!==null;){if(y.key===b)if(y.tag===4&&y.stateNode.containerInfo===v.containerInfo&&y.stateNode.implementation===v.implementation){n(g,y.sibling),y=i(y,v.children||[]),y.return=g,g=y;break e}else{n(g,y);break}else e(g,y);y=y.sibling}y=hm(v,g.mode,_),y.return=g,g=y}return o(g);case Mi:return b=v._init,w(g,y,b(v._payload),_)}if(wl(v))return p(g,y,v,_);if(tl(v))return m(g,y,v,_);Vc(g,v)}return typeof v=="string"&&v!==""||typeof v=="number"?(v=""+v,y!==null&&y.tag===6?(n(g,y.sibling),y=i(y,v),y.return=g,g=y):(n(g,y),y=cm(v,g.mode,_),y.return=g,g=y),o(g)):n(g,y)}return w}var fa=CS(!0),IS=CS(!1),Qu={},Mr=hs(Qu),au=hs(Qu),lu=hs(Qu);function Cs(t){if(t===Qu)throw Error(H(174));return t}function Lv(t,e){switch(De(lu,e),De(au,t),De(Mr,Qu),t=e.nodeType,t){case 9:case 11:e=(e=e.documentElement)?e.namespaceURI:xg(null,"");break;default:t=t===8?e.parentNode:e,e=t.namespaceURI||null,t=t.tagName,e=xg(e,t)}Ve(Mr),De(Mr,e)}function pa(){Ve(Mr),Ve(au),Ve(lu)}function PS(t){Cs(lu.current);var e=Cs(Mr.current),n=xg(e,t.type);e!==n&&(De(au,t),De(Mr,n))}function Fv(t){au.current===t&&(Ve(Mr),Ve(au))}var qe=hs(0);function nd(t){for(var e=t;e!==null;){if(e.tag===13){var n=e.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return e}else if(e.tag===19&&e.memoizedProps.revealOrder!==void 0){if(e.flags&128)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break;for(;e.sibling===null;){if(e.return===null||e.return===t)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}var im=[];function Vv(){for(var t=0;tn?n:4,t(!0);var r=sm.transition;sm.transition={};try{t(!1),e()}finally{Re=n,sm.transition=r}}function WS(){return Gn().memoizedState}function dO(t,e,n){var r=Yi(t);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},qS(t))GS(e,n);else if(n=ES(t,e,n,r),n!==null){var i=Yt();or(n,t,r,i),KS(n,e,r)}}function fO(t,e,n){var r=Yi(t),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(qS(t))GS(e,i);else{var s=t.alternate;if(t.lanes===0&&(s===null||s.lanes===0)&&(s=e.lastRenderedReducer,s!==null))try{var o=e.lastRenderedState,a=s(o,n);if(i.hasEagerState=!0,i.eagerState=a,dr(a,o)){var l=e.interleaved;l===null?(i.next=i,Nv(e)):(i.next=l.next,l.next=i),e.interleaved=i;return}}catch{}finally{}n=ES(t,e,i,r),n!==null&&(i=Yt(),or(n,t,r,i),KS(n,e,r))}}function qS(t){var e=t.alternate;return t===Ge||e!==null&&e===Ge}function GS(t,e){Dl=rd=!0;var n=t.pending;n===null?e.next=e:(e.next=n.next,n.next=e),t.pending=e}function KS(t,e,n){if(n&4194240){var r=e.lanes;r&=t.pendingLanes,n|=r,e.lanes=n,xv(t,n)}}var id={readContext:qn,useCallback:Dt,useContext:Dt,useEffect:Dt,useImperativeHandle:Dt,useInsertionEffect:Dt,useLayoutEffect:Dt,useMemo:Dt,useReducer:Dt,useRef:Dt,useState:Dt,useDebugValue:Dt,useDeferredValue:Dt,useTransition:Dt,useMutableSource:Dt,useSyncExternalStore:Dt,useId:Dt,unstable_isNewReconciler:!1},pO={readContext:qn,useCallback:function(t,e){return br().memoizedState=[t,e===void 0?null:e],t},useContext:qn,useEffect:h1,useImperativeHandle:function(t,e,n){return n=n!=null?n.concat([t]):null,yh(4194308,4,zS.bind(null,e,t),n)},useLayoutEffect:function(t,e){return yh(4194308,4,t,e)},useInsertionEffect:function(t,e){return yh(4,2,t,e)},useMemo:function(t,e){var n=br();return e=e===void 0?null:e,t=t(),n.memoizedState=[t,e],t},useReducer:function(t,e,n){var r=br();return e=n!==void 0?n(e):e,r.memoizedState=r.baseState=e,t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:e},r.queue=t,t=t.dispatch=dO.bind(null,Ge,t),[r.memoizedState,t]},useRef:function(t){var e=br();return t={current:t},e.memoizedState=t},useState:c1,useDebugValue:Hv,useDeferredValue:function(t){return br().memoizedState=t},useTransition:function(){var t=c1(!1),e=t[0];return t=hO.bind(null,t[1]),br().memoizedState=t,[e,t]},useMutableSource:function(){},useSyncExternalStore:function(t,e,n){var r=Ge,i=br();if(He){if(n===void 0)throw Error(H(407));n=n()}else{if(n=e(),yt===null)throw Error(H(349));Ws&30||MS(r,e,n)}i.memoizedState=n;var s={value:n,getSnapshot:e};return i.queue=s,h1(DS.bind(null,r,s,t),[t]),r.flags|=2048,hu(9,OS.bind(null,r,s,n,e),void 0,null),n},useId:function(){var t=br(),e=yt.identifierPrefix;if(He){var n=Xr,r=Yr;n=(r&~(1<<32-sr(r)-1)).toString(32)+n,e=":"+e+"R"+n,n=uu++,0<\/script>",t=t.removeChild(t.firstChild)):typeof r.is=="string"?t=o.createElement(n,{is:r.is}):(t=o.createElement(n),n==="select"&&(o=t,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):t=o.createElementNS(t,n),t[Sr]=e,t[ou]=r,rk(t,e,!1,!1),e.stateNode=t;e:{switch(o=Eg(n,r),n){case"dialog":Ne("cancel",t),Ne("close",t),i=r;break;case"iframe":case"object":case"embed":Ne("load",t),i=r;break;case"video":case"audio":for(i=0;iga&&(e.flags|=128,r=!0,al(s,!1),e.lanes=4194304)}else{if(!r)if(t=nd(o),t!==null){if(e.flags|=128,r=!0,n=t.updateQueue,n!==null&&(e.updateQueue=n,e.flags|=4),al(s,!0),s.tail===null&&s.tailMode==="hidden"&&!o.alternate&&!He)return Nt(e),null}else 2*et()-s.renderingStartTime>ga&&n!==1073741824&&(e.flags|=128,r=!0,al(s,!1),e.lanes=4194304);s.isBackwards?(o.sibling=e.child,e.child=o):(n=s.last,n!==null?n.sibling=o:e.child=o,s.last=o)}return s.tail!==null?(e=s.tail,s.rendering=e,s.tail=e.sibling,s.renderingStartTime=et(),e.sibling=null,n=qe.current,De(qe,r?n&1|2:n&1),e):(Nt(e),null);case 22:case 23:return Yv(),r=e.memoizedState!==null,t!==null&&t.memoizedState!==null!==r&&(e.flags|=8192),r&&e.mode&1?vn&1073741824&&(Nt(e),e.subtreeFlags&6&&(e.flags|=8192)):Nt(e),null;case 24:return null;case 25:return null}throw Error(H(156,e.tag))}function bO(t,e){switch(Av(e),e.tag){case 1:return un(e.type)&&Qh(),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return pa(),Ve(ln),Ve(Wt),Vv(),t=e.flags,t&65536&&!(t&128)?(e.flags=t&-65537|128,e):null;case 5:return Fv(e),null;case 13:if(Ve(qe),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(H(340));da()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return Ve(qe),null;case 4:return pa(),null;case 10:return Dv(e.type._context),null;case 22:case 23:return Yv(),null;case 24:return null;default:return null}}var Uc=!1,Vt=!1,EO=typeof WeakSet=="function"?WeakSet:Set,X=null;function Bo(t,e){var n=t.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Je(t,e,r)}else n.current=null}function Yg(t,e,n){try{n()}catch(r){Je(t,e,r)}}var w1=!1;function TO(t,e){if(Og=Wh,t=uS(),Iv(t)){if("selectionStart"in t)var n={start:t.selectionStart,end:t.selectionEnd};else e:{n=(n=t.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,s=r.focusNode;r=r.focusOffset;try{n.nodeType,s.nodeType}catch{n=null;break e}var o=0,a=-1,l=-1,u=0,c=0,h=t,d=null;t:for(;;){for(var f;h!==n||i!==0&&h.nodeType!==3||(a=o+i),h!==s||r!==0&&h.nodeType!==3||(l=o+r),h.nodeType===3&&(o+=h.nodeValue.length),(f=h.firstChild)!==null;)d=h,h=f;for(;;){if(h===t)break t;if(d===n&&++u===i&&(a=o),d===s&&++c===r&&(l=o),(f=h.nextSibling)!==null)break;h=d,d=h.parentNode}h=f}n=a===-1||l===-1?null:{start:a,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;for(Dg={focusedElem:t,selectionRange:n},Wh=!1,X=e;X!==null;)if(e=X,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,X=t;else for(;X!==null;){e=X;try{var p=e.alternate;if(e.flags&1024)switch(e.tag){case 0:case 11:case 15:break;case 1:if(p!==null){var m=p.memoizedProps,w=p.memoizedState,g=e.stateNode,y=g.getSnapshotBeforeUpdate(e.elementType===e.type?m:er(e.type,m),w);g.__reactInternalSnapshotBeforeUpdate=y}break;case 3:var v=e.stateNode.containerInfo;v.nodeType===1?v.textContent="":v.nodeType===9&&v.documentElement&&v.removeChild(v.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(H(163))}}catch(_){Je(e,e.return,_)}if(t=e.sibling,t!==null){t.return=e.return,X=t;break}X=e.return}return p=w1,w1=!1,p}function Nl(t,e,n){var r=e.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&t)===t){var s=i.destroy;i.destroy=void 0,s!==void 0&&Yg(e,n,s)}i=i.next}while(i!==r)}}function mf(t,e){if(e=e.updateQueue,e=e!==null?e.lastEffect:null,e!==null){var n=e=e.next;do{if((n.tag&t)===t){var r=n.create;n.destroy=r()}n=n.next}while(n!==e)}}function Xg(t){var e=t.ref;if(e!==null){var n=t.stateNode;switch(t.tag){case 5:t=n;break;default:t=n}typeof e=="function"?e(t):e.current=t}}function ok(t){var e=t.alternate;e!==null&&(t.alternate=null,ok(e)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(e=t.stateNode,e!==null&&(delete e[Sr],delete e[ou],delete e[Lg],delete e[oO],delete e[aO])),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}function ak(t){return t.tag===5||t.tag===3||t.tag===4}function x1(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||ak(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Jg(t,e,n){var r=t.tag;if(r===5||r===6)t=t.stateNode,e?n.nodeType===8?n.parentNode.insertBefore(t,e):n.insertBefore(t,e):(n.nodeType===8?(e=n.parentNode,e.insertBefore(t,n)):(e=n,e.appendChild(t)),n=n._reactRootContainer,n!=null||e.onclick!==null||(e.onclick=Kh));else if(r!==4&&(t=t.child,t!==null))for(Jg(t,e,n),t=t.sibling;t!==null;)Jg(t,e,n),t=t.sibling}function Zg(t,e,n){var r=t.tag;if(r===5||r===6)t=t.stateNode,e?n.insertBefore(t,e):n.appendChild(t);else if(r!==4&&(t=t.child,t!==null))for(Zg(t,e,n),t=t.sibling;t!==null;)Zg(t,e,n),t=t.sibling}var Tt=null,tr=!1;function Pi(t,e,n){for(n=n.child;n!==null;)lk(t,e,n),n=n.sibling}function lk(t,e,n){if(Rr&&typeof Rr.onCommitFiberUnmount=="function")try{Rr.onCommitFiberUnmount(af,n)}catch{}switch(n.tag){case 5:Vt||Bo(n,e);case 6:var r=Tt,i=tr;Tt=null,Pi(t,e,n),Tt=r,tr=i,Tt!==null&&(tr?(t=Tt,n=n.stateNode,t.nodeType===8?t.parentNode.removeChild(n):t.removeChild(n)):Tt.removeChild(n.stateNode));break;case 18:Tt!==null&&(tr?(t=Tt,n=n.stateNode,t.nodeType===8?nm(t.parentNode,n):t.nodeType===1&&nm(t,n),tu(t)):nm(Tt,n.stateNode));break;case 4:r=Tt,i=tr,Tt=n.stateNode.containerInfo,tr=!0,Pi(t,e,n),Tt=r,tr=i;break;case 0:case 11:case 14:case 15:if(!Vt&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var s=i,o=s.destroy;s=s.tag,o!==void 0&&(s&2||s&4)&&Yg(n,e,o),i=i.next}while(i!==r)}Pi(t,e,n);break;case 1:if(!Vt&&(Bo(n,e),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){Je(n,e,a)}Pi(t,e,n);break;case 21:Pi(t,e,n);break;case 22:n.mode&1?(Vt=(r=Vt)||n.memoizedState!==null,Pi(t,e,n),Vt=r):Pi(t,e,n);break;default:Pi(t,e,n)}}function b1(t){var e=t.updateQueue;if(e!==null){t.updateQueue=null;var n=t.stateNode;n===null&&(n=t.stateNode=new EO),e.forEach(function(r){var i=OO.bind(null,t,r);n.has(r)||(n.add(r),r.then(i,i))})}}function Zn(t,e){var n=e.deletions;if(n!==null)for(var r=0;ri&&(i=o),r&=~s}if(r=i,r=et()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*kO(r/1960))-r,10t?16:t,zi===null)var r=!1;else{if(t=zi,zi=null,ad=0,we&6)throw Error(H(331));var i=we;for(we|=4,X=t.current;X!==null;){var s=X,o=s.child;if(X.flags&16){var a=s.deletions;if(a!==null){for(var l=0;let()-Kv?$s(t,0):Gv|=n),cn(t,e)}function gk(t,e){e===0&&(t.mode&1?(e=Mc,Mc<<=1,!(Mc&130023424)&&(Mc=4194304)):e=1);var n=Yt();t=hi(t,e),t!==null&&(qu(t,e,n),cn(t,n))}function MO(t){var e=t.memoizedState,n=0;e!==null&&(n=e.retryLane),gk(t,n)}function OO(t,e){var n=0;switch(t.tag){case 13:var r=t.stateNode,i=t.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=t.stateNode;break;default:throw Error(H(314))}r!==null&&r.delete(e),gk(t,n)}var yk;yk=function(t,e,n){if(t!==null)if(t.memoizedProps!==e.pendingProps||ln.current)sn=!0;else{if(!(t.lanes&n)&&!(e.flags&128))return sn=!1,wO(t,e,n);sn=!!(t.flags&131072)}else sn=!1,He&&e.flags&1048576&&wS(e,Jh,e.index);switch(e.lanes=0,e.tag){case 2:var r=e.type;vh(t,e),t=e.pendingProps;var i=ha(e,Wt.current);Zo(e,n),i=Uv(null,e,r,t,i,n);var s=jv();return e.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(e.tag=1,e.memoizedState=null,e.updateQueue=null,un(r)?(s=!0,Yh(e)):s=!1,e.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,$v(e),i.updater=ff,e.stateNode=i,i._reactInternals=e,Bg(e,r,t,n),e=qg(null,e,r,!0,s,n)):(e.tag=0,He&&s&&Pv(e),Kt(null,e,i,n),e=e.child),e;case 16:r=e.elementType;e:{switch(vh(t,e),t=e.pendingProps,i=r._init,r=i(r._payload),e.type=r,i=e.tag=NO(r),t=er(r,t),i){case 0:e=Wg(null,e,r,t,n);break e;case 1:e=y1(null,e,r,t,n);break e;case 11:e=m1(null,e,r,t,n);break e;case 14:e=g1(null,e,r,er(r.type,t),n);break e}throw Error(H(306,r,""))}return e;case 0:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:er(r,i),Wg(t,e,r,i,n);case 1:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:er(r,i),y1(t,e,r,i,n);case 3:e:{if(ek(e),t===null)throw Error(H(387));r=e.pendingProps,s=e.memoizedState,i=s.element,TS(t,e),td(e,r,null,n);var o=e.memoizedState;if(r=o.element,s.isDehydrated)if(s={element:r,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},e.updateQueue.baseState=s,e.memoizedState=s,e.flags&256){i=ma(Error(H(423)),e),e=v1(t,e,r,n,i);break e}else if(r!==i){i=ma(Error(H(424)),e),e=v1(t,e,r,n,i);break e}else for(xn=Gi(e.stateNode.containerInfo.firstChild),bn=e,He=!0,nr=null,n=IS(e,null,r,n),e.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(da(),r===i){e=di(t,e,n);break e}Kt(t,e,r,n)}e=e.child}return e;case 5:return PS(e),t===null&&zg(e),r=e.type,i=e.pendingProps,s=t!==null?t.memoizedProps:null,o=i.children,Ng(r,i)?o=null:s!==null&&Ng(r,s)&&(e.flags|=32),ZS(t,e),Kt(t,e,o,n),e.child;case 6:return t===null&&zg(e),null;case 13:return tk(t,e,n);case 4:return Lv(e,e.stateNode.containerInfo),r=e.pendingProps,t===null?e.child=fa(e,null,r,n):Kt(t,e,r,n),e.child;case 11:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:er(r,i),m1(t,e,r,i,n);case 7:return Kt(t,e,e.pendingProps,n),e.child;case 8:return Kt(t,e,e.pendingProps.children,n),e.child;case 12:return Kt(t,e,e.pendingProps.children,n),e.child;case 10:e:{if(r=e.type._context,i=e.pendingProps,s=e.memoizedProps,o=i.value,De(Zh,r._currentValue),r._currentValue=o,s!==null)if(dr(s.value,o)){if(s.children===i.children&&!ln.current){e=di(t,e,n);break e}}else for(s=e.child,s!==null&&(s.return=e);s!==null;){var a=s.dependencies;if(a!==null){o=s.child;for(var l=a.firstContext;l!==null;){if(l.context===r){if(s.tag===1){l=ii(-1,n&-n),l.tag=2;var u=s.updateQueue;if(u!==null){u=u.shared;var c=u.pending;c===null?l.next=l:(l.next=c.next,c.next=l),u.pending=l}}s.lanes|=n,l=s.alternate,l!==null&&(l.lanes|=n),Ug(s.return,n,e),a.lanes|=n;break}l=l.next}}else if(s.tag===10)o=s.type===e.type?null:s.child;else if(s.tag===18){if(o=s.return,o===null)throw Error(H(341));o.lanes|=n,a=o.alternate,a!==null&&(a.lanes|=n),Ug(o,n,e),o=s.sibling}else o=s.child;if(o!==null)o.return=s;else for(o=s;o!==null;){if(o===e){o=null;break}if(s=o.sibling,s!==null){s.return=o.return,o=s;break}o=o.return}s=o}Kt(t,e,i.children,n),e=e.child}return e;case 9:return i=e.type,r=e.pendingProps.children,Zo(e,n),i=qn(i),r=r(i),e.flags|=1,Kt(t,e,r,n),e.child;case 14:return r=e.type,i=er(r,e.pendingProps),i=er(r.type,i),g1(t,e,r,i,n);case 15:return XS(t,e,e.type,e.pendingProps,n);case 17:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:er(r,i),vh(t,e),e.tag=1,un(r)?(t=!0,Yh(e)):t=!1,Zo(e,n),kS(e,r,i),Bg(e,r,i,n),qg(null,e,r,!0,t,n);case 19:return nk(t,e,n);case 22:return JS(t,e,n)}throw Error(H(156,e.tag))};function vk(t,e){return HT(t,e)}function DO(t,e,n,r){this.tag=t,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=e,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function jn(t,e,n,r){return new DO(t,e,n,r)}function Jv(t){return t=t.prototype,!(!t||!t.isReactComponent)}function NO(t){if(typeof t=="function")return Jv(t)?1:0;if(t!=null){if(t=t.$$typeof,t===yv)return 11;if(t===vv)return 14}return 2}function Xi(t,e){var n=t.alternate;return n===null?(n=jn(t.tag,e,t.key,t.mode),n.elementType=t.elementType,n.type=t.type,n.stateNode=t.stateNode,n.alternate=t,t.alternate=n):(n.pendingProps=e,n.type=t.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=t.flags&14680064,n.childLanes=t.childLanes,n.lanes=t.lanes,n.child=t.child,n.memoizedProps=t.memoizedProps,n.memoizedState=t.memoizedState,n.updateQueue=t.updateQueue,e=t.dependencies,n.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},n.sibling=t.sibling,n.index=t.index,n.ref=t.ref,n}function xh(t,e,n,r,i,s){var o=2;if(r=t,typeof t=="function")Jv(t)&&(o=1);else if(typeof t=="string")o=5;else e:switch(t){case Do:return Ls(n.children,i,s,e);case gv:o=8,i|=8;break;case fg:return t=jn(12,n,e,i|2),t.elementType=fg,t.lanes=s,t;case pg:return t=jn(13,n,e,i),t.elementType=pg,t.lanes=s,t;case mg:return t=jn(19,n,e,i),t.elementType=mg,t.lanes=s,t;case CT:return yf(n,i,s,e);default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case ST:o=10;break e;case kT:o=9;break e;case yv:o=11;break e;case vv:o=14;break e;case Mi:o=16,r=null;break e}throw Error(H(130,t==null?t:typeof t,""))}return e=jn(o,n,e,i),e.elementType=t,e.type=r,e.lanes=s,e}function Ls(t,e,n,r){return t=jn(7,t,r,e),t.lanes=n,t}function yf(t,e,n,r){return t=jn(22,t,r,e),t.elementType=CT,t.lanes=n,t.stateNode={isHidden:!1},t}function cm(t,e,n){return t=jn(6,t,null,e),t.lanes=n,t}function hm(t,e,n){return e=jn(4,t.children!==null?t.children:[],t.key,e),e.lanes=n,e.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},e}function $O(t,e,n,r,i){this.tag=e,this.containerInfo=t,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Wp(0),this.expirationTimes=Wp(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Wp(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function Zv(t,e,n,r,i,s,o,a,l){return t=new $O(t,e,n,a,l),e===1?(e=1,s===!0&&(e|=8)):e=0,s=jn(3,null,null,e),t.current=s,s.stateNode=t,s.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},$v(s),t}function LO(t,e,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(bk)}catch(t){console.error(t)}}bk(),wT.exports=An;var r0=wT.exports;const Hc=sf(r0);var A1=r0;hg.createRoot=A1.createRoot,hg.hydrateRoot=A1.hydrateRoot;/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *//** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const Ek=function(t){const e=[];let n=0;for(let r=0;r>6|192,e[n++]=i&63|128):(i&64512)===55296&&r+1>18|240,e[n++]=i>>12&63|128,e[n++]=i>>6&63|128,e[n++]=i&63|128):(e[n++]=i>>12|224,e[n++]=i>>6&63|128,e[n++]=i&63|128)}return e},jO=function(t){const e=[];let n=0,r=0;for(;n191&&i<224){const s=t[n++];e[r++]=String.fromCharCode((i&31)<<6|s&63)}else if(i>239&&i<365){const s=t[n++],o=t[n++],a=t[n++],l=((i&7)<<18|(s&63)<<12|(o&63)<<6|a&63)-65536;e[r++]=String.fromCharCode(55296+(l>>10)),e[r++]=String.fromCharCode(56320+(l&1023))}else{const s=t[n++],o=t[n++];e[r++]=String.fromCharCode((i&15)<<12|(s&63)<<6|o&63)}}return e.join("")},Tk={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:typeof atob=="function",encodeByteArray(t,e){if(!Array.isArray(t))throw Error("encodeByteArray takes an array as a parameter");this.init_();const n=e?this.byteToCharMapWebSafe_:this.byteToCharMap_,r=[];for(let i=0;i>2,h=(s&3)<<4|a>>4;let d=(a&15)<<2|u>>6,f=u&63;l||(f=64,o||(d=64)),r.push(n[c],n[h],n[d],n[f])}return r.join("")},encodeString(t,e){return this.HAS_NATIVE_SUPPORT&&!e?btoa(t):this.encodeByteArray(Ek(t),e)},decodeString(t,e){return this.HAS_NATIVE_SUPPORT&&!e?atob(t):jO(this.decodeStringToByteArray(t,e))},decodeStringToByteArray(t,e){this.init_();const n=e?this.charToByteMapWebSafe_:this.charToByteMap_,r=[];for(let i=0;i>4;if(r.push(d),u!==64){const f=a<<4&240|u>>2;if(r.push(f),h!==64){const p=u<<6&192|h;r.push(p)}}}return r},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let t=0;t=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(t)]=t,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(t)]=t)}}};class BO extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}const HO=function(t){const e=Ek(t);return Tk.encodeByteArray(e,!0)},cd=function(t){return HO(t).replace(/\./g,"")},Sk=function(t){try{return Tk.decodeString(t,!0)}catch(e){console.error("base64Decode failed: ",e)}return null};/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function WO(){if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("Unable to locate global object.")}/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const qO=()=>WO().__FIREBASE_DEFAULTS__,GO=()=>{if(typeof process>"u"||typeof process.env>"u")return;const t={}.__FIREBASE_DEFAULTS__;if(t)return JSON.parse(t)},KO=()=>{if(typeof document>"u")return;let t;try{t=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch{return}const e=t&&Sk(t[1]);return e&&JSON.parse(e)},i0=()=>{try{return qO()||GO()||KO()}catch(t){console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${t}`);return}},kk=t=>{var e,n;return(n=(e=i0())===null||e===void 0?void 0:e.emulatorHosts)===null||n===void 0?void 0:n[t]},QO=t=>{const e=kk(t);if(!e)return;const n=e.lastIndexOf(":");if(n<=0||n+1===e.length)throw new Error(`Invalid host ${e} with no separate hostname and port!`);const r=parseInt(e.substring(n+1),10);return e[0]==="["?[e.substring(1,n-1),r]:[e.substring(0,n),r]},Ck=()=>{var t;return(t=i0())===null||t===void 0?void 0:t.config},Ik=t=>{var e;return(e=i0())===null||e===void 0?void 0:e[`_${t}`]};/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class YO{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise((e,n)=>{this.resolve=e,this.reject=n})}wrapCallback(e){return(n,r)=>{n?this.reject(n):this.resolve(r),typeof e=="function"&&(this.promise.catch(()=>{}),e.length===1?e(n):e(n,r))}}}/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function XO(t,e){if(t.uid)throw new Error('The "uid" field is no longer supported by mockUserToken. Please use "sub" instead for Firebase Auth User ID.');const n={alg:"none",type:"JWT"},r=e||"demo-project",i=t.iat||0,s=t.sub||t.user_id;if(!s)throw new Error("mockUserToken must contain 'sub' or 'user_id' field!");const o=Object.assign({iss:`https://securetoken.google.com/${r}`,aud:r,iat:i,exp:i+3600,auth_time:i,sub:s,user_id:s,firebase:{sign_in_provider:"custom",identities:{}}},t),a="";return[cd(JSON.stringify(n)),cd(JSON.stringify(o)),a].join(".")}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function qt(){return typeof navigator<"u"&&typeof navigator.userAgent=="string"?navigator.userAgent:""}function JO(){return typeof window<"u"&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(qt())}function ZO(){const t=typeof chrome=="object"?chrome.runtime:typeof browser=="object"?browser.runtime:void 0;return typeof t=="object"&&t.id!==void 0}function eD(){return typeof navigator=="object"&&navigator.product==="ReactNative"}function tD(){const t=qt();return t.indexOf("MSIE ")>=0||t.indexOf("Trident/")>=0}function nD(){try{return typeof indexedDB=="object"}catch{return!1}}function rD(){return new Promise((t,e)=>{try{let n=!0;const r="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(r);i.onsuccess=()=>{i.result.close(),n||self.indexedDB.deleteDatabase(r),t(!0)},i.onupgradeneeded=()=>{n=!1},i.onerror=()=>{var s;e(((s=i.error)===null||s===void 0?void 0:s.message)||"")}}catch(n){e(n)}})}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const iD="FirebaseError";class bi extends Error{constructor(e,n,r){super(n),this.code=e,this.customData=r,this.name=iD,Object.setPrototypeOf(this,bi.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,Yu.prototype.create)}}class Yu{constructor(e,n,r){this.service=e,this.serviceName=n,this.errors=r}create(e,...n){const r=n[0]||{},i=`${this.service}/${e}`,s=this.errors[e],o=s?sD(s,r):"Error",a=`${this.serviceName}: ${o} (${i}).`;return new bi(i,a,r)}}function sD(t,e){return t.replace(oD,(n,r)=>{const i=e[r];return i!=null?String(i):`<${r}?>`})}const oD=/\{\$([^}]+)}/g;function aD(t){for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e))return!1;return!0}function hd(t,e){if(t===e)return!0;const n=Object.keys(t),r=Object.keys(e);for(const i of n){if(!r.includes(i))return!1;const s=t[i],o=e[i];if(R1(s)&&R1(o)){if(!hd(s,o))return!1}else if(s!==o)return!1}for(const i of r)if(!n.includes(i))return!1;return!0}function R1(t){return t!==null&&typeof t=="object"}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function Xu(t){const e=[];for(const[n,r]of Object.entries(t))Array.isArray(r)?r.forEach(i=>{e.push(encodeURIComponent(n)+"="+encodeURIComponent(i))}):e.push(encodeURIComponent(n)+"="+encodeURIComponent(r));return e.length?"&"+e.join("&"):""}function lD(t,e){const n=new uD(t,e);return n.subscribe.bind(n)}class uD{constructor(e,n){this.observers=[],this.unsubscribes=[],this.observerCount=0,this.task=Promise.resolve(),this.finalized=!1,this.onNoObservers=n,this.task.then(()=>{e(this)}).catch(r=>{this.error(r)})}next(e){this.forEachObserver(n=>{n.next(e)})}error(e){this.forEachObserver(n=>{n.error(e)}),this.close(e)}complete(){this.forEachObserver(e=>{e.complete()}),this.close()}subscribe(e,n,r){let i;if(e===void 0&&n===void 0&&r===void 0)throw new Error("Missing Observer.");cD(e,["next","error","complete"])?i=e:i={next:e,error:n,complete:r},i.next===void 0&&(i.next=dm),i.error===void 0&&(i.error=dm),i.complete===void 0&&(i.complete=dm);const s=this.unsubscribeOne.bind(this,this.observers.length);return this.finalized&&this.task.then(()=>{try{this.finalError?i.error(this.finalError):i.complete()}catch{}}),this.observers.push(i),s}unsubscribeOne(e){this.observers===void 0||this.observers[e]===void 0||(delete this.observers[e],this.observerCount-=1,this.observerCount===0&&this.onNoObservers!==void 0&&this.onNoObservers(this))}forEachObserver(e){if(!this.finalized)for(let n=0;n{if(this.observers!==void 0&&this.observers[e]!==void 0)try{n(this.observers[e])}catch(r){typeof console<"u"&&console.error&&console.error(r)}})}close(e){this.finalized||(this.finalized=!0,e!==void 0&&(this.finalError=e),this.task.then(()=>{this.observers=void 0,this.onNoObservers=void 0}))}}function cD(t,e){if(typeof t!="object"||t===null)return!1;for(const n of e)if(n in t&&typeof t[n]=="function")return!0;return!1}function dm(){}/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function pn(t){return t&&t._delegate?t._delegate:t}class Ks{constructor(e,n,r){this.name=e,this.instanceFactory=n,this.type=r,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(e){return this.instantiationMode=e,this}setMultipleInstances(e){return this.multipleInstances=e,this}setServiceProps(e){return this.serviceProps=e,this}setInstanceCreatedCallback(e){return this.onInstanceCreated=e,this}}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const xs="[DEFAULT]";/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class hD{constructor(e,n){this.name=e,this.container=n,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(e){const n=this.normalizeInstanceIdentifier(e);if(!this.instancesDeferred.has(n)){const r=new YO;if(this.instancesDeferred.set(n,r),this.isInitialized(n)||this.shouldAutoInitialize())try{const i=this.getOrInitializeService({instanceIdentifier:n});i&&r.resolve(i)}catch{}}return this.instancesDeferred.get(n).promise}getImmediate(e){var n;const r=this.normalizeInstanceIdentifier(e==null?void 0:e.identifier),i=(n=e==null?void 0:e.optional)!==null&&n!==void 0?n:!1;if(this.isInitialized(r)||this.shouldAutoInitialize())try{return this.getOrInitializeService({instanceIdentifier:r})}catch(s){if(i)return null;throw s}else{if(i)return null;throw Error(`Service ${this.name} is not available`)}}getComponent(){return this.component}setComponent(e){if(e.name!==this.name)throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=e,!!this.shouldAutoInitialize()){if(fD(e))try{this.getOrInitializeService({instanceIdentifier:xs})}catch{}for(const[n,r]of this.instancesDeferred.entries()){const i=this.normalizeInstanceIdentifier(n);try{const s=this.getOrInitializeService({instanceIdentifier:i});r.resolve(s)}catch{}}}}clearInstance(e=xs){this.instancesDeferred.delete(e),this.instancesOptions.delete(e),this.instances.delete(e)}async delete(){const e=Array.from(this.instances.values());await Promise.all([...e.filter(n=>"INTERNAL"in n).map(n=>n.INTERNAL.delete()),...e.filter(n=>"_delete"in n).map(n=>n._delete())])}isComponentSet(){return this.component!=null}isInitialized(e=xs){return this.instances.has(e)}getOptions(e=xs){return this.instancesOptions.get(e)||{}}initialize(e={}){const{options:n={}}=e,r=this.normalizeInstanceIdentifier(e.instanceIdentifier);if(this.isInitialized(r))throw Error(`${this.name}(${r}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);const i=this.getOrInitializeService({instanceIdentifier:r,options:n});for(const[s,o]of this.instancesDeferred.entries()){const a=this.normalizeInstanceIdentifier(s);r===a&&o.resolve(i)}return i}onInit(e,n){var r;const i=this.normalizeInstanceIdentifier(n),s=(r=this.onInitCallbacks.get(i))!==null&&r!==void 0?r:new Set;s.add(e),this.onInitCallbacks.set(i,s);const o=this.instances.get(i);return o&&e(o,i),()=>{s.delete(e)}}invokeOnInitCallbacks(e,n){const r=this.onInitCallbacks.get(n);if(r)for(const i of r)try{i(e,n)}catch{}}getOrInitializeService({instanceIdentifier:e,options:n={}}){let r=this.instances.get(e);if(!r&&this.component&&(r=this.component.instanceFactory(this.container,{instanceIdentifier:dD(e),options:n}),this.instances.set(e,r),this.instancesOptions.set(e,n),this.invokeOnInitCallbacks(r,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,r)}catch{}return r||null}normalizeInstanceIdentifier(e=xs){return this.component?this.component.multipleInstances?e:xs:e}shouldAutoInitialize(){return!!this.component&&this.component.instantiationMode!=="EXPLICIT"}}function dD(t){return t===xs?void 0:t}function fD(t){return t.instantiationMode==="EAGER"}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class pD{constructor(e){this.name=e,this.providers=new Map}addComponent(e){const n=this.getProvider(e.name);if(n.isComponentSet())throw new Error(`Component ${e.name} has already been registered with ${this.name}`);n.setComponent(e)}addOrOverwriteComponent(e){this.getProvider(e.name).isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);const n=new hD(e,this);return this.providers.set(e,n),n}getProviders(){return Array.from(this.providers.values())}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */var ge;(function(t){t[t.DEBUG=0]="DEBUG",t[t.VERBOSE=1]="VERBOSE",t[t.INFO=2]="INFO",t[t.WARN=3]="WARN",t[t.ERROR=4]="ERROR",t[t.SILENT=5]="SILENT"})(ge||(ge={}));const mD={debug:ge.DEBUG,verbose:ge.VERBOSE,info:ge.INFO,warn:ge.WARN,error:ge.ERROR,silent:ge.SILENT},gD=ge.INFO,yD={[ge.DEBUG]:"log",[ge.VERBOSE]:"log",[ge.INFO]:"info",[ge.WARN]:"warn",[ge.ERROR]:"error"},vD=(t,e,...n)=>{if(ee.some(n=>t instanceof n);let M1,O1;function wD(){return M1||(M1=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function xD(){return O1||(O1=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const Pk=new WeakMap,iy=new WeakMap,Ak=new WeakMap,fm=new WeakMap,o0=new WeakMap;function bD(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",s),t.removeEventListener("error",o)},s=()=>{n(Ji(t.result)),i()},o=()=>{r(t.error),i()};t.addEventListener("success",s),t.addEventListener("error",o)});return e.then(n=>{n instanceof IDBCursor&&Pk.set(n,t)}).catch(()=>{}),o0.set(e,t),e}function ED(t){if(iy.has(t))return;const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("complete",s),t.removeEventListener("error",o),t.removeEventListener("abort",o)},s=()=>{n(),i()},o=()=>{r(t.error||new DOMException("AbortError","AbortError")),i()};t.addEventListener("complete",s),t.addEventListener("error",o),t.addEventListener("abort",o)});iy.set(t,e)}let sy={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return iy.get(t);if(e==="objectStoreNames")return t.objectStoreNames||Ak.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return Ji(t[e])},set(t,e,n){return t[e]=n,!0},has(t,e){return t instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in t}};function TD(t){sy=t(sy)}function SD(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(pm(this),e,...n);return Ak.set(r,e.sort?e.sort():[e]),Ji(r)}:xD().includes(t)?function(...e){return t.apply(pm(this),e),Ji(Pk.get(this))}:function(...e){return Ji(t.apply(pm(this),e))}}function kD(t){return typeof t=="function"?SD(t):(t instanceof IDBTransaction&&ED(t),_D(t,wD())?new Proxy(t,sy):t)}function Ji(t){if(t instanceof IDBRequest)return bD(t);if(fm.has(t))return fm.get(t);const e=kD(t);return e!==t&&(fm.set(t,e),o0.set(e,t)),e}const pm=t=>o0.get(t);function CD(t,e,{blocked:n,upgrade:r,blocking:i,terminated:s}={}){const o=indexedDB.open(t,e),a=Ji(o);return r&&o.addEventListener("upgradeneeded",l=>{r(Ji(o.result),l.oldVersion,l.newVersion,Ji(o.transaction),l)}),n&&o.addEventListener("blocked",l=>n(l.oldVersion,l.newVersion,l)),a.then(l=>{s&&l.addEventListener("close",()=>s()),i&&l.addEventListener("versionchange",u=>i(u.oldVersion,u.newVersion,u))}).catch(()=>{}),a}const ID=["get","getKey","getAll","getAllKeys","count"],PD=["put","add","delete","clear"],mm=new Map;function D1(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(mm.get(e))return mm.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=PD.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||ID.includes(n)))return;const s=async function(o,...a){const l=this.transaction(o,i?"readwrite":"readonly");let u=l.store;return r&&(u=u.index(a.shift())),(await Promise.all([u[n](...a),i&&l.done]))[0]};return mm.set(e,s),s}TD(t=>({...t,get:(e,n,r)=>D1(e,n)||t.get(e,n,r),has:(e,n)=>!!D1(e,n)||t.has(e,n)}));/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class AD{constructor(e){this.container=e}getPlatformInfoString(){return this.container.getProviders().map(n=>{if(RD(n)){const r=n.getImmediate();return`${r.library}/${r.version}`}else return null}).filter(n=>n).join(" ")}}function RD(t){const e=t.getComponent();return(e==null?void 0:e.type)==="VERSION"}const oy="@firebase/app",N1="0.9.20";/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const Qs=new s0("@firebase/app"),MD="@firebase/app-compat",OD="@firebase/analytics-compat",DD="@firebase/analytics",ND="@firebase/app-check-compat",$D="@firebase/app-check",LD="@firebase/auth",FD="@firebase/auth-compat",VD="@firebase/database",zD="@firebase/database-compat",UD="@firebase/functions",jD="@firebase/functions-compat",BD="@firebase/installations",HD="@firebase/installations-compat",WD="@firebase/messaging",qD="@firebase/messaging-compat",GD="@firebase/performance",KD="@firebase/performance-compat",QD="@firebase/remote-config",YD="@firebase/remote-config-compat",XD="@firebase/storage",JD="@firebase/storage-compat",ZD="@firebase/firestore",eN="@firebase/firestore-compat",tN="firebase",nN="10.5.0";/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const ay="[DEFAULT]",rN={[oy]:"fire-core",[MD]:"fire-core-compat",[DD]:"fire-analytics",[OD]:"fire-analytics-compat",[$D]:"fire-app-check",[ND]:"fire-app-check-compat",[LD]:"fire-auth",[FD]:"fire-auth-compat",[VD]:"fire-rtdb",[zD]:"fire-rtdb-compat",[UD]:"fire-fn",[jD]:"fire-fn-compat",[BD]:"fire-iid",[HD]:"fire-iid-compat",[WD]:"fire-fcm",[qD]:"fire-fcm-compat",[GD]:"fire-perf",[KD]:"fire-perf-compat",[QD]:"fire-rc",[YD]:"fire-rc-compat",[XD]:"fire-gcs",[JD]:"fire-gcs-compat",[ZD]:"fire-fst",[eN]:"fire-fst-compat","fire-js":"fire-js",[tN]:"fire-js-all"};/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const dd=new Map,ly=new Map;function iN(t,e){try{t.container.addComponent(e)}catch(n){Qs.debug(`Component ${e.name} failed to register with FirebaseApp ${t.name}`,n)}}function ya(t){const e=t.name;if(ly.has(e))return Qs.debug(`There were multiple attempts to register component ${e}.`),!1;ly.set(e,t);for(const n of dd.values())iN(n,t);return!0}function a0(t,e){const n=t.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),t.container.getProvider(e)}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const sN={"no-app":"No Firebase App '{$appName}' has been created - call initializeApp() first","bad-app-name":"Illegal App name: '{$appName}","duplicate-app":"Firebase App named '{$appName}' already exists with different options or config","app-deleted":"Firebase App named '{$appName}' already deleted","no-options":"Need to provide options, when not being deployed to hosting via source.","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance.","invalid-log-argument":"First argument to `onLog` must be null or a function.","idb-open":"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.","idb-get":"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.","idb-set":"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.","idb-delete":"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}."},Zi=new Yu("app","Firebase",sN);/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class oN{constructor(e,n,r){this._isDeleted=!1,this._options=Object.assign({},e),this._config=Object.assign({},n),this._name=n.name,this._automaticDataCollectionEnabled=n.automaticDataCollectionEnabled,this._container=r,this.container.addComponent(new Ks("app",()=>this,"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed(),this._automaticDataCollectionEnabled=e}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(e){this._isDeleted=e}checkDestroyed(){if(this.isDeleted)throw Zi.create("app-deleted",{appName:this._name})}}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const Wa=nN;function Rk(t,e={}){let n=t;typeof e!="object"&&(e={name:e});const r=Object.assign({name:ay,automaticDataCollectionEnabled:!1},e),i=r.name;if(typeof i!="string"||!i)throw Zi.create("bad-app-name",{appName:String(i)});if(n||(n=Ck()),!n)throw Zi.create("no-options");const s=dd.get(i);if(s){if(hd(n,s.options)&&hd(r,s.config))return s;throw Zi.create("duplicate-app",{appName:i})}const o=new pD(i);for(const l of ly.values())o.addComponent(l);const a=new oN(n,r,o);return dd.set(i,a),a}function Mk(t=ay){const e=dd.get(t);if(!e&&t===ay&&Ck())return Rk();if(!e)throw Zi.create("no-app",{appName:t});return e}function es(t,e,n){var r;let i=(r=rN[t])!==null&&r!==void 0?r:t;n&&(i+=`-${n}`);const s=i.match(/\s|\//),o=e.match(/\s|\//);if(s||o){const a=[`Unable to register library "${i}" with version "${e}":`];s&&a.push(`library name "${i}" contains illegal characters (whitespace or "/")`),s&&o&&a.push("and"),o&&a.push(`version name "${e}" contains illegal characters (whitespace or "/")`),Qs.warn(a.join(" "));return}ya(new Ks(`${i}-version`,()=>({library:i,version:e}),"VERSION"))}/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const aN="firebase-heartbeat-database",lN=1,fu="firebase-heartbeat-store";let gm=null;function Ok(){return gm||(gm=CD(aN,lN,{upgrade:(t,e)=>{switch(e){case 0:t.createObjectStore(fu)}}}).catch(t=>{throw Zi.create("idb-open",{originalErrorMessage:t.message})})),gm}async function uN(t){try{return await(await Ok()).transaction(fu).objectStore(fu).get(Dk(t))}catch(e){if(e instanceof bi)Qs.warn(e.message);else{const n=Zi.create("idb-get",{originalErrorMessage:e==null?void 0:e.message});Qs.warn(n.message)}}}async function $1(t,e){try{const r=(await Ok()).transaction(fu,"readwrite");await r.objectStore(fu).put(e,Dk(t)),await r.done}catch(n){if(n instanceof bi)Qs.warn(n.message);else{const r=Zi.create("idb-set",{originalErrorMessage:n==null?void 0:n.message});Qs.warn(r.message)}}}function Dk(t){return`${t.name}!${t.options.appId}`}/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const cN=1024,hN=30*24*60*60*1e3;class dN{constructor(e){this.container=e,this._heartbeatsCache=null;const n=this.container.getProvider("app").getImmediate();this._storage=new pN(n),this._heartbeatsCachePromise=this._storage.read().then(r=>(this._heartbeatsCache=r,r))}async triggerHeartbeat(){const n=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),r=L1();if(this._heartbeatsCache===null&&(this._heartbeatsCache=await this._heartbeatsCachePromise),!(this._heartbeatsCache.lastSentHeartbeatDate===r||this._heartbeatsCache.heartbeats.some(i=>i.date===r)))return this._heartbeatsCache.heartbeats.push({date:r,agent:n}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter(i=>{const s=new Date(i.date).valueOf();return Date.now()-s<=hN}),this._storage.overwrite(this._heartbeatsCache)}async getHeartbeatsHeader(){if(this._heartbeatsCache===null&&await this._heartbeatsCachePromise,this._heartbeatsCache===null||this._heartbeatsCache.heartbeats.length===0)return"";const e=L1(),{heartbeatsToSend:n,unsentEntries:r}=fN(this._heartbeatsCache.heartbeats),i=cd(JSON.stringify({version:2,heartbeats:n}));return this._heartbeatsCache.lastSentHeartbeatDate=e,r.length>0?(this._heartbeatsCache.heartbeats=r,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),i}}function L1(){return new Date().toISOString().substring(0,10)}function fN(t,e=cN){const n=[];let r=t.slice();for(const i of t){const s=n.find(o=>o.agent===i.agent);if(s){if(s.dates.push(i.date),F1(n)>e){s.dates.pop();break}}else if(n.push({agent:i.agent,dates:[i.date]}),F1(n)>e){n.pop();break}r=r.slice(1)}return{heartbeatsToSend:n,unsentEntries:r}}class pN{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return nD()?rD().then(()=>!0).catch(()=>!1):!1}async read(){return await this._canUseIndexedDBPromise?await uN(this.app)||{heartbeats:[]}:{heartbeats:[]}}async overwrite(e){var n;if(await this._canUseIndexedDBPromise){const i=await this.read();return $1(this.app,{lastSentHeartbeatDate:(n=e.lastSentHeartbeatDate)!==null&&n!==void 0?n:i.lastSentHeartbeatDate,heartbeats:e.heartbeats})}else return}async add(e){var n;if(await this._canUseIndexedDBPromise){const i=await this.read();return $1(this.app,{lastSentHeartbeatDate:(n=e.lastSentHeartbeatDate)!==null&&n!==void 0?n:i.lastSentHeartbeatDate,heartbeats:[...i.heartbeats,...e.heartbeats]})}else return}}function F1(t){return cd(JSON.stringify({version:2,heartbeats:t})).length}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function mN(t){ya(new Ks("platform-logger",e=>new AD(e),"PRIVATE")),ya(new Ks("heartbeat",e=>new dN(e),"PRIVATE")),es(oy,N1,t),es(oy,N1,"esm2017"),es("fire-js","")}mN("");function l0(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,r=Object.getOwnPropertySymbols(t);i"u")return null;const t=navigator;return t.languages&&t.languages[0]||t.language||null}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Ju{constructor(e,n){this.shortDelay=e,this.longDelay=n,fi(n>e,"Short delay should be less than long delay!"),this.isMobile=JO()||eD()}get(){return wN()?this.isMobile?this.longDelay:this.shortDelay:Math.min(5e3,this.shortDelay)}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function c0(t,e){fi(t.emulator,"Emulator should always be set here");const{url:n}=t.emulator;return e?`${n}${e.startsWith("/")?e.slice(1):e}`:n}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Fk{static initialize(e,n,r){this.fetchImpl=e,n&&(this.headersImpl=n),r&&(this.responseImpl=r)}static fetch(){if(this.fetchImpl)return this.fetchImpl;if(typeof self<"u"&&"fetch"in self)return self.fetch;Jr("Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static headers(){if(this.headersImpl)return this.headersImpl;if(typeof self<"u"&&"Headers"in self)return self.Headers;Jr("Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static response(){if(this.responseImpl)return this.responseImpl;if(typeof self<"u"&&"Response"in self)return self.Response;Jr("Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const bN={CREDENTIAL_MISMATCH:"custom-token-mismatch",MISSING_CUSTOM_TOKEN:"internal-error",INVALID_IDENTIFIER:"invalid-email",MISSING_CONTINUE_URI:"internal-error",INVALID_PASSWORD:"wrong-password",MISSING_PASSWORD:"missing-password",EMAIL_EXISTS:"email-already-in-use",PASSWORD_LOGIN_DISABLED:"operation-not-allowed",INVALID_IDP_RESPONSE:"invalid-credential",INVALID_PENDING_TOKEN:"invalid-credential",FEDERATED_USER_ID_ALREADY_LINKED:"credential-already-in-use",MISSING_REQ_TYPE:"internal-error",EMAIL_NOT_FOUND:"user-not-found",RESET_PASSWORD_EXCEED_LIMIT:"too-many-requests",EXPIRED_OOB_CODE:"expired-action-code",INVALID_OOB_CODE:"invalid-action-code",MISSING_OOB_CODE:"internal-error",CREDENTIAL_TOO_OLD_LOGIN_AGAIN:"requires-recent-login",INVALID_ID_TOKEN:"invalid-user-token",TOKEN_EXPIRED:"user-token-expired",USER_NOT_FOUND:"user-token-expired",TOO_MANY_ATTEMPTS_TRY_LATER:"too-many-requests",PASSWORD_DOES_NOT_MEET_REQUIREMENTS:"password-does-not-meet-requirements",INVALID_CODE:"invalid-verification-code",INVALID_SESSION_INFO:"invalid-verification-id",INVALID_TEMPORARY_PROOF:"invalid-credential",MISSING_SESSION_INFO:"missing-verification-id",SESSION_EXPIRED:"code-expired",MISSING_ANDROID_PACKAGE_NAME:"missing-android-pkg-name",UNAUTHORIZED_DOMAIN:"unauthorized-continue-uri",INVALID_OAUTH_CLIENT_ID:"invalid-oauth-client-id",ADMIN_ONLY_OPERATION:"admin-restricted-operation",INVALID_MFA_PENDING_CREDENTIAL:"invalid-multi-factor-session",MFA_ENROLLMENT_NOT_FOUND:"multi-factor-info-not-found",MISSING_MFA_ENROLLMENT_ID:"missing-multi-factor-info",MISSING_MFA_PENDING_CREDENTIAL:"missing-multi-factor-session",SECOND_FACTOR_EXISTS:"second-factor-already-in-use",SECOND_FACTOR_LIMIT_EXCEEDED:"maximum-second-factor-count-exceeded",BLOCKING_FUNCTION_ERROR_RESPONSE:"internal-error",RECAPTCHA_NOT_ENABLED:"recaptcha-not-enabled",MISSING_RECAPTCHA_TOKEN:"missing-recaptcha-token",INVALID_RECAPTCHA_TOKEN:"invalid-recaptcha-token",INVALID_RECAPTCHA_ACTION:"invalid-recaptcha-action",MISSING_CLIENT_TYPE:"missing-client-type",MISSING_RECAPTCHA_VERSION:"missing-recaptcha-version",INVALID_RECAPTCHA_VERSION:"invalid-recaptcha-version",INVALID_REQ_TYPE:"invalid-req-type"};/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const EN=new Ju(3e4,6e4);function Vk(t,e){return t.tenantId&&!e.tenantId?Object.assign(Object.assign({},e),{tenantId:t.tenantId}):e}async function Zu(t,e,n,r,i={}){return zk(t,i,async()=>{let s={},o={};r&&(e==="GET"?o=r:s={body:JSON.stringify(r)});const a=Xu(Object.assign({key:t.config.apiKey},o)).slice(1),l=await t._getAdditionalHeaders();return l["Content-Type"]="application/json",t.languageCode&&(l["X-Firebase-Locale"]=t.languageCode),Fk.fetch()(Uk(t,t.config.apiHost,n,a),Object.assign({method:e,headers:l,referrerPolicy:"no-referrer"},s))})}async function zk(t,e,n){t._canInitEmulator=!1;const r=Object.assign(Object.assign({},bN),e);try{const i=new SN(t),s=await Promise.race([n(),i.promise]);i.clearNetworkTimeout();const o=await s.json();if("needConfirmation"in o)throw Wc(t,"account-exists-with-different-credential",o);if(s.ok&&!("errorMessage"in o))return o;{const a=s.ok?o.errorMessage:o.error.message,[l,u]=a.split(" : ");if(l==="FEDERATED_USER_ID_ALREADY_LINKED")throw Wc(t,"credential-already-in-use",o);if(l==="EMAIL_EXISTS")throw Wc(t,"email-already-in-use",o);if(l==="USER_DISABLED")throw Wc(t,"user-disabled",o);const c=r[l]||l.toLowerCase().replace(/[_\s]+/g,"-");if(u)throw Lk(t,c,u);zr(t,c)}}catch(i){if(i instanceof bi)throw i;zr(t,"network-request-failed",{message:String(i)})}}async function TN(t,e,n,r,i={}){const s=await Zu(t,e,n,r,i);return"mfaPendingCredential"in s&&zr(t,"multi-factor-auth-required",{_serverResponse:s}),s}function Uk(t,e,n,r){const i=`${e}${n}?${r}`;return t.config.emulator?c0(t.config,i):`${t.config.apiScheme}://${i}`}class SN{constructor(e){this.auth=e,this.timer=null,this.promise=new Promise((n,r)=>{this.timer=setTimeout(()=>r(Or(this.auth,"network-request-failed")),EN.get())})}clearNetworkTimeout(){clearTimeout(this.timer)}}function Wc(t,e,n){const r={appName:t.name};n.email&&(r.email=n.email),n.phoneNumber&&(r.phoneNumber=n.phoneNumber);const i=Or(t,e,r);return i.customData._tokenResponse=n,i}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function kN(t,e){return Zu(t,"POST","/v1/accounts:delete",e)}async function CN(t,e){return Zu(t,"POST","/v1/accounts:lookup",e)}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function Fl(t){if(t)try{const e=new Date(Number(t));if(!isNaN(e.getTime()))return e.toUTCString()}catch{}}async function IN(t,e=!1){const n=pn(t),r=await n.getIdToken(e),i=h0(r);le(i&&i.exp&&i.auth_time&&i.iat,n.auth,"internal-error");const s=typeof i.firebase=="object"?i.firebase:void 0,o=s==null?void 0:s.sign_in_provider;return{claims:i,token:r,authTime:Fl(ym(i.auth_time)),issuedAtTime:Fl(ym(i.iat)),expirationTime:Fl(ym(i.exp)),signInProvider:o||null,signInSecondFactor:(s==null?void 0:s.sign_in_second_factor)||null}}function ym(t){return Number(t)*1e3}function h0(t){const[e,n,r]=t.split(".");if(e===void 0||n===void 0||r===void 0)return bh("JWT malformed, contained fewer than 3 sections"),null;try{const i=Sk(n);return i?JSON.parse(i):(bh("Failed to decode base64 JWT payload"),null)}catch(i){return bh("Caught error parsing JWT payload as JSON",i==null?void 0:i.toString()),null}}function PN(t){const e=h0(t);return le(e,"internal-error"),le(typeof e.exp<"u","internal-error"),le(typeof e.iat<"u","internal-error"),Number(e.exp)-Number(e.iat)}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function pu(t,e,n=!1){if(n)return e;try{return await e}catch(r){throw r instanceof bi&&AN(r)&&t.auth.currentUser===t&&await t.auth.signOut(),r}}function AN({code:t}){return t==="auth/user-disabled"||t==="auth/user-token-expired"}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class RN{constructor(e){this.user=e,this.isRunning=!1,this.timerId=null,this.errorBackoff=3e4}_start(){this.isRunning||(this.isRunning=!0,this.schedule())}_stop(){this.isRunning&&(this.isRunning=!1,this.timerId!==null&&clearTimeout(this.timerId))}getInterval(e){var n;if(e){const r=this.errorBackoff;return this.errorBackoff=Math.min(this.errorBackoff*2,96e4),r}else{this.errorBackoff=3e4;const i=((n=this.user.stsTokenManager.expirationTime)!==null&&n!==void 0?n:0)-Date.now()-3e5;return Math.max(0,i)}}schedule(e=!1){if(!this.isRunning)return;const n=this.getInterval(e);this.timerId=setTimeout(async()=>{await this.iteration()},n)}async iteration(){try{await this.user.getIdToken(!0)}catch(e){(e==null?void 0:e.code)==="auth/network-request-failed"&&this.schedule(!0);return}this.schedule()}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class jk{constructor(e,n){this.createdAt=e,this.lastLoginAt=n,this._initializeTime()}_initializeTime(){this.lastSignInTime=Fl(this.lastLoginAt),this.creationTime=Fl(this.createdAt)}_copy(e){this.createdAt=e.createdAt,this.lastLoginAt=e.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function pd(t){var e;const n=t.auth,r=await t.getIdToken(),i=await pu(t,CN(n,{idToken:r}));le(i==null?void 0:i.users.length,n,"internal-error");const s=i.users[0];t._notifyReloadListener(s);const o=!((e=s.providerUserInfo)===null||e===void 0)&&e.length?DN(s.providerUserInfo):[],a=ON(t.providerData,o),l=t.isAnonymous,u=!(t.email&&s.passwordHash)&&!(a!=null&&a.length),c=l?u:!1,h={uid:s.localId,displayName:s.displayName||null,photoURL:s.photoUrl||null,email:s.email||null,emailVerified:s.emailVerified||!1,phoneNumber:s.phoneNumber||null,tenantId:s.tenantId||null,providerData:a,metadata:new jk(s.createdAt,s.lastLoginAt),isAnonymous:c};Object.assign(t,h)}async function MN(t){const e=pn(t);await pd(e),await e.auth._persistUserIfCurrent(e),e.auth._notifyListenersIfCurrent(e)}function ON(t,e){return[...t.filter(r=>!e.some(i=>i.providerId===r.providerId)),...e]}function DN(t){return t.map(e=>{var{providerId:n}=e,r=l0(e,["providerId"]);return{providerId:n,uid:r.rawId||"",displayName:r.displayName||null,email:r.email||null,phoneNumber:r.phoneNumber||null,photoURL:r.photoUrl||null}})}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function NN(t,e){const n=await zk(t,{},async()=>{const r=Xu({grant_type:"refresh_token",refresh_token:e}).slice(1),{tokenApiHost:i,apiKey:s}=t.config,o=Uk(t,i,"/v1/token",`key=${s}`),a=await t._getAdditionalHeaders();return a["Content-Type"]="application/x-www-form-urlencoded",Fk.fetch()(o,{method:"POST",headers:a,body:r})});return{accessToken:n.access_token,expiresIn:n.expires_in,refreshToken:n.refresh_token}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class mu{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){le(e.idToken,"internal-error"),le(typeof e.idToken<"u","internal-error"),le(typeof e.refreshToken<"u","internal-error");const n="expiresIn"in e&&typeof e.expiresIn<"u"?Number(e.expiresIn):PN(e.idToken);this.updateTokensAndExpiration(e.idToken,e.refreshToken,n)}async getToken(e,n=!1){return le(!this.accessToken||this.refreshToken,e,"user-token-expired"),!n&&this.accessToken&&!this.isExpired?this.accessToken:this.refreshToken?(await this.refresh(e,this.refreshToken),this.accessToken):null}clearRefreshToken(){this.refreshToken=null}async refresh(e,n){const{accessToken:r,refreshToken:i,expiresIn:s}=await NN(e,n);this.updateTokensAndExpiration(r,i,Number(s))}updateTokensAndExpiration(e,n,r){this.refreshToken=n||null,this.accessToken=e||null,this.expirationTime=Date.now()+r*1e3}static fromJSON(e,n){const{refreshToken:r,accessToken:i,expirationTime:s}=n,o=new mu;return r&&(le(typeof r=="string","internal-error",{appName:e}),o.refreshToken=r),i&&(le(typeof i=="string","internal-error",{appName:e}),o.accessToken=i),s&&(le(typeof s=="number","internal-error",{appName:e}),o.expirationTime=s),o}toJSON(){return{refreshToken:this.refreshToken,accessToken:this.accessToken,expirationTime:this.expirationTime}}_assign(e){this.accessToken=e.accessToken,this.refreshToken=e.refreshToken,this.expirationTime=e.expirationTime}_clone(){return Object.assign(new mu,this.toJSON())}_performRefresh(){return Jr("not implemented")}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function Ai(t,e){le(typeof t=="string"||typeof t>"u","internal-error",{appName:e})}class Fs{constructor(e){var{uid:n,auth:r,stsTokenManager:i}=e,s=l0(e,["uid","auth","stsTokenManager"]);this.providerId="firebase",this.proactiveRefresh=new RN(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=n,this.auth=r,this.stsTokenManager=i,this.accessToken=i.accessToken,this.displayName=s.displayName||null,this.email=s.email||null,this.emailVerified=s.emailVerified||!1,this.phoneNumber=s.phoneNumber||null,this.photoURL=s.photoURL||null,this.isAnonymous=s.isAnonymous||!1,this.tenantId=s.tenantId||null,this.providerData=s.providerData?[...s.providerData]:[],this.metadata=new jk(s.createdAt||void 0,s.lastLoginAt||void 0)}async getIdToken(e){const n=await pu(this,this.stsTokenManager.getToken(this.auth,e));return le(n,this.auth,"internal-error"),this.accessToken!==n&&(this.accessToken=n,await this.auth._persistUserIfCurrent(this),this.auth._notifyListenersIfCurrent(this)),n}getIdTokenResult(e){return IN(this,e)}reload(){return MN(this)}_assign(e){this!==e&&(le(this.uid===e.uid,this.auth,"internal-error"),this.displayName=e.displayName,this.photoURL=e.photoURL,this.email=e.email,this.emailVerified=e.emailVerified,this.phoneNumber=e.phoneNumber,this.isAnonymous=e.isAnonymous,this.tenantId=e.tenantId,this.providerData=e.providerData.map(n=>Object.assign({},n)),this.metadata._copy(e.metadata),this.stsTokenManager._assign(e.stsTokenManager))}_clone(e){const n=new Fs(Object.assign(Object.assign({},this),{auth:e,stsTokenManager:this.stsTokenManager._clone()}));return n.metadata._copy(this.metadata),n}_onReload(e){le(!this.reloadListener,this.auth,"internal-error"),this.reloadListener=e,this.reloadUserInfo&&(this._notifyReloadListener(this.reloadUserInfo),this.reloadUserInfo=null)}_notifyReloadListener(e){this.reloadListener?this.reloadListener(e):this.reloadUserInfo=e}_startProactiveRefresh(){this.proactiveRefresh._start()}_stopProactiveRefresh(){this.proactiveRefresh._stop()}async _updateTokensIfNecessary(e,n=!1){let r=!1;e.idToken&&e.idToken!==this.stsTokenManager.accessToken&&(this.stsTokenManager.updateFromServerResponse(e),r=!0),n&&await pd(this),await this.auth._persistUserIfCurrent(this),r&&this.auth._notifyListenersIfCurrent(this)}async delete(){const e=await this.getIdToken();return await pu(this,kN(this.auth,{idToken:e})),this.stsTokenManager.clearRefreshToken(),this.auth.signOut()}toJSON(){return Object.assign(Object.assign({uid:this.uid,email:this.email||void 0,emailVerified:this.emailVerified,displayName:this.displayName||void 0,isAnonymous:this.isAnonymous,photoURL:this.photoURL||void 0,phoneNumber:this.phoneNumber||void 0,tenantId:this.tenantId||void 0,providerData:this.providerData.map(e=>Object.assign({},e)),stsTokenManager:this.stsTokenManager.toJSON(),_redirectEventId:this._redirectEventId},this.metadata.toJSON()),{apiKey:this.auth.config.apiKey,appName:this.auth.name})}get refreshToken(){return this.stsTokenManager.refreshToken||""}static _fromJSON(e,n){var r,i,s,o,a,l,u,c;const h=(r=n.displayName)!==null&&r!==void 0?r:void 0,d=(i=n.email)!==null&&i!==void 0?i:void 0,f=(s=n.phoneNumber)!==null&&s!==void 0?s:void 0,p=(o=n.photoURL)!==null&&o!==void 0?o:void 0,m=(a=n.tenantId)!==null&&a!==void 0?a:void 0,w=(l=n._redirectEventId)!==null&&l!==void 0?l:void 0,g=(u=n.createdAt)!==null&&u!==void 0?u:void 0,y=(c=n.lastLoginAt)!==null&&c!==void 0?c:void 0,{uid:v,emailVerified:_,isAnonymous:x,providerData:b,stsTokenManager:E}=n;le(v&&E,e,"internal-error");const C=mu.fromJSON(this.name,E);le(typeof v=="string",e,"internal-error"),Ai(h,e.name),Ai(d,e.name),le(typeof _=="boolean",e,"internal-error"),le(typeof x=="boolean",e,"internal-error"),Ai(f,e.name),Ai(p,e.name),Ai(m,e.name),Ai(w,e.name),Ai(g,e.name),Ai(y,e.name);const A=new Fs({uid:v,auth:e,email:d,emailVerified:_,displayName:h,isAnonymous:x,photoURL:p,phoneNumber:f,tenantId:m,stsTokenManager:C,createdAt:g,lastLoginAt:y});return b&&Array.isArray(b)&&(A.providerData=b.map(S=>Object.assign({},S))),w&&(A._redirectEventId=w),A}static async _fromIdTokenResponse(e,n,r=!1){const i=new mu;i.updateFromServerResponse(n);const s=new Fs({uid:n.localId,auth:e,stsTokenManager:i,isAnonymous:r});return await pd(s),s}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const z1=new Map;function Zr(t){fi(t instanceof Function,"Expected a class definition");let e=z1.get(t);return e?(fi(e instanceof t,"Instance stored in cache mismatched with class"),e):(e=new t,z1.set(t,e),e)}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Bk{constructor(){this.type="NONE",this.storage={}}async _isAvailable(){return!0}async _set(e,n){this.storage[e]=n}async _get(e){const n=this.storage[e];return n===void 0?null:n}async _remove(e){delete this.storage[e]}_addListener(e,n){}_removeListener(e,n){}}Bk.type="NONE";const U1=Bk;/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function Eh(t,e,n){return`firebase:${t}:${e}:${n}`}class ta{constructor(e,n,r){this.persistence=e,this.auth=n,this.userKey=r;const{config:i,name:s}=this.auth;this.fullUserKey=Eh(this.userKey,i.apiKey,s),this.fullPersistenceKey=Eh("persistence",i.apiKey,s),this.boundEventHandler=n._onStorageEvent.bind(n),this.persistence._addListener(this.fullUserKey,this.boundEventHandler)}setCurrentUser(e){return this.persistence._set(this.fullUserKey,e.toJSON())}async getCurrentUser(){const e=await this.persistence._get(this.fullUserKey);return e?Fs._fromJSON(this.auth,e):null}removeCurrentUser(){return this.persistence._remove(this.fullUserKey)}savePersistenceForRedirect(){return this.persistence._set(this.fullPersistenceKey,this.persistence.type)}async setPersistence(e){if(this.persistence===e)return;const n=await this.getCurrentUser();if(await this.removeCurrentUser(),this.persistence=e,n)return this.setCurrentUser(n)}delete(){this.persistence._removeListener(this.fullUserKey,this.boundEventHandler)}static async create(e,n,r="authUser"){if(!n.length)return new ta(Zr(U1),e,r);const i=(await Promise.all(n.map(async u=>{if(await u._isAvailable())return u}))).filter(u=>u);let s=i[0]||Zr(U1);const o=Eh(r,e.config.apiKey,e.name);let a=null;for(const u of n)try{const c=await u._get(o);if(c){const h=Fs._fromJSON(e,c);u!==s&&(a=h),s=u;break}}catch{}const l=i.filter(u=>u._shouldAllowMigration);return!s._shouldAllowMigration||!l.length?new ta(s,e,r):(s=l[0],a&&await s._set(o,a.toJSON()),await Promise.all(n.map(async u=>{if(u!==s)try{await u._remove(o)}catch{}})),new ta(s,e,r))}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function j1(t){const e=t.toLowerCase();if(e.includes("opera/")||e.includes("opr/")||e.includes("opios/"))return"Opera";if(qk(e))return"IEMobile";if(e.includes("msie")||e.includes("trident/"))return"IE";if(e.includes("edge/"))return"Edge";if(Hk(e))return"Firefox";if(e.includes("silk/"))return"Silk";if(Kk(e))return"Blackberry";if(Qk(e))return"Webos";if(d0(e))return"Safari";if((e.includes("chrome/")||Wk(e))&&!e.includes("edge/"))return"Chrome";if(Gk(e))return"Android";{const n=/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/,r=t.match(n);if((r==null?void 0:r.length)===2)return r[1]}return"Other"}function Hk(t=qt()){return/firefox\//i.test(t)}function d0(t=qt()){const e=t.toLowerCase();return e.includes("safari/")&&!e.includes("chrome/")&&!e.includes("crios/")&&!e.includes("android")}function Wk(t=qt()){return/crios\//i.test(t)}function qk(t=qt()){return/iemobile/i.test(t)}function Gk(t=qt()){return/android/i.test(t)}function Kk(t=qt()){return/blackberry/i.test(t)}function Qk(t=qt()){return/webos/i.test(t)}function bf(t=qt()){return/iphone|ipad|ipod/i.test(t)||/macintosh/i.test(t)&&/mobile/i.test(t)}function $N(t=qt()){var e;return bf(t)&&!!(!((e=window.navigator)===null||e===void 0)&&e.standalone)}function LN(){return tD()&&document.documentMode===10}function Yk(t=qt()){return bf(t)||Gk(t)||Qk(t)||Kk(t)||/windows phone/i.test(t)||qk(t)}function FN(){try{return!!(window&&window!==window.top)}catch{return!1}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function Xk(t,e=[]){let n;switch(t){case"Browser":n=j1(qt());break;case"Worker":n=`${j1(qt())}-${t}`;break;default:n=t}const r=e.length?e.join(","):"FirebaseCore-web";return`${n}/JsCore/${Wa}/${r}`}/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class VN{constructor(e){this.auth=e,this.queue=[]}pushCallback(e,n){const r=s=>new Promise((o,a)=>{try{const l=e(s);o(l)}catch(l){a(l)}});r.onAbort=n,this.queue.push(r);const i=this.queue.length-1;return()=>{this.queue[i]=()=>Promise.resolve()}}async runMiddleware(e){if(this.auth.currentUser===e)return;const n=[];try{for(const r of this.queue)await r(e),r.onAbort&&n.push(r.onAbort)}catch(r){n.reverse();for(const i of n)try{i()}catch{}throw this.auth._errorFactory.create("login-blocked",{originalMessage:r==null?void 0:r.message})}}}/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function zN(t,e={}){return Zu(t,"GET","/v2/passwordPolicy",Vk(t,e))}/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const UN=6;class jN{constructor(e){var n,r,i,s;const o=e.customStrengthOptions;this.customStrengthOptions={},this.customStrengthOptions.minPasswordLength=(n=o.minPasswordLength)!==null&&n!==void 0?n:UN,o.maxPasswordLength&&(this.customStrengthOptions.maxPasswordLength=o.maxPasswordLength),o.containsLowercaseCharacter!==void 0&&(this.customStrengthOptions.containsLowercaseLetter=o.containsLowercaseCharacter),o.containsUppercaseCharacter!==void 0&&(this.customStrengthOptions.containsUppercaseLetter=o.containsUppercaseCharacter),o.containsNumericCharacter!==void 0&&(this.customStrengthOptions.containsNumericCharacter=o.containsNumericCharacter),o.containsNonAlphanumericCharacter!==void 0&&(this.customStrengthOptions.containsNonAlphanumericCharacter=o.containsNonAlphanumericCharacter),this.enforcementState=e.enforcementState,this.enforcementState==="ENFORCEMENT_STATE_UNSPECIFIED"&&(this.enforcementState="OFF"),this.allowedNonAlphanumericCharacters=(i=(r=e.allowedNonAlphanumericCharacters)===null||r===void 0?void 0:r.join(""))!==null&&i!==void 0?i:"",this.forceUpgradeOnSignin=(s=e.forceUpgradeOnSignin)!==null&&s!==void 0?s:!1,this.schemaVersion=e.schemaVersion}validatePassword(e){var n,r,i,s,o,a;const l={isValid:!0,passwordPolicy:this};return this.validatePasswordLengthOptions(e,l),this.validatePasswordCharacterOptions(e,l),l.isValid&&(l.isValid=(n=l.meetsMinPasswordLength)!==null&&n!==void 0?n:!0),l.isValid&&(l.isValid=(r=l.meetsMaxPasswordLength)!==null&&r!==void 0?r:!0),l.isValid&&(l.isValid=(i=l.containsLowercaseLetter)!==null&&i!==void 0?i:!0),l.isValid&&(l.isValid=(s=l.containsUppercaseLetter)!==null&&s!==void 0?s:!0),l.isValid&&(l.isValid=(o=l.containsNumericCharacter)!==null&&o!==void 0?o:!0),l.isValid&&(l.isValid=(a=l.containsNonAlphanumericCharacter)!==null&&a!==void 0?a:!0),l}validatePasswordLengthOptions(e,n){const r=this.customStrengthOptions.minPasswordLength,i=this.customStrengthOptions.maxPasswordLength;r&&(n.meetsMinPasswordLength=e.length>=r),i&&(n.meetsMaxPasswordLength=e.length<=i)}validatePasswordCharacterOptions(e,n){this.updatePasswordCharacterOptionsStatuses(n,!1,!1,!1,!1);let r;for(let i=0;i="a"&&r<="z",r>="A"&&r<="Z",r>="0"&&r<="9",this.allowedNonAlphanumericCharacters.includes(r))}updatePasswordCharacterOptionsStatuses(e,n,r,i,s){this.customStrengthOptions.containsLowercaseLetter&&(e.containsLowercaseLetter||(e.containsLowercaseLetter=n)),this.customStrengthOptions.containsUppercaseLetter&&(e.containsUppercaseLetter||(e.containsUppercaseLetter=r)),this.customStrengthOptions.containsNumericCharacter&&(e.containsNumericCharacter||(e.containsNumericCharacter=i)),this.customStrengthOptions.containsNonAlphanumericCharacter&&(e.containsNonAlphanumericCharacter||(e.containsNonAlphanumericCharacter=s))}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class BN{constructor(e,n,r,i){this.app=e,this.heartbeatServiceProvider=n,this.appCheckServiceProvider=r,this.config=i,this.currentUser=null,this.emulatorConfig=null,this.operations=Promise.resolve(),this.authStateSubscription=new B1(this),this.idTokenSubscription=new B1(this),this.beforeStateQueue=new VN(this),this.redirectUser=null,this.isProactiveRefreshEnabled=!1,this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION=1,this._canInitEmulator=!0,this._isInitialized=!1,this._deleted=!1,this._initializationPromise=null,this._popupRedirectResolver=null,this._errorFactory=$k,this._agentRecaptchaConfig=null,this._tenantRecaptchaConfigs={},this._projectPasswordPolicy=null,this._tenantPasswordPolicies={},this.lastNotifiedUid=void 0,this.languageCode=null,this.tenantId=null,this.settings={appVerificationDisabledForTesting:!1},this.frameworks=[],this.name=e.name,this.clientVersion=i.sdkClientVersion}_initializeWithPersistence(e,n){return n&&(this._popupRedirectResolver=Zr(n)),this._initializationPromise=this.queue(async()=>{var r,i;if(!this._deleted&&(this.persistenceManager=await ta.create(this,e),!this._deleted)){if(!((r=this._popupRedirectResolver)===null||r===void 0)&&r._shouldInitProactively)try{await this._popupRedirectResolver._initialize(this)}catch{}await this.initializeCurrentUser(n),this.lastNotifiedUid=((i=this.currentUser)===null||i===void 0?void 0:i.uid)||null,!this._deleted&&(this._isInitialized=!0)}}),this._initializationPromise}async _onStorageEvent(){if(this._deleted)return;const e=await this.assertedPersistence.getCurrentUser();if(!(!this.currentUser&&!e)){if(this.currentUser&&e&&this.currentUser.uid===e.uid){this._currentUser._assign(e),await this.currentUser.getIdToken();return}await this._updateCurrentUser(e,!0)}}async initializeCurrentUser(e){var n;const r=await this.assertedPersistence.getCurrentUser();let i=r,s=!1;if(e&&this.config.authDomain){await this.getOrInitRedirectPersistenceManager();const o=(n=this.redirectUser)===null||n===void 0?void 0:n._redirectEventId,a=i==null?void 0:i._redirectEventId,l=await this.tryRedirectSignIn(e);(!o||o===a)&&(l!=null&&l.user)&&(i=l.user,s=!0)}if(!i)return this.directlySetCurrentUser(null);if(!i._redirectEventId){if(s)try{await this.beforeStateQueue.runMiddleware(i)}catch(o){i=r,this._popupRedirectResolver._overrideRedirectResult(this,()=>Promise.reject(o))}return i?this.reloadAndSetCurrentUserOrClear(i):this.directlySetCurrentUser(null)}return le(this._popupRedirectResolver,this,"argument-error"),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===i._redirectEventId?this.directlySetCurrentUser(i):this.reloadAndSetCurrentUserOrClear(i)}async tryRedirectSignIn(e){let n=null;try{n=await this._popupRedirectResolver._completeRedirectFn(this,e,!0)}catch{await this._setRedirectUser(null)}return n}async reloadAndSetCurrentUserOrClear(e){try{await pd(e)}catch(n){if((n==null?void 0:n.code)!=="auth/network-request-failed")return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(e)}useDeviceLanguage(){this.languageCode=xN()}async _delete(){this._deleted=!0}async updateCurrentUser(e){const n=e?pn(e):null;return n&&le(n.auth.config.apiKey===this.config.apiKey,this,"invalid-user-token"),this._updateCurrentUser(n&&n._clone(this))}async _updateCurrentUser(e,n=!1){if(!this._deleted)return e&&le(this.tenantId===e.tenantId,this,"tenant-id-mismatch"),n||await this.beforeStateQueue.runMiddleware(e),this.queue(async()=>{await this.directlySetCurrentUser(e),this.notifyAuthListeners()})}async signOut(){return await this.beforeStateQueue.runMiddleware(null),(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null),this._updateCurrentUser(null,!0)}setPersistence(e){return this.queue(async()=>{await this.assertedPersistence.setPersistence(Zr(e))})}_getRecaptchaConfig(){return this.tenantId==null?this._agentRecaptchaConfig:this._tenantRecaptchaConfigs[this.tenantId]}async validatePassword(e){this._getPasswordPolicyInternal()||await this._updatePasswordPolicy();const n=this._getPasswordPolicyInternal();return n.schemaVersion!==this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION?Promise.reject(this._errorFactory.create("unsupported-password-policy-schema-version",{})):n.validatePassword(e)}_getPasswordPolicyInternal(){return this.tenantId===null?this._projectPasswordPolicy:this._tenantPasswordPolicies[this.tenantId]}async _updatePasswordPolicy(){const e=await zN(this),n=new jN(e);this.tenantId===null?this._projectPasswordPolicy=n:this._tenantPasswordPolicies[this.tenantId]=n}_getPersistence(){return this.assertedPersistence.persistence.type}_updateErrorMap(e){this._errorFactory=new Yu("auth","Firebase",e())}onAuthStateChanged(e,n,r){return this.registerStateListener(this.authStateSubscription,e,n,r)}beforeAuthStateChanged(e,n){return this.beforeStateQueue.pushCallback(e,n)}onIdTokenChanged(e,n,r){return this.registerStateListener(this.idTokenSubscription,e,n,r)}authStateReady(){return new Promise((e,n)=>{if(this.currentUser)e();else{const r=this.onAuthStateChanged(()=>{r(),e()},n)}})}toJSON(){var e;return{apiKey:this.config.apiKey,authDomain:this.config.authDomain,appName:this.name,currentUser:(e=this._currentUser)===null||e===void 0?void 0:e.toJSON()}}async _setRedirectUser(e,n){const r=await this.getOrInitRedirectPersistenceManager(n);return e===null?r.removeCurrentUser():r.setCurrentUser(e)}async getOrInitRedirectPersistenceManager(e){if(!this.redirectPersistenceManager){const n=e&&Zr(e)||this._popupRedirectResolver;le(n,this,"argument-error"),this.redirectPersistenceManager=await ta.create(this,[Zr(n._redirectPersistence)],"redirectUser"),this.redirectUser=await this.redirectPersistenceManager.getCurrentUser()}return this.redirectPersistenceManager}async _redirectUserForId(e){var n,r;return this._isInitialized&&await this.queue(async()=>{}),((n=this._currentUser)===null||n===void 0?void 0:n._redirectEventId)===e?this._currentUser:((r=this.redirectUser)===null||r===void 0?void 0:r._redirectEventId)===e?this.redirectUser:null}async _persistUserIfCurrent(e){if(e===this.currentUser)return this.queue(async()=>this.directlySetCurrentUser(e))}_notifyListenersIfCurrent(e){e===this.currentUser&&this.notifyAuthListeners()}_key(){return`${this.config.authDomain}:${this.config.apiKey}:${this.name}`}_startProactiveRefresh(){this.isProactiveRefreshEnabled=!0,this.currentUser&&this._currentUser._startProactiveRefresh()}_stopProactiveRefresh(){this.isProactiveRefreshEnabled=!1,this.currentUser&&this._currentUser._stopProactiveRefresh()}get _currentUser(){return this.currentUser}notifyAuthListeners(){var e,n;if(!this._isInitialized)return;this.idTokenSubscription.next(this.currentUser);const r=(n=(e=this.currentUser)===null||e===void 0?void 0:e.uid)!==null&&n!==void 0?n:null;this.lastNotifiedUid!==r&&(this.lastNotifiedUid=r,this.authStateSubscription.next(this.currentUser))}registerStateListener(e,n,r,i){if(this._deleted)return()=>{};const s=typeof n=="function"?n:n.next.bind(n);let o=!1;const a=this._isInitialized?Promise.resolve():this._initializationPromise;if(le(a,this,"internal-error"),a.then(()=>{o||s(this.currentUser)}),typeof n=="function"){const l=e.addObserver(n,r,i);return()=>{o=!0,l()}}else{const l=e.addObserver(n);return()=>{o=!0,l()}}}async directlySetCurrentUser(e){this.currentUser&&this.currentUser!==e&&this._currentUser._stopProactiveRefresh(),e&&this.isProactiveRefreshEnabled&&e._startProactiveRefresh(),this.currentUser=e,e?await this.assertedPersistence.setCurrentUser(e):await this.assertedPersistence.removeCurrentUser()}queue(e){return this.operations=this.operations.then(e,e),this.operations}get assertedPersistence(){return le(this.persistenceManager,this,"internal-error"),this.persistenceManager}_logFramework(e){!e||this.frameworks.includes(e)||(this.frameworks.push(e),this.frameworks.sort(),this.clientVersion=Xk(this.config.clientPlatform,this._getFrameworks()))}_getFrameworks(){return this.frameworks}async _getAdditionalHeaders(){var e;const n={"X-Client-Version":this.clientVersion};this.app.options.appId&&(n["X-Firebase-gmpid"]=this.app.options.appId);const r=await((e=this.heartbeatServiceProvider.getImmediate({optional:!0}))===null||e===void 0?void 0:e.getHeartbeatsHeader());r&&(n["X-Firebase-Client"]=r);const i=await this._getAppCheckToken();return i&&(n["X-Firebase-AppCheck"]=i),n}async _getAppCheckToken(){var e;const n=await((e=this.appCheckServiceProvider.getImmediate({optional:!0}))===null||e===void 0?void 0:e.getToken());return n!=null&&n.error&&yN(`Error while retrieving App Check token: ${n.error}`),n==null?void 0:n.token}}function Ef(t){return pn(t)}class B1{constructor(e){this.auth=e,this.observer=null,this.addObserver=lD(n=>this.observer=n)}get next(){return le(this.observer,this.auth,"internal-error"),this.observer.next.bind(this.observer)}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function HN(){var t,e;return(e=(t=document.getElementsByTagName("head"))===null||t===void 0?void 0:t[0])!==null&&e!==void 0?e:document}function WN(t){return new Promise((e,n)=>{const r=document.createElement("script");r.setAttribute("src",t),r.onload=e,r.onerror=i=>{const s=Or("internal-error");s.customData=i,n(s)},r.type="text/javascript",r.charset="UTF-8",HN().appendChild(r)})}function qN(t){return`__${t}${Math.floor(Math.random()*1e6)}`}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function GN(t,e){const n=a0(t,"auth");if(n.isInitialized()){const i=n.getImmediate(),s=n.getOptions();if(hd(s,e??{}))return i;zr(i,"already-initialized")}return n.initialize({options:e})}function KN(t,e){const n=(e==null?void 0:e.persistence)||[],r=(Array.isArray(n)?n:[n]).map(Zr);e!=null&&e.errorMap&&t._updateErrorMap(e.errorMap),t._initializeWithPersistence(r,e==null?void 0:e.popupRedirectResolver)}function QN(t,e,n){const r=Ef(t);le(r._canInitEmulator,r,"emulator-config-failed"),le(/^https?:\/\//.test(e),r,"invalid-emulator-scheme");const i=!!(n!=null&&n.disableWarnings),s=Jk(e),{host:o,port:a}=YN(e),l=a===null?"":`:${a}`;r.config.emulator={url:`${s}//${o}${l}/`},r.settings.appVerificationDisabledForTesting=!0,r.emulatorConfig=Object.freeze({host:o,port:a,protocol:s.replace(":",""),options:Object.freeze({disableWarnings:i})}),i||XN()}function Jk(t){const e=t.indexOf(":");return e<0?"":t.substr(0,e+1)}function YN(t){const e=Jk(t),n=/(\/\/)?([^?#/]+)/.exec(t.substr(e.length));if(!n)return{host:"",port:null};const r=n[2].split("@").pop()||"",i=/^(\[[^\]]+\])(:|$)/.exec(r);if(i){const s=i[1];return{host:s,port:H1(r.substr(s.length+1))}}else{const[s,o]=r.split(":");return{host:s,port:H1(o)}}}function H1(t){if(!t)return null;const e=Number(t);return isNaN(e)?null:e}function XN(){function t(){const e=document.createElement("p"),n=e.style;e.innerText="Running in emulator mode. Do not use with production credentials.",n.position="fixed",n.width="100%",n.backgroundColor="#ffffff",n.border=".1em solid #000000",n.color="#b50000",n.bottom="0px",n.left="0px",n.margin="0px",n.zIndex="10000",n.textAlign="center",e.classList.add("firebase-emulator-warning"),document.body.appendChild(e)}typeof console<"u"&&typeof console.info=="function"&&console.info("WARNING: You are using the Auth Emulator, which is intended for local testing only. Do not use with production credentials."),typeof window<"u"&&typeof document<"u"&&(document.readyState==="loading"?window.addEventListener("DOMContentLoaded",t):t())}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Zk{constructor(e,n){this.providerId=e,this.signInMethod=n}toJSON(){return Jr("not implemented")}_getIdTokenResponse(e){return Jr("not implemented")}_linkToIdToken(e,n){return Jr("not implemented")}_getReauthenticationResolver(e){return Jr("not implemented")}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function na(t,e){return TN(t,"POST","/v1/accounts:signInWithIdp",Vk(t,e))}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const JN="http://localhost";class Ys extends Zk{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(e){const n=new Ys(e.providerId,e.signInMethod);return e.idToken||e.accessToken?(e.idToken&&(n.idToken=e.idToken),e.accessToken&&(n.accessToken=e.accessToken),e.nonce&&!e.pendingToken&&(n.nonce=e.nonce),e.pendingToken&&(n.pendingToken=e.pendingToken)):e.oauthToken&&e.oauthTokenSecret?(n.accessToken=e.oauthToken,n.secret=e.oauthTokenSecret):zr("argument-error"),n}toJSON(){return{idToken:this.idToken,accessToken:this.accessToken,secret:this.secret,nonce:this.nonce,pendingToken:this.pendingToken,providerId:this.providerId,signInMethod:this.signInMethod}}static fromJSON(e){const n=typeof e=="string"?JSON.parse(e):e,{providerId:r,signInMethod:i}=n,s=l0(n,["providerId","signInMethod"]);if(!r||!i)return null;const o=new Ys(r,i);return o.idToken=s.idToken||void 0,o.accessToken=s.accessToken||void 0,o.secret=s.secret,o.nonce=s.nonce,o.pendingToken=s.pendingToken||null,o}_getIdTokenResponse(e){const n=this.buildRequest();return na(e,n)}_linkToIdToken(e,n){const r=this.buildRequest();return r.idToken=n,na(e,r)}_getReauthenticationResolver(e){const n=this.buildRequest();return n.autoCreate=!1,na(e,n)}buildRequest(){const e={requestUri:JN,returnSecureToken:!0};if(this.pendingToken)e.pendingToken=this.pendingToken;else{const n={};this.idToken&&(n.id_token=this.idToken),this.accessToken&&(n.access_token=this.accessToken),this.secret&&(n.oauth_token_secret=this.secret),n.providerId=this.providerId,this.nonce&&!this.pendingToken&&(n.nonce=this.nonce),e.postBody=Xu(n)}return e}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class f0{constructor(e){this.providerId=e,this.defaultLanguageCode=null,this.customParameters={}}setDefaultLanguage(e){this.defaultLanguageCode=e}setCustomParameters(e){return this.customParameters=e,this}getCustomParameters(){return this.customParameters}}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class ec extends f0{constructor(){super(...arguments),this.scopes=[]}addScope(e){return this.scopes.includes(e)||this.scopes.push(e),this}getScopes(){return[...this.scopes]}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class $i extends ec{constructor(){super("facebook.com")}static credential(e){return Ys._fromParams({providerId:$i.PROVIDER_ID,signInMethod:$i.FACEBOOK_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return $i.credentialFromTaggedObject(e)}static credentialFromError(e){return $i.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e)||!e.oauthAccessToken)return null;try{return $i.credential(e.oauthAccessToken)}catch{return null}}}$i.FACEBOOK_SIGN_IN_METHOD="facebook.com";$i.PROVIDER_ID="facebook.com";/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Li extends ec{constructor(){super("google.com"),this.addScope("profile")}static credential(e,n){return Ys._fromParams({providerId:Li.PROVIDER_ID,signInMethod:Li.GOOGLE_SIGN_IN_METHOD,idToken:e,accessToken:n})}static credentialFromResult(e){return Li.credentialFromTaggedObject(e)}static credentialFromError(e){return Li.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;const{oauthIdToken:n,oauthAccessToken:r}=e;if(!n&&!r)return null;try{return Li.credential(n,r)}catch{return null}}}Li.GOOGLE_SIGN_IN_METHOD="google.com";Li.PROVIDER_ID="google.com";/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Kr extends ec{constructor(){super("github.com")}static credential(e){return Ys._fromParams({providerId:Kr.PROVIDER_ID,signInMethod:Kr.GITHUB_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return Kr.credentialFromTaggedObject(e)}static credentialFromError(e){return Kr.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e)||!e.oauthAccessToken)return null;try{return Kr.credential(e.oauthAccessToken)}catch{return null}}}Kr.GITHUB_SIGN_IN_METHOD="github.com";Kr.PROVIDER_ID="github.com";/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Fi extends ec{constructor(){super("twitter.com")}static credential(e,n){return Ys._fromParams({providerId:Fi.PROVIDER_ID,signInMethod:Fi.TWITTER_SIGN_IN_METHOD,oauthToken:e,oauthTokenSecret:n})}static credentialFromResult(e){return Fi.credentialFromTaggedObject(e)}static credentialFromError(e){return Fi.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;const{oauthAccessToken:n,oauthTokenSecret:r}=e;if(!n||!r)return null;try{return Fi.credential(n,r)}catch{return null}}}Fi.TWITTER_SIGN_IN_METHOD="twitter.com";Fi.PROVIDER_ID="twitter.com";/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class va{constructor(e){this.user=e.user,this.providerId=e.providerId,this._tokenResponse=e._tokenResponse,this.operationType=e.operationType}static async _fromIdTokenResponse(e,n,r,i=!1){const s=await Fs._fromIdTokenResponse(e,r,i),o=W1(r);return new va({user:s,providerId:o,_tokenResponse:r,operationType:n})}static async _forOperation(e,n,r){await e._updateTokensIfNecessary(r,!0);const i=W1(r);return new va({user:e,providerId:i,_tokenResponse:r,operationType:n})}}function W1(t){return t.providerId?t.providerId:"phoneNumber"in t?"phone":null}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class md extends bi{constructor(e,n,r,i){var s;super(n.code,n.message),this.operationType=r,this.user=i,Object.setPrototypeOf(this,md.prototype),this.customData={appName:e.name,tenantId:(s=e.tenantId)!==null&&s!==void 0?s:void 0,_serverResponse:n.customData._serverResponse,operationType:r}}static _fromErrorAndOperation(e,n,r,i){return new md(e,n,r,i)}}function eC(t,e,n,r){return(e==="reauthenticate"?n._getReauthenticationResolver(t):n._getIdTokenResponse(t)).catch(s=>{throw s.code==="auth/multi-factor-auth-required"?md._fromErrorAndOperation(t,s,e,r):s})}async function ZN(t,e,n=!1){const r=await pu(t,e._linkToIdToken(t.auth,await t.getIdToken()),n);return va._forOperation(t,"link",r)}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function e$(t,e,n=!1){const{auth:r}=t,i="reauthenticate";try{const s=await pu(t,eC(r,i,e,t),n);le(s.idToken,r,"internal-error");const o=h0(s.idToken);le(o,r,"internal-error");const{sub:a}=o;return le(t.uid===a,r,"user-mismatch"),va._forOperation(t,i,s)}catch(s){throw(s==null?void 0:s.code)==="auth/user-not-found"&&zr(r,"user-mismatch"),s}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function t$(t,e,n=!1){const r="signIn",i=await eC(t,r,e),s=await va._fromIdTokenResponse(t,r,i);return n||await t._updateCurrentUser(s.user),s}function n$(t,e,n,r){return pn(t).onIdTokenChanged(e,n,r)}function r$(t,e,n){return pn(t).beforeAuthStateChanged(e,n)}function i$(t,e,n,r){return pn(t).onAuthStateChanged(e,n,r)}function s$(t){return pn(t).signOut()}const gd="__sak";/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class tC{constructor(e,n){this.storageRetriever=e,this.type=n}_isAvailable(){try{return this.storage?(this.storage.setItem(gd,"1"),this.storage.removeItem(gd),Promise.resolve(!0)):Promise.resolve(!1)}catch{return Promise.resolve(!1)}}_set(e,n){return this.storage.setItem(e,JSON.stringify(n)),Promise.resolve()}_get(e){const n=this.storage.getItem(e);return Promise.resolve(n?JSON.parse(n):null)}_remove(e){return this.storage.removeItem(e),Promise.resolve()}get storage(){return this.storageRetriever()}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function o$(){const t=qt();return d0(t)||bf(t)}const a$=1e3,l$=10;class nC extends tC{constructor(){super(()=>window.localStorage,"LOCAL"),this.boundEventHandler=(e,n)=>this.onStorageEvent(e,n),this.listeners={},this.localCache={},this.pollTimer=null,this.safariLocalStorageNotSynced=o$()&&FN(),this.fallbackToPolling=Yk(),this._shouldAllowMigration=!0}forAllChangedKeys(e){for(const n of Object.keys(this.listeners)){const r=this.storage.getItem(n),i=this.localCache[n];r!==i&&e(n,i,r)}}onStorageEvent(e,n=!1){if(!e.key){this.forAllChangedKeys((o,a,l)=>{this.notifyListeners(o,l)});return}const r=e.key;if(n?this.detachListener():this.stopPolling(),this.safariLocalStorageNotSynced){const o=this.storage.getItem(r);if(e.newValue!==o)e.newValue!==null?this.storage.setItem(r,e.newValue):this.storage.removeItem(r);else if(this.localCache[r]===e.newValue&&!n)return}const i=()=>{const o=this.storage.getItem(r);!n&&this.localCache[r]===o||this.notifyListeners(r,o)},s=this.storage.getItem(r);LN()&&s!==e.newValue&&e.newValue!==e.oldValue?setTimeout(i,l$):i()}notifyListeners(e,n){this.localCache[e]=n;const r=this.listeners[e];if(r)for(const i of Array.from(r))i(n&&JSON.parse(n))}startPolling(){this.stopPolling(),this.pollTimer=setInterval(()=>{this.forAllChangedKeys((e,n,r)=>{this.onStorageEvent(new StorageEvent("storage",{key:e,oldValue:n,newValue:r}),!0)})},a$)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}attachListener(){window.addEventListener("storage",this.boundEventHandler)}detachListener(){window.removeEventListener("storage",this.boundEventHandler)}_addListener(e,n){Object.keys(this.listeners).length===0&&(this.fallbackToPolling?this.startPolling():this.attachListener()),this.listeners[e]||(this.listeners[e]=new Set,this.localCache[e]=this.storage.getItem(e)),this.listeners[e].add(n)}_removeListener(e,n){this.listeners[e]&&(this.listeners[e].delete(n),this.listeners[e].size===0&&delete this.listeners[e]),Object.keys(this.listeners).length===0&&(this.detachListener(),this.stopPolling())}async _set(e,n){await super._set(e,n),this.localCache[e]=JSON.stringify(n)}async _get(e){const n=await super._get(e);return this.localCache[e]=JSON.stringify(n),n}async _remove(e){await super._remove(e),delete this.localCache[e]}}nC.type="LOCAL";const u$=nC;/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class rC extends tC{constructor(){super(()=>window.sessionStorage,"SESSION")}_addListener(e,n){}_removeListener(e,n){}}rC.type="SESSION";const iC=rC;/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function c$(t){return Promise.all(t.map(async e=>{try{return{fulfilled:!0,value:await e}}catch(n){return{fulfilled:!1,reason:n}}}))}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Tf{constructor(e){this.eventTarget=e,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(e){const n=this.receivers.find(i=>i.isListeningto(e));if(n)return n;const r=new Tf(e);return this.receivers.push(r),r}isListeningto(e){return this.eventTarget===e}async handleEvent(e){const n=e,{eventId:r,eventType:i,data:s}=n.data,o=this.handlersMap[i];if(!(o!=null&&o.size))return;n.ports[0].postMessage({status:"ack",eventId:r,eventType:i});const a=Array.from(o).map(async u=>u(n.origin,s)),l=await c$(a);n.ports[0].postMessage({status:"done",eventId:r,eventType:i,response:l})}_subscribe(e,n){Object.keys(this.handlersMap).length===0&&this.eventTarget.addEventListener("message",this.boundEventHandler),this.handlersMap[e]||(this.handlersMap[e]=new Set),this.handlersMap[e].add(n)}_unsubscribe(e,n){this.handlersMap[e]&&n&&this.handlersMap[e].delete(n),(!n||this.handlersMap[e].size===0)&&delete this.handlersMap[e],Object.keys(this.handlersMap).length===0&&this.eventTarget.removeEventListener("message",this.boundEventHandler)}}Tf.receivers=[];/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function p0(t="",e=10){let n="";for(let r=0;r{const u=p0("",20);i.port1.start();const c=setTimeout(()=>{l(new Error("unsupported_event"))},r);o={messageChannel:i,onMessage(h){const d=h;if(d.data.eventId===u)switch(d.data.status){case"ack":clearTimeout(c),s=setTimeout(()=>{l(new Error("timeout"))},3e3);break;case"done":clearTimeout(s),a(d.data.response);break;default:clearTimeout(c),clearTimeout(s),l(new Error("invalid_response"));break}}},this.handlers.add(o),i.port1.addEventListener("message",o.onMessage),this.target.postMessage({eventType:e,eventId:u,data:n},[i.port2])}).finally(()=>{o&&this.removeMessageHandler(o)})}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function Dr(){return window}function d$(t){Dr().location.href=t}/** + * @license + * Copyright 2020 Google LLC. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function sC(){return typeof Dr().WorkerGlobalScope<"u"&&typeof Dr().importScripts=="function"}async function f$(){if(!(navigator!=null&&navigator.serviceWorker))return null;try{return(await navigator.serviceWorker.ready).active}catch{return null}}function p$(){var t;return((t=navigator==null?void 0:navigator.serviceWorker)===null||t===void 0?void 0:t.controller)||null}function m$(){return sC()?self:null}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const oC="firebaseLocalStorageDb",g$=1,yd="firebaseLocalStorage",aC="fbase_key";class tc{constructor(e){this.request=e}toPromise(){return new Promise((e,n)=>{this.request.addEventListener("success",()=>{e(this.request.result)}),this.request.addEventListener("error",()=>{n(this.request.error)})})}}function Sf(t,e){return t.transaction([yd],e?"readwrite":"readonly").objectStore(yd)}function y$(){const t=indexedDB.deleteDatabase(oC);return new tc(t).toPromise()}function cy(){const t=indexedDB.open(oC,g$);return new Promise((e,n)=>{t.addEventListener("error",()=>{n(t.error)}),t.addEventListener("upgradeneeded",()=>{const r=t.result;try{r.createObjectStore(yd,{keyPath:aC})}catch(i){n(i)}}),t.addEventListener("success",async()=>{const r=t.result;r.objectStoreNames.contains(yd)?e(r):(r.close(),await y$(),e(await cy()))})})}async function q1(t,e,n){const r=Sf(t,!0).put({[aC]:e,value:n});return new tc(r).toPromise()}async function v$(t,e){const n=Sf(t,!1).get(e),r=await new tc(n).toPromise();return r===void 0?null:r.value}function G1(t,e){const n=Sf(t,!0).delete(e);return new tc(n).toPromise()}const _$=800,w$=3;class lC{constructor(){this.type="LOCAL",this._shouldAllowMigration=!0,this.listeners={},this.localCache={},this.pollTimer=null,this.pendingWrites=0,this.receiver=null,this.sender=null,this.serviceWorkerReceiverAvailable=!1,this.activeServiceWorker=null,this._workerInitializationPromise=this.initializeServiceWorkerMessaging().then(()=>{},()=>{})}async _openDb(){return this.db?this.db:(this.db=await cy(),this.db)}async _withRetries(e){let n=0;for(;;)try{const r=await this._openDb();return await e(r)}catch(r){if(n++>w$)throw r;this.db&&(this.db.close(),this.db=void 0)}}async initializeServiceWorkerMessaging(){return sC()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){this.receiver=Tf._getInstance(m$()),this.receiver._subscribe("keyChanged",async(e,n)=>({keyProcessed:(await this._poll()).includes(n.key)})),this.receiver._subscribe("ping",async(e,n)=>["keyChanged"])}async initializeSender(){var e,n;if(this.activeServiceWorker=await f$(),!this.activeServiceWorker)return;this.sender=new h$(this.activeServiceWorker);const r=await this.sender._send("ping",{},800);r&&!((e=r[0])===null||e===void 0)&&e.fulfilled&&!((n=r[0])===null||n===void 0)&&n.value.includes("keyChanged")&&(this.serviceWorkerReceiverAvailable=!0)}async notifyServiceWorker(e){if(!(!this.sender||!this.activeServiceWorker||p$()!==this.activeServiceWorker))try{await this.sender._send("keyChanged",{key:e},this.serviceWorkerReceiverAvailable?800:50)}catch{}}async _isAvailable(){try{if(!indexedDB)return!1;const e=await cy();return await q1(e,gd,"1"),await G1(e,gd),!0}catch{}return!1}async _withPendingWrite(e){this.pendingWrites++;try{await e()}finally{this.pendingWrites--}}async _set(e,n){return this._withPendingWrite(async()=>(await this._withRetries(r=>q1(r,e,n)),this.localCache[e]=n,this.notifyServiceWorker(e)))}async _get(e){const n=await this._withRetries(r=>v$(r,e));return this.localCache[e]=n,n}async _remove(e){return this._withPendingWrite(async()=>(await this._withRetries(n=>G1(n,e)),delete this.localCache[e],this.notifyServiceWorker(e)))}async _poll(){const e=await this._withRetries(i=>{const s=Sf(i,!1).getAll();return new tc(s).toPromise()});if(!e)return[];if(this.pendingWrites!==0)return[];const n=[],r=new Set;for(const{fbase_key:i,value:s}of e)r.add(i),JSON.stringify(this.localCache[i])!==JSON.stringify(s)&&(this.notifyListeners(i,s),n.push(i));for(const i of Object.keys(this.localCache))this.localCache[i]&&!r.has(i)&&(this.notifyListeners(i,null),n.push(i));return n}notifyListeners(e,n){this.localCache[e]=n;const r=this.listeners[e];if(r)for(const i of Array.from(r))i(n)}startPolling(){this.stopPolling(),this.pollTimer=setInterval(async()=>this._poll(),_$)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_addListener(e,n){Object.keys(this.listeners).length===0&&this.startPolling(),this.listeners[e]||(this.listeners[e]=new Set,this._get(e)),this.listeners[e].add(n)}_removeListener(e,n){this.listeners[e]&&(this.listeners[e].delete(n),this.listeners[e].size===0&&delete this.listeners[e]),Object.keys(this.listeners).length===0&&this.stopPolling()}}lC.type="LOCAL";const x$=lC;new Ju(3e4,6e4);/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function uC(t,e){return e?Zr(e):(le(t._popupRedirectResolver,t,"argument-error"),t._popupRedirectResolver)}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class m0 extends Zk{constructor(e){super("custom","custom"),this.params=e}_getIdTokenResponse(e){return na(e,this._buildIdpRequest())}_linkToIdToken(e,n){return na(e,this._buildIdpRequest(n))}_getReauthenticationResolver(e){return na(e,this._buildIdpRequest())}_buildIdpRequest(e){const n={requestUri:this.params.requestUri,sessionId:this.params.sessionId,postBody:this.params.postBody,tenantId:this.params.tenantId,pendingToken:this.params.pendingToken,returnSecureToken:!0,returnIdpCredential:!0};return e&&(n.idToken=e),n}}function b$(t){return t$(t.auth,new m0(t),t.bypassAuthState)}function E$(t){const{auth:e,user:n}=t;return le(n,e,"internal-error"),e$(n,new m0(t),t.bypassAuthState)}async function T$(t){const{auth:e,user:n}=t;return le(n,e,"internal-error"),ZN(n,new m0(t),t.bypassAuthState)}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class cC{constructor(e,n,r,i,s=!1){this.auth=e,this.resolver=r,this.user=i,this.bypassAuthState=s,this.pendingPromise=null,this.eventManager=null,this.filter=Array.isArray(n)?n:[n]}execute(){return new Promise(async(e,n)=>{this.pendingPromise={resolve:e,reject:n};try{this.eventManager=await this.resolver._initialize(this.auth),await this.onExecution(),this.eventManager.registerConsumer(this)}catch(r){this.reject(r)}})}async onAuthEvent(e){const{urlResponse:n,sessionId:r,postBody:i,tenantId:s,error:o,type:a}=e;if(o){this.reject(o);return}const l={auth:this.auth,requestUri:n,sessionId:r,tenantId:s||void 0,postBody:i||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{this.resolve(await this.getIdpTask(a)(l))}catch(u){this.reject(u)}}onError(e){this.reject(e)}getIdpTask(e){switch(e){case"signInViaPopup":case"signInViaRedirect":return b$;case"linkViaPopup":case"linkViaRedirect":return T$;case"reauthViaPopup":case"reauthViaRedirect":return E$;default:zr(this.auth,"internal-error")}}resolve(e){fi(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.resolve(e),this.unregisterAndCleanUp()}reject(e){fi(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.reject(e),this.unregisterAndCleanUp()}unregisterAndCleanUp(){this.eventManager&&this.eventManager.unregisterConsumer(this),this.pendingPromise=null,this.cleanUp()}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const S$=new Ju(2e3,1e4);class Wo extends cC{constructor(e,n,r,i,s){super(e,n,i,s),this.provider=r,this.authWindow=null,this.pollId=null,Wo.currentPopupAction&&Wo.currentPopupAction.cancel(),Wo.currentPopupAction=this}async executeNotNull(){const e=await this.execute();return le(e,this.auth,"internal-error"),e}async onExecution(){fi(this.filter.length===1,"Popup operations only handle one event");const e=p0();this.authWindow=await this.resolver._openPopup(this.auth,this.provider,this.filter[0],e),this.authWindow.associatedEvent=e,this.resolver._originValidation(this.auth).catch(n=>{this.reject(n)}),this.resolver._isIframeWebStorageSupported(this.auth,n=>{n||this.reject(Or(this.auth,"web-storage-unsupported"))}),this.pollUserCancellation()}get eventId(){var e;return((e=this.authWindow)===null||e===void 0?void 0:e.associatedEvent)||null}cancel(){this.reject(Or(this.auth,"cancelled-popup-request"))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,Wo.currentPopupAction=null}pollUserCancellation(){const e=()=>{var n,r;if(!((r=(n=this.authWindow)===null||n===void 0?void 0:n.window)===null||r===void 0)&&r.closed){this.pollId=window.setTimeout(()=>{this.pollId=null,this.reject(Or(this.auth,"popup-closed-by-user"))},8e3);return}this.pollId=window.setTimeout(e,S$.get())};e()}}Wo.currentPopupAction=null;/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const k$="pendingRedirect",Th=new Map;class C$ extends cC{constructor(e,n,r=!1){super(e,["signInViaRedirect","linkViaRedirect","reauthViaRedirect","unknown"],n,void 0,r),this.eventId=null}async execute(){let e=Th.get(this.auth._key());if(!e){try{const r=await I$(this.resolver,this.auth)?await super.execute():null;e=()=>Promise.resolve(r)}catch(n){e=()=>Promise.reject(n)}Th.set(this.auth._key(),e)}return this.bypassAuthState||Th.set(this.auth._key(),()=>Promise.resolve(null)),e()}async onAuthEvent(e){if(e.type==="signInViaRedirect")return super.onAuthEvent(e);if(e.type==="unknown"){this.resolve(null);return}if(e.eventId){const n=await this.auth._redirectUserForId(e.eventId);if(n)return this.user=n,super.onAuthEvent(e);this.resolve(null)}}async onExecution(){}cleanUp(){}}async function I$(t,e){const n=dC(e),r=hC(t);if(!await r._isAvailable())return!1;const i=await r._get(n)==="true";return await r._remove(n),i}async function P$(t,e){return hC(t)._set(dC(e),"true")}function A$(t,e){Th.set(t._key(),e)}function hC(t){return Zr(t._redirectPersistence)}function dC(t){return Eh(k$,t.config.apiKey,t.name)}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function R$(t,e,n){return M$(t,e,n)}async function M$(t,e,n){const r=Ef(t);vN(t,e,f0),await r._initializationPromise;const i=uC(r,n);return await P$(i,r),i._openRedirect(r,e,"signInViaRedirect")}async function O$(t,e,n=!1){const r=Ef(t),i=uC(r,e),o=await new C$(r,i,n).execute();return o&&!n&&(delete o.user._redirectEventId,await r._persistUserIfCurrent(o.user),await r._setRedirectUser(null,e)),o}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const D$=10*60*1e3;class N${constructor(e){this.auth=e,this.cachedEventUids=new Set,this.consumers=new Set,this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1,this.lastProcessedEventTime=Date.now()}registerConsumer(e){this.consumers.add(e),this.queuedRedirectEvent&&this.isEventForConsumer(this.queuedRedirectEvent,e)&&(this.sendToConsumer(this.queuedRedirectEvent,e),this.saveEventToCache(this.queuedRedirectEvent),this.queuedRedirectEvent=null)}unregisterConsumer(e){this.consumers.delete(e)}onEvent(e){if(this.hasEventBeenHandled(e))return!1;let n=!1;return this.consumers.forEach(r=>{this.isEventForConsumer(e,r)&&(n=!0,this.sendToConsumer(e,r),this.saveEventToCache(e))}),this.hasHandledPotentialRedirect||!$$(e)||(this.hasHandledPotentialRedirect=!0,n||(this.queuedRedirectEvent=e,n=!0)),n}sendToConsumer(e,n){var r;if(e.error&&!fC(e)){const i=((r=e.error.code)===null||r===void 0?void 0:r.split("auth/")[1])||"internal-error";n.onError(Or(this.auth,i))}else n.onAuthEvent(e)}isEventForConsumer(e,n){const r=n.eventId===null||!!e.eventId&&e.eventId===n.eventId;return n.filter.includes(e.type)&&r}hasEventBeenHandled(e){return Date.now()-this.lastProcessedEventTime>=D$&&this.cachedEventUids.clear(),this.cachedEventUids.has(K1(e))}saveEventToCache(e){this.cachedEventUids.add(K1(e)),this.lastProcessedEventTime=Date.now()}}function K1(t){return[t.type,t.eventId,t.sessionId,t.tenantId].filter(e=>e).join("-")}function fC({type:t,error:e}){return t==="unknown"&&(e==null?void 0:e.code)==="auth/no-auth-event"}function $$(t){switch(t.type){case"signInViaRedirect":case"linkViaRedirect":case"reauthViaRedirect":return!0;case"unknown":return fC(t);default:return!1}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function L$(t,e={}){return Zu(t,"GET","/v1/projects",e)}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const F$=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,V$=/^https?/;async function z$(t){if(t.config.emulator)return;const{authorizedDomains:e}=await L$(t);for(const n of e)try{if(U$(n))return}catch{}zr(t,"unauthorized-domain")}function U$(t){const e=uy(),{protocol:n,hostname:r}=new URL(e);if(t.startsWith("chrome-extension://")){const o=new URL(t);return o.hostname===""&&r===""?n==="chrome-extension:"&&t.replace("chrome-extension://","")===e.replace("chrome-extension://",""):n==="chrome-extension:"&&o.hostname===r}if(!V$.test(n))return!1;if(F$.test(t))return r===t;const i=t.replace(/\./g,"\\.");return new RegExp("^(.+\\."+i+"|"+i+")$","i").test(r)}/** + * @license + * Copyright 2020 Google LLC. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const j$=new Ju(3e4,6e4);function Q1(){const t=Dr().___jsl;if(t!=null&&t.H){for(const e of Object.keys(t.H))if(t.H[e].r=t.H[e].r||[],t.H[e].L=t.H[e].L||[],t.H[e].r=[...t.H[e].L],t.CP)for(let n=0;n{var r,i,s;function o(){Q1(),gapi.load("gapi.iframes",{callback:()=>{e(gapi.iframes.getContext())},ontimeout:()=>{Q1(),n(Or(t,"network-request-failed"))},timeout:j$.get()})}if(!((i=(r=Dr().gapi)===null||r===void 0?void 0:r.iframes)===null||i===void 0)&&i.Iframe)e(gapi.iframes.getContext());else if(!((s=Dr().gapi)===null||s===void 0)&&s.load)o();else{const a=qN("iframefcb");return Dr()[a]=()=>{gapi.load?o():n(Or(t,"network-request-failed"))},WN(`https://apis.google.com/js/api.js?onload=${a}`).catch(l=>n(l))}}).catch(e=>{throw Sh=null,e})}let Sh=null;function H$(t){return Sh=Sh||B$(t),Sh}/** + * @license + * Copyright 2020 Google LLC. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const W$=new Ju(5e3,15e3),q$="__/auth/iframe",G$="emulator/auth/iframe",K$={style:{position:"absolute",top:"-100px",width:"1px",height:"1px"},"aria-hidden":"true",tabindex:"-1"},Q$=new Map([["identitytoolkit.googleapis.com","p"],["staging-identitytoolkit.sandbox.googleapis.com","s"],["test-identitytoolkit.sandbox.googleapis.com","t"]]);function Y$(t){const e=t.config;le(e.authDomain,t,"auth-domain-config-required");const n=e.emulator?c0(e,G$):`https://${t.config.authDomain}/${q$}`,r={apiKey:e.apiKey,appName:t.name,v:Wa},i=Q$.get(t.config.apiHost);i&&(r.eid=i);const s=t._getFrameworks();return s.length&&(r.fw=s.join(",")),`${n}?${Xu(r).slice(1)}`}async function X$(t){const e=await H$(t),n=Dr().gapi;return le(n,t,"internal-error"),e.open({where:document.body,url:Y$(t),messageHandlersFilter:n.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:K$,dontclear:!0},r=>new Promise(async(i,s)=>{await r.restyle({setHideOnLeave:!1});const o=Or(t,"network-request-failed"),a=Dr().setTimeout(()=>{s(o)},W$.get());function l(){Dr().clearTimeout(a),i(r)}r.ping(l).then(l,()=>{s(o)})}))}/** + * @license + * Copyright 2020 Google LLC. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const J$={location:"yes",resizable:"yes",statusbar:"yes",toolbar:"no"},Z$=500,eL=600,tL="_blank",nL="http://localhost";class Y1{constructor(e){this.window=e,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch{}}}function rL(t,e,n,r=Z$,i=eL){const s=Math.max((window.screen.availHeight-i)/2,0).toString(),o=Math.max((window.screen.availWidth-r)/2,0).toString();let a="";const l=Object.assign(Object.assign({},J$),{width:r.toString(),height:i.toString(),top:s,left:o}),u=qt().toLowerCase();n&&(a=Wk(u)?tL:n),Hk(u)&&(e=e||nL,l.scrollbars="yes");const c=Object.entries(l).reduce((d,[f,p])=>`${d}${f}=${p},`,"");if($N(u)&&a!=="_self")return iL(e||"",a),new Y1(null);const h=window.open(e||"",a,c);le(h,t,"popup-blocked");try{h.focus()}catch{}return new Y1(h)}function iL(t,e){const n=document.createElement("a");n.href=t,n.target=e;const r=document.createEvent("MouseEvent");r.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),n.dispatchEvent(r)}/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const sL="__/auth/handler",oL="emulator/auth/handler",aL=encodeURIComponent("fac");async function X1(t,e,n,r,i,s){le(t.config.authDomain,t,"auth-domain-config-required"),le(t.config.apiKey,t,"invalid-api-key");const o={apiKey:t.config.apiKey,appName:t.name,authType:n,redirectUrl:r,v:Wa,eventId:i};if(e instanceof f0){e.setDefaultLanguage(t.languageCode),o.providerId=e.providerId||"",aD(e.getCustomParameters())||(o.customParameters=JSON.stringify(e.getCustomParameters()));for(const[c,h]of Object.entries(s||{}))o[c]=h}if(e instanceof ec){const c=e.getScopes().filter(h=>h!=="");c.length>0&&(o.scopes=c.join(","))}t.tenantId&&(o.tid=t.tenantId);const a=o;for(const c of Object.keys(a))a[c]===void 0&&delete a[c];const l=await t._getAppCheckToken(),u=l?`#${aL}=${encodeURIComponent(l)}`:"";return`${lL(t)}?${Xu(a).slice(1)}${u}`}function lL({config:t}){return t.emulator?c0(t,oL):`https://${t.authDomain}/${sL}`}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const vm="webStorageSupport";class uL{constructor(){this.eventManagers={},this.iframes={},this.originValidationPromises={},this._redirectPersistence=iC,this._completeRedirectFn=O$,this._overrideRedirectResult=A$}async _openPopup(e,n,r,i){var s;fi((s=this.eventManagers[e._key()])===null||s===void 0?void 0:s.manager,"_initialize() not called before _openPopup()");const o=await X1(e,n,r,uy(),i);return rL(e,o,p0())}async _openRedirect(e,n,r,i){await this._originValidation(e);const s=await X1(e,n,r,uy(),i);return d$(s),new Promise(()=>{})}_initialize(e){const n=e._key();if(this.eventManagers[n]){const{manager:i,promise:s}=this.eventManagers[n];return i?Promise.resolve(i):(fi(s,"If manager is not set, promise should be"),s)}const r=this.initAndGetManager(e);return this.eventManagers[n]={promise:r},r.catch(()=>{delete this.eventManagers[n]}),r}async initAndGetManager(e){const n=await X$(e),r=new N$(e);return n.register("authEvent",i=>(le(i==null?void 0:i.authEvent,e,"invalid-auth-event"),{status:r.onEvent(i.authEvent)?"ACK":"ERROR"}),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[e._key()]={manager:r},this.iframes[e._key()]=n,r}_isIframeWebStorageSupported(e,n){this.iframes[e._key()].send(vm,{type:vm},i=>{var s;const o=(s=i==null?void 0:i[0])===null||s===void 0?void 0:s[vm];o!==void 0&&n(!!o),zr(e,"internal-error")},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){const n=e._key();return this.originValidationPromises[n]||(this.originValidationPromises[n]=z$(e)),this.originValidationPromises[n]}get _shouldInitProactively(){return Yk()||d0()||bf()}}const cL=uL;var J1="@firebase/auth",Z1="1.3.0";/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class hL{constructor(e){this.auth=e,this.internalListeners=new Map}getUid(){var e;return this.assertAuthConfigured(),((e=this.auth.currentUser)===null||e===void 0?void 0:e.uid)||null}async getToken(e){return this.assertAuthConfigured(),await this.auth._initializationPromise,this.auth.currentUser?{accessToken:await this.auth.currentUser.getIdToken(e)}:null}addAuthTokenListener(e){if(this.assertAuthConfigured(),this.internalListeners.has(e))return;const n=this.auth.onIdTokenChanged(r=>{e((r==null?void 0:r.stsTokenManager.accessToken)||null)});this.internalListeners.set(e,n),this.updateProactiveRefresh()}removeAuthTokenListener(e){this.assertAuthConfigured();const n=this.internalListeners.get(e);n&&(this.internalListeners.delete(e),n(),this.updateProactiveRefresh())}assertAuthConfigured(){le(this.auth._initializationPromise,"dependent-sdk-initialized-before-auth")}updateProactiveRefresh(){this.internalListeners.size>0?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function dL(t){switch(t){case"Node":return"node";case"ReactNative":return"rn";case"Worker":return"webworker";case"Cordova":return"cordova";default:return}}function fL(t){ya(new Ks("auth",(e,{options:n})=>{const r=e.getProvider("app").getImmediate(),i=e.getProvider("heartbeat"),s=e.getProvider("app-check-internal"),{apiKey:o,authDomain:a}=r.options;le(o&&!o.includes(":"),"invalid-api-key",{appName:r.name});const l={apiKey:o,authDomain:a,clientPlatform:t,apiHost:"identitytoolkit.googleapis.com",tokenApiHost:"securetoken.googleapis.com",apiScheme:"https",sdkClientVersion:Xk(t)},u=new BN(r,i,s,l);return KN(u,n),u},"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,n,r)=>{e.getProvider("auth-internal").initialize()})),ya(new Ks("auth-internal",e=>{const n=Ef(e.getProvider("auth").getImmediate());return(r=>new hL(r))(n)},"PRIVATE").setInstantiationMode("EXPLICIT")),es(J1,Z1,dL(t)),es(J1,Z1,"esm2017")}/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const pL=5*60,mL=Ik("authIdTokenMaxAge")||pL;let ex=null;const gL=t=>async e=>{const n=e&&await e.getIdTokenResult(),r=n&&(new Date().getTime()-Date.parse(n.issuedAtTime))/1e3;if(r&&r>mL)return;const i=n==null?void 0:n.token;ex!==i&&(ex=i,await fetch(t,{method:i?"POST":"DELETE",headers:i?{Authorization:`Bearer ${i}`}:{}}))};function yL(t=Mk()){const e=a0(t,"auth");if(e.isInitialized())return e.getImmediate();const n=GN(t,{popupRedirectResolver:cL,persistence:[x$,u$,iC]}),r=Ik("authTokenSyncURL");if(r){const s=gL(r);r$(n,s,()=>s(n.currentUser)),n$(n,o=>s(o))}const i=kk("auth");return i&&QN(n,`http://${i}`),n}fL("Browser");const vL={black:"#000",white:"#fff"},gu=vL,_L={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},wo=_L,wL={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},xo=wL,xL={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},bo=xL,bL={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},Eo=bL,EL={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},To=EL,TL={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},ul=TL,SL={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"},kL=SL;function I(){return I=Object.assign?Object.assign.bind():function(t){for(var e=1;e{e[n]=pC(t[n])}),e}function ar(t,e,n={clone:!0}){const r=n.clone?I({},t):t;return Qr(t)&&Qr(e)&&Object.keys(e).forEach(i=>{i!=="__proto__"&&(Qr(e[i])&&i in t&&Qr(t[i])?r[i]=ar(t[i],e[i],n):n.clone?r[i]=Qr(e[i])?pC(e[i]):e[i]:r[i]=e[i])}),r}var mC={exports:{}},CL="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",IL=CL,PL=IL;function gC(){}function yC(){}yC.resetWarningCache=gC;var AL=function(){function t(r,i,s,o,a,l){if(l!==PL){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}t.isRequired=t;function e(){return t}var n={array:t,bigint:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:yC,resetWarningCache:gC};return n.PropTypes=n,n};mC.exports=AL();var RL=mC.exports;const ie=sf(RL);function _a(t){let e="https://mui.com/production-error/?code="+t;for(let n=1;nn==null?e:function(...i){e.apply(this,i),n.apply(this,i)},()=>{})}function ML(t,e=166){let n;function r(...i){const s=()=>{t.apply(this,i)};clearTimeout(n),n=setTimeout(s,e)}return r.clear=()=>{clearTimeout(n)},r}function OL(t,e){return()=>null}function DL(t,e){var n,r;return T.isValidElement(t)&&e.indexOf((n=t.type.muiName)!=null?n:(r=t.type)==null||(r=r._payload)==null||(r=r.value)==null?void 0:r.muiName)!==-1}function lr(t){return t&&t.ownerDocument||document}function nc(t){return lr(t).defaultView||window}function NL(t,e){return()=>null}function vd(t,e){typeof t=="function"?t(e):t&&(t.current=e)}const $L=typeof window<"u"?T.useLayoutEffect:T.useEffect,ss=$L;let tx=0;function LL(t){const[e,n]=T.useState(t),r=t||e;return T.useEffect(()=>{e==null&&(tx+=1,n(`mui-${tx}`))},[e]),r}const nx=cg["useId".toString()];function vC(t){if(nx!==void 0){const e=nx();return t??e}return LL(t)}function FL(t,e,n,r,i){return null}function VL({controlled:t,default:e,name:n,state:r="value"}){const{current:i}=T.useRef(t!==void 0),[s,o]=T.useState(e),a=i?t:s,l=T.useCallback(u=>{i||o(u)},[]);return[a,l]}function Is(t){const e=T.useRef(t);return ss(()=>{e.current=t}),T.useCallback((...n)=>(0,e.current)(...n),[])}function fr(...t){return T.useMemo(()=>t.every(e=>e==null)?null:e=>{t.forEach(n=>{vd(n,e)})},t)}let kf=!0,dy=!1,rx;const zL={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function UL(t){const{type:e,tagName:n}=t;return!!(n==="INPUT"&&zL[e]&&!t.readOnly||n==="TEXTAREA"&&!t.readOnly||t.isContentEditable)}function jL(t){t.metaKey||t.altKey||t.ctrlKey||(kf=!0)}function _m(){kf=!1}function BL(){this.visibilityState==="hidden"&&dy&&(kf=!0)}function HL(t){t.addEventListener("keydown",jL,!0),t.addEventListener("mousedown",_m,!0),t.addEventListener("pointerdown",_m,!0),t.addEventListener("touchstart",_m,!0),t.addEventListener("visibilitychange",BL,!0)}function WL(t){const{target:e}=t;try{return e.matches(":focus-visible")}catch{}return kf||UL(e)}function _C(){const t=T.useCallback(i=>{i!=null&&HL(i.ownerDocument)},[]),e=T.useRef(!1);function n(){return e.current?(dy=!0,window.clearTimeout(rx),rx=window.setTimeout(()=>{dy=!1},100),e.current=!1,!0):!1}function r(i){return WL(i)?(e.current=!0,!0):!1}return{isFocusVisibleRef:e,onFocus:r,onBlur:n,ref:t}}function qL(t){const e=t.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}function g0(t,e){const n=I({},e);return Object.keys(t).forEach(r=>{if(r.toString().match(/^(components|slots)$/))n[r]=I({},t[r],n[r]);else if(r.toString().match(/^(componentsProps|slotProps)$/)){const i=t[r]||{},s=e[r];n[r]={},!s||!Object.keys(s)?n[r]=i:!i||!Object.keys(i)?n[r]=s:(n[r]=I({},s),Object.keys(i).forEach(o=>{n[r][o]=g0(i[o],s[o])}))}else n[r]===void 0&&(n[r]=t[r])}),n}function lt(t,e,n=void 0){const r={};return Object.keys(t).forEach(i=>{r[i]=t[i].reduce((s,o)=>{if(o){const a=e(o);a!==""&&s.push(a),n&&n[o]&&s.push(n[o])}return s},[]).join(" ")}),r}const ix=t=>t,GL=()=>{let t=ix;return{configure(e){t=e},generate(e){return t(e)},reset(){t=ix}}},KL=GL(),y0=KL,QL={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function ut(t,e,n="Mui"){const r=QL[e];return r?`${n}-${r}`:`${y0.generate(t)}-${e}`}function ct(t,e,n="Mui"){const r={};return e.forEach(i=>{r[i]=ut(t,i,n)}),r}const wa="$$material";function ue(t,e){if(t==null)return{};var n={},r=Object.keys(t),i,s;for(s=0;s=0)&&(n[i]=t[i]);return n}function wC(t){var e=Object.create(null);return function(n){return e[n]===void 0&&(e[n]=t(n)),e[n]}}var YL=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,XL=wC(function(t){return YL.test(t)||t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)<91});function JL(t){if(t.sheet)return t.sheet;for(var e=0;e0?kt(qa,--mn):0,xa--,st===10&&(xa=1,If--),st}function En(){return st=mn2||vu(st)>3?"":" "}function h4(t,e){for(;--e&&En()&&!(st<48||st>102||st>57&&st<65||st>70&&st<97););return rc(t,kh()+(e<6&&Nr()==32&&En()==32))}function py(t){for(;En();)switch(st){case t:return mn;case 34:case 39:t!==34&&t!==39&&py(st);break;case 40:t===41&&py(t);break;case 92:En();break}return mn}function d4(t,e){for(;En()&&t+st!==47+10;)if(t+st===42+42&&Nr()===47)break;return"/*"+rc(e,mn-1)+"*"+Cf(t===47?t:En())}function f4(t){for(;!vu(Nr());)En();return rc(t,mn)}function p4(t){return kC(Ih("",null,null,null,[""],t=SC(t),0,[0],t))}function Ih(t,e,n,r,i,s,o,a,l){for(var u=0,c=0,h=o,d=0,f=0,p=0,m=1,w=1,g=1,y=0,v="",_=i,x=s,b=r,E=v;w;)switch(p=y,y=En()){case 40:if(p!=108&&kt(E,h-1)==58){fy(E+=Ie(Ch(y),"&","&\f"),"&\f")!=-1&&(g=-1);break}case 34:case 39:case 91:E+=Ch(y);break;case 9:case 10:case 13:case 32:E+=c4(p);break;case 92:E+=h4(kh()-1,7);continue;case 47:switch(Nr()){case 42:case 47:qc(m4(d4(En(),kh()),e,n),l);break;default:E+="/"}break;case 123*m:a[u++]=Er(E)*g;case 125*m:case 59:case 0:switch(y){case 0:case 125:w=0;case 59+c:g==-1&&(E=Ie(E,/\f/g,"")),f>0&&Er(E)-h&&qc(f>32?ox(E+";",r,n,h-1):ox(Ie(E," ","")+";",r,n,h-2),l);break;case 59:E+=";";default:if(qc(b=sx(E,e,n,u,c,i,a,v,_=[],x=[],h),s),y===123)if(c===0)Ih(E,e,b,b,_,s,h,a,x);else switch(d===99&&kt(E,3)===110?100:d){case 100:case 108:case 109:case 115:Ih(t,b,b,r&&qc(sx(t,b,b,0,0,i,a,v,i,_=[],h),x),i,x,h,a,r?_:x);break;default:Ih(E,b,b,b,[""],x,0,a,x)}}u=c=f=0,m=g=1,v=E="",h=o;break;case 58:h=1+Er(E),f=p;default:if(m<1){if(y==123)--m;else if(y==125&&m++==0&&u4()==125)continue}switch(E+=Cf(y),y*m){case 38:g=c>0?1:(E+="\f",-1);break;case 44:a[u++]=(Er(E)-1)*g,g=1;break;case 64:Nr()===45&&(E+=Ch(En())),d=Nr(),c=h=Er(v=E+=f4(kh())),y++;break;case 45:p===45&&Er(E)==2&&(m=0)}}return s}function sx(t,e,n,r,i,s,o,a,l,u,c){for(var h=i-1,d=i===0?s:[""],f=w0(d),p=0,m=0,w=0;p0?d[g]+" "+y:Ie(y,/&\f/g,d[g])))&&(l[w++]=v);return Pf(t,e,n,i===0?v0:a,l,u,c)}function m4(t,e,n){return Pf(t,e,n,xC,Cf(l4()),yu(t,2,-2),0)}function ox(t,e,n,r){return Pf(t,e,n,_0,yu(t,0,r),yu(t,r+1,-1),r)}function ra(t,e){for(var n="",r=w0(t),i=0;i6)switch(kt(t,e+1)){case 109:if(kt(t,e+4)!==45)break;case 102:return Ie(t,/(.+:)(.+)-([^]+)/,"$1"+Ce+"$2-$3$1"+_d+(kt(t,e+3)==108?"$3":"$2-$3"))+t;case 115:return~fy(t,"stretch")?CC(Ie(t,"stretch","fill-available"),e)+t:t}break;case 4949:if(kt(t,e+1)!==115)break;case 6444:switch(kt(t,Er(t)-3-(~fy(t,"!important")&&10))){case 107:return Ie(t,":",":"+Ce)+t;case 101:return Ie(t,/(.+:)([^;!]+)(;|!.+)?/,"$1"+Ce+(kt(t,14)===45?"inline-":"")+"box$3$1"+Ce+"$2$3$1"+Lt+"$2box$3")+t}break;case 5936:switch(kt(t,e+11)){case 114:return Ce+t+Lt+Ie(t,/[svh]\w+-[tblr]{2}/,"tb")+t;case 108:return Ce+t+Lt+Ie(t,/[svh]\w+-[tblr]{2}/,"tb-rl")+t;case 45:return Ce+t+Lt+Ie(t,/[svh]\w+-[tblr]{2}/,"lr")+t}return Ce+t+Lt+t+t}return t}var T4=function(e,n,r,i){if(e.length>-1&&!e.return)switch(e.type){case _0:e.return=CC(e.value,e.length);break;case bC:return ra([cl(e,{value:Ie(e.value,"@","@"+Ce)})],i);case v0:if(e.length)return a4(e.props,function(s){switch(o4(s,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return ra([cl(e,{props:[Ie(s,/:(read-\w+)/,":"+_d+"$1")]})],i);case"::placeholder":return ra([cl(e,{props:[Ie(s,/:(plac\w+)/,":"+Ce+"input-$1")]}),cl(e,{props:[Ie(s,/:(plac\w+)/,":"+_d+"$1")]}),cl(e,{props:[Ie(s,/:(plac\w+)/,Lt+"input-$1")]})],i)}return""})}},S4=[T4],k4=function(e){var n=e.key;if(n==="css"){var r=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(r,function(m){var w=m.getAttribute("data-emotion");w.indexOf(" ")!==-1&&(document.head.appendChild(m),m.setAttribute("data-s",""))})}var i=e.stylisPlugins||S4,s={},o,a=[];o=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(m){for(var w=m.getAttribute("data-emotion").split(" "),g=1;g=4;++r,i-=4)n=t.charCodeAt(r)&255|(t.charCodeAt(++r)&255)<<8|(t.charCodeAt(++r)&255)<<16|(t.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,e=(n&65535)*1540483477+((n>>>16)*59797<<16)^(e&65535)*1540483477+((e>>>16)*59797<<16);switch(i){case 3:e^=(t.charCodeAt(r+2)&255)<<16;case 2:e^=(t.charCodeAt(r+1)&255)<<8;case 1:e^=t.charCodeAt(r)&255,e=(e&65535)*1540483477+((e>>>16)*59797<<16)}return e^=e>>>13,e=(e&65535)*1540483477+((e>>>16)*59797<<16),((e^e>>>15)>>>0).toString(36)}var V4={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},z4=/[A-Z]|^ms/g,U4=/_EMO_([^_]+?)_([^]*?)_EMO_/g,OC=function(e){return e.charCodeAt(1)===45},lx=function(e){return e!=null&&typeof e!="boolean"},wm=wC(function(t){return OC(t)?t:t.replace(z4,"-$&").toLowerCase()}),ux=function(e,n){switch(e){case"animation":case"animationName":if(typeof n=="string")return n.replace(U4,function(r,i,s){return Tr={name:i,styles:s,next:Tr},i})}return V4[e]!==1&&!OC(e)&&typeof n=="number"&&n!==0?n+"px":n};function _u(t,e,n){if(n==null)return"";if(n.__emotion_styles!==void 0)return n;switch(typeof n){case"boolean":return"";case"object":{if(n.anim===1)return Tr={name:n.name,styles:n.styles,next:Tr},n.name;if(n.styles!==void 0){var r=n.next;if(r!==void 0)for(;r!==void 0;)Tr={name:r.name,styles:r.styles,next:Tr},r=r.next;var i=n.styles+";";return i}return j4(t,e,n)}case"function":{if(t!==void 0){var s=Tr,o=n(t);return Tr=s,_u(t,e,o)}break}}if(e==null)return n;var a=e[n];return a!==void 0?a:n}function j4(t,e,n){var r="";if(Array.isArray(n))for(var i=0;i96?G4:K4},dx=function(e,n,r){var i;if(n){var s=n.shouldForwardProp;i=e.__emotion_forwardProp&&s?function(o){return e.__emotion_forwardProp(o)&&s(o)}:s}return typeof i!="function"&&r&&(i=e.__emotion_forwardProp),i},Q4=function(e){var n=e.cache,r=e.serialized,i=e.isStringTag;return MC(n,r,i),W4(function(){return L4(n,r,i)}),null},Y4=function t(e,n){var r=e.__emotion_real===e,i=r&&e.__emotion_base||e,s,o;n!==void 0&&(s=n.label,o=n.target);var a=dx(e,n,r),l=a||hx(i),u=!l("as");return function(){var c=arguments,h=r&&e.__emotion_styles!==void 0?e.__emotion_styles.slice(0):[];if(s!==void 0&&h.push("label:"+s+";"),c[0]==null||c[0].raw===void 0)h.push.apply(h,c);else{h.push(c[0][0]);for(var d=c.length,f=1;f{Array.isArray(t.__emotion_styles)&&(t.__emotion_styles=e(t.__emotion_styles))},Z4=["values","unit","step"],eF=t=>{const e=Object.keys(t).map(n=>({key:n,val:t[n]}))||[];return e.sort((n,r)=>n.val-r.val),e.reduce((n,r)=>I({},n,{[r.key]:r.val}),{})};function tF(t){const{values:e={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:r=5}=t,i=ue(t,Z4),s=eF(e),o=Object.keys(s);function a(d){return`@media (min-width:${typeof e[d]=="number"?e[d]:d}${n})`}function l(d){return`@media (max-width:${(typeof e[d]=="number"?e[d]:d)-r/100}${n})`}function u(d,f){const p=o.indexOf(f);return`@media (min-width:${typeof e[d]=="number"?e[d]:d}${n}) and (max-width:${(p!==-1&&typeof e[o[p]]=="number"?e[o[p]]:f)-r/100}${n})`}function c(d){return o.indexOf(d)+1`@media (min-width:${k0[t]}px)`};function Kn(t,e,n){const r=t.theme||{};if(Array.isArray(e)){const s=r.breakpoints||fx;return e.reduce((o,a,l)=>(o[s.up(s.keys[l])]=n(e[l]),o),{})}if(typeof e=="object"){const s=r.breakpoints||fx;return Object.keys(e).reduce((o,a)=>{if(Object.keys(s.values||k0).indexOf(a)!==-1){const l=s.up(a);o[l]=n(e[a],a)}else{const l=a;o[l]=e[l]}return o},{})}return n(e)}function iF(t={}){var e;return((e=t.keys)==null?void 0:e.reduce((r,i)=>{const s=t.up(i);return r[s]={},r},{}))||{}}function sF(t,e){return t.reduce((n,r)=>{const i=n[r];return(!i||Object.keys(i).length===0)&&delete n[r],n},e)}function oF(t,e){if(typeof t!="object")return{};const n={},r=Object.keys(e);return Array.isArray(t)?r.forEach((i,s)=>{s{t[i]!=null&&(n[i]=!0)}),n}function zf({values:t,breakpoints:e,base:n}){const r=n||oF(t,e),i=Object.keys(r);if(i.length===0)return t;let s;return i.reduce((o,a,l)=>(Array.isArray(t)?(o[a]=t[l]!=null?t[l]:t[s],s=l):typeof t=="object"?(o[a]=t[a]!=null?t[a]:t[s],s=a):o[a]=t,o),{})}function Uf(t,e,n=!0){if(!e||typeof e!="string")return null;if(t&&t.vars&&n){const r=`vars.${e}`.split(".").reduce((i,s)=>i&&i[s]?i[s]:null,t);if(r!=null)return r}return e.split(".").reduce((r,i)=>r&&r[i]!=null?r[i]:null,t)}function wd(t,e,n,r=n){let i;return typeof t=="function"?i=t(n):Array.isArray(t)?i=t[n]||r:i=Uf(t,n)||r,e&&(i=e(i,r,t)),i}function Ae(t){const{prop:e,cssProperty:n=t.prop,themeKey:r,transform:i}=t,s=o=>{if(o[e]==null)return null;const a=o[e],l=o.theme,u=Uf(l,r)||{};return Kn(o,a,h=>{let d=wd(u,i,h);return h===d&&typeof h=="string"&&(d=wd(u,i,`${e}${h==="default"?"":be(h)}`,h)),n===!1?d:{[n]:d}})};return s.propTypes={},s.filterProps=[e],s}function aF(t){const e={};return n=>(e[n]===void 0&&(e[n]=t(n)),e[n])}const lF={m:"margin",p:"padding"},uF={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},px={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},cF=aF(t=>{if(t.length>2)if(px[t])t=px[t];else return[t];const[e,n]=t.split(""),r=lF[e],i=uF[n]||"";return Array.isArray(i)?i.map(s=>r+s):[r+i]}),C0=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],I0=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"];[...C0,...I0];function sc(t,e,n,r){var i;const s=(i=Uf(t,e,!1))!=null?i:n;return typeof s=="number"?o=>typeof o=="string"?o:s*o:Array.isArray(s)?o=>typeof o=="string"?o:s[o]:typeof s=="function"?s:()=>{}}function LC(t){return sc(t,"spacing",8)}function oc(t,e){if(typeof e=="string"||e==null)return e;const n=Math.abs(e),r=t(n);return e>=0?r:typeof r=="number"?-r:`-${r}`}function hF(t,e){return n=>t.reduce((r,i)=>(r[i]=oc(e,n),r),{})}function dF(t,e,n,r){if(e.indexOf(n)===-1)return null;const i=cF(n),s=hF(i,r),o=t[n];return Kn(t,o,s)}function FC(t,e){const n=LC(t.theme);return Object.keys(t).map(r=>dF(t,e,r,n)).reduce(Vl,{})}function Ye(t){return FC(t,C0)}Ye.propTypes={};Ye.filterProps=C0;function Xe(t){return FC(t,I0)}Xe.propTypes={};Xe.filterProps=I0;function fF(t=8){if(t.mui)return t;const e=LC({spacing:t}),n=(...r)=>(r.length===0?[1]:r).map(s=>{const o=e(s);return typeof o=="number"?`${o}px`:o}).join(" ");return n.mui=!0,n}function jf(...t){const e=t.reduce((r,i)=>(i.filterProps.forEach(s=>{r[s]=i}),r),{}),n=r=>Object.keys(r).reduce((i,s)=>e[s]?Vl(i,e[s](r)):i,{});return n.propTypes={},n.filterProps=t.reduce((r,i)=>r.concat(i.filterProps),[]),n}function kr(t){return typeof t!="number"?t:`${t}px solid`}const pF=Ae({prop:"border",themeKey:"borders",transform:kr}),mF=Ae({prop:"borderTop",themeKey:"borders",transform:kr}),gF=Ae({prop:"borderRight",themeKey:"borders",transform:kr}),yF=Ae({prop:"borderBottom",themeKey:"borders",transform:kr}),vF=Ae({prop:"borderLeft",themeKey:"borders",transform:kr}),_F=Ae({prop:"borderColor",themeKey:"palette"}),wF=Ae({prop:"borderTopColor",themeKey:"palette"}),xF=Ae({prop:"borderRightColor",themeKey:"palette"}),bF=Ae({prop:"borderBottomColor",themeKey:"palette"}),EF=Ae({prop:"borderLeftColor",themeKey:"palette"}),Bf=t=>{if(t.borderRadius!==void 0&&t.borderRadius!==null){const e=sc(t.theme,"shape.borderRadius",4),n=r=>({borderRadius:oc(e,r)});return Kn(t,t.borderRadius,n)}return null};Bf.propTypes={};Bf.filterProps=["borderRadius"];jf(pF,mF,gF,yF,vF,_F,wF,xF,bF,EF,Bf);const Hf=t=>{if(t.gap!==void 0&&t.gap!==null){const e=sc(t.theme,"spacing",8),n=r=>({gap:oc(e,r)});return Kn(t,t.gap,n)}return null};Hf.propTypes={};Hf.filterProps=["gap"];const Wf=t=>{if(t.columnGap!==void 0&&t.columnGap!==null){const e=sc(t.theme,"spacing",8),n=r=>({columnGap:oc(e,r)});return Kn(t,t.columnGap,n)}return null};Wf.propTypes={};Wf.filterProps=["columnGap"];const qf=t=>{if(t.rowGap!==void 0&&t.rowGap!==null){const e=sc(t.theme,"spacing",8),n=r=>({rowGap:oc(e,r)});return Kn(t,t.rowGap,n)}return null};qf.propTypes={};qf.filterProps=["rowGap"];const TF=Ae({prop:"gridColumn"}),SF=Ae({prop:"gridRow"}),kF=Ae({prop:"gridAutoFlow"}),CF=Ae({prop:"gridAutoColumns"}),IF=Ae({prop:"gridAutoRows"}),PF=Ae({prop:"gridTemplateColumns"}),AF=Ae({prop:"gridTemplateRows"}),RF=Ae({prop:"gridTemplateAreas"}),MF=Ae({prop:"gridArea"});jf(Hf,Wf,qf,TF,SF,kF,CF,IF,PF,AF,RF,MF);function ia(t,e){return e==="grey"?e:t}const OF=Ae({prop:"color",themeKey:"palette",transform:ia}),DF=Ae({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:ia}),NF=Ae({prop:"backgroundColor",themeKey:"palette",transform:ia});jf(OF,DF,NF);function _n(t){return t<=1&&t!==0?`${t*100}%`:t}const $F=Ae({prop:"width",transform:_n}),P0=t=>{if(t.maxWidth!==void 0&&t.maxWidth!==null){const e=n=>{var r,i;const s=((r=t.theme)==null||(r=r.breakpoints)==null||(r=r.values)==null?void 0:r[n])||k0[n];return s?((i=t.theme)==null||(i=i.breakpoints)==null?void 0:i.unit)!=="px"?{maxWidth:`${s}${t.theme.breakpoints.unit}`}:{maxWidth:s}:{maxWidth:_n(n)}};return Kn(t,t.maxWidth,e)}return null};P0.filterProps=["maxWidth"];const LF=Ae({prop:"minWidth",transform:_n}),FF=Ae({prop:"height",transform:_n}),VF=Ae({prop:"maxHeight",transform:_n}),zF=Ae({prop:"minHeight",transform:_n});Ae({prop:"size",cssProperty:"width",transform:_n});Ae({prop:"size",cssProperty:"height",transform:_n});const UF=Ae({prop:"boxSizing"});jf($F,P0,LF,FF,VF,zF,UF);const jF={border:{themeKey:"borders",transform:kr},borderTop:{themeKey:"borders",transform:kr},borderRight:{themeKey:"borders",transform:kr},borderBottom:{themeKey:"borders",transform:kr},borderLeft:{themeKey:"borders",transform:kr},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:Bf},color:{themeKey:"palette",transform:ia},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:ia},backgroundColor:{themeKey:"palette",transform:ia},p:{style:Xe},pt:{style:Xe},pr:{style:Xe},pb:{style:Xe},pl:{style:Xe},px:{style:Xe},py:{style:Xe},padding:{style:Xe},paddingTop:{style:Xe},paddingRight:{style:Xe},paddingBottom:{style:Xe},paddingLeft:{style:Xe},paddingX:{style:Xe},paddingY:{style:Xe},paddingInline:{style:Xe},paddingInlineStart:{style:Xe},paddingInlineEnd:{style:Xe},paddingBlock:{style:Xe},paddingBlockStart:{style:Xe},paddingBlockEnd:{style:Xe},m:{style:Ye},mt:{style:Ye},mr:{style:Ye},mb:{style:Ye},ml:{style:Ye},mx:{style:Ye},my:{style:Ye},margin:{style:Ye},marginTop:{style:Ye},marginRight:{style:Ye},marginBottom:{style:Ye},marginLeft:{style:Ye},marginX:{style:Ye},marginY:{style:Ye},marginInline:{style:Ye},marginInlineStart:{style:Ye},marginInlineEnd:{style:Ye},marginBlock:{style:Ye},marginBlockStart:{style:Ye},marginBlockEnd:{style:Ye},displayPrint:{cssProperty:!1,transform:t=>({"@media print":{display:t}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:Hf},rowGap:{style:qf},columnGap:{style:Wf},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:_n},maxWidth:{style:P0},minWidth:{transform:_n},height:{transform:_n},maxHeight:{transform:_n},minHeight:{transform:_n},boxSizing:{},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}},Gf=jF;function BF(...t){const e=t.reduce((r,i)=>r.concat(Object.keys(i)),[]),n=new Set(e);return t.every(r=>n.size===Object.keys(r).length)}function HF(t,e){return typeof t=="function"?t(e):t}function WF(){function t(n,r,i,s){const o={[n]:r,theme:i},a=s[n];if(!a)return{[n]:r};const{cssProperty:l=n,themeKey:u,transform:c,style:h}=a;if(r==null)return null;if(u==="typography"&&r==="inherit")return{[n]:r};const d=Uf(i,u)||{};return h?h(o):Kn(o,r,p=>{let m=wd(d,c,p);return p===m&&typeof p=="string"&&(m=wd(d,c,`${n}${p==="default"?"":be(p)}`,p)),l===!1?m:{[l]:m}})}function e(n){var r;const{sx:i,theme:s={}}=n||{};if(!i)return null;const o=(r=s.unstable_sxConfig)!=null?r:Gf;function a(l){let u=l;if(typeof l=="function")u=l(s);else if(typeof l!="object")return l;if(!u)return null;const c=iF(s.breakpoints),h=Object.keys(c);let d=c;return Object.keys(u).forEach(f=>{const p=HF(u[f],s);if(p!=null)if(typeof p=="object")if(o[f])d=Vl(d,t(f,p,s,o));else{const m=Kn({theme:s},p,w=>({[f]:w}));BF(m,p)?d[f]=e({sx:p,theme:s}):d=Vl(d,m)}else d=Vl(d,t(f,p,s,o))}),sF(h,d)}return Array.isArray(i)?i.map(a):a(i)}return e}const VC=WF();VC.filterProps=["sx"];const Kf=VC,qF=["breakpoints","palette","spacing","shape"];function A0(t={},...e){const{breakpoints:n={},palette:r={},spacing:i,shape:s={}}=t,o=ue(t,qF),a=tF(n),l=fF(i);let u=ar({breakpoints:a,direction:"ltr",components:{},palette:I({mode:"light"},r),spacing:l,shape:I({},rF,s)},o);return u=e.reduce((c,h)=>ar(c,h),u),u.unstable_sxConfig=I({},Gf,o==null?void 0:o.unstable_sxConfig),u.unstable_sx=function(h){return Kf({sx:h,theme:this})},u}function GF(t){return Object.keys(t).length===0}function zC(t=null){const e=T.useContext(T0);return!e||GF(e)?t:e}const KF=A0();function R0(t=KF){return zC(t)}const QF=["sx"],YF=t=>{var e,n;const r={systemProps:{},otherProps:{}},i=(e=t==null||(n=t.theme)==null?void 0:n.unstable_sxConfig)!=null?e:Gf;return Object.keys(t).forEach(s=>{i[s]?r.systemProps[s]=t[s]:r.otherProps[s]=t[s]}),r};function M0(t){const{sx:e}=t,n=ue(t,QF),{systemProps:r,otherProps:i}=YF(n);let s;return Array.isArray(e)?s=[r,...e]:typeof e=="function"?s=(...o)=>{const a=e(...o);return Qr(a)?I({},r,a):r}:s=I({},r,e),I({},i,{sx:s})}function UC(t){var e,n,r="";if(typeof t=="string"||typeof t=="number")r+=t;else if(typeof t=="object")if(Array.isArray(t))for(e=0;ea!=="theme"&&a!=="sx"&&a!=="as"})(Kf);return T.forwardRef(function(l,u){const c=R0(n),h=M0(l),{className:d,component:f="div"}=h,p=ue(h,XF);return k.jsx(s,I({as:f,ref:u,className:$e(d,i?i(r):r),theme:e&&c[e]||c},p))})}const JF=jC(),ZF=JF,eV=["variant"];function mx(t){return t.length===0}function BC(t){const{variant:e}=t,n=ue(t,eV);let r=e||"";return Object.keys(n).sort().forEach(i=>{i==="color"?r+=mx(r)?t[i]:be(t[i]):r+=`${mx(r)?i:be(i)}${be(t[i].toString())}`}),r}const tV=["name","slot","skipVariantsResolver","skipSx","overridesResolver"];function nV(t){return Object.keys(t).length===0}function rV(t){return typeof t=="string"&&t.charCodeAt(0)>96}const iV=(t,e)=>e.components&&e.components[t]&&e.components[t].styleOverrides?e.components[t].styleOverrides:null,xd=t=>{const e={};return t&&t.forEach(n=>{const r=BC(n.props);e[r]=n.style}),e},sV=(t,e)=>{let n=[];return e&&e.components&&e.components[t]&&e.components[t].variants&&(n=e.components[t].variants),xd(n)},bd=(t,e,n)=>{const{ownerState:r={}}=t,i=[];return n&&n.forEach(s=>{let o=!0;Object.keys(s.props).forEach(a=>{r[a]!==s.props[a]&&t[a]!==s.props[a]&&(o=!1)}),o&&i.push(e[BC(s.props)])}),i},oV=(t,e,n,r)=>{var i;const s=n==null||(i=n.components)==null||(i=i[r])==null?void 0:i.variants;return bd(t,e,s)};function Ph(t){return t!=="ownerState"&&t!=="theme"&&t!=="sx"&&t!=="as"}const aV=A0(),lV=t=>t&&t.charAt(0).toLowerCase()+t.slice(1);function Ah({defaultTheme:t,theme:e,themeId:n}){return nV(e)?t:e[n]||e}function uV(t){return t?(e,n)=>n[t]:null}const gx=({styledArg:t,props:e,defaultTheme:n,themeId:r})=>{const i=t(I({},e,{theme:Ah(I({},e,{defaultTheme:n,themeId:r}))}));let s;if(i&&i.variants&&(s=i.variants,delete i.variants),s){const o=bd(e,xd(s),s);return[i,...o]}return i};function cV(t={}){const{themeId:e,defaultTheme:n=aV,rootShouldForwardProp:r=Ph,slotShouldForwardProp:i=Ph}=t,s=o=>Kf(I({},o,{theme:Ah(I({},o,{defaultTheme:n,themeId:e}))}));return s.__mui_systemSx=!0,(o,a={})=>{J4(o,_=>_.filter(x=>!(x!=null&&x.__mui_systemSx)));const{name:l,slot:u,skipVariantsResolver:c,skipSx:h,overridesResolver:d=uV(lV(u))}=a,f=ue(a,tV),p=c!==void 0?c:u&&u!=="Root"&&u!=="root"||!1,m=h||!1;let w,g=Ph;u==="Root"||u==="root"?g=r:u?g=i:rV(o)&&(g=void 0);const y=$C(o,I({shouldForwardProp:g,label:w},f)),v=(_,...x)=>{const b=x?x.map(S=>{if(typeof S=="function"&&S.__emotion_real!==S)return P=>gx({styledArg:S,props:P,defaultTheme:n,themeId:e});if(Qr(S)){let P=S,M;return S&&S.variants&&(M=S.variants,delete P.variants,P=D=>{let $=S;return bd(D,xd(M),M).forEach(F=>{$=ar($,F)}),$}),P}return S}):[];let E=_;if(Qr(_)){let S;_&&_.variants&&(S=_.variants,delete E.variants,E=P=>{let M=_;return bd(P,xd(S),S).forEach($=>{M=ar(M,$)}),M})}else typeof _=="function"&&_.__emotion_real!==_&&(E=S=>gx({styledArg:_,props:S,defaultTheme:n,themeId:e}));l&&d&&b.push(S=>{const P=Ah(I({},S,{defaultTheme:n,themeId:e})),M=iV(l,P);if(M){const D={};return Object.entries(M).forEach(([$,B])=>{D[$]=typeof B=="function"?B(I({},S,{theme:P})):B}),d(S,D)}return null}),l&&!p&&b.push(S=>{const P=Ah(I({},S,{defaultTheme:n,themeId:e}));return oV(S,sV(l,P),P,l)}),m||b.push(s);const C=b.length-x.length;if(Array.isArray(_)&&C>0){const S=new Array(C).fill("");E=[..._,...S],E.raw=[..._.raw,...S]}const A=y(E,...b);return o.muiName&&(A.muiName=o.muiName),A};return y.withConfig&&(v.withConfig=y.withConfig),v}}function hV(t){const{theme:e,name:n,props:r}=t;return!e||!e.components||!e.components[n]||!e.components[n].defaultProps?r:g0(e.components[n].defaultProps,r)}function dV({props:t,name:e,defaultTheme:n,themeId:r}){let i=R0(n);return r&&(i=i[r]||i),hV({theme:i,name:e,props:t})}function O0(t,e=0,n=1){return Math.min(Math.max(e,t),n)}function fV(t){t=t.slice(1);const e=new RegExp(`.{1,${t.length>=6?2:1}}`,"g");let n=t.match(e);return n&&n[0].length===1&&(n=n.map(r=>r+r)),n?`rgb${n.length===4?"a":""}(${n.map((r,i)=>i<3?parseInt(r,16):Math.round(parseInt(r,16)/255*1e3)/1e3).join(", ")})`:""}function Xs(t){if(t.type)return t;if(t.charAt(0)==="#")return Xs(fV(t));const e=t.indexOf("("),n=t.substring(0,e);if(["rgb","rgba","hsl","hsla","color"].indexOf(n)===-1)throw new Error(_a(9,t));let r=t.substring(e+1,t.length-1),i;if(n==="color"){if(r=r.split(" "),i=r.shift(),r.length===4&&r[3].charAt(0)==="/"&&(r[3]=r[3].slice(1)),["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(i)===-1)throw new Error(_a(10,i))}else r=r.split(",");return r=r.map(s=>parseFloat(s)),{type:n,values:r,colorSpace:i}}function Qf(t){const{type:e,colorSpace:n}=t;let{values:r}=t;return e.indexOf("rgb")!==-1?r=r.map((i,s)=>s<3?parseInt(i,10):i):e.indexOf("hsl")!==-1&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),e.indexOf("color")!==-1?r=`${n} ${r.join(" ")}`:r=`${r.join(", ")}`,`${e}(${r})`}function pV(t){t=Xs(t);const{values:e}=t,n=e[0],r=e[1]/100,i=e[2]/100,s=r*Math.min(i,1-i),o=(u,c=(u+n/30)%12)=>i-s*Math.max(Math.min(c-3,9-c,1),-1);let a="rgb";const l=[Math.round(o(0)*255),Math.round(o(8)*255),Math.round(o(4)*255)];return t.type==="hsla"&&(a+="a",l.push(e[3])),Qf({type:a,values:l})}function yx(t){t=Xs(t);let e=t.type==="hsl"||t.type==="hsla"?Xs(pV(t)).values:t.values;return e=e.map(n=>(t.type!=="color"&&(n/=255),n<=.03928?n/12.92:((n+.055)/1.055)**2.4)),Number((.2126*e[0]+.7152*e[1]+.0722*e[2]).toFixed(3))}function mV(t,e){const n=yx(t),r=yx(e);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function Ui(t,e){return t=Xs(t),e=O0(e),(t.type==="rgb"||t.type==="hsl")&&(t.type+="a"),t.type==="color"?t.values[3]=`/${e}`:t.values[3]=e,Qf(t)}function gV(t,e){if(t=Xs(t),e=O0(e),t.type.indexOf("hsl")!==-1)t.values[2]*=1-e;else if(t.type.indexOf("rgb")!==-1||t.type.indexOf("color")!==-1)for(let n=0;n<3;n+=1)t.values[n]*=1-e;return Qf(t)}function yV(t,e){if(t=Xs(t),e=O0(e),t.type.indexOf("hsl")!==-1)t.values[2]+=(100-t.values[2])*e;else if(t.type.indexOf("rgb")!==-1)for(let n=0;n<3;n+=1)t.values[n]+=(255-t.values[n])*e;else if(t.type.indexOf("color")!==-1)for(let n=0;n<3;n+=1)t.values[n]+=(1-t.values[n])*e;return Qf(t)}const vV=T.createContext(null),HC=vV;function WC(){return T.useContext(HC)}const _V=typeof Symbol=="function"&&Symbol.for,wV=_V?Symbol.for("mui.nested"):"__THEME_NESTED__";function xV(t,e){return typeof e=="function"?e(t):I({},t,e)}function bV(t){const{children:e,theme:n}=t,r=WC(),i=T.useMemo(()=>{const s=r===null?n:xV(r,n);return s!=null&&(s[wV]=r!==null),s},[n,r]);return k.jsx(HC.Provider,{value:i,children:e})}const vx={};function _x(t,e,n,r=!1){return T.useMemo(()=>{const i=t&&e[t]||e;if(typeof n=="function"){const s=n(i),o=t?I({},e,{[t]:s}):s;return r?()=>o:o}return t?I({},e,{[t]:n}):I({},e,n)},[t,e,n,r])}function EV(t){const{children:e,theme:n,themeId:r}=t,i=zC(vx),s=WC()||vx,o=_x(r,i,n),a=_x(r,s,n,!0);return k.jsx(bV,{theme:a,children:k.jsx(T0.Provider,{value:o,children:e})})}function TV(t,e){return I({toolbar:{minHeight:56,[t.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[t.up("sm")]:{minHeight:64}}},e)}const SV=["mode","contrastThreshold","tonalOffset"],wx={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:gu.white,default:gu.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}},xm={text:{primary:gu.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:gu.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function xx(t,e,n,r){const i=r.light||r,s=r.dark||r*1.5;t[e]||(t.hasOwnProperty(n)?t[e]=t[n]:e==="light"?t.light=yV(t.main,i):e==="dark"&&(t.dark=gV(t.main,s)))}function kV(t="light"){return t==="dark"?{main:bo[200],light:bo[50],dark:bo[400]}:{main:bo[700],light:bo[400],dark:bo[800]}}function CV(t="light"){return t==="dark"?{main:xo[200],light:xo[50],dark:xo[400]}:{main:xo[500],light:xo[300],dark:xo[700]}}function IV(t="light"){return t==="dark"?{main:wo[500],light:wo[300],dark:wo[700]}:{main:wo[700],light:wo[400],dark:wo[800]}}function PV(t="light"){return t==="dark"?{main:Eo[400],light:Eo[300],dark:Eo[700]}:{main:Eo[700],light:Eo[500],dark:Eo[900]}}function AV(t="light"){return t==="dark"?{main:To[400],light:To[300],dark:To[700]}:{main:To[800],light:To[500],dark:To[900]}}function RV(t="light"){return t==="dark"?{main:ul[400],light:ul[300],dark:ul[700]}:{main:"#ed6c02",light:ul[500],dark:ul[900]}}function MV(t){const{mode:e="light",contrastThreshold:n=3,tonalOffset:r=.2}=t,i=ue(t,SV),s=t.primary||kV(e),o=t.secondary||CV(e),a=t.error||IV(e),l=t.info||PV(e),u=t.success||AV(e),c=t.warning||RV(e);function h(m){return mV(m,xm.text.primary)>=n?xm.text.primary:wx.text.primary}const d=({color:m,name:w,mainShade:g=500,lightShade:y=300,darkShade:v=700})=>{if(m=I({},m),!m.main&&m[g]&&(m.main=m[g]),!m.hasOwnProperty("main"))throw new Error(_a(11,w?` (${w})`:"",g));if(typeof m.main!="string")throw new Error(_a(12,w?` (${w})`:"",JSON.stringify(m.main)));return xx(m,"light",y,r),xx(m,"dark",v,r),m.contrastText||(m.contrastText=h(m.main)),m},f={dark:xm,light:wx};return ar(I({common:I({},gu),mode:e,primary:d({color:s,name:"primary"}),secondary:d({color:o,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:d({color:a,name:"error"}),warning:d({color:c,name:"warning"}),info:d({color:l,name:"info"}),success:d({color:u,name:"success"}),grey:kL,contrastThreshold:n,getContrastText:h,augmentColor:d,tonalOffset:r},f[e]),i)}const OV=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"];function DV(t){return Math.round(t*1e5)/1e5}const bx={textTransform:"uppercase"},Ex='"Roboto", "Helvetica", "Arial", sans-serif';function NV(t,e){const n=typeof e=="function"?e(t):e,{fontFamily:r=Ex,fontSize:i=14,fontWeightLight:s=300,fontWeightRegular:o=400,fontWeightMedium:a=500,fontWeightBold:l=700,htmlFontSize:u=16,allVariants:c,pxToRem:h}=n,d=ue(n,OV),f=i/14,p=h||(g=>`${g/u*f}rem`),m=(g,y,v,_,x)=>I({fontFamily:r,fontWeight:g,fontSize:p(y),lineHeight:v},r===Ex?{letterSpacing:`${DV(_/y)}em`}:{},x,c),w={h1:m(s,96,1.167,-1.5),h2:m(s,60,1.2,-.5),h3:m(o,48,1.167,0),h4:m(o,34,1.235,.25),h5:m(o,24,1.334,0),h6:m(a,20,1.6,.15),subtitle1:m(o,16,1.75,.15),subtitle2:m(a,14,1.57,.1),body1:m(o,16,1.5,.15),body2:m(o,14,1.43,.15),button:m(a,14,1.75,.4,bx),caption:m(o,12,1.66,.4),overline:m(o,12,2.66,1,bx),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return ar(I({htmlFontSize:u,pxToRem:p,fontFamily:r,fontSize:i,fontWeightLight:s,fontWeightRegular:o,fontWeightMedium:a,fontWeightBold:l},w),d,{clone:!1})}const $V=.2,LV=.14,FV=.12;function Be(...t){return[`${t[0]}px ${t[1]}px ${t[2]}px ${t[3]}px rgba(0,0,0,${$V})`,`${t[4]}px ${t[5]}px ${t[6]}px ${t[7]}px rgba(0,0,0,${LV})`,`${t[8]}px ${t[9]}px ${t[10]}px ${t[11]}px rgba(0,0,0,${FV})`].join(",")}const VV=["none",Be(0,2,1,-1,0,1,1,0,0,1,3,0),Be(0,3,1,-2,0,2,2,0,0,1,5,0),Be(0,3,3,-2,0,3,4,0,0,1,8,0),Be(0,2,4,-1,0,4,5,0,0,1,10,0),Be(0,3,5,-1,0,5,8,0,0,1,14,0),Be(0,3,5,-1,0,6,10,0,0,1,18,0),Be(0,4,5,-2,0,7,10,1,0,2,16,1),Be(0,5,5,-3,0,8,10,1,0,3,14,2),Be(0,5,6,-3,0,9,12,1,0,3,16,2),Be(0,6,6,-3,0,10,14,1,0,4,18,3),Be(0,6,7,-4,0,11,15,1,0,4,20,3),Be(0,7,8,-4,0,12,17,2,0,5,22,4),Be(0,7,8,-4,0,13,19,2,0,5,24,4),Be(0,7,9,-4,0,14,21,2,0,5,26,4),Be(0,8,9,-5,0,15,22,2,0,6,28,5),Be(0,8,10,-5,0,16,24,2,0,6,30,5),Be(0,8,11,-5,0,17,26,2,0,6,32,5),Be(0,9,11,-5,0,18,28,2,0,7,34,6),Be(0,9,12,-6,0,19,29,2,0,7,36,6),Be(0,10,13,-6,0,20,31,3,0,8,38,7),Be(0,10,13,-6,0,21,33,3,0,8,40,7),Be(0,10,14,-6,0,22,35,3,0,8,42,7),Be(0,11,14,-7,0,23,36,3,0,9,44,8),Be(0,11,15,-7,0,24,38,3,0,9,46,8)],zV=VV,UV=["duration","easing","delay"],jV={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},BV={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function Tx(t){return`${Math.round(t)}ms`}function HV(t){if(!t)return 0;const e=t/36;return Math.round((4+15*e**.25+e/5)*10)}function WV(t){const e=I({},jV,t.easing),n=I({},BV,t.duration);return I({getAutoHeightDuration:HV,create:(i=["all"],s={})=>{const{duration:o=n.standard,easing:a=e.easeInOut,delay:l=0}=s;return ue(s,UV),(Array.isArray(i)?i:[i]).map(u=>`${u} ${typeof o=="string"?o:Tx(o)} ${a} ${typeof l=="string"?l:Tx(l)}`).join(",")}},t,{easing:e,duration:n})}const qV={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500},GV=qV,KV=["breakpoints","mixins","spacing","palette","transitions","typography","shape"];function D0(t={},...e){const{mixins:n={},palette:r={},transitions:i={},typography:s={}}=t,o=ue(t,KV);if(t.vars)throw new Error(_a(18));const a=MV(r),l=A0(t);let u=ar(l,{mixins:TV(l.breakpoints,n),palette:a,shadows:zV.slice(),typography:NV(a,s),transitions:WV(i),zIndex:I({},GV)});return u=ar(u,o),u=e.reduce((c,h)=>ar(c,h),u),u.unstable_sxConfig=I({},Gf,o==null?void 0:o.unstable_sxConfig),u.unstable_sx=function(h){return Kf({sx:h,theme:this})},u}const QV=D0(),N0=QV;function lo(){const t=R0(N0);return t[wa]||t}function tn({props:t,name:e}){return dV({props:t,name:e,defaultTheme:N0,themeId:wa})}const qC=t=>Ph(t)&&t!=="classes",YV=cV({themeId:wa,defaultTheme:N0,rootShouldForwardProp:qC}),Te=YV,XV=["theme"];function JV(t){let{theme:e}=t,n=ue(t,XV);const r=e[wa];return k.jsx(EV,I({},n,{themeId:r?wa:void 0,theme:r||e}))}const ZV=t=>{let e;return t<1?e=5.11916*t**2:e=4.5*Math.log(t+1)+2,(e/100).toFixed(2)},Sx=ZV;function e5(t){return ut("MuiSvgIcon",t)}ct("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);const t5=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],n5=t=>{const{color:e,fontSize:n,classes:r}=t,i={root:["root",e!=="inherit"&&`color${be(e)}`,`fontSize${be(n)}`]};return lt(i,e5,r)},r5=Te("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,n.color!=="inherit"&&e[`color${be(n.color)}`],e[`fontSize${be(n.fontSize)}`]]}})(({theme:t,ownerState:e})=>{var n,r,i,s,o,a,l,u,c,h,d,f,p;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:e.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:(n=t.transitions)==null||(r=n.create)==null?void 0:r.call(n,"fill",{duration:(i=t.transitions)==null||(i=i.duration)==null?void 0:i.shorter}),fontSize:{inherit:"inherit",small:((s=t.typography)==null||(o=s.pxToRem)==null?void 0:o.call(s,20))||"1.25rem",medium:((a=t.typography)==null||(l=a.pxToRem)==null?void 0:l.call(a,24))||"1.5rem",large:((u=t.typography)==null||(c=u.pxToRem)==null?void 0:c.call(u,35))||"2.1875rem"}[e.fontSize],color:(h=(d=(t.vars||t).palette)==null||(d=d[e.color])==null?void 0:d.main)!=null?h:{action:(f=(t.vars||t).palette)==null||(f=f.action)==null?void 0:f.active,disabled:(p=(t.vars||t).palette)==null||(p=p.action)==null?void 0:p.disabled,inherit:void 0}[e.color]}}),GC=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiSvgIcon"}),{children:i,className:s,color:o="inherit",component:a="svg",fontSize:l="medium",htmlColor:u,inheritViewBox:c=!1,titleAccess:h,viewBox:d="0 0 24 24"}=r,f=ue(r,t5),p=T.isValidElement(i)&&i.type==="svg",m=I({},r,{color:o,component:a,fontSize:l,instanceFontSize:e.fontSize,inheritViewBox:c,viewBox:d,hasSvgAsChild:p}),w={};c||(w.viewBox=d);const g=n5(m);return k.jsxs(r5,I({as:a,className:$e(g.root,s),focusable:"false",color:u,"aria-hidden":h?void 0:!0,role:h?"img":void 0,ref:n},w,f,p&&i.props,{ownerState:m,children:[p?i.props.children:i,h?k.jsx("title",{children:h}):null]}))});GC.muiName="SvgIcon";const kx=GC;function i5(t,e){function n(r,i){return k.jsx(kx,I({"data-testid":`${e}Icon`,ref:i},r,{children:t}))}return n.muiName=kx.muiName,T.memo(T.forwardRef(n))}const s5={configure:t=>{y0.configure(t)}},o5=Object.freeze(Object.defineProperty({__proto__:null,capitalize:be,createChainedFunction:hy,createSvgIcon:i5,debounce:ML,deprecatedPropType:OL,isMuiElement:DL,ownerDocument:lr,ownerWindow:nc,requirePropFactory:NL,setRef:vd,unstable_ClassNameGenerator:s5,unstable_useEnhancedEffect:ss,unstable_useId:vC,unsupportedProp:FL,useControlled:VL,useEventCallback:Is,useForkRef:fr,useIsFocusVisible:_C},Symbol.toStringTag,{value:"Module"}));function gy(t,e){return gy=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},gy(t,e)}function KC(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,gy(t,e)}const Cx={disabled:!1},Ed=wn.createContext(null);var a5=function(e){return e.scrollTop},El="unmounted",bs="exited",Es="entering",Po="entered",yy="exiting",Ei=function(t){KC(e,t);function e(r,i){var s;s=t.call(this,r,i)||this;var o=i,a=o&&!o.isMounting?r.enter:r.appear,l;return s.appearStatus=null,r.in?a?(l=bs,s.appearStatus=Es):l=Po:r.unmountOnExit||r.mountOnEnter?l=El:l=bs,s.state={status:l},s.nextCallback=null,s}e.getDerivedStateFromProps=function(i,s){var o=i.in;return o&&s.status===El?{status:bs}:null};var n=e.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(i){var s=null;if(i!==this.props){var o=this.state.status;this.props.in?o!==Es&&o!==Po&&(s=Es):(o===Es||o===Po)&&(s=yy)}this.updateStatus(!1,s)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var i=this.props.timeout,s,o,a;return s=o=a=i,i!=null&&typeof i!="number"&&(s=i.exit,o=i.enter,a=i.appear!==void 0?i.appear:o),{exit:s,enter:o,appear:a}},n.updateStatus=function(i,s){if(i===void 0&&(i=!1),s!==null)if(this.cancelNextCallback(),s===Es){if(this.props.unmountOnExit||this.props.mountOnEnter){var o=this.props.nodeRef?this.props.nodeRef.current:Hc.findDOMNode(this);o&&a5(o)}this.performEnter(i)}else this.performExit();else this.props.unmountOnExit&&this.state.status===bs&&this.setState({status:El})},n.performEnter=function(i){var s=this,o=this.props.enter,a=this.context?this.context.isMounting:i,l=this.props.nodeRef?[a]:[Hc.findDOMNode(this),a],u=l[0],c=l[1],h=this.getTimeouts(),d=a?h.appear:h.enter;if(!i&&!o||Cx.disabled){this.safeSetState({status:Po},function(){s.props.onEntered(u)});return}this.props.onEnter(u,c),this.safeSetState({status:Es},function(){s.props.onEntering(u,c),s.onTransitionEnd(d,function(){s.safeSetState({status:Po},function(){s.props.onEntered(u,c)})})})},n.performExit=function(){var i=this,s=this.props.exit,o=this.getTimeouts(),a=this.props.nodeRef?void 0:Hc.findDOMNode(this);if(!s||Cx.disabled){this.safeSetState({status:bs},function(){i.props.onExited(a)});return}this.props.onExit(a),this.safeSetState({status:yy},function(){i.props.onExiting(a),i.onTransitionEnd(o.exit,function(){i.safeSetState({status:bs},function(){i.props.onExited(a)})})})},n.cancelNextCallback=function(){this.nextCallback!==null&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(i,s){s=this.setNextCallback(s),this.setState(i,s)},n.setNextCallback=function(i){var s=this,o=!0;return this.nextCallback=function(a){o&&(o=!1,s.nextCallback=null,i(a))},this.nextCallback.cancel=function(){o=!1},this.nextCallback},n.onTransitionEnd=function(i,s){this.setNextCallback(s);var o=this.props.nodeRef?this.props.nodeRef.current:Hc.findDOMNode(this),a=i==null&&!this.props.addEndListener;if(!o||a){setTimeout(this.nextCallback,0);return}if(this.props.addEndListener){var l=this.props.nodeRef?[this.nextCallback]:[o,this.nextCallback],u=l[0],c=l[1];this.props.addEndListener(u,c)}i!=null&&setTimeout(this.nextCallback,i)},n.render=function(){var i=this.state.status;if(i===El)return null;var s=this.props,o=s.children;s.in,s.mountOnEnter,s.unmountOnExit,s.appear,s.enter,s.exit,s.timeout,s.addEndListener,s.onEnter,s.onEntering,s.onEntered,s.onExit,s.onExiting,s.onExited,s.nodeRef;var a=ue(s,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return wn.createElement(Ed.Provider,{value:null},typeof o=="function"?o(i,a):wn.cloneElement(wn.Children.only(o),a))},e}(wn.Component);Ei.contextType=Ed;Ei.propTypes={};function So(){}Ei.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:So,onEntering:So,onEntered:So,onExit:So,onExiting:So,onExited:So};Ei.UNMOUNTED=El;Ei.EXITED=bs;Ei.ENTERING=Es;Ei.ENTERED=Po;Ei.EXITING=yy;const l5=Ei;function u5(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function $0(t,e){var n=function(s){return e&&T.isValidElement(s)?e(s):s},r=Object.create(null);return t&&T.Children.map(t,function(i){return i}).forEach(function(i){r[i.key]=n(i)}),r}function c5(t,e){t=t||{},e=e||{};function n(c){return c in e?e[c]:t[c]}var r=Object.create(null),i=[];for(var s in t)s in e?i.length&&(r[s]=i,i=[]):i.push(s);var o,a={};for(var l in e){if(r[l])for(o=0;ot.scrollTop;function Ix(t,e){var n,r;const{timeout:i,easing:s,style:o={}}=t;return{duration:(n=o.transitionDuration)!=null?n:typeof i=="number"?i:i[e.mode]||0,easing:(r=o.transitionTimingFunction)!=null?r:typeof s=="object"?s[e.mode]:s,delay:o.transitionDelay}}function y5(t){return ut("MuiPaper",t)}ct("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"]);const v5=["className","component","elevation","square","variant"],_5=t=>{const{square:e,elevation:n,variant:r,classes:i}=t,s={root:["root",r,!e&&"rounded",r==="elevation"&&`elevation${n}`]};return lt(s,y5,i)},w5=Te("div",{name:"MuiPaper",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,e[n.variant],!n.square&&e.rounded,n.variant==="elevation"&&e[`elevation${n.elevation}`]]}})(({theme:t,ownerState:e})=>{var n;return I({backgroundColor:(t.vars||t).palette.background.paper,color:(t.vars||t).palette.text.primary,transition:t.transitions.create("box-shadow")},!e.square&&{borderRadius:t.shape.borderRadius},e.variant==="outlined"&&{border:`1px solid ${(t.vars||t).palette.divider}`},e.variant==="elevation"&&I({boxShadow:(t.vars||t).shadows[e.elevation]},!t.vars&&t.palette.mode==="dark"&&{backgroundImage:`linear-gradient(${Ui("#fff",Sx(e.elevation))}, ${Ui("#fff",Sx(e.elevation))})`},t.vars&&{backgroundImage:(n=t.vars.overlays)==null?void 0:n[e.elevation]}))}),x5=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiPaper"}),{className:i,component:s="div",elevation:o=1,square:a=!1,variant:l="elevation"}=r,u=ue(r,v5),c=I({},r,{component:s,elevation:o,square:a,variant:l}),h=_5(c);return k.jsx(w5,I({as:s,ownerState:c,className:$e(h.root,i),ref:n},u))}),b5=x5;function E5(t){const{className:e,classes:n,pulsate:r=!1,rippleX:i,rippleY:s,rippleSize:o,in:a,onExited:l,timeout:u}=t,[c,h]=T.useState(!1),d=$e(e,n.ripple,n.rippleVisible,r&&n.ripplePulsate),f={width:o,height:o,top:-(o/2)+s,left:-(o/2)+i},p=$e(n.child,c&&n.childLeaving,r&&n.childPulsate);return!a&&!c&&h(!0),T.useEffect(()=>{if(!a&&l!=null){const m=setTimeout(l,u);return()=>{clearTimeout(m)}}},[l,a,u]),k.jsx("span",{className:d,style:f,children:k.jsx("span",{className:p})})}const T5=ct("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]),Ln=T5,S5=["center","classes","className"];let Yf=t=>t,Px,Ax,Rx,Mx;const vy=550,k5=80,C5=ic(Px||(Px=Yf` + 0% { + transform: scale(0); + opacity: 0.1; + } + + 100% { + transform: scale(1); + opacity: 0.3; + } +`)),I5=ic(Ax||(Ax=Yf` + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + } +`)),P5=ic(Rx||(Rx=Yf` + 0% { + transform: scale(1); + } + + 50% { + transform: scale(0.92); + } + + 100% { + transform: scale(1); + } +`)),A5=Te("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),R5=Te(E5,{name:"MuiTouchRipple",slot:"Ripple"})(Mx||(Mx=Yf` + opacity: 0; + position: absolute; + + &.${0} { + opacity: 0.3; + transform: scale(1); + animation-name: ${0}; + animation-duration: ${0}ms; + animation-timing-function: ${0}; + } + + &.${0} { + animation-duration: ${0}ms; + } + + & .${0} { + opacity: 1; + display: block; + width: 100%; + height: 100%; + border-radius: 50%; + background-color: currentColor; + } + + & .${0} { + opacity: 0; + animation-name: ${0}; + animation-duration: ${0}ms; + animation-timing-function: ${0}; + } + + & .${0} { + position: absolute; + /* @noflip */ + left: 0px; + top: 0; + animation-name: ${0}; + animation-duration: 2500ms; + animation-timing-function: ${0}; + animation-iteration-count: infinite; + animation-delay: 200ms; + } +`),Ln.rippleVisible,C5,vy,({theme:t})=>t.transitions.easing.easeInOut,Ln.ripplePulsate,({theme:t})=>t.transitions.duration.shorter,Ln.child,Ln.childLeaving,I5,vy,({theme:t})=>t.transitions.easing.easeInOut,Ln.childPulsate,P5,({theme:t})=>t.transitions.easing.easeInOut),M5=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiTouchRipple"}),{center:i=!1,classes:s={},className:o}=r,a=ue(r,S5),[l,u]=T.useState([]),c=T.useRef(0),h=T.useRef(null);T.useEffect(()=>{h.current&&(h.current(),h.current=null)},[l]);const d=T.useRef(!1),f=T.useRef(0),p=T.useRef(null),m=T.useRef(null);T.useEffect(()=>()=>{f.current&&clearTimeout(f.current)},[]);const w=T.useCallback(_=>{const{pulsate:x,rippleX:b,rippleY:E,rippleSize:C,cb:A}=_;u(S=>[...S,k.jsx(R5,{classes:{ripple:$e(s.ripple,Ln.ripple),rippleVisible:$e(s.rippleVisible,Ln.rippleVisible),ripplePulsate:$e(s.ripplePulsate,Ln.ripplePulsate),child:$e(s.child,Ln.child),childLeaving:$e(s.childLeaving,Ln.childLeaving),childPulsate:$e(s.childPulsate,Ln.childPulsate)},timeout:vy,pulsate:x,rippleX:b,rippleY:E,rippleSize:C},c.current)]),c.current+=1,h.current=A},[s]),g=T.useCallback((_={},x={},b=()=>{})=>{const{pulsate:E=!1,center:C=i||x.pulsate,fakeElement:A=!1}=x;if((_==null?void 0:_.type)==="mousedown"&&d.current){d.current=!1;return}(_==null?void 0:_.type)==="touchstart"&&(d.current=!0);const S=A?null:m.current,P=S?S.getBoundingClientRect():{width:0,height:0,left:0,top:0};let M,D,$;if(C||_===void 0||_.clientX===0&&_.clientY===0||!_.clientX&&!_.touches)M=Math.round(P.width/2),D=Math.round(P.height/2);else{const{clientX:B,clientY:F}=_.touches&&_.touches.length>0?_.touches[0]:_;M=Math.round(B-P.left),D=Math.round(F-P.top)}if(C)$=Math.sqrt((2*P.width**2+P.height**2)/3),$%2===0&&($+=1);else{const B=Math.max(Math.abs((S?S.clientWidth:0)-M),M)*2+2,F=Math.max(Math.abs((S?S.clientHeight:0)-D),D)*2+2;$=Math.sqrt(B**2+F**2)}_!=null&&_.touches?p.current===null&&(p.current=()=>{w({pulsate:E,rippleX:M,rippleY:D,rippleSize:$,cb:b})},f.current=setTimeout(()=>{p.current&&(p.current(),p.current=null)},k5)):w({pulsate:E,rippleX:M,rippleY:D,rippleSize:$,cb:b})},[i,w]),y=T.useCallback(()=>{g({},{pulsate:!0})},[g]),v=T.useCallback((_,x)=>{if(clearTimeout(f.current),(_==null?void 0:_.type)==="touchend"&&p.current){p.current(),p.current=null,f.current=setTimeout(()=>{v(_,x)});return}p.current=null,u(b=>b.length>0?b.slice(1):b),h.current=x},[]);return T.useImperativeHandle(n,()=>({pulsate:y,start:g,stop:v}),[y,g,v]),k.jsx(A5,I({className:$e(Ln.root,s.root,o),ref:m},a,{children:k.jsx(m5,{component:null,exit:!0,children:l})}))}),O5=M5;function D5(t){return ut("MuiButtonBase",t)}const N5=ct("MuiButtonBase",["root","disabled","focusVisible"]),$5=N5,L5=["action","centerRipple","children","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onBlur","onClick","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","type"],F5=t=>{const{disabled:e,focusVisible:n,focusVisibleClassName:r,classes:i}=t,o=lt({root:["root",e&&"disabled",n&&"focusVisible"]},D5,i);return n&&r&&(o.root+=` ${r}`),o},V5=Te("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(t,e)=>e.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${$5.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),z5=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiButtonBase"}),{action:i,centerRipple:s=!1,children:o,className:a,component:l="button",disabled:u=!1,disableRipple:c=!1,disableTouchRipple:h=!1,focusRipple:d=!1,LinkComponent:f="a",onBlur:p,onClick:m,onContextMenu:w,onDragLeave:g,onFocus:y,onFocusVisible:v,onKeyDown:_,onKeyUp:x,onMouseDown:b,onMouseLeave:E,onMouseUp:C,onTouchEnd:A,onTouchMove:S,onTouchStart:P,tabIndex:M=0,TouchRippleProps:D,touchRippleRef:$,type:B}=r,F=ue(r,L5),K=T.useRef(null),O=T.useRef(null),N=fr(O,$),{isFocusVisibleRef:L,onFocus:Q,onBlur:q,ref:Se}=_C(),[R,ve]=T.useState(!1);u&&R&&ve(!1),T.useImperativeHandle(i,()=>({focusVisible:()=>{ve(!0),K.current.focus()}}),[]);const[W,re]=T.useState(!1);T.useEffect(()=>{re(!0)},[]);const ke=W&&!c&&!u;T.useEffect(()=>{R&&d&&!c&&W&&O.current.pulsate()},[c,d,R,W]);function U(ce,vo,Vp=h){return Is(ys=>(vo&&vo(ys),!Vp&&O.current&&O.current[ce](ys),!0))}const Y=U("start",b),te=U("stop",w),z=U("stop",g),xe=U("stop",C),de=U("stop",ce=>{R&&ce.preventDefault(),E&&E(ce)}),nt=U("start",P),je=U("stop",A),nn=U("stop",S),Hr=U("stop",ce=>{q(ce),L.current===!1&&ve(!1),p&&p(ce)},!1),el=Is(ce=>{K.current||(K.current=ce.currentTarget),Q(ce),L.current===!0&&(ve(!0),v&&v(ce)),y&&y(ce)}),gn=()=>{const ce=K.current;return l&&l!=="button"&&!(ce.tagName==="A"&&ce.href)},Jn=T.useRef(!1),ki=Is(ce=>{d&&!Jn.current&&R&&O.current&&ce.key===" "&&(Jn.current=!0,O.current.stop(ce,()=>{O.current.start(ce)})),ce.target===ce.currentTarget&&gn()&&ce.key===" "&&ce.preventDefault(),_&&_(ce),ce.target===ce.currentTarget&&gn()&&ce.key==="Enter"&&!u&&(ce.preventDefault(),m&&m(ce))}),Ci=Is(ce=>{d&&ce.key===" "&&O.current&&R&&!ce.defaultPrevented&&(Jn.current=!1,O.current.stop(ce,()=>{O.current.pulsate(ce)})),x&&x(ce),m&&ce.target===ce.currentTarget&&gn()&&ce.key===" "&&!ce.defaultPrevented&&m(ce)});let wr=l;wr==="button"&&(F.href||F.to)&&(wr=f);const On={};wr==="button"?(On.type=B===void 0?"button":B,On.disabled=u):(!F.href&&!F.to&&(On.role="button"),u&&(On["aria-disabled"]=u));const Wr=fr(n,Se,K),Ii=I({},r,{centerRipple:s,component:l,disabled:u,disableRipple:c,disableTouchRipple:h,focusRipple:d,tabIndex:M,focusVisible:R}),yo=F5(Ii);return k.jsxs(V5,I({as:wr,className:$e(yo.root,a),ownerState:Ii,onBlur:Hr,onClick:m,onContextMenu:te,onFocus:el,onKeyDown:ki,onKeyUp:Ci,onMouseDown:Y,onMouseLeave:de,onMouseUp:xe,onDragLeave:z,onTouchEnd:je,onTouchMove:nn,onTouchStart:nt,ref:Wr,tabIndex:u?-1:M,type:B},On,F,{children:[o,ke?k.jsx(O5,I({ref:N,center:s},D)):null]}))}),QC=z5;function U5(t){return ut("MuiIconButton",t)}const j5=ct("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge"]),B5=j5,H5=["edge","children","className","color","disabled","disableFocusRipple","size"],W5=t=>{const{classes:e,disabled:n,color:r,edge:i,size:s}=t,o={root:["root",n&&"disabled",r!=="default"&&`color${be(r)}`,i&&`edge${be(i)}`,`size${be(s)}`]};return lt(o,U5,e)},q5=Te(QC,{name:"MuiIconButton",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,n.color!=="default"&&e[`color${be(n.color)}`],n.edge&&e[`edge${be(n.edge)}`],e[`size${be(n.size)}`]]}})(({theme:t,ownerState:e})=>I({textAlign:"center",flex:"0 0 auto",fontSize:t.typography.pxToRem(24),padding:8,borderRadius:"50%",overflow:"visible",color:(t.vars||t).palette.action.active,transition:t.transitions.create("background-color",{duration:t.transitions.duration.shortest})},!e.disableRipple&&{"&:hover":{backgroundColor:t.vars?`rgba(${t.vars.palette.action.activeChannel} / ${t.vars.palette.action.hoverOpacity})`:Ui(t.palette.action.active,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},e.edge==="start"&&{marginLeft:e.size==="small"?-3:-12},e.edge==="end"&&{marginRight:e.size==="small"?-3:-12}),({theme:t,ownerState:e})=>{var n;const r=(n=(t.vars||t).palette)==null?void 0:n[e.color];return I({},e.color==="inherit"&&{color:"inherit"},e.color!=="inherit"&&e.color!=="default"&&I({color:r==null?void 0:r.main},!e.disableRipple&&{"&:hover":I({},r&&{backgroundColor:t.vars?`rgba(${r.mainChannel} / ${t.vars.palette.action.hoverOpacity})`:Ui(r.main,t.palette.action.hoverOpacity)},{"@media (hover: none)":{backgroundColor:"transparent"}})}),e.size==="small"&&{padding:5,fontSize:t.typography.pxToRem(18)},e.size==="large"&&{padding:12,fontSize:t.typography.pxToRem(28)},{[`&.${B5.disabled}`]:{backgroundColor:"transparent",color:(t.vars||t).palette.action.disabled}})}),G5=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiIconButton"}),{edge:i=!1,children:s,className:o,color:a="default",disabled:l=!1,disableFocusRipple:u=!1,size:c="medium"}=r,h=ue(r,H5),d=I({},r,{edge:i,color:a,disabled:l,disableFocusRipple:u,size:c}),f=W5(d);return k.jsx(q5,I({className:$e(f.root,o),centerRipple:!0,focusRipple:!u,disabled:l,ref:n,ownerState:d},h,{children:s}))}),K5=G5;function Q5(t){return ut("MuiTypography",t)}ct("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);const Y5=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],X5=t=>{const{align:e,gutterBottom:n,noWrap:r,paragraph:i,variant:s,classes:o}=t,a={root:["root",s,t.align!=="inherit"&&`align${be(e)}`,n&&"gutterBottom",r&&"noWrap",i&&"paragraph"]};return lt(a,Q5,o)},J5=Te("span",{name:"MuiTypography",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,n.variant&&e[n.variant],n.align!=="inherit"&&e[`align${be(n.align)}`],n.noWrap&&e.noWrap,n.gutterBottom&&e.gutterBottom,n.paragraph&&e.paragraph]}})(({theme:t,ownerState:e})=>I({margin:0},e.variant==="inherit"&&{font:"inherit"},e.variant!=="inherit"&&t.typography[e.variant],e.align!=="inherit"&&{textAlign:e.align},e.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},e.gutterBottom&&{marginBottom:"0.35em"},e.paragraph&&{marginBottom:16})),Ox={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},Z5={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},ez=t=>Z5[t]||t,tz=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiTypography"}),i=ez(r.color),s=M0(I({},r,{color:i})),{align:o="inherit",className:a,component:l,gutterBottom:u=!1,noWrap:c=!1,paragraph:h=!1,variant:d="body1",variantMapping:f=Ox}=s,p=ue(s,Y5),m=I({},s,{align:o,color:i,className:a,component:l,gutterBottom:u,noWrap:c,paragraph:h,variant:d,variantMapping:f}),w=l||(h?"p":f[d]||Ox[d])||"span",g=X5(m);return k.jsx(J5,I({as:w,ref:n,ownerState:m,className:$e(g.root,a)},p))}),Xt=tz;function nz(t){return typeof t=="string"}function rz(t,e,n){return t===void 0||nz(t)?e:I({},e,{ownerState:I({},e.ownerState,n)})}const iz={disableDefaultClasses:!1},sz=T.createContext(iz);function oz(t){const{disableDefaultClasses:e}=T.useContext(sz);return n=>e?"":t(n)}function YC(t,e=[]){if(t===void 0)return{};const n={};return Object.keys(t).filter(r=>r.match(/^on[A-Z]/)&&typeof t[r]=="function"&&!e.includes(r)).forEach(r=>{n[r]=t[r]}),n}function az(t,e,n){return typeof t=="function"?t(e,n):t}function Dx(t){if(t===void 0)return{};const e={};return Object.keys(t).filter(n=>!(n.match(/^on[A-Z]/)&&typeof t[n]=="function")).forEach(n=>{e[n]=t[n]}),e}function lz(t){const{getSlotProps:e,additionalProps:n,externalSlotProps:r,externalForwardedProps:i,className:s}=t;if(!e){const f=$e(i==null?void 0:i.className,r==null?void 0:r.className,s,n==null?void 0:n.className),p=I({},n==null?void 0:n.style,i==null?void 0:i.style,r==null?void 0:r.style),m=I({},n,i,r);return f.length>0&&(m.className=f),Object.keys(p).length>0&&(m.style=p),{props:m,internalRef:void 0}}const o=YC(I({},i,r)),a=Dx(r),l=Dx(i),u=e(o),c=$e(u==null?void 0:u.className,n==null?void 0:n.className,s,i==null?void 0:i.className,r==null?void 0:r.className),h=I({},u==null?void 0:u.style,n==null?void 0:n.style,i==null?void 0:i.style,r==null?void 0:r.style),d=I({},u,n,l,a);return c.length>0&&(d.className=c),Object.keys(h).length>0&&(d.style=h),{props:d,internalRef:u.ref}}const uz=["elementType","externalSlotProps","ownerState","skipResolvingSlotProps"];function Cn(t){var e;const{elementType:n,externalSlotProps:r,ownerState:i,skipResolvingSlotProps:s=!1}=t,o=ue(t,uz),a=s?{}:az(r,i),{props:l,internalRef:u}=lz(I({},o,{externalSlotProps:a})),c=fr(u,a==null?void 0:a.ref,(e=t.additionalProps)==null?void 0:e.ref);return rz(n,I({},l,{ref:c}),i)}const cz=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])'].join(",");function hz(t){const e=parseInt(t.getAttribute("tabindex")||"",10);return Number.isNaN(e)?t.contentEditable==="true"||(t.nodeName==="AUDIO"||t.nodeName==="VIDEO"||t.nodeName==="DETAILS")&&t.getAttribute("tabindex")===null?0:t.tabIndex:e}function dz(t){if(t.tagName!=="INPUT"||t.type!=="radio"||!t.name)return!1;const e=r=>t.ownerDocument.querySelector(`input[type="radio"]${r}`);let n=e(`[name="${t.name}"]:checked`);return n||(n=e(`[name="${t.name}"]`)),n!==t}function fz(t){return!(t.disabled||t.tagName==="INPUT"&&t.type==="hidden"||dz(t))}function pz(t){const e=[],n=[];return Array.from(t.querySelectorAll(cz)).forEach((r,i)=>{const s=hz(r);s===-1||!fz(r)||(s===0?e.push(r):n.push({documentOrder:i,tabIndex:s,node:r}))}),n.sort((r,i)=>r.tabIndex===i.tabIndex?r.documentOrder-i.documentOrder:r.tabIndex-i.tabIndex).map(r=>r.node).concat(e)}function mz(){return!0}function gz(t){const{children:e,disableAutoFocus:n=!1,disableEnforceFocus:r=!1,disableRestoreFocus:i=!1,getTabbable:s=pz,isEnabled:o=mz,open:a}=t,l=T.useRef(!1),u=T.useRef(null),c=T.useRef(null),h=T.useRef(null),d=T.useRef(null),f=T.useRef(!1),p=T.useRef(null),m=fr(e.ref,p),w=T.useRef(null);T.useEffect(()=>{!a||!p.current||(f.current=!n)},[n,a]),T.useEffect(()=>{if(!a||!p.current)return;const v=lr(p.current);return p.current.contains(v.activeElement)||(p.current.hasAttribute("tabIndex")||p.current.setAttribute("tabIndex","-1"),f.current&&p.current.focus()),()=>{i||(h.current&&h.current.focus&&(l.current=!0,h.current.focus()),h.current=null)}},[a]),T.useEffect(()=>{if(!a||!p.current)return;const v=lr(p.current),_=E=>{w.current=E,!(r||!o()||E.key!=="Tab")&&v.activeElement===p.current&&E.shiftKey&&(l.current=!0,c.current&&c.current.focus())},x=()=>{const E=p.current;if(E===null)return;if(!v.hasFocus()||!o()||l.current){l.current=!1;return}if(E.contains(v.activeElement)||r&&v.activeElement!==u.current&&v.activeElement!==c.current)return;if(v.activeElement!==d.current)d.current=null;else if(d.current!==null)return;if(!f.current)return;let C=[];if((v.activeElement===u.current||v.activeElement===c.current)&&(C=s(p.current)),C.length>0){var A,S;const P=!!((A=w.current)!=null&&A.shiftKey&&((S=w.current)==null?void 0:S.key)==="Tab"),M=C[0],D=C[C.length-1];typeof M!="string"&&typeof D!="string"&&(P?D.focus():M.focus())}else E.focus()};v.addEventListener("focusin",x),v.addEventListener("keydown",_,!0);const b=setInterval(()=>{v.activeElement&&v.activeElement.tagName==="BODY"&&x()},50);return()=>{clearInterval(b),v.removeEventListener("focusin",x),v.removeEventListener("keydown",_,!0)}},[n,r,i,o,a,s]);const g=v=>{h.current===null&&(h.current=v.relatedTarget),f.current=!0,d.current=v.target;const _=e.props.onFocus;_&&_(v)},y=v=>{h.current===null&&(h.current=v.relatedTarget),f.current=!0};return k.jsxs(T.Fragment,{children:[k.jsx("div",{tabIndex:a?0:-1,onFocus:y,ref:u,"data-testid":"sentinelStart"}),T.cloneElement(e,{ref:m,onFocus:g}),k.jsx("div",{tabIndex:a?0:-1,onFocus:y,ref:c,"data-testid":"sentinelEnd"})]})}var hn="top",Qn="bottom",Yn="right",dn="left",F0="auto",ac=[hn,Qn,Yn,dn],ba="start",wu="end",yz="clippingParents",XC="viewport",hl="popper",vz="reference",Nx=ac.reduce(function(t,e){return t.concat([e+"-"+ba,e+"-"+wu])},[]),JC=[].concat(ac,[F0]).reduce(function(t,e){return t.concat([e,e+"-"+ba,e+"-"+wu])},[]),_z="beforeRead",wz="read",xz="afterRead",bz="beforeMain",Ez="main",Tz="afterMain",Sz="beforeWrite",kz="write",Cz="afterWrite",Iz=[_z,wz,xz,bz,Ez,Tz,Sz,kz,Cz];function Ur(t){return t?(t.nodeName||"").toLowerCase():null}function In(t){if(t==null)return window;if(t.toString()!=="[object Window]"){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Js(t){var e=In(t).Element;return t instanceof e||t instanceof Element}function Wn(t){var e=In(t).HTMLElement;return t instanceof e||t instanceof HTMLElement}function V0(t){if(typeof ShadowRoot>"u")return!1;var e=In(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Pz(t){var e=t.state;Object.keys(e.elements).forEach(function(n){var r=e.styles[n]||{},i=e.attributes[n]||{},s=e.elements[n];!Wn(s)||!Ur(s)||(Object.assign(s.style,r),Object.keys(i).forEach(function(o){var a=i[o];a===!1?s.removeAttribute(o):s.setAttribute(o,a===!0?"":a)}))})}function Az(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach(function(r){var i=e.elements[r],s=e.attributes[r]||{},o=Object.keys(e.styles.hasOwnProperty(r)?e.styles[r]:n[r]),a=o.reduce(function(l,u){return l[u]="",l},{});!Wn(i)||!Ur(i)||(Object.assign(i.style,a),Object.keys(s).forEach(function(l){i.removeAttribute(l)}))})}}const Rz={name:"applyStyles",enabled:!0,phase:"write",fn:Pz,effect:Az,requires:["computeStyles"]};function $r(t){return t.split("-")[0]}var Vs=Math.max,Td=Math.min,Ea=Math.round;function _y(){var t=navigator.userAgentData;return t!=null&&t.brands&&Array.isArray(t.brands)?t.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function ZC(){return!/^((?!chrome|android).)*safari/i.test(_y())}function Ta(t,e,n){e===void 0&&(e=!1),n===void 0&&(n=!1);var r=t.getBoundingClientRect(),i=1,s=1;e&&Wn(t)&&(i=t.offsetWidth>0&&Ea(r.width)/t.offsetWidth||1,s=t.offsetHeight>0&&Ea(r.height)/t.offsetHeight||1);var o=Js(t)?In(t):window,a=o.visualViewport,l=!ZC()&&n,u=(r.left+(l&&a?a.offsetLeft:0))/i,c=(r.top+(l&&a?a.offsetTop:0))/s,h=r.width/i,d=r.height/s;return{width:h,height:d,top:c,right:u+h,bottom:c+d,left:u,x:u,y:c}}function z0(t){var e=Ta(t),n=t.offsetWidth,r=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-r)<=1&&(r=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:r}}function eI(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&V0(n)){var r=e;do{if(r&&t.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function pi(t){return In(t).getComputedStyle(t)}function Mz(t){return["table","td","th"].indexOf(Ur(t))>=0}function fs(t){return((Js(t)?t.ownerDocument:t.document)||window.document).documentElement}function Xf(t){return Ur(t)==="html"?t:t.assignedSlot||t.parentNode||(V0(t)?t.host:null)||fs(t)}function $x(t){return!Wn(t)||pi(t).position==="fixed"?null:t.offsetParent}function Oz(t){var e=/firefox/i.test(_y()),n=/Trident/i.test(_y());if(n&&Wn(t)){var r=pi(t);if(r.position==="fixed")return null}var i=Xf(t);for(V0(i)&&(i=i.host);Wn(i)&&["html","body"].indexOf(Ur(i))<0;){var s=pi(i);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||e&&s.willChange==="filter"||e&&s.filter&&s.filter!=="none")return i;i=i.parentNode}return null}function lc(t){for(var e=In(t),n=$x(t);n&&Mz(n)&&pi(n).position==="static";)n=$x(n);return n&&(Ur(n)==="html"||Ur(n)==="body"&&pi(n).position==="static")?e:n||Oz(t)||e}function U0(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function zl(t,e,n){return Vs(t,Td(e,n))}function Dz(t,e,n){var r=zl(t,e,n);return r>n?n:r}function tI(){return{top:0,right:0,bottom:0,left:0}}function nI(t){return Object.assign({},tI(),t)}function rI(t,e){return e.reduce(function(n,r){return n[r]=t,n},{})}var Nz=function(e,n){return e=typeof e=="function"?e(Object.assign({},n.rects,{placement:n.placement})):e,nI(typeof e!="number"?e:rI(e,ac))};function $z(t){var e,n=t.state,r=t.name,i=t.options,s=n.elements.arrow,o=n.modifiersData.popperOffsets,a=$r(n.placement),l=U0(a),u=[dn,Yn].indexOf(a)>=0,c=u?"height":"width";if(!(!s||!o)){var h=Nz(i.padding,n),d=z0(s),f=l==="y"?hn:dn,p=l==="y"?Qn:Yn,m=n.rects.reference[c]+n.rects.reference[l]-o[l]-n.rects.popper[c],w=o[l]-n.rects.reference[l],g=lc(s),y=g?l==="y"?g.clientHeight||0:g.clientWidth||0:0,v=m/2-w/2,_=h[f],x=y-d[c]-h[p],b=y/2-d[c]/2+v,E=zl(_,b,x),C=l;n.modifiersData[r]=(e={},e[C]=E,e.centerOffset=E-b,e)}}function Lz(t){var e=t.state,n=t.options,r=n.element,i=r===void 0?"[data-popper-arrow]":r;i!=null&&(typeof i=="string"&&(i=e.elements.popper.querySelector(i),!i)||eI(e.elements.popper,i)&&(e.elements.arrow=i))}const Fz={name:"arrow",enabled:!0,phase:"main",fn:$z,effect:Lz,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Sa(t){return t.split("-")[1]}var Vz={top:"auto",right:"auto",bottom:"auto",left:"auto"};function zz(t,e){var n=t.x,r=t.y,i=e.devicePixelRatio||1;return{x:Ea(n*i)/i||0,y:Ea(r*i)/i||0}}function Lx(t){var e,n=t.popper,r=t.popperRect,i=t.placement,s=t.variation,o=t.offsets,a=t.position,l=t.gpuAcceleration,u=t.adaptive,c=t.roundOffsets,h=t.isFixed,d=o.x,f=d===void 0?0:d,p=o.y,m=p===void 0?0:p,w=typeof c=="function"?c({x:f,y:m}):{x:f,y:m};f=w.x,m=w.y;var g=o.hasOwnProperty("x"),y=o.hasOwnProperty("y"),v=dn,_=hn,x=window;if(u){var b=lc(n),E="clientHeight",C="clientWidth";if(b===In(n)&&(b=fs(n),pi(b).position!=="static"&&a==="absolute"&&(E="scrollHeight",C="scrollWidth")),b=b,i===hn||(i===dn||i===Yn)&&s===wu){_=Qn;var A=h&&b===x&&x.visualViewport?x.visualViewport.height:b[E];m-=A-r.height,m*=l?1:-1}if(i===dn||(i===hn||i===Qn)&&s===wu){v=Yn;var S=h&&b===x&&x.visualViewport?x.visualViewport.width:b[C];f-=S-r.width,f*=l?1:-1}}var P=Object.assign({position:a},u&&Vz),M=c===!0?zz({x:f,y:m},In(n)):{x:f,y:m};if(f=M.x,m=M.y,l){var D;return Object.assign({},P,(D={},D[_]=y?"0":"",D[v]=g?"0":"",D.transform=(x.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",D))}return Object.assign({},P,(e={},e[_]=y?m+"px":"",e[v]=g?f+"px":"",e.transform="",e))}function Uz(t){var e=t.state,n=t.options,r=n.gpuAcceleration,i=r===void 0?!0:r,s=n.adaptive,o=s===void 0?!0:s,a=n.roundOffsets,l=a===void 0?!0:a,u={placement:$r(e.placement),variation:Sa(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:i,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,Lx(Object.assign({},u,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:o,roundOffsets:l})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,Lx(Object.assign({},u,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const jz={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Uz,data:{}};var Gc={passive:!0};function Bz(t){var e=t.state,n=t.instance,r=t.options,i=r.scroll,s=i===void 0?!0:i,o=r.resize,a=o===void 0?!0:o,l=In(e.elements.popper),u=[].concat(e.scrollParents.reference,e.scrollParents.popper);return s&&u.forEach(function(c){c.addEventListener("scroll",n.update,Gc)}),a&&l.addEventListener("resize",n.update,Gc),function(){s&&u.forEach(function(c){c.removeEventListener("scroll",n.update,Gc)}),a&&l.removeEventListener("resize",n.update,Gc)}}const Hz={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Bz,data:{}};var Wz={left:"right",right:"left",bottom:"top",top:"bottom"};function Rh(t){return t.replace(/left|right|bottom|top/g,function(e){return Wz[e]})}var qz={start:"end",end:"start"};function Fx(t){return t.replace(/start|end/g,function(e){return qz[e]})}function j0(t){var e=In(t),n=e.pageXOffset,r=e.pageYOffset;return{scrollLeft:n,scrollTop:r}}function B0(t){return Ta(fs(t)).left+j0(t).scrollLeft}function Gz(t,e){var n=In(t),r=fs(t),i=n.visualViewport,s=r.clientWidth,o=r.clientHeight,a=0,l=0;if(i){s=i.width,o=i.height;var u=ZC();(u||!u&&e==="fixed")&&(a=i.offsetLeft,l=i.offsetTop)}return{width:s,height:o,x:a+B0(t),y:l}}function Kz(t){var e,n=fs(t),r=j0(t),i=(e=t.ownerDocument)==null?void 0:e.body,s=Vs(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),o=Vs(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),a=-r.scrollLeft+B0(t),l=-r.scrollTop;return pi(i||n).direction==="rtl"&&(a+=Vs(n.clientWidth,i?i.clientWidth:0)-s),{width:s,height:o,x:a,y:l}}function H0(t){var e=pi(t),n=e.overflow,r=e.overflowX,i=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function iI(t){return["html","body","#document"].indexOf(Ur(t))>=0?t.ownerDocument.body:Wn(t)&&H0(t)?t:iI(Xf(t))}function Ul(t,e){var n;e===void 0&&(e=[]);var r=iI(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),s=In(r),o=i?[s].concat(s.visualViewport||[],H0(r)?r:[]):r,a=e.concat(o);return i?a:a.concat(Ul(Xf(o)))}function wy(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Qz(t,e){var n=Ta(t,!1,e==="fixed");return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}function Vx(t,e,n){return e===XC?wy(Gz(t,n)):Js(e)?Qz(e,n):wy(Kz(fs(t)))}function Yz(t){var e=Ul(Xf(t)),n=["absolute","fixed"].indexOf(pi(t).position)>=0,r=n&&Wn(t)?lc(t):t;return Js(r)?e.filter(function(i){return Js(i)&&eI(i,r)&&Ur(i)!=="body"}):[]}function Xz(t,e,n,r){var i=e==="clippingParents"?Yz(t):[].concat(e),s=[].concat(i,[n]),o=s[0],a=s.reduce(function(l,u){var c=Vx(t,u,r);return l.top=Vs(c.top,l.top),l.right=Td(c.right,l.right),l.bottom=Td(c.bottom,l.bottom),l.left=Vs(c.left,l.left),l},Vx(t,o,r));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function sI(t){var e=t.reference,n=t.element,r=t.placement,i=r?$r(r):null,s=r?Sa(r):null,o=e.x+e.width/2-n.width/2,a=e.y+e.height/2-n.height/2,l;switch(i){case hn:l={x:o,y:e.y-n.height};break;case Qn:l={x:o,y:e.y+e.height};break;case Yn:l={x:e.x+e.width,y:a};break;case dn:l={x:e.x-n.width,y:a};break;default:l={x:e.x,y:e.y}}var u=i?U0(i):null;if(u!=null){var c=u==="y"?"height":"width";switch(s){case ba:l[u]=l[u]-(e[c]/2-n[c]/2);break;case wu:l[u]=l[u]+(e[c]/2-n[c]/2);break}}return l}function xu(t,e){e===void 0&&(e={});var n=e,r=n.placement,i=r===void 0?t.placement:r,s=n.strategy,o=s===void 0?t.strategy:s,a=n.boundary,l=a===void 0?yz:a,u=n.rootBoundary,c=u===void 0?XC:u,h=n.elementContext,d=h===void 0?hl:h,f=n.altBoundary,p=f===void 0?!1:f,m=n.padding,w=m===void 0?0:m,g=nI(typeof w!="number"?w:rI(w,ac)),y=d===hl?vz:hl,v=t.rects.popper,_=t.elements[p?y:d],x=Xz(Js(_)?_:_.contextElement||fs(t.elements.popper),l,c,o),b=Ta(t.elements.reference),E=sI({reference:b,element:v,strategy:"absolute",placement:i}),C=wy(Object.assign({},v,E)),A=d===hl?C:b,S={top:x.top-A.top+g.top,bottom:A.bottom-x.bottom+g.bottom,left:x.left-A.left+g.left,right:A.right-x.right+g.right},P=t.modifiersData.offset;if(d===hl&&P){var M=P[i];Object.keys(S).forEach(function(D){var $=[Yn,Qn].indexOf(D)>=0?1:-1,B=[hn,Qn].indexOf(D)>=0?"y":"x";S[D]+=M[B]*$})}return S}function Jz(t,e){e===void 0&&(e={});var n=e,r=n.placement,i=n.boundary,s=n.rootBoundary,o=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,u=l===void 0?JC:l,c=Sa(r),h=c?a?Nx:Nx.filter(function(p){return Sa(p)===c}):ac,d=h.filter(function(p){return u.indexOf(p)>=0});d.length===0&&(d=h);var f=d.reduce(function(p,m){return p[m]=xu(t,{placement:m,boundary:i,rootBoundary:s,padding:o})[$r(m)],p},{});return Object.keys(f).sort(function(p,m){return f[p]-f[m]})}function Zz(t){if($r(t)===F0)return[];var e=Rh(t);return[Fx(t),e,Fx(e)]}function e3(t){var e=t.state,n=t.options,r=t.name;if(!e.modifiersData[r]._skip){for(var i=n.mainAxis,s=i===void 0?!0:i,o=n.altAxis,a=o===void 0?!0:o,l=n.fallbackPlacements,u=n.padding,c=n.boundary,h=n.rootBoundary,d=n.altBoundary,f=n.flipVariations,p=f===void 0?!0:f,m=n.allowedAutoPlacements,w=e.options.placement,g=$r(w),y=g===w,v=l||(y||!p?[Rh(w)]:Zz(w)),_=[w].concat(v).reduce(function(R,ve){return R.concat($r(ve)===F0?Jz(e,{placement:ve,boundary:c,rootBoundary:h,padding:u,flipVariations:p,allowedAutoPlacements:m}):ve)},[]),x=e.rects.reference,b=e.rects.popper,E=new Map,C=!0,A=_[0],S=0;S<_.length;S++){var P=_[S],M=$r(P),D=Sa(P)===ba,$=[hn,Qn].indexOf(M)>=0,B=$?"width":"height",F=xu(e,{placement:P,boundary:c,rootBoundary:h,altBoundary:d,padding:u}),K=$?D?Yn:dn:D?Qn:hn;x[B]>b[B]&&(K=Rh(K));var O=Rh(K),N=[];if(s&&N.push(F[M]<=0),a&&N.push(F[K]<=0,F[O]<=0),N.every(function(R){return R})){A=P,C=!1;break}E.set(P,N)}if(C)for(var L=p?3:1,Q=function(ve){var W=_.find(function(re){var ke=E.get(re);if(ke)return ke.slice(0,ve).every(function(U){return U})});if(W)return A=W,"break"},q=L;q>0;q--){var Se=Q(q);if(Se==="break")break}e.placement!==A&&(e.modifiersData[r]._skip=!0,e.placement=A,e.reset=!0)}}const t3={name:"flip",enabled:!0,phase:"main",fn:e3,requiresIfExists:["offset"],data:{_skip:!1}};function zx(t,e,n){return n===void 0&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function Ux(t){return[hn,Yn,Qn,dn].some(function(e){return t[e]>=0})}function n3(t){var e=t.state,n=t.name,r=e.rects.reference,i=e.rects.popper,s=e.modifiersData.preventOverflow,o=xu(e,{elementContext:"reference"}),a=xu(e,{altBoundary:!0}),l=zx(o,r),u=zx(a,i,s),c=Ux(l),h=Ux(u);e.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:h},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":h})}const r3={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:n3};function i3(t,e,n){var r=$r(t),i=[dn,hn].indexOf(r)>=0?-1:1,s=typeof n=="function"?n(Object.assign({},e,{placement:t})):n,o=s[0],a=s[1];return o=o||0,a=(a||0)*i,[dn,Yn].indexOf(r)>=0?{x:a,y:o}:{x:o,y:a}}function s3(t){var e=t.state,n=t.options,r=t.name,i=n.offset,s=i===void 0?[0,0]:i,o=JC.reduce(function(c,h){return c[h]=i3(h,e.rects,s),c},{}),a=o[e.placement],l=a.x,u=a.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=u),e.modifiersData[r]=o}const o3={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:s3};function a3(t){var e=t.state,n=t.name;e.modifiersData[n]=sI({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}const l3={name:"popperOffsets",enabled:!0,phase:"read",fn:a3,data:{}};function u3(t){return t==="x"?"y":"x"}function c3(t){var e=t.state,n=t.options,r=t.name,i=n.mainAxis,s=i===void 0?!0:i,o=n.altAxis,a=o===void 0?!1:o,l=n.boundary,u=n.rootBoundary,c=n.altBoundary,h=n.padding,d=n.tether,f=d===void 0?!0:d,p=n.tetherOffset,m=p===void 0?0:p,w=xu(e,{boundary:l,rootBoundary:u,padding:h,altBoundary:c}),g=$r(e.placement),y=Sa(e.placement),v=!y,_=U0(g),x=u3(_),b=e.modifiersData.popperOffsets,E=e.rects.reference,C=e.rects.popper,A=typeof m=="function"?m(Object.assign({},e.rects,{placement:e.placement})):m,S=typeof A=="number"?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),P=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,M={x:0,y:0};if(b){if(s){var D,$=_==="y"?hn:dn,B=_==="y"?Qn:Yn,F=_==="y"?"height":"width",K=b[_],O=K+w[$],N=K-w[B],L=f?-C[F]/2:0,Q=y===ba?E[F]:C[F],q=y===ba?-C[F]:-E[F],Se=e.elements.arrow,R=f&&Se?z0(Se):{width:0,height:0},ve=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:tI(),W=ve[$],re=ve[B],ke=zl(0,E[F],R[F]),U=v?E[F]/2-L-ke-W-S.mainAxis:Q-ke-W-S.mainAxis,Y=v?-E[F]/2+L+ke+re+S.mainAxis:q+ke+re+S.mainAxis,te=e.elements.arrow&&lc(e.elements.arrow),z=te?_==="y"?te.clientTop||0:te.clientLeft||0:0,xe=(D=P==null?void 0:P[_])!=null?D:0,de=K+U-xe-z,nt=K+Y-xe,je=zl(f?Td(O,de):O,K,f?Vs(N,nt):N);b[_]=je,M[_]=je-K}if(a){var nn,Hr=_==="x"?hn:dn,el=_==="x"?Qn:Yn,gn=b[x],Jn=x==="y"?"height":"width",ki=gn+w[Hr],Ci=gn-w[el],wr=[hn,dn].indexOf(g)!==-1,On=(nn=P==null?void 0:P[x])!=null?nn:0,Wr=wr?ki:gn-E[Jn]-C[Jn]-On+S.altAxis,Ii=wr?gn+E[Jn]+C[Jn]-On-S.altAxis:Ci,yo=f&&wr?Dz(Wr,gn,Ii):zl(f?Wr:ki,gn,f?Ii:Ci);b[x]=yo,M[x]=yo-gn}e.modifiersData[r]=M}}const h3={name:"preventOverflow",enabled:!0,phase:"main",fn:c3,requiresIfExists:["offset"]};function d3(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function f3(t){return t===In(t)||!Wn(t)?j0(t):d3(t)}function p3(t){var e=t.getBoundingClientRect(),n=Ea(e.width)/t.offsetWidth||1,r=Ea(e.height)/t.offsetHeight||1;return n!==1||r!==1}function m3(t,e,n){n===void 0&&(n=!1);var r=Wn(e),i=Wn(e)&&p3(e),s=fs(e),o=Ta(t,i,n),a={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!n)&&((Ur(e)!=="body"||H0(s))&&(a=f3(e)),Wn(e)?(l=Ta(e,!0),l.x+=e.clientLeft,l.y+=e.clientTop):s&&(l.x=B0(s))),{x:o.left+a.scrollLeft-l.x,y:o.top+a.scrollTop-l.y,width:o.width,height:o.height}}function g3(t){var e=new Map,n=new Set,r=[];t.forEach(function(s){e.set(s.name,s)});function i(s){n.add(s.name);var o=[].concat(s.requires||[],s.requiresIfExists||[]);o.forEach(function(a){if(!n.has(a)){var l=e.get(a);l&&i(l)}}),r.push(s)}return t.forEach(function(s){n.has(s.name)||i(s)}),r}function y3(t){var e=g3(t);return Iz.reduce(function(n,r){return n.concat(e.filter(function(i){return i.phase===r}))},[])}function v3(t){var e;return function(){return e||(e=new Promise(function(n){Promise.resolve().then(function(){e=void 0,n(t())})})),e}}function _3(t){var e=t.reduce(function(n,r){var i=n[r.name];return n[r.name]=i?Object.assign({},i,r,{options:Object.assign({},i.options,r.options),data:Object.assign({},i.data,r.data)}):r,n},{});return Object.keys(e).map(function(n){return e[n]})}var jx={placement:"bottom",modifiers:[],strategy:"absolute"};function Bx(){for(var t=arguments.length,e=new Array(t),n=0;n{s||a(E3(i)||document.body)},[i,s]),ss(()=>{if(o&&!s)return vd(n,o),()=>{vd(n,null)}},[n,o,s]),s){if(T.isValidElement(r)){const u={ref:l};return T.cloneElement(r,u)}return k.jsx(T.Fragment,{children:r})}return k.jsx(T.Fragment,{children:o&&r0.createPortal(r,o)})});function T3(t){return ut("MuiPopper",t)}ct("MuiPopper",["root"]);const S3=["anchorEl","children","direction","disablePortal","modifiers","open","placement","popperOptions","popperRef","slotProps","slots","TransitionProps","ownerState"],k3=["anchorEl","children","container","direction","disablePortal","keepMounted","modifiers","open","placement","popperOptions","popperRef","style","transition","slotProps","slots"];function C3(t,e){if(e==="ltr")return t;switch(t){case"bottom-end":return"bottom-start";case"bottom-start":return"bottom-end";case"top-end":return"top-start";case"top-start":return"top-end";default:return t}}function xy(t){return typeof t=="function"?t():t}function I3(t){return t.nodeType!==void 0}const P3=()=>lt({root:["root"]},oz(T3)),A3={},R3=T.forwardRef(function(e,n){var r;const{anchorEl:i,children:s,direction:o,disablePortal:a,modifiers:l,open:u,placement:c,popperOptions:h,popperRef:d,slotProps:f={},slots:p={},TransitionProps:m}=e,w=ue(e,S3),g=T.useRef(null),y=fr(g,n),v=T.useRef(null),_=fr(v,d),x=T.useRef(_);ss(()=>{x.current=_},[_]),T.useImperativeHandle(d,()=>v.current,[]);const b=C3(c,o),[E,C]=T.useState(b),[A,S]=T.useState(xy(i));T.useEffect(()=>{v.current&&v.current.forceUpdate()}),T.useEffect(()=>{i&&S(xy(i))},[i]),ss(()=>{if(!A||!u)return;const B=O=>{C(O.placement)};let F=[{name:"preventOverflow",options:{altBoundary:a}},{name:"flip",options:{altBoundary:a}},{name:"onUpdate",enabled:!0,phase:"afterWrite",fn:({state:O})=>{B(O)}}];l!=null&&(F=F.concat(l)),h&&h.modifiers!=null&&(F=F.concat(h.modifiers));const K=b3(A,g.current,I({placement:b},h,{modifiers:F}));return x.current(K),()=>{K.destroy(),x.current(null)}},[A,a,l,u,h,b]);const P={placement:E};m!==null&&(P.TransitionProps=m);const M=P3(),D=(r=p.root)!=null?r:"div",$=Cn({elementType:D,externalSlotProps:f.root,externalForwardedProps:w,additionalProps:{role:"tooltip",ref:y},ownerState:e,className:M.root});return k.jsx(D,I({},$,{children:typeof s=="function"?s(P):s}))}),M3=T.forwardRef(function(e,n){const{anchorEl:r,children:i,container:s,direction:o="ltr",disablePortal:a=!1,keepMounted:l=!1,modifiers:u,open:c,placement:h="bottom",popperOptions:d=A3,popperRef:f,style:p,transition:m=!1,slotProps:w={},slots:g={}}=e,y=ue(e,k3),[v,_]=T.useState(!0),x=()=>{_(!1)},b=()=>{_(!0)};if(!l&&!c&&(!m||v))return null;let E;if(s)E=s;else if(r){const S=xy(r);E=S&&I3(S)?lr(S).body:lr(null).body}const C=!c&&l&&(!m||v)?"none":void 0,A=m?{in:c,onEnter:x,onExited:b}:void 0;return k.jsx(oI,{disablePortal:a,container:E,children:k.jsx(R3,I({anchorEl:r,direction:o,disablePortal:a,modifiers:u,ref:n,open:m?!v:c,placement:h,popperOptions:d,popperRef:f,slotProps:w,slots:g},y,{style:I({position:"fixed",top:0,left:0,display:C},p),TransitionProps:A,children:i}))})});function O3(t){const e=lr(t);return e.body===t?nc(t).innerWidth>e.documentElement.clientWidth:t.scrollHeight>t.clientHeight}function jl(t,e){e?t.setAttribute("aria-hidden","true"):t.removeAttribute("aria-hidden")}function Hx(t){return parseInt(nc(t).getComputedStyle(t).paddingRight,10)||0}function D3(t){const n=["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].indexOf(t.tagName)!==-1,r=t.tagName==="INPUT"&&t.getAttribute("type")==="hidden";return n||r}function Wx(t,e,n,r,i){const s=[e,n,...r];[].forEach.call(t.children,o=>{const a=s.indexOf(o)===-1,l=!D3(o);a&&l&&jl(o,i)})}function bm(t,e){let n=-1;return t.some((r,i)=>e(r)?(n=i,!0):!1),n}function N3(t,e){const n=[],r=t.container;if(!e.disableScrollLock){if(O3(r)){const o=qL(lr(r));n.push({value:r.style.paddingRight,property:"padding-right",el:r}),r.style.paddingRight=`${Hx(r)+o}px`;const a=lr(r).querySelectorAll(".mui-fixed");[].forEach.call(a,l=>{n.push({value:l.style.paddingRight,property:"padding-right",el:l}),l.style.paddingRight=`${Hx(l)+o}px`})}let s;if(r.parentNode instanceof DocumentFragment)s=lr(r).body;else{const o=r.parentElement,a=nc(r);s=(o==null?void 0:o.nodeName)==="HTML"&&a.getComputedStyle(o).overflowY==="scroll"?o:r}n.push({value:s.style.overflow,property:"overflow",el:s},{value:s.style.overflowX,property:"overflow-x",el:s},{value:s.style.overflowY,property:"overflow-y",el:s}),s.style.overflow="hidden"}return()=>{n.forEach(({value:s,el:o,property:a})=>{s?o.style.setProperty(a,s):o.style.removeProperty(a)})}}function $3(t){const e=[];return[].forEach.call(t.children,n=>{n.getAttribute("aria-hidden")==="true"&&e.push(n)}),e}class L3{constructor(){this.containers=void 0,this.modals=void 0,this.modals=[],this.containers=[]}add(e,n){let r=this.modals.indexOf(e);if(r!==-1)return r;r=this.modals.length,this.modals.push(e),e.modalRef&&jl(e.modalRef,!1);const i=$3(n);Wx(n,e.mount,e.modalRef,i,!0);const s=bm(this.containers,o=>o.container===n);return s!==-1?(this.containers[s].modals.push(e),r):(this.containers.push({modals:[e],container:n,restore:null,hiddenSiblings:i}),r)}mount(e,n){const r=bm(this.containers,s=>s.modals.indexOf(e)!==-1),i=this.containers[r];i.restore||(i.restore=N3(i,n))}remove(e,n=!0){const r=this.modals.indexOf(e);if(r===-1)return r;const i=bm(this.containers,o=>o.modals.indexOf(e)!==-1),s=this.containers[i];if(s.modals.splice(s.modals.indexOf(e),1),this.modals.splice(r,1),s.modals.length===0)s.restore&&s.restore(),e.modalRef&&jl(e.modalRef,n),Wx(s.container,e.mount,e.modalRef,s.hiddenSiblings,!1),this.containers.splice(i,1);else{const o=s.modals[s.modals.length-1];o.modalRef&&jl(o.modalRef,!1)}return r}isTopModal(e){return this.modals.length>0&&this.modals[this.modals.length-1]===e}}function F3(t){return typeof t=="function"?t():t}function V3(t){return t?t.props.hasOwnProperty("in"):!1}const z3=new L3;function U3(t){const{container:e,disableEscapeKeyDown:n=!1,disableScrollLock:r=!1,manager:i=z3,closeAfterTransition:s=!1,onTransitionEnter:o,onTransitionExited:a,children:l,onClose:u,open:c,rootRef:h}=t,d=T.useRef({}),f=T.useRef(null),p=T.useRef(null),m=fr(p,h),[w,g]=T.useState(!c),y=V3(l);let v=!0;(t["aria-hidden"]==="false"||t["aria-hidden"]===!1)&&(v=!1);const _=()=>lr(f.current),x=()=>(d.current.modalRef=p.current,d.current.mount=f.current,d.current),b=()=>{i.mount(x(),{disableScrollLock:r}),p.current&&(p.current.scrollTop=0)},E=Is(()=>{const F=F3(e)||_().body;i.add(x(),F),p.current&&b()}),C=T.useCallback(()=>i.isTopModal(x()),[i]),A=Is(F=>{f.current=F,F&&(c&&C()?b():p.current&&jl(p.current,v))}),S=T.useCallback(()=>{i.remove(x(),v)},[v,i]);T.useEffect(()=>()=>{S()},[S]),T.useEffect(()=>{c?E():(!y||!s)&&S()},[c,S,y,s,E]);const P=F=>K=>{var O;(O=F.onKeyDown)==null||O.call(F,K),!(K.key!=="Escape"||!C())&&(n||(K.stopPropagation(),u&&u(K,"escapeKeyDown")))},M=F=>K=>{var O;(O=F.onClick)==null||O.call(F,K),K.target===K.currentTarget&&u&&u(K,"backdropClick")};return{getRootProps:(F={})=>{const K=YC(t);delete K.onTransitionEnter,delete K.onTransitionExited;const O=I({},K,F);return I({role:"presentation"},O,{onKeyDown:P(O),ref:m})},getBackdropProps:(F={})=>{const K=F;return I({"aria-hidden":!0},K,{onClick:M(K),open:c})},getTransitionProps:()=>{const F=()=>{g(!1),o&&o()},K=()=>{g(!0),a&&a(),s&&S()};return{onEnter:hy(F,l==null?void 0:l.props.onEnter),onExited:hy(K,l==null?void 0:l.props.onExited)}},rootRef:m,portalRef:A,isTopModal:C,exited:w,hasTransition:y}}function aI(t){const{children:e,defer:n=!1,fallback:r=null}=t,[i,s]=T.useState(!1);return ss(()=>{n||s(!0)},[n]),T.useEffect(()=>{n&&s(!0)},[n]),k.jsx(T.Fragment,{children:i?e:r})}const j3=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"],B3={entering:{opacity:1},entered:{opacity:1}},H3=T.forwardRef(function(e,n){const r=lo(),i={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{addEndListener:s,appear:o=!0,children:a,easing:l,in:u,onEnter:c,onEntered:h,onEntering:d,onExit:f,onExited:p,onExiting:m,style:w,timeout:g=i,TransitionComponent:y=l5}=e,v=ue(e,j3),_=T.useRef(null),x=fr(_,a.ref,n),b=$=>B=>{if($){const F=_.current;B===void 0?$(F):$(F,B)}},E=b(d),C=b(($,B)=>{g5($);const F=Ix({style:w,timeout:g,easing:l},{mode:"enter"});$.style.webkitTransition=r.transitions.create("opacity",F),$.style.transition=r.transitions.create("opacity",F),c&&c($,B)}),A=b(h),S=b(m),P=b($=>{const B=Ix({style:w,timeout:g,easing:l},{mode:"exit"});$.style.webkitTransition=r.transitions.create("opacity",B),$.style.transition=r.transitions.create("opacity",B),f&&f($)}),M=b(p),D=$=>{s&&s(_.current,$)};return k.jsx(y,I({appear:o,in:u,nodeRef:_,onEnter:C,onEntered:A,onEntering:E,onExit:P,onExited:M,onExiting:S,addEndListener:D,timeout:g},v,{children:($,B)=>T.cloneElement(a,I({style:I({opacity:0,visibility:$==="exited"&&!u?"hidden":void 0},B3[$],w,a.props.style),ref:x},B))}))}),W3=H3;function q3(t){return ut("MuiBackdrop",t)}ct("MuiBackdrop",["root","invisible"]);const G3=["children","className","component","components","componentsProps","invisible","open","slotProps","slots","TransitionComponent","transitionDuration"],K3=t=>{const{classes:e,invisible:n}=t;return lt({root:["root",n&&"invisible"]},q3,e)},Q3=Te("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,n.invisible&&e.invisible]}})(({ownerState:t})=>I({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent"},t.invisible&&{backgroundColor:"transparent"})),Y3=T.forwardRef(function(e,n){var r,i,s;const o=tn({props:e,name:"MuiBackdrop"}),{children:a,className:l,component:u="div",components:c={},componentsProps:h={},invisible:d=!1,open:f,slotProps:p={},slots:m={},TransitionComponent:w=W3,transitionDuration:g}=o,y=ue(o,G3),v=I({},o,{component:u,invisible:d}),_=K3(v),x=(r=p.root)!=null?r:h.root;return k.jsx(w,I({in:f,timeout:g},y,{children:k.jsx(Q3,I({"aria-hidden":!0},x,{as:(i=(s=m.root)!=null?s:c.Root)!=null?i:u,className:$e(_.root,l,x==null?void 0:x.className),ownerState:I({},v,x==null?void 0:x.ownerState),classes:_,ref:n,children:a}))}))}),X3=Y3,J3=D0(),Z3=jC({themeId:wa,defaultTheme:J3,defaultClassName:"MuiBox-root",generateClassName:y0.generate}),ei=Z3;function eU(t){return ut("MuiButton",t)}const tU=ct("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]),Kc=tU,nU=T.createContext({}),rU=nU,iU=T.createContext(void 0),sU=iU,oU=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],aU=t=>{const{color:e,disableElevation:n,fullWidth:r,size:i,variant:s,classes:o}=t,a={root:["root",s,`${s}${be(e)}`,`size${be(i)}`,`${s}Size${be(i)}`,e==="inherit"&&"colorInherit",n&&"disableElevation",r&&"fullWidth"],label:["label"],startIcon:["startIcon",`iconSize${be(i)}`],endIcon:["endIcon",`iconSize${be(i)}`]},l=lt(a,eU,o);return I({},o,l)},lI=t=>I({},t.size==="small"&&{"& > *:nth-of-type(1)":{fontSize:18}},t.size==="medium"&&{"& > *:nth-of-type(1)":{fontSize:20}},t.size==="large"&&{"& > *:nth-of-type(1)":{fontSize:22}}),lU=Te(QC,{shouldForwardProp:t=>qC(t)||t==="classes",name:"MuiButton",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,e[n.variant],e[`${n.variant}${be(n.color)}`],e[`size${be(n.size)}`],e[`${n.variant}Size${be(n.size)}`],n.color==="inherit"&&e.colorInherit,n.disableElevation&&e.disableElevation,n.fullWidth&&e.fullWidth]}})(({theme:t,ownerState:e})=>{var n,r;const i=t.palette.mode==="light"?t.palette.grey[300]:t.palette.grey[800],s=t.palette.mode==="light"?t.palette.grey.A100:t.palette.grey[700];return I({},t.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(t.vars||t).shape.borderRadius,transition:t.transitions.create(["background-color","box-shadow","border-color","color"],{duration:t.transitions.duration.short}),"&:hover":I({textDecoration:"none",backgroundColor:t.vars?`rgba(${t.vars.palette.text.primaryChannel} / ${t.vars.palette.action.hoverOpacity})`:Ui(t.palette.text.primary,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},e.variant==="text"&&e.color!=="inherit"&&{backgroundColor:t.vars?`rgba(${t.vars.palette[e.color].mainChannel} / ${t.vars.palette.action.hoverOpacity})`:Ui(t.palette[e.color].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},e.variant==="outlined"&&e.color!=="inherit"&&{border:`1px solid ${(t.vars||t).palette[e.color].main}`,backgroundColor:t.vars?`rgba(${t.vars.palette[e.color].mainChannel} / ${t.vars.palette.action.hoverOpacity})`:Ui(t.palette[e.color].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},e.variant==="contained"&&{backgroundColor:t.vars?t.vars.palette.Button.inheritContainedHoverBg:s,boxShadow:(t.vars||t).shadows[4],"@media (hover: none)":{boxShadow:(t.vars||t).shadows[2],backgroundColor:(t.vars||t).palette.grey[300]}},e.variant==="contained"&&e.color!=="inherit"&&{backgroundColor:(t.vars||t).palette[e.color].dark,"@media (hover: none)":{backgroundColor:(t.vars||t).palette[e.color].main}}),"&:active":I({},e.variant==="contained"&&{boxShadow:(t.vars||t).shadows[8]}),[`&.${Kc.focusVisible}`]:I({},e.variant==="contained"&&{boxShadow:(t.vars||t).shadows[6]}),[`&.${Kc.disabled}`]:I({color:(t.vars||t).palette.action.disabled},e.variant==="outlined"&&{border:`1px solid ${(t.vars||t).palette.action.disabledBackground}`},e.variant==="contained"&&{color:(t.vars||t).palette.action.disabled,boxShadow:(t.vars||t).shadows[0],backgroundColor:(t.vars||t).palette.action.disabledBackground})},e.variant==="text"&&{padding:"6px 8px"},e.variant==="text"&&e.color!=="inherit"&&{color:(t.vars||t).palette[e.color].main},e.variant==="outlined"&&{padding:"5px 15px",border:"1px solid currentColor"},e.variant==="outlined"&&e.color!=="inherit"&&{color:(t.vars||t).palette[e.color].main,border:t.vars?`1px solid rgba(${t.vars.palette[e.color].mainChannel} / 0.5)`:`1px solid ${Ui(t.palette[e.color].main,.5)}`},e.variant==="contained"&&{color:t.vars?t.vars.palette.text.primary:(n=(r=t.palette).getContrastText)==null?void 0:n.call(r,t.palette.grey[300]),backgroundColor:t.vars?t.vars.palette.Button.inheritContainedBg:i,boxShadow:(t.vars||t).shadows[2]},e.variant==="contained"&&e.color!=="inherit"&&{color:(t.vars||t).palette[e.color].contrastText,backgroundColor:(t.vars||t).palette[e.color].main},e.color==="inherit"&&{color:"inherit",borderColor:"currentColor"},e.size==="small"&&e.variant==="text"&&{padding:"4px 5px",fontSize:t.typography.pxToRem(13)},e.size==="large"&&e.variant==="text"&&{padding:"8px 11px",fontSize:t.typography.pxToRem(15)},e.size==="small"&&e.variant==="outlined"&&{padding:"3px 9px",fontSize:t.typography.pxToRem(13)},e.size==="large"&&e.variant==="outlined"&&{padding:"7px 21px",fontSize:t.typography.pxToRem(15)},e.size==="small"&&e.variant==="contained"&&{padding:"4px 10px",fontSize:t.typography.pxToRem(13)},e.size==="large"&&e.variant==="contained"&&{padding:"8px 22px",fontSize:t.typography.pxToRem(15)},e.fullWidth&&{width:"100%"})},({ownerState:t})=>t.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${Kc.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${Kc.disabled}`]:{boxShadow:"none"}}),uU=Te("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.startIcon,e[`iconSize${be(n.size)}`]]}})(({ownerState:t})=>I({display:"inherit",marginRight:8,marginLeft:-4},t.size==="small"&&{marginLeft:-2},lI(t))),cU=Te("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.endIcon,e[`iconSize${be(n.size)}`]]}})(({ownerState:t})=>I({display:"inherit",marginRight:-4,marginLeft:8},t.size==="small"&&{marginRight:-2},lI(t))),hU=T.forwardRef(function(e,n){const r=T.useContext(rU),i=T.useContext(sU),s=g0(r,e),o=tn({props:s,name:"MuiButton"}),{children:a,color:l="primary",component:u="button",className:c,disabled:h=!1,disableElevation:d=!1,disableFocusRipple:f=!1,endIcon:p,focusVisibleClassName:m,fullWidth:w=!1,size:g="medium",startIcon:y,type:v,variant:_="text"}=o,x=ue(o,oU),b=I({},o,{color:l,component:u,disabled:h,disableElevation:d,disableFocusRipple:f,fullWidth:w,size:g,type:v,variant:_}),E=aU(b),C=y&&k.jsx(uU,{className:E.startIcon,ownerState:b,children:y}),A=p&&k.jsx(cU,{className:E.endIcon,ownerState:b,children:p}),S=i||"";return k.jsxs(lU,I({ownerState:b,className:$e(r.className,E.root,c,S),component:u,disabled:h,focusRipple:!f,focusVisibleClassName:$e(E.focusVisible,m),ref:n,type:v},x,{classes:E,children:[C,a,A]}))}),by=hU;function dU(t){return ut("MuiCard",t)}ct("MuiCard",["root"]);const fU=["className","raised"],pU=t=>{const{classes:e}=t;return lt({root:["root"]},dU,e)},mU=Te(b5,{name:"MuiCard",slot:"Root",overridesResolver:(t,e)=>e.root})(()=>({overflow:"hidden"})),gU=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiCard"}),{className:i,raised:s=!1}=r,o=ue(r,fU),a=I({},r,{raised:s}),l=pU(a);return k.jsx(mU,I({className:$e(l.root,i),elevation:s?8:void 0,ref:n,ownerState:a},o))}),Mh=gU;function yU(t){return ut("MuiCircularProgress",t)}ct("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);const vU=["className","color","disableShrink","size","style","thickness","value","variant"];let Jf=t=>t,qx,Gx,Kx,Qx;const Ri=44,_U=ic(qx||(qx=Jf` + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +`)),wU=ic(Gx||(Gx=Jf` + 0% { + stroke-dasharray: 1px, 200px; + stroke-dashoffset: 0; + } + + 50% { + stroke-dasharray: 100px, 200px; + stroke-dashoffset: -15px; + } + + 100% { + stroke-dasharray: 100px, 200px; + stroke-dashoffset: -125px; + } +`)),xU=t=>{const{classes:e,variant:n,color:r,disableShrink:i}=t,s={root:["root",n,`color${be(r)}`],svg:["svg"],circle:["circle",`circle${be(n)}`,i&&"circleDisableShrink"]};return lt(s,yU,e)},bU=Te("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,e[n.variant],e[`color${be(n.color)}`]]}})(({ownerState:t,theme:e})=>I({display:"inline-block"},t.variant==="determinate"&&{transition:e.transitions.create("transform")},t.color!=="inherit"&&{color:(e.vars||e).palette[t.color].main}),({ownerState:t})=>t.variant==="indeterminate"&&S0(Kx||(Kx=Jf` + animation: ${0} 1.4s linear infinite; + `),_U)),EU=Te("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(t,e)=>e.svg})({display:"block"}),TU=Te("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.circle,e[`circle${be(n.variant)}`],n.disableShrink&&e.circleDisableShrink]}})(({ownerState:t,theme:e})=>I({stroke:"currentColor"},t.variant==="determinate"&&{transition:e.transitions.create("stroke-dashoffset")},t.variant==="indeterminate"&&{strokeDasharray:"80px, 200px",strokeDashoffset:0}),({ownerState:t})=>t.variant==="indeterminate"&&!t.disableShrink&&S0(Qx||(Qx=Jf` + animation: ${0} 1.4s ease-in-out infinite; + `),wU)),SU=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiCircularProgress"}),{className:i,color:s="primary",disableShrink:o=!1,size:a=40,style:l,thickness:u=3.6,value:c=0,variant:h="indeterminate"}=r,d=ue(r,vU),f=I({},r,{color:s,disableShrink:o,size:a,thickness:u,value:c,variant:h}),p=xU(f),m={},w={},g={};if(h==="determinate"){const y=2*Math.PI*((Ri-u)/2);m.strokeDasharray=y.toFixed(3),g["aria-valuenow"]=Math.round(c),m.strokeDashoffset=`${((100-c)/100*y).toFixed(3)}px`,w.transform="rotate(-90deg)"}return k.jsx(bU,I({className:$e(p.root,i),style:I({width:a,height:a},w,l),ownerState:f,ref:n,role:"progressbar"},g,d,{children:k.jsx(EU,{className:p.svg,ownerState:f,viewBox:`${Ri/2} ${Ri/2} ${Ri} ${Ri}`,children:k.jsx(TU,{className:p.circle,style:m,ownerState:f,cx:Ri,cy:Ri,r:(Ri-u)/2,fill:"none",strokeWidth:u})})}))}),W0=SU;function kU(t){return ut("MuiModal",t)}ct("MuiModal",["root","hidden","backdrop"]);const CU=["BackdropComponent","BackdropProps","classes","className","closeAfterTransition","children","container","component","components","componentsProps","disableAutoFocus","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","onBackdropClick","onClose","onTransitionEnter","onTransitionExited","open","slotProps","slots","theme"],IU=t=>{const{open:e,exited:n,classes:r}=t;return lt({root:["root",!e&&n&&"hidden"],backdrop:["backdrop"]},kU,r)},PU=Te("div",{name:"MuiModal",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,!n.open&&n.exited&&e.hidden]}})(({theme:t,ownerState:e})=>I({position:"fixed",zIndex:(t.vars||t).zIndex.modal,right:0,bottom:0,top:0,left:0},!e.open&&e.exited&&{visibility:"hidden"})),AU=Te(X3,{name:"MuiModal",slot:"Backdrop",overridesResolver:(t,e)=>e.backdrop})({zIndex:-1}),RU=T.forwardRef(function(e,n){var r,i,s,o,a,l;const u=tn({name:"MuiModal",props:e}),{BackdropComponent:c=AU,BackdropProps:h,className:d,closeAfterTransition:f=!1,children:p,container:m,component:w,components:g={},componentsProps:y={},disableAutoFocus:v=!1,disableEnforceFocus:_=!1,disableEscapeKeyDown:x=!1,disablePortal:b=!1,disableRestoreFocus:E=!1,disableScrollLock:C=!1,hideBackdrop:A=!1,keepMounted:S=!1,onBackdropClick:P,open:M,slotProps:D,slots:$}=u,B=ue(u,CU),F=I({},u,{closeAfterTransition:f,disableAutoFocus:v,disableEnforceFocus:_,disableEscapeKeyDown:x,disablePortal:b,disableRestoreFocus:E,disableScrollLock:C,hideBackdrop:A,keepMounted:S}),{getRootProps:K,getBackdropProps:O,getTransitionProps:N,portalRef:L,isTopModal:Q,exited:q,hasTransition:Se}=U3(I({},F,{rootRef:n})),R=I({},F,{exited:q}),ve=IU(R),W={};if(p.props.tabIndex===void 0&&(W.tabIndex="-1"),Se){const{onEnter:xe,onExited:de}=N();W.onEnter=xe,W.onExited=de}const re=(r=(i=$==null?void 0:$.root)!=null?i:g.Root)!=null?r:PU,ke=(s=(o=$==null?void 0:$.backdrop)!=null?o:g.Backdrop)!=null?s:c,U=(a=D==null?void 0:D.root)!=null?a:y.root,Y=(l=D==null?void 0:D.backdrop)!=null?l:y.backdrop,te=Cn({elementType:re,externalSlotProps:U,externalForwardedProps:B,getSlotProps:K,additionalProps:{ref:n,as:w},ownerState:R,className:$e(d,U==null?void 0:U.className,ve==null?void 0:ve.root,!R.open&&R.exited&&(ve==null?void 0:ve.hidden))}),z=Cn({elementType:ke,externalSlotProps:Y,additionalProps:h,getSlotProps:xe=>O(I({},xe,{onClick:de=>{P&&P(de),xe!=null&&xe.onClick&&xe.onClick(de)}})),className:$e(Y==null?void 0:Y.className,h==null?void 0:h.className,ve==null?void 0:ve.backdrop),ownerState:R});return!S&&!M&&(!Se||q)?null:k.jsx(oI,{ref:L,container:m,disablePortal:b,children:k.jsxs(re,I({},te,{children:[!A&&c?k.jsx(ke,I({},z)):null,k.jsx(gz,{disableEnforceFocus:_,disableAutoFocus:v,disableRestoreFocus:E,isEnabled:Q,open:M,children:T.cloneElement(p,W)})]}))})}),MU=RU,OU=T.createContext(),Yx=OU;function DU(t){return ut("MuiGrid",t)}const NU=[0,1,2,3,4,5,6,7,8,9,10],$U=["column-reverse","column","row-reverse","row"],LU=["nowrap","wrap-reverse","wrap"],dl=["auto",!0,1,2,3,4,5,6,7,8,9,10,11,12],FU=ct("MuiGrid",["root","container","item","zeroMinWidth",...NU.map(t=>`spacing-xs-${t}`),...$U.map(t=>`direction-xs-${t}`),...LU.map(t=>`wrap-xs-${t}`),...dl.map(t=>`grid-xs-${t}`),...dl.map(t=>`grid-sm-${t}`),...dl.map(t=>`grid-md-${t}`),...dl.map(t=>`grid-lg-${t}`),...dl.map(t=>`grid-xl-${t}`)]),bu=FU,VU=["className","columns","columnSpacing","component","container","direction","item","rowSpacing","spacing","wrap","zeroMinWidth"];function sa(t){const e=parseFloat(t);return`${e}${String(t).replace(String(e),"")||"px"}`}function zU({theme:t,ownerState:e}){let n;return t.breakpoints.keys.reduce((r,i)=>{let s={};if(e[i]&&(n=e[i]),!n)return r;if(n===!0)s={flexBasis:0,flexGrow:1,maxWidth:"100%"};else if(n==="auto")s={flexBasis:"auto",flexGrow:0,flexShrink:0,maxWidth:"none",width:"auto"};else{const o=zf({values:e.columns,breakpoints:t.breakpoints.values}),a=typeof o=="object"?o[i]:o;if(a==null)return r;const l=`${Math.round(n/a*1e8)/1e6}%`;let u={};if(e.container&&e.item&&e.columnSpacing!==0){const c=t.spacing(e.columnSpacing);if(c!=="0px"){const h=`calc(${l} + ${sa(c)})`;u={flexBasis:h,maxWidth:h}}}s=I({flexBasis:l,flexGrow:0,maxWidth:l},u)}return t.breakpoints.values[i]===0?Object.assign(r,s):r[t.breakpoints.up(i)]=s,r},{})}function UU({theme:t,ownerState:e}){const n=zf({values:e.direction,breakpoints:t.breakpoints.values});return Kn({theme:t},n,r=>{const i={flexDirection:r};return r.indexOf("column")===0&&(i[`& > .${bu.item}`]={maxWidth:"none"}),i})}function uI({breakpoints:t,values:e}){let n="";Object.keys(e).forEach(i=>{n===""&&e[i]!==0&&(n=i)});const r=Object.keys(t).sort((i,s)=>t[i]-t[s]);return r.slice(0,r.indexOf(n))}function jU({theme:t,ownerState:e}){const{container:n,rowSpacing:r}=e;let i={};if(n&&r!==0){const s=zf({values:r,breakpoints:t.breakpoints.values});let o;typeof s=="object"&&(o=uI({breakpoints:t.breakpoints.values,values:s})),i=Kn({theme:t},s,(a,l)=>{var u;const c=t.spacing(a);return c!=="0px"?{marginTop:`-${sa(c)}`,[`& > .${bu.item}`]:{paddingTop:sa(c)}}:(u=o)!=null&&u.includes(l)?{}:{marginTop:0,[`& > .${bu.item}`]:{paddingTop:0}}})}return i}function BU({theme:t,ownerState:e}){const{container:n,columnSpacing:r}=e;let i={};if(n&&r!==0){const s=zf({values:r,breakpoints:t.breakpoints.values});let o;typeof s=="object"&&(o=uI({breakpoints:t.breakpoints.values,values:s})),i=Kn({theme:t},s,(a,l)=>{var u;const c=t.spacing(a);return c!=="0px"?{width:`calc(100% + ${sa(c)})`,marginLeft:`-${sa(c)}`,[`& > .${bu.item}`]:{paddingLeft:sa(c)}}:(u=o)!=null&&u.includes(l)?{}:{width:"100%",marginLeft:0,[`& > .${bu.item}`]:{paddingLeft:0}}})}return i}function HU(t,e,n={}){if(!t||t<=0)return[];if(typeof t=="string"&&!Number.isNaN(Number(t))||typeof t=="number")return[n[`spacing-xs-${String(t)}`]];const r=[];return e.forEach(i=>{const s=t[i];Number(s)>0&&r.push(n[`spacing-${i}-${String(s)}`])}),r}const WU=Te("div",{name:"MuiGrid",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t,{container:r,direction:i,item:s,spacing:o,wrap:a,zeroMinWidth:l,breakpoints:u}=n;let c=[];r&&(c=HU(o,u,e));const h=[];return u.forEach(d=>{const f=n[d];f&&h.push(e[`grid-${d}-${String(f)}`])}),[e.root,r&&e.container,s&&e.item,l&&e.zeroMinWidth,...c,i!=="row"&&e[`direction-xs-${String(i)}`],a!=="wrap"&&e[`wrap-xs-${String(a)}`],...h]}})(({ownerState:t})=>I({boxSizing:"border-box"},t.container&&{display:"flex",flexWrap:"wrap",width:"100%"},t.item&&{margin:0},t.zeroMinWidth&&{minWidth:0},t.wrap!=="wrap"&&{flexWrap:t.wrap}),UU,jU,BU,zU);function qU(t,e){if(!t||t<=0)return[];if(typeof t=="string"&&!Number.isNaN(Number(t))||typeof t=="number")return[`spacing-xs-${String(t)}`];const n=[];return e.forEach(r=>{const i=t[r];if(Number(i)>0){const s=`spacing-${r}-${String(i)}`;n.push(s)}}),n}const GU=t=>{const{classes:e,container:n,direction:r,item:i,spacing:s,wrap:o,zeroMinWidth:a,breakpoints:l}=t;let u=[];n&&(u=qU(s,l));const c=[];l.forEach(d=>{const f=t[d];f&&c.push(`grid-${d}-${String(f)}`)});const h={root:["root",n&&"container",i&&"item",a&&"zeroMinWidth",...u,r!=="row"&&`direction-xs-${String(r)}`,o!=="wrap"&&`wrap-xs-${String(o)}`,...c]};return lt(h,DU,e)},KU=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiGrid"}),{breakpoints:i}=lo(),s=M0(r),{className:o,columns:a,columnSpacing:l,component:u="div",container:c=!1,direction:h="row",item:d=!1,rowSpacing:f,spacing:p=0,wrap:m="wrap",zeroMinWidth:w=!1}=s,g=ue(s,VU),y=f||p,v=l||p,_=T.useContext(Yx),x=c?a||12:_,b={},E=I({},g);i.keys.forEach(S=>{g[S]!=null&&(b[S]=g[S],delete E[S])});const C=I({},s,{columns:x,container:c,direction:h,item:d,rowSpacing:y,columnSpacing:v,wrap:m,zeroMinWidth:w,spacing:p},b,{breakpoints:i.keys}),A=GU(C);return k.jsx(Yx.Provider,{value:x,children:k.jsx(WU,I({ownerState:C,className:$e(A.root,o),as:u,ref:n},E))})}),Qc=KU;var cI={exports:{}};(function(t,e){(function(n,r){t.exports=r(T)})(typeof self<"u"?self:g2,n=>(()=>{var r={7403:(a,l,u)=>{u.d(l,{default:()=>O});var c=u(4087),h=u.n(c);const d=function(N){return new RegExp(/<[a-z][\s\S]*>/i).test(N)},f=function(N,L){return Math.floor(Math.random()*(L-N+1))+N};var p="TYPE_CHARACTER",m="REMOVE_CHARACTER",w="REMOVE_ALL",g="REMOVE_LAST_VISIBLE_NODE",y="PAUSE_FOR",v="CALL_FUNCTION",_="ADD_HTML_TAG_ELEMENT",x="CHANGE_DELETE_SPEED",b="CHANGE_DELAY",E="CHANGE_CURSOR",C="PASTE_STRING",A="HTML_TAG";function S(N){return S=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(L){return typeof L}:function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},S(N)}function P(N,L){var Q=Object.keys(N);if(Object.getOwnPropertySymbols){var q=Object.getOwnPropertySymbols(N);L&&(q=q.filter(function(Se){return Object.getOwnPropertyDescriptor(N,Se).enumerable})),Q.push.apply(Q,q)}return Q}function M(N){for(var L=1;LN.length)&&(L=N.length);for(var Q=0,q=new Array(L);Q1&&arguments[1]!==void 0?arguments[1]:null;if(d(W))return R.typeOutHTMLString(W,re);if(W){var ke=(R.options||{}).stringSplitter,U=typeof ke=="function"?ke(W):W.split("");R.typeCharacters(U,re)}return R}),F(this,"pasteString",function(W){var re=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;return d(W)?R.typeOutHTMLString(W,re,!0):(W&&R.addEventToQueue(C,{character:W,node:re}),R)}),F(this,"typeOutHTMLString",function(W){var re=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,ke=arguments.length>2?arguments[2]:void 0,U=function(xe){var de=document.createElement("div");return de.innerHTML=xe,de.childNodes}(W);if(U.length>0)for(var Y=0;Y0&&arguments[0]!==void 0?arguments[0]:"natural";return R.addEventToQueue(w,{speed:W}),R}),F(this,"changeDeleteSpeed",function(W){if(!W)throw new Error("Must provide new delete speed");return R.addEventToQueue(x,{speed:W}),R}),F(this,"changeDelay",function(W){if(!W)throw new Error("Must provide new delay");return R.addEventToQueue(b,{delay:W}),R}),F(this,"changeCursor",function(W){if(!W)throw new Error("Must provide new cursor");return R.addEventToQueue(E,{cursor:W}),R}),F(this,"deleteChars",function(W){if(!W)throw new Error("Must provide amount of characters to delete");for(var re=0;re1&&arguments[1]!==void 0?arguments[1]:null;if(!W||!Array.isArray(W))throw new Error("Characters must be an array");return W.forEach(function(ke){R.addEventToQueue(p,{character:ke,node:re})}),R}),F(this,"removeCharacters",function(W){if(!W||!Array.isArray(W))throw new Error("Characters must be an array");return W.forEach(function(){R.addEventToQueue(m)}),R}),F(this,"addEventToQueue",function(W,re){var ke=arguments.length>2&&arguments[2]!==void 0&&arguments[2];return R.addEventToStateProperty(W,re,ke,"eventQueue")}),F(this,"addReverseCalledEvent",function(W,re){var ke=arguments.length>2&&arguments[2]!==void 0&&arguments[2];return R.options.loop?R.addEventToStateProperty(W,re,ke,"reverseCalledEvents"):R}),F(this,"addEventToStateProperty",function(W,re){var ke=arguments.length>2&&arguments[2]!==void 0&&arguments[2],U=arguments.length>3?arguments[3]:void 0,Y={eventName:W,eventArgs:re||{}};return R.state[U]=ke?[Y].concat(D(R.state[U])):[].concat(D(R.state[U]),[Y]),R}),F(this,"runEventLoop",function(){R.state.lastFrameTime||(R.state.lastFrameTime=Date.now());var W=Date.now(),re=W-R.state.lastFrameTime;if(!R.state.eventQueue.length){if(!R.options.loop)return;R.state.eventQueue=D(R.state.calledEvents),R.state.calledEvents=[],R.options=M({},R.state.initialOptions)}if(R.state.eventLoop=h()(R.runEventLoop),!R.state.eventLoopPaused){if(R.state.pauseUntil){if(W{var c=u(852)(u(5639),"DataView");a.exports=c},1989:(a,l,u)=>{var c=u(1789),h=u(401),d=u(7667),f=u(1327),p=u(1866);function m(w){var g=-1,y=w==null?0:w.length;for(this.clear();++g{var c=u(7040),h=u(4125),d=u(2117),f=u(7518),p=u(4705);function m(w){var g=-1,y=w==null?0:w.length;for(this.clear();++g{var c=u(852)(u(5639),"Map");a.exports=c},3369:(a,l,u)=>{var c=u(4785),h=u(1285),d=u(6e3),f=u(9916),p=u(5265);function m(w){var g=-1,y=w==null?0:w.length;for(this.clear();++g{var c=u(852)(u(5639),"Promise");a.exports=c},8525:(a,l,u)=>{var c=u(852)(u(5639),"Set");a.exports=c},8668:(a,l,u)=>{var c=u(3369),h=u(619),d=u(2385);function f(p){var m=-1,w=p==null?0:p.length;for(this.__data__=new c;++m{var c=u(8407),h=u(7465),d=u(3779),f=u(7599),p=u(4758),m=u(4309);function w(g){var y=this.__data__=new c(g);this.size=y.size}w.prototype.clear=h,w.prototype.delete=d,w.prototype.get=f,w.prototype.has=p,w.prototype.set=m,a.exports=w},2705:(a,l,u)=>{var c=u(5639).Symbol;a.exports=c},1149:(a,l,u)=>{var c=u(5639).Uint8Array;a.exports=c},577:(a,l,u)=>{var c=u(852)(u(5639),"WeakMap");a.exports=c},4963:a=>{a.exports=function(l,u){for(var c=-1,h=l==null?0:l.length,d=0,f=[];++c{var c=u(2545),h=u(5694),d=u(1469),f=u(4144),p=u(5776),m=u(6719),w=Object.prototype.hasOwnProperty;a.exports=function(g,y){var v=d(g),_=!v&&h(g),x=!v&&!_&&f(g),b=!v&&!_&&!x&&m(g),E=v||_||x||b,C=E?c(g.length,String):[],A=C.length;for(var S in g)!y&&!w.call(g,S)||E&&(S=="length"||x&&(S=="offset"||S=="parent")||b&&(S=="buffer"||S=="byteLength"||S=="byteOffset")||p(S,A))||C.push(S);return C}},2488:a=>{a.exports=function(l,u){for(var c=-1,h=u.length,d=l.length;++c{a.exports=function(l,u){for(var c=-1,h=l==null?0:l.length;++c{var c=u(7813);a.exports=function(h,d){for(var f=h.length;f--;)if(c(h[f][0],d))return f;return-1}},8866:(a,l,u)=>{var c=u(2488),h=u(1469);a.exports=function(d,f,p){var m=f(d);return h(d)?m:c(m,p(d))}},4239:(a,l,u)=>{var c=u(2705),h=u(9607),d=u(2333),f=c?c.toStringTag:void 0;a.exports=function(p){return p==null?p===void 0?"[object Undefined]":"[object Null]":f&&f in Object(p)?h(p):d(p)}},9454:(a,l,u)=>{var c=u(4239),h=u(7005);a.exports=function(d){return h(d)&&c(d)=="[object Arguments]"}},939:(a,l,u)=>{var c=u(2492),h=u(7005);a.exports=function d(f,p,m,w,g){return f===p||(f==null||p==null||!h(f)&&!h(p)?f!=f&&p!=p:c(f,p,m,w,d,g))}},2492:(a,l,u)=>{var c=u(6384),h=u(7114),d=u(8351),f=u(6096),p=u(4160),m=u(1469),w=u(4144),g=u(6719),y="[object Arguments]",v="[object Array]",_="[object Object]",x=Object.prototype.hasOwnProperty;a.exports=function(b,E,C,A,S,P){var M=m(b),D=m(E),$=M?v:p(b),B=D?v:p(E),F=($=$==y?_:$)==_,K=(B=B==y?_:B)==_,O=$==B;if(O&&w(b)){if(!w(E))return!1;M=!0,F=!1}if(O&&!F)return P||(P=new c),M||g(b)?h(b,E,C,A,S,P):d(b,E,$,C,A,S,P);if(!(1&C)){var N=F&&x.call(b,"__wrapped__"),L=K&&x.call(E,"__wrapped__");if(N||L){var Q=N?b.value():b,q=L?E.value():E;return P||(P=new c),S(Q,q,C,A,P)}}return!!O&&(P||(P=new c),f(b,E,C,A,S,P))}},8458:(a,l,u)=>{var c=u(3560),h=u(5346),d=u(3218),f=u(346),p=/^\[object .+?Constructor\]$/,m=Function.prototype,w=Object.prototype,g=m.toString,y=w.hasOwnProperty,v=RegExp("^"+g.call(y).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");a.exports=function(_){return!(!d(_)||h(_))&&(c(_)?v:p).test(f(_))}},8749:(a,l,u)=>{var c=u(4239),h=u(1780),d=u(7005),f={};f["[object Float32Array]"]=f["[object Float64Array]"]=f["[object Int8Array]"]=f["[object Int16Array]"]=f["[object Int32Array]"]=f["[object Uint8Array]"]=f["[object Uint8ClampedArray]"]=f["[object Uint16Array]"]=f["[object Uint32Array]"]=!0,f["[object Arguments]"]=f["[object Array]"]=f["[object ArrayBuffer]"]=f["[object Boolean]"]=f["[object DataView]"]=f["[object Date]"]=f["[object Error]"]=f["[object Function]"]=f["[object Map]"]=f["[object Number]"]=f["[object Object]"]=f["[object RegExp]"]=f["[object Set]"]=f["[object String]"]=f["[object WeakMap]"]=!1,a.exports=function(p){return d(p)&&h(p.length)&&!!f[c(p)]}},280:(a,l,u)=>{var c=u(5726),h=u(6916),d=Object.prototype.hasOwnProperty;a.exports=function(f){if(!c(f))return h(f);var p=[];for(var m in Object(f))d.call(f,m)&&m!="constructor"&&p.push(m);return p}},2545:a=>{a.exports=function(l,u){for(var c=-1,h=Array(l);++c{a.exports=function(l){return function(u){return l(u)}}},4757:a=>{a.exports=function(l,u){return l.has(u)}},4429:(a,l,u)=>{var c=u(5639)["__core-js_shared__"];a.exports=c},7114:(a,l,u)=>{var c=u(8668),h=u(2908),d=u(4757);a.exports=function(f,p,m,w,g,y){var v=1&m,_=f.length,x=p.length;if(_!=x&&!(v&&x>_))return!1;var b=y.get(f),E=y.get(p);if(b&&E)return b==p&&E==f;var C=-1,A=!0,S=2&m?new c:void 0;for(y.set(f,p),y.set(p,f);++C<_;){var P=f[C],M=p[C];if(w)var D=v?w(M,P,C,p,f,y):w(P,M,C,f,p,y);if(D!==void 0){if(D)continue;A=!1;break}if(S){if(!h(p,function($,B){if(!d(S,B)&&(P===$||g(P,$,m,w,y)))return S.push(B)})){A=!1;break}}else if(P!==M&&!g(P,M,m,w,y)){A=!1;break}}return y.delete(f),y.delete(p),A}},8351:(a,l,u)=>{var c=u(2705),h=u(1149),d=u(7813),f=u(7114),p=u(8776),m=u(1814),w=c?c.prototype:void 0,g=w?w.valueOf:void 0;a.exports=function(y,v,_,x,b,E,C){switch(_){case"[object DataView]":if(y.byteLength!=v.byteLength||y.byteOffset!=v.byteOffset)return!1;y=y.buffer,v=v.buffer;case"[object ArrayBuffer]":return!(y.byteLength!=v.byteLength||!E(new h(y),new h(v)));case"[object Boolean]":case"[object Date]":case"[object Number]":return d(+y,+v);case"[object Error]":return y.name==v.name&&y.message==v.message;case"[object RegExp]":case"[object String]":return y==v+"";case"[object Map]":var A=p;case"[object Set]":var S=1&x;if(A||(A=m),y.size!=v.size&&!S)return!1;var P=C.get(y);if(P)return P==v;x|=2,C.set(y,v);var M=f(A(y),A(v),x,b,E,C);return C.delete(y),M;case"[object Symbol]":if(g)return g.call(y)==g.call(v)}return!1}},6096:(a,l,u)=>{var c=u(8234),h=Object.prototype.hasOwnProperty;a.exports=function(d,f,p,m,w,g){var y=1&p,v=c(d),_=v.length;if(_!=c(f).length&&!y)return!1;for(var x=_;x--;){var b=v[x];if(!(y?b in f:h.call(f,b)))return!1}var E=g.get(d),C=g.get(f);if(E&&C)return E==f&&C==d;var A=!0;g.set(d,f),g.set(f,d);for(var S=y;++x<_;){var P=d[b=v[x]],M=f[b];if(m)var D=y?m(M,P,b,f,d,g):m(P,M,b,d,f,g);if(!(D===void 0?P===M||w(P,M,p,m,g):D)){A=!1;break}S||(S=b=="constructor")}if(A&&!S){var $=d.constructor,B=f.constructor;$==B||!("constructor"in d)||!("constructor"in f)||typeof $=="function"&&$ instanceof $&&typeof B=="function"&&B instanceof B||(A=!1)}return g.delete(d),g.delete(f),A}},1957:(a,l,u)=>{var c=typeof u.g=="object"&&u.g&&u.g.Object===Object&&u.g;a.exports=c},8234:(a,l,u)=>{var c=u(8866),h=u(9551),d=u(3674);a.exports=function(f){return c(f,d,h)}},5050:(a,l,u)=>{var c=u(7019);a.exports=function(h,d){var f=h.__data__;return c(d)?f[typeof d=="string"?"string":"hash"]:f.map}},852:(a,l,u)=>{var c=u(8458),h=u(7801);a.exports=function(d,f){var p=h(d,f);return c(p)?p:void 0}},9607:(a,l,u)=>{var c=u(2705),h=Object.prototype,d=h.hasOwnProperty,f=h.toString,p=c?c.toStringTag:void 0;a.exports=function(m){var w=d.call(m,p),g=m[p];try{m[p]=void 0;var y=!0}catch{}var v=f.call(m);return y&&(w?m[p]=g:delete m[p]),v}},9551:(a,l,u)=>{var c=u(4963),h=u(479),d=Object.prototype.propertyIsEnumerable,f=Object.getOwnPropertySymbols,p=f?function(m){return m==null?[]:(m=Object(m),c(f(m),function(w){return d.call(m,w)}))}:h;a.exports=p},4160:(a,l,u)=>{var c=u(8552),h=u(7071),d=u(3818),f=u(8525),p=u(577),m=u(4239),w=u(346),g="[object Map]",y="[object Promise]",v="[object Set]",_="[object WeakMap]",x="[object DataView]",b=w(c),E=w(h),C=w(d),A=w(f),S=w(p),P=m;(c&&P(new c(new ArrayBuffer(1)))!=x||h&&P(new h)!=g||d&&P(d.resolve())!=y||f&&P(new f)!=v||p&&P(new p)!=_)&&(P=function(M){var D=m(M),$=D=="[object Object]"?M.constructor:void 0,B=$?w($):"";if(B)switch(B){case b:return x;case E:return g;case C:return y;case A:return v;case S:return _}return D}),a.exports=P},7801:a=>{a.exports=function(l,u){return l==null?void 0:l[u]}},1789:(a,l,u)=>{var c=u(4536);a.exports=function(){this.__data__=c?c(null):{},this.size=0}},401:a=>{a.exports=function(l){var u=this.has(l)&&delete this.__data__[l];return this.size-=u?1:0,u}},7667:(a,l,u)=>{var c=u(4536),h=Object.prototype.hasOwnProperty;a.exports=function(d){var f=this.__data__;if(c){var p=f[d];return p==="__lodash_hash_undefined__"?void 0:p}return h.call(f,d)?f[d]:void 0}},1327:(a,l,u)=>{var c=u(4536),h=Object.prototype.hasOwnProperty;a.exports=function(d){var f=this.__data__;return c?f[d]!==void 0:h.call(f,d)}},1866:(a,l,u)=>{var c=u(4536);a.exports=function(h,d){var f=this.__data__;return this.size+=this.has(h)?0:1,f[h]=c&&d===void 0?"__lodash_hash_undefined__":d,this}},5776:a=>{var l=/^(?:0|[1-9]\d*)$/;a.exports=function(u,c){var h=typeof u;return!!(c=c??9007199254740991)&&(h=="number"||h!="symbol"&&l.test(u))&&u>-1&&u%1==0&&u{a.exports=function(l){var u=typeof l;return u=="string"||u=="number"||u=="symbol"||u=="boolean"?l!=="__proto__":l===null}},5346:(a,l,u)=>{var c,h=u(4429),d=(c=/[^.]+$/.exec(h&&h.keys&&h.keys.IE_PROTO||""))?"Symbol(src)_1."+c:"";a.exports=function(f){return!!d&&d in f}},5726:a=>{var l=Object.prototype;a.exports=function(u){var c=u&&u.constructor;return u===(typeof c=="function"&&c.prototype||l)}},7040:a=>{a.exports=function(){this.__data__=[],this.size=0}},4125:(a,l,u)=>{var c=u(8470),h=Array.prototype.splice;a.exports=function(d){var f=this.__data__,p=c(f,d);return!(p<0||(p==f.length-1?f.pop():h.call(f,p,1),--this.size,0))}},2117:(a,l,u)=>{var c=u(8470);a.exports=function(h){var d=this.__data__,f=c(d,h);return f<0?void 0:d[f][1]}},7518:(a,l,u)=>{var c=u(8470);a.exports=function(h){return c(this.__data__,h)>-1}},4705:(a,l,u)=>{var c=u(8470);a.exports=function(h,d){var f=this.__data__,p=c(f,h);return p<0?(++this.size,f.push([h,d])):f[p][1]=d,this}},4785:(a,l,u)=>{var c=u(1989),h=u(8407),d=u(7071);a.exports=function(){this.size=0,this.__data__={hash:new c,map:new(d||h),string:new c}}},1285:(a,l,u)=>{var c=u(5050);a.exports=function(h){var d=c(this,h).delete(h);return this.size-=d?1:0,d}},6e3:(a,l,u)=>{var c=u(5050);a.exports=function(h){return c(this,h).get(h)}},9916:(a,l,u)=>{var c=u(5050);a.exports=function(h){return c(this,h).has(h)}},5265:(a,l,u)=>{var c=u(5050);a.exports=function(h,d){var f=c(this,h),p=f.size;return f.set(h,d),this.size+=f.size==p?0:1,this}},8776:a=>{a.exports=function(l){var u=-1,c=Array(l.size);return l.forEach(function(h,d){c[++u]=[d,h]}),c}},4536:(a,l,u)=>{var c=u(852)(Object,"create");a.exports=c},6916:(a,l,u)=>{var c=u(5569)(Object.keys,Object);a.exports=c},1167:(a,l,u)=>{a=u.nmd(a);var c=u(1957),h=l&&!l.nodeType&&l,d=h&&a&&!a.nodeType&&a,f=d&&d.exports===h&&c.process,p=function(){try{return d&&d.require&&d.require("util").types||f&&f.binding&&f.binding("util")}catch{}}();a.exports=p},2333:a=>{var l=Object.prototype.toString;a.exports=function(u){return l.call(u)}},5569:a=>{a.exports=function(l,u){return function(c){return l(u(c))}}},5639:(a,l,u)=>{var c=u(1957),h=typeof self=="object"&&self&&self.Object===Object&&self,d=c||h||Function("return this")();a.exports=d},619:a=>{a.exports=function(l){return this.__data__.set(l,"__lodash_hash_undefined__"),this}},2385:a=>{a.exports=function(l){return this.__data__.has(l)}},1814:a=>{a.exports=function(l){var u=-1,c=Array(l.size);return l.forEach(function(h){c[++u]=h}),c}},7465:(a,l,u)=>{var c=u(8407);a.exports=function(){this.__data__=new c,this.size=0}},3779:a=>{a.exports=function(l){var u=this.__data__,c=u.delete(l);return this.size=u.size,c}},7599:a=>{a.exports=function(l){return this.__data__.get(l)}},4758:a=>{a.exports=function(l){return this.__data__.has(l)}},4309:(a,l,u)=>{var c=u(8407),h=u(7071),d=u(3369);a.exports=function(f,p){var m=this.__data__;if(m instanceof c){var w=m.__data__;if(!h||w.length<199)return w.push([f,p]),this.size=++m.size,this;m=this.__data__=new d(w)}return m.set(f,p),this.size=m.size,this}},346:a=>{var l=Function.prototype.toString;a.exports=function(u){if(u!=null){try{return l.call(u)}catch{}try{return u+""}catch{}}return""}},7813:a=>{a.exports=function(l,u){return l===u||l!=l&&u!=u}},5694:(a,l,u)=>{var c=u(9454),h=u(7005),d=Object.prototype,f=d.hasOwnProperty,p=d.propertyIsEnumerable,m=c(function(){return arguments}())?c:function(w){return h(w)&&f.call(w,"callee")&&!p.call(w,"callee")};a.exports=m},1469:a=>{var l=Array.isArray;a.exports=l},8612:(a,l,u)=>{var c=u(3560),h=u(1780);a.exports=function(d){return d!=null&&h(d.length)&&!c(d)}},4144:(a,l,u)=>{a=u.nmd(a);var c=u(5639),h=u(5062),d=l&&!l.nodeType&&l,f=d&&a&&!a.nodeType&&a,p=f&&f.exports===d?c.Buffer:void 0,m=(p?p.isBuffer:void 0)||h;a.exports=m},8446:(a,l,u)=>{var c=u(939);a.exports=function(h,d){return c(h,d)}},3560:(a,l,u)=>{var c=u(4239),h=u(3218);a.exports=function(d){if(!h(d))return!1;var f=c(d);return f=="[object Function]"||f=="[object GeneratorFunction]"||f=="[object AsyncFunction]"||f=="[object Proxy]"}},1780:a=>{a.exports=function(l){return typeof l=="number"&&l>-1&&l%1==0&&l<=9007199254740991}},3218:a=>{a.exports=function(l){var u=typeof l;return l!=null&&(u=="object"||u=="function")}},7005:a=>{a.exports=function(l){return l!=null&&typeof l=="object"}},6719:(a,l,u)=>{var c=u(8749),h=u(1717),d=u(1167),f=d&&d.isTypedArray,p=f?h(f):c;a.exports=p},3674:(a,l,u)=>{var c=u(4636),h=u(280),d=u(8612);a.exports=function(f){return d(f)?c(f):h(f)}},479:a=>{a.exports=function(){return[]}},5062:a=>{a.exports=function(){return!1}},75:function(a){(function(){var l,u,c,h,d,f;typeof performance<"u"&&performance!==null&&performance.now?a.exports=function(){return performance.now()}:typeof process<"u"&&process!==null&&process.hrtime?(a.exports=function(){return(l()-d)/1e6},u=process.hrtime,h=(l=function(){var p;return 1e9*(p=u())[0]+p[1]})(),f=1e9*process.uptime(),d=h-f):Date.now?(a.exports=function(){return Date.now()-c},c=Date.now()):(a.exports=function(){return new Date().getTime()-c},c=new Date().getTime())}).call(this)},4087:(a,l,u)=>{for(var c=u(75),h=typeof window>"u"?u.g:window,d=["moz","webkit"],f="AnimationFrame",p=h["request"+f],m=h["cancel"+f]||h["cancelRequest"+f],w=0;!p&&w{a.exports=n}},i={};function s(a){var l=i[a];if(l!==void 0)return l.exports;var u=i[a]={id:a,loaded:!1,exports:{}};return r[a].call(u.exports,u,u.exports,s),u.loaded=!0,u.exports}s.n=a=>{var l=a&&a.__esModule?()=>a.default:()=>a;return s.d(l,{a:l}),l},s.d=(a,l)=>{for(var u in l)s.o(l,u)&&!s.o(a,u)&&Object.defineProperty(a,u,{enumerable:!0,get:l[u]})},s.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch{if(typeof window=="object")return window}}(),s.o=(a,l)=>Object.prototype.hasOwnProperty.call(a,l),s.nmd=a=>(a.paths=[],a.children||(a.children=[]),a);var o={};return(()=>{s.d(o,{default:()=>v});var a=s(8156),l=s.n(a),u=s(7403),c=s(8446),h=s.n(c);function d(_){return d=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(x){return typeof x}:function(x){return x&&typeof Symbol=="function"&&x.constructor===Symbol&&x!==Symbol.prototype?"symbol":typeof x},d(_)}function f(_,x){for(var b=0;b"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}(),function(){var P,M=w(E);if(C){var D=w(this).constructor;P=Reflect.construct(M,arguments,D)}else P=M.apply(this,arguments);return function($,B){if(B&&(d(B)==="object"||typeof B=="function"))return B;if(B!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return m($)}(this,P)});function S(){var P,M,D,$;(function(O,N){if(!(O instanceof N))throw new TypeError("Cannot call a class as a function")})(this,S);for(var B=arguments.length,F=new Array(B),K=0;K>>0),t6=0;function n6(t,e,n){return t.call.apply(t.bind,arguments)}function r6(t,e,n){if(!t)throw Error();if(2{},e),oe.removeEventListener("test",()=>{},e)}catch{}return t}();function Eu(t){return/^[\s\xa0]*$/.test(t)}function ep(){var t=oe.navigator;return t&&(t=t.userAgent)?t:""}function Cr(t){return ep().indexOf(t)!=-1}function K0(t){return K0[" "](t),t}K0[" "]=function(){};function o6(t,e){var n=J6;return Object.prototype.hasOwnProperty.call(n,t)?n[t]:n[t]=e(t)}var a6=Cr("Opera"),ka=Cr("Trident")||Cr("MSIE"),dI=Cr("Edge"),Ey=dI||ka,fI=Cr("Gecko")&&!(ep().toLowerCase().indexOf("webkit")!=-1&&!Cr("Edge"))&&!(Cr("Trident")||Cr("MSIE"))&&!Cr("Edge"),l6=ep().toLowerCase().indexOf("webkit")!=-1&&!Cr("Edge");function pI(){var t=oe.document;return t?t.documentMode:void 0}var Ty;e:{var Tm="",Sm=function(){var t=ep();if(fI)return/rv:([^\);]+)(\)|;)/.exec(t);if(dI)return/Edge\/([\d\.]+)/.exec(t);if(ka)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(t);if(l6)return/WebKit\/(\S+)/.exec(t);if(a6)return/(?:Version)[ \/]?(\S+)/.exec(t)}();if(Sm&&(Tm=Sm?Sm[1]:""),ka){var km=pI();if(km!=null&&km>parseFloat(Tm)){Ty=String(km);break e}}Ty=Tm}var Sy;if(oe.document&&ka){var Jx=pI();Sy=Jx||parseInt(Ty,10)||void 0}else Sy=void 0;var u6=Sy;function Tu(t,e){if(jt.call(this,t?t.type:""),this.relatedTarget=this.g=this.target=null,this.button=this.screenY=this.screenX=this.clientY=this.clientX=0,this.key="",this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1,this.state=null,this.pointerId=0,this.pointerType="",this.i=null,t){var n=this.type=t.type,r=t.changedTouches&&t.changedTouches.length?t.changedTouches[0]:null;if(this.target=t.target||t.srcElement,this.g=e,e=t.relatedTarget){if(fI){e:{try{K0(e.nodeName);var i=!0;break e}catch{}i=!1}i||(e=null)}}else n=="mouseover"?e=t.fromElement:n=="mouseout"&&(e=t.toElement);this.relatedTarget=e,r?(this.clientX=r.clientX!==void 0?r.clientX:r.pageX,this.clientY=r.clientY!==void 0?r.clientY:r.pageY,this.screenX=r.screenX||0,this.screenY=r.screenY||0):(this.clientX=t.clientX!==void 0?t.clientX:t.pageX,this.clientY=t.clientY!==void 0?t.clientY:t.pageY,this.screenX=t.screenX||0,this.screenY=t.screenY||0),this.button=t.button,this.key=t.key||"",this.ctrlKey=t.ctrlKey,this.altKey=t.altKey,this.shiftKey=t.shiftKey,this.metaKey=t.metaKey,this.pointerId=t.pointerId||0,this.pointerType=typeof t.pointerType=="string"?t.pointerType:c6[t.pointerType]||"",this.state=t.state,this.i=t,t.defaultPrevented&&Tu.$.h.call(this)}}bt(Tu,jt);var c6={2:"touch",3:"pen",4:"mouse"};Tu.prototype.h=function(){Tu.$.h.call(this);var t=this.i;t.preventDefault?t.preventDefault():t.returnValue=!1};var cc="closure_listenable_"+(1e6*Math.random()|0),h6=0;function d6(t,e,n,r,i){this.listener=t,this.proxy=null,this.src=e,this.type=n,this.capture=!!r,this.la=i,this.key=++h6,this.fa=this.ia=!1}function tp(t){t.fa=!0,t.listener=null,t.proxy=null,t.src=null,t.la=null}function Q0(t,e,n){for(const r in t)e.call(n,t[r],r,t)}function f6(t,e){for(const n in t)e.call(void 0,t[n],n,t)}function mI(t){const e={};for(const n in t)e[n]=t[n];return e}const Zx="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");function gI(t,e){let n,r;for(let i=1;i>>0);function Z0(t){return typeof t=="function"?t:(t[Im]||(t[Im]=function(e){return t.handleEvent(e)}),t[Im])}function _t(){ps.call(this),this.i=new np(this),this.S=this,this.J=null}bt(_t,ps);_t.prototype[cc]=!0;_t.prototype.removeEventListener=function(t,e,n,r){wI(this,t,e,n,r)};function At(t,e){var n,r=t.J;if(r)for(n=[];r;r=r.J)n.push(r);if(t=t.S,r=e.type||e,typeof e=="string")e=new jt(e,t);else if(e instanceof jt)e.target=e.target||t;else{var i=e;e=new jt(r,t),gI(e,i)}if(i=!0,n)for(var s=n.length-1;0<=s;s--){var o=e.g=n[s];i=Xc(o,r,!0,e)&&i}if(o=e.g=t,i=Xc(o,r,!0,e)&&i,i=Xc(o,r,!1,e)&&i,n)for(s=0;snew _6,t=>t.reset());class _6{constructor(){this.next=this.g=this.h=null}set(e,n){this.h=e,this.g=n,this.next=null}reset(){this.next=this.g=this.h=null}}function w6(t){var e=1;t=t.split(":");const n=[];for(;0{throw t},0)}let Su,ku=!1,t_=new v6,EI=()=>{const t=oe.Promise.resolve(void 0);Su=()=>{t.then(b6)}};var b6=()=>{for(var t;t=y6();){try{t.h.call(t.g)}catch(n){x6(n)}var e=bI;e.j(t),100>e.h&&(e.h++,t.next=e.g,e.g=t)}ku=!1};function rp(t,e){_t.call(this),this.h=t||1,this.g=e||oe,this.j=Ut(this.qb,this),this.l=Date.now()}bt(rp,_t);G=rp.prototype;G.ga=!1;G.T=null;G.qb=function(){if(this.ga){var t=Date.now()-this.l;0{t.g=null,t.i&&(t.i=!1,TI(t))},t.j);const e=t.h;t.h=null,t.m.apply(null,e)}class E6 extends ps{constructor(e,n){super(),this.m=e,this.j=n,this.h=null,this.i=!1,this.g=null}l(e){this.h=arguments,this.g?this.i=!0:TI(this)}N(){super.N(),this.g&&(oe.clearTimeout(this.g),this.g=null,this.i=!1,this.h=null)}}function Cu(t){ps.call(this),this.h=t,this.g={}}bt(Cu,ps);var eb=[];function SI(t,e,n,r){Array.isArray(n)||(n&&(eb[0]=n.toString()),n=eb);for(var i=0;ir.length)){var i=r[1];if(Array.isArray(i)&&!(1>i.length)){var s=i[0];if(s!="noop"&&s!="stop"&&s!="close")for(var o=1;oc)&&(c!=3||Ey||this.g&&(this.h.h||this.g.ja()||ob(this.g)))){this.J||c!=4||e==7||(e==8||0>=h?Iu(3):Iu(2)),lp(this);var n=this.g.da();this.ca=n;t:if(DI(this)){var r=ob(this.g);t="";var i=r.length,s=Ir(this.g)==4;if(!this.h.i){if(typeof TextDecoder>"u"){As(this),Bl(this);var o="";break t}this.h.i=new oe.TextDecoder}for(e=0;ee.length?Sd:(e=e.slice(r,r+n),t.C=r+n,e)))}G.cancel=function(){this.J=!0,As(this)};function pc(t){t.Y=Date.now()+t.P,$I(t,t.P)}function $I(t,e){if(t.B!=null)throw Error("WatchDog timer not null");t.B=hc(Ut(t.lb,t),e)}function lp(t){t.B&&(oe.clearTimeout(t.B),t.B=null)}G.lb=function(){this.B=null;const t=Date.now();0<=t-this.Y?(k6(this.j,this.A),this.L!=2&&(Iu(),Qt(17)),As(this),this.o=2,Bl(this)):$I(this,this.Y-t)};function Bl(t){t.l.H==0||t.J||iP(t.l,t)}function As(t){lp(t);var e=t.M;e&&typeof e.sa=="function"&&e.sa(),t.M=null,n_(t.V),kI(t.U),t.g&&(e=t.g,t.g=null,e.abort(),e.sa())}function Ry(t,e){try{var n=t.l;if(n.H!=0&&(n.g==t||My(n.i,t))){if(!t.K&&My(n.i,t)&&n.H==3){try{var r=n.Ja.g.parse(e)}catch{r=null}if(Array.isArray(r)&&r.length==3){var i=r;if(i[0]==0){e:if(!n.u){if(n.g)if(n.g.G+3e3i[2]&&n.G&&n.A==0&&!n.v&&(n.v=hc(Ut(n.ib,n),6e3));if(1>=HI(n.i)&&n.oa){try{n.oa()}catch{}n.oa=void 0}}else Rs(n,11)}else if((t.K||n.g==t)&&Id(n),!Eu(e))for(i=n.Ja.g.parse(e),e=0;ee)throw Error("Bad port number "+e);t.m=e}else t.m=null}function rb(t,e,n){e instanceof Pu?(t.i=e,F6(t.i,t.h)):(n||(e=Sl(e,$6)),t.i=new Pu(e,t.h))}function Le(t,e,n){t.i.set(e,n)}function up(t){return Le(t,"zx",Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36)),t}function Tl(t,e){return t?e?decodeURI(t.replace(/%25/g,"%2525")):decodeURIComponent(t):""}function Sl(t,e,n){return typeof t=="string"?(t=encodeURI(t).replace(e,O6),n&&(t=t.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),t):null}function O6(t){return t=t.charCodeAt(0),"%"+(t>>4&15).toString(16)+(t&15).toString(16)}var ib=/[#\/\?@]/g,D6=/[#\?:]/g,N6=/[#\?]/g,$6=/[#\?@]/g,L6=/#/g;function Pu(t,e){this.h=this.g=null,this.i=t||null,this.j=!!e}function ms(t){t.g||(t.g=new Map,t.h=0,t.i&&M6(t.i,function(e,n){t.add(decodeURIComponent(e.replace(/\+/g," ")),n)}))}G=Pu.prototype;G.add=function(t,e){ms(this),this.i=null,t=Ga(this,t);var n=this.g.get(t);return n||this.g.set(t,n=[]),n.push(e),this.h+=1,this};function VI(t,e){ms(t),e=Ga(t,e),t.g.has(e)&&(t.i=null,t.h-=t.g.get(e).length,t.g.delete(e))}function zI(t,e){return ms(t),e=Ga(t,e),t.g.has(e)}G.forEach=function(t,e){ms(this),this.g.forEach(function(n,r){n.forEach(function(i){t.call(e,i,r,this)},this)},this)};G.ta=function(){ms(this);const t=Array.from(this.g.values()),e=Array.from(this.g.keys()),n=[];for(let r=0;r=t.j:!1}function HI(t){return t.h?1:t.g?t.g.size:0}function My(t,e){return t.h?t.h==e:t.g?t.g.has(e):!1}function a_(t,e){t.g?t.g.add(e):t.h=e}function WI(t,e){t.h&&t.h==e?t.h=null:t.g&&t.g.has(e)&&t.g.delete(e)}jI.prototype.cancel=function(){if(this.i=qI(this),this.h)this.h.cancel(),this.h=null;else if(this.g&&this.g.size!==0){for(const t of this.g.values())t.cancel();this.g.clear()}};function qI(t){if(t.h!=null)return t.i.concat(t.h.F);if(t.g!=null&&t.g.size!==0){let e=t.i;for(const n of t.g.values())e=e.concat(n.F);return e}return G0(t.i)}var U6=class{stringify(t){return oe.JSON.stringify(t,void 0)}parse(t){return oe.JSON.parse(t,void 0)}};function j6(){this.g=new U6}function B6(t,e,n){const r=n||"";try{LI(t,function(i,s){let o=i;uc(i)&&(o=e_(i)),e.push(r+s+"="+encodeURIComponent(o))})}catch(i){throw e.push(r+"type="+encodeURIComponent("_badmap")),i}}function H6(t,e){const n=new ip;if(oe.Image){const r=new Image;r.onload=Yc(Jc,n,r,"TestLoadImage: loaded",!0,e),r.onerror=Yc(Jc,n,r,"TestLoadImage: error",!1,e),r.onabort=Yc(Jc,n,r,"TestLoadImage: abort",!1,e),r.ontimeout=Yc(Jc,n,r,"TestLoadImage: timeout",!1,e),oe.setTimeout(function(){r.ontimeout&&r.ontimeout()},1e4),r.src=t}else e(!1)}function Jc(t,e,n,r,i){try{e.onload=null,e.onerror=null,e.onabort=null,e.ontimeout=null,i(r)}catch{}}function cp(t){this.l=t.ec||null,this.j=t.ob||!1}bt(cp,i_);cp.prototype.g=function(){return new hp(this.l,this.j)};cp.prototype.i=function(t){return function(){return t}}({});function hp(t,e){_t.call(this),this.F=t,this.u=e,this.m=void 0,this.readyState=l_,this.status=0,this.responseType=this.responseText=this.response=this.statusText="",this.onreadystatechange=null,this.v=new Headers,this.h=null,this.C="GET",this.B="",this.g=!1,this.A=this.j=this.l=null}bt(hp,_t);var l_=0;G=hp.prototype;G.open=function(t,e){if(this.readyState!=l_)throw this.abort(),Error("Error reopening a connection");this.C=t,this.B=e,this.readyState=1,Au(this)};G.send=function(t){if(this.readyState!=1)throw this.abort(),Error("need to call open() first. ");this.g=!0;const e={headers:this.v,method:this.C,credentials:this.m,cache:void 0};t&&(e.body=t),(this.F||oe).fetch(new Request(this.B,e)).then(this.$a.bind(this),this.ka.bind(this))};G.abort=function(){this.response=this.responseText="",this.v=new Headers,this.status=0,this.j&&this.j.cancel("Request was aborted.").catch(()=>{}),1<=this.readyState&&this.g&&this.readyState!=4&&(this.g=!1,mc(this)),this.readyState=l_};G.$a=function(t){if(this.g&&(this.l=t,this.h||(this.status=this.l.status,this.statusText=this.l.statusText,this.h=t.headers,this.readyState=2,Au(this)),this.g&&(this.readyState=3,Au(this),this.g)))if(this.responseType==="arraybuffer")t.arrayBuffer().then(this.Ya.bind(this),this.ka.bind(this));else if(typeof oe.ReadableStream<"u"&&"body"in t){if(this.j=t.body.getReader(),this.u){if(this.responseType)throw Error('responseType must be empty for "streamBinaryChunks" mode responses.');this.response=[]}else this.response=this.responseText="",this.A=new TextDecoder;GI(this)}else t.text().then(this.Za.bind(this),this.ka.bind(this))};function GI(t){t.j.read().then(t.Xa.bind(t)).catch(t.ka.bind(t))}G.Xa=function(t){if(this.g){if(this.u&&t.value)this.response.push(t.value);else if(!this.u){var e=t.value?t.value:new Uint8Array(0);(e=this.A.decode(e,{stream:!t.done}))&&(this.response=this.responseText+=e)}t.done?mc(this):Au(this),this.readyState==3&&GI(this)}};G.Za=function(t){this.g&&(this.response=this.responseText=t,mc(this))};G.Ya=function(t){this.g&&(this.response=t,mc(this))};G.ka=function(){this.g&&mc(this)};function mc(t){t.readyState=4,t.l=null,t.j=null,t.A=null,Au(t)}G.setRequestHeader=function(t,e){this.v.append(t,e)};G.getResponseHeader=function(t){return this.h&&this.h.get(t.toLowerCase())||""};G.getAllResponseHeaders=function(){if(!this.h)return"";const t=[],e=this.h.entries();for(var n=e.next();!n.done;)n=n.value,t.push(n[0]+": "+n[1]),n=e.next();return t.join(`\r +`)};function Au(t){t.onreadystatechange&&t.onreadystatechange.call(t)}Object.defineProperty(hp.prototype,"withCredentials",{get:function(){return this.m==="include"},set:function(t){this.m=t?"include":"same-origin"}});var W6=oe.JSON.parse;function Ze(t){_t.call(this),this.headers=new Map,this.u=t||null,this.h=!1,this.C=this.g=null,this.I="",this.m=0,this.j="",this.l=this.G=this.v=this.F=!1,this.B=0,this.A=null,this.K=KI,this.L=this.M=!1}bt(Ze,_t);var KI="",q6=/^https?$/i,G6=["POST","PUT"];G=Ze.prototype;G.Oa=function(t){this.M=t};G.ha=function(t,e,n,r){if(this.g)throw Error("[goog.net.XhrIo] Object is active with another request="+this.I+"; newUri="+t);e=e?e.toUpperCase():"GET",this.I=t,this.j="",this.m=0,this.F=!1,this.h=!0,this.g=this.u?this.u.g():Iy.g(),this.C=this.u?nb(this.u):nb(Iy),this.g.onreadystatechange=Ut(this.La,this);try{this.G=!0,this.g.open(e,String(t),!0),this.G=!1}catch(s){sb(this,s);return}if(t=n||"",n=new Map(this.headers),r)if(Object.getPrototypeOf(r)===Object.prototype)for(var i in r)n.set(i,r[i]);else if(typeof r.keys=="function"&&typeof r.get=="function")for(const s of r.keys())n.set(s,r.get(s));else throw Error("Unknown input type for opt_headers: "+String(r));r=Array.from(n.keys()).find(s=>s.toLowerCase()=="content-type"),i=oe.FormData&&t instanceof oe.FormData,!(0<=hI(G6,e))||r||i||n.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8");for(const[s,o]of n)this.g.setRequestHeader(s,o);this.K&&(this.g.responseType=this.K),"withCredentials"in this.g&&this.g.withCredentials!==this.M&&(this.g.withCredentials=this.M);try{XI(this),0{}:null;t.g=null,t.C=null,e||At(t,"ready");try{n.onreadystatechange=r}catch{}}}function XI(t){t.g&&t.L&&(t.g.ontimeout=null),t.A&&(oe.clearTimeout(t.A),t.A=null)}G.isActive=function(){return!!this.g};function Ir(t){return t.g?t.g.readyState:0}G.da=function(){try{return 2=t.i.j-(t.m?1:0)?!1:t.m?(t.j=e.F.concat(t.j),!0):t.H==1||t.H==2||t.C>=(t.cb?0:t.eb)?!1:(t.m=hc(Ut(t.Na,t,e),sP(t,t.C)),t.C++,!0)}G.Na=function(t){if(this.m)if(this.m=null,this.H==1){if(!t){this.W=Math.floor(1e5*Math.random()),t=this.W++;const i=new fc(this,this.l,t);let s=this.s;if(this.U&&(s?(s=mI(s),gI(s,this.U)):s=this.U),this.o!==null||this.O||(i.I=s,s=null),this.P)e:{for(var e=0,n=0;nu)s=Math.max(0,i[l].g-100),a=!1;else try{B6(c,o,"req"+u+"_")}catch{r&&r(c)}}if(a){r=o.join("&");break e}}}return t=t.j.splice(0,n),e.F=t,r}function nP(t){if(!t.g&&!t.u){t.ba=1;var e=t.Ma;Su||EI(),ku||(Su(),ku=!0),t_.add(e,t),t.A=0}}function h_(t){return t.g||t.u||3<=t.A?!1:(t.ba++,t.u=hc(Ut(t.Ma,t),sP(t,t.A)),t.A++,!0)}G.Ma=function(){if(this.u=null,rP(this),this.ca&&!(this.M||this.g==null||0>=this.S)){var t=2*this.S;this.l.info("BP detection timer enabled: "+t),this.B=hc(Ut(this.jb,this),t)}};G.jb=function(){this.B&&(this.B=null,this.l.info("BP detection timeout reached."),this.l.info("Buffering proxy detected and switch to long-polling!"),this.G=!1,this.M=!0,Qt(10),fp(this),rP(this))};function d_(t){t.B!=null&&(oe.clearTimeout(t.B),t.B=null)}function rP(t){t.g=new fc(t,t.l,"rpc",t.ba),t.o===null&&(t.g.I=t.s),t.g.O=0;var e=mi(t.wa);Le(e,"RID","rpc"),Le(e,"SID",t.K),Le(e,"AID",t.V),Le(e,"CI",t.G?"0":"1"),!t.G&&t.qa&&Le(e,"TO",t.qa),Le(e,"TYPE","xmlhttp"),gc(t,e),t.o&&t.s&&u_(e,t.o,t.s),t.L&&t.g.setTimeout(t.L);var n=t.g;t=t.pa,n.L=1,n.v=up(mi(e)),n.s=null,n.S=!0,OI(n,t)}G.ib=function(){this.v!=null&&(this.v=null,fp(this),h_(this),Qt(19))};function Id(t){t.v!=null&&(oe.clearTimeout(t.v),t.v=null)}function iP(t,e){var n=null;if(t.g==e){Id(t),d_(t),t.g=null;var r=2}else if(My(t.i,e))n=e.F,WI(t.i,e),r=1;else return;if(t.H!=0){if(e.i)if(r==1){n=e.s?e.s.length:0,e=Date.now()-e.G;var i=t.C;r=sp(),At(r,new PI(r,n)),pp(t)}else nP(t);else if(i=e.o,i==3||i==0&&0i;++i)r[i]=e.charCodeAt(n++)|e.charCodeAt(n++)<<8|e.charCodeAt(n++)<<16|e.charCodeAt(n++)<<24;else for(i=0;16>i;++i)r[i]=e[n++]|e[n++]<<8|e[n++]<<16|e[n++]<<24;e=t.g[0],n=t.g[1],i=t.g[2];var s=t.g[3],o=e+(s^n&(i^s))+r[0]+3614090360&4294967295;e=n+(o<<7&4294967295|o>>>25),o=s+(i^e&(n^i))+r[1]+3905402710&4294967295,s=e+(o<<12&4294967295|o>>>20),o=i+(n^s&(e^n))+r[2]+606105819&4294967295,i=s+(o<<17&4294967295|o>>>15),o=n+(e^i&(s^e))+r[3]+3250441966&4294967295,n=i+(o<<22&4294967295|o>>>10),o=e+(s^n&(i^s))+r[4]+4118548399&4294967295,e=n+(o<<7&4294967295|o>>>25),o=s+(i^e&(n^i))+r[5]+1200080426&4294967295,s=e+(o<<12&4294967295|o>>>20),o=i+(n^s&(e^n))+r[6]+2821735955&4294967295,i=s+(o<<17&4294967295|o>>>15),o=n+(e^i&(s^e))+r[7]+4249261313&4294967295,n=i+(o<<22&4294967295|o>>>10),o=e+(s^n&(i^s))+r[8]+1770035416&4294967295,e=n+(o<<7&4294967295|o>>>25),o=s+(i^e&(n^i))+r[9]+2336552879&4294967295,s=e+(o<<12&4294967295|o>>>20),o=i+(n^s&(e^n))+r[10]+4294925233&4294967295,i=s+(o<<17&4294967295|o>>>15),o=n+(e^i&(s^e))+r[11]+2304563134&4294967295,n=i+(o<<22&4294967295|o>>>10),o=e+(s^n&(i^s))+r[12]+1804603682&4294967295,e=n+(o<<7&4294967295|o>>>25),o=s+(i^e&(n^i))+r[13]+4254626195&4294967295,s=e+(o<<12&4294967295|o>>>20),o=i+(n^s&(e^n))+r[14]+2792965006&4294967295,i=s+(o<<17&4294967295|o>>>15),o=n+(e^i&(s^e))+r[15]+1236535329&4294967295,n=i+(o<<22&4294967295|o>>>10),o=e+(i^s&(n^i))+r[1]+4129170786&4294967295,e=n+(o<<5&4294967295|o>>>27),o=s+(n^i&(e^n))+r[6]+3225465664&4294967295,s=e+(o<<9&4294967295|o>>>23),o=i+(e^n&(s^e))+r[11]+643717713&4294967295,i=s+(o<<14&4294967295|o>>>18),o=n+(s^e&(i^s))+r[0]+3921069994&4294967295,n=i+(o<<20&4294967295|o>>>12),o=e+(i^s&(n^i))+r[5]+3593408605&4294967295,e=n+(o<<5&4294967295|o>>>27),o=s+(n^i&(e^n))+r[10]+38016083&4294967295,s=e+(o<<9&4294967295|o>>>23),o=i+(e^n&(s^e))+r[15]+3634488961&4294967295,i=s+(o<<14&4294967295|o>>>18),o=n+(s^e&(i^s))+r[4]+3889429448&4294967295,n=i+(o<<20&4294967295|o>>>12),o=e+(i^s&(n^i))+r[9]+568446438&4294967295,e=n+(o<<5&4294967295|o>>>27),o=s+(n^i&(e^n))+r[14]+3275163606&4294967295,s=e+(o<<9&4294967295|o>>>23),o=i+(e^n&(s^e))+r[3]+4107603335&4294967295,i=s+(o<<14&4294967295|o>>>18),o=n+(s^e&(i^s))+r[8]+1163531501&4294967295,n=i+(o<<20&4294967295|o>>>12),o=e+(i^s&(n^i))+r[13]+2850285829&4294967295,e=n+(o<<5&4294967295|o>>>27),o=s+(n^i&(e^n))+r[2]+4243563512&4294967295,s=e+(o<<9&4294967295|o>>>23),o=i+(e^n&(s^e))+r[7]+1735328473&4294967295,i=s+(o<<14&4294967295|o>>>18),o=n+(s^e&(i^s))+r[12]+2368359562&4294967295,n=i+(o<<20&4294967295|o>>>12),o=e+(n^i^s)+r[5]+4294588738&4294967295,e=n+(o<<4&4294967295|o>>>28),o=s+(e^n^i)+r[8]+2272392833&4294967295,s=e+(o<<11&4294967295|o>>>21),o=i+(s^e^n)+r[11]+1839030562&4294967295,i=s+(o<<16&4294967295|o>>>16),o=n+(i^s^e)+r[14]+4259657740&4294967295,n=i+(o<<23&4294967295|o>>>9),o=e+(n^i^s)+r[1]+2763975236&4294967295,e=n+(o<<4&4294967295|o>>>28),o=s+(e^n^i)+r[4]+1272893353&4294967295,s=e+(o<<11&4294967295|o>>>21),o=i+(s^e^n)+r[7]+4139469664&4294967295,i=s+(o<<16&4294967295|o>>>16),o=n+(i^s^e)+r[10]+3200236656&4294967295,n=i+(o<<23&4294967295|o>>>9),o=e+(n^i^s)+r[13]+681279174&4294967295,e=n+(o<<4&4294967295|o>>>28),o=s+(e^n^i)+r[0]+3936430074&4294967295,s=e+(o<<11&4294967295|o>>>21),o=i+(s^e^n)+r[3]+3572445317&4294967295,i=s+(o<<16&4294967295|o>>>16),o=n+(i^s^e)+r[6]+76029189&4294967295,n=i+(o<<23&4294967295|o>>>9),o=e+(n^i^s)+r[9]+3654602809&4294967295,e=n+(o<<4&4294967295|o>>>28),o=s+(e^n^i)+r[12]+3873151461&4294967295,s=e+(o<<11&4294967295|o>>>21),o=i+(s^e^n)+r[15]+530742520&4294967295,i=s+(o<<16&4294967295|o>>>16),o=n+(i^s^e)+r[2]+3299628645&4294967295,n=i+(o<<23&4294967295|o>>>9),o=e+(i^(n|~s))+r[0]+4096336452&4294967295,e=n+(o<<6&4294967295|o>>>26),o=s+(n^(e|~i))+r[7]+1126891415&4294967295,s=e+(o<<10&4294967295|o>>>22),o=i+(e^(s|~n))+r[14]+2878612391&4294967295,i=s+(o<<15&4294967295|o>>>17),o=n+(s^(i|~e))+r[5]+4237533241&4294967295,n=i+(o<<21&4294967295|o>>>11),o=e+(i^(n|~s))+r[12]+1700485571&4294967295,e=n+(o<<6&4294967295|o>>>26),o=s+(n^(e|~i))+r[3]+2399980690&4294967295,s=e+(o<<10&4294967295|o>>>22),o=i+(e^(s|~n))+r[10]+4293915773&4294967295,i=s+(o<<15&4294967295|o>>>17),o=n+(s^(i|~e))+r[1]+2240044497&4294967295,n=i+(o<<21&4294967295|o>>>11),o=e+(i^(n|~s))+r[8]+1873313359&4294967295,e=n+(o<<6&4294967295|o>>>26),o=s+(n^(e|~i))+r[15]+4264355552&4294967295,s=e+(o<<10&4294967295|o>>>22),o=i+(e^(s|~n))+r[6]+2734768916&4294967295,i=s+(o<<15&4294967295|o>>>17),o=n+(s^(i|~e))+r[13]+1309151649&4294967295,n=i+(o<<21&4294967295|o>>>11),o=e+(i^(n|~s))+r[4]+4149444226&4294967295,e=n+(o<<6&4294967295|o>>>26),o=s+(n^(e|~i))+r[11]+3174756917&4294967295,s=e+(o<<10&4294967295|o>>>22),o=i+(e^(s|~n))+r[2]+718787259&4294967295,i=s+(o<<15&4294967295|o>>>17),o=n+(s^(i|~e))+r[9]+3951481745&4294967295,t.g[0]=t.g[0]+e&4294967295,t.g[1]=t.g[1]+(i+(o<<21&4294967295|o>>>11))&4294967295,t.g[2]=t.g[2]+i&4294967295,t.g[3]=t.g[3]+s&4294967295}pr.prototype.j=function(t,e){e===void 0&&(e=t.length);for(var n=e-this.blockSize,r=this.m,i=this.h,s=0;sthis.h?this.blockSize:2*this.blockSize)-this.h);t[0]=128;for(var e=1;ee;++e)for(var r=0;32>r;r+=8)t[n++]=this.g[e]>>>r&255;return t};function Me(t,e){this.h=e;for(var n=[],r=!0,i=t.length-1;0<=i;i--){var s=t[i]|0;r&&s==e||(n[i]=s,r=!1)}this.g=n}var J6={};function f_(t){return-128<=t&&128>t?o6(t,function(e){return new Me([e|0],0>e?-1:0)}):new Me([t|0],0>t?-1:0)}function Pr(t){if(isNaN(t)||!isFinite(t))return oa;if(0>t)return Ct(Pr(-t));for(var e=[],n=1,r=0;t>=n;r++)e[r]=t/n|0,n*=Oy;return new Me(e,0)}function dP(t,e){if(t.length==0)throw Error("number format error: empty string");if(e=e||10,2>e||36s?(s=Pr(Math.pow(e,s)),r=r.R(s).add(Pr(o))):(r=r.R(n),r=r.add(Pr(o)))}return r}var Oy=4294967296,oa=f_(0),Dy=f_(1),lb=f_(16777216);G=Me.prototype;G.ea=function(){if(zn(this))return-Ct(this).ea();for(var t=0,e=1,n=0;nt||36>>0).toString(t);if(n=i,ti(n))return s+r;for(;6>s.length;)s="0"+s;r=s+r}};G.D=function(t){return 0>t?0:t>>16)+(this.D(i)>>>16)+(t.D(i)>>>16);r=o>>>16,s&=65535,o&=65535,n[i]=o<<16|s}return new Me(n,n[n.length-1]&-2147483648?-1:0)};function Ad(t,e){return t.add(Ct(e))}G.R=function(t){if(ti(this)||ti(t))return oa;if(zn(this))return zn(t)?Ct(this).R(Ct(t)):Ct(Ct(this).R(t));if(zn(t))return Ct(this.R(Ct(t)));if(0>this.X(lb)&&0>t.X(lb))return Pr(this.ea()*t.ea());for(var e=this.g.length+t.g.length,n=[],r=0;r<2*e;r++)n[r]=0;for(r=0;r>>16,o=this.D(r)&65535,a=t.D(i)>>>16,l=t.D(i)&65535;n[2*r+2*i]+=o*l,Zc(n,2*r+2*i),n[2*r+2*i+1]+=s*l,Zc(n,2*r+2*i+1),n[2*r+2*i+1]+=o*a,Zc(n,2*r+2*i+1),n[2*r+2*i+2]+=s*a,Zc(n,2*r+2*i+2)}for(r=0;r>>16,t[e]&=65535,e++}function pl(t,e){this.g=t,this.h=e}function Rd(t,e){if(ti(e))throw Error("division by zero");if(ti(t))return new pl(oa,oa);if(zn(t))return e=Rd(Ct(t),e),new pl(Ct(e.g),Ct(e.h));if(zn(e))return e=Rd(t,Ct(e)),new pl(Ct(e.g),e.h);if(30=r.X(t);)n=ub(n),r=ub(r);var i=ko(n,1),s=ko(r,1);for(r=ko(r,2),n=ko(n,2);!ti(r);){var o=s.add(r);0>=o.X(t)&&(i=i.add(n),s=o),r=ko(r,1),n=ko(n,1)}return e=Ad(t,i.R(e)),new pl(i,e)}for(i=oa;0<=t.X(e);){for(n=Math.max(1,Math.floor(t.ea()/e.ea())),r=Math.ceil(Math.log(n)/Math.LN2),r=48>=r?1:Math.pow(2,r-48),s=Pr(n),o=s.R(e);zn(o)||0>>31;return new Me(n,t.h)}function ko(t,e){var n=e>>5;e%=32;for(var r=t.g.length-n,i=[],s=0;s>>e|t.D(s+n+1)<<32-e:t.D(s+n);return new Me(i,t.h)}Pd.prototype.createWebChannel=Pd.prototype.g;Pn.prototype.send=Pn.prototype.u;Pn.prototype.open=Pn.prototype.m;Pn.prototype.close=Pn.prototype.close;op.NO_ERROR=0;op.TIMEOUT=8;op.HTTP_ERROR=6;AI.COMPLETE="complete";RI.EventType=dc;dc.OPEN="a";dc.CLOSE="b";dc.ERROR="c";dc.MESSAGE="d";_t.prototype.listen=_t.prototype.O;Ze.prototype.listenOnce=Ze.prototype.P;Ze.prototype.getLastError=Ze.prototype.Sa;Ze.prototype.getLastErrorCode=Ze.prototype.Ia;Ze.prototype.getStatus=Ze.prototype.da;Ze.prototype.getResponseJson=Ze.prototype.Wa;Ze.prototype.getResponseText=Ze.prototype.ja;Ze.prototype.send=Ze.prototype.ha;Ze.prototype.setWithCredentials=Ze.prototype.Oa;pr.prototype.digest=pr.prototype.l;pr.prototype.reset=pr.prototype.reset;pr.prototype.update=pr.prototype.j;Me.prototype.add=Me.prototype.add;Me.prototype.multiply=Me.prototype.R;Me.prototype.modulo=Me.prototype.gb;Me.prototype.compare=Me.prototype.X;Me.prototype.toNumber=Me.prototype.ea;Me.prototype.toString=Me.prototype.toString;Me.prototype.getBits=Me.prototype.D;Me.fromNumber=Pr;Me.fromString=dP;var Z6=function(){return new Pd},ej=function(){return sp()},Am=op,tj=AI,nj=uo,cb={xb:0,Ab:1,Bb:2,Ub:3,Zb:4,Wb:5,Xb:6,Vb:7,Tb:8,Yb:9,PROXY:10,NOPROXY:11,Rb:12,Nb:13,Ob:14,Mb:15,Pb:16,Qb:17,tb:18,sb:19,ub:20},eh=RI,rj=Ze,ij=pr,aa=Me;const hb="@firebase/firestore";/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Ft{constructor(e){this.uid=e}isAuthenticated(){return this.uid!=null}toKey(){return this.isAuthenticated()?"uid:"+this.uid:"anonymous-user"}isEqual(e){return e.uid===this.uid}}Ft.UNAUTHENTICATED=new Ft(null),Ft.GOOGLE_CREDENTIALS=new Ft("google-credentials-uid"),Ft.FIRST_PARTY=new Ft("first-party-uid"),Ft.MOCK_USER=new Ft("mock-user");/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */let Qa="10.5.0";/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const Zs=new s0("@firebase/firestore");function ml(){return Zs.logLevel}function Z(t,...e){if(Zs.logLevel<=ge.DEBUG){const n=e.map(p_);Zs.debug(`Firestore (${Qa}): ${t}`,...n)}}function gi(t,...e){if(Zs.logLevel<=ge.ERROR){const n=e.map(p_);Zs.error(`Firestore (${Qa}): ${t}`,...n)}}function Ca(t,...e){if(Zs.logLevel<=ge.WARN){const n=e.map(p_);Zs.warn(`Firestore (${Qa}): ${t}`,...n)}}function p_(t){if(typeof t=="string")return t;try{/** +* @license +* Copyright 2020 Google LLC +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/return function(n){return JSON.stringify(n)}(t)}catch{return t}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function se(t="Unexpected state"){const e=`FIRESTORE (${Qa}) INTERNAL ASSERTION FAILED: `+t;throw gi(e),new Error(e)}function Ue(t,e){t||se()}function he(t,e){return t}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const V={OK:"ok",CANCELLED:"cancelled",UNKNOWN:"unknown",INVALID_ARGUMENT:"invalid-argument",DEADLINE_EXCEEDED:"deadline-exceeded",NOT_FOUND:"not-found",ALREADY_EXISTS:"already-exists",PERMISSION_DENIED:"permission-denied",UNAUTHENTICATED:"unauthenticated",RESOURCE_EXHAUSTED:"resource-exhausted",FAILED_PRECONDITION:"failed-precondition",ABORTED:"aborted",OUT_OF_RANGE:"out-of-range",UNIMPLEMENTED:"unimplemented",INTERNAL:"internal",UNAVAILABLE:"unavailable",DATA_LOSS:"data-loss"};class J extends bi{constructor(e,n){super(e,n),this.code=e,this.message=n,this.toString=()=>`${this.name}: [code=${this.code}]: ${this.message}`}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class si{constructor(){this.promise=new Promise((e,n)=>{this.resolve=e,this.reject=n})}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class fP{constructor(e,n){this.user=n,this.type="OAuth",this.headers=new Map,this.headers.set("Authorization",`Bearer ${e}`)}}class sj{getToken(){return Promise.resolve(null)}invalidateToken(){}start(e,n){e.enqueueRetryable(()=>n(Ft.UNAUTHENTICATED))}shutdown(){}}class oj{constructor(e){this.token=e,this.changeListener=null}getToken(){return Promise.resolve(this.token)}invalidateToken(){}start(e,n){this.changeListener=n,e.enqueueRetryable(()=>n(this.token.user))}shutdown(){this.changeListener=null}}class aj{constructor(e){this.t=e,this.currentUser=Ft.UNAUTHENTICATED,this.i=0,this.forceRefresh=!1,this.auth=null}start(e,n){let r=this.i;const i=l=>this.i!==r?(r=this.i,n(l)):Promise.resolve();let s=new si;this.o=()=>{this.i++,this.currentUser=this.u(),s.resolve(),s=new si,e.enqueueRetryable(()=>i(this.currentUser))};const o=()=>{const l=s;e.enqueueRetryable(async()=>{await l.promise,await i(this.currentUser)})},a=l=>{Z("FirebaseAuthCredentialsProvider","Auth detected"),this.auth=l,this.auth.addAuthTokenListener(this.o),o()};this.t.onInit(l=>a(l)),setTimeout(()=>{if(!this.auth){const l=this.t.getImmediate({optional:!0});l?a(l):(Z("FirebaseAuthCredentialsProvider","Auth not yet detected"),s.resolve(),s=new si)}},0),o()}getToken(){const e=this.i,n=this.forceRefresh;return this.forceRefresh=!1,this.auth?this.auth.getToken(n).then(r=>this.i!==e?(Z("FirebaseAuthCredentialsProvider","getToken aborted due to token change."),this.getToken()):r?(Ue(typeof r.accessToken=="string"),new fP(r.accessToken,this.currentUser)):null):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.auth&&this.auth.removeAuthTokenListener(this.o)}u(){const e=this.auth&&this.auth.getUid();return Ue(e===null||typeof e=="string"),new Ft(e)}}class lj{constructor(e,n,r){this.l=e,this.h=n,this.P=r,this.type="FirstParty",this.user=Ft.FIRST_PARTY,this.I=new Map}T(){return this.P?this.P():null}get headers(){this.I.set("X-Goog-AuthUser",this.l);const e=this.T();return e&&this.I.set("Authorization",e),this.h&&this.I.set("X-Goog-Iam-Authorization-Token",this.h),this.I}}class uj{constructor(e,n,r){this.l=e,this.h=n,this.P=r}getToken(){return Promise.resolve(new lj(this.l,this.h,this.P))}start(e,n){e.enqueueRetryable(()=>n(Ft.FIRST_PARTY))}shutdown(){}invalidateToken(){}}class cj{constructor(e){this.value=e,this.type="AppCheck",this.headers=new Map,e&&e.length>0&&this.headers.set("x-firebase-appcheck",this.value)}}class hj{constructor(e){this.A=e,this.forceRefresh=!1,this.appCheck=null,this.R=null}start(e,n){const r=s=>{s.error!=null&&Z("FirebaseAppCheckTokenProvider",`Error getting App Check token; using placeholder token instead. Error: ${s.error.message}`);const o=s.token!==this.R;return this.R=s.token,Z("FirebaseAppCheckTokenProvider",`Received ${o?"new":"existing"} token.`),o?n(s.token):Promise.resolve()};this.o=s=>{e.enqueueRetryable(()=>r(s))};const i=s=>{Z("FirebaseAppCheckTokenProvider","AppCheck detected"),this.appCheck=s,this.appCheck.addTokenListener(this.o)};this.A.onInit(s=>i(s)),setTimeout(()=>{if(!this.appCheck){const s=this.A.getImmediate({optional:!0});s?i(s):Z("FirebaseAppCheckTokenProvider","AppCheck not yet detected")}},0)}getToken(){const e=this.forceRefresh;return this.forceRefresh=!1,this.appCheck?this.appCheck.getToken(e).then(n=>n?(Ue(typeof n.token=="string"),this.R=n.token,new cj(n.token)):null):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.appCheck&&this.appCheck.removeTokenListener(this.o)}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function dj(t){const e=typeof self<"u"&&(self.crypto||self.msCrypto),n=new Uint8Array(t);if(e&&typeof e.getRandomValues=="function")e.getRandomValues(n);else for(let r=0;re?1:0}function Ia(t,e,n){return t.length===e.length&&t.every((r,i)=>n(r,e[i]))}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class ft{constructor(e,n){if(this.seconds=e,this.nanoseconds=n,n<0)throw new J(V.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+n);if(n>=1e9)throw new J(V.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+n);if(e<-62135596800)throw new J(V.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e);if(e>=253402300800)throw new J(V.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e)}static now(){return ft.fromMillis(Date.now())}static fromDate(e){return ft.fromMillis(e.getTime())}static fromMillis(e){const n=Math.floor(e/1e3),r=Math.floor(1e6*(e-1e3*n));return new ft(n,r)}toDate(){return new Date(this.toMillis())}toMillis(){return 1e3*this.seconds+this.nanoseconds/1e6}_compareTo(e){return this.seconds===e.seconds?Pe(this.nanoseconds,e.nanoseconds):Pe(this.seconds,e.seconds)}isEqual(e){return e.seconds===this.seconds&&e.nanoseconds===this.nanoseconds}toString(){return"Timestamp(seconds="+this.seconds+", nanoseconds="+this.nanoseconds+")"}toJSON(){return{seconds:this.seconds,nanoseconds:this.nanoseconds}}valueOf(){const e=this.seconds- -62135596800;return String(e).padStart(12,"0")+"."+String(this.nanoseconds).padStart(9,"0")}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class ae{constructor(e){this.timestamp=e}static fromTimestamp(e){return new ae(e)}static min(){return new ae(new ft(0,0))}static max(){return new ae(new ft(253402300799,999999999))}compareTo(e){return this.timestamp._compareTo(e.timestamp)}isEqual(e){return this.timestamp.isEqual(e.timestamp)}toMicroseconds(){return 1e6*this.timestamp.seconds+this.timestamp.nanoseconds/1e3}toString(){return"SnapshotVersion("+this.timestamp.toString()+")"}toTimestamp(){return this.timestamp}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Ru{constructor(e,n,r){n===void 0?n=0:n>e.length&&se(),r===void 0?r=e.length-n:r>e.length-n&&se(),this.segments=e,this.offset=n,this.len=r}get length(){return this.len}isEqual(e){return Ru.comparator(this,e)===0}child(e){const n=this.segments.slice(this.offset,this.limit());return e instanceof Ru?e.forEach(r=>{n.push(r)}):n.push(e),this.construct(n)}limit(){return this.offset+this.length}popFirst(e){return e=e===void 0?1:e,this.construct(this.segments,this.offset+e,this.length-e)}popLast(){return this.construct(this.segments,this.offset,this.length-1)}firstSegment(){return this.segments[this.offset]}lastSegment(){return this.get(this.length-1)}get(e){return this.segments[this.offset+e]}isEmpty(){return this.length===0}isPrefixOf(e){if(e.lengtho)return 1}return e.lengthn.length?1:0}}class Fe extends Ru{construct(e,n,r){return new Fe(e,n,r)}canonicalString(){return this.toArray().join("/")}toString(){return this.canonicalString()}static fromString(...e){const n=[];for(const r of e){if(r.indexOf("//")>=0)throw new J(V.INVALID_ARGUMENT,`Invalid segment (${r}). Paths must not contain // in them.`);n.push(...r.split("/").filter(i=>i.length>0))}return new Fe(n)}static emptyPath(){return new Fe([])}}const fj=/^[_a-zA-Z][_a-zA-Z0-9]*$/;class It extends Ru{construct(e,n,r){return new It(e,n,r)}static isValidIdentifier(e){return fj.test(e)}canonicalString(){return this.toArray().map(e=>(e=e.replace(/\\/g,"\\\\").replace(/`/g,"\\`"),It.isValidIdentifier(e)||(e="`"+e+"`"),e)).join(".")}toString(){return this.canonicalString()}isKeyField(){return this.length===1&&this.get(0)==="__name__"}static keyField(){return new It(["__name__"])}static fromServerFormat(e){const n=[];let r="",i=0;const s=()=>{if(r.length===0)throw new J(V.INVALID_ARGUMENT,`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`);n.push(r),r=""};let o=!1;for(;i=2&&this.path.get(this.path.length-2)===e}getCollectionGroup(){return this.path.get(this.path.length-2)}getCollectionPath(){return this.path.popLast()}isEqual(e){return e!==null&&Fe.comparator(this.path,e.path)===0}toString(){return this.path.toString()}static comparator(e,n){return Fe.comparator(e.path,n.path)}static isDocumentKey(e){return e.length%2==0}static fromSegments(e){return new ee(new Fe(e.slice()))}}function pj(t,e){const n=t.toTimestamp().seconds,r=t.toTimestamp().nanoseconds+1,i=ae.fromTimestamp(r===1e9?new ft(n+1,0):new ft(n,r));return new os(i,ee.empty(),e)}function mj(t){return new os(t.readTime,t.key,-1)}class os{constructor(e,n,r){this.readTime=e,this.documentKey=n,this.largestBatchId=r}static min(){return new os(ae.min(),ee.empty(),-1)}static max(){return new os(ae.max(),ee.empty(),-1)}}function gj(t,e){let n=t.readTime.compareTo(e.readTime);return n!==0?n:(n=ee.comparator(t.documentKey,e.documentKey),n!==0?n:Pe(t.largestBatchId,e.largestBatchId))}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const yj="The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab.";class vj{constructor(){this.onCommittedListeners=[]}addOnCommittedListener(e){this.onCommittedListeners.push(e)}raiseOnCommittedEvent(){this.onCommittedListeners.forEach(e=>e())}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function yc(t){if(t.code!==V.FAILED_PRECONDITION||t.message!==yj)throw t;Z("LocalStore","Unexpectedly lost primary lease")}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class j{constructor(e){this.nextCallback=null,this.catchCallback=null,this.result=void 0,this.error=void 0,this.isDone=!1,this.callbackAttached=!1,e(n=>{this.isDone=!0,this.result=n,this.nextCallback&&this.nextCallback(n)},n=>{this.isDone=!0,this.error=n,this.catchCallback&&this.catchCallback(n)})}catch(e){return this.next(void 0,e)}next(e,n){return this.callbackAttached&&se(),this.callbackAttached=!0,this.isDone?this.error?this.wrapFailure(n,this.error):this.wrapSuccess(e,this.result):new j((r,i)=>{this.nextCallback=s=>{this.wrapSuccess(e,s).next(r,i)},this.catchCallback=s=>{this.wrapFailure(n,s).next(r,i)}})}toPromise(){return new Promise((e,n)=>{this.next(e,n)})}wrapUserFunction(e){try{const n=e();return n instanceof j?n:j.resolve(n)}catch(n){return j.reject(n)}}wrapSuccess(e,n){return e?this.wrapUserFunction(()=>e(n)):j.resolve(n)}wrapFailure(e,n){return e?this.wrapUserFunction(()=>e(n)):j.reject(n)}static resolve(e){return new j((n,r)=>{n(e)})}static reject(e){return new j((n,r)=>{r(e)})}static waitFor(e){return new j((n,r)=>{let i=0,s=0,o=!1;e.forEach(a=>{++i,a.next(()=>{++s,o&&s===i&&n()},l=>r(l))}),o=!0,s===i&&n()})}static or(e){let n=j.resolve(!1);for(const r of e)n=n.next(i=>i?j.resolve(i):r());return n}static forEach(e,n){const r=[];return e.forEach((i,s)=>{r.push(n.call(this,i,s))}),this.waitFor(r)}static mapArray(e,n){return new j((r,i)=>{const s=e.length,o=new Array(s);let a=0;for(let l=0;l{o[u]=c,++a,a===s&&r(o)},c=>i(c))}})}static doWhile(e,n){return new j((r,i)=>{const s=()=>{e()===!0?n().next(()=>{s()},i):r()};s()})}}function vc(t){return t.name==="IndexedDbTransactionError"}/** + * @license + * Copyright 2018 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class m_{constructor(e,n){this.previousValue=e,n&&(n.sequenceNumberHandler=r=>this.oe(r),this._e=r=>n.writeSequenceNumber(r))}oe(e){return this.previousValue=Math.max(e,this.previousValue),this.previousValue}next(){const e=++this.previousValue;return this._e&&this._e(e),e}}m_.ae=-1;function mp(t){return t==null}function Md(t){return t===0&&1/t==-1/0}function _j(t){return typeof t=="number"&&Number.isInteger(t)&&!Md(t)&&t<=Number.MAX_SAFE_INTEGER&&t>=Number.MIN_SAFE_INTEGER}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function db(t){let e=0;for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&e++;return e}function Ya(t,e){for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&e(n,t[n])}function mP(t){for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e))return!1;return!0}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Qe{constructor(e,n){this.comparator=e,this.root=n||St.EMPTY}insert(e,n){return new Qe(this.comparator,this.root.insert(e,n,this.comparator).copy(null,null,St.BLACK,null,null))}remove(e){return new Qe(this.comparator,this.root.remove(e,this.comparator).copy(null,null,St.BLACK,null,null))}get(e){let n=this.root;for(;!n.isEmpty();){const r=this.comparator(e,n.key);if(r===0)return n.value;r<0?n=n.left:r>0&&(n=n.right)}return null}indexOf(e){let n=0,r=this.root;for(;!r.isEmpty();){const i=this.comparator(e,r.key);if(i===0)return n+r.left.size;i<0?r=r.left:(n+=r.left.size+1,r=r.right)}return-1}isEmpty(){return this.root.isEmpty()}get size(){return this.root.size}minKey(){return this.root.minKey()}maxKey(){return this.root.maxKey()}inorderTraversal(e){return this.root.inorderTraversal(e)}forEach(e){this.inorderTraversal((n,r)=>(e(n,r),!1))}toString(){const e=[];return this.inorderTraversal((n,r)=>(e.push(`${n}:${r}`),!1)),`{${e.join(", ")}}`}reverseTraversal(e){return this.root.reverseTraversal(e)}getIterator(){return new th(this.root,null,this.comparator,!1)}getIteratorFrom(e){return new th(this.root,e,this.comparator,!1)}getReverseIterator(){return new th(this.root,null,this.comparator,!0)}getReverseIteratorFrom(e){return new th(this.root,e,this.comparator,!0)}}class th{constructor(e,n,r,i){this.isReverse=i,this.nodeStack=[];let s=1;for(;!e.isEmpty();)if(s=n?r(e.key,n):1,n&&i&&(s*=-1),s<0)e=this.isReverse?e.left:e.right;else{if(s===0){this.nodeStack.push(e);break}this.nodeStack.push(e),e=this.isReverse?e.right:e.left}}getNext(){let e=this.nodeStack.pop();const n={key:e.key,value:e.value};if(this.isReverse)for(e=e.left;!e.isEmpty();)this.nodeStack.push(e),e=e.right;else for(e=e.right;!e.isEmpty();)this.nodeStack.push(e),e=e.left;return n}hasNext(){return this.nodeStack.length>0}peek(){if(this.nodeStack.length===0)return null;const e=this.nodeStack[this.nodeStack.length-1];return{key:e.key,value:e.value}}}class St{constructor(e,n,r,i,s){this.key=e,this.value=n,this.color=r??St.RED,this.left=i??St.EMPTY,this.right=s??St.EMPTY,this.size=this.left.size+1+this.right.size}copy(e,n,r,i,s){return new St(e??this.key,n??this.value,r??this.color,i??this.left,s??this.right)}isEmpty(){return!1}inorderTraversal(e){return this.left.inorderTraversal(e)||e(this.key,this.value)||this.right.inorderTraversal(e)}reverseTraversal(e){return this.right.reverseTraversal(e)||e(this.key,this.value)||this.left.reverseTraversal(e)}min(){return this.left.isEmpty()?this:this.left.min()}minKey(){return this.min().key}maxKey(){return this.right.isEmpty()?this.key:this.right.maxKey()}insert(e,n,r){let i=this;const s=r(e,i.key);return i=s<0?i.copy(null,null,null,i.left.insert(e,n,r),null):s===0?i.copy(null,n,null,null,null):i.copy(null,null,null,null,i.right.insert(e,n,r)),i.fixUp()}removeMin(){if(this.left.isEmpty())return St.EMPTY;let e=this;return e.left.isRed()||e.left.left.isRed()||(e=e.moveRedLeft()),e=e.copy(null,null,null,e.left.removeMin(),null),e.fixUp()}remove(e,n){let r,i=this;if(n(e,i.key)<0)i.left.isEmpty()||i.left.isRed()||i.left.left.isRed()||(i=i.moveRedLeft()),i=i.copy(null,null,null,i.left.remove(e,n),null);else{if(i.left.isRed()&&(i=i.rotateRight()),i.right.isEmpty()||i.right.isRed()||i.right.left.isRed()||(i=i.moveRedRight()),n(e,i.key)===0){if(i.right.isEmpty())return St.EMPTY;r=i.right.min(),i=i.copy(r.key,r.value,null,null,i.right.removeMin())}i=i.copy(null,null,null,null,i.right.remove(e,n))}return i.fixUp()}isRed(){return this.color}fixUp(){let e=this;return e.right.isRed()&&!e.left.isRed()&&(e=e.rotateLeft()),e.left.isRed()&&e.left.left.isRed()&&(e=e.rotateRight()),e.left.isRed()&&e.right.isRed()&&(e=e.colorFlip()),e}moveRedLeft(){let e=this.colorFlip();return e.right.left.isRed()&&(e=e.copy(null,null,null,null,e.right.rotateRight()),e=e.rotateLeft(),e=e.colorFlip()),e}moveRedRight(){let e=this.colorFlip();return e.left.left.isRed()&&(e=e.rotateRight(),e=e.colorFlip()),e}rotateLeft(){const e=this.copy(null,null,St.RED,null,this.right.left);return this.right.copy(null,null,this.color,e,null)}rotateRight(){const e=this.copy(null,null,St.RED,this.left.right,null);return this.left.copy(null,null,this.color,null,e)}colorFlip(){const e=this.left.copy(null,null,!this.left.color,null,null),n=this.right.copy(null,null,!this.right.color,null,null);return this.copy(null,null,!this.color,e,n)}checkMaxDepth(){const e=this.check();return Math.pow(2,e)<=this.size+1}check(){if(this.isRed()&&this.left.isRed()||this.right.isRed())throw se();const e=this.left.check();if(e!==this.right.check())throw se();return e+(this.isRed()?0:1)}}St.EMPTY=null,St.RED=!0,St.BLACK=!1;St.EMPTY=new class{constructor(){this.size=0}get key(){throw se()}get value(){throw se()}get color(){throw se()}get left(){throw se()}get right(){throw se()}copy(e,n,r,i,s){return this}insert(e,n,r){return new St(e,n)}remove(e,n){return this}isEmpty(){return!0}inorderTraversal(e){return!1}reverseTraversal(e){return!1}minKey(){return null}maxKey(){return null}isRed(){return!1}checkMaxDepth(){return!0}check(){return 0}};/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Rt{constructor(e){this.comparator=e,this.data=new Qe(this.comparator)}has(e){return this.data.get(e)!==null}first(){return this.data.minKey()}last(){return this.data.maxKey()}get size(){return this.data.size}indexOf(e){return this.data.indexOf(e)}forEach(e){this.data.inorderTraversal((n,r)=>(e(n),!1))}forEachInRange(e,n){const r=this.data.getIteratorFrom(e[0]);for(;r.hasNext();){const i=r.getNext();if(this.comparator(i.key,e[1])>=0)return;n(i.key)}}forEachWhile(e,n){let r;for(r=n!==void 0?this.data.getIteratorFrom(n):this.data.getIterator();r.hasNext();)if(!e(r.getNext().key))return}firstAfterOrEqual(e){const n=this.data.getIteratorFrom(e);return n.hasNext()?n.getNext().key:null}getIterator(){return new fb(this.data.getIterator())}getIteratorFrom(e){return new fb(this.data.getIteratorFrom(e))}add(e){return this.copy(this.data.remove(e).insert(e,!0))}delete(e){return this.has(e)?this.copy(this.data.remove(e)):this}isEmpty(){return this.data.isEmpty()}unionWith(e){let n=this;return n.size{n=n.add(r)}),n}isEqual(e){if(!(e instanceof Rt)||this.size!==e.size)return!1;const n=this.data.getIterator(),r=e.data.getIterator();for(;n.hasNext();){const i=n.getNext().key,s=r.getNext().key;if(this.comparator(i,s)!==0)return!1}return!0}toArray(){const e=[];return this.forEach(n=>{e.push(n)}),e}toString(){const e=[];return this.forEach(n=>e.push(n)),"SortedSet("+e.toString()+")"}copy(e){const n=new Rt(this.comparator);return n.data=e,n}}class fb{constructor(e){this.iter=e}getNext(){return this.iter.getNext().key}hasNext(){return this.iter.hasNext()}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class ir{constructor(e){this.fields=e,e.sort(It.comparator)}static empty(){return new ir([])}unionWith(e){let n=new Rt(It.comparator);for(const r of this.fields)n=n.add(r);for(const r of e)n=n.add(r);return new ir(n.toArray())}covers(e){for(const n of this.fields)if(n.isPrefixOf(e))return!0;return!1}isEqual(e){return Ia(this.fields,e.fields,(n,r)=>n.isEqual(r))}}/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class gP extends Error{constructor(){super(...arguments),this.name="Base64DecodeError"}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Gt{constructor(e){this.binaryString=e}static fromBase64String(e){const n=function(i){try{return atob(i)}catch(s){throw typeof DOMException<"u"&&s instanceof DOMException?new gP("Invalid base64 string: "+s):s}}(e);return new Gt(n)}static fromUint8Array(e){const n=function(i){let s="";for(let o=0;oejr(n,e))!==void 0}function Pa(t,e){if(t===e)return 0;const n=to(t),r=to(e);if(n!==r)return Pe(n,r);switch(n){case 0:case 9007199254740991:return 0;case 1:return Pe(t.booleanValue,e.booleanValue);case 2:return function(s,o){const a=it(s.integerValue||s.doubleValue),l=it(o.integerValue||o.doubleValue);return al?1:a===l?0:isNaN(a)?isNaN(l)?0:-1:1}(t,e);case 3:return pb(t.timestampValue,e.timestampValue);case 4:return pb(Mu(t),Mu(e));case 5:return Pe(t.stringValue,e.stringValue);case 6:return function(s,o){const a=eo(s),l=eo(o);return a.compareTo(l)}(t.bytesValue,e.bytesValue);case 7:return function(s,o){const a=s.split("/"),l=o.split("/");for(let u=0;ue.mapValue.fields[n]=Hl(r)),e}if(t.arrayValue){const e={arrayValue:{values:[]}};for(let n=0;n<(t.arrayValue.values||[]).length;++n)e.arrayValue.values[n]=Hl(t.arrayValue.values[n]);return e}return Object.assign({},t)}function bj(t){return(((t.mapValue||{}).fields||{}).__type__||{}).stringValue==="__max__"}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Un{constructor(e){this.value=e}static empty(){return new Un({mapValue:{}})}field(e){if(e.isEmpty())return this.value;{let n=this.value;for(let r=0;r{if(!n.isImmediateParentOf(a)){const l=this.getFieldsMap(n);this.applyChanges(l,r,i),r={},i=[],n=a.popLast()}o?r[a.lastSegment()]=Hl(o):i.push(a.lastSegment())});const s=this.getFieldsMap(n);this.applyChanges(s,r,i)}delete(e){const n=this.field(e.popLast());Oh(n)&&n.mapValue.fields&&delete n.mapValue.fields[e.lastSegment()]}isEqual(e){return jr(this.value,e.value)}getFieldsMap(e){let n=this.value;n.mapValue.fields||(n.mapValue={fields:{}});for(let r=0;re[i]=s);for(const i of r)delete e[i]}clone(){return new Un(Hl(this.value))}}function yP(t){const e=[];return Ya(t.fields,(n,r)=>{const i=new It([n]);if(Oh(r)){const s=yP(r.mapValue).fields;if(s.length===0)e.push(i);else for(const o of s)e.push(i.child(o))}else e.push(i)}),new ir(e)}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class zt{constructor(e,n,r,i,s,o,a){this.key=e,this.documentType=n,this.version=r,this.readTime=i,this.createTime=s,this.data=o,this.documentState=a}static newInvalidDocument(e){return new zt(e,0,ae.min(),ae.min(),ae.min(),Un.empty(),0)}static newFoundDocument(e,n,r,i){return new zt(e,1,n,ae.min(),r,i,0)}static newNoDocument(e,n){return new zt(e,2,n,ae.min(),ae.min(),Un.empty(),0)}static newUnknownDocument(e,n){return new zt(e,3,n,ae.min(),ae.min(),Un.empty(),2)}convertToFoundDocument(e,n){return!this.createTime.isEqual(ae.min())||this.documentType!==2&&this.documentType!==0||(this.createTime=e),this.version=e,this.documentType=1,this.data=n,this.documentState=0,this}convertToNoDocument(e){return this.version=e,this.documentType=2,this.data=Un.empty(),this.documentState=0,this}convertToUnknownDocument(e){return this.version=e,this.documentType=3,this.data=Un.empty(),this.documentState=2,this}setHasCommittedMutations(){return this.documentState=2,this}setHasLocalMutations(){return this.documentState=1,this.version=ae.min(),this}setReadTime(e){return this.readTime=e,this}get hasLocalMutations(){return this.documentState===1}get hasCommittedMutations(){return this.documentState===2}get hasPendingWrites(){return this.hasLocalMutations||this.hasCommittedMutations}isValidDocument(){return this.documentType!==0}isFoundDocument(){return this.documentType===1}isNoDocument(){return this.documentType===2}isUnknownDocument(){return this.documentType===3}isEqual(e){return e instanceof zt&&this.key.isEqual(e.key)&&this.version.isEqual(e.version)&&this.documentType===e.documentType&&this.documentState===e.documentState&&this.data.isEqual(e.data)}mutableCopy(){return new zt(this.key,this.documentType,this.version,this.readTime,this.createTime,this.data.clone(),this.documentState)}toString(){return`Document(${this.key}, ${this.version}, ${JSON.stringify(this.data.value)}, {createTime: ${this.createTime}}), {documentType: ${this.documentType}}), {documentState: ${this.documentState}})`}}/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Od{constructor(e,n){this.position=e,this.inclusive=n}}function vb(t,e,n){let r=0;for(let i=0;i":return e>0;case">=":return e>=0;default:return se()}}isInequality(){return["<","<=",">",">=","!=","not-in"].indexOf(this.op)>=0}getFlattenedFilters(){return[this]}getFilters(){return[this]}}class mr extends vP{constructor(e,n){super(),this.filters=e,this.op=n,this.ce=null}static create(e,n){return new mr(e,n)}matches(e){return _P(this)?this.filters.find(n=>!n.matches(e))===void 0:this.filters.find(n=>n.matches(e))!==void 0}getFlattenedFilters(){return this.ce!==null||(this.ce=this.filters.reduce((e,n)=>e.concat(n.getFlattenedFilters()),[])),this.ce}getFilters(){return Object.assign([],this.filters)}}function _P(t){return t.op==="and"}function wP(t){return Tj(t)&&_P(t)}function Tj(t){for(const e of t.filters)if(e instanceof mr)return!1;return!0}function Ly(t){if(t instanceof at)return t.field.canonicalString()+t.op.toString()+Aa(t.value);if(wP(t))return t.filters.map(e=>Ly(e)).join(",");{const e=t.filters.map(n=>Ly(n)).join(",");return`${t.op}(${e})`}}function xP(t,e){return t instanceof at?function(r,i){return i instanceof at&&r.op===i.op&&r.field.isEqual(i.field)&&jr(r.value,i.value)}(t,e):t instanceof mr?function(r,i){return i instanceof mr&&r.op===i.op&&r.filters.length===i.filters.length?r.filters.reduce((s,o,a)=>s&&xP(o,i.filters[a]),!0):!1}(t,e):void se()}function bP(t){return t instanceof at?function(n){return`${n.field.canonicalString()} ${n.op} ${Aa(n.value)}`}(t):t instanceof mr?function(n){return n.op.toString()+" {"+n.getFilters().map(bP).join(" ,")+"}"}(t):"Filter"}class Sj extends at{constructor(e,n,r){super(e,n,r),this.key=ee.fromName(r.referenceValue)}matches(e){const n=ee.comparator(e.key,this.key);return this.matchesComparison(n)}}class kj extends at{constructor(e,n){super(e,"in",n),this.keys=EP("in",n)}matches(e){return this.keys.some(n=>n.isEqual(e.key))}}class Cj extends at{constructor(e,n){super(e,"not-in",n),this.keys=EP("not-in",n)}matches(e){return!this.keys.some(n=>n.isEqual(e.key))}}function EP(t,e){var n;return(((n=e.arrayValue)===null||n===void 0?void 0:n.values)||[]).map(r=>ee.fromName(r.referenceValue))}class Ij extends at{constructor(e,n){super(e,"array-contains",n)}matches(e){const n=e.data.field(this.field);return v_(n)&&Du(n.arrayValue,this.value)}}class Pj extends at{constructor(e,n){super(e,"in",n)}matches(e){const n=e.data.field(this.field);return n!==null&&Du(this.value.arrayValue,n)}}class Aj extends at{constructor(e,n){super(e,"not-in",n)}matches(e){if(Du(this.value.arrayValue,{nullValue:"NULL_VALUE"}))return!1;const n=e.data.field(this.field);return n!==null&&!Du(this.value.arrayValue,n)}}class Rj extends at{constructor(e,n){super(e,"array-contains-any",n)}matches(e){const n=e.data.field(this.field);return!(!v_(n)||!n.arrayValue.values)&&n.arrayValue.values.some(r=>Du(this.value.arrayValue,r))}}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Mj{constructor(e,n=null,r=[],i=[],s=null,o=null,a=null){this.path=e,this.collectionGroup=n,this.orderBy=r,this.filters=i,this.limit=s,this.startAt=o,this.endAt=a,this.le=null}}function wb(t,e=null,n=[],r=[],i=null,s=null,o=null){return new Mj(t,e,n,r,i,s,o)}function __(t){const e=he(t);if(e.le===null){let n=e.path.canonicalString();e.collectionGroup!==null&&(n+="|cg:"+e.collectionGroup),n+="|f:",n+=e.filters.map(r=>Ly(r)).join(","),n+="|ob:",n+=e.orderBy.map(r=>function(s){return s.field.canonicalString()+s.dir}(r)).join(","),mp(e.limit)||(n+="|l:",n+=e.limit),e.startAt&&(n+="|lb:",n+=e.startAt.inclusive?"b:":"a:",n+=e.startAt.position.map(r=>Aa(r)).join(",")),e.endAt&&(n+="|ub:",n+=e.endAt.inclusive?"a:":"b:",n+=e.endAt.position.map(r=>Aa(r)).join(",")),e.le=n}return e.le}function w_(t,e){if(t.limit!==e.limit||t.orderBy.length!==e.orderBy.length)return!1;for(let n=0;n0?e.explicitOrderBy[e.explicitOrderBy.length-1].dir:"asc";(function(o){let a=new Rt(It.comparator);return o.filters.forEach(l=>{l.getFlattenedFilters().forEach(u=>{u.isInequality()&&(a=a.add(u.field))})}),a})(e).forEach(s=>{n.has(s.canonicalString())||s.isKeyField()||e.he.push(new Dd(s,r))}),n.has(It.keyField().canonicalString())||e.he.push(new Dd(It.keyField(),r))}return e.he}function Lr(t){const e=he(t);return e.Pe||(e.Pe=Dj(e,Wl(t))),e.Pe}function Dj(t,e){if(t.limitType==="F")return wb(t.path,t.collectionGroup,e,t.filters,t.limit,t.startAt,t.endAt);{e=e.map(i=>{const s=i.dir==="desc"?"asc":"desc";return new Dd(i.field,s)});const n=t.endAt?new Od(t.endAt.position,t.endAt.inclusive):null,r=t.startAt?new Od(t.startAt.position,t.startAt.inclusive):null;return wb(t.path,t.collectionGroup,e,t.filters,t.limit,n,r)}}function Vy(t,e){const n=t.filters.concat([e]);return new _c(t.path,t.collectionGroup,t.explicitOrderBy.slice(),n,t.limit,t.limitType,t.startAt,t.endAt)}function zy(t,e,n){return new _c(t.path,t.collectionGroup,t.explicitOrderBy.slice(),t.filters.slice(),e,n,t.startAt,t.endAt)}function gp(t,e){return w_(Lr(t),Lr(e))&&t.limitType===e.limitType}function SP(t){return`${__(Lr(t))}|lt:${t.limitType}`}function Ao(t){return`Query(target=${function(n){let r=n.path.canonicalString();return n.collectionGroup!==null&&(r+=" collectionGroup="+n.collectionGroup),n.filters.length>0&&(r+=`, filters: [${n.filters.map(i=>bP(i)).join(", ")}]`),mp(n.limit)||(r+=", limit: "+n.limit),n.orderBy.length>0&&(r+=`, orderBy: [${n.orderBy.map(i=>function(o){return`${o.field.canonicalString()} (${o.dir})`}(i)).join(", ")}]`),n.startAt&&(r+=", startAt: ",r+=n.startAt.inclusive?"b:":"a:",r+=n.startAt.position.map(i=>Aa(i)).join(",")),n.endAt&&(r+=", endAt: ",r+=n.endAt.inclusive?"a:":"b:",r+=n.endAt.position.map(i=>Aa(i)).join(",")),`Target(${r})`}(Lr(t))}; limitType=${t.limitType})`}function yp(t,e){return e.isFoundDocument()&&function(r,i){const s=i.key.path;return r.collectionGroup!==null?i.key.hasCollectionId(r.collectionGroup)&&r.path.isPrefixOf(s):ee.isDocumentKey(r.path)?r.path.isEqual(s):r.path.isImmediateParentOf(s)}(t,e)&&function(r,i){for(const s of Wl(r))if(!s.field.isKeyField()&&i.data.field(s.field)===null)return!1;return!0}(t,e)&&function(r,i){for(const s of r.filters)if(!s.matches(i))return!1;return!0}(t,e)&&function(r,i){return!(r.startAt&&!function(o,a,l){const u=vb(o,a,l);return o.inclusive?u<=0:u<0}(r.startAt,Wl(r),i)||r.endAt&&!function(o,a,l){const u=vb(o,a,l);return o.inclusive?u>=0:u>0}(r.endAt,Wl(r),i))}(t,e)}function Nj(t){return t.collectionGroup||(t.path.length%2==1?t.path.lastSegment():t.path.get(t.path.length-2))}function kP(t){return(e,n)=>{let r=!1;for(const i of Wl(t)){const s=$j(i,e,n);if(s!==0)return s;r=r||i.field.isKeyField()}return 0}}function $j(t,e,n){const r=t.field.isKeyField()?ee.comparator(e.key,n.key):function(s,o,a){const l=o.data.field(s),u=a.data.field(s);return l!==null&&u!==null?Pa(l,u):se()}(t.field,e,n);switch(t.dir){case"asc":return r;case"desc":return-1*r;default:return se()}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Xa{constructor(e,n){this.mapKeyFn=e,this.equalsFn=n,this.inner={},this.innerSize=0}get(e){const n=this.mapKeyFn(e),r=this.inner[n];if(r!==void 0){for(const[i,s]of r)if(this.equalsFn(i,e))return s}}has(e){return this.get(e)!==void 0}set(e,n){const r=this.mapKeyFn(e),i=this.inner[r];if(i===void 0)return this.inner[r]=[[e,n]],void this.innerSize++;for(let s=0;s{for(const[i,s]of r)e(i,s)})}isEmpty(){return mP(this.inner)}size(){return this.innerSize}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const Lj=new Qe(ee.comparator);function yi(){return Lj}const CP=new Qe(ee.comparator);function kl(...t){let e=CP;for(const n of t)e=e.insert(n.key,n);return e}function IP(t){let e=CP;return t.forEach((n,r)=>e=e.insert(n,r.overlayedDocument)),e}function Ms(){return ql()}function PP(){return ql()}function ql(){return new Xa(t=>t.toString(),(t,e)=>t.isEqual(e))}const Fj=new Qe(ee.comparator),Vj=new Rt(ee.comparator);function pe(...t){let e=Vj;for(const n of t)e=e.add(n);return e}const zj=new Rt(Pe);function Uj(){return zj}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function AP(t,e){if(t.useProto3Json){if(isNaN(e))return{doubleValue:"NaN"};if(e===1/0)return{doubleValue:"Infinity"};if(e===-1/0)return{doubleValue:"-Infinity"}}return{doubleValue:Md(e)?"-0":e}}function RP(t){return{integerValue:""+t}}function jj(t,e){return _j(e)?RP(e):AP(t,e)}/** + * @license + * Copyright 2018 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class vp{constructor(){this._=void 0}}function Bj(t,e,n){return t instanceof Nd?function(i,s){const o={fields:{__type__:{stringValue:"server_timestamp"},__local_write_time__:{timestampValue:{seconds:i.seconds,nanos:i.nanoseconds}}}};return s&&g_(s)&&(s=y_(s)),s&&(o.fields.__previous_value__=s),{mapValue:o}}(n,e):t instanceof Nu?OP(t,e):t instanceof $u?DP(t,e):function(i,s){const o=MP(i,s),a=bb(o)+bb(i.Te);return $y(o)&&$y(i.Te)?RP(a):AP(i.serializer,a)}(t,e)}function Hj(t,e,n){return t instanceof Nu?OP(t,e):t instanceof $u?DP(t,e):n}function MP(t,e){return t instanceof $d?function(r){return $y(r)||function(s){return!!s&&"doubleValue"in s}(r)}(e)?e:{integerValue:0}:null}class Nd extends vp{}class Nu extends vp{constructor(e){super(),this.elements=e}}function OP(t,e){const n=NP(e);for(const r of t.elements)n.some(i=>jr(i,r))||n.push(r);return{arrayValue:{values:n}}}class $u extends vp{constructor(e){super(),this.elements=e}}function DP(t,e){let n=NP(e);for(const r of t.elements)n=n.filter(i=>!jr(i,r));return{arrayValue:{values:n}}}class $d extends vp{constructor(e,n){super(),this.serializer=e,this.Te=n}}function bb(t){return it(t.integerValue||t.doubleValue)}function NP(t){return v_(t)&&t.arrayValue.values?t.arrayValue.values.slice():[]}function Wj(t,e){return t.field.isEqual(e.field)&&function(r,i){return r instanceof Nu&&i instanceof Nu||r instanceof $u&&i instanceof $u?Ia(r.elements,i.elements,jr):r instanceof $d&&i instanceof $d?jr(r.Te,i.Te):r instanceof Nd&&i instanceof Nd}(t.transform,e.transform)}class qj{constructor(e,n){this.version=e,this.transformResults=n}}class oi{constructor(e,n){this.updateTime=e,this.exists=n}static none(){return new oi}static exists(e){return new oi(void 0,e)}static updateTime(e){return new oi(e)}get isNone(){return this.updateTime===void 0&&this.exists===void 0}isEqual(e){return this.exists===e.exists&&(this.updateTime?!!e.updateTime&&this.updateTime.isEqual(e.updateTime):!e.updateTime)}}function Dh(t,e){return t.updateTime!==void 0?e.isFoundDocument()&&e.version.isEqual(t.updateTime):t.exists===void 0||t.exists===e.isFoundDocument()}class _p{}function $P(t,e){if(!t.hasLocalMutations||e&&e.fields.length===0)return null;if(e===null)return t.isNoDocument()?new FP(t.key,oi.none()):new wc(t.key,t.data,oi.none());{const n=t.data,r=Un.empty();let i=new Rt(It.comparator);for(let s of e.fields)if(!i.has(s)){let o=n.field(s);o===null&&s.length>1&&(s=s.popLast(),o=n.field(s)),o===null?r.delete(s):r.set(s,o),i=i.add(s)}return new co(t.key,r,new ir(i.toArray()),oi.none())}}function Gj(t,e,n){t instanceof wc?function(i,s,o){const a=i.value.clone(),l=Tb(i.fieldTransforms,s,o.transformResults);a.setAll(l),s.convertToFoundDocument(o.version,a).setHasCommittedMutations()}(t,e,n):t instanceof co?function(i,s,o){if(!Dh(i.precondition,s))return void s.convertToUnknownDocument(o.version);const a=Tb(i.fieldTransforms,s,o.transformResults),l=s.data;l.setAll(LP(i)),l.setAll(a),s.convertToFoundDocument(o.version,l).setHasCommittedMutations()}(t,e,n):function(i,s,o){s.convertToNoDocument(o.version).setHasCommittedMutations()}(0,e,n)}function Gl(t,e,n,r){return t instanceof wc?function(s,o,a,l){if(!Dh(s.precondition,o))return a;const u=s.value.clone(),c=Sb(s.fieldTransforms,l,o);return u.setAll(c),o.convertToFoundDocument(o.version,u).setHasLocalMutations(),null}(t,e,n,r):t instanceof co?function(s,o,a,l){if(!Dh(s.precondition,o))return a;const u=Sb(s.fieldTransforms,l,o),c=o.data;return c.setAll(LP(s)),c.setAll(u),o.convertToFoundDocument(o.version,c).setHasLocalMutations(),a===null?null:a.unionWith(s.fieldMask.fields).unionWith(s.fieldTransforms.map(h=>h.field))}(t,e,n,r):function(s,o,a){return Dh(s.precondition,o)?(o.convertToNoDocument(o.version).setHasLocalMutations(),null):a}(t,e,n)}function Kj(t,e){let n=null;for(const r of t.fieldTransforms){const i=e.data.field(r.field),s=MP(r.transform,i||null);s!=null&&(n===null&&(n=Un.empty()),n.set(r.field,s))}return n||null}function Eb(t,e){return t.type===e.type&&!!t.key.isEqual(e.key)&&!!t.precondition.isEqual(e.precondition)&&!!function(r,i){return r===void 0&&i===void 0||!(!r||!i)&&Ia(r,i,(s,o)=>Wj(s,o))}(t.fieldTransforms,e.fieldTransforms)&&(t.type===0?t.value.isEqual(e.value):t.type!==1||t.data.isEqual(e.data)&&t.fieldMask.isEqual(e.fieldMask))}class wc extends _p{constructor(e,n,r,i=[]){super(),this.key=e,this.value=n,this.precondition=r,this.fieldTransforms=i,this.type=0}getFieldMask(){return null}}class co extends _p{constructor(e,n,r,i,s=[]){super(),this.key=e,this.data=n,this.fieldMask=r,this.precondition=i,this.fieldTransforms=s,this.type=1}getFieldMask(){return this.fieldMask}}function LP(t){const e=new Map;return t.fieldMask.fields.forEach(n=>{if(!n.isEmpty()){const r=t.data.field(n);e.set(n,r)}}),e}function Tb(t,e,n){const r=new Map;Ue(t.length===n.length);for(let i=0;i{const s=e.get(i.key),o=s.overlayedDocument;let a=this.applyToLocalView(o,s.mutatedFields);a=n.has(i.key)?null:a;const l=$P(o,a);l!==null&&r.set(i.key,l),o.isValidDocument()||o.convertToNoDocument(ae.min())}),r}keys(){return this.mutations.reduce((e,n)=>e.add(n.key),pe())}isEqual(e){return this.batchId===e.batchId&&Ia(this.mutations,e.mutations,(n,r)=>Eb(n,r))&&Ia(this.baseMutations,e.baseMutations,(n,r)=>Eb(n,r))}}class b_{constructor(e,n,r,i){this.batch=e,this.commitVersion=n,this.mutationResults=r,this.docVersions=i}static from(e,n,r){Ue(e.mutations.length===r.length);let i=function(){return Fj}();const s=e.mutations;for(let o=0;o=8)throw new Cl(`Invalid padding: ${n}`);if(r<0)throw new Cl(`Invalid hash count: ${r}`);if(e.length>0&&this.hashCount===0)throw new Cl(`Invalid hash count: ${r}`);if(e.length===0&&n!==0)throw new Cl(`Invalid padding when bitmap length is 0: ${n}`);this.Ee=8*e.length-n,this.de=aa.fromNumber(this.Ee)}Ae(e,n,r){let i=e.add(n.multiply(aa.fromNumber(r)));return i.compare(t9)===1&&(i=new aa([i.getBits(0),i.getBits(1)],0)),i.modulo(this.de).toNumber()}Re(e){return(this.bitmap[Math.floor(e/8)]&1<o.insert(a)),o}insert(e){if(this.Ee===0)return;const n=kb(e),[r,i]=Cb(n);for(let s=0;s0&&(this.be=!0,this.we=e)}Fe(){let e=pe(),n=pe(),r=pe();return this.ye.forEach((i,s)=>{switch(s){case 0:e=e.add(i);break;case 2:n=n.add(i);break;case 1:r=r.add(i);break;default:se()}}),new xc(this.we,this.Se,e,n,r)}Me(){this.be=!1,this.ye=Ab()}xe(e,n){this.be=!0,this.ye=this.ye.insert(e,n)}Oe(e){this.be=!0,this.ye=this.ye.remove(e)}Ne(){this.pe+=1}Be(){this.pe-=1}Le(){this.be=!0,this.Se=!0}}class n9{constructor(e){this.ke=e,this.qe=new Map,this.Qe=yi(),this.Ke=Pb(),this.$e=new Qe(Pe)}Ue(e){for(const n of e.me)e.fe&&e.fe.isFoundDocument()?this.We(n,e.fe):this.Ge(n,e.key,e.fe);for(const n of e.removedTargetIds)this.Ge(n,e.key,e.fe)}ze(e){this.forEachTarget(e,n=>{const r=this.je(n);switch(e.state){case 0:this.He(n)&&r.ve(e.resumeToken);break;case 1:r.Be(),r.De||r.Me(),r.ve(e.resumeToken);break;case 2:r.Be(),r.De||this.removeTarget(n);break;case 3:this.He(n)&&(r.Le(),r.ve(e.resumeToken));break;case 4:this.He(n)&&(this.Je(n),r.ve(e.resumeToken));break;default:se()}})}forEachTarget(e,n){e.targetIds.length>0?e.targetIds.forEach(n):this.qe.forEach((r,i)=>{this.He(i)&&n(i)})}Ye(e){const n=e.targetId,r=e.ge.count,i=this.Ze(n);if(i){const s=i.target;if(Fy(s))if(r===0){const o=new ee(s.path);this.Ge(n,o,zt.newNoDocument(o,ae.min()))}else Ue(r===1);else{const o=this.Xe(n);if(o!==r){const a=this.et(e),l=a?this.tt(a,e,o):1;if(l!==0){this.Je(n);const u=l===2?"TargetPurposeExistenceFilterMismatchBloom":"TargetPurposeExistenceFilterMismatch";this.$e=this.$e.insert(n,u)}}}}}et(e){const n=e.ge.unchangedNames;if(!n||!n.bits)return null;const{bits:{bitmap:r="",padding:i=0},hashCount:s=0}=n;let o,a;try{o=eo(r).toUint8Array()}catch(l){if(l instanceof gP)return Ca("Decoding the base64 bloom filter in existence filter failed ("+l.message+"); ignoring the bloom filter and falling back to full re-query."),null;throw l}try{a=new E_(o,i,s)}catch(l){return Ca(l instanceof Cl?"BloomFilter error: ":"Applying bloom filter failed: ",l),null}return a.Ee===0?null:a}tt(e,n,r){return n.ge.count===r-this.it(e,n.targetId)?0:2}it(e,n){const r=this.ke.getRemoteKeysForTarget(n);let i=0;return r.forEach(s=>{const o=this.ke.rt(),a=`projects/${o.projectId}/databases/${o.database}/documents/${s.path.canonicalString()}`;e.mightContain(a)||(this.Ge(n,s,null),i++)}),i}st(e){const n=new Map;this.qe.forEach((s,o)=>{const a=this.Ze(o);if(a){if(s.current&&Fy(a.target)){const l=new ee(a.target.path);this.Qe.get(l)!==null||this.ot(o,l)||this.Ge(o,l,zt.newNoDocument(l,e))}s.Ce&&(n.set(o,s.Fe()),s.Me())}});let r=pe();this.Ke.forEach((s,o)=>{let a=!0;o.forEachWhile(l=>{const u=this.Ze(l);return!u||u.purpose==="TargetPurposeLimboResolution"||(a=!1,!1)}),a&&(r=r.add(s))}),this.Qe.forEach((s,o)=>o.setReadTime(e));const i=new wp(e,n,this.$e,this.Qe,r);return this.Qe=yi(),this.Ke=Pb(),this.$e=new Qe(Pe),i}We(e,n){if(!this.He(e))return;const r=this.ot(e,n.key)?2:0;this.je(e).xe(n.key,r),this.Qe=this.Qe.insert(n.key,n),this.Ke=this.Ke.insert(n.key,this._t(n.key).add(e))}Ge(e,n,r){if(!this.He(e))return;const i=this.je(e);this.ot(e,n)?i.xe(n,1):i.Oe(n),this.Ke=this.Ke.insert(n,this._t(n).delete(e)),r&&(this.Qe=this.Qe.insert(n,r))}removeTarget(e){this.qe.delete(e)}Xe(e){const n=this.je(e).Fe();return this.ke.getRemoteKeysForTarget(e).size+n.addedDocuments.size-n.removedDocuments.size}Ne(e){this.je(e).Ne()}je(e){let n=this.qe.get(e);return n||(n=new Ib,this.qe.set(e,n)),n}_t(e){let n=this.Ke.get(e);return n||(n=new Rt(Pe),this.Ke=this.Ke.insert(e,n)),n}He(e){const n=this.Ze(e)!==null;return n||Z("WatchChangeAggregator","Detected inactive target",e),n}Ze(e){const n=this.qe.get(e);return n&&n.De?null:this.ke.ut(e)}Je(e){this.qe.set(e,new Ib),this.ke.getRemoteKeysForTarget(e).forEach(n=>{this.Ge(e,n,null)})}ot(e,n){return this.ke.getRemoteKeysForTarget(e).has(n)}}function Pb(){return new Qe(ee.comparator)}function Ab(){return new Qe(ee.comparator)}const r9=(()=>({asc:"ASCENDING",desc:"DESCENDING"}))(),i9=(()=>({"<":"LESS_THAN","<=":"LESS_THAN_OR_EQUAL",">":"GREATER_THAN",">=":"GREATER_THAN_OR_EQUAL","==":"EQUAL","!=":"NOT_EQUAL","array-contains":"ARRAY_CONTAINS",in:"IN","not-in":"NOT_IN","array-contains-any":"ARRAY_CONTAINS_ANY"}))(),s9=(()=>({and:"AND",or:"OR"}))();class o9{constructor(e,n){this.databaseId=e,this.useProto3Json=n}}function Uy(t,e){return t.useProto3Json||mp(e)?e:{value:e}}function Ld(t,e){return t.useProto3Json?`${new Date(1e3*e.seconds).toISOString().replace(/\.\d*/,"").replace("Z","")}.${("000000000"+e.nanoseconds).slice(-9)}Z`:{seconds:""+e.seconds,nanos:e.nanoseconds}}function jP(t,e){return t.useProto3Json?e.toBase64():e.toUint8Array()}function a9(t,e){return Ld(t,e.toTimestamp())}function Fr(t){return Ue(!!t),ae.fromTimestamp(function(n){const r=as(n);return new ft(r.seconds,r.nanos)}(t))}function T_(t,e){return function(r){return new Fe(["projects",r.projectId,"databases",r.database])}(t).child("documents").child(e).canonicalString()}function BP(t){const e=Fe.fromString(t);return Ue(GP(e)),e}function jy(t,e){return T_(t.databaseId,e.path)}function Rm(t,e){const n=BP(e);if(n.get(1)!==t.databaseId.projectId)throw new J(V.INVALID_ARGUMENT,"Tried to deserialize key from different project: "+n.get(1)+" vs "+t.databaseId.projectId);if(n.get(3)!==t.databaseId.database)throw new J(V.INVALID_ARGUMENT,"Tried to deserialize key from different database: "+n.get(3)+" vs "+t.databaseId.database);return new ee(HP(n))}function By(t,e){return T_(t.databaseId,e)}function l9(t){const e=BP(t);return e.length===4?Fe.emptyPath():HP(e)}function Hy(t){return new Fe(["projects",t.databaseId.projectId,"databases",t.databaseId.database]).canonicalString()}function HP(t){return Ue(t.length>4&&t.get(4)==="documents"),t.popFirst(5)}function Rb(t,e,n){return{name:jy(t,e),fields:n.value.mapValue.fields}}function u9(t,e){let n;if("targetChange"in e){e.targetChange;const r=function(u){return u==="NO_CHANGE"?0:u==="ADD"?1:u==="REMOVE"?2:u==="CURRENT"?3:u==="RESET"?4:se()}(e.targetChange.targetChangeType||"NO_CHANGE"),i=e.targetChange.targetIds||[],s=function(u,c){return u.useProto3Json?(Ue(c===void 0||typeof c=="string"),Gt.fromBase64String(c||"")):(Ue(c===void 0||c instanceof Uint8Array),Gt.fromUint8Array(c||new Uint8Array))}(t,e.targetChange.resumeToken),o=e.targetChange.cause,a=o&&function(u){const c=u.code===void 0?V.UNKNOWN:VP(u.code);return new J(c,u.message||"")}(o);n=new UP(r,i,s,a||null)}else if("documentChange"in e){e.documentChange;const r=e.documentChange;r.document,r.document.name,r.document.updateTime;const i=Rm(t,r.document.name),s=Fr(r.document.updateTime),o=r.document.createTime?Fr(r.document.createTime):ae.min(),a=new Un({mapValue:{fields:r.document.fields}}),l=zt.newFoundDocument(i,s,o,a),u=r.targetIds||[],c=r.removedTargetIds||[];n=new Nh(u,c,l.key,l)}else if("documentDelete"in e){e.documentDelete;const r=e.documentDelete;r.document;const i=Rm(t,r.document),s=r.readTime?Fr(r.readTime):ae.min(),o=zt.newNoDocument(i,s),a=r.removedTargetIds||[];n=new Nh([],a,o.key,o)}else if("documentRemove"in e){e.documentRemove;const r=e.documentRemove;r.document;const i=Rm(t,r.document),s=r.removedTargetIds||[];n=new Nh([],s,i,null)}else{if(!("filter"in e))return se();{e.filter;const r=e.filter;r.targetId;const{count:i=0,unchangedNames:s}=r,o=new Jj(i,s),a=r.targetId;n=new zP(a,o)}}return n}function c9(t,e){let n;if(e instanceof wc)n={update:Rb(t,e.key,e.value)};else if(e instanceof FP)n={delete:jy(t,e.key)};else if(e instanceof co)n={update:Rb(t,e.key,e.data),updateMask:_9(e.fieldMask)};else{if(!(e instanceof Qj))return se();n={verify:jy(t,e.key)}}return e.fieldTransforms.length>0&&(n.updateTransforms=e.fieldTransforms.map(r=>function(s,o){const a=o.transform;if(a instanceof Nd)return{fieldPath:o.field.canonicalString(),setToServerValue:"REQUEST_TIME"};if(a instanceof Nu)return{fieldPath:o.field.canonicalString(),appendMissingElements:{values:a.elements}};if(a instanceof $u)return{fieldPath:o.field.canonicalString(),removeAllFromArray:{values:a.elements}};if(a instanceof $d)return{fieldPath:o.field.canonicalString(),increment:a.Te};throw se()}(0,r))),e.precondition.isNone||(n.currentDocument=function(i,s){return s.updateTime!==void 0?{updateTime:a9(i,s.updateTime)}:s.exists!==void 0?{exists:s.exists}:se()}(t,e.precondition)),n}function h9(t,e){return t&&t.length>0?(Ue(e!==void 0),t.map(n=>function(i,s){let o=i.updateTime?Fr(i.updateTime):Fr(s);return o.isEqual(ae.min())&&(o=Fr(s)),new qj(o,i.transformResults||[])}(n,e))):[]}function d9(t,e){return{documents:[By(t,e.path)]}}function f9(t,e){const n={structuredQuery:{}},r=e.path;e.collectionGroup!==null?(n.parent=By(t,r),n.structuredQuery.from=[{collectionId:e.collectionGroup,allDescendants:!0}]):(n.parent=By(t,r.popLast()),n.structuredQuery.from=[{collectionId:r.lastSegment()}]);const i=function(l){if(l.length!==0)return qP(mr.create(l,"and"))}(e.filters);i&&(n.structuredQuery.where=i);const s=function(l){if(l.length!==0)return l.map(u=>function(h){return{field:Ro(h.field),direction:g9(h.dir)}}(u))}(e.orderBy);s&&(n.structuredQuery.orderBy=s);const o=Uy(t,e.limit);return o!==null&&(n.structuredQuery.limit=o),e.startAt&&(n.structuredQuery.startAt=function(l){return{before:l.inclusive,values:l.position}}(e.startAt)),e.endAt&&(n.structuredQuery.endAt=function(l){return{before:!l.inclusive,values:l.position}}(e.endAt)),n}function p9(t){let e=l9(t.parent);const n=t.structuredQuery,r=n.from?n.from.length:0;let i=null;if(r>0){Ue(r===1);const c=n.from[0];c.allDescendants?i=c.collectionId:e=e.child(c.collectionId)}let s=[];n.where&&(s=function(h){const d=WP(h);return d instanceof mr&&wP(d)?d.getFilters():[d]}(n.where));let o=[];n.orderBy&&(o=function(h){return h.map(d=>function(p){return new Dd(Mo(p.field),function(w){switch(w){case"ASCENDING":return"asc";case"DESCENDING":return"desc";default:return}}(p.direction))}(d))}(n.orderBy));let a=null;n.limit&&(a=function(h){let d;return d=typeof h=="object"?h.value:h,mp(d)?null:d}(n.limit));let l=null;n.startAt&&(l=function(h){const d=!!h.before,f=h.values||[];return new Od(f,d)}(n.startAt));let u=null;return n.endAt&&(u=function(h){const d=!h.before,f=h.values||[];return new Od(f,d)}(n.endAt)),Oj(e,i,o,s,a,"F",l,u)}function m9(t,e){const n=function(i){switch(i){case"TargetPurposeListen":return null;case"TargetPurposeExistenceFilterMismatch":return"existence-filter-mismatch";case"TargetPurposeExistenceFilterMismatchBloom":return"existence-filter-mismatch-bloom";case"TargetPurposeLimboResolution":return"limbo-document";default:return se()}}(e.purpose);return n==null?null:{"goog-listen-tags":n}}function WP(t){return t.unaryFilter!==void 0?function(n){switch(n.unaryFilter.op){case"IS_NAN":const r=Mo(n.unaryFilter.field);return at.create(r,"==",{doubleValue:NaN});case"IS_NULL":const i=Mo(n.unaryFilter.field);return at.create(i,"==",{nullValue:"NULL_VALUE"});case"IS_NOT_NAN":const s=Mo(n.unaryFilter.field);return at.create(s,"!=",{doubleValue:NaN});case"IS_NOT_NULL":const o=Mo(n.unaryFilter.field);return at.create(o,"!=",{nullValue:"NULL_VALUE"});default:return se()}}(t):t.fieldFilter!==void 0?function(n){return at.create(Mo(n.fieldFilter.field),function(i){switch(i){case"EQUAL":return"==";case"NOT_EQUAL":return"!=";case"GREATER_THAN":return">";case"GREATER_THAN_OR_EQUAL":return">=";case"LESS_THAN":return"<";case"LESS_THAN_OR_EQUAL":return"<=";case"ARRAY_CONTAINS":return"array-contains";case"IN":return"in";case"NOT_IN":return"not-in";case"ARRAY_CONTAINS_ANY":return"array-contains-any";default:return se()}}(n.fieldFilter.op),n.fieldFilter.value)}(t):t.compositeFilter!==void 0?function(n){return mr.create(n.compositeFilter.filters.map(r=>WP(r)),function(i){switch(i){case"AND":return"and";case"OR":return"or";default:return se()}}(n.compositeFilter.op))}(t):se()}function g9(t){return r9[t]}function y9(t){return i9[t]}function v9(t){return s9[t]}function Ro(t){return{fieldPath:t.canonicalString()}}function Mo(t){return It.fromServerFormat(t.fieldPath)}function qP(t){return t instanceof at?function(n){if(n.op==="=="){if(yb(n.value))return{unaryFilter:{field:Ro(n.field),op:"IS_NAN"}};if(gb(n.value))return{unaryFilter:{field:Ro(n.field),op:"IS_NULL"}}}else if(n.op==="!="){if(yb(n.value))return{unaryFilter:{field:Ro(n.field),op:"IS_NOT_NAN"}};if(gb(n.value))return{unaryFilter:{field:Ro(n.field),op:"IS_NOT_NULL"}}}return{fieldFilter:{field:Ro(n.field),op:y9(n.op),value:n.value}}}(t):t instanceof mr?function(n){const r=n.getFilters().map(i=>qP(i));return r.length===1?r[0]:{compositeFilter:{op:v9(n.op),filters:r}}}(t):se()}function _9(t){const e=[];return t.fields.forEach(n=>e.push(n.canonicalString())),{fieldPaths:e}}function GP(t){return t.length>=4&&t.get(0)==="projects"&&t.get(2)==="databases"}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class ji{constructor(e,n,r,i,s=ae.min(),o=ae.min(),a=Gt.EMPTY_BYTE_STRING,l=null){this.target=e,this.targetId=n,this.purpose=r,this.sequenceNumber=i,this.snapshotVersion=s,this.lastLimboFreeSnapshotVersion=o,this.resumeToken=a,this.expectedCount=l}withSequenceNumber(e){return new ji(this.target,this.targetId,this.purpose,e,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,this.expectedCount)}withResumeToken(e,n){return new ji(this.target,this.targetId,this.purpose,this.sequenceNumber,n,this.lastLimboFreeSnapshotVersion,e,null)}withExpectedCount(e){return new ji(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,e)}withLastLimboFreeSnapshotVersion(e){return new ji(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,e,this.resumeToken,this.expectedCount)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class w9{constructor(e){this.ct=e}}function x9(t){const e=p9({parent:t.parent,structuredQuery:t.structuredQuery});return t.limitType==="LAST"?zy(e,e.limit,"L"):e}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class b9{constructor(){this._n=new E9}addToCollectionParentIndex(e,n){return this._n.add(n),j.resolve()}getCollectionParents(e,n){return j.resolve(this._n.getEntries(n))}addFieldIndex(e,n){return j.resolve()}deleteFieldIndex(e,n){return j.resolve()}deleteAllFieldIndexes(e){return j.resolve()}createTargetIndexes(e,n){return j.resolve()}getDocumentsMatchingTarget(e,n){return j.resolve(null)}getIndexType(e,n){return j.resolve(0)}getFieldIndexes(e,n){return j.resolve([])}getNextCollectionGroupToUpdate(e){return j.resolve(null)}getMinOffset(e,n){return j.resolve(os.min())}getMinOffsetFromCollectionGroup(e,n){return j.resolve(os.min())}updateCollectionGroup(e,n,r){return j.resolve()}updateIndexEntries(e,n){return j.resolve()}}class E9{constructor(){this.index={}}add(e){const n=e.lastSegment(),r=e.popLast(),i=this.index[n]||new Rt(Fe.comparator),s=!i.has(r);return this.index[n]=i.add(r),s}has(e){const n=e.lastSegment(),r=e.popLast(),i=this.index[n];return i&&i.has(r)}getEntries(e){return(this.index[e]||new Rt(Fe.comparator)).toArray()}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Ra{constructor(e){this.On=e}next(){return this.On+=2,this.On}static Nn(){return new Ra(0)}static Bn(){return new Ra(-1)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class T9{constructor(){this.changes=new Xa(e=>e.toString(),(e,n)=>e.isEqual(n)),this.changesApplied=!1}addEntry(e){this.assertNotApplied(),this.changes.set(e.key,e)}removeEntry(e,n){this.assertNotApplied(),this.changes.set(e,zt.newInvalidDocument(e).setReadTime(n))}getEntry(e,n){this.assertNotApplied();const r=this.changes.get(n);return r!==void 0?j.resolve(r):this.getFromCache(e,n)}getEntries(e,n){return this.getAllFromCache(e,n)}apply(e){return this.assertNotApplied(),this.changesApplied=!0,this.applyChanges(e)}assertNotApplied(){}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *//** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class S9{constructor(e,n){this.overlayedDocument=e,this.mutatedFields=n}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class k9{constructor(e,n,r,i){this.remoteDocumentCache=e,this.mutationQueue=n,this.documentOverlayCache=r,this.indexManager=i}getDocument(e,n){let r=null;return this.documentOverlayCache.getOverlay(e,n).next(i=>(r=i,this.remoteDocumentCache.getEntry(e,n))).next(i=>(r!==null&&Gl(r.mutation,i,ir.empty(),ft.now()),i))}getDocuments(e,n){return this.remoteDocumentCache.getEntries(e,n).next(r=>this.getLocalViewOfDocuments(e,r,pe()).next(()=>r))}getLocalViewOfDocuments(e,n,r=pe()){const i=Ms();return this.populateOverlays(e,i,n).next(()=>this.computeViews(e,n,i,r).next(s=>{let o=kl();return s.forEach((a,l)=>{o=o.insert(a,l.overlayedDocument)}),o}))}getOverlayedDocuments(e,n){const r=Ms();return this.populateOverlays(e,r,n).next(()=>this.computeViews(e,n,r,pe()))}populateOverlays(e,n,r){const i=[];return r.forEach(s=>{n.has(s)||i.push(s)}),this.documentOverlayCache.getOverlays(e,i).next(s=>{s.forEach((o,a)=>{n.set(o,a)})})}computeViews(e,n,r,i){let s=yi();const o=ql(),a=function(){return ql()}();return n.forEach((l,u)=>{const c=r.get(u.key);i.has(u.key)&&(c===void 0||c.mutation instanceof co)?s=s.insert(u.key,u):c!==void 0?(o.set(u.key,c.mutation.getFieldMask()),Gl(c.mutation,u,c.mutation.getFieldMask(),ft.now())):o.set(u.key,ir.empty())}),this.recalculateAndSaveOverlays(e,s).next(l=>(l.forEach((u,c)=>o.set(u,c)),n.forEach((u,c)=>{var h;return a.set(u,new S9(c,(h=o.get(u))!==null&&h!==void 0?h:null))}),a))}recalculateAndSaveOverlays(e,n){const r=ql();let i=new Qe((o,a)=>o-a),s=pe();return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(e,n).next(o=>{for(const a of o)a.keys().forEach(l=>{const u=n.get(l);if(u===null)return;let c=r.get(l)||ir.empty();c=a.applyToLocalView(u,c),r.set(l,c);const h=(i.get(a.batchId)||pe()).add(l);i=i.insert(a.batchId,h)})}).next(()=>{const o=[],a=i.getReverseIterator();for(;a.hasNext();){const l=a.getNext(),u=l.key,c=l.value,h=PP();c.forEach(d=>{if(!s.has(d)){const f=$P(n.get(d),r.get(d));f!==null&&h.set(d,f),s=s.add(d)}}),o.push(this.documentOverlayCache.saveOverlays(e,u,h))}return j.waitFor(o)}).next(()=>r)}recalculateAndSaveOverlaysForDocumentKeys(e,n){return this.remoteDocumentCache.getEntries(e,n).next(r=>this.recalculateAndSaveOverlays(e,r))}getDocumentsMatchingQuery(e,n,r,i){return function(o){return ee.isDocumentKey(o.path)&&o.collectionGroup===null&&o.filters.length===0}(n)?this.getDocumentsMatchingDocumentQuery(e,n.path):TP(n)?this.getDocumentsMatchingCollectionGroupQuery(e,n,r,i):this.getDocumentsMatchingCollectionQuery(e,n,r,i)}getNextDocuments(e,n,r,i){return this.remoteDocumentCache.getAllFromCollectionGroup(e,n,r,i).next(s=>{const o=i-s.size>0?this.documentOverlayCache.getOverlaysForCollectionGroup(e,n,r.largestBatchId,i-s.size):j.resolve(Ms());let a=-1,l=s;return o.next(u=>j.forEach(u,(c,h)=>(a{l=l.insert(c,d)}))).next(()=>this.populateOverlays(e,u,s)).next(()=>this.computeViews(e,l,u,pe())).next(c=>({batchId:a,changes:IP(c)})))})}getDocumentsMatchingDocumentQuery(e,n){return this.getDocument(e,new ee(n)).next(r=>{let i=kl();return r.isFoundDocument()&&(i=i.insert(r.key,r)),i})}getDocumentsMatchingCollectionGroupQuery(e,n,r,i){const s=n.collectionGroup;let o=kl();return this.indexManager.getCollectionParents(e,s).next(a=>j.forEach(a,l=>{const u=function(h,d){return new _c(d,null,h.explicitOrderBy.slice(),h.filters.slice(),h.limit,h.limitType,h.startAt,h.endAt)}(n,l.child(s));return this.getDocumentsMatchingCollectionQuery(e,u,r,i).next(c=>{c.forEach((h,d)=>{o=o.insert(h,d)})})}).next(()=>o))}getDocumentsMatchingCollectionQuery(e,n,r,i){let s;return this.documentOverlayCache.getOverlaysForCollection(e,n.path,r.largestBatchId).next(o=>(s=o,this.remoteDocumentCache.getDocumentsMatchingQuery(e,n,r,s,i))).next(o=>{s.forEach((l,u)=>{const c=u.getKey();o.get(c)===null&&(o=o.insert(c,zt.newInvalidDocument(c)))});let a=kl();return o.forEach((l,u)=>{const c=s.get(l);c!==void 0&&Gl(c.mutation,u,ir.empty(),ft.now()),yp(n,u)&&(a=a.insert(l,u))}),a})}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class C9{constructor(e){this.serializer=e,this.cr=new Map,this.lr=new Map}getBundleMetadata(e,n){return j.resolve(this.cr.get(n))}saveBundleMetadata(e,n){return this.cr.set(n.id,function(i){return{id:i.id,version:i.version,createTime:Fr(i.createTime)}}(n)),j.resolve()}getNamedQuery(e,n){return j.resolve(this.lr.get(n))}saveNamedQuery(e,n){return this.lr.set(n.name,function(i){return{name:i.name,query:x9(i.bundledQuery),readTime:Fr(i.readTime)}}(n)),j.resolve()}}/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class I9{constructor(){this.overlays=new Qe(ee.comparator),this.hr=new Map}getOverlay(e,n){return j.resolve(this.overlays.get(n))}getOverlays(e,n){const r=Ms();return j.forEach(n,i=>this.getOverlay(e,i).next(s=>{s!==null&&r.set(i,s)})).next(()=>r)}saveOverlays(e,n,r){return r.forEach((i,s)=>{this.ht(e,n,s)}),j.resolve()}removeOverlaysForBatchId(e,n,r){const i=this.hr.get(r);return i!==void 0&&(i.forEach(s=>this.overlays=this.overlays.remove(s)),this.hr.delete(r)),j.resolve()}getOverlaysForCollection(e,n,r){const i=Ms(),s=n.length+1,o=new ee(n.child("")),a=this.overlays.getIteratorFrom(o);for(;a.hasNext();){const l=a.getNext().value,u=l.getKey();if(!n.isPrefixOf(u.path))break;u.path.length===s&&l.largestBatchId>r&&i.set(l.getKey(),l)}return j.resolve(i)}getOverlaysForCollectionGroup(e,n,r,i){let s=new Qe((u,c)=>u-c);const o=this.overlays.getIterator();for(;o.hasNext();){const u=o.getNext().value;if(u.getKey().getCollectionGroup()===n&&u.largestBatchId>r){let c=s.get(u.largestBatchId);c===null&&(c=Ms(),s=s.insert(u.largestBatchId,c)),c.set(u.getKey(),u)}}const a=Ms(),l=s.getIterator();for(;l.hasNext()&&(l.getNext().value.forEach((u,c)=>a.set(u,c)),!(a.size()>=i)););return j.resolve(a)}ht(e,n,r){const i=this.overlays.get(r.key);if(i!==null){const o=this.hr.get(i.largestBatchId).delete(r.key);this.hr.set(i.largestBatchId,o)}this.overlays=this.overlays.insert(r.key,new Xj(n,r));let s=this.hr.get(n);s===void 0&&(s=pe(),this.hr.set(n,s)),this.hr.set(n,s.add(r.key))}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class S_{constructor(){this.Pr=new Rt(mt.Ir),this.Tr=new Rt(mt.Er)}isEmpty(){return this.Pr.isEmpty()}addReference(e,n){const r=new mt(e,n);this.Pr=this.Pr.add(r),this.Tr=this.Tr.add(r)}dr(e,n){e.forEach(r=>this.addReference(r,n))}removeReference(e,n){this.Ar(new mt(e,n))}Rr(e,n){e.forEach(r=>this.removeReference(r,n))}Vr(e){const n=new ee(new Fe([])),r=new mt(n,e),i=new mt(n,e+1),s=[];return this.Tr.forEachInRange([r,i],o=>{this.Ar(o),s.push(o.key)}),s}mr(){this.Pr.forEach(e=>this.Ar(e))}Ar(e){this.Pr=this.Pr.delete(e),this.Tr=this.Tr.delete(e)}gr(e){const n=new ee(new Fe([])),r=new mt(n,e),i=new mt(n,e+1);let s=pe();return this.Tr.forEachInRange([r,i],o=>{s=s.add(o.key)}),s}containsKey(e){const n=new mt(e,0),r=this.Pr.firstAfterOrEqual(n);return r!==null&&e.isEqual(r.key)}}class mt{constructor(e,n){this.key=e,this.pr=n}static Ir(e,n){return ee.comparator(e.key,n.key)||Pe(e.pr,n.pr)}static Er(e,n){return Pe(e.pr,n.pr)||ee.comparator(e.key,n.key)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class P9{constructor(e,n){this.indexManager=e,this.referenceDelegate=n,this.mutationQueue=[],this.yr=1,this.wr=new Rt(mt.Ir)}checkEmpty(e){return j.resolve(this.mutationQueue.length===0)}addMutationBatch(e,n,r,i){const s=this.yr;this.yr++,this.mutationQueue.length>0&&this.mutationQueue[this.mutationQueue.length-1];const o=new Yj(s,n,r,i);this.mutationQueue.push(o);for(const a of i)this.wr=this.wr.add(new mt(a.key,s)),this.indexManager.addToCollectionParentIndex(e,a.key.path.popLast());return j.resolve(o)}lookupMutationBatch(e,n){return j.resolve(this.Sr(n))}getNextMutationBatchAfterBatchId(e,n){const r=n+1,i=this.br(r),s=i<0?0:i;return j.resolve(this.mutationQueue.length>s?this.mutationQueue[s]:null)}getHighestUnacknowledgedBatchId(){return j.resolve(this.mutationQueue.length===0?-1:this.yr-1)}getAllMutationBatches(e){return j.resolve(this.mutationQueue.slice())}getAllMutationBatchesAffectingDocumentKey(e,n){const r=new mt(n,0),i=new mt(n,Number.POSITIVE_INFINITY),s=[];return this.wr.forEachInRange([r,i],o=>{const a=this.Sr(o.pr);s.push(a)}),j.resolve(s)}getAllMutationBatchesAffectingDocumentKeys(e,n){let r=new Rt(Pe);return n.forEach(i=>{const s=new mt(i,0),o=new mt(i,Number.POSITIVE_INFINITY);this.wr.forEachInRange([s,o],a=>{r=r.add(a.pr)})}),j.resolve(this.Dr(r))}getAllMutationBatchesAffectingQuery(e,n){const r=n.path,i=r.length+1;let s=r;ee.isDocumentKey(s)||(s=s.child(""));const o=new mt(new ee(s),0);let a=new Rt(Pe);return this.wr.forEachWhile(l=>{const u=l.key.path;return!!r.isPrefixOf(u)&&(u.length===i&&(a=a.add(l.pr)),!0)},o),j.resolve(this.Dr(a))}Dr(e){const n=[];return e.forEach(r=>{const i=this.Sr(r);i!==null&&n.push(i)}),n}removeMutationBatch(e,n){Ue(this.Cr(n.batchId,"removed")===0),this.mutationQueue.shift();let r=this.wr;return j.forEach(n.mutations,i=>{const s=new mt(i.key,n.batchId);return r=r.delete(s),this.referenceDelegate.markPotentiallyOrphaned(e,i.key)}).next(()=>{this.wr=r})}Mn(e){}containsKey(e,n){const r=new mt(n,0),i=this.wr.firstAfterOrEqual(r);return j.resolve(n.isEqual(i&&i.key))}performConsistencyCheck(e){return this.mutationQueue.length,j.resolve()}Cr(e,n){return this.br(e)}br(e){return this.mutationQueue.length===0?0:e-this.mutationQueue[0].batchId}Sr(e){const n=this.br(e);return n<0||n>=this.mutationQueue.length?null:this.mutationQueue[n]}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class A9{constructor(e){this.vr=e,this.docs=function(){return new Qe(ee.comparator)}(),this.size=0}setIndexManager(e){this.indexManager=e}addEntry(e,n){const r=n.key,i=this.docs.get(r),s=i?i.size:0,o=this.vr(n);return this.docs=this.docs.insert(r,{document:n.mutableCopy(),size:o}),this.size+=o-s,this.indexManager.addToCollectionParentIndex(e,r.path.popLast())}removeEntry(e){const n=this.docs.get(e);n&&(this.docs=this.docs.remove(e),this.size-=n.size)}getEntry(e,n){const r=this.docs.get(n);return j.resolve(r?r.document.mutableCopy():zt.newInvalidDocument(n))}getEntries(e,n){let r=yi();return n.forEach(i=>{const s=this.docs.get(i);r=r.insert(i,s?s.document.mutableCopy():zt.newInvalidDocument(i))}),j.resolve(r)}getDocumentsMatchingQuery(e,n,r,i){let s=yi();const o=n.path,a=new ee(o.child("")),l=this.docs.getIteratorFrom(a);for(;l.hasNext();){const{key:u,value:{document:c}}=l.getNext();if(!o.isPrefixOf(u.path))break;u.path.length>o.length+1||gj(mj(c),r)<=0||(i.has(c.key)||yp(n,c))&&(s=s.insert(c.key,c.mutableCopy()))}return j.resolve(s)}getAllFromCollectionGroup(e,n,r,i){se()}Fr(e,n){return j.forEach(this.docs,r=>n(r))}newChangeBuffer(e){return new R9(this)}getSize(e){return j.resolve(this.size)}}class R9 extends T9{constructor(e){super(),this.ar=e}applyChanges(e){const n=[];return this.changes.forEach((r,i)=>{i.isValidDocument()?n.push(this.ar.addEntry(e,i)):this.ar.removeEntry(r)}),j.waitFor(n)}getFromCache(e,n){return this.ar.getEntry(e,n)}getAllFromCache(e,n){return this.ar.getEntries(e,n)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class M9{constructor(e){this.persistence=e,this.Mr=new Xa(n=>__(n),w_),this.lastRemoteSnapshotVersion=ae.min(),this.highestTargetId=0,this.Or=0,this.Nr=new S_,this.targetCount=0,this.Br=Ra.Nn()}forEachTarget(e,n){return this.Mr.forEach((r,i)=>n(i)),j.resolve()}getLastRemoteSnapshotVersion(e){return j.resolve(this.lastRemoteSnapshotVersion)}getHighestSequenceNumber(e){return j.resolve(this.Or)}allocateTargetId(e){return this.highestTargetId=this.Br.next(),j.resolve(this.highestTargetId)}setTargetsMetadata(e,n,r){return r&&(this.lastRemoteSnapshotVersion=r),n>this.Or&&(this.Or=n),j.resolve()}qn(e){this.Mr.set(e.target,e);const n=e.targetId;n>this.highestTargetId&&(this.Br=new Ra(n),this.highestTargetId=n),e.sequenceNumber>this.Or&&(this.Or=e.sequenceNumber)}addTargetData(e,n){return this.qn(n),this.targetCount+=1,j.resolve()}updateTargetData(e,n){return this.qn(n),j.resolve()}removeTargetData(e,n){return this.Mr.delete(n.target),this.Nr.Vr(n.targetId),this.targetCount-=1,j.resolve()}removeTargets(e,n,r){let i=0;const s=[];return this.Mr.forEach((o,a)=>{a.sequenceNumber<=n&&r.get(a.targetId)===null&&(this.Mr.delete(o),s.push(this.removeMatchingKeysForTargetId(e,a.targetId)),i++)}),j.waitFor(s).next(()=>i)}getTargetCount(e){return j.resolve(this.targetCount)}getTargetData(e,n){const r=this.Mr.get(n)||null;return j.resolve(r)}addMatchingKeys(e,n,r){return this.Nr.dr(n,r),j.resolve()}removeMatchingKeys(e,n,r){this.Nr.Rr(n,r);const i=this.persistence.referenceDelegate,s=[];return i&&n.forEach(o=>{s.push(i.markPotentiallyOrphaned(e,o))}),j.waitFor(s)}removeMatchingKeysForTargetId(e,n){return this.Nr.Vr(n),j.resolve()}getMatchingKeysForTargetId(e,n){const r=this.Nr.gr(n);return j.resolve(r)}containsKey(e,n){return j.resolve(this.Nr.containsKey(n))}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class O9{constructor(e,n){this.Lr={},this.overlays={},this.kr=new m_(0),this.qr=!1,this.qr=!0,this.referenceDelegate=e(this),this.Qr=new M9(this),this.indexManager=new b9,this.remoteDocumentCache=function(i){return new A9(i)}(r=>this.referenceDelegate.Kr(r)),this.serializer=new w9(n),this.$r=new C9(this.serializer)}start(){return Promise.resolve()}shutdown(){return this.qr=!1,Promise.resolve()}get started(){return this.qr}setDatabaseDeletedListener(){}setNetworkEnabled(){}getIndexManager(e){return this.indexManager}getDocumentOverlayCache(e){let n=this.overlays[e.toKey()];return n||(n=new I9,this.overlays[e.toKey()]=n),n}getMutationQueue(e,n){let r=this.Lr[e.toKey()];return r||(r=new P9(n,this.referenceDelegate),this.Lr[e.toKey()]=r),r}getTargetCache(){return this.Qr}getRemoteDocumentCache(){return this.remoteDocumentCache}getBundleCache(){return this.$r}runTransaction(e,n,r){Z("MemoryPersistence","Starting transaction:",e);const i=new D9(this.kr.next());return this.referenceDelegate.Ur(),r(i).next(s=>this.referenceDelegate.Wr(i).next(()=>s)).toPromise().then(s=>(i.raiseOnCommittedEvent(),s))}Gr(e,n){return j.or(Object.values(this.Lr).map(r=>()=>r.containsKey(e,n)))}}class D9 extends vj{constructor(e){super(),this.currentSequenceNumber=e}}class k_{constructor(e){this.persistence=e,this.zr=new S_,this.jr=null}static Hr(e){return new k_(e)}get Jr(){if(this.jr)return this.jr;throw se()}addReference(e,n,r){return this.zr.addReference(r,n),this.Jr.delete(r.toString()),j.resolve()}removeReference(e,n,r){return this.zr.removeReference(r,n),this.Jr.add(r.toString()),j.resolve()}markPotentiallyOrphaned(e,n){return this.Jr.add(n.toString()),j.resolve()}removeTarget(e,n){this.zr.Vr(n.targetId).forEach(i=>this.Jr.add(i.toString()));const r=this.persistence.getTargetCache();return r.getMatchingKeysForTargetId(e,n.targetId).next(i=>{i.forEach(s=>this.Jr.add(s.toString()))}).next(()=>r.removeTargetData(e,n))}Ur(){this.jr=new Set}Wr(e){const n=this.persistence.getRemoteDocumentCache().newChangeBuffer();return j.forEach(this.Jr,r=>{const i=ee.fromPath(r);return this.Yr(e,i).next(s=>{s||n.removeEntry(i,ae.min())})}).next(()=>(this.jr=null,n.apply(e)))}updateLimboDocument(e,n){return this.Yr(e,n).next(r=>{r?this.Jr.delete(n.toString()):this.Jr.add(n.toString())})}Kr(e){return 0}Yr(e,n){return j.or([()=>j.resolve(this.zr.containsKey(n)),()=>this.persistence.getTargetCache().containsKey(e,n),()=>this.persistence.Gr(e,n)])}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class C_{constructor(e,n,r,i){this.targetId=e,this.fromCache=n,this.qi=r,this.Qi=i}static Ki(e,n){let r=pe(),i=pe();for(const s of n.docChanges)switch(s.type){case 0:r=r.add(s.doc.key);break;case 1:i=i.add(s.doc.key)}return new C_(e,n.fromCache,r,i)}}/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class N9{constructor(){this._documentReadCount=0}get documentReadCount(){return this._documentReadCount}incrementDocumentReadCount(e){this._documentReadCount+=e}}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class $9{constructor(){this.$i=!1,this.Ui=!1,this.Wi=100,this.Gi=8}initialize(e,n){this.zi=e,this.indexManager=n,this.$i=!0}getDocumentsMatchingQuery(e,n,r,i){const s={result:null};return this.ji(e,n).next(o=>{s.result=o}).next(()=>{if(!s.result)return this.Hi(e,n,i,r).next(o=>{s.result=o})}).next(()=>{if(s.result)return;const o=new N9;return this.Ji(e,n,o).next(a=>{if(s.result=a,this.Ui)return this.Yi(e,n,o,a.size)})}).next(()=>s.result)}Yi(e,n,r,i){return r.documentReadCountthis.Gi*i?(ml()<=ge.DEBUG&&Z("QueryEngine","The SDK decides to create cache indexes for query:",Ao(n),"as using cache indexes may help improve performance."),this.indexManager.createTargetIndexes(e,Lr(n))):j.resolve())}ji(e,n){if(xb(n))return j.resolve(null);let r=Lr(n);return this.indexManager.getIndexType(e,r).next(i=>i===0?null:(n.limit!==null&&i===1&&(n=zy(n,null,"F"),r=Lr(n)),this.indexManager.getDocumentsMatchingTarget(e,r).next(s=>{const o=pe(...s);return this.zi.getDocuments(e,o).next(a=>this.indexManager.getMinOffset(e,r).next(l=>{const u=this.Zi(n,a);return this.Xi(n,u,o,l.readTime)?this.ji(e,zy(n,null,"F")):this.es(e,u,n,l)}))})))}Hi(e,n,r,i){return xb(n)||i.isEqual(ae.min())?j.resolve(null):this.zi.getDocuments(e,r).next(s=>{const o=this.Zi(n,s);return this.Xi(n,o,r,i)?j.resolve(null):(ml()<=ge.DEBUG&&Z("QueryEngine","Re-using previous result from %s to execute query: %s",i.toString(),Ao(n)),this.es(e,o,n,pj(i,-1)).next(a=>a))})}Zi(e,n){let r=new Rt(kP(e));return n.forEach((i,s)=>{yp(e,s)&&(r=r.add(s))}),r}Xi(e,n,r,i){if(e.limit===null)return!1;if(r.size!==n.size)return!0;const s=e.limitType==="F"?n.last():n.first();return!!s&&(s.hasPendingWrites||s.version.compareTo(i)>0)}Ji(e,n,r){return ml()<=ge.DEBUG&&Z("QueryEngine","Using full collection scan to execute query:",Ao(n)),this.zi.getDocumentsMatchingQuery(e,n,os.min(),r)}es(e,n,r,i){return this.zi.getDocumentsMatchingQuery(e,r,i).next(s=>(n.forEach(o=>{s=s.insert(o.key,o)}),s))}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class L9{constructor(e,n,r,i){this.persistence=e,this.ts=n,this.serializer=i,this.ns=new Qe(Pe),this.rs=new Xa(s=>__(s),w_),this.ss=new Map,this.os=e.getRemoteDocumentCache(),this.Qr=e.getTargetCache(),this.$r=e.getBundleCache(),this._s(r)}_s(e){this.documentOverlayCache=this.persistence.getDocumentOverlayCache(e),this.indexManager=this.persistence.getIndexManager(e),this.mutationQueue=this.persistence.getMutationQueue(e,this.indexManager),this.localDocuments=new k9(this.os,this.mutationQueue,this.documentOverlayCache,this.indexManager),this.os.setIndexManager(this.indexManager),this.ts.initialize(this.localDocuments,this.indexManager)}collectGarbage(e){return this.persistence.runTransaction("Collect garbage","readwrite-primary",n=>e.collect(n,this.ns))}}function F9(t,e,n,r){return new L9(t,e,n,r)}async function KP(t,e){const n=he(t);return await n.persistence.runTransaction("Handle user change","readonly",r=>{let i;return n.mutationQueue.getAllMutationBatches(r).next(s=>(i=s,n._s(e),n.mutationQueue.getAllMutationBatches(r))).next(s=>{const o=[],a=[];let l=pe();for(const u of i){o.push(u.batchId);for(const c of u.mutations)l=l.add(c.key)}for(const u of s){a.push(u.batchId);for(const c of u.mutations)l=l.add(c.key)}return n.localDocuments.getDocuments(r,l).next(u=>({us:u,removedBatchIds:o,addedBatchIds:a}))})})}function V9(t,e){const n=he(t);return n.persistence.runTransaction("Acknowledge batch","readwrite-primary",r=>{const i=e.batch.keys(),s=n.os.newChangeBuffer({trackRemovals:!0});return function(a,l,u,c){const h=u.batch,d=h.keys();let f=j.resolve();return d.forEach(p=>{f=f.next(()=>c.getEntry(l,p)).next(m=>{const w=u.docVersions.get(p);Ue(w!==null),m.version.compareTo(w)<0&&(h.applyToRemoteDocument(m,u),m.isValidDocument()&&(m.setReadTime(u.commitVersion),c.addEntry(m)))})}),f.next(()=>a.mutationQueue.removeMutationBatch(l,h))}(n,r,e,s).next(()=>s.apply(r)).next(()=>n.mutationQueue.performConsistencyCheck(r)).next(()=>n.documentOverlayCache.removeOverlaysForBatchId(r,i,e.batch.batchId)).next(()=>n.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(r,function(a){let l=pe();for(let u=0;u0&&(l=l.add(a.batch.mutations[u].key));return l}(e))).next(()=>n.localDocuments.getDocuments(r,i))})}function QP(t){const e=he(t);return e.persistence.runTransaction("Get last remote snapshot version","readonly",n=>e.Qr.getLastRemoteSnapshotVersion(n))}function z9(t,e){const n=he(t),r=e.snapshotVersion;let i=n.ns;return n.persistence.runTransaction("Apply remote event","readwrite-primary",s=>{const o=n.os.newChangeBuffer({trackRemovals:!0});i=n.ns;const a=[];e.targetChanges.forEach((c,h)=>{const d=i.get(h);if(!d)return;a.push(n.Qr.removeMatchingKeys(s,c.removedDocuments,h).next(()=>n.Qr.addMatchingKeys(s,c.addedDocuments,h)));let f=d.withSequenceNumber(s.currentSequenceNumber);e.targetMismatches.get(h)!==null?f=f.withResumeToken(Gt.EMPTY_BYTE_STRING,ae.min()).withLastLimboFreeSnapshotVersion(ae.min()):c.resumeToken.approximateByteSize()>0&&(f=f.withResumeToken(c.resumeToken,r)),i=i.insert(h,f),function(m,w,g){return m.resumeToken.approximateByteSize()===0||w.snapshotVersion.toMicroseconds()-m.snapshotVersion.toMicroseconds()>=3e8?!0:g.addedDocuments.size+g.modifiedDocuments.size+g.removedDocuments.size>0}(d,f,c)&&a.push(n.Qr.updateTargetData(s,f))});let l=yi(),u=pe();if(e.documentUpdates.forEach(c=>{e.resolvedLimboDocuments.has(c)&&a.push(n.persistence.referenceDelegate.updateLimboDocument(s,c))}),a.push(U9(s,o,e.documentUpdates).next(c=>{l=c.cs,u=c.ls})),!r.isEqual(ae.min())){const c=n.Qr.getLastRemoteSnapshotVersion(s).next(h=>n.Qr.setTargetsMetadata(s,s.currentSequenceNumber,r));a.push(c)}return j.waitFor(a).next(()=>o.apply(s)).next(()=>n.localDocuments.getLocalViewOfDocuments(s,l,u)).next(()=>l)}).then(s=>(n.ns=i,s))}function U9(t,e,n){let r=pe(),i=pe();return n.forEach(s=>r=r.add(s)),e.getEntries(t,r).next(s=>{let o=yi();return n.forEach((a,l)=>{const u=s.get(a);l.isFoundDocument()!==u.isFoundDocument()&&(i=i.add(a)),l.isNoDocument()&&l.version.isEqual(ae.min())?(e.removeEntry(a,l.readTime),o=o.insert(a,l)):!u.isValidDocument()||l.version.compareTo(u.version)>0||l.version.compareTo(u.version)===0&&u.hasPendingWrites?(e.addEntry(l),o=o.insert(a,l)):Z("LocalStore","Ignoring outdated watch update for ",a,". Current version:",u.version," Watch version:",l.version)}),{cs:o,ls:i}})}function j9(t,e){const n=he(t);return n.persistence.runTransaction("Get next mutation batch","readonly",r=>(e===void 0&&(e=-1),n.mutationQueue.getNextMutationBatchAfterBatchId(r,e)))}function B9(t,e){const n=he(t);return n.persistence.runTransaction("Allocate target","readwrite",r=>{let i;return n.Qr.getTargetData(r,e).next(s=>s?(i=s,j.resolve(i)):n.Qr.allocateTargetId(r).next(o=>(i=new ji(e,o,"TargetPurposeListen",r.currentSequenceNumber),n.Qr.addTargetData(r,i).next(()=>i))))}).then(r=>{const i=n.ns.get(r.targetId);return(i===null||r.snapshotVersion.compareTo(i.snapshotVersion)>0)&&(n.ns=n.ns.insert(r.targetId,r),n.rs.set(e,r.targetId)),r})}async function Wy(t,e,n){const r=he(t),i=r.ns.get(e),s=n?"readwrite":"readwrite-primary";try{n||await r.persistence.runTransaction("Release target",s,o=>r.persistence.referenceDelegate.removeTarget(o,i))}catch(o){if(!vc(o))throw o;Z("LocalStore",`Failed to update sequence numbers for target ${e}: ${o}`)}r.ns=r.ns.remove(e),r.rs.delete(i.target)}function Mb(t,e,n){const r=he(t);let i=ae.min(),s=pe();return r.persistence.runTransaction("Execute query","readwrite",o=>function(l,u,c){const h=he(l),d=h.rs.get(c);return d!==void 0?j.resolve(h.ns.get(d)):h.Qr.getTargetData(u,c)}(r,o,Lr(e)).next(a=>{if(a)return i=a.lastLimboFreeSnapshotVersion,r.Qr.getMatchingKeysForTargetId(o,a.targetId).next(l=>{s=l})}).next(()=>r.ts.getDocumentsMatchingQuery(o,e,n?i:ae.min(),n?s:pe())).next(a=>(H9(r,Nj(e),a),{documents:a,hs:s})))}function H9(t,e,n){let r=t.ss.get(e)||ae.min();n.forEach((i,s)=>{s.readTime.compareTo(r)>0&&(r=s.readTime)}),t.ss.set(e,r)}class Ob{constructor(){this.activeTargetIds=Uj()}As(e){this.activeTargetIds=this.activeTargetIds.add(e)}Rs(e){this.activeTargetIds=this.activeTargetIds.delete(e)}ds(){const e={activeTargetIds:this.activeTargetIds.toArray(),updateTimeMs:Date.now()};return JSON.stringify(e)}}class W9{constructor(){this.no=new Ob,this.ro={},this.onlineStateHandler=null,this.sequenceNumberHandler=null}addPendingMutation(e){}updateMutationState(e,n,r){}addLocalQueryTarget(e){return this.no.As(e),this.ro[e]||"not-current"}updateQueryState(e,n,r){this.ro[e]=n}removeLocalQueryTarget(e){this.no.Rs(e)}isLocalQueryTarget(e){return this.no.activeTargetIds.has(e)}clearQueryState(e){delete this.ro[e]}getAllActiveQueryTargets(){return this.no.activeTargetIds}isActiveQueryTarget(e){return this.no.activeTargetIds.has(e)}start(){return this.no=new Ob,Promise.resolve()}handleUserChange(e,n,r){}setOnlineState(e){}shutdown(){}writeSequenceNumber(e){}notifyBundleLoaded(e){}}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class q9{io(e){}shutdown(){}}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Db{constructor(){this.so=()=>this.oo(),this._o=()=>this.ao(),this.uo=[],this.co()}io(e){this.uo.push(e)}shutdown(){window.removeEventListener("online",this.so),window.removeEventListener("offline",this._o)}co(){window.addEventListener("online",this.so),window.addEventListener("offline",this._o)}oo(){Z("ConnectivityMonitor","Network connectivity changed: AVAILABLE");for(const e of this.uo)e(0)}ao(){Z("ConnectivityMonitor","Network connectivity changed: UNAVAILABLE");for(const e of this.uo)e(1)}static C(){return typeof window<"u"&&window.addEventListener!==void 0&&window.removeEventListener!==void 0}}/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */let rh=null;function Mm(){return rh===null?rh=function(){return 268435456+Math.round(2147483648*Math.random())}():rh++,"0x"+rh.toString(16)}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const G9={BatchGetDocuments:"batchGet",Commit:"commit",RunQuery:"runQuery",RunAggregationQuery:"runAggregationQuery"};/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class K9{constructor(e){this.lo=e.lo,this.ho=e.ho}Po(e){this.Io=e}To(e){this.Eo=e}onMessage(e){this.Ao=e}close(){this.ho()}send(e){this.lo(e)}Ro(){this.Io()}Vo(e){this.Eo(e)}mo(e){this.Ao(e)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const $t="WebChannelConnection";class Q9 extends class{constructor(n){this.databaseInfo=n,this.databaseId=n.databaseId;const r=n.ssl?"https":"http",i=encodeURIComponent(this.databaseId.projectId),s=encodeURIComponent(this.databaseId.database);this.fo=r+"://"+n.host,this.po=`projects/${i}/databases/${s}`,this.yo=this.databaseId.database==="(default)"?`project_id=${i}`:`project_id=${i}&database_id=${s}`}get wo(){return!1}So(n,r,i,s,o){const a=Mm(),l=this.bo(n,r);Z("RestConnection",`Sending RPC '${n}' ${a}:`,l,i);const u={"google-cloud-resource-prefix":this.po,"x-goog-request-params":this.yo};return this.Do(u,s,o),this.Co(n,l,u,i).then(c=>(Z("RestConnection",`Received RPC '${n}' ${a}: `,c),c),c=>{throw Ca("RestConnection",`RPC '${n}' ${a} failed with error: `,c,"url: ",l,"request:",i),c})}vo(n,r,i,s,o,a){return this.So(n,r,i,s,o)}Do(n,r,i){n["X-Goog-Api-Client"]=function(){return"gl-js/ fire/"+Qa}(),n["Content-Type"]="text/plain",this.databaseInfo.appId&&(n["X-Firebase-GMPID"]=this.databaseInfo.appId),r&&r.headers.forEach((s,o)=>n[o]=s),i&&i.headers.forEach((s,o)=>n[o]=s)}bo(n,r){const i=G9[n];return`${this.fo}/v1/${r}:${i}`}}{constructor(e){super(e),this.forceLongPolling=e.forceLongPolling,this.autoDetectLongPolling=e.autoDetectLongPolling,this.useFetchStreams=e.useFetchStreams,this.longPollingOptions=e.longPollingOptions}Co(e,n,r,i){const s=Mm();return new Promise((o,a)=>{const l=new rj;l.setWithCredentials(!0),l.listenOnce(tj.COMPLETE,()=>{try{switch(l.getLastErrorCode()){case Am.NO_ERROR:const c=l.getResponseJson();Z($t,`XHR for RPC '${e}' ${s} received:`,JSON.stringify(c)),o(c);break;case Am.TIMEOUT:Z($t,`RPC '${e}' ${s} timed out`),a(new J(V.DEADLINE_EXCEEDED,"Request time out"));break;case Am.HTTP_ERROR:const h=l.getStatus();if(Z($t,`RPC '${e}' ${s} failed with status:`,h,"response text:",l.getResponseText()),h>0){let d=l.getResponseJson();Array.isArray(d)&&(d=d[0]);const f=d==null?void 0:d.error;if(f&&f.status&&f.message){const p=function(w){const g=w.toLowerCase().replace(/_/g,"-");return Object.values(V).indexOf(g)>=0?g:V.UNKNOWN}(f.status);a(new J(p,f.message))}else a(new J(V.UNKNOWN,"Server responded with status "+l.getStatus()))}else a(new J(V.UNAVAILABLE,"Connection failed."));break;default:se()}}finally{Z($t,`RPC '${e}' ${s} completed.`)}});const u=JSON.stringify(i);Z($t,`RPC '${e}' ${s} sending request:`,i),l.send(n,"POST",u,r,15)})}Fo(e,n,r){const i=Mm(),s=[this.fo,"/","google.firestore.v1.Firestore","/",e,"/channel"],o=Z6(),a=ej(),l={httpSessionIdParam:"gsessionid",initMessageHeaders:{},messageUrlParams:{database:`projects/${this.databaseId.projectId}/databases/${this.databaseId.database}`},sendRawJson:!0,supportsCrossDomainXhr:!0,internalChannelParams:{forwardChannelRequestTimeoutMs:6e5},forceLongPolling:this.forceLongPolling,detectBufferingProxy:this.autoDetectLongPolling},u=this.longPollingOptions.timeoutSeconds;u!==void 0&&(l.longPollingTimeout=Math.round(1e3*u)),this.useFetchStreams&&(l.useFetchStreams=!0),this.Do(l.initMessageHeaders,n,r),l.encodeInitMessageHeaders=!0;const c=s.join("");Z($t,`Creating RPC '${e}' stream ${i}: ${c}`,l);const h=o.createWebChannel(c,l);let d=!1,f=!1;const p=new K9({lo:w=>{f?Z($t,`Not sending because RPC '${e}' stream ${i} is closed:`,w):(d||(Z($t,`Opening RPC '${e}' stream ${i} transport.`),h.open(),d=!0),Z($t,`RPC '${e}' stream ${i} sending:`,w),h.send(w))},ho:()=>h.close()}),m=(w,g,y)=>{w.listen(g,v=>{try{y(v)}catch(_){setTimeout(()=>{throw _},0)}})};return m(h,eh.EventType.OPEN,()=>{f||Z($t,`RPC '${e}' stream ${i} transport opened.`)}),m(h,eh.EventType.CLOSE,()=>{f||(f=!0,Z($t,`RPC '${e}' stream ${i} transport closed`),p.Vo())}),m(h,eh.EventType.ERROR,w=>{f||(f=!0,Ca($t,`RPC '${e}' stream ${i} transport errored:`,w),p.Vo(new J(V.UNAVAILABLE,"The operation could not be completed")))}),m(h,eh.EventType.MESSAGE,w=>{var g;if(!f){const y=w.data[0];Ue(!!y);const v=y,_=v.error||((g=v[0])===null||g===void 0?void 0:g.error);if(_){Z($t,`RPC '${e}' stream ${i} received error:`,_);const x=_.status;let b=function(A){const S=rt[A];if(S!==void 0)return VP(S)}(x),E=_.message;b===void 0&&(b=V.INTERNAL,E="Unknown error status: "+x+" with message "+_.message),f=!0,p.Vo(new J(b,E)),h.close()}else Z($t,`RPC '${e}' stream ${i} received:`,y),p.mo(y)}}),m(a,nj.STAT_EVENT,w=>{w.stat===cb.PROXY?Z($t,`RPC '${e}' stream ${i} detected buffering proxy`):w.stat===cb.NOPROXY&&Z($t,`RPC '${e}' stream ${i} detected no buffering proxy`)}),setTimeout(()=>{p.Ro()},0),p}}function Om(){return typeof document<"u"?document:null}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function xp(t){return new o9(t,!0)}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class YP{constructor(e,n,r=1e3,i=1.5,s=6e4){this.oi=e,this.timerId=n,this.Mo=r,this.xo=i,this.Oo=s,this.No=0,this.Bo=null,this.Lo=Date.now(),this.reset()}reset(){this.No=0}ko(){this.No=this.Oo}qo(e){this.cancel();const n=Math.floor(this.No+this.Qo()),r=Math.max(0,Date.now()-this.Lo),i=Math.max(0,n-r);i>0&&Z("ExponentialBackoff",`Backing off for ${i} ms (base delay: ${this.No} ms, delay with jitter: ${n} ms, last attempt: ${r} ms ago)`),this.Bo=this.oi.enqueueAfterDelay(this.timerId,i,()=>(this.Lo=Date.now(),e())),this.No*=this.xo,this.Nothis.Oo&&(this.No=this.Oo)}Ko(){this.Bo!==null&&(this.Bo.skipDelay(),this.Bo=null)}cancel(){this.Bo!==null&&(this.Bo.cancel(),this.Bo=null)}Qo(){return(Math.random()-.5)*this.No}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class XP{constructor(e,n,r,i,s,o,a,l){this.oi=e,this.$o=r,this.Uo=i,this.connection=s,this.authCredentialsProvider=o,this.appCheckCredentialsProvider=a,this.listener=l,this.state=0,this.Wo=0,this.Go=null,this.zo=null,this.stream=null,this.jo=new YP(e,n)}Ho(){return this.state===1||this.state===5||this.Jo()}Jo(){return this.state===2||this.state===3}start(){this.state!==4?this.auth():this.Yo()}async stop(){this.Ho()&&await this.close(0)}Zo(){this.state=0,this.jo.reset()}Xo(){this.Jo()&&this.Go===null&&(this.Go=this.oi.enqueueAfterDelay(this.$o,6e4,()=>this.e_()))}t_(e){this.n_(),this.stream.send(e)}async e_(){if(this.Jo())return this.close(0)}n_(){this.Go&&(this.Go.cancel(),this.Go=null)}r_(){this.zo&&(this.zo.cancel(),this.zo=null)}async close(e,n){this.n_(),this.r_(),this.jo.cancel(),this.Wo++,e!==4?this.jo.reset():n&&n.code===V.RESOURCE_EXHAUSTED?(gi(n.toString()),gi("Using maximum backoff delay to prevent overloading the backend."),this.jo.ko()):n&&n.code===V.UNAUTHENTICATED&&this.state!==3&&(this.authCredentialsProvider.invalidateToken(),this.appCheckCredentialsProvider.invalidateToken()),this.stream!==null&&(this.i_(),this.stream.close(),this.stream=null),this.state=e,await this.listener.To(n)}i_(){}auth(){this.state=1;const e=this.s_(this.Wo),n=this.Wo;Promise.all([this.authCredentialsProvider.getToken(),this.appCheckCredentialsProvider.getToken()]).then(([r,i])=>{this.Wo===n&&this.o_(r,i)},r=>{e(()=>{const i=new J(V.UNKNOWN,"Fetching auth token failed: "+r.message);return this.__(i)})})}o_(e,n){const r=this.s_(this.Wo);this.stream=this.a_(e,n),this.stream.Po(()=>{r(()=>(this.state=2,this.zo=this.oi.enqueueAfterDelay(this.Uo,1e4,()=>(this.Jo()&&(this.state=3),Promise.resolve())),this.listener.Po()))}),this.stream.To(i=>{r(()=>this.__(i))}),this.stream.onMessage(i=>{r(()=>this.onMessage(i))})}Yo(){this.state=5,this.jo.qo(async()=>{this.state=0,this.start()})}__(e){return Z("PersistentStream",`close with error: ${e}`),this.stream=null,this.close(4,e)}s_(e){return n=>{this.oi.enqueueAndForget(()=>this.Wo===e?n():(Z("PersistentStream","stream callback skipped by getCloseGuardedDispatcher."),Promise.resolve()))}}}class Y9 extends XP{constructor(e,n,r,i,s,o){super(e,"listen_stream_connection_backoff","listen_stream_idle","health_check_timeout",n,r,i,o),this.serializer=s}a_(e,n){return this.connection.Fo("Listen",e,n)}onMessage(e){this.jo.reset();const n=u9(this.serializer,e),r=function(s){if(!("targetChange"in s))return ae.min();const o=s.targetChange;return o.targetIds&&o.targetIds.length?ae.min():o.readTime?Fr(o.readTime):ae.min()}(e);return this.listener.u_(n,r)}c_(e){const n={};n.database=Hy(this.serializer),n.addTarget=function(s,o){let a;const l=o.target;if(a=Fy(l)?{documents:d9(s,l)}:{query:f9(s,l)},a.targetId=o.targetId,o.resumeToken.approximateByteSize()>0){a.resumeToken=jP(s,o.resumeToken);const u=Uy(s,o.expectedCount);u!==null&&(a.expectedCount=u)}else if(o.snapshotVersion.compareTo(ae.min())>0){a.readTime=Ld(s,o.snapshotVersion.toTimestamp());const u=Uy(s,o.expectedCount);u!==null&&(a.expectedCount=u)}return a}(this.serializer,e);const r=m9(this.serializer,e);r&&(n.labels=r),this.t_(n)}l_(e){const n={};n.database=Hy(this.serializer),n.removeTarget=e,this.t_(n)}}class X9 extends XP{constructor(e,n,r,i,s,o){super(e,"write_stream_connection_backoff","write_stream_idle","health_check_timeout",n,r,i,o),this.serializer=s,this.h_=!1}get P_(){return this.h_}start(){this.h_=!1,this.lastStreamToken=void 0,super.start()}i_(){this.h_&&this.I_([])}a_(e,n){return this.connection.Fo("Write",e,n)}onMessage(e){if(Ue(!!e.streamToken),this.lastStreamToken=e.streamToken,this.h_){this.jo.reset();const n=h9(e.writeResults,e.commitTime),r=Fr(e.commitTime);return this.listener.T_(r,n)}return Ue(!e.writeResults||e.writeResults.length===0),this.h_=!0,this.listener.E_()}d_(){const e={};e.database=Hy(this.serializer),this.t_(e)}I_(e){const n={streamToken:this.lastStreamToken,writes:e.map(r=>c9(this.serializer,r))};this.t_(n)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class J9 extends class{}{constructor(e,n,r,i){super(),this.authCredentials=e,this.appCheckCredentials=n,this.connection=r,this.serializer=i,this.A_=!1}R_(){if(this.A_)throw new J(V.FAILED_PRECONDITION,"The client has already been terminated.")}So(e,n,r){return this.R_(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([i,s])=>this.connection.So(e,n,r,i,s)).catch(i=>{throw i.name==="FirebaseError"?(i.code===V.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),i):new J(V.UNKNOWN,i.toString())})}vo(e,n,r,i){return this.R_(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([s,o])=>this.connection.vo(e,n,r,s,o,i)).catch(s=>{throw s.name==="FirebaseError"?(s.code===V.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),s):new J(V.UNKNOWN,s.toString())})}terminate(){this.A_=!0}}class Z9{constructor(e,n){this.asyncQueue=e,this.onlineStateHandler=n,this.state="Unknown",this.m_=0,this.f_=null,this.g_=!0}p_(){this.m_===0&&(this.y_("Unknown"),this.f_=this.asyncQueue.enqueueAfterDelay("online_state_timeout",1e4,()=>(this.f_=null,this.w_("Backend didn't respond within 10 seconds."),this.y_("Offline"),Promise.resolve())))}S_(e){this.state==="Online"?this.y_("Unknown"):(this.m_++,this.m_>=1&&(this.b_(),this.w_(`Connection failed 1 times. Most recent error: ${e.toString()}`),this.y_("Offline")))}set(e){this.b_(),this.m_=0,e==="Online"&&(this.g_=!1),this.y_(e)}y_(e){e!==this.state&&(this.state=e,this.onlineStateHandler(e))}w_(e){const n=`Could not reach Cloud Firestore backend. ${e} +This typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.`;this.g_?(gi(n),this.g_=!1):Z("OnlineStateTracker",n)}b_(){this.f_!==null&&(this.f_.cancel(),this.f_=null)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class eB{constructor(e,n,r,i,s){this.localStore=e,this.datastore=n,this.asyncQueue=r,this.remoteSyncer={},this.D_=[],this.C_=new Map,this.v_=new Set,this.F_=[],this.M_=s,this.M_.io(o=>{r.enqueueAndForget(async()=>{ho(this)&&(Z("RemoteStore","Restarting streams for network reachability change."),await async function(l){const u=he(l);u.v_.add(4),await bc(u),u.x_.set("Unknown"),u.v_.delete(4),await bp(u)}(this))})}),this.x_=new Z9(r,i)}}async function bp(t){if(ho(t))for(const e of t.F_)await e(!0)}async function bc(t){for(const e of t.F_)await e(!1)}function JP(t,e){const n=he(t);n.C_.has(e.targetId)||(n.C_.set(e.targetId,e),A_(n)?P_(n):Ja(n).Jo()&&I_(n,e))}function ZP(t,e){const n=he(t),r=Ja(n);n.C_.delete(e),r.Jo()&&eA(n,e),n.C_.size===0&&(r.Jo()?r.Xo():ho(n)&&n.x_.set("Unknown"))}function I_(t,e){if(t.O_.Ne(e.targetId),e.resumeToken.approximateByteSize()>0||e.snapshotVersion.compareTo(ae.min())>0){const n=t.remoteSyncer.getRemoteKeysForTarget(e.targetId).size;e=e.withExpectedCount(n)}Ja(t).c_(e)}function eA(t,e){t.O_.Ne(e),Ja(t).l_(e)}function P_(t){t.O_=new n9({getRemoteKeysForTarget:e=>t.remoteSyncer.getRemoteKeysForTarget(e),ut:e=>t.C_.get(e)||null,rt:()=>t.datastore.serializer.databaseId}),Ja(t).start(),t.x_.p_()}function A_(t){return ho(t)&&!Ja(t).Ho()&&t.C_.size>0}function ho(t){return he(t).v_.size===0}function tA(t){t.O_=void 0}async function tB(t){t.C_.forEach((e,n)=>{I_(t,e)})}async function nB(t,e){tA(t),A_(t)?(t.x_.S_(e),P_(t)):t.x_.set("Unknown")}async function rB(t,e,n){if(t.x_.set("Online"),e instanceof UP&&e.state===2&&e.cause)try{await async function(i,s){const o=s.cause;for(const a of s.targetIds)i.C_.has(a)&&(await i.remoteSyncer.rejectListen(a,o),i.C_.delete(a),i.O_.removeTarget(a))}(t,e)}catch(r){Z("RemoteStore","Failed to remove targets %s: %s ",e.targetIds.join(","),r),await Fd(t,r)}else if(e instanceof Nh?t.O_.Ue(e):e instanceof zP?t.O_.Ye(e):t.O_.ze(e),!n.isEqual(ae.min()))try{const r=await QP(t.localStore);n.compareTo(r)>=0&&await function(s,o){const a=s.O_.st(o);return a.targetChanges.forEach((l,u)=>{if(l.resumeToken.approximateByteSize()>0){const c=s.C_.get(u);c&&s.C_.set(u,c.withResumeToken(l.resumeToken,o))}}),a.targetMismatches.forEach((l,u)=>{const c=s.C_.get(l);if(!c)return;s.C_.set(l,c.withResumeToken(Gt.EMPTY_BYTE_STRING,c.snapshotVersion)),eA(s,l);const h=new ji(c.target,l,u,c.sequenceNumber);I_(s,h)}),s.remoteSyncer.applyRemoteEvent(a)}(t,n)}catch(r){Z("RemoteStore","Failed to raise snapshot:",r),await Fd(t,r)}}async function Fd(t,e,n){if(!vc(e))throw e;t.v_.add(1),await bc(t),t.x_.set("Offline"),n||(n=()=>QP(t.localStore)),t.asyncQueue.enqueueRetryable(async()=>{Z("RemoteStore","Retrying IndexedDB access"),await n(),t.v_.delete(1),await bp(t)})}function nA(t,e){return e().catch(n=>Fd(t,n,e))}async function Ep(t){const e=he(t),n=ls(e);let r=e.D_.length>0?e.D_[e.D_.length-1].batchId:-1;for(;iB(e);)try{const i=await j9(e.localStore,r);if(i===null){e.D_.length===0&&n.Xo();break}r=i.batchId,sB(e,i)}catch(i){await Fd(e,i)}rA(e)&&iA(e)}function iB(t){return ho(t)&&t.D_.length<10}function sB(t,e){t.D_.push(e);const n=ls(t);n.Jo()&&n.P_&&n.I_(e.mutations)}function rA(t){return ho(t)&&!ls(t).Ho()&&t.D_.length>0}function iA(t){ls(t).start()}async function oB(t){ls(t).d_()}async function aB(t){const e=ls(t);for(const n of t.D_)e.I_(n.mutations)}async function lB(t,e,n){const r=t.D_.shift(),i=b_.from(r,e,n);await nA(t,()=>t.remoteSyncer.applySuccessfulWrite(i)),await Ep(t)}async function uB(t,e){e&&ls(t).P_&&await async function(r,i){if(function(o){return Zj(o)&&o!==V.ABORTED}(i.code)){const s=r.D_.shift();ls(r).Zo(),await nA(r,()=>r.remoteSyncer.rejectFailedWrite(s.batchId,i)),await Ep(r)}}(t,e),rA(t)&&iA(t)}async function Nb(t,e){const n=he(t);n.asyncQueue.verifyOperationInProgress(),Z("RemoteStore","RemoteStore received new credentials");const r=ho(n);n.v_.add(3),await bc(n),r&&n.x_.set("Unknown"),await n.remoteSyncer.handleCredentialChange(e),n.v_.delete(3),await bp(n)}async function cB(t,e){const n=he(t);e?(n.v_.delete(2),await bp(n)):e||(n.v_.add(2),await bc(n),n.x_.set("Unknown"))}function Ja(t){return t.N_||(t.N_=function(n,r,i){const s=he(n);return s.R_(),new Y9(r,s.connection,s.authCredentials,s.appCheckCredentials,s.serializer,i)}(t.datastore,t.asyncQueue,{Po:tB.bind(null,t),To:nB.bind(null,t),u_:rB.bind(null,t)}),t.F_.push(async e=>{e?(t.N_.Zo(),A_(t)?P_(t):t.x_.set("Unknown")):(await t.N_.stop(),tA(t))})),t.N_}function ls(t){return t.B_||(t.B_=function(n,r,i){const s=he(n);return s.R_(),new X9(r,s.connection,s.authCredentials,s.appCheckCredentials,s.serializer,i)}(t.datastore,t.asyncQueue,{Po:oB.bind(null,t),To:uB.bind(null,t),E_:aB.bind(null,t),T_:lB.bind(null,t)}),t.F_.push(async e=>{e?(t.B_.Zo(),await Ep(t)):(await t.B_.stop(),t.D_.length>0&&(Z("RemoteStore",`Stopping write stream with ${t.D_.length} pending writes`),t.D_=[]))})),t.B_}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class R_{constructor(e,n,r,i,s){this.asyncQueue=e,this.timerId=n,this.targetTimeMs=r,this.op=i,this.removalCallback=s,this.deferred=new si,this.then=this.deferred.promise.then.bind(this.deferred.promise),this.deferred.promise.catch(o=>{})}get promise(){return this.deferred.promise}static createAndSchedule(e,n,r,i,s){const o=Date.now()+r,a=new R_(e,n,o,i,s);return a.start(r),a}start(e){this.timerHandle=setTimeout(()=>this.handleDelayElapsed(),e)}skipDelay(){return this.handleDelayElapsed()}cancel(e){this.timerHandle!==null&&(this.clearTimeout(),this.deferred.reject(new J(V.CANCELLED,"Operation cancelled"+(e?": "+e:""))))}handleDelayElapsed(){this.asyncQueue.enqueueAndForget(()=>this.timerHandle!==null?(this.clearTimeout(),this.op().then(e=>this.deferred.resolve(e))):Promise.resolve())}clearTimeout(){this.timerHandle!==null&&(this.removalCallback(this),clearTimeout(this.timerHandle),this.timerHandle=null)}}function M_(t,e){if(gi("AsyncQueue",`${e}: ${t}`),vc(t))return new J(V.UNAVAILABLE,`${e}: ${t}`);throw t}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class la{constructor(e){this.comparator=e?(n,r)=>e(n,r)||ee.comparator(n.key,r.key):(n,r)=>ee.comparator(n.key,r.key),this.keyedMap=kl(),this.sortedSet=new Qe(this.comparator)}static emptySet(e){return new la(e.comparator)}has(e){return this.keyedMap.get(e)!=null}get(e){return this.keyedMap.get(e)}first(){return this.sortedSet.minKey()}last(){return this.sortedSet.maxKey()}isEmpty(){return this.sortedSet.isEmpty()}indexOf(e){const n=this.keyedMap.get(e);return n?this.sortedSet.indexOf(n):-1}get size(){return this.sortedSet.size}forEach(e){this.sortedSet.inorderTraversal((n,r)=>(e(n),!1))}add(e){const n=this.delete(e.key);return n.copy(n.keyedMap.insert(e.key,e),n.sortedSet.insert(e,null))}delete(e){const n=this.get(e);return n?this.copy(this.keyedMap.remove(e),this.sortedSet.remove(n)):this}isEqual(e){if(!(e instanceof la)||this.size!==e.size)return!1;const n=this.sortedSet.getIterator(),r=e.sortedSet.getIterator();for(;n.hasNext();){const i=n.getNext().key,s=r.getNext().key;if(!i.isEqual(s))return!1}return!0}toString(){const e=[];return this.forEach(n=>{e.push(n.toString())}),e.length===0?"DocumentSet ()":`DocumentSet ( + `+e.join(` +`)+` +)`}copy(e,n){const r=new la;return r.comparator=this.comparator,r.keyedMap=e,r.sortedSet=n,r}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class $b{constructor(){this.L_=new Qe(ee.comparator)}track(e){const n=e.doc.key,r=this.L_.get(n);r?e.type!==0&&r.type===3?this.L_=this.L_.insert(n,e):e.type===3&&r.type!==1?this.L_=this.L_.insert(n,{type:r.type,doc:e.doc}):e.type===2&&r.type===2?this.L_=this.L_.insert(n,{type:2,doc:e.doc}):e.type===2&&r.type===0?this.L_=this.L_.insert(n,{type:0,doc:e.doc}):e.type===1&&r.type===0?this.L_=this.L_.remove(n):e.type===1&&r.type===2?this.L_=this.L_.insert(n,{type:1,doc:r.doc}):e.type===0&&r.type===1?this.L_=this.L_.insert(n,{type:2,doc:e.doc}):se():this.L_=this.L_.insert(n,e)}k_(){const e=[];return this.L_.inorderTraversal((n,r)=>{e.push(r)}),e}}class Ma{constructor(e,n,r,i,s,o,a,l,u){this.query=e,this.docs=n,this.oldDocs=r,this.docChanges=i,this.mutatedKeys=s,this.fromCache=o,this.syncStateChanged=a,this.excludesMetadataChanges=l,this.hasCachedResults=u}static fromInitialDocuments(e,n,r,i,s){const o=[];return n.forEach(a=>{o.push({type:0,doc:a})}),new Ma(e,n,la.emptySet(n),o,r,i,!0,!1,s)}get hasPendingWrites(){return!this.mutatedKeys.isEmpty()}isEqual(e){if(!(this.fromCache===e.fromCache&&this.hasCachedResults===e.hasCachedResults&&this.syncStateChanged===e.syncStateChanged&&this.mutatedKeys.isEqual(e.mutatedKeys)&&gp(this.query,e.query)&&this.docs.isEqual(e.docs)&&this.oldDocs.isEqual(e.oldDocs)))return!1;const n=this.docChanges,r=e.docChanges;if(n.length!==r.length)return!1;for(let i=0;iSP(e),gp),this.onlineState="Unknown",this.Q_=new Set}}async function sA(t,e){const n=he(t),r=e.query;let i=!1,s=n.queries.get(r);if(s||(i=!0,s=new hB),i)try{s.q_=await n.onListen(r)}catch(o){const a=M_(o,`Initialization of query '${Ao(e.query)}' failed`);return void e.onError(a)}n.queries.set(r,s),s.listeners.push(e),e.K_(n.onlineState),s.q_&&e.U_(s.q_)&&O_(n)}async function oA(t,e){const n=he(t),r=e.query;let i=!1;const s=n.queries.get(r);if(s){const o=s.listeners.indexOf(e);o>=0&&(s.listeners.splice(o,1),i=s.listeners.length===0)}if(i)return n.queries.delete(r),n.onUnlisten(r)}function fB(t,e){const n=he(t);let r=!1;for(const i of e){const s=i.query,o=n.queries.get(s);if(o){for(const a of o.listeners)a.U_(i)&&(r=!0);o.q_=i}}r&&O_(n)}function pB(t,e,n){const r=he(t),i=r.queries.get(e);if(i)for(const s of i.listeners)s.onError(n);r.queries.delete(e)}function O_(t){t.Q_.forEach(e=>{e.next()})}class aA{constructor(e,n,r){this.query=e,this.W_=n,this.G_=!1,this.z_=null,this.onlineState="Unknown",this.options=r||{}}U_(e){if(!this.options.includeMetadataChanges){const r=[];for(const i of e.docChanges)i.type!==3&&r.push(i);e=new Ma(e.query,e.docs,e.oldDocs,r,e.mutatedKeys,e.fromCache,e.syncStateChanged,!0,e.hasCachedResults)}let n=!1;return this.G_?this.j_(e)&&(this.W_.next(e),n=!0):this.H_(e,this.onlineState)&&(this.J_(e),n=!0),this.z_=e,n}onError(e){this.W_.error(e)}K_(e){this.onlineState=e;let n=!1;return this.z_&&!this.G_&&this.H_(this.z_,e)&&(this.J_(this.z_),n=!0),n}H_(e,n){if(!e.fromCache)return!0;const r=n!=="Offline";return(!this.options.Y_||!r)&&(!e.docs.isEmpty()||e.hasCachedResults||n==="Offline")}j_(e){if(e.docChanges.length>0)return!0;const n=this.z_&&this.z_.hasPendingWrites!==e.hasPendingWrites;return!(!e.syncStateChanged&&!n)&&this.options.includeMetadataChanges===!0}J_(e){e=Ma.fromInitialDocuments(e.query,e.docs,e.mutatedKeys,e.fromCache,e.hasCachedResults),this.G_=!0,this.W_.next(e)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class lA{constructor(e){this.key=e}}class uA{constructor(e){this.key=e}}class mB{constructor(e,n){this.query=e,this.sa=n,this.oa=null,this.hasCachedResults=!1,this.current=!1,this._a=pe(),this.mutatedKeys=pe(),this.aa=kP(e),this.ua=new la(this.aa)}get ca(){return this.sa}la(e,n){const r=n?n.ha:new $b,i=n?n.ua:this.ua;let s=n?n.mutatedKeys:this.mutatedKeys,o=i,a=!1;const l=this.query.limitType==="F"&&i.size===this.query.limit?i.last():null,u=this.query.limitType==="L"&&i.size===this.query.limit?i.first():null;if(e.inorderTraversal((c,h)=>{const d=i.get(c),f=yp(this.query,h)?h:null,p=!!d&&this.mutatedKeys.has(d.key),m=!!f&&(f.hasLocalMutations||this.mutatedKeys.has(f.key)&&f.hasCommittedMutations);let w=!1;d&&f?d.data.isEqual(f.data)?p!==m&&(r.track({type:3,doc:f}),w=!0):this.Pa(d,f)||(r.track({type:2,doc:f}),w=!0,(l&&this.aa(f,l)>0||u&&this.aa(f,u)<0)&&(a=!0)):!d&&f?(r.track({type:0,doc:f}),w=!0):d&&!f&&(r.track({type:1,doc:d}),w=!0,(l||u)&&(a=!0)),w&&(f?(o=o.add(f),s=m?s.add(c):s.delete(c)):(o=o.delete(c),s=s.delete(c)))}),this.query.limit!==null)for(;o.size>this.query.limit;){const c=this.query.limitType==="F"?o.last():o.first();o=o.delete(c.key),s=s.delete(c.key),r.track({type:1,doc:c})}return{ua:o,ha:r,Xi:a,mutatedKeys:s}}Pa(e,n){return e.hasLocalMutations&&n.hasCommittedMutations&&!n.hasLocalMutations}applyChanges(e,n,r){const i=this.ua;this.ua=e.ua,this.mutatedKeys=e.mutatedKeys;const s=e.ha.k_();s.sort((u,c)=>function(d,f){const p=m=>{switch(m){case 0:return 1;case 2:case 3:return 2;case 1:return 0;default:return se()}};return p(d)-p(f)}(u.type,c.type)||this.aa(u.doc,c.doc)),this.Ia(r);const o=n?this.Ta():[],a=this._a.size===0&&this.current?1:0,l=a!==this.oa;return this.oa=a,s.length!==0||l?{snapshot:new Ma(this.query,e.ua,i,s,e.mutatedKeys,a===0,l,!1,!!r&&r.resumeToken.approximateByteSize()>0),Ea:o}:{Ea:o}}K_(e){return this.current&&e==="Offline"?(this.current=!1,this.applyChanges({ua:this.ua,ha:new $b,mutatedKeys:this.mutatedKeys,Xi:!1},!1)):{Ea:[]}}da(e){return!this.sa.has(e)&&!!this.ua.has(e)&&!this.ua.get(e).hasLocalMutations}Ia(e){e&&(e.addedDocuments.forEach(n=>this.sa=this.sa.add(n)),e.modifiedDocuments.forEach(n=>{}),e.removedDocuments.forEach(n=>this.sa=this.sa.delete(n)),this.current=e.current)}Ta(){if(!this.current)return[];const e=this._a;this._a=pe(),this.ua.forEach(r=>{this.da(r.key)&&(this._a=this._a.add(r.key))});const n=[];return e.forEach(r=>{this._a.has(r)||n.push(new uA(r))}),this._a.forEach(r=>{e.has(r)||n.push(new lA(r))}),n}Aa(e){this.sa=e.hs,this._a=pe();const n=this.la(e.documents);return this.applyChanges(n,!0)}Ra(){return Ma.fromInitialDocuments(this.query,this.ua,this.mutatedKeys,this.oa===0,this.hasCachedResults)}}class gB{constructor(e,n,r){this.query=e,this.targetId=n,this.view=r}}class yB{constructor(e){this.key=e,this.Va=!1}}class vB{constructor(e,n,r,i,s,o){this.localStore=e,this.remoteStore=n,this.eventManager=r,this.sharedClientState=i,this.currentUser=s,this.maxConcurrentLimboResolutions=o,this.ma={},this.fa=new Xa(a=>SP(a),gp),this.ga=new Map,this.pa=new Set,this.ya=new Qe(ee.comparator),this.wa=new Map,this.Sa=new S_,this.ba={},this.Da=new Map,this.Ca=Ra.Bn(),this.onlineState="Unknown",this.va=void 0}get isPrimaryClient(){return this.va===!0}}async function _B(t,e){const n=PB(t);let r,i;const s=n.fa.get(e);if(s)r=s.targetId,n.sharedClientState.addLocalQueryTarget(r),i=s.view.Ra();else{const o=await B9(n.localStore,Lr(e)),a=n.sharedClientState.addLocalQueryTarget(o.targetId);r=o.targetId,i=await wB(n,e,r,a==="current",o.resumeToken),n.isPrimaryClient&&JP(n.remoteStore,o)}return i}async function wB(t,e,n,r,i){t.Fa=(h,d,f)=>async function(m,w,g,y){let v=w.view.la(g);v.Xi&&(v=await Mb(m.localStore,w.query,!1).then(({documents:b})=>w.view.la(b,v)));const _=y&&y.targetChanges.get(w.targetId),x=w.view.applyChanges(v,m.isPrimaryClient,_);return Fb(m,w.targetId,x.Ea),x.snapshot}(t,h,d,f);const s=await Mb(t.localStore,e,!0),o=new mB(e,s.hs),a=o.la(s.documents),l=xc.createSynthesizedTargetChangeForCurrentChange(n,r&&t.onlineState!=="Offline",i),u=o.applyChanges(a,t.isPrimaryClient,l);Fb(t,n,u.Ea);const c=new gB(e,n,o);return t.fa.set(e,c),t.ga.has(n)?t.ga.get(n).push(e):t.ga.set(n,[e]),u.snapshot}async function xB(t,e){const n=he(t),r=n.fa.get(e),i=n.ga.get(r.targetId);if(i.length>1)return n.ga.set(r.targetId,i.filter(s=>!gp(s,e))),void n.fa.delete(e);n.isPrimaryClient?(n.sharedClientState.removeLocalQueryTarget(r.targetId),n.sharedClientState.isActiveQueryTarget(r.targetId)||await Wy(n.localStore,r.targetId,!1).then(()=>{n.sharedClientState.clearQueryState(r.targetId),ZP(n.remoteStore,r.targetId),qy(n,r.targetId)}).catch(yc)):(qy(n,r.targetId),await Wy(n.localStore,r.targetId,!0))}async function bB(t,e,n){const r=AB(t);try{const i=await function(o,a){const l=he(o),u=ft.now(),c=a.reduce((f,p)=>f.add(p.key),pe());let h,d;return l.persistence.runTransaction("Locally write mutations","readwrite",f=>{let p=yi(),m=pe();return l.os.getEntries(f,c).next(w=>{p=w,p.forEach((g,y)=>{y.isValidDocument()||(m=m.add(g))})}).next(()=>l.localDocuments.getOverlayedDocuments(f,p)).next(w=>{h=w;const g=[];for(const y of a){const v=Kj(y,h.get(y.key).overlayedDocument);v!=null&&g.push(new co(y.key,v,yP(v.value.mapValue),oi.exists(!0)))}return l.mutationQueue.addMutationBatch(f,u,g,a)}).next(w=>{d=w;const g=w.applyToLocalDocumentSet(h,m);return l.documentOverlayCache.saveOverlays(f,w.batchId,g)})}).then(()=>({batchId:d.batchId,changes:IP(h)}))}(r.localStore,e);r.sharedClientState.addPendingMutation(i.batchId),function(o,a,l){let u=o.ba[o.currentUser.toKey()];u||(u=new Qe(Pe)),u=u.insert(a,l),o.ba[o.currentUser.toKey()]=u}(r,i.batchId,n),await Ec(r,i.changes),await Ep(r.remoteStore)}catch(i){const s=M_(i,"Failed to persist write");n.reject(s)}}async function cA(t,e){const n=he(t);try{const r=await z9(n.localStore,e);e.targetChanges.forEach((i,s)=>{const o=n.wa.get(s);o&&(Ue(i.addedDocuments.size+i.modifiedDocuments.size+i.removedDocuments.size<=1),i.addedDocuments.size>0?o.Va=!0:i.modifiedDocuments.size>0?Ue(o.Va):i.removedDocuments.size>0&&(Ue(o.Va),o.Va=!1))}),await Ec(n,r,e)}catch(r){await yc(r)}}function Lb(t,e,n){const r=he(t);if(r.isPrimaryClient&&n===0||!r.isPrimaryClient&&n===1){const i=[];r.fa.forEach((s,o)=>{const a=o.view.K_(e);a.snapshot&&i.push(a.snapshot)}),function(o,a){const l=he(o);l.onlineState=a;let u=!1;l.queries.forEach((c,h)=>{for(const d of h.listeners)d.K_(a)&&(u=!0)}),u&&O_(l)}(r.eventManager,e),i.length&&r.ma.u_(i),r.onlineState=e,r.isPrimaryClient&&r.sharedClientState.setOnlineState(e)}}async function EB(t,e,n){const r=he(t);r.sharedClientState.updateQueryState(e,"rejected",n);const i=r.wa.get(e),s=i&&i.key;if(s){let o=new Qe(ee.comparator);o=o.insert(s,zt.newNoDocument(s,ae.min()));const a=pe().add(s),l=new wp(ae.min(),new Map,new Qe(Pe),o,a);await cA(r,l),r.ya=r.ya.remove(s),r.wa.delete(e),D_(r)}else await Wy(r.localStore,e,!1).then(()=>qy(r,e,n)).catch(yc)}async function TB(t,e){const n=he(t),r=e.batch.batchId;try{const i=await V9(n.localStore,e);dA(n,r,null),hA(n,r),n.sharedClientState.updateMutationState(r,"acknowledged"),await Ec(n,i)}catch(i){await yc(i)}}async function SB(t,e,n){const r=he(t);try{const i=await function(o,a){const l=he(o);return l.persistence.runTransaction("Reject batch","readwrite-primary",u=>{let c;return l.mutationQueue.lookupMutationBatch(u,a).next(h=>(Ue(h!==null),c=h.keys(),l.mutationQueue.removeMutationBatch(u,h))).next(()=>l.mutationQueue.performConsistencyCheck(u)).next(()=>l.documentOverlayCache.removeOverlaysForBatchId(u,c,a)).next(()=>l.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(u,c)).next(()=>l.localDocuments.getDocuments(u,c))})}(r.localStore,e);dA(r,e,n),hA(r,e),r.sharedClientState.updateMutationState(e,"rejected",n),await Ec(r,i)}catch(i){await yc(i)}}function hA(t,e){(t.Da.get(e)||[]).forEach(n=>{n.resolve()}),t.Da.delete(e)}function dA(t,e,n){const r=he(t);let i=r.ba[r.currentUser.toKey()];if(i){const s=i.get(e);s&&(n?s.reject(n):s.resolve(),i=i.remove(e)),r.ba[r.currentUser.toKey()]=i}}function qy(t,e,n=null){t.sharedClientState.removeLocalQueryTarget(e);for(const r of t.ga.get(e))t.fa.delete(r),n&&t.ma.Ma(r,n);t.ga.delete(e),t.isPrimaryClient&&t.Sa.Vr(e).forEach(r=>{t.Sa.containsKey(r)||fA(t,r)})}function fA(t,e){t.pa.delete(e.path.canonicalString());const n=t.ya.get(e);n!==null&&(ZP(t.remoteStore,n),t.ya=t.ya.remove(e),t.wa.delete(n),D_(t))}function Fb(t,e,n){for(const r of n)r instanceof lA?(t.Sa.addReference(r.key,e),kB(t,r)):r instanceof uA?(Z("SyncEngine","Document no longer in limbo: "+r.key),t.Sa.removeReference(r.key,e),t.Sa.containsKey(r.key)||fA(t,r.key)):se()}function kB(t,e){const n=e.key,r=n.path.canonicalString();t.ya.get(n)||t.pa.has(r)||(Z("SyncEngine","New document in limbo: "+n),t.pa.add(r),D_(t))}function D_(t){for(;t.pa.size>0&&t.ya.size{o.push(r.Fa(l,e,n).then(u=>{if((u||n)&&r.isPrimaryClient&&r.sharedClientState.updateQueryState(l.targetId,u!=null&&u.fromCache?"not-current":"current"),u){i.push(u);const c=C_.Ki(l.targetId,u);s.push(c)}}))}),await Promise.all(o),r.ma.u_(i),await async function(l,u){const c=he(l);try{await c.persistence.runTransaction("notifyLocalViewChanges","readwrite",h=>j.forEach(u,d=>j.forEach(d.qi,f=>c.persistence.referenceDelegate.addReference(h,d.targetId,f)).next(()=>j.forEach(d.Qi,f=>c.persistence.referenceDelegate.removeReference(h,d.targetId,f)))))}catch(h){if(!vc(h))throw h;Z("LocalStore","Failed to update sequence numbers: "+h)}for(const h of u){const d=h.targetId;if(!h.fromCache){const f=c.ns.get(d),p=f.snapshotVersion,m=f.withLastLimboFreeSnapshotVersion(p);c.ns=c.ns.insert(d,m)}}}(r.localStore,s))}async function CB(t,e){const n=he(t);if(!n.currentUser.isEqual(e)){Z("SyncEngine","User change. New user:",e.toKey());const r=await KP(n.localStore,e);n.currentUser=e,function(s,o){s.Da.forEach(a=>{a.forEach(l=>{l.reject(new J(V.CANCELLED,o))})}),s.Da.clear()}(n,"'waitForPendingWrites' promise is rejected due to a user change."),n.sharedClientState.handleUserChange(e,r.removedBatchIds,r.addedBatchIds),await Ec(n,r.us)}}function IB(t,e){const n=he(t),r=n.wa.get(e);if(r&&r.Va)return pe().add(r.key);{let i=pe();const s=n.ga.get(e);if(!s)return i;for(const o of s){const a=n.fa.get(o);i=i.unionWith(a.view.ca)}return i}}function PB(t){const e=he(t);return e.remoteStore.remoteSyncer.applyRemoteEvent=cA.bind(null,e),e.remoteStore.remoteSyncer.getRemoteKeysForTarget=IB.bind(null,e),e.remoteStore.remoteSyncer.rejectListen=EB.bind(null,e),e.ma.u_=fB.bind(null,e.eventManager),e.ma.Ma=pB.bind(null,e.eventManager),e}function AB(t){const e=he(t);return e.remoteStore.remoteSyncer.applySuccessfulWrite=TB.bind(null,e),e.remoteStore.remoteSyncer.rejectFailedWrite=SB.bind(null,e),e}class Vb{constructor(){this.synchronizeTabs=!1}async initialize(e){this.serializer=xp(e.databaseInfo.databaseId),this.sharedClientState=this.createSharedClientState(e),this.persistence=this.createPersistence(e),await this.persistence.start(),this.localStore=this.createLocalStore(e),this.gcScheduler=this.createGarbageCollectionScheduler(e,this.localStore),this.indexBackfillerScheduler=this.createIndexBackfillerScheduler(e,this.localStore)}createGarbageCollectionScheduler(e,n){return null}createIndexBackfillerScheduler(e,n){return null}createLocalStore(e){return F9(this.persistence,new $9,e.initialUser,this.serializer)}createPersistence(e){return new O9(k_.Hr,this.serializer)}createSharedClientState(e){return new W9}async terminate(){this.gcScheduler&&this.gcScheduler.stop(),await this.sharedClientState.shutdown(),await this.persistence.shutdown()}}class RB{async initialize(e,n){this.localStore||(this.localStore=e.localStore,this.sharedClientState=e.sharedClientState,this.datastore=this.createDatastore(n),this.remoteStore=this.createRemoteStore(n),this.eventManager=this.createEventManager(n),this.syncEngine=this.createSyncEngine(n,!e.synchronizeTabs),this.sharedClientState.onlineStateHandler=r=>Lb(this.syncEngine,r,1),this.remoteStore.remoteSyncer.handleCredentialChange=CB.bind(null,this.syncEngine),await cB(this.remoteStore,this.syncEngine.isPrimaryClient))}createEventManager(e){return function(){return new dB}()}createDatastore(e){const n=xp(e.databaseInfo.databaseId),r=function(s){return new Q9(s)}(e.databaseInfo);return function(s,o,a,l){return new J9(s,o,a,l)}(e.authCredentials,e.appCheckCredentials,r,n)}createRemoteStore(e){return function(r,i,s,o,a){return new eB(r,i,s,o,a)}(this.localStore,this.datastore,e.asyncQueue,n=>Lb(this.syncEngine,n,0),function(){return Db.C()?new Db:new q9}())}createSyncEngine(e,n){return function(i,s,o,a,l,u,c){const h=new vB(i,s,o,a,l,u);return c&&(h.va=!0),h}(this.localStore,this.remoteStore,this.eventManager,this.sharedClientState,e.initialUser,e.maxConcurrentLimboResolutions,n)}terminate(){return async function(n){const r=he(n);Z("RemoteStore","RemoteStore shutting down."),r.v_.add(5),await bc(r),r.M_.shutdown(),r.x_.set("Unknown")}(this.remoteStore)}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *//** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class pA{constructor(e){this.observer=e,this.muted=!1}next(e){this.observer.next&&this.Na(this.observer.next,e)}error(e){this.observer.error?this.Na(this.observer.error,e):gi("Uncaught Error in snapshot listener:",e.toString())}Ba(){this.muted=!0}Na(e,n){this.muted||setTimeout(()=>{this.muted||e(n)},0)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class MB{constructor(e,n,r,i){this.authCredentials=e,this.appCheckCredentials=n,this.asyncQueue=r,this.databaseInfo=i,this.user=Ft.UNAUTHENTICATED,this.clientId=pP.V(),this.authCredentialListener=()=>Promise.resolve(),this.appCheckCredentialListener=()=>Promise.resolve(),this.authCredentials.start(r,async s=>{Z("FirestoreClient","Received user=",s.uid),await this.authCredentialListener(s),this.user=s}),this.appCheckCredentials.start(r,s=>(Z("FirestoreClient","Received new app check token=",s),this.appCheckCredentialListener(s,this.user)))}async getConfiguration(){return{asyncQueue:this.asyncQueue,databaseInfo:this.databaseInfo,clientId:this.clientId,authCredentials:this.authCredentials,appCheckCredentials:this.appCheckCredentials,initialUser:this.user,maxConcurrentLimboResolutions:100}}setCredentialChangeListener(e){this.authCredentialListener=e}setAppCheckTokenChangeListener(e){this.appCheckCredentialListener=e}verifyNotTerminated(){if(this.asyncQueue.isShuttingDown)throw new J(V.FAILED_PRECONDITION,"The client has already been terminated.")}terminate(){this.asyncQueue.enterRestrictedMode();const e=new si;return this.asyncQueue.enqueueAndForgetEvenWhileRestricted(async()=>{try{this._onlineComponents&&await this._onlineComponents.terminate(),this._offlineComponents&&await this._offlineComponents.terminate(),this.authCredentials.shutdown(),this.appCheckCredentials.shutdown(),e.resolve()}catch(n){const r=M_(n,"Failed to shutdown persistence");e.reject(r)}}),e.promise}}async function Dm(t,e){t.asyncQueue.verifyOperationInProgress(),Z("FirestoreClient","Initializing OfflineComponentProvider");const n=await t.getConfiguration();await e.initialize(n);let r=n.initialUser;t.setCredentialChangeListener(async i=>{r.isEqual(i)||(await KP(e.localStore,i),r=i)}),e.persistence.setDatabaseDeletedListener(()=>t.terminate()),t._offlineComponents=e}async function zb(t,e){t.asyncQueue.verifyOperationInProgress();const n=await DB(t);Z("FirestoreClient","Initializing OnlineComponentProvider");const r=await t.getConfiguration();await e.initialize(n,r),t.setCredentialChangeListener(i=>Nb(e.remoteStore,i)),t.setAppCheckTokenChangeListener((i,s)=>Nb(e.remoteStore,s)),t._onlineComponents=e}function OB(t){return t.name==="FirebaseError"?t.code===V.FAILED_PRECONDITION||t.code===V.UNIMPLEMENTED:!(typeof DOMException<"u"&&t instanceof DOMException)||t.code===22||t.code===20||t.code===11}async function DB(t){if(!t._offlineComponents)if(t._uninitializedComponentsProvider){Z("FirestoreClient","Using user provided OfflineComponentProvider");try{await Dm(t,t._uninitializedComponentsProvider._offline)}catch(e){const n=e;if(!OB(n))throw n;Ca("Error using user provided cache. Falling back to memory cache: "+n),await Dm(t,new Vb)}}else Z("FirestoreClient","Using default OfflineComponentProvider"),await Dm(t,new Vb);return t._offlineComponents}async function mA(t){return t._onlineComponents||(t._uninitializedComponentsProvider?(Z("FirestoreClient","Using user provided OnlineComponentProvider"),await zb(t,t._uninitializedComponentsProvider._online)):(Z("FirestoreClient","Using default OnlineComponentProvider"),await zb(t,new RB))),t._onlineComponents}function NB(t){return mA(t).then(e=>e.syncEngine)}async function gA(t){const e=await mA(t),n=e.eventManager;return n.onListen=_B.bind(null,e.syncEngine),n.onUnlisten=xB.bind(null,e.syncEngine),n}function $B(t,e,n={}){const r=new si;return t.asyncQueue.enqueueAndForget(async()=>function(s,o,a,l,u){const c=new pA({next:d=>{o.enqueueAndForget(()=>oA(s,h));const f=d.docs.has(a);!f&&d.fromCache?u.reject(new J(V.UNAVAILABLE,"Failed to get document because the client is offline.")):f&&d.fromCache&&l&&l.source==="server"?u.reject(new J(V.UNAVAILABLE,'Failed to get document from server. (However, this document does exist in the local cache. Run again without setting source to "server" to retrieve the cached document.)')):u.resolve(d)},error:d=>u.reject(d)}),h=new aA(x_(a.path),c,{includeMetadataChanges:!0,Y_:!0});return sA(s,h)}(await gA(t),t.asyncQueue,e,n,r)),r.promise}function LB(t,e,n={}){const r=new si;return t.asyncQueue.enqueueAndForget(async()=>function(s,o,a,l,u){const c=new pA({next:d=>{o.enqueueAndForget(()=>oA(s,h)),d.fromCache&&l.source==="server"?u.reject(new J(V.UNAVAILABLE,'Failed to get documents from server. (However, these documents may exist in the local cache. Run again without setting source to "server" to retrieve the cached documents.)')):u.resolve(d)},error:d=>u.reject(d)}),h=new aA(a,c,{includeMetadataChanges:!0,Y_:!0});return sA(s,h)}(await gA(t),t.asyncQueue,e,n,r)),r.promise}/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function yA(t){const e={};return t.timeoutSeconds!==void 0&&(e.timeoutSeconds=t.timeoutSeconds),e}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const Ub=new Map;/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function vA(t,e,n){if(!n)throw new J(V.INVALID_ARGUMENT,`Function ${t}() cannot be called with an empty ${e}.`)}function FB(t,e,n,r){if(e===!0&&r===!0)throw new J(V.INVALID_ARGUMENT,`${t} and ${n} cannot be used together.`)}function jb(t){if(!ee.isDocumentKey(t))throw new J(V.INVALID_ARGUMENT,`Invalid document reference. Document references must have an even number of segments, but ${t} has ${t.length}.`)}function Bb(t){if(ee.isDocumentKey(t))throw new J(V.INVALID_ARGUMENT,`Invalid collection reference. Collection references must have an odd number of segments, but ${t} has ${t.length}.`)}function Tp(t){if(t===void 0)return"undefined";if(t===null)return"null";if(typeof t=="string")return t.length>20&&(t=`${t.substring(0,20)}...`),JSON.stringify(t);if(typeof t=="number"||typeof t=="boolean")return""+t;if(typeof t=="object"){if(t instanceof Array)return"an array";{const e=function(r){return r.constructor?r.constructor.name:null}(t);return e?`a custom ${e} object`:"an object"}}return typeof t=="function"?"a function":se()}function no(t,e){if("_delegate"in t&&(t=t._delegate),!(t instanceof e)){if(e.name===t.constructor.name)throw new J(V.INVALID_ARGUMENT,"Type does not match the expected instance. Did you pass a reference from a different Firestore SDK?");{const n=Tp(t);throw new J(V.INVALID_ARGUMENT,`Expected type '${e.name}', but it was: ${n}`)}}return t}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Hb{constructor(e){var n,r;if(e.host===void 0){if(e.ssl!==void 0)throw new J(V.INVALID_ARGUMENT,"Can't provide ssl option if host option is not set");this.host="firestore.googleapis.com",this.ssl=!0}else this.host=e.host,this.ssl=(n=e.ssl)===null||n===void 0||n;if(this.credentials=e.credentials,this.ignoreUndefinedProperties=!!e.ignoreUndefinedProperties,this.localCache=e.localCache,e.cacheSizeBytes===void 0)this.cacheSizeBytes=41943040;else{if(e.cacheSizeBytes!==-1&&e.cacheSizeBytes<1048576)throw new J(V.INVALID_ARGUMENT,"cacheSizeBytes must be at least 1048576");this.cacheSizeBytes=e.cacheSizeBytes}FB("experimentalForceLongPolling",e.experimentalForceLongPolling,"experimentalAutoDetectLongPolling",e.experimentalAutoDetectLongPolling),this.experimentalForceLongPolling=!!e.experimentalForceLongPolling,this.experimentalForceLongPolling?this.experimentalAutoDetectLongPolling=!1:e.experimentalAutoDetectLongPolling===void 0?this.experimentalAutoDetectLongPolling=!0:this.experimentalAutoDetectLongPolling=!!e.experimentalAutoDetectLongPolling,this.experimentalLongPollingOptions=yA((r=e.experimentalLongPollingOptions)!==null&&r!==void 0?r:{}),function(s){if(s.timeoutSeconds!==void 0){if(isNaN(s.timeoutSeconds))throw new J(V.INVALID_ARGUMENT,`invalid long polling timeout: ${s.timeoutSeconds} (must not be NaN)`);if(s.timeoutSeconds<5)throw new J(V.INVALID_ARGUMENT,`invalid long polling timeout: ${s.timeoutSeconds} (minimum allowed value is 5)`);if(s.timeoutSeconds>30)throw new J(V.INVALID_ARGUMENT,`invalid long polling timeout: ${s.timeoutSeconds} (maximum allowed value is 30)`)}}(this.experimentalLongPollingOptions),this.useFetchStreams=!!e.useFetchStreams}isEqual(e){return this.host===e.host&&this.ssl===e.ssl&&this.credentials===e.credentials&&this.cacheSizeBytes===e.cacheSizeBytes&&this.experimentalForceLongPolling===e.experimentalForceLongPolling&&this.experimentalAutoDetectLongPolling===e.experimentalAutoDetectLongPolling&&function(r,i){return r.timeoutSeconds===i.timeoutSeconds}(this.experimentalLongPollingOptions,e.experimentalLongPollingOptions)&&this.ignoreUndefinedProperties===e.ignoreUndefinedProperties&&this.useFetchStreams===e.useFetchStreams}}class Sp{constructor(e,n,r,i){this._authCredentials=e,this._appCheckCredentials=n,this._databaseId=r,this._app=i,this.type="firestore-lite",this._persistenceKey="(lite)",this._settings=new Hb({}),this._settingsFrozen=!1}get app(){if(!this._app)throw new J(V.FAILED_PRECONDITION,"Firestore was not initialized using the Firebase SDK. 'app' is not available");return this._app}get _initialized(){return this._settingsFrozen}get _terminated(){return this._terminateTask!==void 0}_setSettings(e){if(this._settingsFrozen)throw new J(V.FAILED_PRECONDITION,"Firestore has already been started and its settings can no longer be changed. You can only modify settings before calling any other methods on a Firestore object.");this._settings=new Hb(e),e.credentials!==void 0&&(this._authCredentials=function(r){if(!r)return new sj;switch(r.type){case"firstParty":return new uj(r.sessionIndex||"0",r.iamToken||null,r.authTokenFactory||null);case"provider":return r.client;default:throw new J(V.INVALID_ARGUMENT,"makeAuthCredentialsProvider failed due to invalid credential type")}}(e.credentials))}_getSettings(){return this._settings}_freezeSettings(){return this._settingsFrozen=!0,this._settings}_delete(){return this._terminateTask||(this._terminateTask=this._terminate()),this._terminateTask}toJSON(){return{app:this._app,databaseId:this._databaseId,settings:this._settings}}_terminate(){return function(n){const r=Ub.get(n);r&&(Z("ComponentProvider","Removing Datastore"),Ub.delete(n),r.terminate())}(this),Promise.resolve()}}function VB(t,e,n,r={}){var i;const s=(t=no(t,Sp))._getSettings(),o=`${e}:${n}`;if(s.host!=="firestore.googleapis.com"&&s.host!==o&&Ca("Host has been set in both settings() and connectFirestoreEmulator(), emulator host will be used."),t._setSettings(Object.assign(Object.assign({},s),{host:o,ssl:!1})),r.mockUserToken){let a,l;if(typeof r.mockUserToken=="string")a=r.mockUserToken,l=Ft.MOCK_USER;else{a=XO(r.mockUserToken,(i=t._app)===null||i===void 0?void 0:i.options.projectId);const u=r.mockUserToken.sub||r.mockUserToken.user_id;if(!u)throw new J(V.INVALID_ARGUMENT,"mockUserToken must contain 'sub' or 'user_id' field!");l=new Ft(u)}t._authCredentials=new oj(new fP(a,l))}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Za{constructor(e,n,r){this.converter=n,this._query=r,this.type="query",this.firestore=e}withConverter(e){return new Za(this.firestore,e,this._query)}}class fn{constructor(e,n,r){this.converter=n,this._key=r,this.type="document",this.firestore=e}get _path(){return this._key.path}get id(){return this._key.path.lastSegment()}get path(){return this._key.path.canonicalString()}get parent(){return new ts(this.firestore,this.converter,this._key.path.popLast())}withConverter(e){return new fn(this.firestore,e,this._key)}}class ts extends Za{constructor(e,n,r){super(e,n,x_(r)),this._path=r,this.type="collection"}get id(){return this._query.path.lastSegment()}get path(){return this._query.path.canonicalString()}get parent(){const e=this._path.popLast();return e.isEmpty()?null:new fn(this.firestore,null,new ee(e))}withConverter(e){return new ts(this.firestore,e,this._path)}}function _A(t,e,...n){if(t=pn(t),vA("collection","path",e),t instanceof Sp){const r=Fe.fromString(e,...n);return Bb(r),new ts(t,null,r)}{if(!(t instanceof fn||t instanceof ts))throw new J(V.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");const r=t._path.child(Fe.fromString(e,...n));return Bb(r),new ts(t.firestore,null,r)}}function wA(t,e,...n){if(t=pn(t),arguments.length===1&&(e=pP.V()),vA("doc","path",e),t instanceof Sp){const r=Fe.fromString(e,...n);return jb(r),new fn(t,null,new ee(r))}{if(!(t instanceof fn||t instanceof ts))throw new J(V.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");const r=t._path.child(Fe.fromString(e,...n));return jb(r),new fn(t.firestore,t instanceof ts?t.converter:null,new ee(r))}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class zB{constructor(){this.Ya=Promise.resolve(),this.Za=[],this.Xa=!1,this.eu=[],this.tu=null,this.nu=!1,this.ru=!1,this.iu=[],this.jo=new YP(this,"async_queue_retry"),this.su=()=>{const n=Om();n&&Z("AsyncQueue","Visibility state changed to "+n.visibilityState),this.jo.Ko()};const e=Om();e&&typeof e.addEventListener=="function"&&e.addEventListener("visibilitychange",this.su)}get isShuttingDown(){return this.Xa}enqueueAndForget(e){this.enqueue(e)}enqueueAndForgetEvenWhileRestricted(e){this.ou(),this._u(e)}enterRestrictedMode(e){if(!this.Xa){this.Xa=!0,this.ru=e||!1;const n=Om();n&&typeof n.removeEventListener=="function"&&n.removeEventListener("visibilitychange",this.su)}}enqueue(e){if(this.ou(),this.Xa)return new Promise(()=>{});const n=new si;return this._u(()=>this.Xa&&this.ru?Promise.resolve():(e().then(n.resolve,n.reject),n.promise)).then(()=>n.promise)}enqueueRetryable(e){this.enqueueAndForget(()=>(this.Za.push(e),this.au()))}async au(){if(this.Za.length!==0){try{await this.Za[0](),this.Za.shift(),this.jo.reset()}catch(e){if(!vc(e))throw e;Z("AsyncQueue","Operation failed with retryable error: "+e)}this.Za.length>0&&this.jo.qo(()=>this.au())}}_u(e){const n=this.Ya.then(()=>(this.nu=!0,e().catch(r=>{this.tu=r,this.nu=!1;const i=function(o){let a=o.message||"";return o.stack&&(a=o.stack.includes(o.message)?o.stack:o.message+` +`+o.stack),a}(r);throw gi("INTERNAL UNHANDLED ERROR: ",i),r}).then(r=>(this.nu=!1,r))));return this.Ya=n,n}enqueueAfterDelay(e,n,r){this.ou(),this.iu.indexOf(e)>-1&&(n=0);const i=R_.createAndSchedule(this,e,n,r,s=>this.uu(s));return this.eu.push(i),i}ou(){this.tu&&se()}verifyOperationInProgress(){}async cu(){let e;do e=this.Ya,await e;while(e!==this.Ya)}lu(e){for(const n of this.eu)if(n.timerId===e)return!0;return!1}hu(e){return this.cu().then(()=>{this.eu.sort((n,r)=>n.targetTimeMs-r.targetTimeMs);for(const n of this.eu)if(n.skipDelay(),e!=="all"&&n.timerId===e)break;return this.cu()})}Pu(e){this.iu.push(e)}uu(e){const n=this.eu.indexOf(e);this.eu.splice(n,1)}}class kp extends Sp{constructor(e,n,r,i){super(e,n,r,i),this.type="firestore",this._queue=function(){return new zB}(),this._persistenceKey=(i==null?void 0:i.name)||"[DEFAULT]"}_terminate(){return this._firestoreClient||xA(this),this._firestoreClient.terminate()}}function UB(t,e){const n=typeof t=="object"?t:Mk(),r=typeof t=="string"?t:e||"(default)",i=a0(n,"firestore").getImmediate({identifier:r});if(!i._initialized){const s=QO("firestore");s&&VB(i,...s)}return i}function N_(t){return t._firestoreClient||xA(t),t._firestoreClient.verifyNotTerminated(),t._firestoreClient}function xA(t){var e,n,r;const i=t._freezeSettings(),s=function(a,l,u,c){return new xj(a,l,u,c.host,c.ssl,c.experimentalForceLongPolling,c.experimentalAutoDetectLongPolling,yA(c.experimentalLongPollingOptions),c.useFetchStreams)}(t._databaseId,((e=t._app)===null||e===void 0?void 0:e.options.appId)||"",t._persistenceKey,i);t._firestoreClient=new MB(t._authCredentials,t._appCheckCredentials,t._queue,s),!((n=i.localCache)===null||n===void 0)&&n._offlineComponentProvider&&(!((r=i.localCache)===null||r===void 0)&&r._onlineComponentProvider)&&(t._firestoreClient._uninitializedComponentsProvider={_offlineKind:i.localCache.kind,_offline:i.localCache._offlineComponentProvider,_online:i.localCache._onlineComponentProvider})}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Oa{constructor(e){this._byteString=e}static fromBase64String(e){try{return new Oa(Gt.fromBase64String(e))}catch(n){throw new J(V.INVALID_ARGUMENT,"Failed to construct data from Base64 string: "+n)}}static fromUint8Array(e){return new Oa(Gt.fromUint8Array(e))}toBase64(){return this._byteString.toBase64()}toUint8Array(){return this._byteString.toUint8Array()}toString(){return"Bytes(base64: "+this.toBase64()+")"}isEqual(e){return this._byteString.isEqual(e._byteString)}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Cp{constructor(...e){for(let n=0;n90)throw new J(V.INVALID_ARGUMENT,"Latitude must be a number between -90 and 90, but was: "+e);if(!isFinite(n)||n<-180||n>180)throw new J(V.INVALID_ARGUMENT,"Longitude must be a number between -180 and 180, but was: "+n);this._lat=e,this._long=n}get latitude(){return this._lat}get longitude(){return this._long}isEqual(e){return this._lat===e._lat&&this._long===e._long}toJSON(){return{latitude:this._lat,longitude:this._long}}_compareTo(e){return Pe(this._lat,e._lat)||Pe(this._long,e._long)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const BB=/^__.*__$/;class HB{constructor(e,n,r){this.data=e,this.fieldMask=n,this.fieldTransforms=r}toMutation(e,n){return this.fieldMask!==null?new co(e,this.data,this.fieldMask,n,this.fieldTransforms):new wc(e,this.data,n,this.fieldTransforms)}}function EA(t){switch(t){case 0:case 2:case 1:return!0;case 3:case 4:return!1;default:throw se()}}class L_{constructor(e,n,r,i,s,o){this.settings=e,this.databaseId=n,this.serializer=r,this.ignoreUndefinedProperties=i,s===void 0&&this.Iu(),this.fieldTransforms=s||[],this.fieldMask=o||[]}get path(){return this.settings.path}get Tu(){return this.settings.Tu}Eu(e){return new L_(Object.assign(Object.assign({},this.settings),e),this.databaseId,this.serializer,this.ignoreUndefinedProperties,this.fieldTransforms,this.fieldMask)}du(e){var n;const r=(n=this.path)===null||n===void 0?void 0:n.child(e),i=this.Eu({path:r,Au:!1});return i.Ru(e),i}Vu(e){var n;const r=(n=this.path)===null||n===void 0?void 0:n.child(e),i=this.Eu({path:r,Au:!1});return i.Iu(),i}mu(e){return this.Eu({path:void 0,Au:!0})}fu(e){return Vd(e,this.settings.methodName,this.settings.gu||!1,this.path,this.settings.pu)}contains(e){return this.fieldMask.find(n=>e.isPrefixOf(n))!==void 0||this.fieldTransforms.find(n=>e.isPrefixOf(n.field))!==void 0}Iu(){if(this.path)for(let e=0;el.covers(h.field))}else l=null,u=o.fieldTransforms;return new HB(new Un(a),l,u)}function GB(t,e,n,r=!1){return F_(n,t.yu(r?4:3,e))}function F_(t,e){if(kA(t=pn(t)))return CA("Unsupported field value:",e,t),SA(t,e);if(t instanceof bA)return function(r,i){if(!EA(i.Tu))throw i.fu(`${r._methodName}() can only be used with update() and set()`);if(!i.path)throw i.fu(`${r._methodName}() is not currently supported inside arrays`);const s=r._toFieldTransform(i);s&&i.fieldTransforms.push(s)}(t,e),null;if(t===void 0&&e.ignoreUndefinedProperties)return null;if(e.path&&e.fieldMask.push(e.path),t instanceof Array){if(e.settings.Au&&e.Tu!==4)throw e.fu("Nested arrays are not supported");return function(r,i){const s=[];let o=0;for(const a of r){let l=F_(a,i.mu(o));l==null&&(l={nullValue:"NULL_VALUE"}),s.push(l),o++}return{arrayValue:{values:s}}}(t,e)}return function(r,i){if((r=pn(r))===null)return{nullValue:"NULL_VALUE"};if(typeof r=="number")return jj(i.serializer,r);if(typeof r=="boolean")return{booleanValue:r};if(typeof r=="string")return{stringValue:r};if(r instanceof Date){const s=ft.fromDate(r);return{timestampValue:Ld(i.serializer,s)}}if(r instanceof ft){const s=new ft(r.seconds,1e3*Math.floor(r.nanoseconds/1e3));return{timestampValue:Ld(i.serializer,s)}}if(r instanceof $_)return{geoPointValue:{latitude:r.latitude,longitude:r.longitude}};if(r instanceof Oa)return{bytesValue:jP(i.serializer,r._byteString)};if(r instanceof fn){const s=i.databaseId,o=r.firestore._databaseId;if(!o.isEqual(s))throw i.fu(`Document reference is for database ${o.projectId}/${o.database} but should be for database ${s.projectId}/${s.database}`);return{referenceValue:T_(r.firestore._databaseId||i.databaseId,r._key.path)}}throw i.fu(`Unsupported field value: ${Tp(r)}`)}(t,e)}function SA(t,e){const n={};return mP(t)?e.path&&e.path.length>0&&e.fieldMask.push(e.path):Ya(t,(r,i)=>{const s=F_(i,e.du(r));s!=null&&(n[r]=s)}),{mapValue:{fields:n}}}function kA(t){return!(typeof t!="object"||t===null||t instanceof Array||t instanceof Date||t instanceof ft||t instanceof $_||t instanceof Oa||t instanceof fn||t instanceof bA)}function CA(t,e,n){if(!kA(n)||!function(i){return typeof i=="object"&&i!==null&&(Object.getPrototypeOf(i)===Object.prototype||Object.getPrototypeOf(i)===null)}(n)){const r=Tp(n);throw r==="an object"?e.fu(t+" a custom object"):e.fu(t+" "+r)}}function KB(t,e,n){if((e=pn(e))instanceof Cp)return e._internalPath;if(typeof e=="string")return IA(t,e);throw Vd("Field path arguments must be of type string or ",t,!1,void 0,n)}const QB=new RegExp("[~\\*/\\[\\]]");function IA(t,e,n){if(e.search(QB)>=0)throw Vd(`Invalid field path (${e}). Paths must not contain '~', '*', '/', '[', or ']'`,t,!1,void 0,n);try{return new Cp(...e.split("."))._internalPath}catch{throw Vd(`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`,t,!1,void 0,n)}}function Vd(t,e,n,r,i){const s=r&&!r.isEmpty(),o=i!==void 0;let a=`Function ${e}() called with invalid data`;n&&(a+=" (via `toFirestore()`)"),a+=". ";let l="";return(s||o)&&(l+=" (found",s&&(l+=` in field ${r}`),o&&(l+=` in document ${i}`),l+=")"),new J(V.INVALID_ARGUMENT,a+t+l)}function YB(t,e){return t.some(n=>n.isEqual(e))}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class PA{constructor(e,n,r,i,s){this._firestore=e,this._userDataWriter=n,this._key=r,this._document=i,this._converter=s}get id(){return this._key.path.lastSegment()}get ref(){return new fn(this._firestore,this._converter,this._key)}exists(){return this._document!==null}data(){if(this._document){if(this._converter){const e=new XB(this._firestore,this._userDataWriter,this._key,this._document,null);return this._converter.fromFirestore(e)}return this._userDataWriter.convertValue(this._document.data.value)}}get(e){if(this._document){const n=this._document.data.field(V_("DocumentSnapshot.get",e));if(n!==null)return this._userDataWriter.convertValue(n)}}}class XB extends PA{data(){return super.data()}}function V_(t,e){return typeof e=="string"?IA(t,e):e instanceof Cp?e._internalPath:e._delegate._internalPath}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function JB(t){if(t.limitType==="L"&&t.explicitOrderBy.length===0)throw new J(V.UNIMPLEMENTED,"limitToLast() queries require specifying at least one orderBy() clause")}class z_{}class ZB extends z_{}function e8(t,e,...n){let r=[];e instanceof z_&&r.push(e),r=r.concat(n),function(s){const o=s.filter(l=>l instanceof U_).length,a=s.filter(l=>l instanceof Ip).length;if(o>1||o>0&&a>0)throw new J(V.INVALID_ARGUMENT,"InvalidQuery. When using composite filters, you cannot use more than one filter at the top level. Consider nesting the multiple filters within an `and(...)` statement. For example: change `query(query, where(...), or(...))` to `query(query, and(where(...), or(...)))`.")}(r);for(const i of r)t=i._apply(t);return t}class Ip extends ZB{constructor(e,n,r){super(),this._field=e,this._op=n,this._value=r,this.type="where"}static _create(e,n,r){return new Ip(e,n,r)}_apply(e){const n=this._parse(e);return AA(e._query,n),new Za(e.firestore,e.converter,Vy(e._query,n))}_parse(e){const n=TA(e.firestore);return function(s,o,a,l,u,c,h){let d;if(u.isKeyField()){if(c==="array-contains"||c==="array-contains-any")throw new J(V.INVALID_ARGUMENT,`Invalid Query. You can't perform '${c}' queries on documentId().`);if(c==="in"||c==="not-in"){qb(h,c);const f=[];for(const p of h)f.push(Wb(l,s,p));d={arrayValue:{values:f}}}else d=Wb(l,s,h)}else c!=="in"&&c!=="not-in"&&c!=="array-contains-any"||qb(h,c),d=GB(a,o,h,c==="in"||c==="not-in");return at.create(u,c,d)}(e._query,"where",n,e.firestore._databaseId,this._field,this._op,this._value)}}function t8(t,e,n){const r=e,i=V_("where",t);return Ip._create(i,r,n)}class U_ extends z_{constructor(e,n){super(),this.type=e,this._queryConstraints=n}static _create(e,n){return new U_(e,n)}_parse(e){const n=this._queryConstraints.map(r=>r._parse(e)).filter(r=>r.getFilters().length>0);return n.length===1?n[0]:mr.create(n,this._getOperator())}_apply(e){const n=this._parse(e);return n.getFilters().length===0?e:(function(i,s){let o=i;const a=s.getFlattenedFilters();for(const l of a)AA(o,l),o=Vy(o,l)}(e._query,n),new Za(e.firestore,e.converter,Vy(e._query,n)))}_getQueryConstraints(){return this._queryConstraints}_getOperator(){return this.type==="and"?"and":"or"}}function Wb(t,e,n){if(typeof(n=pn(n))=="string"){if(n==="")throw new J(V.INVALID_ARGUMENT,"Invalid query. When querying with documentId(), you must provide a valid document ID, but it was an empty string.");if(!TP(e)&&n.indexOf("/")!==-1)throw new J(V.INVALID_ARGUMENT,`Invalid query. When querying a collection by documentId(), you must provide a plain document ID, but '${n}' contains a '/' character.`);const r=e.path.child(Fe.fromString(n));if(!ee.isDocumentKey(r))throw new J(V.INVALID_ARGUMENT,`Invalid query. When querying a collection group by documentId(), the value provided must result in a valid document path, but '${r}' is not because it has an odd number of segments (${r.length}).`);return mb(t,new ee(r))}if(n instanceof fn)return mb(t,n._key);throw new J(V.INVALID_ARGUMENT,`Invalid query. When querying with documentId(), you must provide a valid string or a DocumentReference, but it was: ${Tp(n)}.`)}function qb(t,e){if(!Array.isArray(t)||t.length===0)throw new J(V.INVALID_ARGUMENT,`Invalid Query. A non-empty array is required for '${e.toString()}' filters.`)}function AA(t,e){const n=function(i,s){for(const o of i)for(const a of o.getFlattenedFilters())if(s.indexOf(a.op)>=0)return a.op;return null}(t.filters,function(i){switch(i){case"!=":return["!=","not-in"];case"array-contains-any":case"in":return["not-in"];case"not-in":return["array-contains-any","in","not-in","!="];default:return[]}}(e.op));if(n!==null)throw n===e.op?new J(V.INVALID_ARGUMENT,`Invalid query. You cannot use more than one '${e.op.toString()}' filter.`):new J(V.INVALID_ARGUMENT,`Invalid query. You cannot use '${e.op.toString()}' filters with '${n.toString()}' filters.`)}class n8{convertValue(e,n="none"){switch(to(e)){case 0:return null;case 1:return e.booleanValue;case 2:return it(e.integerValue||e.doubleValue);case 3:return this.convertTimestamp(e.timestampValue);case 4:return this.convertServerTimestamp(e,n);case 5:return e.stringValue;case 6:return this.convertBytes(eo(e.bytesValue));case 7:return this.convertReference(e.referenceValue);case 8:return this.convertGeoPoint(e.geoPointValue);case 9:return this.convertArray(e.arrayValue,n);case 10:return this.convertObject(e.mapValue,n);default:throw se()}}convertObject(e,n){return this.convertObjectMap(e.fields,n)}convertObjectMap(e,n="none"){const r={};return Ya(e,(i,s)=>{r[i]=this.convertValue(s,n)}),r}convertGeoPoint(e){return new $_(it(e.latitude),it(e.longitude))}convertArray(e,n){return(e.values||[]).map(r=>this.convertValue(r,n))}convertServerTimestamp(e,n){switch(n){case"previous":const r=y_(e);return r==null?null:this.convertValue(r,n);case"estimate":return this.convertTimestamp(Mu(e));default:return null}}convertTimestamp(e){const n=as(e);return new ft(n.seconds,n.nanos)}convertDocumentKey(e,n){const r=Fe.fromString(e);Ue(GP(r));const i=new Ou(r.get(1),r.get(3)),s=new ee(r.popFirst(5));return i.isEqual(n)||gi(`Document ${s} contains a document reference within a different database (${i.projectId}/${i.database}) which is not supported. It will be treated as a reference in the current database (${n.projectId}/${n.database}) instead.`),s}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function r8(t,e,n){let r;return r=t?n&&(n.merge||n.mergeFields)?t.toFirestore(e,n):t.toFirestore(e):e,r}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Il{constructor(e,n){this.hasPendingWrites=e,this.fromCache=n}isEqual(e){return this.hasPendingWrites===e.hasPendingWrites&&this.fromCache===e.fromCache}}class RA extends PA{constructor(e,n,r,i,s,o){super(e,n,r,i,o),this._firestore=e,this._firestoreImpl=e,this.metadata=s}exists(){return super.exists()}data(e={}){if(this._document){if(this._converter){const n=new $h(this._firestore,this._userDataWriter,this._key,this._document,this.metadata,null);return this._converter.fromFirestore(n,e)}return this._userDataWriter.convertValue(this._document.data.value,e.serverTimestamps)}}get(e,n={}){if(this._document){const r=this._document.data.field(V_("DocumentSnapshot.get",e));if(r!==null)return this._userDataWriter.convertValue(r,n.serverTimestamps)}}}class $h extends RA{data(e={}){return super.data(e)}}class i8{constructor(e,n,r,i){this._firestore=e,this._userDataWriter=n,this._snapshot=i,this.metadata=new Il(i.hasPendingWrites,i.fromCache),this.query=r}get docs(){const e=[];return this.forEach(n=>e.push(n)),e}get size(){return this._snapshot.docs.size}get empty(){return this.size===0}forEach(e,n){this._snapshot.docs.forEach(r=>{e.call(n,new $h(this._firestore,this._userDataWriter,r.key,r,new Il(this._snapshot.mutatedKeys.has(r.key),this._snapshot.fromCache),this.query.converter))})}docChanges(e={}){const n=!!e.includeMetadataChanges;if(n&&this._snapshot.excludesMetadataChanges)throw new J(V.INVALID_ARGUMENT,"To include metadata changes with your document changes, you must also pass { includeMetadataChanges:true } to onSnapshot().");return this._cachedChanges&&this._cachedChangesIncludeMetadataChanges===n||(this._cachedChanges=function(i,s){if(i._snapshot.oldDocs.isEmpty()){let o=0;return i._snapshot.docChanges.map(a=>{const l=new $h(i._firestore,i._userDataWriter,a.doc.key,a.doc,new Il(i._snapshot.mutatedKeys.has(a.doc.key),i._snapshot.fromCache),i.query.converter);return a.doc,{type:"added",doc:l,oldIndex:-1,newIndex:o++}})}{let o=i._snapshot.oldDocs;return i._snapshot.docChanges.filter(a=>s||a.type!==3).map(a=>{const l=new $h(i._firestore,i._userDataWriter,a.doc.key,a.doc,new Il(i._snapshot.mutatedKeys.has(a.doc.key),i._snapshot.fromCache),i.query.converter);let u=-1,c=-1;return a.type!==0&&(u=o.indexOf(a.doc.key),o=o.delete(a.doc.key)),a.type!==1&&(o=o.add(a.doc),c=o.indexOf(a.doc.key)),{type:s8(a.type),doc:l,oldIndex:u,newIndex:c}})}}(this,n),this._cachedChangesIncludeMetadataChanges=n),this._cachedChanges}}function s8(t){switch(t){case 0:return"added";case 2:case 3:return"modified";case 1:return"removed";default:return se()}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function MA(t){t=no(t,fn);const e=no(t.firestore,kp);return $B(N_(e),t._key).then(n=>l8(e,t,n))}class OA extends n8{constructor(e){super(),this.firestore=e}convertBytes(e){return new Oa(e)}convertReference(e){const n=this.convertDocumentKey(e,this.firestore._databaseId);return new fn(this.firestore,null,n)}}function DA(t){t=no(t,Za);const e=no(t.firestore,kp),n=N_(e),r=new OA(e);return JB(t._query),LB(n,t._query).then(i=>new i8(e,r,t,i))}function o8(t,e,n){t=no(t,fn);const r=no(t.firestore,kp),i=r8(t.converter,e,n);return a8(r,[qB(TA(r),"setDoc",t._key,i,t.converter!==null,n).toMutation(t._key,oi.none())])}function a8(t,e){return function(r,i){const s=new si;return r.asyncQueue.enqueueAndForget(async()=>bB(await NB(r),i,s)),s.promise}(N_(t),e)}function l8(t,e,n){const r=n.docs.get(e._key),i=new OA(t);return new RA(t,i,e._key,r,new Il(n.hasPendingWrites,n.fromCache),e.converter)}(function(e,n=!0){(function(i){Qa=i})(Wa),ya(new Ks("firestore",(r,{instanceIdentifier:i,options:s})=>{const o=r.getProvider("app").getImmediate(),a=new kp(new aj(r.getProvider("auth-internal")),new hj(r.getProvider("app-check-internal")),function(u,c){if(!Object.prototype.hasOwnProperty.apply(u.options,["projectId"]))throw new J(V.INVALID_ARGUMENT,'"projectId" not provided in firebase.initializeApp.');return new Ou(u.options.projectId,c)}(o,i),o);return s=Object.assign({useFetchStreams:n},s),a._setSettings(s),a},"PUBLIC").setMultipleInstances(!0)),es(hb,"4.3.0",e),es(hb,"4.3.0","esm2017")})();const u8={apiKey:"AIzaSyAEZWnInWLWU5yqG7Y1NyKkQSon_RRxWNY",authDomain:"hackgt2023.firebaseapp.com",projectId:"hackgt2023",storageBucket:"hackgt2023.appspot.com",messagingSenderId:"192909855910",appId:"1:192909855910:web:f50aa440ac666be3873867"},NA=new Kr;NA.addScope("user:email");const $A=Rk(u8),Gy=yL($A),Pp=UB($A);async function LA(t){const e=e8(_A(Pp,"users"),t8(jB(),"in",t));return(await DA(e)).docs.map(r=>r.data())}async function c8(t){const e=wA(Pp,"users",t.uid),n=await MA(e);return n.exists()?n.data():(await o8(e,{}),{name:t.displayName??"Anonymous",pfp:"https://m.media-amazon.com/images/I/612-e1vHBAL._AC_SL1145_.jpg"})}async function h8(){return(await DA(_A(Pp,"homes"))).docs.map(e=>e.data())}async function d8(t){const e=wA(Pp,"homes",t);return(await MA(e)).data()}var j_={},FA={exports:{}};(function(t){function e(n){return n&&n.__esModule?n:{default:n}}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports})(FA);var f8=FA.exports,Nm={};const p8=y2(o5);var Gb;function m8(){return Gb||(Gb=1,function(t){"use client";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return e.createSvgIcon}});var e=p8}(Nm)),Nm}var g8=f8;Object.defineProperty(j_,"__esModule",{value:!0});var VA=j_.default=void 0,y8=g8(m8()),v8=k,_8=(0,y8.default)((0,v8.jsx)("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close");VA=j_.default=_8;const Ky="DEFAULT_X_AXIS_KEY",Kb="DEFAULT_Y_AXIS_KEY",w8={top:50,bottom:50,left:50,right:50};function Lh(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}function x8(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}function B_(t){let e,n,r;t.length!==2?(e=Lh,n=(a,l)=>Lh(t(a),l),r=(a,l)=>t(a)-l):(e=t===Lh||t===x8?t:b8,n=t,r=t);function i(a,l,u=0,c=a.length){if(u>>1;n(a[h],l)<0?u=h+1:c=h}while(u>>1;n(a[h],l)<=0?u=h+1:c=h}while(uu&&r(a[h-1],l)>-r(a[h],l)?h-1:h}return{left:i,center:o,right:s}}function b8(){return 0}function E8(t){return t===null?NaN:+t}const T8=B_(Lh),S8=T8.right;B_(E8).center;const k8=S8;class Qb extends Map{constructor(e,n=P8){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get(Yb(this,e))}has(e){return super.has(Yb(this,e))}set(e,n){return super.set(C8(this,e),n)}delete(e){return super.delete(I8(this,e))}}function Yb({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function C8({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function I8({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function P8(t){return t!==null&&typeof t=="object"?t.valueOf():t}const A8=Math.sqrt(50),R8=Math.sqrt(10),M8=Math.sqrt(2);function zd(t,e,n){const r=(e-t)/Math.max(0,n),i=Math.floor(Math.log10(r)),s=r/Math.pow(10,i),o=s>=A8?10:s>=R8?5:s>=M8?2:1;let a,l,u;return i<0?(u=Math.pow(10,-i)/o,a=Math.round(t*u),l=Math.round(e*u),a/ue&&--l,u=-u):(u=Math.pow(10,i)*o,a=Math.round(t/u),l=Math.round(e/u),a*ue&&--l),l0))return[];if(t===e)return[t];const r=e=i))return[];const a=s-i+1,l=new Array(a);if(r)if(o<0)for(let u=0;u>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?ih(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?ih(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=N8.exec(t))?new on(e[1],e[2],e[3],1):(e=$8.exec(t))?new on(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=L8.exec(t))?ih(e[1],e[2],e[3],e[4]):(e=F8.exec(t))?ih(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=V8.exec(t))?sE(e[1],e[2]/100,e[3]/100,1):(e=z8.exec(t))?sE(e[1],e[2]/100,e[3]/100,e[4]):Zb.hasOwnProperty(t)?nE(Zb[t]):t==="transparent"?new on(NaN,NaN,NaN,0):null}function nE(t){return new on(t>>16&255,t>>8&255,t&255,1)}function ih(t,e,n,r){return r<=0&&(t=e=n=NaN),new on(t,e,n,r)}function B8(t){return t instanceof Tc||(t=us(t)),t?(t=t.rgb(),new on(t.r,t.g,t.b,t.opacity)):new on}function Jy(t,e,n,r){return arguments.length===1?B8(t):new on(t,e,n,r??1)}function on(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}H_(on,Jy,jA(Tc,{brighter(t){return t=t==null?jd:Math.pow(jd,t),new on(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Lu:Math.pow(Lu,t),new on(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new on(Us(this.r),Us(this.g),Us(this.b),Bd(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:rE,formatHex:rE,formatHex8:H8,formatRgb:iE,toString:iE}));function rE(){return`#${Os(this.r)}${Os(this.g)}${Os(this.b)}`}function H8(){return`#${Os(this.r)}${Os(this.g)}${Os(this.b)}${Os((isNaN(this.opacity)?1:this.opacity)*255)}`}function iE(){const t=Bd(this.opacity);return`${t===1?"rgb(":"rgba("}${Us(this.r)}, ${Us(this.g)}, ${Us(this.b)}${t===1?")":`, ${t})`}`}function Bd(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Us(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Os(t){return t=Us(t),(t<16?"0":"")+t.toString(16)}function sE(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new rr(t,e,n,r)}function BA(t){if(t instanceof rr)return new rr(t.h,t.s,t.l,t.opacity);if(t instanceof Tc||(t=us(t)),!t)return new rr;if(t instanceof rr)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),s=Math.max(e,n,r),o=NaN,a=s-i,l=(s+i)/2;return a?(e===s?o=(n-r)/a+(n0&&l<1?0:o,new rr(o,a,l,t.opacity)}function W8(t,e,n,r){return arguments.length===1?BA(t):new rr(t,e,n,r??1)}function rr(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}H_(rr,W8,jA(Tc,{brighter(t){return t=t==null?jd:Math.pow(jd,t),new rr(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Lu:Math.pow(Lu,t),new rr(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new on($m(t>=240?t-240:t+120,i,r),$m(t,i,r),$m(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new rr(oE(this.h),sh(this.s),sh(this.l),Bd(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Bd(this.opacity);return`${t===1?"hsl(":"hsla("}${oE(this.h)}, ${sh(this.s)*100}%, ${sh(this.l)*100}%${t===1?")":`, ${t})`}`}}));function oE(t){return t=(t||0)%360,t<0?t+360:t}function sh(t){return Math.max(0,Math.min(1,t||0))}function $m(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const W_=t=>()=>t;function q8(t,e){return function(n){return t+n*e}}function G8(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function K8(t){return(t=+t)==1?HA:function(e,n){return n-e?G8(e,n,t):W_(isNaN(e)?n:e)}}function HA(t,e){var n=e-t;return n?q8(t,n):W_(isNaN(t)?e:t)}const aE=function t(e){var n=K8(e);function r(i,s){var o=n((i=Jy(i)).r,(s=Jy(s)).r),a=n(i.g,s.g),l=n(i.b,s.b),u=HA(i.opacity,s.opacity);return function(c){return i.r=o(c),i.g=a(c),i.b=l(c),i.opacity=u(c),i+""}}return r.gamma=t,r}(1);function Q8(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(s){for(i=0;in&&(s=e.slice(n,s),a[o]?a[o]+=s:a[++o]=s),(r=r[0])===(i=i[0])?a[o]?a[o]+=i:a[++o]=i:(a[++o]=null,l.push({i:o,x:Hd(r,i)})),n=Lm.lastIndex;return ne&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function a7(t,e,n){var r=t[0],i=t[1],s=e[0],o=e[1];return i2?l7:a7,l=u=null,h}function h(d){return d==null||isNaN(d=+d)?s:(l||(l=a(t.map(r),e,n)))(r(o(d)))}return h.invert=function(d){return o(i((u||(u=a(e,t.map(r),Hd)))(d)))},h.domain=function(d){return arguments.length?(t=Array.from(d,s7),c()):t.slice()},h.range=function(d){return arguments.length?(e=Array.from(d),c()):e.slice()},h.rangeRound=function(d){return e=Array.from(d),n=r7,c()},h.clamp=function(d){return arguments.length?(o=d?!0:Ar,c()):o!==Ar},h.interpolate=function(d){return arguments.length?(n=d,c()):n},h.unknown=function(d){return arguments.length?(s=d,h):s},function(d,f){return r=d,i=f,c()}}function WA(){return G_()(Ar,Ar)}function u7(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function Wd(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function Da(t){return t=Wd(Math.abs(t)),t?t[1]:NaN}function c7(t,e){return function(n,r){for(var i=n.length,s=[],o=0,a=t[0],l=0;i>0&&a>0&&(l+a+1>r&&(a=Math.max(1,r-l)),s.push(n.substring(i-=a,i+a)),!((l+=a+1)>r));)a=t[o=(o+1)%t.length];return s.reverse().join(e)}}function h7(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var d7=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Vu(t){if(!(e=d7.exec(t)))throw new Error("invalid format: "+t);var e;return new K_({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}Vu.prototype=K_.prototype;function K_(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}K_.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function f7(t){e:for(var e=t.length,n=1,r=-1,i;n0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var qA;function p7(t,e){var n=Wd(t,e);if(!n)return t+"";var r=n[0],i=n[1],s=i-(qA=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return s===o?r:s>o?r+new Array(s-o+1).join("0"):s>0?r.slice(0,s)+"."+r.slice(s):"0."+new Array(1-s).join("0")+Wd(t,Math.max(0,e+s-1))[0]}function uE(t,e){var n=Wd(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const cE={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:u7,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>uE(t*100,e),r:uE,s:p7,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function hE(t){return t}var dE=Array.prototype.map,fE=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function m7(t){var e=t.grouping===void 0||t.thousands===void 0?hE:c7(dE.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",s=t.numerals===void 0?hE:h7(dE.call(t.numerals,String)),o=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"−":t.minus+"",l=t.nan===void 0?"NaN":t.nan+"";function u(h){h=Vu(h);var d=h.fill,f=h.align,p=h.sign,m=h.symbol,w=h.zero,g=h.width,y=h.comma,v=h.precision,_=h.trim,x=h.type;x==="n"?(y=!0,x="g"):cE[x]||(v===void 0&&(v=12),_=!0,x="g"),(w||d==="0"&&f==="=")&&(w=!0,d="0",f="=");var b=m==="$"?n:m==="#"&&/[boxX]/.test(x)?"0"+x.toLowerCase():"",E=m==="$"?r:/[%p]/.test(x)?o:"",C=cE[x],A=/[defgprs%]/.test(x);v=v===void 0?6:/[gprs]/.test(x)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v));function S(P){var M=b,D=E,$,B,F;if(x==="c")D=C(P)+D,P="";else{P=+P;var K=P<0||1/P<0;if(P=isNaN(P)?l:C(Math.abs(P),v),_&&(P=f7(P)),K&&+P==0&&p!=="+"&&(K=!1),M=(K?p==="("?p:a:p==="-"||p==="("?"":p)+M,D=(x==="s"?fE[8+qA/3]:"")+D+(K&&p==="("?")":""),A){for($=-1,B=P.length;++$F||F>57){D=(F===46?i+P.slice($+1):P.slice($))+D,P=P.slice(0,$);break}}}y&&!w&&(P=e(P,1/0));var O=M.length+P.length+D.length,N=O>1)+M+P+D+N.slice(O);break;default:P=N+M+P+D;break}return s(P)}return S.toString=function(){return h+""},S}function c(h,d){var f=u((h=Vu(h),h.type="f",h)),p=Math.max(-8,Math.min(8,Math.floor(Da(d)/3)))*3,m=Math.pow(10,-p),w=fE[8+p/3];return function(g){return f(m*g)+w}}return{format:u,formatPrefix:c}}var oh,Q_,GA;g7({thousands:",",grouping:[3],currency:["$",""]});function g7(t){return oh=m7(t),Q_=oh.format,GA=oh.formatPrefix,oh}function y7(t){return Math.max(0,-Da(Math.abs(t)))}function v7(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Da(e)/3)))*3-Da(Math.abs(t)))}function _7(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Da(e)-Da(t))+1}function w7(t,e,n,r){var i=Xy(t,e,n),s;switch(r=Vu(r??",f"),r.type){case"s":{var o=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(s=v7(i,o))&&(r.precision=s),GA(r,o)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(s=_7(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=s-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(s=y7(i))&&(r.precision=s-(r.type==="%")*2);break}}return Q_(r)}function KA(t){var e=t.domain;return t.ticks=function(n){var r=e();return Qy(r[0],r[r.length-1],n??10)},t.tickFormat=function(n,r){var i=e();return w7(i[0],i[i.length-1],n??10,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,s=r.length-1,o=r[i],a=r[s],l,u,c=10;for(a0;){if(u=Yy(o,a,n),u===l)return r[i]=o,r[s]=a,e(r);if(u>0)o=Math.floor(o/u)*u,a=Math.ceil(a/u)*u;else if(u<0)o=Math.ceil(o*u)/u,a=Math.floor(a*u)/u;else break;l=u}return t},t}function QA(){var t=WA();return t.copy=function(){return Ap(t,QA())},fo.apply(t,arguments),KA(t)}function YA(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],s=t[r],o;return sMath.pow(t,e)}function S7(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),e=>Math.log(e)/t)}function gE(t){return(e,n)=>-t(-e,n)}function k7(t){const e=t(pE,mE),n=e.domain;let r=10,i,s;function o(){return i=S7(r),s=T7(r),n()[0]<0?(i=gE(i),s=gE(s),t(x7,b7)):t(pE,mE),e}return e.base=function(a){return arguments.length?(r=+a,o()):r},e.domain=function(a){return arguments.length?(n(a),o()):n()},e.ticks=a=>{const l=n();let u=l[0],c=l[l.length-1];const h=c0){for(;d<=f;++d)for(p=1;pc)break;g.push(m)}}else for(;d<=f;++d)for(p=r-1;p>=1;--p)if(m=d>0?p/s(-d):p*s(d),!(mc)break;g.push(m)}g.length*2{if(a==null&&(a=10),l==null&&(l=r===10?"s":","),typeof l!="function"&&(!(r%1)&&(l=Vu(l)).precision==null&&(l.trim=!0),l=Q_(l)),a===1/0)return l;const u=Math.max(1,r*a/e.ticks().length);return c=>{let h=c/s(Math.round(i(c)));return h*rn(YA(n(),{floor:a=>s(Math.floor(i(a))),ceil:a=>s(Math.ceil(i(a)))})),e}function XA(){const t=k7(G_()).domain([1,10]);return t.copy=()=>Ap(t,XA()).base(t.base()),fo.apply(t,arguments),t}function yE(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function C7(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function I7(t){return t<0?-t*t:t*t}function P7(t){var e=t(Ar,Ar),n=1;function r(){return n===1?t(Ar,Ar):n===.5?t(C7,I7):t(yE(n),yE(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},KA(e)}function Y_(){var t=P7(G_());return t.copy=function(){return Ap(t,Y_()).exponent(t.exponent())},fo.apply(t,arguments),t}function A7(){return Y_.apply(null,arguments).exponent(.5)}const Fm=new Date,Vm=new Date;function pt(t,e,n,r){function i(s){return t(s=arguments.length===0?new Date:new Date(+s)),s}return i.floor=s=>(t(s=new Date(+s)),s),i.ceil=s=>(t(s=new Date(s-1)),e(s,1),t(s),s),i.round=s=>{const o=i(s),a=i.ceil(s);return s-o(e(s=new Date(+s),o==null?1:Math.floor(o)),s),i.range=(s,o,a)=>{const l=[];if(s=i.ceil(s),a=a==null?1:Math.floor(a),!(s0))return l;let u;do l.push(u=new Date(+s)),e(s,a),t(s);while(upt(o=>{if(o>=o)for(;t(o),!s(o);)o.setTime(o-1)},(o,a)=>{if(o>=o)if(a<0)for(;++a<=0;)for(;e(o,-1),!s(o););else for(;--a>=0;)for(;e(o,1),!s(o););}),n&&(i.count=(s,o)=>(Fm.setTime(+s),Vm.setTime(+o),t(Fm),t(Vm),Math.floor(n(Fm,Vm))),i.every=s=>(s=Math.floor(s),!isFinite(s)||!(s>0)?null:s>1?i.filter(r?o=>r(o)%s===0:o=>i.count(0,o)%s===0):i)),i}const qd=pt(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);qd.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?pt(e=>{e.setTime(Math.floor(e/t)*t)},(e,n)=>{e.setTime(+e+n*t)},(e,n)=>(n-e)/t):qd);qd.range;const ni=1e3,Bn=ni*60,ri=Bn*60,vi=ri*24,X_=vi*7,vE=vi*30,zm=vi*365,Ds=pt(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*ni)},(t,e)=>(e-t)/ni,t=>t.getUTCSeconds());Ds.range;const J_=pt(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*ni)},(t,e)=>{t.setTime(+t+e*Bn)},(t,e)=>(e-t)/Bn,t=>t.getMinutes());J_.range;const Z_=pt(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*Bn)},(t,e)=>(e-t)/Bn,t=>t.getUTCMinutes());Z_.range;const ew=pt(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*ni-t.getMinutes()*Bn)},(t,e)=>{t.setTime(+t+e*ri)},(t,e)=>(e-t)/ri,t=>t.getHours());ew.range;const tw=pt(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*ri)},(t,e)=>(e-t)/ri,t=>t.getUTCHours());tw.range;const Sc=pt(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Bn)/vi,t=>t.getDate()-1);Sc.range;const Rp=pt(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/vi,t=>t.getUTCDate()-1);Rp.range;const JA=pt(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/vi,t=>Math.floor(t/vi));JA.range;function po(t){return pt(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,n)=>{e.setDate(e.getDate()+n*7)},(e,n)=>(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*Bn)/X_)}const Mp=po(0),Gd=po(1),R7=po(2),M7=po(3),Na=po(4),O7=po(5),D7=po(6);Mp.range;Gd.range;R7.range;M7.range;Na.range;O7.range;D7.range;function mo(t){return pt(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCDate(e.getUTCDate()+n*7)},(e,n)=>(n-e)/X_)}const Op=mo(0),Kd=mo(1),N7=mo(2),$7=mo(3),$a=mo(4),L7=mo(5),F7=mo(6);Op.range;Kd.range;N7.range;$7.range;$a.range;L7.range;F7.range;const nw=pt(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth());nw.range;const rw=pt(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth());rw.range;const _i=pt(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());_i.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:pt(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,n)=>{e.setFullYear(e.getFullYear()+n*t)});_i.range;const wi=pt(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());wi.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:pt(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n*t)});wi.range;function ZA(t,e,n,r,i,s){const o=[[Ds,1,ni],[Ds,5,5*ni],[Ds,15,15*ni],[Ds,30,30*ni],[s,1,Bn],[s,5,5*Bn],[s,15,15*Bn],[s,30,30*Bn],[i,1,ri],[i,3,3*ri],[i,6,6*ri],[i,12,12*ri],[r,1,vi],[r,2,2*vi],[n,1,X_],[e,1,vE],[e,3,3*vE],[t,1,zm]];function a(u,c,h){const d=cw).right(o,d);if(f===o.length)return t.every(Xy(u/zm,c/zm,h));if(f===0)return qd.every(Math.max(Xy(u,c,h),1));const[p,m]=o[d/o[f-1][2]53)return null;"w"in z||(z.w=1),"Z"in z?(de=jm(gl(z.y,0,1)),nt=de.getUTCDay(),de=nt>4||nt===0?Kd.ceil(de):Kd(de),de=Rp.offset(de,(z.V-1)*7),z.y=de.getUTCFullYear(),z.m=de.getUTCMonth(),z.d=de.getUTCDate()+(z.w+6)%7):(de=Um(gl(z.y,0,1)),nt=de.getDay(),de=nt>4||nt===0?Gd.ceil(de):Gd(de),de=Sc.offset(de,(z.V-1)*7),z.y=de.getFullYear(),z.m=de.getMonth(),z.d=de.getDate()+(z.w+6)%7)}else("W"in z||"U"in z)&&("w"in z||(z.w="u"in z?z.u%7:"W"in z?1:0),nt="Z"in z?jm(gl(z.y,0,1)).getUTCDay():Um(gl(z.y,0,1)).getDay(),z.m=0,z.d="W"in z?(z.w+6)%7+z.W*7-(nt+5)%7:z.w+z.U*7-(nt+6)%7);return"Z"in z?(z.H+=z.Z/100|0,z.M+=z.Z%100,jm(z)):Um(z)}}function C(U,Y,te,z){for(var xe=0,de=Y.length,nt=te.length,je,nn;xe=nt)return-1;if(je=Y.charCodeAt(xe++),je===37){if(je=Y.charAt(xe++),nn=x[je in _E?Y.charAt(xe++):je],!nn||(z=nn(U,te,z))<0)return-1}else if(je!=te.charCodeAt(z++))return-1}return z}function A(U,Y,te){var z=u.exec(Y.slice(te));return z?(U.p=c.get(z[0].toLowerCase()),te+z[0].length):-1}function S(U,Y,te){var z=f.exec(Y.slice(te));return z?(U.w=p.get(z[0].toLowerCase()),te+z[0].length):-1}function P(U,Y,te){var z=h.exec(Y.slice(te));return z?(U.w=d.get(z[0].toLowerCase()),te+z[0].length):-1}function M(U,Y,te){var z=g.exec(Y.slice(te));return z?(U.m=y.get(z[0].toLowerCase()),te+z[0].length):-1}function D(U,Y,te){var z=m.exec(Y.slice(te));return z?(U.m=w.get(z[0].toLowerCase()),te+z[0].length):-1}function $(U,Y,te){return C(U,e,Y,te)}function B(U,Y,te){return C(U,n,Y,te)}function F(U,Y,te){return C(U,r,Y,te)}function K(U){return o[U.getDay()]}function O(U){return s[U.getDay()]}function N(U){return l[U.getMonth()]}function L(U){return a[U.getMonth()]}function Q(U){return i[+(U.getHours()>=12)]}function q(U){return 1+~~(U.getMonth()/3)}function Se(U){return o[U.getUTCDay()]}function R(U){return s[U.getUTCDay()]}function ve(U){return l[U.getUTCMonth()]}function W(U){return a[U.getUTCMonth()]}function re(U){return i[+(U.getUTCHours()>=12)]}function ke(U){return 1+~~(U.getUTCMonth()/3)}return{format:function(U){var Y=b(U+="",v);return Y.toString=function(){return U},Y},parse:function(U){var Y=E(U+="",!1);return Y.toString=function(){return U},Y},utcFormat:function(U){var Y=b(U+="",_);return Y.toString=function(){return U},Y},utcParse:function(U){var Y=E(U+="",!0);return Y.toString=function(){return U},Y}}}var _E={"-":"",_:" ",0:"0"},Et=/^\s*\d+/,H7=/^%/,W7=/[\\^$*+?|[\]().{}]/g;function Ee(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",s=i.length;return r+(s[e.toLowerCase(),n]))}function G7(t,e,n){var r=Et.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function K7(t,e,n){var r=Et.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Q7(t,e,n){var r=Et.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Y7(t,e,n){var r=Et.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function X7(t,e,n){var r=Et.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function wE(t,e,n){var r=Et.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function xE(t,e,n){var r=Et.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function J7(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Z7(t,e,n){var r=Et.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function eH(t,e,n){var r=Et.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function bE(t,e,n){var r=Et.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function tH(t,e,n){var r=Et.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function EE(t,e,n){var r=Et.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function nH(t,e,n){var r=Et.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function rH(t,e,n){var r=Et.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function iH(t,e,n){var r=Et.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function sH(t,e,n){var r=Et.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function oH(t,e,n){var r=H7.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function aH(t,e,n){var r=Et.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function lH(t,e,n){var r=Et.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function TE(t,e){return Ee(t.getDate(),e,2)}function uH(t,e){return Ee(t.getHours(),e,2)}function cH(t,e){return Ee(t.getHours()%12||12,e,2)}function hH(t,e){return Ee(1+Sc.count(_i(t),t),e,3)}function eR(t,e){return Ee(t.getMilliseconds(),e,3)}function dH(t,e){return eR(t,e)+"000"}function fH(t,e){return Ee(t.getMonth()+1,e,2)}function pH(t,e){return Ee(t.getMinutes(),e,2)}function mH(t,e){return Ee(t.getSeconds(),e,2)}function gH(t){var e=t.getDay();return e===0?7:e}function yH(t,e){return Ee(Mp.count(_i(t)-1,t),e,2)}function tR(t){var e=t.getDay();return e>=4||e===0?Na(t):Na.ceil(t)}function vH(t,e){return t=tR(t),Ee(Na.count(_i(t),t)+(_i(t).getDay()===4),e,2)}function _H(t){return t.getDay()}function wH(t,e){return Ee(Gd.count(_i(t)-1,t),e,2)}function xH(t,e){return Ee(t.getFullYear()%100,e,2)}function bH(t,e){return t=tR(t),Ee(t.getFullYear()%100,e,2)}function EH(t,e){return Ee(t.getFullYear()%1e4,e,4)}function TH(t,e){var n=t.getDay();return t=n>=4||n===0?Na(t):Na.ceil(t),Ee(t.getFullYear()%1e4,e,4)}function SH(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Ee(e/60|0,"0",2)+Ee(e%60,"0",2)}function SE(t,e){return Ee(t.getUTCDate(),e,2)}function kH(t,e){return Ee(t.getUTCHours(),e,2)}function CH(t,e){return Ee(t.getUTCHours()%12||12,e,2)}function IH(t,e){return Ee(1+Rp.count(wi(t),t),e,3)}function nR(t,e){return Ee(t.getUTCMilliseconds(),e,3)}function PH(t,e){return nR(t,e)+"000"}function AH(t,e){return Ee(t.getUTCMonth()+1,e,2)}function RH(t,e){return Ee(t.getUTCMinutes(),e,2)}function MH(t,e){return Ee(t.getUTCSeconds(),e,2)}function OH(t){var e=t.getUTCDay();return e===0?7:e}function DH(t,e){return Ee(Op.count(wi(t)-1,t),e,2)}function rR(t){var e=t.getUTCDay();return e>=4||e===0?$a(t):$a.ceil(t)}function NH(t,e){return t=rR(t),Ee($a.count(wi(t),t)+(wi(t).getUTCDay()===4),e,2)}function $H(t){return t.getUTCDay()}function LH(t,e){return Ee(Kd.count(wi(t)-1,t),e,2)}function FH(t,e){return Ee(t.getUTCFullYear()%100,e,2)}function VH(t,e){return t=rR(t),Ee(t.getUTCFullYear()%100,e,2)}function zH(t,e){return Ee(t.getUTCFullYear()%1e4,e,4)}function UH(t,e){var n=t.getUTCDay();return t=n>=4||n===0?$a(t):$a.ceil(t),Ee(t.getUTCFullYear()%1e4,e,4)}function jH(){return"+0000"}function kE(){return"%"}function CE(t){return+t}function IE(t){return Math.floor(+t/1e3)}var Co,iR,sR;BH({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function BH(t){return Co=B7(t),iR=Co.format,Co.parse,sR=Co.utcFormat,Co.utcParse,Co}function HH(t){return new Date(t)}function WH(t){return t instanceof Date?+t:+new Date(+t)}function iw(t,e,n,r,i,s,o,a,l,u){var c=WA(),h=c.invert,d=c.domain,f=u(".%L"),p=u(":%S"),m=u("%I:%M"),w=u("%I %p"),g=u("%a %d"),y=u("%b %d"),v=u("%B"),_=u("%Y");function x(b){return(l(b){var e,n;const{axis:r}=t,i=Math.min(...(e=r.data)!=null?e:[]),s=Math.max(...(n=r.data)!=null?n:[]);return[i,s]},aR=t=>{const{series:e,axis:n,isDefaultAxis:r}=t;return Object.keys(e).filter(i=>e[i].yAxisKey===n.id||r&&e[i].yAxisKey===void 0).reduce((i,s)=>{const[o,a]=e[s].stackedData.reduce((l,u)=>[Math.min(...u,...l[0]===null?[]:[l[0]]),Math.max(...u,...l[1]===null?[]:[l[1]])],e[s].stackedData[0]);return[i[0]===null?o:Math.min(o,i[0]),i[1]===null?a:Math.max(a,i[1])]},[null,null])},KH=t=>Object.keys(t.series).some(n=>t.series[n].layout==="horizontal")?aR(t):oR(t),QH=t=>Object.keys(t.series).some(n=>t.series[n].layout==="horizontal")?oR(t):aR(t),Qd=(t,e)=>t[0]===null||t[1]===null?e:e[0]===null||e[1]===null?t:[Math.min(t[0],e[0]),Math.max(t[1],e[1])],YH=t=>{const{series:e,axis:n,isDefaultAxis:r}=t;return Object.keys(e).filter(i=>e[i].xAxisKey===n.id||e[i].xAxisKey===void 0&&r).reduce((i,s)=>{const o=e[s].data.reduce((a,{x:l})=>Qd(a,[l,l]),[null,null]);return Qd(i,o)},[null,null])},XH=t=>{const{series:e,axis:n,isDefaultAxis:r}=t;return Object.keys(e).filter(i=>e[i].yAxisKey===n.id||e[i].yAxisKey===void 0&&r).reduce((i,s)=>{const o=e[s].data.reduce((a,{y:l})=>Qd(a,[l,l]),[null,null]);return Qd(i,o)},[null,null])},JH=t=>{var e,n;const{axis:r}=t,i=Math.min(...(e=r.data)!=null?e:[]),s=Math.max(...(n=r.data)!=null?n:[]);return[i,s]},ZH=t=>{const{series:e,axis:n,isDefaultAxis:r}=t;return Object.keys(e).filter(i=>e[i].yAxisKey===n.id||r&&e[i].yAxisKey===void 0).reduce((i,s)=>{const a=e[s].area!==void 0?c=>c:c=>[c[1],c[1]],[l,u]=e[s].stackedData.reduce((c,h)=>{const[d,f]=a(h);return[Math.min(d,f,c[0]),Math.max(d,f,c[1])]},a(e[s].stackedData[0]));return i[0]===null||i[1]===null?[l,u]:[Math.min(l,i[0]),Math.max(u,i[1])]},[null,null])};function PE(t){return t.scaleType==="band"}function AE(t){return t.scaleType==="point"}function RE(t,e,n){switch(t){case"log":return XA(e,n);case"pow":return Y_(e,n);case"sqrt":return A7(e,n);case"time":return qH(e,n);case"utc":return GH(e,n);default:return QA(e,n)}}const eW=(t,e,n)=>{const r=I({},w8,n);return T.useMemo(()=>({left:r.left,top:r.top,right:r.right,bottom:r.bottom,width:Math.max(0,t-r.left-r.right),height:Math.max(0,e-r.top-r.bottom)}),[t,e,r.top,r.bottom,r.left,r.right])},tW=eW,go=T.createContext({top:0,left:0,bottom:0,right:0,height:300,width:400}),sw=T.createContext({current:null});function nW({width:t,height:e,margin:n,svgRef:r,children:i}){const s=tW(t,e,n);return k.jsx(sw.Provider,{value:r,children:k.jsx(go.Provider,{value:s,children:i})})}function _e(t){return function(){return t}}const lR=Math.cos,Yd=Math.sin,vr=Math.sqrt,ME=1e-12,Xd=Math.PI,js=2*Xd,tv=Math.PI,nv=2*tv,Ts=1e-6,rW=nv-Ts;function uR(t){this._+=t[0];for(let e=1,n=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return uR;const n=10**e;return function(r){this._+=r[0];for(let i=1,s=r.length;iTs)if(!(Math.abs(h*l-u*c)>Ts)||!s)this._append`L${this._x1=e},${this._y1=n}`;else{let f=r-o,p=i-a,m=l*l+u*u,w=f*f+p*p,g=Math.sqrt(m),y=Math.sqrt(d),v=s*Math.tan((tv-Math.acos((m+d-w)/(2*g*y)))/2),_=v/y,x=v/g;Math.abs(_-1)>Ts&&this._append`L${e+_*c},${n+_*h}`,this._append`A${s},${s},0,0,${+(h*f>c*p)},${this._x1=e+x*l},${this._y1=n+x*u}`}}arc(e,n,r,i,s,o){if(e=+e,n=+n,r=+r,o=!!o,r<0)throw new Error(`negative radius: ${r}`);let a=r*Math.cos(i),l=r*Math.sin(i),u=e+a,c=n+l,h=1^o,d=o?i-s:s-i;this._x1===null?this._append`M${u},${c}`:(Math.abs(this._x1-u)>Ts||Math.abs(this._y1-c)>Ts)&&this._append`L${u},${c}`,r&&(d<0&&(d=d%nv+nv),d>rW?this._append`A${r},${r},0,1,${h},${e-a},${n-l}A${r},${r},0,1,${h},${this._x1=u},${this._y1=c}`:d>Ts&&this._append`A${r},${r},0,${+(d>=tv)},${h},${this._x1=e+r*Math.cos(s)},${this._y1=n+r*Math.sin(s)}`)}rect(e,n,r,i){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+n}h${r=+r}v${+i}h${-r}Z`}toString(){return this._}}function ow(t){let e=3;return t.digits=function(n){if(!arguments.length)return e;if(n==null)e=null;else{const r=Math.floor(n);if(!(r>=0))throw new RangeError(`invalid digits: ${n}`);e=r}return t},()=>new sW(e)}function Dp(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function cR(t){this._context=t}cR.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}}};function aw(t){return new cR(t)}function hR(t){return t[0]}function dR(t){return t[1]}function fR(t,e){var n=_e(!0),r=null,i=aw,s=null,o=ow(a);t=typeof t=="function"?t:t===void 0?hR:_e(t),e=typeof e=="function"?e:e===void 0?dR:_e(e);function a(l){var u,c=(l=Dp(l)).length,h,d=!1,f;for(r==null&&(s=i(f=o())),u=0;u<=c;++u)!(u=f;--p)a.point(v[p],_[p]);a.lineEnd(),a.areaEnd()}g&&(v[d]=+t(w,d,h),_[d]=+e(w,d,h),a.point(r?+r(w,d,h):v[d],n?+n(w,d,h):_[d]))}if(y)return a=null,y+""||null}function c(){return fR().defined(i).curve(o).context(s)}return u.x=function(h){return arguments.length?(t=typeof h=="function"?h:_e(+h),r=null,u):t},u.x0=function(h){return arguments.length?(t=typeof h=="function"?h:_e(+h),u):t},u.x1=function(h){return arguments.length?(r=h==null?null:typeof h=="function"?h:_e(+h),u):r},u.y=function(h){return arguments.length?(e=typeof h=="function"?h:_e(+h),n=null,u):e},u.y0=function(h){return arguments.length?(e=typeof h=="function"?h:_e(+h),u):e},u.y1=function(h){return arguments.length?(n=h==null?null:typeof h=="function"?h:_e(+h),u):n},u.lineX0=u.lineY0=function(){return c().x(t).y(e)},u.lineY1=function(){return c().x(t).y(n)},u.lineX1=function(){return c().x(r).y(e)},u.defined=function(h){return arguments.length?(i=typeof h=="function"?h:_e(!!h),u):i},u.curve=function(h){return arguments.length?(o=h,s!=null&&(a=o(s)),u):o},u.context=function(h){return arguments.length?(h==null?s=a=null:a=o(s=h),u):s},u}function aW(t,e){return et?1:e>=t?0:NaN}function lW(t){return t}function uW(){var t=lW,e=aW,n=null,r=_e(0),i=_e(js),s=_e(0);function o(a){var l,u=(a=Dp(a)).length,c,h,d=0,f=new Array(u),p=new Array(u),m=+r.apply(this,arguments),w=Math.min(js,Math.max(-js,i.apply(this,arguments)-m)),g,y=Math.min(Math.abs(w)/u,s.apply(this,arguments)),v=y*(w<0?-1:1),_;for(l=0;l0&&(d+=_);for(e!=null?f.sort(function(x,b){return e(p[x],p[b])}):n!=null&&f.sort(function(x,b){return n(a[x],a[b])}),l=0,h=d?(w-u*v)/d:0;l0?_*h:0)+v,p[c]={data:a[c],index:l,value:_,startAngle:m,endAngle:g,padAngle:y};return p}return o.value=function(a){return arguments.length?(t=typeof a=="function"?a:_e(+a),o):t},o.sortValues=function(a){return arguments.length?(e=a,n=null,o):e},o.sort=function(a){return arguments.length?(n=a,e=null,o):n},o.startAngle=function(a){return arguments.length?(r=typeof a=="function"?a:_e(+a),o):r},o.endAngle=function(a){return arguments.length?(i=typeof a=="function"?a:_e(+a),o):i},o.padAngle=function(a){return arguments.length?(s=typeof a=="function"?a:_e(+a),o):s},o}const pR={draw(t,e){const n=vr(e/Xd);t.moveTo(n,0),t.arc(0,0,n,0,js)}},cW={draw(t,e){const n=vr(e/5)/2;t.moveTo(-3*n,-n),t.lineTo(-n,-n),t.lineTo(-n,-3*n),t.lineTo(n,-3*n),t.lineTo(n,-n),t.lineTo(3*n,-n),t.lineTo(3*n,n),t.lineTo(n,n),t.lineTo(n,3*n),t.lineTo(-n,3*n),t.lineTo(-n,n),t.lineTo(-3*n,n),t.closePath()}},mR=vr(1/3),hW=mR*2,dW={draw(t,e){const n=vr(e/hW),r=n*mR;t.moveTo(0,-n),t.lineTo(r,0),t.lineTo(0,n),t.lineTo(-r,0),t.closePath()}},fW={draw(t,e){const n=vr(e),r=-n/2;t.rect(r,r,n,n)}},pW=.8908130915292852,gR=Yd(Xd/10)/Yd(7*Xd/10),mW=Yd(js/10)*gR,gW=-lR(js/10)*gR,yW={draw(t,e){const n=vr(e*pW),r=mW*n,i=gW*n;t.moveTo(0,-n),t.lineTo(r,i);for(let s=1;s<5;++s){const o=js*s/5,a=lR(o),l=Yd(o);t.lineTo(l*n,-a*n),t.lineTo(a*r-l*i,l*r+a*i)}t.closePath()}},Bm=vr(3),vW={draw(t,e){const n=-vr(e/(Bm*3));t.moveTo(0,n*2),t.lineTo(-Bm*n,-n),t.lineTo(Bm*n,-n),t.closePath()}},Dn=-.5,Nn=vr(3)/2,rv=1/vr(12),_W=(rv/2+1)*3,wW={draw(t,e){const n=vr(e/_W),r=n/2,i=n*rv,s=r,o=n*rv+n,a=-s,l=o;t.moveTo(r,i),t.lineTo(s,o),t.lineTo(a,l),t.lineTo(Dn*r-Nn*i,Nn*r+Dn*i),t.lineTo(Dn*s-Nn*o,Nn*s+Dn*o),t.lineTo(Dn*a-Nn*l,Nn*a+Dn*l),t.lineTo(Dn*r+Nn*i,Dn*i-Nn*r),t.lineTo(Dn*s+Nn*o,Dn*o-Nn*s),t.lineTo(Dn*a+Nn*l,Dn*l-Nn*a),t.closePath()}},xW=[pR,cW,dW,fW,yW,vW,wW];function bW(t,e){let n=null,r=ow(i);t=typeof t=="function"?t:_e(t||pR),e=typeof e=="function"?e:_e(e===void 0?64:+e);function i(){let s;if(n||(n=s=r()),t.apply(this,arguments).draw(n,+e.apply(this,arguments)),s)return n=null,s+""||null}return i.type=function(s){return arguments.length?(t=typeof s=="function"?s:_e(s),i):t},i.size=function(s){return arguments.length?(e=typeof s=="function"?s:_e(+s),i):e},i.context=function(s){return arguments.length?(n=s??null,i):n},i}function OE(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function lw(t,e){this._context=t,this._k=(1-e)/6}lw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:OE(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:OE(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};(function t(e){function n(r){return new lw(r,e)}return n.tension=function(r){return t(+r)},n})(0);function EW(t,e,n){var r=t._x1,i=t._y1,s=t._x2,o=t._y2;if(t._l01_a>ME){var a=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*a-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,i=(i*a-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>ME){var u=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,c=3*t._l23_a*(t._l23_a+t._l12_a);s=(s*u+t._x1*t._l23_2a-e*t._l12_2a)/c,o=(o*u+t._y1*t._l23_2a-n*t._l12_2a)/c}t._context.bezierCurveTo(r,i,s,o,t._x2,t._y2)}function yR(t,e){this._context=t,this._alpha=e}yR.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:EW(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const TW=function t(e){function n(r){return e?new yR(r,e):new lw(r,0)}return n.alpha=function(r){return t(+r)},n}(.5);function DE(t){return t<0?-1:1}function NE(t,e,n){var r=t._x1-t._x0,i=e-t._x1,s=(t._y1-t._y0)/(r||i<0&&-0),o=(n-t._y1)/(i||r<0&&-0),a=(s*i+o*r)/(r+i);return(DE(s)+DE(o))*Math.min(Math.abs(s),Math.abs(o),.5*Math.abs(a))||0}function $E(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function Hm(t,e,n){var r=t._x0,i=t._y0,s=t._x1,o=t._y1,a=(s-r)/3;t._context.bezierCurveTo(r+a,i+a*e,s-a,o-a*n,s,o)}function Jd(t){this._context=t}Jd.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Hm(this,this._t0,$E(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,Hm(this,$E(this,n=NE(this,t,e)),n);break;default:Hm(this,this._t0,n=NE(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}};function vR(t){this._context=new _R(t)}(vR.prototype=Object.create(Jd.prototype)).point=function(t,e){Jd.prototype.point.call(this,e,t)};function _R(t){this._context=t}_R.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,i,s){this._context.bezierCurveTo(e,t,r,n,s,i)}};function LE(t){return new Jd(t)}function SW(t){return new vR(t)}function wR(t){this._context=t}wR.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),n===2)this._context.lineTo(t[1],e[1]);else for(var r=FE(t),i=FE(e),s=0,o=1;o=0;--e)i[e]=(o[e]-i[e+1])/s[e];for(s[n-1]=(t[n]+i[n-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}break}}this._x=t,this._y=e}};function CW(t){return new Np(t,.5)}function IW(t){return new Np(t,0)}function PW(t){return new Np(t,1)}function La(t,e){if((o=t.length)>1)for(var n=1,r,i,s=t[e[0]],o,a=s.length;n=0;)n[e]=e;return n}function AW(t,e){return t[e]}function RW(t){const e=[];return e.key=t,e}function xR(){var t=_e([]),e=Fa,n=La,r=AW;function i(s){var o=Array.from(t.apply(this,arguments),RW),a,l=o.length,u=-1,c;for(const h of s)for(a=0,++u;a0){for(var n,r,i=0,s=t[0].length,o;i0)for(var n,r=0,i,s,o,a,l,u=t[e[0]].length;r0?(i[0]=o,i[1]=o+=s):s<0?(i[1]=a,i[0]=a+=s):(i[0]=0,i[1]=s)}function DW(t,e){if((i=t.length)>0){for(var n=0,r=t[e[0]],i,s=r.length;n0)||!((s=(i=t[e[0]]).length)>0))){for(var n=0,r=1,i,s,o;rs&&(s=i,n=e);return n}function ER(t){var e=t.map(TR);return Fa(t).sort(function(n,r){return e[n]-e[r]})}function TR(t){for(var e=0,n=-1,r=t.length,i;++n{const{series:e,seriesOrder:n}=t,r=[],i={};return n.forEach(s=>{const{stack:o,stackOrder:a,stackOffset:l}=e[s];o===void 0?r.push({ids:[s],stackingOrder:Wm.none,stackingOffset:qm.none}):i[o]===void 0?(i[o]=r.length,r.push({ids:[s],stackingOrder:Wm[a??"none"],stackingOffset:qm[l??"diverging"]})):(r[i[o]].ids.push(s),a!==void 0&&(r[i[o]].stackingOrder=Wm[a]),l!==void 0&&(r[i[o]].stackingOffset=qm[l]))}),r};function uw(t,e){const n={};return Object.keys(t).forEach(r=>{n[r]=I({valueFormatter:e},t[r])}),n}const zW=(t,e)=>{const{seriesOrder:n,series:r}=t,i=SR(t),s=e??[];n.forEach(a=>{const l=r[a].data;if(l!==void 0)l.forEach((u,c)=>{s.length<=c?s.push({[a]:u}):s[c][a]=u});else if(e===void 0)throw new Error([`MUI: bar series with id='${a}' has no data.`,"Either provide a data property to the series or use the dataset prop."].join(` +`))});const o={};return i.forEach(a=>{const{ids:l,stackingOffset:u,stackingOrder:c}=a,h=xR().keys(l.map(d=>{const f=r[d].dataKey;return r[d].data===void 0&&f!==void 0?f:d})).order(c).offset(u)(s);l.forEach((d,f)=>{const p=r[d].dataKey;o[d]=I({layout:"vertical"},r[d],{data:p?e.map(m=>m[p]):r[d].data,stackedData:h[f].map(([m,w])=>[m,w])})})}),{seriesOrder:n,stackingGroups:i,series:uw(o,a=>a.toLocaleString())}},UW=zW,jW=({series:t,seriesOrder:e})=>({series:uw(t,n=>`(${n.x}, ${n.y})`),seriesOrder:e}),BW=jW,HW=(t,e)=>{const{seriesOrder:n,series:r}=t,i=SR(t),s=e??[];n.forEach(a=>{const l=r[a].data;if(l!==void 0)l.forEach((u,c)=>{s.length<=c?s.push({[a]:u}):s[c][a]=u});else if(e===void 0)throw new Error([`MUI: line series with id='${a}' has no data.`,"Either provide a data property to the series or use the dataset prop."].join(` +`))});const o={};return i.forEach(a=>{const{ids:l,stackingOrder:u,stackingOffset:c}=a,h=xR().keys(l.map(d=>{const f=r[d].dataKey;return r[d].data===void 0&&f!==void 0?f:d})).order(u).offset(c)(s);l.forEach((d,f)=>{const p=r[d].dataKey;o[d]=I({},r[d],{data:p?e.map(m=>m[p]):r[d].data,stackedData:h[f].map(([m,w])=>[m,w])})})}),{seriesOrder:n,stackingGroups:i,series:uw(o,a=>a.toLocaleString())}},WW=HW,qW=(t="none")=>{if(typeof t=="function")return t;switch(t){case"none":return null;case"desc":return(e,n)=>n-e;case"asc":return(e,n)=>e-n;default:return null}},GW=t=>{const{seriesOrder:e,series:n}=t,r={};return e.forEach(i=>{var s,o,a,l;const u=uW().startAngle(2*Math.PI*((s=n[i].startAngle)!=null?s:0)/360).endAngle(2*Math.PI*((o=n[i].endAngle)!=null?o:360)/360).padAngle(2*Math.PI*((a=n[i].paddingAngle)!=null?a:0)/360).sortValues(qW((l=n[i].sortingValues)!=null?l:"none"))(n[i].data.map(c=>c.value));r[i]=I({valueFormatter:c=>c.value.toLocaleString()},n[i],{data:n[i].data.map((c,h)=>{var d;return I({},c,{id:(d=c.id)!=null?d:`auto-generated-pie-id-${i}-${h}`},u[h])}).map(c=>{var h,d,f;return I({},c,{formattedValue:(h=(d=(f=n[i]).valueFormatter)==null?void 0:d.call(f,c))!=null?h:c.value.toLocaleString()})})})}),{seriesOrder:e,series:r}},KW=GW,QW=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"];function YW(t,e,n=QW){return t.type==="pie"?I({},t,{data:t.data.map((r,i)=>I({color:n[i%n.length]},r))}):I({color:n[e%n.length]},t)}const XW=["#02B2AF","#2E96FF","#B800D8","#60009B","#2731C8","#03008D"],JW=["#02B2AF","#72CCFF","#DA00FF","#9001CB","#2E96FF","#3B48E0"],ZW=t=>t==="dark"?JW:XW,Ti=T.createContext({}),Gm={bar:UW,scatter:BW,line:WW,pie:KW},eq=(t,e,n)=>{const r={};t.forEach((s,o)=>{var a;const{id:l=`auto-generated-id-${o}`,type:u}=s;if(r[u]===void 0&&(r[u]={series:{},seriesOrder:[]}),((a=r[u])==null?void 0:a.series[l])!==void 0)throw new Error(`MUI: series' id "${l}" is not unique`);r[u].series[l]=I({id:l},YW(s,o,e)),r[u].seriesOrder.push(l)});const i={};return Object.keys(Gm).forEach(s=>{if(r[s]!==void 0){var o,a;i[s]=(o=(a=Gm[s])==null?void 0:a.call(Gm,r[s],n))!=null?o:r[s]}}),i};function tq({series:t,dataset:e,colors:n=ZW,children:r}){const i=lo(),s=T.useMemo(()=>eq(t,typeof n=="function"?n(i.palette.mode):n,e),[t,n,i.palette.mode,e]);return k.jsx(Ti.Provider,{value:s,children:r})}function zu(t){return t.bandwidth!==void 0}function VE(t){const{tickMaxStep:e,tickMinStep:n,tickNumber:r,range:i,domain:s}=t,o=n===void 0?999:Math.floor(Math.abs(s[1]-s[0])/n),a=e===void 0?2:Math.ceil(Math.abs(s[1]-s[0])/e),l=r??Math.floor(Math.abs(i[1]-i[0])/50);return Math.min(o,Math.max(a,l))}function kR(t){const{scale:e,tickNumber:n,valueFormatter:r}=t;return T.useMemo(()=>{if(zu(e)){const i=e.domain();return e.bandwidth()>0?[...i.map(s=>{var o;return{formattedValue:(o=r==null?void 0:r(s))!=null?o:s,offset:e(s)-(e.step()-e.bandwidth())/2,labelOffset:e.step()/2}}),{formattedValue:void 0,offset:e.range()[1],labelOffset:0}]:i.map(s=>{var o;return{formattedValue:(o=r==null?void 0:r(s))!=null?o:s,offset:e(s),labelOffset:0}})}return e.ticks(n).map(i=>{var s;return{formattedValue:(s=r==null?void 0:r(i))!=null?s:e.tickFormat(n)(i),offset:e(i),labelOffset:0}})},[n,e,r])}const zE=.2,nq=.1,rq={bar:KH,scatter:YH,line:JH},iq={bar:QH,scatter:XH,line:ZH},_r=T.createContext({xAxis:{},yAxis:{},xAxisIds:[],yAxisIds:[]});function sq({xAxis:t,yAxis:e,dataset:n,children:r}){const i=T.useContext(Ti),s=T.useContext(go),o=T.useMemo(()=>t==null?void 0:t.map(u=>{const c=u.dataKey;if(c===void 0||u.data!==void 0)return u;if(n===void 0)throw Error("MUI: x-axis uses `dataKey` but no `dataset` is provided.");return I({},u,{data:n.map(h=>h[c])})}),[t,n]),a=T.useMemo(()=>e==null?void 0:e.map(u=>{const c=u.dataKey;if(c===void 0||u.data!==void 0)return u;if(n===void 0)throw Error("MUI: y-axis uses `dataKey` but no `dataset` is provided.");return I({},u,{data:n.map(h=>h[c])})}),[e,n]),l=T.useMemo(()=>{var u,c;const h=(g,y,v,_,x)=>{var b,E;const C=_[y],A=(b=(E=i[y])==null?void 0:E.series)!=null?b:{},[S,P]=C({series:A,axis:v,isDefaultAxis:x}),[M,D]=g;return M===null||D===null?[S,P]:S===null||P===null?[M,D]:[Math.min(S,M),Math.max(P,D)]},d=(g,y,v)=>Object.keys(y).reduce((x,b)=>h(x,b,g,y,v),[null,null]),f=[...(u=o==null?void 0:o.map((g,y)=>I({id:`deaultized-x-axis-${y}`},g)))!=null?u:[],...o===void 0||o.findIndex(({id:g})=>g===Ky)===-1?[{id:Ky,scaleType:"linear"}]:[]],p={};f.forEach((g,y)=>{var v,_,x,b,E;const C=y===0,[A,S]=d(g,rq,C),P=[s.left,s.left+s.width];if(PE(g)){var M,D;const L=(M=g.categoryGapRatio)!=null?M:zE,Q=(D=g.barGapRatio)!=null?D:nq;p[g.id]=I({categoryGapRatio:L,barGapRatio:Q},g,{scale:Ud(g.data,P).paddingInner(L).paddingOuter(L/2),tickNumber:g.data.length})}if(AE(g)&&(p[g.id]=I({},g,{scale:Jb(g.data,P),tickNumber:g.data.length})),g.scaleType==="band"||g.scaleType==="point")return;const $=(v=g.scaleType)!=null?v:"linear",B=[(_=g.min)!=null?_:A,(x=g.max)!=null?x:S],F=VE(I({},g,{range:P,domain:B})),K=RE($,B,P).nice(F),O=K.domain(),N=[(b=g.min)!=null?b:O[0],(E=g.max)!=null?E:O[1]];p[g.id]=I({},g,{scaleType:$,scale:K.domain(N),tickNumber:F})});const m=[...(c=a==null?void 0:a.map((g,y)=>I({id:`deaultized-y-axis-${y}`},g)))!=null?c:[],...a===void 0||a.findIndex(({id:g})=>g===Kb)===-1?[{id:Kb,scaleType:"linear"}]:[]],w={};return m.forEach((g,y)=>{var v,_,x,b,E;const C=y===0,[A,S]=d(g,iq,C),P=[s.top+s.height,s.top];if(PE(g)){var M;const N=(M=g.categoryGapRatio)!=null?M:zE;w[g.id]=I({categoryGapRatio:N,barGapRatio:0},g,{scale:Ud(g.data,[P[1],P[0]]).paddingInner(N).paddingOuter(N/2),tickNumber:g.data.length})}if(AE(g)&&(w[g.id]=I({},g,{scale:Jb(g.data,[P[1],P[0]]),tickNumber:g.data.length})),g.scaleType==="band"||g.scaleType==="point")return;const D=(v=g.scaleType)!=null?v:"linear",$=[(_=g.min)!=null?_:A,(x=g.max)!=null?x:S],B=VE(I({},g,{range:P,domain:$})),F=RE(D,$,P).nice(B),K=F.domain(),O=[(b=g.min)!=null?b:K[0],(E=g.max)!=null?E:K[1]];w[g.id]=I({},g,{scaleType:D,scale:F.domain(O),tickNumber:B})}),{xAxis:p,yAxis:w,xAxisIds:f.map(({id:g})=>g),yAxisIds:m.map(({id:g})=>g)}},[s.height,s.left,s.top,s.width,i,o,a]);return k.jsx(_r.Provider,{value:l,children:r})}function Va(t){return zu(t)?e=>t(e)+t.bandwidth()/2:e=>t(e)}function oq(t){const{id:e,offset:n}=t,{left:r,top:i,width:s,height:o}=T.useContext(go),a=I({top:0,right:0,bottom:0,left:0},n);return k.jsx("clipPath",{id:e,children:k.jsx("rect",{x:r-a.left,y:i-a.top,width:s+a.left+a.right,height:o+a.top+a.bottom})})}function CR(t){return ut("MuiChartsAxis",t)}const ah=ct("MuiChartsAxis",["root","line","tickContainer","tick","tickLabel","label","directionX","directionY","top","bottom","left","right"]),IR=Te("g",{name:"MuiChartsAxis",slot:"Root",overridesResolver:(t,e)=>e.root})(({theme:t})=>({[`& .${ah.tickLabel}`]:I({},t.typography.caption,{fill:(t.vars||t).palette.text.primary}),[`& .${ah.label}`]:I({},t.typography.body1,{fill:(t.vars||t).palette.text.primary}),[`& .${ah.line}`]:{stroke:(t.vars||t).palette.text.primary,shapeRendering:"crispEdges",strokeWidth:1},[`& .${ah.tick}`]:{stroke:(t.vars||t).palette.text.primary,shapeRendering:"crispEdges"}})),aq=()=>!(typeof window<"u"&&window.document&&window.setTimeout),vs={widthCache:{},cacheCount:0},lq=2e3,uq={position:"absolute",top:"-20000px",left:0,padding:0,margin:0,border:"none",whiteSpace:"pre"},cq=["minWidth","maxWidth","width","minHeight","maxHeight","height","top","left","fontSize","padding","margin","paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom"],UE="mui_measurement_span";function PR(t,e){return cq.indexOf(t)>=0&&e===+e?`${e}px`:e}function AR(t){return t.split("").reduce((r,i)=>i===i.toUpperCase()?[...r,"-",i.toLowerCase()]:[...r,i],[]).join("")}const hq=t=>Object.keys(t).sort().reduce((e,n)=>`${e}${AR(n)}:${PR(n,t[n])};`,""),dq=(t,e={})=>{if(t==null||aq())return{width:0,height:0};const n=`${t}`,r=hq(e),i=`${n}-${r}`;if(vs.widthCache[i])return vs.widthCache[i];try{let s=document.getElementById(UE);s===null&&(s=document.createElement("span"),s.setAttribute("id",UE),s.setAttribute("aria-hidden","true"),document.body.appendChild(s));const o=I({},uq,e);Object.keys(o).map(u=>(s.style[AR(u)]=PR(u,o[u]),u)),s.textContent=n;const a=s.getBoundingClientRect(),l={width:a.width,height:a.height};return vs.widthCache[i]=l,vs.cacheCount+1>lq?(vs.cacheCount=0,vs.widthCache={}):vs.cacheCount+=1,l}catch{return{width:0,height:0}}},fq=["x","y","textAnchor","dominantBaseline","style","text","ownerState"];function RR({style:t,needsComputation:e,text:n}){return n.split(` +`).map(r=>I({text:r},e?dq(r,t):{width:0,height:0}))}function Uu(t){const{x:e,y:n,textAnchor:r="start",dominantBaseline:i="central",style:s,text:o}=t,a=ue(t,fq),l=T.useMemo(()=>RR({style:s,needsComputation:o.includes(` +`),text:o}),[s,o]);let u;switch(i){case"hanging":u=0;break;case"central":u=(l.length-1)/2*-l[0].height;break;default:u=(l.length-1)*-l[0].height;break}return k.jsx("text",I({},a,{x:e,y:n,textAnchor:r,dominantBaseline:i,style:s,children:l.map((c,h)=>k.jsx("tspan",{x:e,dy:`${h===0?u:l[0].height}px`,children:c.text},h))}))}const pq=["scale","tickNumber"],mq=t=>{const{classes:e,position:n}=t;return lt({root:["root","directionX",n],line:["line"],tickContainer:["tickContainer"],tick:["tick"],tickLabel:["tickLabel"],label:["label"]},CR,e)},jE={position:"bottom",disableLine:!1,disableTicks:!1,tickFontSize:12,labelFontSize:14,tickSize:6};function BE(t){var e,n,r,i;const s=tn({props:I({},jE,t),name:"MuiChartsXAxis"}),o=T.useContext(_r),a=s.axisId,{xAxis:{[a]:{scale:l,tickNumber:u}}}=o,c=ue(o.xAxis[a],pq),h=I({},jE,c,s),{position:d,disableLine:f,disableTicks:p,tickFontSize:m,label:w,labelFontSize:g,tickSize:y,valueFormatter:v,slots:_,slotProps:x}=h,b=lo(),E=mq(I({},h,{theme:b})),{left:C,top:A,width:S,height:P}=T.useContext(go),M=p?4:y,D=kR({scale:l,tickNumber:u,valueFormatter:v}),$=d==="bottom"?1:-1,B={x:C+S/2,y:$*(m+M+10)},F=(e=_==null?void 0:_.axisLine)!=null?e:"line",K=(n=_==null?void 0:_.axisTick)!=null?n:"line",O=(r=_==null?void 0:_.axisTickLabel)!=null?r:Uu,N=(i=_==null?void 0:_.axisLabel)!=null?i:Uu,L=Cn({elementType:O,externalSlotProps:x==null?void 0:x.axisTickLabel,additionalProps:{textAnchor:"middle",dominantBaseline:d==="bottom"?"hanging":"auto",style:{fontSize:m},className:E.tickLabel},className:E.tickLabel,ownerState:{}}),Q=Cn({elementType:N,externalSlotProps:x==null?void 0:x.axisLabel,additionalProps:{textAnchor:"middle",dominantBaseline:d==="bottom"?"hanging":"auto",style:{fontSize:g,transformOrigin:`${B.x}px ${B.y}px`},className:E.label},ownerState:{}});return k.jsxs(IR,{transform:`translate(0, ${d==="bottom"?A+P:A})`,className:E.root,children:[!f&&k.jsx(F,I({x1:l.range()[0],x2:l.range()[1],className:E.line},x==null?void 0:x.axisLine)),D.map(({formattedValue:q,offset:Se,labelOffset:R},ve)=>{const W=R??0,re=$*(M+3);return k.jsxs("g",{transform:`translate(${Se}, 0)`,className:E.tickContainer,children:[!p&&k.jsx(K,I({y2:$*M,className:E.tick},x==null?void 0:x.axisTick)),q!==void 0&&k.jsx(O,I({x:W,y:re,"transform-origin":`${W}px ${re}px`},L,{text:q.toString()}))]},ve)}),w&&k.jsx("g",{className:E.label,children:k.jsx(N,I({},B,Q,{text:w}))})]})}const gq=["scale","tickNumber"],yq=t=>{const{classes:e,position:n}=t;return lt({root:["root","directionY",n],line:["line"],tickContainer:["tickContainer"],tick:["tick"],tickLabel:["tickLabel"],label:["label"]},CR,e)},HE={position:"left",disableLine:!1,disableTicks:!1,tickFontSize:12,labelFontSize:14,tickSize:6};function WE(t){var e,n,r,i;const s=tn({props:I({},HE,t),name:"MuiChartsYAxis"}),o=T.useContext(_r),a=s.axisId,{yAxis:{[a]:{scale:l,tickNumber:u}}}=o,c=ue(o.yAxis[a],gq),h=I({},HE,c,s),{position:d,disableLine:f,disableTicks:p,tickFontSize:m,label:w,labelFontSize:g,tickSize:y,valueFormatter:v,slots:_,slotProps:x}=h,b=lo(),E=yq(I({},h,{theme:b})),{left:C,top:A,width:S,height:P}=T.useContext(go),M=p?4:y,D=kR({scale:l,tickNumber:u,valueFormatter:v}),$=d==="right"?1:-1,B={x:$*(m+M+10),y:A+P/2},F=(e=_==null?void 0:_.axisLine)!=null?e:"line",K=(n=_==null?void 0:_.axisTick)!=null?n:"line",O=(r=_==null?void 0:_.axisTickLabel)!=null?r:Uu,N=(i=_==null?void 0:_.axisLabel)!=null?i:Uu,L=Cn({elementType:O,externalSlotProps:x==null?void 0:x.axisTickLabel,additionalProps:{textAnchor:d==="right"?"start":"end",dominantBaseline:"central",style:{fontSize:m},className:E.tickLabel},ownerState:{}}),Q=Cn({elementType:N,externalSlotProps:x==null?void 0:x.axisLabel,additionalProps:{textAnchor:"middle",dominantBaseline:"auto",style:{fontSize:g,transform:`rotate(${$*90}deg)`,transformOrigin:`${B.x}px ${B.y}px`},className:E.label},ownerState:{}});return k.jsxs(IR,{transform:`translate(${d==="right"?C+S:C}, 0)`,className:E.root,children:[!f&&k.jsx(F,I({y1:l.range()[0],y2:l.range()[1],className:E.line},x==null?void 0:x.axisLine)),D.map(({formattedValue:q,offset:Se,labelOffset:R},ve)=>{const W=$*(M+2),re=R;return k.jsxs("g",{transform:`translate(0, ${Se})`,className:E.tickContainer,children:[!p&&k.jsx(K,I({x2:$*M,className:E.tick},x==null?void 0:x.axisTick)),q!==void 0&&k.jsx(O,I({x:W,y:re,"transform-origin":`${W}px ${re}px`,text:q.toString()},L))]},ve)}),w&&k.jsx("g",{className:E.label,children:k.jsx(N,I({},B,Q,{text:w}))})]})}const lh=t=>t==null?null:typeof t=="object"?t.axisId:t,uh=(t,e,n)=>typeof t=="object"?I({},t,{slots:I({},e,t==null?void 0:t.slots),slotProps:I({},n,t==null?void 0:t.slotProps)}):{slots:e,slotProps:n};function vq(t){const{topAxis:e,leftAxis:n,rightAxis:r,bottomAxis:i,slots:s,slotProps:o}=t,{xAxis:a,xAxisIds:l,yAxis:u,yAxisIds:c}=T.useContext(_r),h=lh(n===void 0?c[0]:n),d=lh(i===void 0?l[0]:i),f=lh(e),p=lh(r);if(f!==null&&!a[f])throw Error(`MUI: id used for top axis "${f}" is not defined`);if(h!==null&&!u[h])throw Error(`MUI: id used for left axis "${h}" is not defined`);if(p!==null&&!u[p])throw Error(`MUI: id used for right axis "${p}" is not defined`);if(d!==null&&!a[d])throw Error(`MUI: id used for bottom axis "${d}" is not defined`);const m=uh(e,s,o),w=uh(i,s,o),g=uh(n,s,o),y=uh(r,s,o);return k.jsxs(T.Fragment,{children:[f&&k.jsx(BE,I({},m,{position:"top",axisId:f})),d&&k.jsx(BE,I({},w,{position:"bottom",axisId:d})),h&&k.jsx(WE,I({},g,{position:"left",axisId:h})),p&&k.jsx(WE,I({},y,{position:"right",axisId:p}))]})}const Si=T.createContext({item:null,axis:{x:null,y:null},dispatch:()=>null}),_q=(t,e)=>{switch(e.type){case"enterItem":return I({},t,{item:e.data});case"leaveItem":return t.item===null||Object.keys(e.data).some(n=>e.data[n]!==t.item[n])?t:I({},t,{item:null});case"updateAxis":return I({},t,{axis:e.data});default:return t}};function wq({children:t}){const[e,n]=T.useReducer(_q,{item:null,axis:{x:null,y:null}}),r=T.useMemo(()=>I({},e,{dispatch:n}),[e]);return k.jsx(Si.Provider,{value:r,children:t})}function xq(t){if(t===null)return{getBoundingClientRect:()=>({width:0,height:0,x:0,y:0,top:0,right:0,bottom:0,left:0,toJSON:()=>""})};const{x:e,y:n}=t;return{getBoundingClientRect:()=>({width:0,height:0,x:e,y:n,top:n,right:e,bottom:n,left:e,toJSON:()=>JSON.stringify({width:0,height:0,x:e,y:n,top:n,right:e,bottom:n,left:e})})}}function bq(){const t=T.useContext(sw),[e,n]=T.useState(null);return T.useEffect(()=>{const r=t.current;if(r===null)return()=>{};const i=()=>{n(null)},s=o=>{n({x:o.clientX,y:o.clientY})};return r.addEventListener("mouseout",i),r.addEventListener("mousemove",s),()=>{r.removeEventListener("mouseout",i),r.removeEventListener("mousemove",s)}},[t]),e}function Eq(t,e){if(t==="item")return e!==null;const n=e.x!==null,r=e.y!==null;return n||r}function Tq(t){return ut("MuiChartsTooltip",t)}const qE=ct("MuiChartsTooltip",["root","markCell","labelCell","valueCell"]),MR=Te("div",{name:"MuiChartsTooltip",slot:"Container"})(({theme:t})=>({backgroundColor:(t.vars||t).palette.background.paper,color:(t.vars||t).palette.text.primary,transition:t.transitions.create("box-shadow"),border:`1px solid ${(t.vars||t).palette.divider}`,borderRadius:t.shape.borderRadius})),OR=Te("table",{name:"MuiChartsTooltip",slot:"Table"})(({theme:t})=>({borderSpacing:0,"& thead td":{borderBottom:`solid ${(t.vars||t).palette.divider} 1px`}})),iv=Te("tr",{name:"MuiChartsTooltip",slot:"Row"})(({theme:t})=>({"tr:first-of-type& td":{paddingTop:t.spacing(1)},"tr:last-of-type& td":{paddingBottom:t.spacing(1)}})),Ns=Te("td",{name:"MuiChartsTooltip",slot:"Cell"})(({theme:t})=>({verticalAlign:"middle",color:(t.vars||t).palette.text.secondary,[`&.${qE.labelCell}`]:{paddingLeft:t.spacing(1)},[`&.${qE.valueCell}`]:{paddingLeft:t.spacing(4),color:(t.vars||t).palette.text.primary},"td:first-of-type&":{paddingLeft:t.spacing(2)},"td:last-of-type&":{paddingRight:t.spacing(2)}})),DR=Te(ZF,{name:"MuiChartsTooltip",slot:"Mark"})(({theme:t,ownerState:e})=>({width:t.spacing(1),height:t.spacing(1),borderRadius:"50%",backgroundColor:e.color,borderColor:(t.vars||t).palette.background.paper,border:`solid ${(t.vars||t).palette.background.paper} ${t.spacing(.25)}`,boxSizing:"content-box"}));function Sq(t){const{series:e,itemData:n,sx:r,classes:i}=t;if(n.dataIndex===void 0)return null;const{displayedLabel:s,color:o}=e.type==="pie"?{color:e.data[n.dataIndex].color,displayedLabel:e.data[n.dataIndex].label}:{color:e.color,displayedLabel:e.label},a=e.valueFormatter(e.data[n.dataIndex]);return k.jsx(MR,{sx:r,className:i.root,children:k.jsx(OR,{children:k.jsx("tbody",{children:k.jsxs(iv,{children:[k.jsx(Ns,{className:i.markCell,children:k.jsx(DR,{ownerState:{color:o}})}),k.jsx(Ns,{className:i.labelCell,children:s}),k.jsx(Ns,{className:i.valueCell,children:a})]})})})})}function kq(t){const{content:e,itemData:n,sx:r,classes:i,contentProps:s}=t,o=T.useContext(Ti)[n.type].series[n.seriesId],a=e??Sq,l=Cn({elementType:a,externalSlotProps:s,additionalProps:{itemData:n,series:o,sx:r,classes:i},ownerState:{}});return k.jsx(a,I({},l))}function Cq(t){var e;const{series:n,axis:r,dataIndex:i,axisValue:s,sx:o,classes:a}=t;if(i==null)return null;const l=(e=r.valueFormatter)!=null?e:u=>u.toLocaleString();return k.jsx(MR,{sx:o,className:a.root,children:k.jsxs(OR,{children:[s!=null&&!r.hideTooltip&&k.jsx("thead",{children:k.jsx(iv,{children:k.jsx(Ns,{colSpan:3,children:k.jsx(Xt,{children:l(s)})})})}),k.jsx("tbody",{children:n.map(({color:u,id:c,label:h,valueFormatter:d,data:f})=>k.jsxs(iv,{children:[k.jsx(Ns,{className:a.markCell,children:k.jsx(DR,{ownerState:{color:u},boxShadow:1})}),k.jsx(Ns,{className:a.labelCell,children:h?k.jsx(Xt,{children:h}):null}),k.jsx(Ns,{className:a.valueCell,children:k.jsx(Xt,{children:d(f[i])})})]},c))})]})})}function Iq(t){const{content:e,contentProps:n,axisData:r,sx:i,classes:s}=t,o=(r.x&&r.x.index)!==void 0,a=o?r.x&&r.x.index:r.y&&r.y.index,l=o?r.x&&r.x.value:r.y&&r.y.value,{xAxisIds:u,xAxis:c,yAxisIds:h,yAxis:d}=T.useContext(_r),f=T.useContext(Ti),p=o?u[0]:h[0],m=T.useMemo(()=>{const v=[];return Object.keys(f).filter(_=>["bar","line","scatter"].includes(_)).forEach(_=>{f[_].seriesOrder.forEach(x=>{const b=f[_].series[x],E=o?b.xAxisKey:b.yAxisKey;(E===void 0||E===p)&&v.push(f[_].series[x])})}),v},[p,o,f]),w=T.useMemo(()=>o?c[p]:d[p],[p,o,c,d]),g=e??Cq,y=Cn({elementType:g,externalSlotProps:n,additionalProps:{axisData:r,series:m,axis:w,dataIndex:a,axisValue:l,sx:i,classes:s},ownerState:{}});return k.jsx(g,I({},y))}const Pq=t=>{const{classes:e}=t;return lt({root:["root"],markCell:["markCell"],labelCell:["labelCell"],valueCell:["valueCell"]},Tq,e)},Aq=Te(M3,{name:"MuiChartsTooltip",slot:"Root",overridesResolver:(t,e)=>e.root})(({theme:t})=>({pointerEvents:"none",zIndex:t.zIndex.modal}));function Rq(t){var e,n,r;const{trigger:i="axis",itemContent:s,axisContent:o,slots:a,slotProps:l}=t,u=bq(),{item:c,axis:h}=T.useContext(Si),d=i==="item"?c:h,f=Eq(i,d),p=u!==null&&f,m=Pq({classes:t.classes}),w=(e=a==null?void 0:a.popper)!=null?e:Aq,g=Cn({elementType:w,externalSlotProps:l==null?void 0:l.popper,additionalProps:{open:p,placement:"right-start",anchorEl:xq(u)},ownerState:{}});return i==="none"?null:k.jsx(aI,{children:p&&k.jsx(w,I({},g,{children:i==="item"?k.jsx(kq,{itemData:d,content:(n=a==null?void 0:a.itemContent)!=null?n:s,contentProps:l==null?void 0:l.itemContent,sx:{mx:2},classes:m}):k.jsx(Iq,{axisData:d,content:(r=a==null?void 0:a.axisContent)!=null?r:o,contentProps:l==null?void 0:l.axisContent,sx:{mx:2},classes:m})}))})}function Mq(t){const{x:e,y:n}=t,{xAxisIds:r,xAxis:i,yAxisIds:s,yAxis:o}=T.useContext(_r),a=r[0],l=s[0],u=i[a].scale,c=o[l].scale,{axis:h}=T.useContext(Si),d=Va(u),f=Va(c);return k.jsxs(T.Fragment,{children:[e==="band"&&h.x!==null&&zu(u)&&k.jsx("path",{d:`M ${u(h.x.value)-(u.step()-u.bandwidth())/2} ${c.range()[0]} l ${u.step()} 0 l 0 ${c.range()[1]-c.range()[0]} l ${-u.step()} 0 Z`,fill:"gray",fillOpacity:.1,style:{pointerEvents:"none"}}),n==="band"&&h.y!==null&&zu(c)&&k.jsx("path",{d:`M ${u.range()[0]} ${c(h.y.value)-(c.step()-c.bandwidth())/2} l 0 ${c.step()} l ${u.range()[1]-u.range()[0]} 0 l 0 ${-c.step()} Z`,fill:"gray",fillOpacity:.1,style:{pointerEvents:"none"}}),e==="line"&&h.x!==null&&k.jsx("path",{d:`M ${d(h.x.value)} ${c.range()[0]} L ${d(h.x.value)} ${c.range()[1]}`,stroke:"black",strokeDasharray:"5 2",style:{pointerEvents:"none"}}),n==="line"&&h.y!==null&&k.jsx("path",{d:`M ${u.range()[0]} ${f(h.y.value)} L ${u.range()[1]} ${f(h.y.value)}`,stroke:"black",strokeDasharray:"5 2",style:{pointerEvents:"none"}})]})}const cw={highlighted:"none",faded:"none"},NR=T.createContext({item:null,scope:cw,dispatch:()=>null}),Oq=(t,e)=>{switch(e.type){case"enterItem":return I({},t,{item:e.item,scope:I({},cw,e.scope)});case"leaveItem":return t.item===null||Object.keys(e.item).some(n=>e.item[n]!==t.item[n])?t:I({},t,{item:null});default:return t}};function Dq({children:t}){const[e,n]=T.useReducer(Oq,{item:null,scope:cw}),r=T.useMemo(()=>I({},e,{dispatch:n}),[e]);return k.jsx(NR.Provider,{value:r,children:t})}const hw=t=>{const{dispatch:e}=T.useContext(Si),{dispatch:n}=T.useContext(NR);return i=>({onMouseEnter:()=>{e({type:"enterItem",data:i}),n({type:"enterItem",item:i,scope:t})},onMouseLeave:()=>{e({type:"leaveItem",data:i}),n({type:"leaveItem",item:i})}})},dw=(t,e,n)=>{if(!(n!=null&&n.highlighted)||n.highlighted==="none"||t===null)return!1;const r=t.type===e.type&&t.seriesId===e.seriesId;return r?n.highlighted==="series"?r:t.dataIndex!==void 0&&t.dataIndex===e.dataIndex:!1},fw=(t,e,n)=>{if(!(n!=null&&n.faded)||n.faded==="none"||t===null)return!1;const r=t.type===e.type&&t.seriesId===e.seriesId;return n.faded==="series"?r&&t.dataIndex!==e.dataIndex:n.faded==="global"?r?t.dataIndex!==void 0&&t.dataIndex!==e.dataIndex:!0:!1},Nq=t=>{const e=T.useContext(sw),{width:n,height:r,top:i,left:s}=T.useContext(go),{xAxis:o,yAxis:a,xAxisIds:l,yAxisIds:u}=T.useContext(_r),{dispatch:c}=T.useContext(Si),h=l[0],d=u[0],f=T.useRef({x:-1,y:-1});T.useEffect(()=>{const p=e.current;if(p===null||t)return()=>{};const m=(y,v)=>{if(h===null)return null;const{scale:_,data:x}=y;if(!zu(_)){const E=_.invert(v);if(x===void 0)return{value:E};const C=x==null?void 0:x.findIndex((A,S)=>A>E&&(S===0||Math.abs(E-A)<=Math.abs(E-x[S-1]))||A<=E&&(S===x.length-1||Math.abs(E-A)=0?x[C]:E,index:C}}const b=_.bandwidth()===0?Math.floor((v-Math.min(..._.range())+_.step()/2)/_.step()):Math.floor((v-Math.min(..._.range()))/_.step());return b<0||b>=x.length?null:{index:b,value:x[b]}},w=()=>{f.current={x:-1,y:-1},c({type:"updateAxis",data:{x:null,y:null}})},g=y=>{const v=e.current.createSVGPoint();v.x=y.clientX,v.y=y.clientY;const _=v.matrixTransform(e.current.getScreenCTM().inverse());f.current={x:_.x,y:_.y};const x=_.xs+n,b=_.yi+r;if(x||b){c({type:"updateAxis",data:{x:null,y:null}});return}const E=m(o[h],_.x),C=m(a[d],_.y);c({type:"updateAxis",data:{x:E,y:C}})};return p.addEventListener("mouseout",w),p.addEventListener("mousemove",g),()=>{p.removeEventListener("mouseout",w),p.removeEventListener("mousemove",g)}},[e,c,s,n,i,r,d,a,h,o,t])},$q=["children","width","height","viewBox","disableAxisListener","className"],Lq=Te("svg",{name:"MuiChartsSurface",slot:"Root"})(()=>({})),Fq=T.forwardRef(function(e,n){const{children:r,width:i,height:s,viewBox:o,disableAxisListener:a=!1}=e,l=ue(e,$q),u=I({width:i,height:s,x:0,y:0},o);return Nq(a),k.jsxs(Lq,I({width:i,height:s,viewBox:`${u.x} ${u.y} ${u.width} ${u.height}`,ref:n},l,{children:[k.jsx("title",{children:e.title}),k.jsx("desc",{children:e.desc}),r]}))}),Vq=T.forwardRef(function(e,n){const{width:r,height:i,series:s,margin:o,xAxis:a,yAxis:l,colors:u,dataset:c,sx:h,title:d,desc:f,disableAxisListener:p,children:m}=e,w=T.useRef(null),g=fr(n,w);return k.jsx(nW,{width:r,height:i,margin:o,svgRef:w,children:k.jsx(tq,{series:s,colors:u,dataset:c,children:k.jsx(sq,{xAxis:a,yAxis:l,dataset:c,children:k.jsx(wq,{children:k.jsx(Dq,{children:k.jsx(Fq,{width:r,height:i,ref:g,sx:h,title:d,desc:f,disableAxisListener:p,children:m})})})})})})}),zq=["width","height"],Uq=(t,e)=>{const n=T.useRef(null),r=T.useRef(!1),[i,s]=T.useState(0),[o,a]=T.useState(0),l=T.useCallback(()=>{const u=n==null?void 0:n.current;if(!u)return;const h=nc(u).getComputedStyle(u),d=Math.floor(parseFloat(h.height))||0,f=Math.floor(parseFloat(h.width))||0;s(f),a(d)},[]);return T.useEffect(()=>{r.current=!0},[]),ss(()=>{if(t!==void 0&&e!==void 0)return()=>{};l();const u=n.current;if(typeof ResizeObserver>"u")return()=>{};let c;const h=new ResizeObserver(()=>{c=requestAnimationFrame(()=>{l()})});return u&&h.observe(u),()=>{c&&window.cancelAnimationFrame(c),u&&h.unobserve(u)}},[l,e,t]),[n,t??i,e??o]},jq=Te("div",{name:"MuiResponsiveChart",slot:"Container"})(({ownerState:t})=>{var e,n;return{width:(e=t.width)!=null?e:"100%",height:(n=t.height)!=null?n:"100%",display:"flex",position:"relative",flexGrow:1,flexDirection:"column",alignItems:"center",justifyContent:"center",overflow:"hidden","&>svg":{width:"100%",height:"100%"}}}),Bq=T.forwardRef(function(e,n){const{width:r,height:i}=e,s=ue(e,zq),[o,a,l]=Uq(r,i);return k.jsx(jq,{ref:o,ownerState:{width:r,height:i},children:k.jsx(Vq,I({},s,{width:a,height:l,ref:n}))})}),Hq=t=>{const{seriesOrder:e,series:n}=t;return e.map(i=>({color:n[i].color,label:n[i].label,id:i})).filter(i=>i.label!==void 0)},Wq=Hq,qq=t=>{const{seriesOrder:e,series:n}=t;return e.map(i=>({color:n[i].color,label:n[i].label,id:i})).filter(i=>i.label!==void 0)},Gq=qq,Kq=t=>{const{seriesOrder:e,series:n}=t;return e.map(i=>({color:n[i].color,label:n[i].label,id:i})).filter(i=>i.label!==void 0)},Qq=Kq,Yq=t=>{const{seriesOrder:e,series:n}=t;return e.flatMap(r=>n[r].data.map(i=>({color:i.color,label:i.label,id:i.id})).filter(i=>i.label!==void 0))},Xq=Yq,Jq={bar:Wq,scatter:Gq,line:Qq,pie:Xq};function Zq(t){return Object.keys(t).flatMap(e=>Jq[e](t[e]))}function eG(t){return ut("MuiChartsLegend",t)}ct("MuiChartsLegend",["root","series","mark","label","column","row"]);const tG=["label"],nG=t=>{const{classes:e,direction:n}=t;return lt({root:["root",n],mark:["mark"],label:["label"],series:["series"]},eG,e)},rG=Te("g",{name:"MuiChartsLegend",slot:"Root",overridesResolver:(t,e)=>e.root})({}),iG={position:{horizontal:"middle",vertical:"top"},direction:"row"},sG=t=>typeof t=="number"?{left:t,right:t,top:t,bottom:t}:I({left:0,right:0,top:0,bottom:0},t);function oG(t){const{hidden:e,position:n,direction:r,seriesToDisplay:i,drawingArea:s,classes:o,itemMarkWidth:a=20,itemMarkHeight:l=20,markGap:u=5,itemGap:c=10,padding:h=10,labelStyle:d}=t,f=lo(),p=T.useMemo(()=>I({},f.typography.subtitle1,{color:"inherit",fill:(f.vars||f).palette.text.primary,lineHeight:1},d),[d,f]),m=T.useMemo(()=>sG(h),[h]),w=T.useCallback((b,E)=>{const C=RR({style:E,needsComputation:!0,text:b}),A={innerWidth:a+u+Math.max(...C.map(S=>S.width)),innerHeight:Math.max(l,C.length*C[0].height)};return I({},A,{outerWidth:A.innerWidth+c,outerHeight:A.innerHeight+c})},[c,l,a,u]),g=s.left+s.width+s.right,y=s.top+s.height+s.bottom,v=g-m.left-m.right,_=y-m.top-m.bottom,x=T.useMemo(()=>{let b=0,E=0,C=0,A=0,S=0;const P=[0],M=i.map(B=>{let{label:F}=B,K=ue(B,tG);const O=w(F,p),N=I({},K,{label:F,positionX:b,positionY:E,innerHeight:O.innerHeight,innerWidth:O.innerWidth,outerHeight:O.outerHeight,outerWidth:O.outerWidth,rowIndex:S});return r==="row"&&(b+O.innerWidth>v&&(b=0,E+=P[S],S+=1,P.length<=S&&P.push(0),N.positionX=b,N.positionY=E,N.rowIndex=S),C=Math.max(C,b+O.outerWidth),A=Math.max(A,E+O.outerHeight),P[S]=Math.max(P[S],O.outerHeight),b+=O.outerWidth),r==="column"&&(E+O.innerHeight>_&&(b=C+c,E=0,S=0,N.positionX=b,N.positionY=E,N.rowIndex=S),P.length<=S&&P.push(0),C=Math.max(C,b+O.outerWidth),A=Math.max(A,E+O.outerHeight),S+=1,E+=O.outerHeight),N});let D=0,$=0;switch(n.horizontal){case"left":D=m.left;break;case"right":D=g-m.right-C;break;default:D=(g-C)/2;break}switch(n.vertical){case"top":$=m.top;break;case"bottom":$=y-m.bottom-A;break;default:$=(y-A)/2;break}return M.map(B=>I({},B,{positionX:B.positionX+D,positionY:B.positionY+$+(r==="row"?P[B.rowIndex]/2:B.outerHeight/2)}))},[i,n.horizontal,n.vertical,w,p,r,v,_,c,m.left,m.right,m.top,m.bottom,g,y]);return e?null:k.jsx(aI,{children:k.jsx(rG,{className:o.root,children:x.map(({id:b,label:E,color:C,positionX:A,positionY:S})=>k.jsxs("g",{className:o.series,transform:`translate(${A} ${S})`,children:[k.jsx("rect",{className:o.mark,y:-l/2,width:a,height:l,fill:C}),k.jsx(Uu,{style:p,dominantBaseline:"central",textAnchor:"start",text:E,x:a+u,y:0})]},b))})})}function aG(t){var e;const n=tn({props:I({},iG,t),name:"MuiChartsLegend"}),{position:r,direction:i,hidden:s,slots:o,slotProps:a}=n,l=lo(),u=nG(I({},n,{theme:l})),c=T.useContext(go),h=T.useContext(Ti),d=Zq(h),f=(e=o==null?void 0:o.legend)!=null?e:oG,p=Cn({elementType:f,externalSlotProps:a==null?void 0:a.legend,additionalProps:{position:r,direction:i,classes:u,drawingArea:c,series:h,hidden:s,seriesToDisplay:d},ownerState:{}});return k.jsx(f,I({},p))}const lG=["id","classes","color","highlightScope","slots","slotProps"];function uG(t){return ut("MuiLineElement",t)}ct("MuiLineElement",["root","highlighted","faded"]);const cG=t=>{const{classes:e,id:n,isFaded:r,isHighlighted:i}=t,s={root:["root",`series-${n}`,i&&"highlighted",r&&"faded"]};return lt(s,uG,e)},$R=Te("path",{name:"MuiLineElement",slot:"Root",overridesResolver:(t,e)=>e.root})(({ownerState:t})=>({strokeWidth:2,strokeLinejoin:"round",fill:"none",stroke:t.isHighlighted?us(t.color).brighter(.5).formatHex():t.color,transition:"opacity 0.2s ease-in, stroke 0.2s ease-in",opacity:t.isFaded?.3:1}));$R.propTypes={as:ie.elementType,ownerState:ie.shape({classes:ie.object,color:ie.string.isRequired,id:ie.string.isRequired,isFaded:ie.bool.isRequired,isHighlighted:ie.bool.isRequired}).isRequired,sx:ie.oneOfType([ie.arrayOf(ie.oneOfType([ie.func,ie.object,ie.bool])),ie.func,ie.object])};function hG(t){var e;const{id:n,classes:r,color:i,highlightScope:s,slots:o,slotProps:a}=t,l=ue(t,lG),u=hw(s),{item:c}=T.useContext(Si),h=dw(c,{type:"line",seriesId:n},s),d=!h&&fw(c,{type:"line",seriesId:n},s),f={id:n,classes:r,color:i,isFaded:d,isHighlighted:h},p=cG(f),m=(e=o==null?void 0:o.line)!=null?e:$R,w=Cn({elementType:m,externalSlotProps:a==null?void 0:a.line,additionalProps:I({},l,u({type:"line",seriesId:n}),{className:p.root}),ownerState:f});return k.jsx(m,I({},w))}function LR(t){switch(t){case"catmullRom":return TW.alpha(.5);case"linear":return aw;case"monotoneX":return LE;case"monotoneY":return SW;case"natural":return kW;case"step":return CW;case"stepBefore":return IW;case"stepAfter":return PW;default:return LE}}const dG=["slots","slotProps"];function fG(t){const{slots:e,slotProps:n}=t,r=ue(t,dG),i=T.useContext(Ti).line,s=T.useContext(_r);if(i===void 0)return null;const{series:o,stackingGroups:a}=i,{xAxis:l,yAxis:u,xAxisIds:c,yAxisIds:h}=s,d=c[0],f=h[0];return k.jsx("g",I({},r,{children:a.flatMap(({ids:p})=>p.flatMap(m=>{const{xAxisKey:w=d,yAxisKey:g=f,stackedData:y}=o[m],v=Va(l[w].scale),_=u[g].scale,x=l[w].data;if(x===void 0)throw new Error(`Axis of id "${w}" should have data property to be able to display a line plot`);const b=fR().x(A=>v(A.x)).y(A=>_(A.y[1])),E=LR(o[m].curve),C=x==null?void 0:x.map((A,S)=>{var P;return{x:A,y:(P=y[S])!=null?P:[0,0]}});return k.jsx(hG,{id:m,d:b.curve(E)(C)||void 0,color:o[m].color,highlightScope:o[m].highlightScope,slots:e,slotProps:n},m)}))}))}const pG=["id","classes","color","highlightScope","slots","slotProps"];function mG(t){return ut("MuiAreaElement",t)}ct("MuiAreaElement",["root","highlighted","faded"]);const gG=t=>{const{classes:e,id:n,isFaded:r,isHighlighted:i}=t,s={root:["root",`series-${n}`,i&&"highlighted",r&&"faded"]};return lt(s,mG,e)},FR=Te("path",{name:"MuiAreaElement",slot:"Root",overridesResolver:(t,e)=>e.root})(({ownerState:t})=>({stroke:"none",fill:t.isHighlighted?us(t.color).brighter(1).formatHex():us(t.color).brighter(.5).formatHex(),transition:"opacity 0.2s ease-in, fill 0.2s ease-in",opacity:t.isFaded?.3:1}));FR.propTypes={as:ie.elementType,ownerState:ie.shape({classes:ie.object,color:ie.string.isRequired,id:ie.string.isRequired,isFaded:ie.bool.isRequired,isHighlighted:ie.bool.isRequired}).isRequired,sx:ie.oneOfType([ie.arrayOf(ie.oneOfType([ie.func,ie.object,ie.bool])),ie.func,ie.object])};function yG(t){var e;const{id:n,classes:r,color:i,highlightScope:s,slots:o,slotProps:a}=t,l=ue(t,pG),u=hw(s),{item:c}=T.useContext(Si),h=dw(c,{type:"line",seriesId:n},s),d=!h&&fw(c,{type:"line",seriesId:n},s),f={id:n,classes:r,color:i,isFaded:d,isHighlighted:h},p=gG(f),m=(e=o==null?void 0:o.area)!=null?e:FR,w=Cn({elementType:m,externalSlotProps:a==null?void 0:a.area,additionalProps:I({},l,u({type:"line",seriesId:n}),{className:p.root}),ownerState:f});return k.jsx(m,I({},w))}const vG=["slots","slotProps"];function _G(t){const{slots:e,slotProps:n}=t,r=ue(t,vG),i=T.useContext(Ti).line,s=T.useContext(_r);if(i===void 0)return null;const{series:o,stackingGroups:a}=i,{xAxis:l,yAxis:u,xAxisIds:c,yAxisIds:h}=s,d=c[0],f=h[0];return k.jsx("g",I({},r,{children:a.flatMap(({ids:p})=>p.flatMap(m=>{const{xAxisKey:w=d,yAxisKey:g=f,stackedData:y}=o[m],v=Va(l[w].scale),_=u[g].scale,x=l[w].data;if(x===void 0)throw new Error(`Axis of id "${w}" should have data property to be able to display a line plot.`);const b=oW().x(A=>v(A.x)).y0(A=>_(A.y[0])).y1(A=>_(A.y[1])),E=LR(o[m].curve),C=x==null?void 0:x.map((A,S)=>({x:A,y:y[S]}));return!!o[m].area&&k.jsx(yG,{id:m,d:b.curve(E)(C)||void 0,color:o[m].color,highlightScope:o[m].highlightScope,slots:e,slotProps:n},m)}))}))}function wG(t){return"circle cross diamond square star triangle wye".split(/ /).indexOf(t)||0}const xG=["x","y","id","classes","color","shape","dataIndex","highlightScope"];function bG(t){return ut("MuiMarkElement",t)}ct("MuiMarkElement",["root","highlighted","faded"]);const EG=t=>{const{classes:e,id:n,isFaded:r,isHighlighted:i}=t,s={root:["root",`series-${n}`,i&&"highlighted",r&&"faded"]};return lt(s,bG,e)},VR=Te("path",{name:"MuiMarkElement",slot:"Root",overridesResolver:(t,e)=>e.root})(({ownerState:t,theme:e})=>({transform:`translate(${t.x}px, ${t.y}px)`,transformOrigin:`${t.x}px ${t.y}px`,fill:(e.vars||e).palette.background.paper,stroke:t.color,strokeWidth:2}));VR.propTypes={as:ie.elementType,ownerState:ie.shape({classes:ie.object,color:ie.string.isRequired,id:ie.string.isRequired,isFaded:ie.bool.isRequired,isHighlighted:ie.bool.isRequired,x:ie.number.isRequired,y:ie.number.isRequired}).isRequired,sx:ie.oneOfType([ie.arrayOf(ie.oneOfType([ie.func,ie.object,ie.bool])),ie.func,ie.object])};function TG(t){var e;const{x:n,y:r,id:i,classes:s,color:o,shape:a,dataIndex:l,highlightScope:u}=t,c=ue(t,xG),h=hw(u),{item:d,axis:f}=T.useContext(Si),p=((e=f.x)==null?void 0:e.index)===l||dw(d,{type:"line",seriesId:i},u),m=!p&&fw(d,{type:"line",seriesId:i},u),w={id:i,classes:s,isHighlighted:p,isFaded:m,color:o,x:n,y:r},g=EG(w);return k.jsx(VR,I({},c,{ownerState:w,className:g.root,d:bW(xW[wG(a)])()},h({type:"line",seriesId:i,dataIndex:l})))}const SG=["slots","slotProps"];function kG(t){var e;const{slots:n,slotProps:r}=t,i=ue(t,SG),s=T.useContext(Ti).line,o=T.useContext(_r),a=(e=n==null?void 0:n.mark)!=null?e:TG;if(s===void 0)return null;const{series:l,stackingGroups:u}=s,{xAxis:c,yAxis:h,xAxisIds:d,yAxisIds:f}=o,p=d[0],m=f[0];return k.jsx("g",I({},i,{children:u.flatMap(({ids:w})=>w.flatMap(g=>{const{xAxisKey:y=p,yAxisKey:v=m,stackedData:_,showMark:x=!0}=l[g];if(x===!1)return null;const b=Va(c[y].scale),E=h[v].scale,C=c[y].data,A=c[y].scale.range(),S=E.range(),P=({x:M,y:D})=>!(MMath.max(...A)||DMath.max(...S));if(C===void 0)throw new Error(`Axis of id "${y}" should have data property to be able to display a line plot`);return C==null?void 0:C.map((M,D)=>{const $=_[D][1];return{x:b(M),y:E($),position:M,value:$,index:D}}).filter(P).map(({x:M,y:D,index:$,position:B,value:F})=>x===!0||x({x:M,y:D,index:$,position:B,value:F})?k.jsx(a,I({id:g,dataIndex:$,shape:"circle",color:l[g].color,x:M,y:D,highlightScope:l[g].highlightScope},r==null?void 0:r.mark),`${g}-${$}`):null)}))}))}const CG=["x","y","id","classes","color"];function IG(t){return ut("MuiHighlightElement",t)}ct("MuiHighlightElement",["root"]);const PG=t=>{const{classes:e,id:n}=t,r={root:["root",`series-${n}`]};return lt(r,IG,e)},AG=Te("circle",{name:"MuiHighlightElement",slot:"Root",overridesResolver:(t,e)=>e.root})(({ownerState:t})=>({transform:`translate(${t.x}px, ${t.y}px)`,transformOrigin:`${t.x}px ${t.y}px`,fill:t.color}));function RG(t){const{x:e,y:n,id:r,classes:i,color:s}=t,o=ue(t,CG),a={id:r,classes:i,color:s,x:e,y:n},l=PG(a);return k.jsx(AG,I({},o,{ownerState:a,className:l.root,cx:0,cy:0,r:o.r===void 0?5:o.r}))}const MG=["slots","slotProps"];function OG(t){var e,n;const{slots:r,slotProps:i}=t,s=ue(t,MG),o=T.useContext(Ti).line,a=T.useContext(_r),{axis:l}=T.useContext(Si),u=(e=l.x)==null?void 0:e.index;if(u===void 0||o===void 0)return null;const{series:c,stackingGroups:h}=o,{xAxis:d,yAxis:f,xAxisIds:p,yAxisIds:m}=a,w=p[0],g=m[0],y=(n=r==null?void 0:r.lineHighlight)!=null?n:RG;return k.jsx("g",I({},s,{children:h.flatMap(({ids:v})=>v.flatMap(_=>{const{xAxisKey:x=w,yAxisKey:b=g,stackedData:E,disableHighlight:C}=c[_];if(C)return null;const A=Va(d[x].scale),S=f[b].scale,P=d[x].data;if(P===void 0)throw new Error(`Axis of id "${x}" should have data property to be able to display a line plot.`);const M=A(P[u]),D=S(E[u][1]);return k.jsx(y,I({id:_,color:c[_].color,x:M,y:D},i==null?void 0:i.lineHighlight),`${_}`)}))}))}const DG=T.forwardRef(function(e,n){const{xAxis:r,yAxis:i,series:s,width:o,height:a,margin:l,colors:u,dataset:c,sx:h,tooltip:d,axisHighlight:f={x:"line"},disableLineItemHighlight:p,legend:m,topAxis:w,leftAxis:g,rightAxis:y,bottomAxis:v,children:_,slots:x,slotProps:b}=e,C=`${vC()}-clip-path`;return k.jsxs(Bq,{ref:n,series:s.map(A=>I({disableHighlight:!!p,type:"line"},A)),width:o,height:a,margin:l,xAxis:r??[{id:Ky,scaleType:"point",data:Array.from({length:Math.max(...s.map(A=>{var S,P;return((S=(P=A.data)!=null?P:c)!=null?S:[]).length}))},(A,S)=>S)}],yAxis:i,colors:u,dataset:c,sx:h,disableAxisListener:(d==null?void 0:d.trigger)!=="axis"&&(f==null?void 0:f.x)==="none"&&(f==null?void 0:f.y)==="none",children:[k.jsxs("g",{clipPath:`url(#${C})`,children:[k.jsx(_G,{slots:x,slotProps:b}),k.jsx(fG,{slots:x,slotProps:b})]}),k.jsx(vq,{topAxis:w,leftAxis:g,rightAxis:y,bottomAxis:v,slots:x,slotProps:b}),k.jsx(Mq,I({},f)),k.jsx(kG,{slots:x,slotProps:b}),k.jsx(OG,{slots:x,slotProps:b}),k.jsx(aG,I({},m,{slots:x,slotProps:b})),k.jsx(Rq,I({},d,{slots:x,slotProps:b})),k.jsx(oq,{id:C}),_]})});function NG(t){const[e,n]=T.useState(!1);return console.log(e),k.jsxs(k.Fragment,{children:[k.jsxs(ei,{display:"flex",justifyContent:"space-between",px:2,py:1,sx:{background:t.color,cursor:"pointer"},onClick:()=>n(!0),children:[k.jsx(Xt,{children:t.name}),k.jsx(Xt,{children:t.values[t.values.length-1]})]}),k.jsx(MU,{open:e,onClose:()=>n(!1),children:k.jsxs(Mh,{elevation:8,style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%,-50%)",backgroundColor:"whitesmoke",borderRadius:10,width:600,padding:16},children:[k.jsxs(ei,{display:"flex",justifyContent:"space-between",alignItems:"center",children:[k.jsx(Xt,{variant:"h5",children:t.name}),k.jsx(K5,{onClick:()=>n(!1),children:k.jsx(VA,{})})]}),k.jsx(DG,{xAxis:[{data:t.values.map((r,i)=>i)}],series:[{data:t.values}],width:600-2*16,height:400})]})})]})}function pw(t){const e=T.useMemo(()=>t.data.sort((n,r)=>r[1][r[1].length-1]-n[1][n[1].length-1]),[t.data]);return k.jsxs(k.Fragment,{children:[k.jsxs(ei,{display:"flex",justifyContent:"space-between",px:2,py:1,children:[k.jsx(Xt,{children:t.title}),k.jsx(Xt,{children:"Power Consumption (W)"})]}),e.map((n,r)=>k.jsx(NG,{name:n[0],values:n[1],color:r%2===0?"#e6e6e6":"whitesmoke"},r))]})}function $G(t){const e=T.useMemo(()=>(t.userData.devices??[]).map(r=>[r.name,r.power]),[t.userData.devices]);return k.jsxs(k.Fragment,{children:[k.jsx(Xt,{variant:"h5",p:2,children:"My Devices"}),k.jsx(pw,{title:"Device Name",data:e})]})}function LG(t){const[e,n]=T.useState(!0),[r,i]=T.useState(""),[s,o]=T.useState([]),a=T.useCallback(async()=>{if(t.userData.home){n(!0);const l=await d8(t.userData.home),c=(await LA(l.users??[])).filter(h=>{var d,f;return((d=h.devices)==null?void 0:d.length)&&((f=h.devices[0].power)==null?void 0:f.length)}).map(h=>{const d=h.devices.reduce((f,p)=>f.map((m,w)=>m+p.power[w]),h.devices[0].power.map(()=>0));return[h.name,d]});i(l.name),o(c),n(!1)}},[t.userData.home]);return T.useEffect(()=>{a()},[a]),t.userData.home?e?k.jsx(W0,{}):k.jsxs(k.Fragment,{children:[k.jsx(Xt,{variant:"h5",p:2,children:r}),k.jsx(pw,{title:"Name",data:s})]}):k.jsxs(k.Fragment,{children:[k.jsx(Xt,{variant:"h5",p:2,children:"No Home"}),k.jsx(Xt,{px:2,py:1,children:"Join a home to see how you stack up against your housemates!"})]})}function FG(){const[t,e]=T.useState(!0),[n,r]=T.useState([]),i=T.useCallback(async()=>{e(!0);const s=await h8(),o=[];for(const a of s)if(a.users&&a.users.length>0){const l=await LA(a.users);console.log(l);const c=l.filter(h=>{var d,f;return((d=h.devices)==null?void 0:d.length)&&((f=h.devices[0].power)==null?void 0:f.length)}).map(h=>h.devices.reduce((d,f)=>d.map((p,m)=>p+f.power[m]),h.devices[0].power.map(()=>0))).reduce((h,d)=>h.map((f,p)=>f+d[p]));o.push([a.name,c])}r(o),e(!1)},[]);return T.useEffect(()=>{i()},[i]),t?k.jsx(W0,{}):k.jsxs(k.Fragment,{children:[k.jsx(Xt,{variant:"h5",p:2,children:"Leaderboard"}),k.jsx(pw,{title:"Home",data:n})]})}function VG(t){return k.jsxs(ei,{display:"flex",flexDirection:"column",width:"100vw",height:"100vh",children:[k.jsxs(ei,{display:"flex",alignItems:"center",children:[k.jsx("img",{src:"/favicon.png",alt:"logo",width:44,height:44,style:{paddingLeft:16}}),k.jsx(Xt,{pl:2,variant:"h4",color:"white",fontFamily:"Young Serif",children:"Watt Wizard"}),k.jsx(ei,{flex:1}),k.jsx(ei,{px:4,py:2,children:k.jsx(by,{variant:"outlined",style:{color:"white",border:"1px solid white"},onClick:()=>s$(Gy),children:"Sign Out"})})]}),k.jsxs(Qc,{container:!0,flex:1,px:1.5,pb:1.5,children:[k.jsx(Qc,{item:!0,p:1.5,xs:4,children:k.jsx(Mh,{elevation:8,style:{height:"100%",backgroundColor:"whitesmoke",borderRadius:10},children:k.jsx(FG,{})})}),k.jsx(Qc,{item:!0,p:1.5,xs:4,children:k.jsx(Mh,{elevation:8,style:{height:"100%",backgroundColor:"whitesmoke",borderRadius:10},children:k.jsx(LG,{...t})})}),k.jsx(Qc,{item:!0,p:1.5,xs:4,children:k.jsx(Mh,{elevation:8,style:{height:"100%",backgroundColor:"whitesmoke",borderRadius:10},children:k.jsx($G,{...t})})})]})]})}const Kl="generated",zG="pointerdown",UG="pointerup",sv="pointerleave",jG="pointerout",ro="pointermove",BG="touchstart",GE="touchend",HG="touchmove",WG="touchcancel",qG="resize",GG="visibilitychange",Xn="tsParticles - Error";class yn{constructor(e,n,r){if(this._updateFromAngle=(i,s)=>{this.x=Math.cos(i)*s,this.y=Math.sin(i)*s},!cr(e)&&e){this.x=e.x,this.y=e.y;const i=e;this.z=i.z?i.z:0}else if(e!==void 0&&n!==void 0)this.x=e,this.y=n,this.z=r??0;else throw new Error(`${Xn} Vector3d not initialized correctly`)}static get origin(){return yn.create(0,0,0)}get angle(){return Math.atan2(this.y,this.x)}set angle(e){this._updateFromAngle(e,this.length)}get length(){return Math.sqrt(this.getLengthSq())}set length(e){this._updateFromAngle(this.angle,e)}static clone(e){return yn.create(e.x,e.y,e.z)}static create(e,n,r){return new yn(e,n,r)}add(e){return yn.create(this.x+e.x,this.y+e.y,this.z+e.z)}addTo(e){this.x+=e.x,this.y+=e.y,this.z+=e.z}copy(){return yn.clone(this)}distanceTo(e){return this.sub(e).length}distanceToSq(e){return this.sub(e).getLengthSq()}div(e){return yn.create(this.x/e,this.y/e,this.z/e)}divTo(e){this.x/=e,this.y/=e,this.z/=e}getLengthSq(){return this.x**2+this.y**2}mult(e){return yn.create(this.x*e,this.y*e,this.z*e)}multTo(e){this.x*=e,this.y*=e,this.z*=e}normalize(){const e=this.length;e!=0&&this.multTo(1/e)}rotate(e){return yn.create(this.x*Math.cos(e)-this.y*Math.sin(e),this.x*Math.sin(e)+this.y*Math.cos(e),0)}setTo(e){this.x=e.x,this.y=e.y;const n=e;this.z=n.z?n.z:0}sub(e){return yn.create(this.x-e.x,this.y-e.y,this.z-e.z)}subFrom(e){this.x-=e.x,this.y-=e.y,this.z-=e.z}}class vt extends yn{constructor(e,n){super(e,n,0)}static get origin(){return vt.create(0,0)}static clone(e){return vt.create(e.x,e.y)}static create(e,n){return new vt(e,n)}}let KG=Math.random;const ov=new Map;function Km(t,e){ov.get(t)||ov.set(t,e)}function zR(t){return ov.get(t)||(e=>e)}function ze(){return gr(KG(),0,1-1e-16)}function gr(t,e,n){return Math.min(Math.max(t,e),n)}function Qm(t,e,n,r){return Math.floor((t*n+e*r)/(n+r))}function an(t){const e=Bi(t);let n=mw(t);return e===n&&(n=0),ze()*(e-n)+n}function ne(t){return cr(t)?t:an(t)}function mw(t){return cr(t)?t:t.min}function Bi(t){return cr(t)?t:t.max}function fe(t,e){if(t===e||e===void 0&&cr(t))return t;const n=mw(t),r=Bi(t);return e!==void 0?{min:Math.min(n,e),max:Math.max(r,e)}:fe(n,r)}function io(t){const e=t.random,{enable:n,minimumValue:r}=ns(e)?{enable:e,minimumValue:0}:e;return ne(n?fe(t.value,r):t.value)}function Jt(t,e){const n=t.x-e.x,r=t.y-e.y;return{dx:n,dy:r,distance:Math.sqrt(n**2+r**2)}}function Tn(t,e){return Jt(t,e).distance}function QG(t,e,n){if(cr(t))return t*Math.PI/180;switch(t){case"top":return-Math.PI/2;case"top-right":return-Math.PI/4;case"right":return 0;case"bottom-right":return Math.PI/4;case"bottom":return Math.PI/2;case"bottom-left":return 3*Math.PI/4;case"left":return Math.PI;case"top-left":return-3*Math.PI/4;case"inside":return Math.atan2(n.y-e.y,n.x-e.x);case"outside":return Math.atan2(e.y-n.y,e.x-n.x);default:return ze()*Math.PI*2}}function YG(t){const e=vt.origin;return e.length=1,e.angle=t,e}function KE(t,e,n,r){return vt.create(t.x*(n-r)/(n+r)+e.x*2*r/(n+r),t.y)}function XG(t){var e,n;return{x:((e=t.position)==null?void 0:e.x)??ze()*t.size.width,y:((n=t.position)==null?void 0:n.y)??ze()*t.size.height}}function UR(t){return t?t.endsWith("%")?parseFloat(t)/100:parseFloat(t):1}const JG={debug:console.debug,error:console.error,info:console.info,log:console.log,verbose:console.log,warning:console.warn};function so(){return JG}function QE(t){const e={bounced:!1},{pSide:n,pOtherSide:r,rectSide:i,rectOtherSide:s,velocity:o,factor:a}=t;return r.mins.max||r.maxs.max||(n.max>=i.min&&n.max<=(i.max+i.min)/2&&o>0||n.min<=i.max&&n.min>(i.max+i.min)/2&&o<0)&&(e.velocity=o*-a,e.bounced=!0),e}function ZG(t,e){const n=wt(e,r=>t.matches(r));return Sn(n)?n.some(r=>r):n}function za(){return typeof window>"u"||!window||typeof window.document>"u"||!window.document}function eK(){return!za()&&typeof matchMedia<"u"}function jR(t){if(eK())return matchMedia(t)}function tK(t){if(!(za()||typeof MutationObserver>"u"))return new MutationObserver(t)}function tt(t,e){return t===e||Sn(e)&&e.indexOf(t)>-1}async function nK(t,e){try{await document.fonts.load(`${e??"400"} 36px '${t??"Verdana"}'`)}catch{}}function rK(t){return Math.floor(ze()*t.length)}function $p(t,e,n=!0){return t[e!==void 0&&n?e%t.length:rK(t)]}function gw(t,e,n,r,i){return iK(kc(t,r??0),e,n,i)}function iK(t,e,n,r){let i=!0;return(!r||r==="bottom")&&(i=t.topn.x),i&&(!r||r==="right")&&(i=t.leftn.y),i}function kc(t,e){return{bottom:t.y+e,left:t.x-e,right:t.x+e,top:t.y-e}}function Bt(t,...e){for(const n of e){if(n==null)continue;if(!Go(n)){t=n;continue}const r=Array.isArray(n);r&&(Go(t)||!t||!Array.isArray(t))?t=[]:!r&&(Go(t)||!t||Array.isArray(t))&&(t={});for(const i in n){if(i==="__proto__")continue;const s=n,o=s[i],a=t;a[i]=Go(o)&&Array.isArray(o)?o.map(l=>Bt(a[i],l)):Bt(a[i],o)}}return t}function yw(t,e){return!!WR(e,n=>n.enable&&tt(t,n.mode))}function vw(t,e,n){wt(e,r=>{const i=r.mode;r.enable&&tt(t,i)&&sK(r,n)})}function sK(t,e){const n=t.selectors;wt(n,r=>{e(r,t)})}function BR(t,e){if(!(!e||!t))return WR(t,n=>ZG(e,n.selectors))}function av(t){return{position:t.getPosition(),radius:t.getRadius(),mass:t.getMass(),velocity:t.velocity,factor:vt.create(io(t.options.bounce.horizontal),io(t.options.bounce.vertical))}}function HR(t,e){const{x:n,y:r}=t.velocity.sub(e.velocity),[i,s]=[t.position,e.position],{dx:o,dy:a}=Jt(s,i);if(n*o+r*a<0)return;const l=-Math.atan2(a,o),u=t.mass,c=e.mass,h=t.velocity.rotate(l),d=e.velocity.rotate(l),f=KE(h,d,u,c),p=KE(d,h,u,c),m=f.rotate(-l),w=p.rotate(-l);t.velocity.x=m.x*t.factor.x,t.velocity.y=m.y*t.factor.y,e.velocity.x=w.x*e.factor.x,e.velocity.y=w.y*e.factor.y}function oK(t,e){const n=t.getPosition(),r=t.getRadius(),i=kc(n,r),s=QE({pSide:{min:i.left,max:i.right},pOtherSide:{min:i.top,max:i.bottom},rectSide:{min:e.left,max:e.right},rectOtherSide:{min:e.top,max:e.bottom},velocity:t.velocity.x,factor:io(t.options.bounce.horizontal)});s.bounced&&(s.velocity!==void 0&&(t.velocity.x=s.velocity),s.position!==void 0&&(t.position.x=s.position));const o=QE({pSide:{min:i.top,max:i.bottom},pOtherSide:{min:i.left,max:i.right},rectSide:{min:e.top,max:e.bottom},rectOtherSide:{min:e.left,max:e.right},velocity:t.velocity.y,factor:io(t.options.bounce.vertical)});o.bounced&&(o.velocity!==void 0&&(t.velocity.y=o.velocity),o.position!==void 0&&(t.position.y=o.position))}function wt(t,e){return Sn(t)?t.map((n,r)=>e(n,r)):e(t,0)}function ai(t,e,n){return Sn(t)?$p(t,e,n):t}function WR(t,e){return Sn(t)?t.find((n,r)=>e(n,r)):e(t,0)?t:void 0}function qR(t,e){const n=t.value,r=t.animation,i={delayTime:ne(r.delay)*1e3,enable:r.enable,value:ne(t.value)*e,max:Bi(n)*e,min:mw(n)*e,loops:0,maxLoops:ne(r.count),time:0};if(r.enable){switch(i.decay=1-ne(r.decay),r.mode){case"increase":i.status="increasing";break;case"decrease":i.status="decreasing";break;case"random":i.status=ze()>=.5?"increasing":"decreasing";break}const s=r.mode==="auto";switch(r.startValue){case"min":i.value=i.min,s&&(i.status="increasing");break;case"max":i.value=i.max,s&&(i.status="decreasing");break;case"random":default:i.value=an(i),s&&(i.status=ze()>=.5?"increasing":"decreasing");break}}return i.initialValue=i.value,i}function aK(t,e){if(!(t.mode==="percent")){const{mode:i,...s}=t;return s}return"x"in t?{x:t.x/100*e.width,y:t.y/100*e.height}:{width:t.width/100*e.width,height:t.height/100*e.height}}function GR(t,e){return aK(t,e)}function ns(t){return typeof t=="boolean"}function ur(t){return typeof t=="string"}function cr(t){return typeof t=="number"}function KR(t){return typeof t=="function"}function Go(t){return typeof t=="object"&&t!==null}function Sn(t){return Array.isArray(t)}const Zd="random",Fh="mid",Lp=new Map;function YE(t){Lp.set(t.key,t)}function Ym(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+(e-t)*6*n:n<1/2?e:n<2/3?t+(e-t)*(2/3-n)*6:t}function lK(t){for(const[,s]of Lp)if(t.startsWith(s.stringPrefix))return s.parseString(t);const e=/^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i,n=t.replace(e,(s,o,a,l,u)=>o+o+a+a+l+l+(u!==void 0?u+u:"")),r=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i,i=r.exec(n);return i?{a:i[4]!==void 0?parseInt(i[4],16)/255:1,b:parseInt(i[3],16),g:parseInt(i[2],16),r:parseInt(i[1],16)}:void 0}function hr(t,e,n=!0){if(!t)return;const r=ur(t)?{value:t}:t;if(ur(r.value))return QR(r.value,e,n);if(Sn(r.value))return hr({value:$p(r.value,e,n)});for(const[,i]of Lp){const s=i.handleRangeColor(r);if(s)return s}}function QR(t,e,n=!0){if(!t)return;const r=ur(t)?{value:t}:t;if(ur(r.value))return r.value===Zd?XR():uK(r.value);if(Sn(r.value))return QR({value:$p(r.value,e,n)});for(const[,i]of Lp){const s=i.handleColor(r);if(s)return s}}function ju(t,e,n=!0){const r=hr(t,e,n);return r?YR(r):void 0}function YR(t){const e=t.r/255,n=t.g/255,r=t.b/255,i=Math.max(e,n,r),s=Math.min(e,n,r),o={h:0,l:(i+s)/2,s:0};return i!==s&&(o.s=o.l<.5?(i-s)/(i+s):(i-s)/(2-i-s),o.h=e===i?(n-r)/(i-s):o.h=n===i?2+(r-e)/(i-s):4+(e-n)/(i-s)),o.l*=100,o.s*=100,o.h*=60,o.h<0&&(o.h+=360),o.h>=360&&(o.h-=360),o}function uK(t){return lK(t)}function Ua(t){const e={b:0,g:0,r:0},n={h:t.h/360,l:t.l/100,s:t.s/100};if(!n.s)e.r=e.g=e.b=n.l;else{const r=n.l<.5?n.l*(1+n.s):n.l+n.s-n.l*n.s,i=2*n.l-r;e.r=Ym(i,r,n.h+1/3),e.g=Ym(i,r,n.h),e.b=Ym(i,r,n.h-1/3)}return e.r=Math.floor(e.r*255),e.g=Math.floor(e.g*255),e.b=Math.floor(e.b*255),e}function cK(t){const e=Ua(t);return{a:t.a,b:e.b,g:e.g,r:e.r}}function XR(t){const e=t??0;return{b:Math.floor(an(fe(e,256))),g:Math.floor(an(fe(e,256))),r:Math.floor(an(fe(e,256)))}}function li(t,e){return`rgba(${t.r}, ${t.g}, ${t.b}, ${e??1})`}function Bu(t,e){return`hsla(${t.h}, ${t.s}%, ${t.l}%, ${e??1})`}function _w(t,e,n,r){let i=t,s=e;return i.r===void 0&&(i=Ua(t)),s.r===void 0&&(s=Ua(e)),{b:Qm(i.b,s.b,n,r),g:Qm(i.g,s.g,n,r),r:Qm(i.r,s.r,n,r)}}function lv(t,e,n){if(n===Zd)return XR();if(n===Fh){const r=t.getFillColor()??t.getStrokeColor(),i=(e==null?void 0:e.getFillColor())??(e==null?void 0:e.getStrokeColor());if(r&&i&&e)return _w(r,i,t.getRadius(),e.getRadius());{const s=r??i;if(s)return Ua(s)}}else return n}function JR(t,e,n){const r=ur(t)?t:t.value;return r===Zd?n?hr({value:r}):e?Zd:Fh:r===Fh?Fh:hr({value:r})}function XE(t){return t!==void 0?{h:t.h.value,s:t.s.value,l:t.l.value}:void 0}function ZR(t,e,n){const r={h:{enable:!1,value:t.h},s:{enable:!1,value:t.s},l:{enable:!1,value:t.l}};return e&&(Xm(r.h,e.h,n),Xm(r.s,e.s,n),Xm(r.l,e.l,n)),r}function Xm(t,e,n){t.enable=e.enable,t.enable?(t.velocity=ne(e.speed)/100*n,t.decay=1-ne(e.decay),t.status="increasing",t.loops=0,t.maxLoops=ne(e.count),t.time=0,t.delayTime=ne(e.delay)*1e3,e.sync||(t.velocity*=ze(),t.value*=ze()),t.initialValue=t.value):t.velocity=0}function Ql(t,e,n){t.beginPath(),t.moveTo(e.x,e.y),t.lineTo(n.x,n.y),t.closePath()}function hK(t,e,n,r){t.beginPath(),t.moveTo(e.x,e.y),t.lineTo(n.x,n.y),t.lineTo(r.x,r.y),t.closePath()}function dK(t,e,n){t.fillStyle=n??"rgba(0,0,0,0)",t.fillRect(0,0,e.width,e.height)}function fK(t,e,n,r){n&&(t.globalAlpha=r,t.drawImage(n,0,0,e.width,e.height),t.globalAlpha=1)}function Jm(t,e){t.clearRect(0,0,e.width,e.height)}function pK(t){const{container:e,context:n,particle:r,delta:i,colorStyles:s,backgroundMask:o,composite:a,radius:l,opacity:u,shadow:c,transform:h}=t,d=r.getPosition(),f=r.rotation+(r.pathRotation?r.velocity.angle:0),p={sin:Math.sin(f),cos:Math.cos(f)},m={a:p.cos*(h.a??1),b:p.sin*(h.b??1),c:-p.sin*(h.c??1),d:p.cos*(h.d??1)};n.setTransform(m.a,m.b,m.c,m.d,d.x,d.y),n.beginPath(),o&&(n.globalCompositeOperation=a);const w=r.shadowColor;c.enable&&w&&(n.shadowBlur=c.blur,n.shadowColor=li(w),n.shadowOffsetX=c.offset.x,n.shadowOffsetY=c.offset.y),s.fill&&(n.fillStyle=s.fill);const g=r.strokeWidth??0;n.lineWidth=g,s.stroke&&(n.strokeStyle=s.stroke),mK(e,n,r,l,u,i),g>0&&n.stroke(),r.close&&n.closePath(),r.fill&&n.fill(),gK(e,n,r,l,u,i),n.globalCompositeOperation="source-over",n.setTransform(1,0,0,1,0,0)}function mK(t,e,n,r,i,s){if(!n.shape)return;const o=t.drawers.get(n.shape);o&&o.draw(e,n,r,i,s,t.retina.pixelRatio)}function gK(t,e,n,r,i,s){if(!n.shape)return;const o=t.drawers.get(n.shape);!o||!o.afterEffect||o.afterEffect(e,n,r,i,s,t.retina.pixelRatio)}function yK(t,e,n){e.draw&&e.draw(t,n)}function vK(t,e,n,r){e.drawParticle&&e.drawParticle(t,n,r)}function _K(t,e,n){return{h:t.h,s:t.s,l:t.l+(e==="darken"?-1:1)*n}}function wK(t,e,n){const r=e[n];r!==void 0&&(t[n]=(t[n]??1)*r)}class xK{constructor(e){this.container=e,this._applyPostDrawUpdaters=n=>{for(const r of this._postDrawUpdaters)r.afterDraw&&r.afterDraw(n)},this._applyPreDrawUpdaters=(n,r,i,s,o,a)=>{for(const l of this._preDrawUpdaters){if(l.getColorStyles){const{fill:u,stroke:c}=l.getColorStyles(r,n,i,s);u&&(o.fill=u),c&&(o.stroke=c)}if(l.getTransformValues){const u=l.getTransformValues(r);for(const c in u)wK(a,u,c)}l.beforeDraw&&l.beforeDraw(r)}},this._applyResizePlugins=()=>{for(const n of this._resizePlugins)n.resize&&n.resize()},this._getPluginParticleColors=n=>{let r,i;for(const s of this._colorPlugins)if(!r&&s.particleFillColor&&(r=ju(s.particleFillColor(n))),!i&&s.particleStrokeColor&&(i=ju(s.particleStrokeColor(n))),r&&i)break;return[r,i]},this._initCover=()=>{const n=this.container.actualOptions,r=n.backgroundMask.cover,i=r.color,s=hr(i);if(s){const o={...s,a:r.opacity};this._coverColorStyle=li(o,o.a)}},this._initStyle=()=>{const n=this.element,r=this.container.actualOptions;if(n){this._fullScreen?(this._originalStyle=Bt({},n.style),this._setFullScreenStyle()):this._resetOriginalStyle();for(const i in r.style){if(!i||!r.style)continue;const s=r.style[i];s&&n.style.setProperty(i,s,"important")}}},this._initTrail=async()=>{const n=this.container.actualOptions,r=n.particles.move.trail,i=r.fill;if(r.enable)if(i.color){const s=hr(i.color);if(!s)return;const o=n.particles.move.trail;this._trailFill={color:{...s},opacity:1/o.length}}else await new Promise((s,o)=>{if(!i.image)return;const a=document.createElement("img");a.addEventListener("load",()=>{this._trailFill={image:a,opacity:1/r.length},s()}),a.addEventListener("error",l=>{o(l.error)}),a.src=i.image})},this._paintBase=n=>{this.draw(r=>dK(r,this.size,n))},this._paintImage=(n,r)=>{this.draw(i=>fK(i,this.size,n,r))},this._repairStyle=()=>{const n=this.element;n&&(this._safeMutationObserver(r=>r.disconnect()),this._initStyle(),this.initBackground(),this._safeMutationObserver(r=>r.observe(n,{attributes:!0})))},this._resetOriginalStyle=()=>{const n=this.element,r=this._originalStyle;if(!(n&&r))return;const i=n.style;i.position=r.position,i.zIndex=r.zIndex,i.top=r.top,i.left=r.left,i.width=r.width,i.height=r.height},this._safeMutationObserver=n=>{this._mutationObserver&&n(this._mutationObserver)},this._setFullScreenStyle=()=>{const n=this.element;if(!n)return;const r="important",i=n.style;i.setProperty("position","fixed",r),i.setProperty("z-index",this.container.actualOptions.fullScreen.zIndex.toString(10),r),i.setProperty("top","0",r),i.setProperty("left","0",r),i.setProperty("width","100%",r),i.setProperty("height","100%",r)},this.size={height:0,width:0},this._context=null,this._generated=!1,this._preDrawUpdaters=[],this._postDrawUpdaters=[],this._resizePlugins=[],this._colorPlugins=[]}get _fullScreen(){return this.container.actualOptions.fullScreen.enable}clear(){const e=this.container.actualOptions,n=e.particles.move.trail,r=this._trailFill;e.backgroundMask.enable?this.paint():n.enable&&n.length>0&&r?r.color?this._paintBase(li(r.color,r.opacity)):r.image&&this._paintImage(r.image,r.opacity):this.draw(i=>{Jm(i,this.size)})}destroy(){if(this.stop(),this._generated){const e=this.element;e&&e.remove()}else this._resetOriginalStyle();this._preDrawUpdaters=[],this._postDrawUpdaters=[],this._resizePlugins=[],this._colorPlugins=[]}draw(e){const n=this._context;if(n)return e(n)}drawParticle(e,n){if(e.spawning||e.destroyed)return;const r=e.getRadius();if(r<=0)return;const i=e.getFillColor(),s=e.getStrokeColor()??i;let[o,a]=this._getPluginParticleColors(e);o||(o=i),a||(a=s),!(!o&&!a)&&this.draw(l=>{var v;const u=this.container,c=u.actualOptions,h=e.options.zIndex,d=(1-e.zIndexFactor)**h.opacityRate,f=e.bubble.opacity??((v=e.opacity)==null?void 0:v.value)??1,p=e.strokeOpacity??f,m=f*d,w=p*d,g={},y={fill:o?Bu(o,m):void 0};y.stroke=a?Bu(a,w):y.fill,this._applyPreDrawUpdaters(l,e,r,m,y,g),pK({container:u,context:l,particle:e,delta:n,colorStyles:y,backgroundMask:c.backgroundMask.enable,composite:c.backgroundMask.composite,radius:r*(1-e.zIndexFactor)**h.sizeRate,opacity:m,shadow:e.options.shadow,transform:g}),this._applyPostDrawUpdaters(e)})}drawParticlePlugin(e,n,r){this.draw(i=>vK(i,e,n,r))}drawPlugin(e,n){this.draw(r=>yK(r,e,n))}async init(){this._safeMutationObserver(e=>e.disconnect()),this._mutationObserver=tK(e=>{for(const n of e)n.type==="attributes"&&n.attributeName==="style"&&this._repairStyle()}),this.resize(),this._initStyle(),this._initCover();try{await this._initTrail()}catch(e){so().error(e)}this.initBackground(),this._safeMutationObserver(e=>{this.element&&e.observe(this.element,{attributes:!0})}),this.initUpdaters(),this.initPlugins(),this.paint()}initBackground(){const e=this.container.actualOptions,n=e.background,r=this.element;if(!r)return;const i=r.style;if(i){if(n.color){const s=hr(n.color);i.backgroundColor=s?li(s,n.opacity):""}else i.backgroundColor="";i.backgroundImage=n.image||"",i.backgroundPosition=n.position||"",i.backgroundRepeat=n.repeat||"",i.backgroundSize=n.size||""}}initPlugins(){this._resizePlugins=[];for(const[,e]of this.container.plugins)e.resize&&this._resizePlugins.push(e),(e.particleFillColor||e.particleStrokeColor)&&this._colorPlugins.push(e)}initUpdaters(){this._preDrawUpdaters=[],this._postDrawUpdaters=[];for(const e of this.container.particles.updaters)e.afterDraw&&this._postDrawUpdaters.push(e),(e.getColorStyles||e.getTransformValues||e.beforeDraw)&&this._preDrawUpdaters.push(e)}loadCanvas(e){this._generated&&this.element&&this.element.remove(),this._generated=e.dataset&&Kl in e.dataset?e.dataset[Kl]==="true":this._generated,this.element=e,this.element.ariaHidden="true",this._originalStyle=Bt({},this.element.style),this.size.height=e.offsetHeight,this.size.width=e.offsetWidth,this._context=this.element.getContext("2d"),this._safeMutationObserver(n=>{this.element&&n.observe(this.element,{attributes:!0})}),this.container.retina.init(),this.initBackground()}paint(){const e=this.container.actualOptions;this.draw(n=>{e.backgroundMask.enable&&e.backgroundMask.cover?(Jm(n,this.size),this._paintBase(this._coverColorStyle)):this._paintBase()})}resize(){if(!this.element)return!1;const e=this.container,n=e.retina.pixelRatio,r=e.canvas.size,i={width:this.element.offsetWidth*n,height:this.element.offsetHeight*n};if(i.height===r.height&&i.width===r.width&&i.height===this.element.height&&i.width===this.element.width)return!1;const s={...r};return this.element.width=r.width=this.element.offsetWidth*n,this.element.height=r.height=this.element.offsetHeight*n,this.container.started&&(this.resizeFactor={width:r.width/s.width,height:r.height/s.height}),!0}stop(){this._safeMutationObserver(e=>e.disconnect()),this._mutationObserver=void 0,this.draw(e=>Jm(e,this.size))}async windowResize(){if(!this.element||!this.resize())return;const e=this.container,n=e.updateActualOptions();e.particles.setDensity(),this._applyResizePlugins(),n&&await e.refresh()}}function $n(t,e,n,r,i){if(r){let s={passive:!0};ns(i)?s.capture=i:i!==void 0&&(s=i),t.addEventListener(e,n,s)}else{const s=i;t.removeEventListener(e,n,s)}}class bK{constructor(e){this.container=e,this._doMouseTouchClick=n=>{const r=this.container,i=r.actualOptions;if(this._canPush){const s=r.interactivity.mouse,o=s.position;if(!o)return;s.clickPosition={...o},s.clickTime=new Date().getTime();const a=i.interactivity.events.onClick;wt(a.mode,l=>this.container.handleClickMode(l))}n.type==="touchend"&&setTimeout(()=>this._mouseTouchFinish(),500)},this._handleThemeChange=n=>{const r=n,i=this.container,s=i.options,o=s.defaultThemes,a=r.matches?o.dark:o.light,l=s.themes.find(u=>u.name===a);l&&l.default.auto&&i.loadTheme(a)},this._handleVisibilityChange=()=>{const n=this.container,r=n.actualOptions;this._mouseTouchFinish(),r.pauseOnBlur&&(document&&document.hidden?(n.pageHidden=!0,n.pause()):(n.pageHidden=!1,n.getAnimationStatus()?n.play(!0):n.draw(!0)))},this._handleWindowResize=async()=>{this._resizeTimeout&&(clearTimeout(this._resizeTimeout),delete this._resizeTimeout),this._resizeTimeout=setTimeout(async()=>{const n=this.container.canvas;n&&await n.windowResize()},this.container.actualOptions.interactivity.events.resize.delay*1e3)},this._manageInteractivityListeners=(n,r)=>{const i=this._handlers,s=this.container,o=s.actualOptions,a=s.interactivity.element;if(!a)return;const l=a,u=s.canvas.element;u&&(u.style.pointerEvents=l===u?"initial":"none"),(o.interactivity.events.onHover.enable||o.interactivity.events.onClick.enable)&&($n(a,ro,i.mouseMove,r),$n(a,BG,i.touchStart,r),$n(a,HG,i.touchMove,r),o.interactivity.events.onClick.enable?($n(a,GE,i.touchEndClick,r),$n(a,UG,i.mouseUp,r),$n(a,zG,i.mouseDown,r)):$n(a,GE,i.touchEnd,r),$n(a,n,i.mouseLeave,r),$n(a,WG,i.touchCancel,r))},this._manageListeners=n=>{const r=this._handlers,i=this.container,s=i.actualOptions,o=s.interactivity.detectsOn,a=i.canvas.element;let l=sv;o==="window"?(i.interactivity.element=window,l=jG):o==="parent"&&a?i.interactivity.element=a.parentElement??a.parentNode:i.interactivity.element=a,this._manageMediaMatch(n),this._manageResize(n),this._manageInteractivityListeners(l,n),document&&$n(document,GG,r.visibilityChange,n,!1)},this._manageMediaMatch=n=>{const r=this._handlers,i=jR("(prefers-color-scheme: dark)");if(i){if(i.addEventListener!==void 0){$n(i,"change",r.themeChange,n);return}i.addListener!==void 0&&(n?i.addListener(r.oldThemeChange):i.removeListener(r.oldThemeChange))}},this._manageResize=n=>{const r=this._handlers,i=this.container;if(!i.actualOptions.interactivity.events.resize)return;if(typeof ResizeObserver>"u"){$n(window,qG,r.resize,n);return}const o=i.canvas.element;this._resizeObserver&&!n?(o&&this._resizeObserver.unobserve(o),this._resizeObserver.disconnect(),delete this._resizeObserver):!this._resizeObserver&&n&&o&&(this._resizeObserver=new ResizeObserver(async a=>{a.find(u=>u.target===o)&&await this._handleWindowResize()}),this._resizeObserver.observe(o))},this._mouseDown=()=>{const{interactivity:n}=this.container;if(!n)return;const{mouse:r}=n;r.clicking=!0,r.downPosition=r.position},this._mouseTouchClick=n=>{const r=this.container,i=r.actualOptions,{mouse:s}=r.interactivity;s.inside=!0;let o=!1;const a=s.position;if(!(!a||!i.interactivity.events.onClick.enable)){for(const[,l]of r.plugins)if(l.clickPositionValid&&(o=l.clickPositionValid(a),o))break;o||this._doMouseTouchClick(n),s.clicking=!1}},this._mouseTouchFinish=()=>{const n=this.container.interactivity;if(!n)return;const r=n.mouse;delete r.position,delete r.clickPosition,delete r.downPosition,n.status=sv,r.inside=!1,r.clicking=!1},this._mouseTouchMove=n=>{const r=this.container,i=r.actualOptions,s=r.interactivity,o=r.canvas.element;if(!s||!s.element)return;s.mouse.inside=!0;let a;if(n.type.startsWith("pointer")){this._canPush=!0;const u=n;if(s.element===window){if(o){const c=o.getBoundingClientRect();a={x:u.clientX-c.left,y:u.clientY-c.top}}}else if(i.interactivity.detectsOn==="parent"){const c=u.target,h=u.currentTarget;if(c&&h&&o){const d=c.getBoundingClientRect(),f=h.getBoundingClientRect(),p=o.getBoundingClientRect();a={x:u.offsetX+2*d.left-(f.left+p.left),y:u.offsetY+2*d.top-(f.top+p.top)}}else a={x:u.offsetX??u.clientX,y:u.offsetY??u.clientY}}else u.target===o&&(a={x:u.offsetX??u.clientX,y:u.offsetY??u.clientY})}else if(this._canPush=n.type!=="touchmove",o){const u=n,c=u.touches[u.touches.length-1],h=o.getBoundingClientRect();a={x:c.clientX-(h.left??0),y:c.clientY-(h.top??0)}}const l=r.retina.pixelRatio;a&&(a.x*=l,a.y*=l),s.mouse.position=a,s.status=ro},this._touchEnd=n=>{const r=n,i=Array.from(r.changedTouches);for(const s of i)this._touches.delete(s.identifier);this._mouseTouchFinish()},this._touchEndClick=n=>{const r=n,i=Array.from(r.changedTouches);for(const s of i)this._touches.delete(s.identifier);this._mouseTouchClick(n)},this._touchStart=n=>{const r=n,i=Array.from(r.changedTouches);for(const s of i)this._touches.set(s.identifier,performance.now());this._mouseTouchMove(n)},this._canPush=!0,this._touches=new Map,this._handlers={mouseDown:()=>this._mouseDown(),mouseLeave:()=>this._mouseTouchFinish(),mouseMove:n=>this._mouseTouchMove(n),mouseUp:n=>this._mouseTouchClick(n),touchStart:n=>this._touchStart(n),touchMove:n=>this._mouseTouchMove(n),touchEnd:n=>this._touchEnd(n),touchCancel:n=>this._touchEnd(n),touchEndClick:n=>this._touchEndClick(n),visibilityChange:()=>this._handleVisibilityChange(),themeChange:n=>this._handleThemeChange(n),oldThemeChange:n=>this._handleThemeChange(n),resize:()=>{this._handleWindowResize()}}}addListeners(){this._manageListeners(!0)}removeListeners(){this._manageListeners(!1)}}class Ot{constructor(){this.value=""}static create(e,n){const r=new Ot;return r.load(e),n!==void 0&&(ur(n)||Sn(n)?r.load({value:n}):r.load(n)),r}load(e){(e==null?void 0:e.value)!==void 0&&(this.value=e.value)}}class EK{constructor(){this.color=new Ot,this.color.value="",this.image="",this.position="",this.repeat="",this.size="",this.opacity=1}load(e){e&&(e.color!==void 0&&(this.color=Ot.create(this.color,e.color)),e.image!==void 0&&(this.image=e.image),e.position!==void 0&&(this.position=e.position),e.repeat!==void 0&&(this.repeat=e.repeat),e.size!==void 0&&(this.size=e.size),e.opacity!==void 0&&(this.opacity=e.opacity))}}class TK{constructor(){this.color=new Ot,this.color.value="#fff",this.opacity=1}load(e){e&&(e.color!==void 0&&(this.color=Ot.create(this.color,e.color)),e.opacity!==void 0&&(this.opacity=e.opacity))}}class SK{constructor(){this.composite="destination-out",this.cover=new TK,this.enable=!1}load(e){if(e){if(e.composite!==void 0&&(this.composite=e.composite),e.cover!==void 0){const n=e.cover,r=ur(e.cover)?{color:e.cover}:e.cover;this.cover.load(n.color!==void 0?n:{color:r})}e.enable!==void 0&&(this.enable=e.enable)}}}class kK{constructor(){this.enable=!0,this.zIndex=0}load(e){e&&(e.enable!==void 0&&(this.enable=e.enable),e.zIndex!==void 0&&(this.zIndex=e.zIndex))}}class CK{constructor(){this.enable=!1,this.mode=[]}load(e){e&&(e.enable!==void 0&&(this.enable=e.enable),e.mode!==void 0&&(this.mode=e.mode))}}class JE{constructor(){this.selectors=[],this.enable=!1,this.mode=[],this.type="circle"}get el(){return this.elementId}set el(e){this.elementId=e}get elementId(){return this.ids}set elementId(e){this.ids=e}get ids(){return wt(this.selectors,e=>e.replace("#",""))}set ids(e){this.selectors=wt(e,n=>`#${n}`)}load(e){if(!e)return;const n=e.ids??e.elementId??e.el;n!==void 0&&(this.ids=n),e.selectors!==void 0&&(this.selectors=e.selectors),e.enable!==void 0&&(this.enable=e.enable),e.mode!==void 0&&(this.mode=e.mode),e.type!==void 0&&(this.type=e.type)}}class IK{constructor(){this.enable=!1,this.force=2,this.smooth=10}load(e){e&&(e.enable!==void 0&&(this.enable=e.enable),e.force!==void 0&&(this.force=e.force),e.smooth!==void 0&&(this.smooth=e.smooth))}}class PK{constructor(){this.enable=!1,this.mode=[],this.parallax=new IK}load(e){e&&(e.enable!==void 0&&(this.enable=e.enable),e.mode!==void 0&&(this.mode=e.mode),this.parallax.load(e.parallax))}}class AK{constructor(){this.delay=.5,this.enable=!0}load(e){e!==void 0&&(e.delay!==void 0&&(this.delay=e.delay),e.enable!==void 0&&(this.enable=e.enable))}}class RK{constructor(){this.onClick=new CK,this.onDiv=new JE,this.onHover=new PK,this.resize=new AK}get onclick(){return this.onClick}set onclick(e){this.onClick=e}get ondiv(){return this.onDiv}set ondiv(e){this.onDiv=e}get onhover(){return this.onHover}set onhover(e){this.onHover=e}load(e){if(!e)return;this.onClick.load(e.onClick??e.onclick);const n=e.onDiv??e.ondiv;n!==void 0&&(this.onDiv=wt(n,r=>{const i=new JE;return i.load(r),i})),this.onHover.load(e.onHover??e.onhover),ns(e.resize)?this.resize.enable=e.resize:this.resize.load(e.resize)}}class MK{constructor(e,n){this._engine=e,this._container=n}load(e){if(!e||!this._container)return;const n=this._engine.plugins.interactors.get(this._container);if(n)for(const r of n)r.loadModeOptions&&r.loadModeOptions(this,e)}}class e2{constructor(e,n){this.detectsOn="window",this.events=new RK,this.modes=new MK(e,n)}get detect_on(){return this.detectsOn}set detect_on(e){this.detectsOn=e}load(e){if(!e)return;const n=e.detectsOn??e.detect_on;n!==void 0&&(this.detectsOn=n),this.events.load(e.events),this.modes.load(e.modes)}}class OK{load(e){e&&(e.position&&(this.position={x:e.position.x??50,y:e.position.y??50,mode:e.position.mode??"percent"}),e.options&&(this.options=Bt({},e.options)))}}class DK{constructor(){this.maxWidth=1/0,this.options={},this.mode="canvas"}load(e){e&&(e.maxWidth!==void 0&&(this.maxWidth=e.maxWidth),e.mode!==void 0&&(e.mode==="screen"?this.mode="screen":this.mode="canvas"),e.options!==void 0&&(this.options=Bt({},e.options)))}}class NK{constructor(){this.auto=!1,this.mode="any",this.value=!1}load(e){e&&(e.auto!==void 0&&(this.auto=e.auto),e.mode!==void 0&&(this.mode=e.mode),e.value!==void 0&&(this.value=e.value))}}class $K{constructor(){this.name="",this.default=new NK}load(e){e&&(e.name!==void 0&&(this.name=e.name),this.default.load(e.default),e.options!==void 0&&(this.options=Bt({},e.options)))}}class Zm{constructor(){this.count=0,this.enable=!1,this.offset=0,this.speed=1,this.delay=0,this.decay=0,this.sync=!0}load(e){e&&(e.count!==void 0&&(this.count=fe(e.count)),e.enable!==void 0&&(this.enable=e.enable),e.offset!==void 0&&(this.offset=fe(e.offset)),e.speed!==void 0&&(this.speed=fe(e.speed)),e.decay!==void 0&&(this.decay=fe(e.decay)),e.delay!==void 0&&(this.delay=fe(e.delay)),e.sync!==void 0&&(this.sync=e.sync))}}class LK{constructor(){this.h=new Zm,this.s=new Zm,this.l=new Zm}load(e){e&&(this.h.load(e.h),this.s.load(e.s),this.l.load(e.l))}}class Hu extends Ot{constructor(){super(),this.animation=new LK}static create(e,n){const r=new Hu;return r.load(e),n!==void 0&&(ur(n)||Sn(n)?r.load({value:n}):r.load(n)),r}load(e){if(super.load(e),!e)return;const n=e.animation;n!==void 0&&(n.enable!==void 0?this.animation.h.load(n):this.animation.load(e.animation))}}class FK{constructor(){this.speed=2}load(e){e&&e.speed!==void 0&&(this.speed=e.speed)}}class VK{constructor(){this.enable=!0,this.retries=0}load(e){e&&(e.enable!==void 0&&(this.enable=e.enable),e.retries!==void 0&&(this.retries=e.retries))}}class zK{constructor(){this.count=0,this.enable=!1,this.speed=1,this.decay=0,this.delay=0,this.sync=!1}load(e){e&&(e.count!==void 0&&(this.count=fe(e.count)),e.enable!==void 0&&(this.enable=e.enable),e.speed!==void 0&&(this.speed=fe(e.speed)),e.decay!==void 0&&(this.decay=fe(e.decay)),e.delay!==void 0&&(this.delay=fe(e.delay)),e.sync!==void 0&&(this.sync=e.sync))}}class t2 extends zK{constructor(){super(),this.mode="auto",this.startValue="random"}load(e){super.load(e),e&&(e.minimumValue!==void 0&&(this.minimumValue=e.minimumValue),e.mode!==void 0&&(this.mode=e.mode),e.startValue!==void 0&&(this.startValue=e.startValue))}}class UK{constructor(){this.enable=!1,this.minimumValue=0}load(e){e&&(e.enable!==void 0&&(this.enable=e.enable),e.minimumValue!==void 0&&(this.minimumValue=e.minimumValue))}}class gs{constructor(){this.random=new UK,this.value=0}load(e){e&&(ns(e.random)?this.random.enable=e.random:this.random.load(e.random),e.value!==void 0&&(this.value=fe(e.value,this.random.enable?this.random.minimumValue:void 0)))}}class ZE extends gs{constructor(){super(),this.random.minimumValue=.1,this.value=1}}class n2{constructor(){this.horizontal=new ZE,this.vertical=new ZE}load(e){e&&(this.horizontal.load(e.horizontal),this.vertical.load(e.vertical))}}class jK{constructor(){this.absorb=new FK,this.bounce=new n2,this.enable=!1,this.maxSpeed=50,this.mode="bounce",this.overlap=new VK}load(e){e&&(this.absorb.load(e.absorb),this.bounce.load(e.bounce),e.enable!==void 0&&(this.enable=e.enable),e.maxSpeed!==void 0&&(this.maxSpeed=fe(e.maxSpeed)),e.mode!==void 0&&(this.mode=e.mode),this.overlap.load(e.overlap))}}class BK{constructor(){this.offset=0,this.value=90}load(e){e&&(e.offset!==void 0&&(this.offset=fe(e.offset)),e.value!==void 0&&(this.value=fe(e.value)))}}class HK{constructor(){this.distance=200,this.enable=!1,this.rotate={x:3e3,y:3e3}}get rotateX(){return this.rotate.x}set rotateX(e){this.rotate.x=e}get rotateY(){return this.rotate.y}set rotateY(e){this.rotate.y=e}load(e){var i,s;if(!e)return;e.distance!==void 0&&(this.distance=fe(e.distance)),e.enable!==void 0&&(this.enable=e.enable);const n=((i=e.rotate)==null?void 0:i.x)??e.rotateX;n!==void 0&&(this.rotate.x=n);const r=((s=e.rotate)==null?void 0:s.y)??e.rotateY;r!==void 0&&(this.rotate.y=r)}}class WK{constructor(){this.x=50,this.y=50,this.mode="percent",this.radius=0}load(e){e&&(e.x!==void 0&&(this.x=e.x),e.y!==void 0&&(this.y=e.y),e.mode!==void 0&&(this.mode=e.mode),e.radius!==void 0&&(this.radius=e.radius))}}class qK{constructor(){this.acceleration=9.81,this.enable=!1,this.inverse=!1,this.maxSpeed=50}load(e){e&&(e.acceleration!==void 0&&(this.acceleration=fe(e.acceleration)),e.enable!==void 0&&(this.enable=e.enable),e.inverse!==void 0&&(this.inverse=e.inverse),e.maxSpeed!==void 0&&(this.maxSpeed=fe(e.maxSpeed)))}}class GK{constructor(){this.clamp=!0,this.delay=new gs,this.enable=!1,this.options={}}load(e){e&&(e.clamp!==void 0&&(this.clamp=e.clamp),this.delay.load(e.delay),e.enable!==void 0&&(this.enable=e.enable),this.generator=e.generator,e.options&&(this.options=Bt(this.options,e.options)))}}class KK{load(e){e&&(e.color!==void 0&&(this.color=Ot.create(this.color,e.color)),e.image!==void 0&&(this.image=e.image))}}class QK{constructor(){this.enable=!1,this.length=10,this.fill=new KK}get fillColor(){return this.fill.color}set fillColor(e){this.fill.load({color:e})}load(e){e&&(e.enable!==void 0&&(this.enable=e.enable),(e.fill!==void 0||e.fillColor!==void 0)&&this.fill.load(e.fill||{color:e.fillColor}),e.length!==void 0&&(this.length=e.length))}}class YK{constructor(){this.default="out"}load(e){e&&(e.default!==void 0&&(this.default=e.default),this.bottom=e.bottom??e.default,this.left=e.left??e.default,this.right=e.right??e.default,this.top=e.top??e.default)}}class XK{constructor(){this.acceleration=0,this.enable=!1}load(e){e&&(e.acceleration!==void 0&&(this.acceleration=fe(e.acceleration)),e.enable!==void 0&&(this.enable=e.enable),e.position&&(this.position=Bt({},e.position)))}}class JK{constructor(){this.angle=new BK,this.attract=new HK,this.center=new WK,this.decay=0,this.distance={},this.direction="none",this.drift=0,this.enable=!1,this.gravity=new qK,this.path=new GK,this.outModes=new YK,this.random=!1,this.size=!1,this.speed=2,this.spin=new XK,this.straight=!1,this.trail=new QK,this.vibrate=!1,this.warp=!1}get bounce(){return this.collisions}set bounce(e){this.collisions=e}get collisions(){return!1}set collisions(e){}get noise(){return this.path}set noise(e){this.path=e}get outMode(){return this.outModes.default}set outMode(e){this.outModes.default=e}get out_mode(){return this.outMode}set out_mode(e){this.outMode=e}load(e){if(!e)return;this.angle.load(cr(e.angle)?{value:e.angle}:e.angle),this.attract.load(e.attract),this.center.load(e.center),e.decay!==void 0&&(this.decay=fe(e.decay)),e.direction!==void 0&&(this.direction=e.direction),e.distance!==void 0&&(this.distance=cr(e.distance)?{horizontal:e.distance,vertical:e.distance}:{...e.distance}),e.drift!==void 0&&(this.drift=fe(e.drift)),e.enable!==void 0&&(this.enable=e.enable),this.gravity.load(e.gravity);const n=e.outModes??e.outMode??e.out_mode;n!==void 0&&(Go(n)?this.outModes.load(n):this.outModes.load({default:n})),this.path.load(e.path??e.noise),e.random!==void 0&&(this.random=e.random),e.size!==void 0&&(this.size=e.size),e.speed!==void 0&&(this.speed=fe(e.speed)),this.spin.load(e.spin),e.straight!==void 0&&(this.straight=e.straight),this.trail.load(e.trail),e.vibrate!==void 0&&(this.vibrate=e.vibrate),e.warp!==void 0&&(this.warp=e.warp)}}class ZK extends t2{constructor(){super(),this.destroy="none",this.speed=2}get opacity_min(){return this.minimumValue}set opacity_min(e){this.minimumValue=e}load(e){(e==null?void 0:e.opacity_min)!==void 0&&e.minimumValue===void 0&&(e.minimumValue=e.opacity_min),super.load(e),e&&e.destroy!==void 0&&(this.destroy=e.destroy)}}class eQ extends gs{constructor(){super(),this.animation=new ZK,this.random.minimumValue=.1,this.value=1}get anim(){return this.animation}set anim(e){this.animation=e}load(e){if(!e)return;super.load(e);const n=e.animation??e.anim;n!==void 0&&(this.animation.load(n),this.value=fe(this.value,this.animation.enable?this.animation.minimumValue:void 0))}}class tQ{constructor(){this.enable=!1,this.width=1920,this.height=1080}get area(){return this.width}set area(e){this.width=e}get factor(){return this.height}set factor(e){this.height=e}get value_area(){return this.area}set value_area(e){this.area=e}load(e){if(!e)return;e.enable!==void 0&&(this.enable=e.enable);const n=e.width??e.area??e.value_area;n!==void 0&&(this.width=n);const r=e.height??e.factor;r!==void 0&&(this.height=r)}}class nQ{constructor(){this.density=new tQ,this.limit=0,this.value=0}get max(){return this.limit}set max(e){this.limit=e}load(e){if(!e)return;this.density.load(e.density);const n=e.limit??e.max;n!==void 0&&(this.limit=n),e.value!==void 0&&(this.value=e.value)}}class rQ{constructor(){this.blur=0,this.color=new Ot,this.enable=!1,this.offset={x:0,y:0},this.color.value="#000"}load(e){e&&(e.blur!==void 0&&(this.blur=e.blur),this.color=Ot.create(this.color,e.color),e.enable!==void 0&&(this.enable=e.enable),e.offset!==void 0&&(e.offset.x!==void 0&&(this.offset.x=e.offset.x),e.offset.y!==void 0&&(this.offset.y=e.offset.y)))}}const eg="character",tg="char",ng="image",rg="images",ig="polygon",sg="star";class iQ{constructor(){this.loadShape=(e,n,r,i)=>{if(!e)return;const s=Sn(e),o=s?[]:{},a=s!==Sn(this.options[n]),l=s!==Sn(this.options[r]);a&&(this.options[n]=o),l&&i&&(this.options[r]=o),this.options[n]=Bt(this.options[n]??o,e),(!this.options[r]||i)&&(this.options[r]=Bt(this.options[r]??o,e))},this.close=!0,this.fill=!0,this.options={},this.type="circle"}get character(){return this.options[eg]??this.options[tg]}set character(e){this.options[tg]=this.options[eg]=e}get custom(){return this.options}set custom(e){this.options=e}get image(){return this.options[ng]??this.options[rg]}set image(e){this.options[rg]=this.options[ng]=e}get images(){return this.image}set images(e){this.image=e}get polygon(){return this.options[ig]??this.options[sg]}set polygon(e){this.options[sg]=this.options[ig]=e}get stroke(){return[]}set stroke(e){}load(e){if(!e)return;const n=e.options??e.custom;if(n!==void 0)for(const r in n){const i=n[r];i&&(this.options[r]=Bt(this.options[r]??{},i))}this.loadShape(e.character,eg,tg,!0),this.loadShape(e.polygon,ig,sg,!1),this.loadShape(e.image??e.images,ng,rg,!0),e.close!==void 0&&(this.close=e.close),e.fill!==void 0&&(this.fill=e.fill),e.type!==void 0&&(this.type=e.type)}}class sQ extends t2{constructor(){super(),this.destroy="none",this.speed=5}get size_min(){return this.minimumValue}set size_min(e){this.minimumValue=e}load(e){(e==null?void 0:e.size_min)!==void 0&&e.minimumValue===void 0&&(e.minimumValue=e.size_min),super.load(e),e&&e.destroy!==void 0&&(this.destroy=e.destroy)}}class oQ extends gs{constructor(){super(),this.animation=new sQ,this.random.minimumValue=1,this.value=3}get anim(){return this.animation}set anim(e){this.animation=e}load(e){if(super.load(e),!e)return;const n=e.animation??e.anim;n!==void 0&&(this.animation.load(n),this.value=fe(this.value,this.animation.enable?this.animation.minimumValue:void 0))}}class eT{constructor(){this.width=0}load(e){e&&(e.color!==void 0&&(this.color=Hu.create(this.color,e.color)),e.width!==void 0&&(this.width=fe(e.width)),e.opacity!==void 0&&(this.opacity=fe(e.opacity)))}}class aQ extends gs{constructor(){super(),this.opacityRate=1,this.sizeRate=1,this.velocityRate=1}load(e){super.load(e),e&&(e.opacityRate!==void 0&&(this.opacityRate=e.opacityRate),e.sizeRate!==void 0&&(this.sizeRate=e.sizeRate),e.velocityRate!==void 0&&(this.velocityRate=e.velocityRate))}}class lQ{constructor(e,n){this._engine=e,this._container=n,this.bounce=new n2,this.collisions=new jK,this.color=new Hu,this.color.value="#fff",this.groups={},this.move=new JK,this.number=new nQ,this.opacity=new eQ,this.reduceDuplicates=!1,this.shadow=new rQ,this.shape=new iQ,this.size=new oQ,this.stroke=new eT,this.zIndex=new aQ}load(e){var i,s,o;if(!e)return;if(this.bounce.load(e.bounce),this.color.load(Hu.create(this.color,e.color)),e.groups!==void 0)for(const a in e.groups){const l=e.groups[a];l!==void 0&&(this.groups[a]=Bt(this.groups[a]??{},l))}this.move.load(e.move),this.number.load(e.number),this.opacity.load(e.opacity),e.reduceDuplicates!==void 0&&(this.reduceDuplicates=e.reduceDuplicates),this.shape.load(e.shape),this.size.load(e.size),this.shadow.load(e.shadow),this.zIndex.load(e.zIndex);const n=((i=e.move)==null?void 0:i.collisions)??((s=e.move)==null?void 0:s.bounce);n!==void 0&&(this.collisions.enable=n),this.collisions.load(e.collisions),e.interactivity!==void 0&&(this.interactivity=Bt({},e.interactivity));const r=e.stroke??((o=e.shape)==null?void 0:o.stroke);if(r&&(this.stroke=wt(r,a=>{const l=new eT;return l.load(a),l})),this._container){const a=this._engine.plugins.updaters.get(this._container);if(a)for(const u of a)u.loadOptions&&u.loadOptions(this,e);const l=this._engine.plugins.interactors.get(this._container);if(l)for(const u of l)u.loadParticlesOptions&&u.loadParticlesOptions(this,e)}}}function r2(t,...e){for(const n of e)t.load(n)}function i2(t,e,...n){const r=new lQ(t,e);return r2(r,...n),r}class uQ{constructor(e,n){this._findDefaultTheme=r=>this.themes.find(i=>i.default.value&&i.default.mode===r)??this.themes.find(i=>i.default.value&&i.default.mode==="any"),this._importPreset=r=>{this.load(this._engine.plugins.getPreset(r))},this._engine=e,this._container=n,this.autoPlay=!0,this.background=new EK,this.backgroundMask=new SK,this.defaultThemes={},this.delay=0,this.fullScreen=new kK,this.detectRetina=!0,this.duration=0,this.fpsLimit=120,this.interactivity=new e2(e,n),this.manualParticles=[],this.particles=i2(this._engine,this._container),this.pauseOnBlur=!0,this.pauseOnOutsideViewport=!0,this.responsive=[],this.smooth=!1,this.style={},this.themes=[],this.zLayers=100}get backgroundMode(){return this.fullScreen}set backgroundMode(e){this.fullScreen.load(e)}get fps_limit(){return this.fpsLimit}set fps_limit(e){this.fpsLimit=e}get retina_detect(){return this.detectRetina}set retina_detect(e){this.detectRetina=e}load(e){var o,a;if(!e)return;e.preset!==void 0&&wt(e.preset,l=>this._importPreset(l)),e.autoPlay!==void 0&&(this.autoPlay=e.autoPlay),e.delay!==void 0&&(this.delay=fe(e.delay));const n=e.detectRetina??e.retina_detect;n!==void 0&&(this.detectRetina=n),e.duration!==void 0&&(this.duration=fe(e.duration));const r=e.fpsLimit??e.fps_limit;r!==void 0&&(this.fpsLimit=r),e.pauseOnBlur!==void 0&&(this.pauseOnBlur=e.pauseOnBlur),e.pauseOnOutsideViewport!==void 0&&(this.pauseOnOutsideViewport=e.pauseOnOutsideViewport),e.zLayers!==void 0&&(this.zLayers=e.zLayers),this.background.load(e.background);const i=e.fullScreen??e.backgroundMode;ns(i)?this.fullScreen.enable=i:this.fullScreen.load(i),this.backgroundMask.load(e.backgroundMask),this.interactivity.load(e.interactivity),e.manualParticles&&(this.manualParticles=e.manualParticles.map(l=>{const u=new OK;return u.load(l),u})),this.particles.load(e.particles),this.style=Bt(this.style,e.style),this._engine.plugins.loadOptions(this,e),e.smooth!==void 0&&(this.smooth=e.smooth);const s=this._engine.plugins.interactors.get(this._container);if(s)for(const l of s)l.loadOptions&&l.loadOptions(this,e);if(e.responsive!==void 0)for(const l of e.responsive){const u=new DK;u.load(l),this.responsive.push(u)}if(this.responsive.sort((l,u)=>l.maxWidth-u.maxWidth),e.themes!==void 0)for(const l of e.themes){const u=this.themes.find(c=>c.name===l.name);if(u)u.load(l);else{const c=new $K;c.load(l),this.themes.push(c)}}this.defaultThemes.dark=(o=this._findDefaultTheme("dark"))==null?void 0:o.name,this.defaultThemes.light=(a=this._findDefaultTheme("light"))==null?void 0:a.name}setResponsive(e,n,r){this.load(r);const i=this.responsive.find(s=>s.mode==="screen"&&screen?s.maxWidth>screen.availWidth:s.maxWidth*n>e);return this.load(i==null?void 0:i.options),i==null?void 0:i.maxWidth}setTheme(e){if(e){const n=this.themes.find(r=>r.name===e);n&&this.load(n.options)}else{const n=jR("(prefers-color-scheme: dark)"),r=n&&n.matches,i=this._findDefaultTheme(r?"dark":"light");i&&this.load(i.options)}}}class cQ{constructor(e,n){this.container=n,this._engine=e,this._interactors=e.plugins.getInteractors(this.container,!0),this._externalInteractors=[],this._particleInteractors=[]}async externalInteract(e){for(const n of this._externalInteractors)n.isEnabled()&&await n.interact(e)}handleClickMode(e){for(const n of this._externalInteractors)n.handleClickMode&&n.handleClickMode(e)}init(){this._externalInteractors=[],this._particleInteractors=[];for(const e of this._interactors){switch(e.type){case"external":this._externalInteractors.push(e);break;case"particles":this._particleInteractors.push(e);break}e.init()}}async particlesInteract(e,n){for(const r of this._externalInteractors)r.clear(e,n);for(const r of this._particleInteractors)r.isEnabled(e)&&await r.interact(e,n)}async reset(e){for(const n of this._externalInteractors)n.isEnabled()&&n.reset(e);for(const n of this._particleInteractors)n.isEnabled(e)&&n.reset(e)}}const tT=t=>{if(!tt(t.outMode,t.checkModes))return;const e=t.radius*2;t.coord>t.maxCoord-e?t.setCb(-t.radius):t.coord{for(const[,y]of a.plugins){const v=y.particlePosition!==void 0?y.particlePosition(l,this):void 0;if(v)return yn.create(v.x,v.y,u)}const h=a.canvas.size,d=XG({size:h,position:l}),f=yn.create(d.x,d.y,u),p=this.getRadius(),m=this.options.move.outModes,w=y=>{tT({outMode:y,checkModes:["bounce","bounce-horizontal"],coord:f.x,maxCoord:a.canvas.size.width,setCb:v=>f.x+=v,radius:p})},g=y=>{tT({outMode:y,checkModes:["bounce","bounce-vertical"],coord:f.y,maxCoord:a.canvas.size.height,setCb:v=>f.y+=v,radius:p})};return w(m.left??m.default),w(m.right??m.default),g(m.top??m.default),g(m.bottom??m.default),this._checkOverlap(f,c)?this._calcPosition(a,void 0,u,c+1):f},this._calculateVelocity=()=>{const a=YG(this.direction),l=a.copy(),u=this.options.move;if(u.direction==="inside"||u.direction==="outside")return l;const c=Math.PI/180*ne(u.angle.value),h=Math.PI/180*ne(u.angle.offset),d={left:h-c/2,right:h+c/2};return u.straight||(l.angle+=an(fe(d.left,d.right))),u.random&&typeof u.speed=="number"&&(l.length*=ze()),l},this._checkOverlap=(a,l=0)=>{const u=this.options.collisions,c=this.getRadius();if(!u.enable)return!1;const h=u.overlap;if(h.enable)return!1;const d=h.retries;if(d>=0&&l>d)throw new Error(`${Xn} particle is overlapping and can't be placed`);return!!this.container.particles.find(f=>Tn(a,f.position){if(!a||!this.roll||!this.backColor&&!this.roll.alter)return a;const l=this.roll.horizontal&&this.roll.vertical?2:1,u=this.roll.horizontal?Math.PI/2:0;return Math.floor(((this.roll.angle??0)+u)/(Math.PI/l))%2?this.backColor?this.backColor:this.roll.alter?_K(a,this.roll.alter.type,this.roll.alter.value):a:a},this._initPosition=a=>{const l=this.container,u=ne(this.options.zIndex.value);this.position=this._calcPosition(l,a,gr(u,0,l.zLayers)),this.initialPosition=this.position.copy();const c=l.canvas.size;switch(this.moveCenter={...GR(this.options.move.center,c),radius:this.options.move.center.radius??0,mode:this.options.move.center.mode??"percent"},this.direction=QG(this.options.move.direction,this.position,this.moveCenter),this.options.move.direction){case"inside":this.outType="inside";break;case"outside":this.outType="outside";break}this.offset=vt.origin},this._loadShapeData=(a,l)=>{const u=a.options[this.shape];if(u)return Bt({close:a.close,fill:a.fill},ai(u,this.id,l))},this._engine=e,this.init(n,i,s,o)}destroy(e){if(this.unbreakable||this.destroyed)return;this.destroyed=!0,this.bubble.inRange=!1,this.slow.inRange=!1;const n=this.container,r=this.pathGenerator;for(const[,i]of n.plugins)i.particleDestroyed&&i.particleDestroyed(this,e);for(const i of n.particles.updaters)i.particleDestroyed&&i.particleDestroyed(this,e);r&&r.reset(this)}draw(e){const n=this.container;for(const[,r]of n.plugins)n.canvas.drawParticlePlugin(r,this,e);n.canvas.drawParticle(this,e)}getFillColor(){return this._getRollColor(this.bubble.color??XE(this.color))}getMass(){return this.getRadius()**2*Math.PI/2}getPosition(){return{x:this.position.x+this.offset.x,y:this.position.y+this.offset.y,z:this.position.z}}getRadius(){return this.bubble.radius??this.size.value}getStrokeColor(){return this._getRollColor(this.bubble.color??XE(this.strokeColor))}init(e,n,r,i){const s=this.container,o=this._engine;this.id=e,this.group=i,this.fill=!0,this.pathRotation=!1,this.close=!0,this.lastPathTime=0,this.destroyed=!1,this.unbreakable=!1,this.rotation=0,this.misplaced=!1,this.retina={maxDistance:{}},this.outType="normal",this.ignoresResizeRatio=!0;const a=s.retina.pixelRatio,l=s.actualOptions,u=i2(this._engine,s,l.particles),c=u.shape.type,{reduceDuplicates:h}=u;this.shape=ai(c,this.id,h);const d=u.shape;if(r&&r.shape&&r.shape.type){const v=r.shape.type,_=ai(v,this.id,h);_&&(this.shape=_,d.load(r.shape))}this.shapeData=this._loadShapeData(d,h),u.load(r);const f=this.shapeData;f&&u.load(f.particles);const p=new e2(o,s);p.load(s.actualOptions.interactivity),p.load(u.interactivity),this.interactivity=p,this.fill=(f==null?void 0:f.fill)??u.shape.fill,this.close=(f==null?void 0:f.close)??u.shape.close,this.options=u;const m=this.options.move.path;this.pathDelay=io(m.delay)*1e3,m.generator&&(this.pathGenerator=this._engine.plugins.getPathGenerator(m.generator),this.pathGenerator&&s.addPath(m.generator,this.pathGenerator)&&this.pathGenerator.init(s)),s.retina.initParticle(this),this.size=qR(this.options.size,a),this.bubble={inRange:!1},this.slow={inRange:!1,factor:1},this._initPosition(n),this.initialVelocity=this._calculateVelocity(),this.velocity=this.initialVelocity.copy(),this.moveDecay=1-ne(this.options.move.decay);const w=s.particles;w.needsSort=w.needsSort||w.lastZIndex=-e&&r.y>=-e&&r.y<=n.height+e&&r.x<=n.width+e}isVisible(){return!this.destroyed&&!this.spawning&&this.isInsideCanvas()}reset(){for(const e of this.container.particles.updaters)e.reset&&e.reset(this)}}class dQ{constructor(e,n){this.position=e,this.particle=n}}class s2{constructor(e,n){this.position={x:e,y:n}}}class yr extends s2{constructor(e,n,r,i){super(e,n),this.size={height:i,width:r}}contains(e){const n=this.size.width,r=this.size.height,i=this.position;return e.x>=i.x&&e.x<=i.x+n&&e.y>=i.y&&e.y<=i.y+r}intersects(e){e instanceof Ht&&e.intersects(this);const n=this.size.width,r=this.size.height,i=this.position,s=e.position,o=e instanceof yr?e.size:{width:0,height:0},a=o.width,l=o.height;return s.xi.x&&s.yi.y}}class Ht extends s2{constructor(e,n,r){super(e,n),this.radius=r}contains(e){return Tn(e,this.position)<=this.radius}intersects(e){const n=this.position,r=e.position,i={x:Math.abs(r.x-n.x),y:Math.abs(r.y-n.y)},s=this.radius;if(e instanceof Ht){const o=s+e.radius,a=Math.sqrt(i.x**2+i.y**2);return o>a}else if(e instanceof yr){const{width:o,height:a}=e.size;return Math.pow(i.x-o,2)+Math.pow(i.y-a,2)<=s**2||i.x<=s+o&&i.y<=s+a||i.x<=o||i.y<=a}return!1}}class ef{constructor(e,n){this.rectangle=e,this.capacity=n,this._subdivide=()=>{const{x:r,y:i}=this.rectangle.position,{width:s,height:o}=this.rectangle.size,{capacity:a}=this;for(let l=0;l<4;l++)this._subs.push(new ef(new yr(r+s/2*(l%2),i+o/2*(Math.round(l/2)-l%2),s/2,o/2),a));this._divided=!0},this._points=[],this._divided=!1,this._subs=[]}insert(e){return this.rectangle.contains(e.position)?this._points.lengthn.insert(e))):!1}query(e,n,r){const i=r||[];if(!e.intersects(this.rectangle))return[];for(const s of this._points)!e.contains(s.position)&&Tn(e.position,s.position)>s.particle.getRadius()&&(!n||n(s.particle))||i.push(s.particle);if(this._divided)for(const s of this._subs)s.query(e,n,i);return i}queryCircle(e,n,r){return this.query(new Ht(e.x,e.y,n),r)}queryRectangle(e,n,r){return this.query(new yr(e.x,e.y,n.width,n.height),r)}}const nT=4,rT=t=>new yr(-t.width/4,-t.height/4,t.width*3/2,t.height*3/2);let fQ=class{constructor(e,n){this._applyDensity=(i,s,o)=>{var f;if(!((f=i.number.density)!=null&&f.enable))return;const a=i.number,l=this._initDensityFactor(a.density),u=a.value,c=a.limit>0?a.limit:u,h=Math.min(u,c)*l+s,d=Math.min(this.count,this.filter(p=>p.group===o).length);this.limit=a.limit*l,dh&&this.removeQuantity(d-h,o)},this._initDensityFactor=i=>{const s=this._container;if(!s.canvas.element||!i.enable)return 1;const o=s.canvas.element,a=s.retina.pixelRatio;return o.width*o.height/(i.factor*a**2*i.area)},this._pushParticle=(i,s,o,a)=>{try{let l=this.pool.pop();l?l.init(this._nextId,i,s,o):l=new hQ(this._engine,this._nextId,this._container,i,s,o);let u=!0;return a&&(u=a(l)),u?(this._array.push(l),this._zArray.push(l),this._nextId++,this._engine.dispatchEvent("particleAdded",{container:this._container,data:{particle:l}}),l):void 0}catch(l){so().warning(`${Xn} adding particle: ${l}`);return}},this._removeParticle=(i,s,o)=>{const a=this._array[i];if(!a||a.group!==s)return!1;a.destroy(o);const l=this._zArray.indexOf(a);return this._array.splice(i,1),this._zArray.splice(l,1),this.pool.push(a),this._engine.dispatchEvent("particleRemoved",{container:this._container,data:{particle:a}}),!0},this._engine=e,this._container=n,this._nextId=0,this._array=[],this._zArray=[],this.pool=[],this.limit=0,this.needsSort=!1,this.lastZIndex=0,this._interactionManager=new cQ(e,n);const r=n.canvas.size;this.quadTree=new ef(rT(r),nT),this.movers=this._engine.plugins.getMovers(n,!0),this.updaters=this._engine.plugins.getUpdaters(n,!0)}get count(){return this._array.length}addManualParticles(){const e=this._container,n=e.actualOptions;for(const r of n.manualParticles)this.addParticle(r.position?GR(r.position,e.canvas.size):void 0,r.options)}addParticle(e,n,r,i){const s=this._container,o=s.actualOptions,a=o.particles.number.limit;if(a>0){const l=this.count+1-a;l>0&&this.removeQuantity(l)}return this._pushParticle(e,n,r,i)}clear(){this._array=[],this._zArray=[]}destroy(){this._array=[],this._zArray=[],this.movers=[],this.updaters=[]}async draw(e){const n=this._container;n.canvas.clear(),await this.update(e);for(const[,r]of n.plugins)n.canvas.drawPlugin(r,e);for(const r of this._zArray)r.draw(e)}filter(e){return this._array.filter(e)}find(e){return this._array.find(e)}handleClickMode(e){this._interactionManager.handleClickMode(e)}init(){var i;const e=this._container,n=e.actualOptions;this.lastZIndex=0,this.needsSort=!1;let r=!1;this.updaters=this._engine.plugins.getUpdaters(e,!0),this._interactionManager.init();for(const[,s]of e.plugins)if(s.particlesInitialization!==void 0&&(r=s.particlesInitialization()),r)break;this._interactionManager.init();for(const[,s]of e.pathGenerators)s.init(e);if(this.addManualParticles(),!r){for(const s in n.particles.groups){const o=n.particles.groups[s];for(let a=this.count,l=0;l<((i=o.number)==null?void 0:i.value)&&athis.count)return;let s=0;for(let o=e;s!r.has(s);this._array=this.filter(i),this._zArray=this._zArray.filter(i),this.pool.push(...r)}await this._interactionManager.externalInteract(e);for(const i of this._array){for(const s of this.updaters)s.update(i,e);!i.destroyed&&!i.spawning&&await this._interactionManager.particlesInteract(i,e)}if(delete n.canvas.resizeFactor,this.needsSort){const i=this._zArray;i.sort((s,o)=>o.position.z-s.position.z||s.id-o.id),this.lastZIndex=i[i.length-1].position.z,this.needsSort=!1}}};class pQ{constructor(e){this.container=e,this.pixelRatio=1,this.reduceFactor=1}init(){const e=this.container,n=e.actualOptions;this.pixelRatio=!n.detectRetina||za()?1:window.devicePixelRatio,this.reduceFactor=1;const r=this.pixelRatio;if(e.canvas.element){const o=e.canvas.element;e.canvas.size.width=o.offsetWidth*r,e.canvas.size.height=o.offsetHeight*r}const i=n.particles,s=i.move;this.attractDistance=ne(s.attract.distance)*r,this.maxSpeed=ne(s.gravity.maxSpeed)*r,this.sizeAnimationSpeed=ne(i.size.animation.speed)*r}initParticle(e){const n=e.options,r=this.pixelRatio,i=n.move,s=i.distance,o=e.retina;o.attractDistance=ne(i.attract.distance)*r,o.moveDrift=ne(i.drift)*r,o.moveSpeed=ne(i.speed)*r,o.sizeAnimationSpeed=ne(n.size.animation.speed)*r;const a=o.maxDistance;a.horizontal=s.horizontal!==void 0?s.horizontal*r:void 0,a.vertical=s.vertical!==void 0?s.vertical*r:void 0,o.maxSpeed=ne(i.gravity.maxSpeed)*r}}function We(t){return t&&!t.destroyed}function mQ(t,e=60,n=!1){return{value:t,factor:n?60/e:60*t/1e3}}function Io(t,e,...n){const r=new uQ(t,e);return r2(r,...n),r}const gQ="default",iT={generate:t=>t.velocity,init:()=>{},update:()=>{},reset:()=>{}};class yQ{constructor(e,n,r){this.id=n,this._intersectionManager=i=>{if(!(!We(this)||!this.actualOptions.pauseOnOutsideViewport))for(const s of i)s.target===this.interactivity.element&&(s.isIntersecting?this.play:this.pause)()},this._nextFrame=async i=>{try{if(!this.smooth&&this.lastFrameTime!==void 0&&i1e3){this.draw(!1);return}if(await this.particles.draw(s),!this.alive()){this.destroy();return}this.getAnimationStatus()&&this.draw(!1)}catch(s){so().error(`${Xn} in animation loop`,s)}},this._engine=e,this.fpsLimit=120,this.smooth=!1,this._delay=0,this._duration=0,this._lifeTime=0,this._firstStart=!0,this.started=!1,this.destroyed=!1,this._paused=!0,this.lastFrameTime=0,this.zLayers=100,this.pageHidden=!1,this._sourceOptions=r,this._initialSourceOptions=r,this.retina=new pQ(this),this.canvas=new xK(this),this.particles=new fQ(this._engine,this),this.pathGenerators=new Map,this.interactivity={mouse:{clicking:!1,inside:!1}},this.plugins=new Map,this.drawers=new Map,this._options=Io(this._engine,this),this.actualOptions=Io(this._engine,this),this._eventListeners=new bK(this),typeof IntersectionObserver<"u"&&IntersectionObserver&&(this._intersectionObserver=new IntersectionObserver(i=>this._intersectionManager(i))),this._engine.dispatchEvent("containerBuilt",{container:this})}get options(){return this._options}get sourceOptions(){return this._sourceOptions}addClickHandler(e){if(!We(this))return;const n=this.interactivity.element;if(!n)return;const r=(h,d,f)=>{if(!We(this))return;const p=this.retina.pixelRatio,m={x:d.x*p,y:d.y*p},w=this.particles.quadTree.queryCircle(m,f*p);e(h,w)},i=h=>{if(!We(this))return;const d=h,f={x:d.offsetX||d.clientX,y:d.offsetY||d.clientY};r(h,f,1)},s=()=>{We(this)&&(u=!0,c=!1)},o=()=>{We(this)&&(c=!0)},a=h=>{if(We(this)){if(u&&!c){const d=h;let f=d.touches[d.touches.length-1];if(!f&&(f=d.changedTouches[d.changedTouches.length-1],!f))return;const p=this.canvas.element,m=p?p.getBoundingClientRect():void 0,w={x:f.clientX-(m?m.left:0),y:f.clientY-(m?m.top:0)};r(h,w,Math.max(f.radiusX,f.radiusY))}u=!1,c=!1}},l=()=>{We(this)&&(u=!1,c=!1)};let u=!1,c=!1;n.addEventListener("click",i),n.addEventListener("touchstart",s),n.addEventListener("touchmove",o),n.addEventListener("touchend",a),n.addEventListener("touchcancel",l)}addLifeTime(e){this._lifeTime+=e}addPath(e,n,r=!1){return!We(this)||!r&&this.pathGenerators.has(e)?!1:(this.pathGenerators.set(e,n??iT),!0)}alive(){return!this._duration||this._lifeTime<=this._duration}destroy(){if(!We(this))return;this.stop(),this.particles.destroy(),this.canvas.destroy();for(const[,r]of this.drawers)r.destroy&&r.destroy(this);for(const r of this.drawers.keys())this.drawers.delete(r);this._engine.plugins.destroy(this),this.destroyed=!0;const e=this._engine.dom(),n=e.findIndex(r=>r===this);n>=0&&e.splice(n,1),this._engine.dispatchEvent("containerDestroyed",{container:this})}draw(e){if(!We(this))return;let n=e;this._drawAnimationFrame=requestAnimationFrame(async r=>{n&&(this.lastFrameTime=void 0,n=!1),await this._nextFrame(r)})}async export(e,n={}){for(const[,r]of this.plugins){if(!r.export)continue;const i=await r.export(e,n);if(i.supported)return i.blob}so().error(`${Xn} - Export plugin with type ${e} not found`)}getAnimationStatus(){return!this._paused&&!this.pageHidden&&We(this)}handleClickMode(e){if(We(this)){this.particles.handleClickMode(e);for(const[,n]of this.plugins)n.handleClickMode&&n.handleClickMode(e)}}async init(){if(!We(this))return;const e=this._engine.plugins.getSupportedShapes();for(const r of e){const i=this._engine.plugins.getShapeDrawer(r);i&&this.drawers.set(r,i)}this._options=Io(this._engine,this,this._initialSourceOptions,this.sourceOptions),this.actualOptions=Io(this._engine,this,this._options);const n=this._engine.plugins.getAvailablePlugins(this);for(const[r,i]of n)this.plugins.set(r,i);this.retina.init(),await this.canvas.init(),this.updateActualOptions(),this.canvas.initBackground(),this.canvas.resize(),this.zLayers=this.actualOptions.zLayers,this._duration=ne(this.actualOptions.duration)*1e3,this._delay=ne(this.actualOptions.delay)*1e3,this._lifeTime=0,this.fpsLimit=this.actualOptions.fpsLimit>0?this.actualOptions.fpsLimit:120,this.smooth=this.actualOptions.smooth;for(const[,r]of this.drawers)r.init&&await r.init(this);for(const[,r]of this.plugins)r.init&&await r.init();this._engine.dispatchEvent("containerInit",{container:this}),this.particles.init(),this.particles.setDensity();for(const[,r]of this.plugins)r.particlesSetup&&r.particlesSetup();this._engine.dispatchEvent("particlesSetup",{container:this})}async loadTheme(e){We(this)&&(this._currentTheme=e,await this.refresh())}pause(){if(We(this)&&(this._drawAnimationFrame!==void 0&&(cancelAnimationFrame(this._drawAnimationFrame),delete this._drawAnimationFrame),!this._paused)){for(const[,e]of this.plugins)e.pause&&e.pause();this.pageHidden||(this._paused=!0),this._engine.dispatchEvent("containerPaused",{container:this})}}play(e){if(!We(this))return;const n=this._paused||e;if(this._firstStart&&!this.actualOptions.autoPlay){this._firstStart=!1;return}if(this._paused&&(this._paused=!1),n)for(const[,r]of this.plugins)r.play&&r.play();this._engine.dispatchEvent("containerPlay",{container:this}),this.draw(n||!1)}async refresh(){if(We(this))return this.stop(),this.start()}async reset(){if(We(this))return this._initialSourceOptions=void 0,this._options=Io(this._engine,this),this.actualOptions=Io(this._engine,this,this._options),this.refresh()}setNoise(e,n,r){We(this)&&this.setPath(e,n,r)}setPath(e,n,r){if(!e||!We(this))return;const i={...iT};if(KR(e))i.generate=e,n&&(i.init=n),r&&(i.update=r);else{const s=i;i.generate=e.generate||s.generate,i.init=e.init||s.init,i.update=e.update||s.update}this.addPath(gQ,i,!0)}async start(){!We(this)||this.started||(await this.init(),this.started=!0,await new Promise(e=>{this._delayTimeout=setTimeout(async()=>{this._eventListeners.addListeners(),this.interactivity.element instanceof HTMLElement&&this._intersectionObserver&&this._intersectionObserver.observe(this.interactivity.element);for(const[,n]of this.plugins)n.start&&await n.start();this._engine.dispatchEvent("containerStarted",{container:this}),this.play(),e()},this._delay)}))}stop(){if(!(!We(this)||!this.started)){this._delayTimeout&&(clearTimeout(this._delayTimeout),delete this._delayTimeout),this._firstStart=!0,this.started=!1,this._eventListeners.removeListeners(),this.pause(),this.particles.clear(),this.canvas.stop(),this.interactivity.element instanceof HTMLElement&&this._intersectionObserver&&this._intersectionObserver.unobserve(this.interactivity.element);for(const[,e]of this.plugins)e.stop&&e.stop();for(const e of this.plugins.keys())this.plugins.delete(e);this._sourceOptions=this._options,this._engine.dispatchEvent("containerStopped",{container:this})}}updateActualOptions(){this.actualOptions.responsive=[];const e=this.actualOptions.setResponsive(this.canvas.size.width,this.retina.pixelRatio,this._options);return this.actualOptions.setTheme(this._currentTheme),this.responsiveMaxWidth===e?!1:(this.responsiveMaxWidth=e,!0)}}class vQ{constructor(){this._listeners=new Map}addEventListener(e,n){this.removeEventListener(e,n);let r=this._listeners.get(e);r||(r=[],this._listeners.set(e,r)),r.push(n)}dispatchEvent(e,n){const r=this._listeners.get(e);r&&r.forEach(i=>i(n))}hasEventListener(e){return!!this._listeners.get(e)}removeAllEventListeners(e){e?this._listeners.delete(e):this._listeners=new Map}removeEventListener(e,n){const r=this._listeners.get(e);if(!r)return;const i=r.length,s=r.indexOf(n);s<0||(i===1?this._listeners.delete(e):r.splice(s,1))}}function og(t,e,n,r=!1){let i=e.get(t);return(!i||r)&&(i=[...n.values()].map(s=>s(t)),e.set(t,i)),i}class _Q{constructor(e){this._engine=e,this.plugins=[],this._initializers={interactors:new Map,movers:new Map,updaters:new Map},this.interactors=new Map,this.movers=new Map,this.updaters=new Map,this.presets=new Map,this.drawers=new Map,this.pathGenerators=new Map}addInteractor(e,n){this._initializers.interactors.set(e,n)}addParticleMover(e,n){this._initializers.movers.set(e,n)}addParticleUpdater(e,n){this._initializers.updaters.set(e,n)}addPathGenerator(e,n){!this.getPathGenerator(e)&&this.pathGenerators.set(e,n)}addPlugin(e){!this.getPlugin(e.id)&&this.plugins.push(e)}addPreset(e,n,r=!1){(r||!this.getPreset(e))&&this.presets.set(e,n)}addShapeDrawer(e,n){wt(e,r=>{!this.getShapeDrawer(r)&&this.drawers.set(r,n)})}destroy(e){this.updaters.delete(e),this.movers.delete(e),this.interactors.delete(e)}getAvailablePlugins(e){const n=new Map;for(const r of this.plugins)r.needsPlugin(e.actualOptions)&&n.set(r.id,r.getPlugin(e));return n}getInteractors(e,n=!1){return og(e,this.interactors,this._initializers.interactors,n)}getMovers(e,n=!1){return og(e,this.movers,this._initializers.movers,n)}getPathGenerator(e){return this.pathGenerators.get(e)}getPlugin(e){return this.plugins.find(n=>n.id===e)}getPreset(e){return this.presets.get(e)}getShapeDrawer(e){return this.drawers.get(e)}getSupportedShapes(){return this.drawers.keys()}getUpdaters(e,n=!1){return og(e,this.updaters,this._initializers.updaters,n)}loadOptions(e,n){for(const r of this.plugins)r.loadOptions(e,n)}loadParticlesOptions(e,n,...r){const i=this.updaters.get(e);if(i)for(const s of i)s.loadOptions&&s.loadOptions(n,...r)}}async function wQ(t){const e=ai(t.url,t.index);if(!e)return t.fallback;const n=await fetch(e);return n.ok?n.json():(so().error(`${Xn} ${n.status} while retrieving config file`),t.fallback)}function xQ(t){return!t.id&&!t.element&&!t.url&&!t.options}function bQ(t){return!xQ(t)}class EQ{constructor(){this._configs=new Map,this._domArray=[],this._eventDispatcher=new vQ,this._initialized=!1,this.plugins=new _Q(this)}get configs(){const e={};for(const[n,r]of this._configs)e[n]=r;return e}get version(){return"2.12.0"}addConfig(e,n){ur(e)?n&&(n.name=e,this._configs.set(e,n)):this._configs.set(e.name??"default",e)}addEventListener(e,n){this._eventDispatcher.addEventListener(e,n)}async addInteractor(e,n,r=!0){this.plugins.addInteractor(e,n),await this.refresh(r)}async addMover(e,n,r=!0){this.plugins.addParticleMover(e,n),await this.refresh(r)}async addParticleUpdater(e,n,r=!0){this.plugins.addParticleUpdater(e,n),await this.refresh(r)}async addPathGenerator(e,n,r=!0){this.plugins.addPathGenerator(e,n),await this.refresh(r)}async addPlugin(e,n=!0){this.plugins.addPlugin(e),await this.refresh(n)}async addPreset(e,n,r=!1,i=!0){this.plugins.addPreset(e,n,r),await this.refresh(i)}async addShape(e,n,r,i,s,o=!0){let a,l=o,u,c,h;ns(r)?(l=r,u=void 0):u=r,ns(i)?(l=i,c=void 0):c=i,ns(s)?(l=s,h=void 0):h=s,KR(n)?a={afterEffect:c,destroy:h,draw:n,init:u}:a=n,this.plugins.addShapeDrawer(e,a),await this.refresh(l)}dispatchEvent(e,n){this._eventDispatcher.dispatchEvent(e,n)}dom(){return this._domArray}domItem(e){const n=this.dom(),r=n[e];if(!r||r.destroyed){n.splice(e,1);return}return r}init(){this._initialized||(this._initialized=!0)}async load(e,n){return this.loadFromArray(e,n)}async loadFromArray(e,n,r){let i;return bQ(e)?i=e:(i={},ur(e)?i.id=e:i.options=e,cr(n)?i.index=n:i.options=n??i.options,i.index=r??i.index),this._loadParams(i)}async loadJSON(e,n,r){let i,s;return cr(n)||n===void 0?i=e:(s=e,i=n),this._loadParams({id:s,url:i,index:r})}async refresh(e=!0){e&&this.dom().forEach(n=>n.refresh())}removeEventListener(e,n){this._eventDispatcher.removeEventListener(e,n)}async set(e,n,r,i){const s={index:i};return ur(e)?s.id=e:s.element=e,n instanceof HTMLElement?s.element=n:s.options=n,cr(r)?s.index=r:s.options=r??s.options,this._loadParams(s)}async setJSON(e,n,r,i){const s={};return e instanceof HTMLElement?(s.element=e,s.url=n,s.index=r):(s.id=e,s.element=n,s.url=r,s.index=i),this._loadParams(s)}setOnClickHandler(e){const n=this.dom();if(!n.length)throw new Error(`${Xn} can only set click handlers after calling tsParticles.load()`);for(const r of n)r.addClickHandler(e)}async _loadParams(e){const n=e.id??`tsparticles${Math.floor(ze()*1e4)}`,{index:r,url:i}=e,s=i?await wQ({fallback:e.options,url:i,index:r}):e.options;let o=e.element??document.getElementById(n);o||(o=document.createElement("div"),o.id=n,document.body.append(o));const a=ai(s,r),l=this.dom(),u=l.findIndex(d=>d.id===n);if(u>=0){const d=this.domItem(u);d&&!d.destroyed&&(d.destroy(),l.splice(u,1))}let c;if(o.tagName.toLowerCase()==="canvas")c=o,c.dataset[Kl]="false";else{const d=o.getElementsByTagName("canvas");d.length?(c=d[0],c.dataset[Kl]="false"):(c=document.createElement("canvas"),c.dataset[Kl]="true",o.appendChild(c))}c.style.width||(c.style.width="100%"),c.style.height||(c.style.height="100%");const h=new yQ(this,n,a);return u>=0?l.splice(u,0,h):l.push(h),h.canvas.loadCanvas(c),await h.start(),h}}class TQ{constructor(){this.key="hsl",this.stringPrefix="hsl"}handleColor(e){const n=e.value,r=n.hsl??e.value;if(r.h!==void 0&&r.s!==void 0&&r.l!==void 0)return Ua(r)}handleRangeColor(e){const n=e.value,r=n.hsl??e.value;if(r.h!==void 0&&r.l!==void 0)return Ua({h:ne(r.h),l:ne(r.l),s:ne(r.s)})}parseString(e){if(!e.startsWith("hsl"))return;const n=/hsla?\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.%]+)\s*)?\)/i,r=n.exec(e);return r?cK({a:r.length>4?UR(r[5]):1,h:parseInt(r[1],10),l:parseInt(r[3],10),s:parseInt(r[2],10)}):void 0}}class SQ{constructor(){this.key="rgb",this.stringPrefix="rgb"}handleColor(e){const n=e.value,r=n.rgb??e.value;if(r.r!==void 0)return r}handleRangeColor(e){const n=e.value,r=n.rgb??e.value;if(r.r!==void 0)return{r:ne(r.r),g:ne(r.g),b:ne(r.b)}}parseString(e){if(!e.startsWith(this.stringPrefix))return;const n=/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([\d.%]+)\s*)?\)/i,r=n.exec(e);return r?{a:r.length>4?UR(r[5]):1,b:parseInt(r[3],10),g:parseInt(r[2],10),r:parseInt(r[1],10)}:void 0}}function kQ(){const t=new SQ,e=new TQ;YE(t),YE(e);const n=new EQ;return n.init(),n}class Br{constructor(e){this.container=e,this.type="external"}}class ww{constructor(e){this.container=e,this.type="particles"}}const tf=kQ();za()||(window.tsParticles=tf);const Ko=t=>typeof t=="object"&&t!==null;function nf(t,e,n=()=>!1){if(!Ko(t)||!Ko(e))return t===e;const r=Object.keys(t).filter(s=>!n(s)),i=Object.keys(e).filter(s=>!n(s));if(r.length!==i.length)return!1;for(const s of r){const o=t[s],a=e[s];if(Ko(o)&&Ko(a)){if(o===e&&a===t)continue;if(!nf(o,a,n))return!1}else if(Array.isArray(o)&&Array.isArray(a)){if(!o2(o,a,n))return!1}else if(o!==a)return!1}return!0}function o2(t,e,n){if(t.length!==e.length)return!1;for(let r=0;ri.startsWith("_"))}componentDidUpdate(){this.refresh()}forceUpdate(){this.refresh().then(()=>{super.forceUpdate()})}componentDidMount(){(async()=>(this.props.init&&await this.props.init(tf),this.setState({init:!0},async()=>{await this.loadParticles()})))()}componentWillUnmount(){this.destroy()}render(){const{width:e,height:n,className:r,canvasClassName:i,id:s}=this.props;return wn.createElement("div",{className:r,id:s},wn.createElement("canvas",{className:i,style:{...this.props.style,width:e,height:n}}))}async refresh(){this.destroy(),await this.loadParticles()}async loadParticles(){if(!this.state.init)return;const e=this.props.id??u2.defaultProps.id??a2,n=await tf.load({url:this.props.url,id:e,options:this.props.options??this.props.params});this.props.container&&(this.props.container.current=n),this.setState({library:n}),this.props.loaded&&await this.props.loaded(n)}};l2.defaultProps={width:"100%",height:"100%",options:{},style:{},url:void 0,id:a2};class rf{static init(e){var s;const n=new rf,r=e.selector;if(!r)throw new Error("No selector provided");const i=document.querySelector(r);if(!i)throw new Error("No element found for selector");return tf.set(r.replace(".","").replace("!",""),i,{fullScreen:{enable:!1},particles:{color:{value:e.color??"!000000"},links:{color:"random",distance:e.minDistance??120,enable:e.connectParticles??!1},move:{enable:!0,speed:e.speed??.5},number:{value:e.maxParticles??100},size:{value:{min:1,max:e.sizeVariations??3}}},responsive:(s=e.responsive)==null?void 0:s.map(o=>{var a,l,u,c,h;return{maxWidth:o.breakpoint,options:{particles:{color:{value:(a=o.options)==null?void 0:a.color},links:{distance:(l=o.options)==null?void 0:l.minDistance,enable:(u=o.options)==null?void 0:u.connectParticles},number:{value:e.maxParticles},move:{enable:!0,speed:(c=o.options)==null?void 0:c.speed},size:{value:(h=o.options)==null?void 0:h.sizeVariations}}}}})}).then(o=>{n._container=o}),n}destroy(){const e=this._container;e&&e.destroy()}pauseAnimation(){const e=this._container;e&&e.pause()}resumeAnimation(){const e=this._container;e&&e.play()}}const CQ=t=>{const e=(r,i)=>t.load(r,i);e.load=(r,i,s)=>{t.loadJSON(r,i).then(o=>{o&&s(o)}).catch(()=>{s(void 0)})},e.setOnClickHandler=r=>{t.setOnClickHandler(r)};const n=t.dom();return{particlesJS:e,pJSDom:n}},IQ=t=>{const{particlesJS:e,pJSDom:n}=CQ(t);return window.particlesJS=e,window.pJSDom=n,window.Particles=rf,{particlesJS:e,pJSDom:n,Particles:rf}};function PQ(t){const e=t.initialPosition,{dx:n,dy:r}=Jt(e,t.position),i=Math.abs(n),s=Math.abs(r),{maxDistance:o}=t.retina,a=o.horizontal,l=o.vertical;if(!(!a&&!l)){if((a&&i>=a||l&&s>=l)&&!t.misplaced)t.misplaced=!!a&&i>a||!!l&&s>l,a&&(t.velocity.x=t.velocity.y/2-t.velocity.x),l&&(t.velocity.y=t.velocity.x/2-t.velocity.y);else if((!a||ie.x&&c.x>0)&&(c.x*=-ze()),l&&(u.ye.y&&c.y>0)&&(c.y*=-ze())}}}function AQ(t,e,n,r,i,s){MQ(t,s);const o=t.gravity,a=o!=null&&o.enable&&o.inverse?-1:1;i&&n&&(t.velocity.x+=i*s.factor/(60*n)),o!=null&&o.enable&&n&&(t.velocity.y+=a*(o.acceleration*s.factor)/(60*n));const l=t.moveDecay;t.velocity.multTo(l);const u=t.velocity.mult(n);o!=null&&o.enable&&r>0&&(!o.inverse&&u.y>=0&&u.y>=r||o.inverse&&u.y<=0&&u.y<=-r)&&(u.y=a*r,n&&(t.velocity.y=u.y/n));const c=t.options.zIndex,h=(1-t.zIndexFactor)**c.velocityRate;u.multTo(h);const{position:d}=t;d.addTo(u),e.vibrate&&(d.x+=Math.sin(d.x*Math.cos(d.y)),d.y+=Math.cos(d.y*Math.sin(d.x)))}function RQ(t,e){const n=t.container;if(!t.spin)return;const r={x:t.spin.direction==="clockwise"?Math.cos:Math.sin,y:t.spin.direction==="clockwise"?Math.sin:Math.cos};t.position.x=t.spin.center.x+t.spin.radius*r.x(t.spin.angle),t.position.y=t.spin.center.y+t.spin.radius*r.y(t.spin.angle),t.spin.radius+=t.spin.acceleration;const i=Math.max(n.canvas.size.width,n.canvas.size.height);t.spin.radius>i/2?(t.spin.radius=i/2,t.spin.acceleration*=-1):t.spin.radius<0&&(t.spin.radius=0,t.spin.acceleration*=-1),t.spin.angle+=e/100*(1-t.spin.radius/i)}function MQ(t,e){var o;const n=t.options,r=n.move.path;if(!r.enable)return;if(t.lastPathTime<=t.pathDelay){t.lastPathTime+=e.value;return}const s=(o=t.pathGenerator)==null?void 0:o.generate(t,e);s&&t.velocity.addTo(s),r.clamp&&(t.velocity.x=gr(t.velocity.x,-1,1),t.velocity.y=gr(t.velocity.y,-1,1)),t.lastPathTime-=t.pathDelay}function OQ(t){return t.slow.inRange?t.slow.factor:1}const DQ=2;class NQ{constructor(){this._initSpin=e=>{const n=e.container,r=e.options,i=r.move.spin;if(!i.enable)return;const s=i.position??{x:50,y:50},o={x:s.x/100*n.canvas.size.width,y:s.y/100*n.canvas.size.height},a=e.getPosition(),l=Tn(a,o),u=ne(i.acceleration);e.retina.spinAcceleration=u*n.retina.pixelRatio,e.spin={center:o,direction:e.velocity.x>=0?"clockwise":"counter-clockwise",angle:e.velocity.angle,radius:l,acceleration:e.retina.spinAcceleration}}}init(e){const n=e.options,r=n.move.gravity;e.gravity={enable:r.enable,acceleration:ne(r.acceleration),inverse:r.inverse},this._initSpin(e)}isEnabled(e){return!e.destroyed&&e.options.move.enable}move(e,n){var p,m;const r=e.options,i=r.move;if(!i.enable)return;const s=e.container,o=s.retina.pixelRatio,a=OQ(e),l=((p=e.retina).moveSpeed??(p.moveSpeed=ne(i.speed)*o))*s.retina.reduceFactor,u=(m=e.retina).moveDrift??(m.moveDrift=ne(e.options.move.drift)*o),c=Bi(r.size.value)*o,h=i.size?e.getRadius()/c:1,d=l*h*a*(n.factor||1)/DQ,f=e.retina.maxSpeed??s.retina.maxSpeed;i.spin.enable?RQ(e,d):AQ(e,i,d,f,u,n),PQ(e)}}async function $Q(t,e=!0){await t.addMover("base",()=>new NQ,e)}class LQ{draw(e,n,r){n.circleRange||(n.circleRange={min:0,max:Math.PI*2});const i=n.circleRange;e.arc(0,0,r,i.min,i.max,!1)}getSidesCount(){return 12}particleInit(e,n){const r=n.shapeData,i=(r==null?void 0:r.angle)??{max:360,min:0};n.circleRange=Go(i)?{min:i.min*Math.PI/180,max:i.max*Math.PI/180}:{min:0,max:i*Math.PI/180}}}async function FQ(t,e=!0){await t.addShape("circle",new LQ,e)}function ag(t,e,n,r,i){if(!e||!n.enable||(e.maxLoops??0)>0&&(e.loops??0)>(e.maxLoops??0)||(e.time||(e.time=0),(e.delayTime??0)>0&&e.time<(e.delayTime??0)&&(e.time+=t.value),(e.delayTime??0)>0&&e.time<(e.delayTime??0)))return;const s=an(n.offset),o=(e.velocity??0)*t.factor+s*3.6,a=e.decay??1;!i||e.status==="increasing"?(e.value+=o,e.value>r&&(e.loops||(e.loops=0),e.loops++,i&&(e.status="decreasing",e.value-=e.value%r))):(e.value-=o,e.value<0&&(e.loops||(e.loops=0),e.loops++,e.status="increasing",e.value+=e.value)),e.velocity&&a!==1&&(e.velocity*=a),e.value>r&&(e.value%=r)}function VQ(t,e){const{h:n,s:r,l:i}=t.options.color.animation,{color:s}=t;if(!s)return;const{h:o,s:a,l}=s;o&&ag(e,o,n,360,!1),a&&ag(e,a,r,100,!0),l&&ag(e,l,i,100,!0)}class zQ{constructor(e){this.container=e}init(e){const n=ju(e.options.color,e.id,e.options.reduceDuplicates);n&&(e.color=ZR(n,e.options.color.animation,this.container.retina.reduceFactor))}isEnabled(e){const{h:n,s:r,l:i}=e.options.color.animation,{color:s}=e;return!e.destroyed&&!e.spawning&&((s==null?void 0:s.h.value)!==void 0&&n.enable||(s==null?void 0:s.s.value)!==void 0&&r.enable||(s==null?void 0:s.l.value)!==void 0&&i.enable)}update(e,n){VQ(e,n)}}async function UQ(t,e=!0){await t.addParticleUpdater("color",n=>new zQ(n),e)}function jQ(t,e,n,r){switch(t.options.opacity.animation.destroy){case"max":e>=r&&t.destroy();break;case"min":e<=n&&t.destroy();break}}function BQ(t,e){const n=t.opacity;if(t.destroyed||!(n!=null&&n.enable)||(n.maxLoops??0)>0&&(n.loops??0)>(n.maxLoops??0))return;const r=n.min,i=n.max,s=n.decay??1;if(n.time||(n.time=0),(n.delayTime??0)>0&&n.time<(n.delayTime??0)&&(n.time+=e.value),!((n.delayTime??0)>0&&n.time<(n.delayTime??0))){switch(n.status){case"increasing":n.value>=i?(n.status="decreasing",n.loops||(n.loops=0),n.loops++):n.value+=(n.velocity??0)*e.factor;break;case"decreasing":n.value<=r?(n.status="increasing",n.loops||(n.loops=0),n.loops++):n.value-=(n.velocity??0)*e.factor;break}n.velocity&&n.decay!==1&&(n.velocity*=s),jQ(t,n.value,r,i),t.destroyed||(n.value=gr(n.value,r,i))}}class HQ{constructor(e){this.container=e}init(e){const n=e.options.opacity;e.opacity=qR(n,1);const r=n.animation;r.enable&&(e.opacity.velocity=ne(r.speed)/100*this.container.retina.reduceFactor,r.sync||(e.opacity.velocity*=ze()))}isEnabled(e){return!e.destroyed&&!e.spawning&&!!e.opacity&&e.opacity.enable&&((e.opacity.maxLoops??0)<=0||(e.opacity.maxLoops??0)>0&&(e.opacity.loops??0)<(e.opacity.maxLoops??0))}reset(e){e.opacity&&(e.opacity.time=0,e.opacity.loops=0)}update(e,n){this.isEnabled(e)&&BQ(e,n)}}async function WQ(t,e=!0){await t.addParticleUpdater("opacity",n=>new HQ(n),e)}function qQ(t){if(t.outMode!=="bounce"&&t.outMode!=="bounce-horizontal"&&t.outMode!=="bounceHorizontal"&&t.outMode!=="split"||t.direction!=="left"&&t.direction!=="right")return;t.bounds.right<0&&t.direction==="left"?t.particle.position.x=t.size+t.offset.x:t.bounds.left>t.canvasSize.width&&t.direction==="right"&&(t.particle.position.x=t.canvasSize.width-t.size-t.offset.x);const e=t.particle.velocity.x;let n=!1;if(t.direction==="right"&&t.bounds.right>=t.canvasSize.width&&e>0||t.direction==="left"&&t.bounds.left<=0&&e<0){const i=io(t.particle.options.bounce.horizontal);t.particle.velocity.x*=-i,n=!0}if(!n)return;const r=t.offset.x+t.size;t.bounds.right>=t.canvasSize.width&&t.direction==="right"?t.particle.position.x=t.canvasSize.width-r:t.bounds.left<=0&&t.direction==="left"&&(t.particle.position.x=r),t.outMode==="split"&&t.particle.destroy()}function GQ(t){if(t.outMode!=="bounce"&&t.outMode!=="bounce-vertical"&&t.outMode!=="bounceVertical"&&t.outMode!=="split"||t.direction!=="bottom"&&t.direction!=="top")return;t.bounds.bottom<0&&t.direction==="top"?t.particle.position.y=t.size+t.offset.y:t.bounds.top>t.canvasSize.height&&t.direction==="bottom"&&(t.particle.position.y=t.canvasSize.height-t.size-t.offset.y);const e=t.particle.velocity.y;let n=!1;if(t.direction==="bottom"&&t.bounds.bottom>=t.canvasSize.height&&e>0||t.direction==="top"&&t.bounds.top<=0&&e<0){const i=io(t.particle.options.bounce.vertical);t.particle.velocity.y*=-i,n=!0}if(!n)return;const r=t.offset.y+t.size;t.bounds.bottom>=t.canvasSize.height&&t.direction==="bottom"?t.particle.position.y=t.canvasSize.height-r:t.bounds.top<=0&&t.direction==="top"&&(t.particle.position.y=r),t.outMode==="split"&&t.particle.destroy()}class KQ{constructor(e){this.container=e,this.modes=["bounce","bounce-vertical","bounce-horizontal","bounceVertical","bounceHorizontal","split"]}update(e,n,r,i){if(!this.modes.includes(i))return;const s=this.container;let o=!1;for(const[,d]of s.plugins)if(d.particleBounce!==void 0&&(o=d.particleBounce(e,r,n)),o)break;if(o)return;const a=e.getPosition(),l=e.offset,u=e.getRadius(),c=kc(a,u),h=s.canvas.size;qQ({particle:e,outMode:i,direction:n,bounds:c,canvasSize:h,offset:l,size:u}),GQ({particle:e,outMode:i,direction:n,bounds:c,canvasSize:h,offset:l,size:u})}}class QQ{constructor(e){this.container=e,this.modes=["destroy"]}update(e,n,r,i){if(!this.modes.includes(i))return;const s=this.container;switch(e.outType){case"normal":case"outside":if(gw(e.position,s.canvas.size,vt.origin,e.getRadius(),n))return;break;case"inside":{const{dx:o,dy:a}=Jt(e.position,e.moveCenter),{x:l,y:u}=e.velocity;if(l<0&&o>e.moveCenter.radius||u<0&&a>e.moveCenter.radius||l>=0&&o<-e.moveCenter.radius||u>=0&&a<-e.moveCenter.radius)return;break}}s.particles.remove(e,void 0,!0)}}class YQ{constructor(e){this.container=e,this.modes=["none"]}update(e,n,r,i){if(!this.modes.includes(i)||e.options.move.distance.horizontal&&(n==="left"||n==="right")||e.options.move.distance.vertical&&(n==="top"||n==="bottom"))return;const s=e.options.move.gravity,o=this.container,a=o.canvas.size,l=e.getRadius();if(s.enable){const u=e.position;(!s.inverse&&u.y>a.height+l&&n==="bottom"||s.inverse&&u.y<-l&&n==="top")&&o.particles.remove(e)}else{if(e.velocity.y>0&&e.position.y<=a.height+l||e.velocity.y<0&&e.position.y>=-l||e.velocity.x>0&&e.position.x<=a.width+l||e.velocity.x<0&&e.position.x>=-l)return;gw(e.position,o.canvas.size,vt.origin,l,n)||o.particles.remove(e)}}}class XQ{constructor(e){this.container=e,this.modes=["out"]}update(e,n,r,i){if(!this.modes.includes(i))return;const s=this.container;switch(e.outType){case"inside":{const{x:o,y:a}=e.velocity,l=vt.origin;l.length=e.moveCenter.radius,l.angle=e.velocity.angle+Math.PI,l.addTo(vt.create(e.moveCenter));const{dx:u,dy:c}=Jt(e.position,l);if(o<=0&&u>=0||a<=0&&c>=0||o>=0&&u<=0||a>=0&&c<=0)return;e.position.x=Math.floor(an({min:0,max:s.canvas.size.width})),e.position.y=Math.floor(an({min:0,max:s.canvas.size.height}));const{dx:h,dy:d}=Jt(e.position,e.moveCenter);e.direction=Math.atan2(-d,-h),e.velocity.angle=e.direction;break}default:{if(gw(e.position,s.canvas.size,vt.origin,e.getRadius(),n))return;switch(e.outType){case"outside":{e.position.x=Math.floor(an({min:-e.moveCenter.radius,max:e.moveCenter.radius}))+e.moveCenter.x,e.position.y=Math.floor(an({min:-e.moveCenter.radius,max:e.moveCenter.radius}))+e.moveCenter.y;const{dx:o,dy:a}=Jt(e.position,e.moveCenter);e.moveCenter.radius&&(e.direction=Math.atan2(a,o),e.velocity.angle=e.direction);break}case"normal":{const o=e.options.move.warp,a=s.canvas.size,l={bottom:a.height+e.getRadius()+e.offset.y,left:-e.getRadius()-e.offset.x,right:a.width+e.getRadius()+e.offset.x,top:-e.getRadius()-e.offset.y},u=e.getRadius(),c=kc(e.position,u);n==="right"&&c.left>a.width+e.offset.x?(e.position.x=l.left,e.initialPosition.x=e.position.x,o||(e.position.y=ze()*a.height,e.initialPosition.y=e.position.y)):n==="left"&&c.right<-e.offset.x&&(e.position.x=l.right,e.initialPosition.x=e.position.x,o||(e.position.y=ze()*a.height,e.initialPosition.y=e.position.y)),n==="bottom"&&c.top>a.height+e.offset.y?(o||(e.position.x=ze()*a.width,e.initialPosition.x=e.position.x),e.position.y=l.top,e.initialPosition.y=e.position.y):n==="top"&&c.bottom<-e.offset.y&&(o||(e.position.x=ze()*a.width,e.initialPosition.x=e.position.x),e.position.y=l.bottom,e.initialPosition.y=e.position.y);break}}break}}}}class JQ{constructor(e){this.container=e,this._updateOutMode=(n,r,i,s)=>{for(const o of this.updaters)o.update(n,s,r,i)},this.updaters=[new KQ(e),new QQ(e),new XQ(e),new YQ(e)]}init(){}isEnabled(e){return!e.destroyed&&!e.spawning}update(e,n){const r=e.options.move.outModes;this._updateOutMode(e,n,r.bottom??r.default,"bottom"),this._updateOutMode(e,n,r.left??r.default,"left"),this._updateOutMode(e,n,r.right??r.default,"right"),this._updateOutMode(e,n,r.top??r.default,"top")}}async function ZQ(t,e=!0){await t.addParticleUpdater("outModes",n=>new JQ(n),e)}function eY(t,e,n,r){switch(t.options.size.animation.destroy){case"max":e>=r&&t.destroy();break;case"min":e<=n&&t.destroy();break}}function tY(t,e){const n=t.size;if(t.destroyed||!n||!n.enable||(n.maxLoops??0)>0&&(n.loops??0)>(n.maxLoops??0))return;const r=(n.velocity??0)*e.factor,i=n.min,s=n.max,o=n.decay??1;if(n.time||(n.time=0),(n.delayTime??0)>0&&n.time<(n.delayTime??0)&&(n.time+=e.value),!((n.delayTime??0)>0&&n.time<(n.delayTime??0))){switch(n.status){case"increasing":n.value>=s?(n.status="decreasing",n.loops||(n.loops=0),n.loops++):n.value+=r;break;case"decreasing":n.value<=i?(n.status="increasing",n.loops||(n.loops=0),n.loops++):n.value-=r}n.velocity&&o!==1&&(n.velocity*=o),eY(t,n.value,i,s),t.destroyed||(n.value=gr(n.value,i,s))}}class nY{init(e){const n=e.container,r=e.options.size,i=r.animation;i.enable&&(e.size.velocity=(e.retina.sizeAnimationSpeed??n.retina.sizeAnimationSpeed)/100*n.retina.reduceFactor,i.sync||(e.size.velocity*=ze()))}isEnabled(e){return!e.destroyed&&!e.spawning&&e.size.enable&&((e.size.maxLoops??0)<=0||(e.size.maxLoops??0)>0&&(e.size.loops??0)<(e.size.maxLoops??0))}reset(e){e.size.loops=0}update(e,n){this.isEnabled(e)&&tY(e,n)}}async function rY(t,e=!0){await t.addParticleUpdater("size",()=>new nY,e)}async function iY(t,e=!0){await $Q(t,!1),await FQ(t,!1),await UQ(t,!1),await WQ(t,!1),await ZQ(t,!1),await rY(t,!1),await t.refresh(e)}async function sY(){Km("ease-in-quad",t=>t**2),Km("ease-out-quad",t=>1-(1-t)**2),Km("ease-in-out-quad",t=>t<.5?2*t**2:1-(-2*t+2)**2/2)}class oY{constructor(){this.distance=200,this.duration=.4,this.easing="ease-out-quad",this.factor=1,this.maxSpeed=50,this.speed=1}load(e){e&&(e.distance!==void 0&&(this.distance=e.distance),e.duration!==void 0&&(this.duration=e.duration),e.easing!==void 0&&(this.easing=e.easing),e.factor!==void 0&&(this.factor=e.factor),e.maxSpeed!==void 0&&(this.maxSpeed=e.maxSpeed),e.speed!==void 0&&(this.speed=e.speed))}}let aY=class extends Br{constructor(e,n){super(n),this._clickAttract=()=>{const r=this.container;r.attract||(r.attract={particles:[]});const{attract:i}=r;if(i.finish||(i.count||(i.count=0),i.count++,i.count===r.particles.count&&(i.finish=!0)),i.clicking){const s=r.interactivity.mouse.clickPosition,o=r.retina.attractModeDistance;if(!o||o<0||!s)return;this._processAttract(s,o,new Ht(s.x,s.y,o))}else i.clicking===!1&&(i.particles=[])},this._hoverAttract=()=>{const r=this.container,i=r.interactivity.mouse.position,s=r.retina.attractModeDistance;!s||s<0||!i||this._processAttract(i,s,new Ht(i.x,i.y,s))},this._processAttract=(r,i,s)=>{const o=this.container,a=o.actualOptions.interactivity.modes.attract;if(!a)return;const l=o.particles.quadTree.query(s,u=>this.isEnabled(u));for(const u of l){const{dx:c,dy:h,distance:d}=Jt(u.position,r),f=a.speed*a.factor,p=gr(zR(a.easing)(1-d/i)*f,0,a.maxSpeed),m=vt.create(d===0?f:c/d*p,d===0?f:h/d*p);u.position.subFrom(m)}},this._engine=e,n.attract||(n.attract={particles:[]}),this.handleClickMode=r=>{const i=this.container.actualOptions,s=i.interactivity.modes.attract;if(!(!s||r!=="attract")){n.attract||(n.attract={particles:[]}),n.attract.clicking=!0,n.attract.count=0;for(const o of n.attract.particles)this.isEnabled(o)&&o.velocity.setTo(o.initialVelocity);n.attract.particles=[],n.attract.finish=!1,setTimeout(()=>{n.destroyed||(n.attract||(n.attract={particles:[]}),n.attract.clicking=!1)},s.duration*1e3)}}}clear(){}init(){const e=this.container,n=e.actualOptions.interactivity.modes.attract;n&&(e.retina.attractModeDistance=n.distance*e.retina.pixelRatio)}async interact(){const e=this.container,n=e.actualOptions,r=e.interactivity.status===ro,i=n.interactivity.events,s=i.onHover.enable,o=i.onHover.mode,a=i.onClick.enable,l=i.onClick.mode;r&&s&&tt("attract",o)?this._hoverAttract():a&&tt("attract",l)&&this._clickAttract()}isEnabled(e){const n=this.container,r=n.actualOptions,i=n.interactivity.mouse,s=((e==null?void 0:e.interactivity)??r.interactivity).events;if((!i.position||!s.onHover.enable)&&(!i.clickPosition||!s.onClick.enable))return!1;const o=s.onHover.mode,a=s.onClick.mode;return tt("attract",o)||tt("attract",a)}loadModeOptions(e,...n){e.attract||(e.attract=new oY);for(const r of n)e.attract.load(r==null?void 0:r.attract)}reset(){}};async function lY(t,e=!0){await t.addInteractor("externalAttract",n=>new aY(t,n),e)}class uY{constructor(){this.distance=200}load(e){e&&e.distance!==void 0&&(this.distance=e.distance)}}class cY extends Br{constructor(e){super(e),this._processBounce=(n,r,i)=>{const s=this.container.particles.quadTree.query(i,o=>this.isEnabled(o));for(const o of s)i instanceof Ht?HR(av(o),{position:n,radius:r,mass:r**2*Math.PI/2,velocity:vt.origin,factor:vt.origin}):i instanceof yr&&oK(o,kc(n,r))},this._processMouseBounce=()=>{const n=this.container,r=n.retina.pixelRatio,i=10*r,s=n.interactivity.mouse.position,o=n.retina.bounceModeDistance;!o||o<0||!s||this._processBounce(s,o,new Ht(s.x,s.y,o+i))},this._singleSelectorBounce=(n,r)=>{const i=this.container,s=document.querySelectorAll(n);s.length&&s.forEach(o=>{const a=o,l=i.retina.pixelRatio,u={x:(a.offsetLeft+a.offsetWidth/2)*l,y:(a.offsetTop+a.offsetHeight/2)*l},c=a.offsetWidth/2*l,h=10*l,d=r.type==="circle"?new Ht(u.x,u.y,c+h):new yr(a.offsetLeft*l-h,a.offsetTop*l-h,a.offsetWidth*l+h*2,a.offsetHeight*l+h*2);this._processBounce(u,c,d)})}}clear(){}init(){const e=this.container,n=e.actualOptions.interactivity.modes.bounce;n&&(e.retina.bounceModeDistance=n.distance*e.retina.pixelRatio)}async interact(){const e=this.container,n=e.actualOptions,r=n.interactivity.events,i=e.interactivity.status===ro,s=r.onHover.enable,o=r.onHover.mode,a=r.onDiv;i&&s&&tt("bounce",o)?this._processMouseBounce():vw("bounce",a,(l,u)=>this._singleSelectorBounce(l,u))}isEnabled(e){const n=this.container,r=n.actualOptions,i=n.interactivity.mouse,s=((e==null?void 0:e.interactivity)??r.interactivity).events,o=s.onDiv;return i.position&&s.onHover.enable&&tt("bounce",s.onHover.mode)||yw("bounce",o)}loadModeOptions(e,...n){e.bounce||(e.bounce=new uY);for(const r of n)e.bounce.load(r==null?void 0:r.bounce)}reset(){}}async function hY(t,e=!0){await t.addInteractor("externalBounce",n=>new cY(n),e)}class c2{constructor(){this.distance=200,this.duration=.4,this.mix=!1}load(e){if(e){if(e.distance!==void 0&&(this.distance=e.distance),e.duration!==void 0&&(this.duration=e.duration),e.mix!==void 0&&(this.mix=e.mix),e.opacity!==void 0&&(this.opacity=e.opacity),e.color!==void 0){const n=Sn(this.color)?void 0:this.color;this.color=wt(e.color,r=>Ot.create(n,r))}e.size!==void 0&&(this.size=e.size)}}}class dY extends c2{constructor(){super(),this.selectors=[]}get ids(){return wt(this.selectors,e=>e.replace("#",""))}set ids(e){this.selectors=wt(e,n=>`#${n}`)}load(e){super.load(e),e&&(e.ids!==void 0&&(this.ids=e.ids),e.selectors!==void 0&&(this.selectors=e.selectors))}}class fY extends c2{load(e){super.load(e),e&&(this.divs=wt(e.divs,n=>{const r=new dY;return r.load(n),r}))}}function sT(t,e,n,r){if(e>=n){const i=t+(e-n)*r;return gr(i,t,e)}else if(e{var u;const n=this.container,r=n.actualOptions,i=n.interactivity.mouse.clickPosition,s=r.interactivity.modes.bubble;if(!s||!i)return;n.bubble||(n.bubble={});const o=n.retina.bubbleModeDistance;if(!o||o<0)return;const a=n.particles.quadTree.queryCircle(i,o,c=>this.isEnabled(c)),{bubble:l}=n;for(const c of a){if(!l.clicking)continue;c.bubble.inRange=!l.durationEnd;const h=c.getPosition(),d=Tn(h,i),f=(new Date().getTime()-(n.interactivity.mouse.clickTime||0))/1e3;f>s.duration&&(l.durationEnd=!0),f>s.duration*2&&(l.clicking=!1,l.durationEnd=!1);const p={bubbleObj:{optValue:n.retina.bubbleModeSize,value:c.bubble.radius},particlesObj:{optValue:Bi(c.options.size.value)*n.retina.pixelRatio,value:c.size.value},type:"size"};this._process(c,d,f,p);const m={bubbleObj:{optValue:s.opacity,value:c.bubble.opacity},particlesObj:{optValue:Bi(c.options.opacity.value),value:((u=c.opacity)==null?void 0:u.value)??1},type:"opacity"};this._process(c,d,f,m),!l.durationEnd&&d<=o?this._hoverBubbleColor(c,d):delete c.bubble.color}},this._hoverBubble=()=>{const n=this.container,r=n.interactivity.mouse.position,i=n.retina.bubbleModeDistance;if(!i||i<0||r===void 0)return;const s=n.particles.quadTree.queryCircle(r,i,o=>this.isEnabled(o));for(const o of s){o.bubble.inRange=!0;const a=o.getPosition(),l=Tn(a,r),u=1-l/i;l<=i?u>=0&&n.interactivity.status===ro&&(this._hoverBubbleSize(o,u),this._hoverBubbleOpacity(o,u),this._hoverBubbleColor(o,u)):this.reset(o),n.interactivity.status===sv&&this.reset(o)}},this._hoverBubbleColor=(n,r,i)=>{const s=this.container.actualOptions,o=i??s.interactivity.modes.bubble;if(o){if(!n.bubble.finalColor){const a=o.color;if(!a)return;const l=ai(a);n.bubble.finalColor=ju(l)}if(n.bubble.finalColor)if(o.mix){n.bubble.color=void 0;const a=n.getFillColor();n.bubble.color=a?YR(_w(a,n.bubble.finalColor,1-r,r)):n.bubble.finalColor}else n.bubble.color=n.bubble.finalColor}},this._hoverBubbleOpacity=(n,r,i)=>{var h,d;const s=this.container,o=s.actualOptions,a=(i==null?void 0:i.opacity)??((h=o.interactivity.modes.bubble)==null?void 0:h.opacity);if(!a)return;const l=n.options.opacity.value,u=((d=n.opacity)==null?void 0:d.value)??1,c=sT(u,a,Bi(l),r);c!==void 0&&(n.bubble.opacity=c)},this._hoverBubbleSize=(n,r,i)=>{const s=this.container,o=i!=null&&i.size?i.size*s.retina.pixelRatio:s.retina.bubbleModeSize;if(o===void 0)return;const a=Bi(n.options.size.value)*s.retina.pixelRatio,l=n.size.value,u=sT(l,o,a,r);u!==void 0&&(n.bubble.radius=u)},this._process=(n,r,i,s)=>{const o=this.container,a=s.bubbleObj.optValue,l=o.actualOptions,u=l.interactivity.modes.bubble;if(!u||a===void 0)return;const c=u.duration,h=o.retina.bubbleModeDistance,d=s.particlesObj.optValue,f=s.bubbleObj.value,p=s.particlesObj.value||0,m=s.type;if(!(!h||h<0||a===d))if(o.bubble||(o.bubble={}),o.bubble.durationEnd)f&&(m==="size"&&delete n.bubble.radius,m==="opacity"&&delete n.bubble.opacity);else if(r<=h){if((f??p)!==a){const g=p-i*(p-a)/c;m==="size"&&(n.bubble.radius=g),m==="opacity"&&(n.bubble.opacity=g)}}else m==="size"&&delete n.bubble.radius,m==="opacity"&&delete n.bubble.opacity},this._singleSelectorHover=(n,r,i)=>{const s=this.container,o=document.querySelectorAll(r),a=s.actualOptions.interactivity.modes.bubble;!a||!o.length||o.forEach(l=>{const u=l,c=s.retina.pixelRatio,h={x:(u.offsetLeft+u.offsetWidth/2)*c,y:(u.offsetTop+u.offsetHeight/2)*c},d=u.offsetWidth/2*c,f=i.type==="circle"?new Ht(h.x,h.y,d):new yr(u.offsetLeft*c,u.offsetTop*c,u.offsetWidth*c,u.offsetHeight*c),p=s.particles.quadTree.query(f,m=>this.isEnabled(m));for(const m of p){if(!f.contains(m.getPosition()))continue;m.bubble.inRange=!0;const w=a.divs,g=BR(w,u);(!m.bubble.div||m.bubble.div!==u)&&(this.clear(m,n,!0),m.bubble.div=u),this._hoverBubbleSize(m,1,g),this._hoverBubbleOpacity(m,1,g),this._hoverBubbleColor(m,1,g)}})},e.bubble||(e.bubble={}),this.handleClickMode=n=>{n==="bubble"&&(e.bubble||(e.bubble={}),e.bubble.clicking=!0)}}clear(e,n,r){e.bubble.inRange&&!r||(delete e.bubble.div,delete e.bubble.opacity,delete e.bubble.radius,delete e.bubble.color)}init(){const e=this.container,n=e.actualOptions.interactivity.modes.bubble;n&&(e.retina.bubbleModeDistance=n.distance*e.retina.pixelRatio,n.size!==void 0&&(e.retina.bubbleModeSize=n.size*e.retina.pixelRatio))}async interact(e){const n=this.container.actualOptions,r=n.interactivity.events,i=r.onHover,s=r.onClick,o=i.enable,a=i.mode,l=s.enable,u=s.mode,c=r.onDiv;o&&tt("bubble",a)?this._hoverBubble():l&&tt("bubble",u)?this._clickBubble():vw("bubble",c,(h,d)=>this._singleSelectorHover(e,h,d))}isEnabled(e){const n=this.container,r=n.actualOptions,i=n.interactivity.mouse,s=((e==null?void 0:e.interactivity)??r.interactivity).events,{onClick:o,onDiv:a,onHover:l}=s,u=yw("bubble",a);return u||l.enable&&i.position||o.enable&&i.clickPosition?tt("bubble",l.mode)||tt("bubble",o.mode)||u:!1}loadModeOptions(e,...n){e.bubble||(e.bubble=new fY);for(const r of n)e.bubble.load(r==null?void 0:r.bubble)}reset(e){e.bubble.inRange=!1}}async function mY(t,e=!0){await t.addInteractor("externalBubble",n=>new pY(n),e)}class gY{constructor(){this.opacity=.5}load(e){e&&e.opacity!==void 0&&(this.opacity=e.opacity)}}class yY{constructor(){this.distance=80,this.links=new gY,this.radius=60}get lineLinked(){return this.links}set lineLinked(e){this.links=e}get line_linked(){return this.links}set line_linked(e){this.links=e}load(e){e&&(e.distance!==void 0&&(this.distance=e.distance),this.links.load(e.links??e.lineLinked??e.line_linked),e.radius!==void 0&&(this.radius=e.radius))}}function vY(t,e,n,r){const i=Math.floor(n.getRadius()/e.getRadius()),s=e.getFillColor(),o=n.getFillColor();if(!s||!o)return;const a=e.getPosition(),l=n.getPosition(),u=_w(s,o,e.getRadius(),n.getRadius()),c=t.createLinearGradient(a.x,a.y,l.x,l.y);return c.addColorStop(0,Bu(s,r)),c.addColorStop(i>1?1:i,li(u,r)),c.addColorStop(1,Bu(o,r)),c}function _Y(t,e,n,r,i){Ql(t,r,i),t.lineWidth=e,t.strokeStyle=n,t.stroke()}function wY(t,e,n,r){const i=t.actualOptions,s=i.interactivity.modes.connect;if(s)return vY(e,n,r,s.links.opacity)}function xY(t,e,n){t.canvas.draw(r=>{const i=wY(t,r,e,n);if(!i)return;const s=e.getPosition(),o=n.getPosition();_Y(r,e.retina.linksWidth??0,i,s,o)})}class bY extends Br{constructor(e){super(e)}clear(){}init(){const e=this.container,n=e.actualOptions.interactivity.modes.connect;n&&(e.retina.connectModeDistance=n.distance*e.retina.pixelRatio,e.retina.connectModeRadius=n.radius*e.retina.pixelRatio)}async interact(){const e=this.container;if(e.actualOptions.interactivity.events.onHover.enable&&e.interactivity.status==="pointermove"){const r=e.interactivity.mouse.position;if(!e.retina.connectModeDistance||e.retina.connectModeDistance<0||!e.retina.connectModeRadius||e.retina.connectModeRadius<0||!r)return;const i=Math.abs(e.retina.connectModeRadius),s=e.particles.quadTree.queryCircle(r,i,a=>this.isEnabled(a));let o=0;for(const a of s){const l=a.getPosition();for(const u of s.slice(o+1)){const c=u.getPosition(),h=Math.abs(e.retina.connectModeDistance),d=Math.abs(l.x-c.x),f=Math.abs(l.y-c.y);dnew bY(n),e)}class TY{constructor(){this.blink=!1,this.consent=!1,this.opacity=1}load(e){e&&(e.blink!==void 0&&(this.blink=e.blink),e.color!==void 0&&(this.color=Ot.create(this.color,e.color)),e.consent!==void 0&&(this.consent=e.consent),e.opacity!==void 0&&(this.opacity=e.opacity))}}class SY{constructor(){this.distance=100,this.links=new TY}get lineLinked(){return this.links}set lineLinked(e){this.links=e}get line_linked(){return this.links}set line_linked(e){this.links=e}load(e){e&&(e.distance!==void 0&&(this.distance=e.distance),this.links.load(e.links??e.lineLinked??e.line_linked))}}function kY(t,e,n,r,i,s){Ql(t,n,r),t.strokeStyle=li(i,s),t.lineWidth=e,t.stroke()}function CY(t,e,n,r,i){t.canvas.draw(s=>{const o=e.getPosition();kY(s,e.retina.linksWidth??0,o,i,n,r)})}class IY extends Br{constructor(e){super(e)}clear(){}init(){const e=this.container,n=e.actualOptions.interactivity.modes.grab;n&&(e.retina.grabModeDistance=n.distance*e.retina.pixelRatio)}async interact(){var a;const e=this.container,n=e.actualOptions,r=n.interactivity;if(!r.modes.grab||!r.events.onHover.enable||e.interactivity.status!==ro)return;const i=e.interactivity.mouse.position;if(!i)return;const s=e.retina.grabModeDistance;if(!s||s<0)return;const o=e.particles.quadTree.queryCircle(i,s,l=>this.isEnabled(l));for(const l of o){const u=l.getPosition(),c=Tn(u,i);if(c>s)continue;const h=r.modes.grab.links,d=h.opacity,f=d-c*d/s;if(f<=0)continue;const p=h.color??((a=l.options.links)==null?void 0:a.color);if(!e.particles.grabLineColor&&p){const w=r.modes.grab.links;e.particles.grabLineColor=JR(p,w.blink,w.consent)}const m=lv(l,void 0,e.particles.grabLineColor);m&&CY(e,l,m,f,i)}}isEnabled(e){const n=this.container,r=n.interactivity.mouse,i=((e==null?void 0:e.interactivity)??n.actualOptions.interactivity).events;return i.onHover.enable&&!!r.position&&tt("grab",i.onHover.mode)}loadModeOptions(e,...n){e.grab||(e.grab=new SY);for(const r of n)e.grab.load(r==null?void 0:r.grab)}reset(){}}async function PY(t,e=!0){await t.addInteractor("externalGrab",n=>new IY(n),e)}class AY extends Br{constructor(e){super(e),this.handleClickMode=n=>{if(n!=="pause")return;const r=this.container;r.getAnimationStatus()?r.pause():r.play()}}clear(){}init(){}async interact(){}isEnabled(){return!0}reset(){}}async function RY(t,e=!0){await t.addInteractor("externalPause",n=>new AY(n),e)}class MY{constructor(){this.default=!0,this.groups=[],this.quantity=4}get particles_nb(){return this.quantity}set particles_nb(e){this.quantity=fe(e)}load(e){if(!e)return;e.default!==void 0&&(this.default=e.default),e.groups!==void 0&&(this.groups=e.groups.map(r=>r)),this.groups.length||(this.default=!0);const n=e.quantity??e.particles_nb;n!==void 0&&(this.quantity=fe(n))}}class OY extends Br{constructor(e){super(e),this.handleClickMode=n=>{if(n!=="push")return;const r=this.container,i=r.actualOptions,s=i.interactivity.modes.push;if(!s)return;const o=ne(s.quantity);if(o<=0)return;const a=$p([void 0,...s.groups]),l=a!==void 0?r.actualOptions.particles.groups[a]:void 0;r.particles.push(o,r.interactivity.mouse,l,a)}}clear(){}init(){}async interact(){}isEnabled(){return!0}loadModeOptions(e,...n){e.push||(e.push=new MY);for(const r of n)e.push.load(r==null?void 0:r.push)}reset(){}}async function DY(t,e=!0){await t.addInteractor("externalPush",n=>new OY(n),e)}class NY{constructor(){this.quantity=2}get particles_nb(){return this.quantity}set particles_nb(e){this.quantity=fe(e)}load(e){if(!e)return;const n=e.quantity??e.particles_nb;n!==void 0&&(this.quantity=fe(n))}}class $Y extends Br{constructor(e){super(e),this.handleClickMode=n=>{const r=this.container,i=r.actualOptions;if(!i.interactivity.modes.remove||n!=="remove")return;const s=ne(i.interactivity.modes.remove.quantity);r.particles.removeQuantity(s)}}clear(){}init(){}async interact(){}isEnabled(){return!0}loadModeOptions(e,...n){e.remove||(e.remove=new NY);for(const r of n)e.remove.load(r==null?void 0:r.remove)}reset(){}}async function LY(t,e=!0){await t.addInteractor("externalRemove",n=>new $Y(n),e)}class h2{constructor(){this.distance=200,this.duration=.4,this.factor=100,this.speed=1,this.maxSpeed=50,this.easing="ease-out-quad"}load(e){e&&(e.distance!==void 0&&(this.distance=e.distance),e.duration!==void 0&&(this.duration=e.duration),e.easing!==void 0&&(this.easing=e.easing),e.factor!==void 0&&(this.factor=e.factor),e.speed!==void 0&&(this.speed=e.speed),e.maxSpeed!==void 0&&(this.maxSpeed=e.maxSpeed))}}class FY extends h2{constructor(){super(),this.selectors=[]}get ids(){return wt(this.selectors,e=>e.replace("#",""))}set ids(e){this.selectors=wt(e,n=>`#${n}`)}load(e){super.load(e),e&&(e.ids!==void 0&&(this.ids=e.ids),e.selectors!==void 0&&(this.selectors=e.selectors))}}class VY extends h2{load(e){super.load(e),e&&(this.divs=wt(e.divs,n=>{const r=new FY;return r.load(n),r}))}}class zY extends Br{constructor(e,n){super(n),this._clickRepulse=()=>{const r=this.container,i=r.actualOptions.interactivity.modes.repulse;if(!i)return;const s=r.repulse||{particles:[]};if(s.finish||(s.count||(s.count=0),s.count++,s.count===r.particles.count&&(s.finish=!0)),s.clicking){const o=r.retina.repulseModeDistance;if(!o||o<0)return;const a=Math.pow(o/6,3),l=r.interactivity.mouse.clickPosition;if(l===void 0)return;const u=new Ht(l.x,l.y,a),c=r.particles.quadTree.query(u,h=>this.isEnabled(h));for(const h of c){const{dx:d,dy:f,distance:p}=Jt(l,h.position),m=p**2,w=i.speed,g=-a*w/m;if(m<=a){s.particles.push(h);const y=vt.create(d,f);y.length=g,h.velocity.setTo(y)}}}else if(s.clicking===!1){for(const o of s.particles)o.velocity.setTo(o.initialVelocity);s.particles=[]}},this._hoverRepulse=()=>{const r=this.container,i=r.interactivity.mouse.position,s=r.retina.repulseModeDistance;!s||s<0||!i||this._processRepulse(i,s,new Ht(i.x,i.y,s))},this._processRepulse=(r,i,s,o)=>{const a=this.container,l=a.particles.quadTree.query(s,c=>this.isEnabled(c)),u=a.actualOptions.interactivity.modes.repulse;if(u)for(const c of l){const{dx:h,dy:d,distance:f}=Jt(c.position,r),p=((o==null?void 0:o.speed)??u.speed)*u.factor,m=gr(zR(u.easing)(1-f/i)*p,0,u.maxSpeed),w=vt.create(f===0?p:h/f*m,f===0?p:d/f*m);c.position.addTo(w)}},this._singleSelectorRepulse=(r,i)=>{const s=this.container,o=s.actualOptions.interactivity.modes.repulse;if(!o)return;const a=document.querySelectorAll(r);a.length&&a.forEach(l=>{const u=l,c=s.retina.pixelRatio,h={x:(u.offsetLeft+u.offsetWidth/2)*c,y:(u.offsetTop+u.offsetHeight/2)*c},d=u.offsetWidth/2*c,f=i.type==="circle"?new Ht(h.x,h.y,d):new yr(u.offsetLeft*c,u.offsetTop*c,u.offsetWidth*c,u.offsetHeight*c),p=o.divs,m=BR(p,u);this._processRepulse(h,d,f,m)})},this._engine=e,n.repulse||(n.repulse={particles:[]}),this.handleClickMode=r=>{const i=this.container.actualOptions,s=i.interactivity.modes.repulse;if(!s||r!=="repulse")return;n.repulse||(n.repulse={particles:[]});const o=n.repulse;o.clicking=!0,o.count=0;for(const a of n.repulse.particles)this.isEnabled(a)&&a.velocity.setTo(a.initialVelocity);o.particles=[],o.finish=!1,setTimeout(()=>{n.destroyed||(o.clicking=!1)},s.duration*1e3)}}clear(){}init(){const e=this.container,n=e.actualOptions.interactivity.modes.repulse;n&&(e.retina.repulseModeDistance=n.distance*e.retina.pixelRatio)}async interact(){const e=this.container,n=e.actualOptions,r=e.interactivity.status===ro,i=n.interactivity.events,s=i.onHover,o=s.enable,a=s.mode,l=i.onClick,u=l.enable,c=l.mode,h=i.onDiv;r&&o&&tt("repulse",a)?this._hoverRepulse():u&&tt("repulse",c)?this._clickRepulse():vw("repulse",h,(d,f)=>this._singleSelectorRepulse(d,f))}isEnabled(e){const n=this.container,r=n.actualOptions,i=n.interactivity.mouse,s=((e==null?void 0:e.interactivity)??r.interactivity).events,o=s.onDiv,a=s.onHover,l=s.onClick,u=yw("repulse",o);if(!(u||a.enable&&i.position||l.enable&&i.clickPosition))return!1;const c=a.mode,h=l.mode;return tt("repulse",c)||tt("repulse",h)||u}loadModeOptions(e,...n){e.repulse||(e.repulse=new VY);for(const r of n)e.repulse.load(r==null?void 0:r.repulse)}reset(){}}async function UY(t,e=!0){await t.addInteractor("externalRepulse",n=>new zY(t,n),e)}class jY{constructor(){this.factor=3,this.radius=200}load(e){e&&(e.factor!==void 0&&(this.factor=e.factor),e.radius!==void 0&&(this.radius=e.radius))}}class BY extends Br{constructor(e){super(e)}clear(e,n,r){e.slow.inRange&&!r||(e.slow.factor=1)}init(){const e=this.container,n=e.actualOptions.interactivity.modes.slow;n&&(e.retina.slowModeRadius=n.radius*e.retina.pixelRatio)}async interact(){}isEnabled(e){const n=this.container,r=n.interactivity.mouse,i=((e==null?void 0:e.interactivity)??n.actualOptions.interactivity).events;return i.onHover.enable&&!!r.position&&tt("slow",i.onHover.mode)}loadModeOptions(e,...n){e.slow||(e.slow=new jY);for(const r of n)e.slow.load(r==null?void 0:r.slow)}reset(e){e.slow.inRange=!1;const n=this.container,r=n.actualOptions,i=n.interactivity.mouse.position,s=n.retina.slowModeRadius,o=r.interactivity.modes.slow;if(!o||!s||s<0||!i)return;const a=e.getPosition(),l=Tn(i,a),u=l/s,c=o.factor,{slow:h}=e;l>s||(h.inRange=!0,h.factor=u/c)}}async function HY(t,e=!0){await t.addInteractor("externalSlow",n=>new BY(n),e)}const lg=[0,4,2,1],oT=[8,8,4,2];class WY{constructor(e){this.pos=0,this.data=new Uint8ClampedArray(e)}getString(e){const n=this.data.slice(this.pos,this.pos+e);return this.pos+=n.length,n.reduce((r,i)=>r+String.fromCharCode(i),"")}nextByte(){return this.data[this.pos++]}nextTwoBytes(){return this.pos+=2,this.data[this.pos-2]+(this.data[this.pos-1]<<8)}readSubBlocks(){let e="",n=0;do{n=this.data[this.pos++];for(let r=n;--r>=0;e+=String.fromCharCode(this.data[this.pos++]));}while(n!==0);return e}readSubBlocksBin(){let e=0,n=0;for(let i=0;(e=this.data[this.pos+i])!==0;i+=e+1)n+=e;const r=new Uint8Array(n);for(let i=0;(e=this.data[this.pos++])!==0;)for(let s=e;--s>=0;r[i++]=this.data[this.pos++]);return r}skipSubBlocks(){for(;this.data[this.pos]!==0;this.pos+=this.data[this.pos]+1);this.pos++}}function d2(t,e){const n=[];for(let r=0;r>>5,i.disposalMethod=(s&28)>>>2,i.userInputDelayFlag=(s&2)===2;const o=(s&1)===1;i.delayTime=t.nextTwoBytes()*10;const a=t.nextByte();o&&r(a),t.pos++;break}case 255:{t.pos++;const i={identifier:t.getString(8),authenticationCode:t.getString(3),data:t.readSubBlocksBin()};e.applicationExtensions.push(i);break}case 254:{e.comments.push([n(!1),t.readSubBlocks()]);break}case 1:{if(e.globalColorTable.length===0)throw new EvalError("plain text extension without global color table");t.pos++,e.frames[n(!1)].plainTextData={left:t.nextTwoBytes(),top:t.nextTwoBytes(),width:t.nextTwoBytes(),height:t.nextTwoBytes(),charSize:{width:t.nextTwoBytes(),height:t.nextTwoBytes()},foregroundColor:t.nextByte(),backgroundColor:t.nextByte(),text:t.readSubBlocks()};break}default:t.skipSubBlocks();break}}async function GY(t,e,n,r,i,s){const o=e.frames[r(!0)];o.left=t.nextTwoBytes(),o.top=t.nextTwoBytes(),o.width=t.nextTwoBytes(),o.height=t.nextTwoBytes();const a=t.nextByte(),l=(a&128)===128,u=(a&64)===64;o.sortFlag=(a&32)===32,o.reserved=(a&24)>>>3;const c=1<<(a&7)+1;l&&(o.localColorTable=d2(t,c));const h=g=>{const{r:y,g:v,b:_}=(l?o.localColorTable:e.globalColorTable)[g];return{r:y,g:v,b:_,a:g===i(null)?n?~~((y+v+_)/3):0:255}},d=(()=>{try{return new ImageData(o.width,o.height,{colorSpace:"srgb"})}catch(g){if(g instanceof DOMException&&g.name==="IndexSizeError")return null;throw g}})();if(d==null)throw new EvalError("GIF frame size is to large");const f=t.nextByte(),p=t.readSubBlocksBin(),m=1<{const v=g>>>3,_=g&7;return(p[v]+(p[v+1]<<8)+(p[v+2]<<16)&(1<>>_};if(u){for(let g=0,y=f+1,v=0,_=[[0]],x=0;x<4;x++){if(lg[x]=_.length?_.push(_[C].concat(_[C][0])):C!==m&&_.push(_[C].concat(_[g][0]));for(let A=0;A<_[g].length;A++){const{r:S,g:P,b:M,a:D}=h(_[g][A]);d.data.set([S,P,M,D],lg[x]*o.width+oT[x]*E+b%(o.width*4)),b+=4}_.length===1<=o.height))break}s==null||s(t.pos/(t.data.length-1),r(!1)+1,d,{x:o.left,y:o.top},{width:e.width,height:e.height})}o.image=d,o.bitmap=await createImageBitmap(d)}else{for(let g=0,y=f+1,v=0,_=[[0]],x=-4;;){const b=g;if(g=w(v,y),v+=y,g===m){y=f+1,_.length=m+2;for(let E=0;E<_.length;E++)_[E]=E=_.length?_.push(_[b].concat(_[b][0])):b!==m&&_.push(_[b].concat(_[g][0]));for(let E=0;E<_[g].length;E++){const{r:C,g:A,b:S,a:P}=h(_[g][E]);d.data.set([C,A,S,P],x+=4)}_.length>=1<>>4,s.sortFlag=(a&8)===8;const u=1<<(a&7)+1,c=o.nextByte();s.pixelAspectRatio=o.nextByte(),s.pixelAspectRatio!==0&&(s.pixelAspectRatio=(s.pixelAspectRatio+15)/64),l&&(s.globalColorTable=d2(o,u));const h=(()=>{try{return new ImageData(s.width,s.height,{colorSpace:"srgb"})}catch(_){if(_ instanceof DOMException&&_.name==="IndexSizeError")return null;throw _}})();if(h==null)throw new Error("GIF frame size is to large");const{r:d,g:f,b:p}=s.globalColorTable[c];h.data.set(l?[d,f,p,255]:[0,0,0,0]);for(let _=4;_(_&&(w=!0),m),v=_=>(_!=null&&(g=_),g);try{do w&&(s.frames.push({left:0,top:0,width:0,height:0,disposalMethod:0,image:new ImageData(1,1,{colorSpace:"srgb"}),plainTextData:null,userInputDelayFlag:!1,delayTime:0,sortFlag:!1,localColorTable:[],reserved:0,GCreserved:0}),m++,g=-1,w=!1);while(!await KY(o,s,n,y,v,e));s.frames.length--;for(const _ of s.frames){if(_.userInputDelayFlag&&_.delayTime===0){s.totalTime=1/0;break}s.totalTime+=_.delayTime}return s}catch(_){throw _ instanceof EvalError?new Error(`error while parsing frame ${m} "${_.message}"`):_}}const XY=/(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d.]+%?\))|currentcolor/gi;function JY(t,e,n){const{svgData:r}=t;if(!r)return"";const i=Bu(e,n);if(r.includes("fill"))return r.replace(XY,()=>i);const s=r.indexOf(">");return`${r.substring(0,s)} fill="${i}"${r.substring(s)}`}async function Fp(t){return new Promise(e=>{t.loading=!0;const n=new Image;t.element=n,n.addEventListener("load",()=>{t.loading=!1,e()}),n.addEventListener("error",()=>{t.element=void 0,t.error=!0,t.loading=!1,so().error(`${Xn} loading image: ${t.source}`),e()}),n.src=t.source})}async function ZY(t){if(t.type!=="gif"){await Fp(t);return}t.loading=!0;try{t.gifData=await YY(t.source),t.gifLoopCount=QY(t.gifData)??0,t.gifLoopCount===0&&(t.gifLoopCount=1/0)}catch{t.error=!0}t.loading=!1}async function eX(t){if(t.type!=="svg"){await Fp(t);return}t.loading=!0;const e=await fetch(t.source);e.ok?t.svgData=await e.text():(so().error(`${Xn} Image not found`),t.error=!0),t.loading=!1}function tX(t,e,n,r){var o;const i=JY(t,n,((o=r.opacity)==null?void 0:o.value)??1),s={color:n,gif:e.gif,data:{...t,svgData:i},loaded:!1,ratio:e.width/e.height,replaceColor:e.replaceColor??e.replace_color,source:e.src};return new Promise(a=>{const l=new Blob([i],{type:"image/svg+xml"}),u=URL||window.URL||window.webkitURL||window,c=u.createObjectURL(l),h=new Image;h.addEventListener("load",()=>{s.loaded=!0,s.element=h,a(s),u.revokeObjectURL(c)}),h.addEventListener("error",async()=>{u.revokeObjectURL(c);const d={...t,error:!1,loading:!0};await Fp(d),s.loaded=!0,s.element=d.element,a(s)}),h.src=c})}class nX{constructor(e){this.loadImageShape=async n=>{if(!this._engine.loadImage)throw new Error(`${Xn} image shape not initialized`);await this._engine.loadImage({gif:n.gif,name:n.name,replaceColor:n.replaceColor??n.replace_color??!1,src:n.src})},this._engine=e}addImage(e){this._engine.images||(this._engine.images=[]),this._engine.images.push(e)}draw(e,n,r,i,s){const o=n.image,a=o==null?void 0:o.element;if(o){if(e.globalAlpha=i,o.gif&&o.gifData){const l=new OffscreenCanvas(o.gifData.width,o.gifData.height),u=l.getContext("2d");if(!u)throw new Error("could not create offscreen canvas context");u.imageSmoothingQuality="low",u.imageSmoothingEnabled=!1,u.clearRect(0,0,l.width,l.height),n.gifLoopCount===void 0&&(n.gifLoopCount=o.gifLoopCount??0);let c=n.gifFrame??0;const h={x:-o.gifData.width*.5,y:-o.gifData.height*.5},d=o.gifData.frames[c];if(n.gifTime===void 0&&(n.gifTime=0),!d.bitmap)return;switch(e.scale(r/o.gifData.width,r/o.gifData.height),d.disposalMethod){case 4:case 5:case 6:case 7:case 0:u.drawImage(d.bitmap,d.left,d.top),e.drawImage(l,h.x,h.y),u.clearRect(0,0,l.width,l.height);break;case 1:u.drawImage(d.bitmap,d.left,d.top),e.drawImage(l,h.x,h.y);break;case 2:u.drawImage(d.bitmap,d.left,d.top),e.drawImage(l,h.x,h.y),u.clearRect(0,0,l.width,l.height),o.gifData.globalColorTable.length===0?u.putImageData(o.gifData.frames[0].image,h.x+d.left,h.y+d.top):u.putImageData(o.gifData.backgroundImage,h.x,h.y);break;case 3:{const f=u.getImageData(0,0,l.width,l.height);u.drawImage(d.bitmap,d.left,d.top),e.drawImage(l,h.x,h.y),u.clearRect(0,0,l.width,l.height),u.putImageData(f,0,0)}break}if(n.gifTime+=s.value,n.gifTime>d.delayTime){if(n.gifTime-=d.delayTime,++c>=o.gifData.frames.length){if(--n.gifLoopCount<=0)return;c=0,u.clearRect(0,0,l.width,l.height)}n.gifFrame=c}e.scale(o.gifData.width/r,o.gifData.height/r)}else if(a){const l=o.ratio,u={x:-r,y:-r};e.drawImage(a,u.x,u.y,r*2,r*2/l)}e.globalAlpha=1}}getSidesCount(){return 12}async init(e){const n=e.actualOptions;if(!(!n.preload||!this._engine.loadImage))for(const r of n.preload)await this._engine.loadImage(r)}loadShape(e){if(e.shape!=="image"&&e.shape!=="images")return;this._engine.images||(this._engine.images=[]);const n=e.shapeData;this._engine.images.find(i=>i.name===n.name||i.source===n.src)||this.loadImageShape(n).then(()=>{this.loadShape(e)})}particleInit(e,n){if(n.shape!=="image"&&n.shape!=="images")return;this._engine.images||(this._engine.images=[]);const r=this._engine.images,i=n.shapeData,s=n.getFillColor(),o=r.find(l=>l.name===i.name||l.source===i.src);if(!o)return;const a=i.replaceColor??i.replace_color??o.replaceColor;if(o.loading){setTimeout(()=>{this.particleInit(e,n)});return}(async()=>{let l;o.svgData&&s?l=await tX(o,i,s,n):l={color:s,data:o,element:o.element,gif:o.gif,gifData:o.gifData,gifLoopCount:o.gifLoopCount,loaded:!0,ratio:i.width&&i.height?i.width/i.height:o.ratio??1,replaceColor:a,source:i.src},l.ratio||(l.ratio=1);const u=i.fill??n.fill,c=i.close??n.close,h={image:l,fill:u,close:c};n.image=h.image,n.fill=h.fill,n.close=h.close})()}}class rX{constructor(){this.src="",this.gif=!1}load(e){e&&(e.gif!==void 0&&(this.gif=e.gif),e.height!==void 0&&(this.height=e.height),e.name!==void 0&&(this.name=e.name),e.replaceColor!==void 0&&(this.replaceColor=e.replaceColor),e.src!==void 0&&(this.src=e.src),e.width!==void 0&&(this.width=e.width))}}class iX{constructor(e){this.id="imagePreloader",this._engine=e}getPlugin(){return{}}loadOptions(e,n){if(!n||!n.preload)return;e.preload||(e.preload=[]);const r=e.preload;for(const i of n.preload){const s=r.find(o=>o.name===i.name||o.src===i.src);if(s)s.load(i);else{const o=new rX;o.load(i),r.push(o)}}}needsPlugin(){return!0}}function sX(t){t.loadImage||(t.loadImage=async e=>{if(!e.name&&!e.src)throw new Error(`${Xn} no image source provided`);if(t.images||(t.images=[]),!t.images.find(n=>n.name===e.name||n.source===e.src))try{const n={gif:e.gif??!1,name:e.name??e.src,source:e.src,type:e.src.substring(e.src.length-3),error:!1,loading:!0,replaceColor:e.replaceColor,ratio:e.width&&e.height?e.width/e.height:void 0};t.images.push(n),await(e.gif?ZY:e.replaceColor?eX:Fp)(n)}catch{throw new Error(`${Xn} ${e.name??e.src} not found`)}})}async function oX(t,e=!0){sX(t);const n=new iX(t);await t.addPlugin(n,e),await t.addShape(["image","images"],new nX(t),e)}class aX extends gs{constructor(){super(),this.sync=!1}load(e){e&&(super.load(e),e.sync!==void 0&&(this.sync=e.sync))}}class lX extends gs{constructor(){super(),this.random.minimumValue=1e-4,this.sync=!1}load(e){e&&(super.load(e),e.sync!==void 0&&(this.sync=e.sync))}}class uX{constructor(){this.count=0,this.delay=new aX,this.duration=new lX}load(e){e&&(e.count!==void 0&&(this.count=e.count),this.delay.load(e.delay),this.duration.load(e.duration))}}class cX{constructor(e){this.container=e}init(e){const n=this.container,r=e.options,i=r.life;i&&(e.life={delay:n.retina.reduceFactor?ne(i.delay.value)*(i.delay.sync?1:ze())/n.retina.reduceFactor*1e3:0,delayTime:0,duration:n.retina.reduceFactor?ne(i.duration.value)*(i.duration.sync?1:ze())/n.retina.reduceFactor*1e3:0,time:0,count:i.count},e.life.duration<=0&&(e.life.duration=-1),e.life.count<=0&&(e.life.count=-1),e.life&&(e.spawning=e.life.delay>0))}isEnabled(e){return!e.destroyed}loadOptions(e,...n){e.life||(e.life=new uX);for(const r of n)e.life.load(r==null?void 0:r.life)}update(e,n){if(!this.isEnabled(e)||!e.life)return;const r=e.life;let i=!1;if(e.spawning)if(r.delayTime+=n.value,r.delayTime>=e.life.delay)i=!0,e.spawning=!1,r.delayTime=0,r.time=0;else return;if(r.duration===-1||e.spawning||(i?r.time=0:r.time+=n.value,r.time0&&e.life.count--,e.life.count===0){e.destroy();return}const s=this.container.canvas.size,o=fe(0,s.width),a=fe(0,s.width);e.position.x=an(o),e.position.y=an(a),e.spawning=!0,r.delayTime=0,r.time=0,e.reset();const l=e.options.life;l&&(r.delay=ne(l.delay.value)*1e3,r.duration=ne(l.duration.value)*1e3)}}async function hX(t,e=!0){await t.addParticleUpdater("life",n=>new cX(n),e)}class dX{draw(e,n,r){const i=n.shapeData;e.moveTo(-r/2,0),e.lineTo(r/2,0),e.lineCap=(i==null?void 0:i.cap)??"butt"}getSidesCount(){return 1}}async function fX(t,e=!0){await t.addShape("line",new dX,e)}class pX{init(){}isEnabled(e){return!za()&&!e.destroyed&&e.container.actualOptions.interactivity.events.onHover.parallax.enable}move(e){const n=e.container,r=n.actualOptions,i=r.interactivity.events.onHover.parallax;if(za()||!i.enable)return;const s=i.force,o=n.interactivity.mouse.position;if(!o)return;const a=n.canvas.size,l={x:a.width/2,y:a.height/2},u=i.smooth,c=e.getRadius()/s,h={x:(o.x-l.x)*c,y:(o.y-l.y)*c},{offset:d}=e;d.x+=(h.x-d.x)/u,d.y+=(h.y-d.y)/u}}async function mX(t,e=!0){await t.addMover("parallax",()=>new pX,e)}class gX extends ww{constructor(e){super(e)}clear(){}init(){}async interact(e){const n=this.container,r=e.retina.attractDistance??n.retina.attractDistance,i=e.getPosition(),s=n.particles.quadTree.queryCircle(i,r);for(const o of s){if(e===o||!o.options.move.attract.enable||o.destroyed||o.spawning)continue;const a=o.getPosition(),{dx:l,dy:u}=Jt(i,a),c=e.options.move.attract.rotate,h=l/(c.x*1e3),d=u/(c.y*1e3),f=o.size.value/e.size.value,p=1/f;e.velocity.x-=h*f,e.velocity.y-=d*f,o.velocity.x+=h*p,o.velocity.y+=d*p}}isEnabled(e){return e.options.move.attract.enable}reset(){}}async function yX(t,e=!0){await t.addInteractor("particlesAttract",n=>new gX(n),e)}function aT(t,e,n,r,i,s){const o=gr(t.options.collisions.absorb.speed*i.factor/10,0,r);t.size.value+=o/2,n.size.value-=o,r<=s&&(n.size.value=0,n.destroy())}function vX(t,e,n,r){const i=t.getRadius(),s=e.getRadius();i===void 0&&s!==void 0?t.destroy():i!==void 0&&s===void 0?e.destroy():i!==void 0&&s!==void 0&&(i>=s?aT(t,i,e,s,n,r):aT(e,s,t,i,n,r))}const lT=t=>{t.collisionMaxSpeed===void 0&&(t.collisionMaxSpeed=ne(t.options.collisions.maxSpeed)),t.velocity.length>t.collisionMaxSpeed&&(t.velocity.length=t.collisionMaxSpeed)};function f2(t,e){HR(av(t),av(e)),lT(t),lT(e)}function _X(t,e){!t.unbreakable&&!e.unbreakable&&f2(t,e),t.getRadius()===void 0&&e.getRadius()!==void 0?t.destroy():t.getRadius()!==void 0&&e.getRadius()===void 0?e.destroy():t.getRadius()!==void 0&&e.getRadius()!==void 0&&(t.getRadius()>=e.getRadius()?e:t).destroy()}function wX(t,e,n,r){switch(t.options.collisions.mode){case"absorb":{vX(t,e,n,r);break}case"bounce":{f2(t,e);break}case"destroy":{_X(t,e);break}}}class xX extends ww{constructor(e){super(e)}clear(){}init(){}async interact(e,n){if(e.destroyed||e.spawning)return;const r=this.container,i=e.getPosition(),s=e.getRadius(),o=r.particles.quadTree.queryCircle(i,s*2);for(const a of o){if(e===a||!a.options.collisions.enable||e.options.collisions.mode!==a.options.collisions.mode||a.destroyed||a.spawning)continue;const l=a.getPosition(),u=a.getRadius();if(Math.abs(Math.round(i.z)-Math.round(l.z))>s+u)continue;const c=Tn(i,l),h=s+u;c>h||wX(e,a,n,r.retina.pixelRatio)}}isEnabled(e){return e.options.collisions.enable}reset(){}}async function bX(t,e=!0){await t.addInteractor("particlesCollisions",n=>new xX(n),e)}class EX extends Ht{constructor(e,n,r,i){super(e,n,r),this.canvasSize=i,this.canvasSize={...i}}contains(e){const{width:n,height:r}=this.canvasSize,{x:i,y:s}=e;return super.contains(e)||super.contains({x:i-n,y:s})||super.contains({x:i-n,y:s-r})||super.contains({x:i,y:s-r})}intersects(e){if(super.intersects(e))return!0;const n=e,r=e,i={x:e.position.x-this.canvasSize.width,y:e.position.y-this.canvasSize.height};if(r.radius!==void 0){const s=new Ht(i.x,i.y,r.radius*2);return super.intersects(s)}else if(n.size!==void 0){const s=new yr(i.x,i.y,n.size.width*2,n.size.height*2);return super.intersects(s)}return!1}}class TX{constructor(){this.blur=5,this.color=new Ot,this.color.value="#000",this.enable=!1}load(e){e&&(e.blur!==void 0&&(this.blur=e.blur),this.color=Ot.create(this.color,e.color),e.enable!==void 0&&(this.enable=e.enable))}}class SX{constructor(){this.enable=!1,this.frequency=1}load(e){e&&(e.color!==void 0&&(this.color=Ot.create(this.color,e.color)),e.enable!==void 0&&(this.enable=e.enable),e.frequency!==void 0&&(this.frequency=e.frequency),e.opacity!==void 0&&(this.opacity=e.opacity))}}class kX{constructor(){this.blink=!1,this.color=new Ot,this.color.value="#fff",this.consent=!1,this.distance=100,this.enable=!1,this.frequency=1,this.opacity=1,this.shadow=new TX,this.triangles=new SX,this.width=1,this.warp=!1}load(e){e&&(e.id!==void 0&&(this.id=e.id),e.blink!==void 0&&(this.blink=e.blink),this.color=Ot.create(this.color,e.color),e.consent!==void 0&&(this.consent=e.consent),e.distance!==void 0&&(this.distance=e.distance),e.enable!==void 0&&(this.enable=e.enable),e.frequency!==void 0&&(this.frequency=e.frequency),e.opacity!==void 0&&(this.opacity=e.opacity),this.shadow.load(e.shadow),this.triangles.load(e.triangles),e.width!==void 0&&(this.width=e.width),e.warp!==void 0&&(this.warp=e.warp))}}function CX(t,e,n,r,i){const{dx:s,dy:o,distance:a}=Jt(t,e);if(!i||a<=n)return a;const l={x:Math.abs(s),y:Math.abs(o)},u={x:Math.min(l.x,r.width-l.x),y:Math.min(l.y,r.height-l.y)};return Math.sqrt(u.x**2+u.y**2)}class IX extends ww{constructor(e){super(e),this._setColor=n=>{if(!n.options.links)return;const r=this.linkContainer,i=n.options.links;let s=i.id===void 0?r.particles.linksColor:r.particles.linksColors.get(i.id);if(s)return;const o=i.color;s=JR(o,i.blink,i.consent),i.id===void 0?r.particles.linksColor=s:r.particles.linksColors.set(i.id,s)},this.linkContainer=e}clear(){}init(){this.linkContainer.particles.linksColor=void 0,this.linkContainer.particles.linksColors=new Map}async interact(e){if(!e.options.links)return;e.links=[];const n=e.getPosition(),r=this.container,i=r.canvas.size;if(n.x<0||n.y<0||n.x>i.width||n.y>i.height)return;const s=e.options.links,o=s.opacity,a=e.retina.linksDistance??0,l=s.warp,u=l?new EX(n.x,n.y,a,i):new Ht(n.x,n.y,a),c=r.particles.quadTree.query(u);for(const h of c){const d=h.options.links;if(e===h||!(d!=null&&d.enable)||s.id!==d.id||h.spawning||h.destroyed||!h.links||e.links.some(w=>w.destination===h)||h.links.some(w=>w.destination===e))continue;const f=h.getPosition();if(f.x<0||f.y<0||f.x>i.width||f.y>i.height)continue;const p=CX(n,f,a,i,l&&d.warp);if(p>a)continue;const m=(1-p/a)*o;this._setColor(e),e.links.push({destination:h,opacity:m})}}isEnabled(e){var n;return!!((n=e.options.links)!=null&&n.enable)}loadParticlesOptions(e,...n){e.links||(e.links=new kX);for(const r of n)e.links.load((r==null?void 0:r.links)??(r==null?void 0:r.lineLinked)??(r==null?void 0:r.line_linked))}reset(){}}async function PX(t,e=!0){await t.addInteractor("particlesLinks",n=>new IX(n),e)}function AX(t){let e=!1;const{begin:n,end:r,maxDistance:i,context:s,canvasSize:o,width:a,backgroundMask:l,colorLine:u,opacity:c,links:h}=t;if(Tn(n,r)<=i)Ql(s,n,r),e=!0;else if(h.warp){let f,p;const m={x:r.x-o.width,y:r.y},w=Jt(n,m);if(w.distance<=i){const g=n.y-w.dy/w.dx*n.x;f={x:0,y:g},p={x:o.width,y:g}}else{const g={x:r.x,y:r.y-o.height},y=Jt(n,g);if(y.distance<=i){const _=-(n.y-y.dy/y.dx*n.x)/(y.dy/y.dx);f={x:_,y:0},p={x:_,y:o.height}}else{const v={x:r.x-o.width,y:r.y-o.height},_=Jt(n,v);if(_.distance<=i){const x=n.y-_.dy/_.dx*n.x;f={x:-x/(_.dy/_.dx),y:x},p={x:f.x+o.width,y:f.y+o.height}}}}f&&p&&(Ql(s,n,f),Ql(s,r,p),e=!0)}if(!e)return;s.lineWidth=a,l.enable&&(s.globalCompositeOperation=l.composite),s.strokeStyle=li(u,c);const{shadow:d}=h;if(d.enable){const f=hr(d.color);f&&(s.shadowBlur=d.blur,s.shadowColor=li(f))}s.stroke()}function RX(t){const{context:e,pos1:n,pos2:r,pos3:i,backgroundMask:s,colorTriangle:o,opacityTriangle:a}=t;hK(e,n,r,i),s.enable&&(e.globalCompositeOperation=s.composite),e.fillStyle=li(o,a),e.fill()}function MX(t){return t.sort((e,n)=>e-n),t.join("_")}function uT(t,e){const n=MX(t.map(i=>i.id));let r=e.get(n);return r===void 0&&(r=ze(),e.set(n,r)),r}class OX{constructor(e){this.container=e,this._drawLinkLine=(n,r)=>{const i=n.options.links;if(!(i!=null&&i.enable))return;const s=this.container,o=s.actualOptions,a=r.destination,l=n.getPosition(),u=a.getPosition();let c=r.opacity;s.canvas.draw(h=>{var g;let d;const f=(g=n.options.twinkle)==null?void 0:g.lines;if(f!=null&&f.enable){const y=f.frequency,v=hr(f.color);ze(){const s=n.options.links;if(!(s!=null&&s.enable))return;const o=s.triangles;if(!o.enable)return;const a=this.container,l=a.actualOptions,u=r.destination,c=i.destination,h=o.opacity??(r.opacity+i.opacity)/2;h<=0||a.canvas.draw(d=>{const f=n.getPosition(),p=u.getPosition(),m=c.getPosition(),w=n.retina.linksDistance??0;if(Tn(f,p)>w||Tn(m,p)>w||Tn(m,f)>w)return;let g=hr(o.color);if(!g){const y=s.id!==void 0?a.particles.linksColors.get(s.id):a.particles.linksColor;g=lv(n,u,y)}g&&RX({context:d,pos1:f,pos2:p,pos3:m,backgroundMask:l.backgroundMask,colorTriangle:g,opacityTriangle:h})})},this._drawTriangles=(n,r,i,s)=>{var l,u,c;const o=i.destination;if(!((l=n.links)!=null&&l.triangles.enable&&((u=o.options.links)!=null&&u.triangles.enable)))return;const a=(c=o.links)==null?void 0:c.filter(h=>{const d=this._getLinkFrequency(o,h.destination);return o.options.links&&d<=o.options.links.frequency&&s.findIndex(f=>f.destination===h.destination)>=0});if(a!=null&&a.length)for(const h of a){const d=h.destination;this._getTriangleFrequency(r,o,d)>n.links.triangles.frequency||this._drawLinkTriangle(r,i,h)}},this._getLinkFrequency=(n,r)=>uT([n,r],this._freqs.links),this._getTriangleFrequency=(n,r,i)=>uT([n,r,i],this._freqs.triangles),this._freqs={links:new Map,triangles:new Map}}drawParticle(e,n){const{links:r,options:i}=n;if(!r||r.length<=0)return;const s=r.filter(o=>i.links&&this._getLinkFrequency(n,o.destination)<=i.links.frequency);for(const o of s)this._drawTriangles(i,n,o,s),o.opacity>0&&(n.retina.linksWidth??0)>0&&this._drawLinkLine(n,o)}async init(){this._freqs.links=new Map,this._freqs.triangles=new Map}particleCreated(e){if(e.links=[],!e.options.links)return;const n=this.container.retina.pixelRatio,{retina:r}=e,{distance:i,width:s}=e.options.links;r.linksDistance=i*n,r.linksWidth=s*n}particleDestroyed(e){e.links=[]}}class DX{constructor(){this.id="links"}getPlugin(e){return new OX(e)}loadOptions(){}needsPlugin(){return!0}}async function NX(t,e=!0){const n=new DX;await t.addPlugin(n,e)}async function $X(t,e=!0){await PX(t,e),await NX(t,e)}class p2{draw(e,n,r){const i=this.getCenter(n,r),s=this.getSidesData(n,r),o=s.count.numerator*s.count.denominator,a=s.count.numerator/s.count.denominator,l=180*(a-2)/a,u=Math.PI-Math.PI*l/180;if(e){e.beginPath(),e.translate(i.x,i.y),e.moveTo(0,0);for(let c=0;co&&(n.value-=o);break;case"decreasing":default:n.value-=s,n.value<0&&(n.value+=o);break}n.velocity&&a!==1&&(n.velocity*=a)}}class WX{constructor(e){this.container=e}init(e){const n=e.options.rotate;if(!n)return;e.rotate={enable:n.animation.enable,value:ne(n.value)*Math.PI/180},e.pathRotation=n.path;let r=n.direction;switch(r==="random"&&(r=Math.floor(ze()*2)>0?"counter-clockwise":"clockwise"),r){case"counter-clockwise":case"counterClockwise":e.rotate.status="decreasing";break;case"clockwise":e.rotate.status="increasing";break}const i=n.animation;i.enable&&(e.rotate.decay=1-ne(i.decay),e.rotate.velocity=ne(i.speed)/360*this.container.retina.reduceFactor,i.sync||(e.rotate.velocity*=ze())),e.rotation=e.rotate.value}isEnabled(e){const n=e.options.rotate;return n?!e.destroyed&&!e.spawning&&n.animation.enable&&!n.path:!1}loadOptions(e,...n){e.rotate||(e.rotate=new BX);for(const r of n)e.rotate.load(r==null?void 0:r.rotate)}update(e,n){var r;this.isEnabled(e)&&(HX(e,n),e.rotation=((r=e.rotate)==null?void 0:r.value)??0)}}async function qX(t,e=!0){await t.addParticleUpdater("rotate",n=>new WX(n),e)}const GX=Math.sqrt(2);class KX{draw(e,n,r){const i=r/GX,s=i*2;e.rect(-i,-i,s,s)}getSidesCount(){return 4}}async function QX(t,e=!0){await t.addShape(["edge","square"],new KX,e)}class YX{draw(e,n,r){const i=n.sides,s=n.starInset??2;e.moveTo(0,0-r);for(let o=0;o0&&(e.loops??0)>(e.maxLoops??0)||(e.time||(e.time=0),(e.delayTime??0)>0&&e.time<(e.delayTime??0)&&(e.time+=t.value),(e.delayTime??0)>0&&e.time<(e.delayTime??0)))return;const s=an(n.offset),o=(e.velocity??0)*t.factor+s*3.6,a=e.decay??1;!i||e.status==="increasing"?(e.value+=o,e.value>r&&(e.loops||(e.loops=0),e.loops++,i&&(e.status="decreasing",e.value-=e.value%r))):(e.value-=o,e.value<0&&(e.loops||(e.loops=0),e.loops++,e.status="increasing",e.value+=e.value)),e.velocity&&a!==1&&(e.velocity*=a),e.value>r&&(e.value%=r)}function JX(t,e){if(!t.strokeColor||!t.strokeAnimation)return;const{h:n,s:r,l:i}=t.strokeColor,{h:s,s:o,l:a}=t.strokeAnimation;n&&ug(e,n,s,360,!1),r&&ug(e,r,o,100,!0),i&&ug(e,i,a,100,!0)}class ZX{constructor(e){this.container=e}init(e){var o;const n=this.container,r=e.options,i=ai(r.stroke,e.id,r.reduceDuplicates);e.strokeWidth=ne(i.width)*n.retina.pixelRatio,e.strokeOpacity=ne(i.opacity??1),e.strokeAnimation=(o=i.color)==null?void 0:o.animation;const s=ju(i.color)??e.getFillColor();s&&(e.strokeColor=ZR(s,e.strokeAnimation,n.retina.reduceFactor))}isEnabled(e){const n=e.strokeAnimation,{strokeColor:r}=e;return!e.destroyed&&!e.spawning&&!!n&&((r==null?void 0:r.h.value)!==void 0&&r.h.enable||(r==null?void 0:r.s.value)!==void 0&&r.s.enable||(r==null?void 0:r.l.value)!==void 0&&r.l.enable)}update(e,n){this.isEnabled(e)&&JX(e,n)}}async function eJ(t,e=!0){await t.addParticleUpdater("strokeColor",n=>new ZX(n),e)}const Vh=["text","character","char"];class tJ{draw(e,n,r,i){const s=n.shapeData;if(s===void 0)return;const o=s.value;if(o===void 0)return;n.text===void 0&&(n.text=ai(o,n.randomIndexData));const a=n.text,l=s.style??"",u=s.weight??"400",c=Math.round(r)*2,h=s.font??"Verdana",d=n.fill,f=a.length*r/2;e.font=`${l} ${u} ${c}px "${h}"`;const p={x:-f,y:r/2};e.globalAlpha=i,d?e.fillText(a,p.x,p.y):e.strokeText(a,p.x,p.y),e.globalAlpha=1}getSidesCount(){return 12}async init(e){const n=e.actualOptions;if(Vh.find(r=>tt(r,n.particles.shape.type))){const r=Vh.map(s=>n.particles.shape.options[s]).find(s=>!!s),i=[];wt(r,s=>{i.push(nK(s.font,s.weight))}),await Promise.all(i)}}particleInit(e,n){if(!n.shape||!Vh.includes(n.shape))return;const r=n.shapeData;if(r===void 0)return;const i=r.value;i!==void 0&&(n.text=ai(i,n.randomIndexData))}}async function nJ(t,e=!0){await t.addShape(Vh,new tJ,e)}async function rJ(t,e=!0){IQ(t),await mX(t,!1),await lY(t,!1),await hY(t,!1),await mY(t,!1),await EY(t,!1),await PY(t,!1),await RY(t,!1),await DY(t,!1),await LY(t,!1),await UY(t,!1),await HY(t,!1),await yX(t,!1),await bX(t,!1),await $X(t,!1),await sY(),await oX(t,!1),await fX(t,!1),await UX(t,!1),await QX(t,!1),await XX(t,!1),await nJ(t,!1),await hX(t,!1),await qX(t,!1),await eJ(t,!1),await iY(t,e)}const iJ=()=>{const t=T.useCallback(async n=>{console.log(n),await rJ(n)},[]),e=T.useCallback(async n=>{await console.log(n)},[]);return k.jsx(l2,{init:t,loaded:e,options:{background:{color:{value:"#0abde3"}},fpsLimit:120,interactivity:{events:{onClick:{enable:!0,mode:"push"},onHover:{enable:!0,mode:"repulse"},resize:!0},modes:{push:{quantity:4},repulse:{distance:100,duration:.4}}},particles:{color:{value:"#ffffff"},links:{color:"#ffffff",distance:150,enable:!0,opacity:.5,width:1},move:{direction:"none",enable:!0,outModes:{default:"bounce"},random:!1,speed:3,straight:!1},number:{density:{enable:!0,area:800},value:80},opacity:{value:.5},shape:{type:"circle"},size:{value:{min:1,max:5}}},detectRetina:!0}})};function sJ(){const[t,e]=T.useState(!0),[n,r]=T.useState(null),[i,s]=T.useState(),[o,a]=T.useState(!1);return T.useEffect(()=>{i$(Gy,async l=>{s(l?await c8(l):void 0),r(l),e(!1)})},[]),k.jsxs(k.Fragment,{children:[!t&&!n&&k.jsx(iJ,{}),k.jsx(ei,{display:"flex",justifyContent:"center",alignItems:"center",minHeight:"100vh",flexDirection:"column",gap:2,sx:{background:t||n?"#0abde3":void 0,position:"relative",overflow:"hidden"},children:t?k.jsx(W0,{style:{color:"white"}}):n?k.jsx(VG,{userData:i}):k.jsxs(k.Fragment,{children:[k.jsxs(ei,{display:"flex",justifyContent:"space-between",alignItems:"start",position:"absolute",top:0,left:0,width:"100%",boxSizing:"border-box",p:2,children:[k.jsx("img",{src:"/favicon.png",alt:"logo",width:44,height:44}),k.jsx(by,{variant:"outlined",style:{color:"white",border:"1px solid white",marginRight:16},onClick:()=>R$(Gy,NA),children:"Sign In"})]}),k.jsx("div",{className:"type",style:{fontFamily:"Young Serif",fontWeight:400},children:k.jsx(YU,{options:{delay:75},onInit:l=>{l.typeString("Welcome to Watt Wizard!").pauseFor(100).callFunction(()=>a(!0)).start()}})}),k.jsx(Xt,{variant:"h5",color:o?"white":"transparent",mb:4,className:"subtitle",children:"Compete with your friends to save the most energy!"}),k.jsx(by,{style:{color:"white",border:"1px solid white"},variant:"outlined",onClick:()=>window.open("https://www.youtube.com/watch?v=dQw4w9WgXcQ","_blank"),children:"Find out More"})]})})]})}const oJ=D0({typography:{fontFamily:"Gabarito"}});hg.createRoot(document.getElementById("root")).render(k.jsx(wn.StrictMode,{children:k.jsx(JV,{theme:oJ,children:k.jsx(sJ,{})})})); diff --git a/website/public/favicon.png b/favicon.png similarity index 100% rename from website/public/favicon.png rename to favicon.png diff --git a/firmware/main.ino b/firmware/main.ino deleted file mode 100644 index 7b3e841..0000000 --- a/firmware/main.ino +++ /dev/null @@ -1,169 +0,0 @@ -#include -#include -#include -#include - -#define RED strip.Color(255, 0, 0) -#define GREEN strip.Color(0, 255, 0) -#define BLUE strip.Color(0, 0, 255) -#define WHITE strip.Color(255, 255, 255) -#define BLACK strip.Color(0, 0, 0) - -#define LED_PIN 10 -#define LED_COUNT 30 -Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); - -#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b" -#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8" - -BLEServer *pServer; - -void show(uint32_t color) -{ - strip.fill(color, 0, 29); - strip.show(); -} - -void showLED(uint8_t led, uint32_t color) -{ - strip.setPixelColor(led, color); - strip.show(); -} - -class MyCallbacks : public BLECharacteristicCallbacks -{ - void onWrite(BLECharacteristic *pCharacteristic) - { - // raw data packet: - std::string value = pCharacteristic->getValue(); - if (value.length() > 0) - { - if (value == "on") - { - show(WHITE); - } - else if (value == "red") - { - show(RED); - } - else if (value == "off") - { - show(BLACK); - } - else if (value.substr(0, 6) == "setAll") - { - Serial.println("Setting custom color"); - - Serial.println(std::stoi(value.substr(7, 2), 0, 16)); - - uint8_t red = std::stoi(value.substr(7, 2), 0, 16); - uint8_t green = std::stoi(value.substr(9, 2), 0, 16); - uint8_t blue = std::stoi(value.substr(11, 2), 0, 16); - - show(strip.Color(red, green, blue)); - } - else if (value.substr(0, 3) == "set") - { - uint8_t red = std::stoi(value.substr(4, 2), 0, 16); - uint8_t green = std::stoi(value.substr(6, 2), 0, 16); - uint8_t blue = std::stoi(value.substr(8, 2), 0, 16); - - uint8_t led = std::stoi(value.substr(11, 2)); - showLED(led, strip.Color(red, green, blue)); - } - Serial.println("*******"); - Serial.print("New Value: "); - for (int i = 0; i < value.length(); i++) - { - Serial.print(value[i]); - } - - Serial.println(); - Serial.println("*******"); - } - } -}; - -class ServerCallbacks : public BLEServerCallbacks -{ - void onConnect(BLEServer *pServer, esp_ble_gatts_cb_param_t *param) - { - // std::map clients = pServer->getPeerDevices(true); - // Serial.println(">> New Connection"); - - // for (std::map::iterator it = clients.begin(); it != clients.end(); ++it) { - // Serial.printf("Device: %s %s\n", it->first, it->second); - // } - for (int i = 0; i < 3; i++) - { - show(GREEN); - sleep(1); - show(BLACK); - sleep(1); - } - Serial.println("<< New Connection"); - } - - void onDisconnect(BLEServer *pServer) - { - Serial.println(">> Disconnected"); - for (int i = 0; i < 3; i++) - { - show(RED); - sleep(1); - show(BLACK); - sleep(1); - } - Serial.println("<< Disconnected"); - } -}; - -void setup() -{ - // put your setup code here, to run once: - strip.begin(); - strip.show(); - Serial.begin(115200); - - BLEDevice::init("Light Control"); - pServer = BLEDevice::createServer(); - pServer->setCallbacks(new ServerCallbacks()); - - BLEService *pService = pServer->createService(SERVICE_UUID); - - BLECharacteristic *pCharacteristic = pService->createCharacteristic( - CHARACTERISTIC_UUID, - BLECharacteristic::PROPERTY_READ | - BLECharacteristic::PROPERTY_WRITE); - - pCharacteristic->setCallbacks(new MyCallbacks()); - - pCharacteristic->setValue("Hello, World!"); - pService->start(); - - BLEAdvertising *pAdvertising = pServer->getAdvertising(); - - BLEAdvertisementData advertisementData = BLEAdvertisementData(); - advertisementData.setName("Light Control"); - - pAdvertising->setScanResponseData(advertisementData); - - pAdvertising->start(); -} - -void loop() -{ - // put your main code here, to run repeatedly: - BLEAdvertising *pAdvertising = pServer->getAdvertising(); - BLEAdvertisementData advertisementData = BLEAdvertisementData(); - advertisementData.setName("Light Control"); - - pAdvertising->setScanResponseData(advertisementData); - - if (pServer->getConnectedCount() == 0) - { - pAdvertising->start(); - } - - delay(2000); -} diff --git a/website/index.html b/index.html similarity index 82% rename from website/index.html rename to index.html index d1b407c..5ebe99f 100644 --- a/website/index.html +++ b/index.html @@ -15,9 +15,11 @@ /> Watt Wizard + +
- + diff --git a/website/.eslintrc.cjs b/website/.eslintrc.cjs deleted file mode 100644 index d6c9537..0000000 --- a/website/.eslintrc.cjs +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = { - root: true, - env: { browser: true, es2020: true }, - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:react-hooks/recommended', - ], - ignorePatterns: ['dist', '.eslintrc.cjs'], - parser: '@typescript-eslint/parser', - plugins: ['react-refresh'], - rules: { - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], - }, -} diff --git a/website/.gitignore b/website/.gitignore deleted file mode 100644 index a547bf3..0000000 --- a/website/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/website/README.md b/website/README.md deleted file mode 100644 index 1ebe379..0000000 --- a/website/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# React + TypeScript + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh - -## Expanding the ESLint configuration - -If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: - -- Configure the top-level `parserOptions` property like this: - -```js - parserOptions: { - ecmaVersion: 'latest', - sourceType: 'module', - project: ['./tsconfig.json', './tsconfig.node.json'], - tsconfigRootDir: __dirname, - }, -``` - -- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` -- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` -- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list diff --git a/website/package-lock.json b/website/package-lock.json deleted file mode 100644 index d71011a..0000000 --- a/website/package-lock.json +++ /dev/null @@ -1,4773 +0,0 @@ -{ - "name": "website", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "website", - "version": "0.0.0", - "dependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "@mui/icons-material": "^5.14.13", - "@mui/material": "^5.14.13", - "@mui/x-charts": "^6.0.0-alpha.15", - "firebase": "^10.5.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-router-dom": "^6.16.0", - "react-tsparticles": "^2.12.2", - "tsparticles-slim": "^2.12.0", - "typewriter-effect": "^2.21.0" - }, - "devDependencies": { - "@types/react": "^18.2.15", - "@types/react-dom": "^18.2.7", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "@vitejs/plugin-react-swc": "^3.3.2", - "eslint": "^8.45.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.3", - "typescript": "^5.0.2", - "vite": "^4.4.5" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@emotion/babel-plugin": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", - "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/serialize": "^1.1.2", - "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/cache": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", - "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", - "dependencies": { - "@emotion/memoize": "^0.8.1", - "@emotion/sheet": "^1.2.2", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", - "stylis": "4.2.0" - } - }, - "node_modules/@emotion/hash": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" - }, - "node_modules/@emotion/is-prop-valid": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", - "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", - "dependencies": { - "@emotion/memoize": "^0.8.1" - } - }, - "node_modules/@emotion/memoize": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" - }, - "node_modules/@emotion/react": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", - "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.2", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", - "hoist-non-react-statics": "^3.3.1" - }, - "peerDependencies": { - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@emotion/serialize": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", - "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", - "dependencies": { - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/unitless": "^0.8.1", - "@emotion/utils": "^1.2.1", - "csstype": "^3.0.2" - } - }, - "node_modules/@emotion/sheet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", - "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" - }, - "node_modules/@emotion/styled": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", - "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/is-prop-valid": "^1.2.1", - "@emotion/serialize": "^1.1.2", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1" - }, - "peerDependencies": { - "@emotion/react": "^11.0.0-rc.0", - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@emotion/unitless": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" - }, - "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@emotion/utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", - "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" - }, - "node_modules/@emotion/weak-memoize": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", - "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" - }, - "node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", - "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.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": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", - "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@firebase/analytics": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.0.tgz", - "integrity": "sha512-Locv8gAqx0e+GX/0SI3dzmBY5e9kjVDtD+3zCFLJ0tH2hJwuCAiL+5WkHuxKj92rqQj/rvkBUCfA1ewlX2hehg==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/analytics-compat": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.6.tgz", - "integrity": "sha512-4MqpVLFkGK7NJf/5wPEEP7ePBJatwYpyjgJ+wQHQGHfzaCDgntOnl9rL2vbVGGKCnRqWtZDIWhctB86UWXaX2Q==", - "dependencies": { - "@firebase/analytics": "0.10.0", - "@firebase/analytics-types": "0.8.0", - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/analytics-types": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.0.tgz", - "integrity": "sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw==" - }, - "node_modules/@firebase/app": { - "version": "0.9.20", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.20.tgz", - "integrity": "sha512-cMTDHr+1GfYyHBSLLvvTE8ywlDCKk/E8cUZmfv0ODmUBB1vXgrICShj7yH9UYf6m7l6pxad8T+qI/oAoAkCp2Q==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "idb": "7.1.1", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/app-check": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.0.tgz", - "integrity": "sha512-dRDnhkcaC2FspMiRK/Vbp+PfsOAEP6ZElGm9iGFJ9fDqHoPs0HOPn7dwpJ51lCFi1+2/7n5pRPGhqF/F03I97g==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/app-check-compat": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.7.tgz", - "integrity": "sha512-cW682AxsyP1G+Z0/P7pO/WT2CzYlNxoNe5QejVarW2o5ZxeWSSPAiVEwpEpQR/bUlUmdeWThYTMvBWaopdBsqw==", - "dependencies": { - "@firebase/app-check": "0.8.0", - "@firebase/app-check-types": "0.5.0", - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/app-check-interop-types": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.0.tgz", - "integrity": "sha512-xAxHPZPIgFXnI+vb4sbBjZcde7ZluzPPaSK7Lx3/nmuVk4TjZvnL8ONnkd4ERQKL8WePQySU+pRcWkh8rDf5Sg==" - }, - "node_modules/@firebase/app-check-types": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.0.tgz", - "integrity": "sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ==" - }, - "node_modules/@firebase/app-compat": { - "version": "0.2.20", - "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.20.tgz", - "integrity": "sha512-FXgdjgwUruLMZMh0HDwLmbcu2ImckT10HPdXZyzIJoaor9OenoTQO2RLk2xvvOL/JJnszN6kmv56c+8qA4KFXQ==", - "dependencies": { - "@firebase/app": "0.9.20", - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/app-types": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz", - "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==" - }, - "node_modules/@firebase/auth": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.3.0.tgz", - "integrity": "sha512-vjK4CHbY9aWdiVOrKi6mpa8z6uxeaf7LB/MZTHuZOiGHMcUoTGB6TeMbRShyqk1uaMrxhhZ5Ar/dR0965E1qyA==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x", - "@react-native-async-storage/async-storage": "^1.18.1" - }, - "peerDependenciesMeta": { - "@react-native-async-storage/async-storage": { - "optional": true - } - } - }, - "node_modules/@firebase/auth-compat": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.4.6.tgz", - "integrity": "sha512-pKp1d4fSf+yoy1EBjTx9ISxlunqhW0vTICk0ByZ3e+Lp6ZIXThfUy4F1hAJlEafD/arM0oepRiAh7LXS1xn/BA==", - "dependencies": { - "@firebase/auth": "1.3.0", - "@firebase/auth-types": "0.12.0", - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/auth-interop-types": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz", - "integrity": "sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg==" - }, - "node_modules/@firebase/auth-types": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.0.tgz", - "integrity": "sha512-pPwaZt+SPOshK8xNoiQlK5XIrS97kFYc3Rc7xmy373QsOJ9MmqXxLaYssP5Kcds4wd2qK//amx/c+A8O2fVeZA==", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" - } - }, - "node_modules/@firebase/component": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.4.tgz", - "integrity": "sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA==", - "dependencies": { - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/database": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.1.tgz", - "integrity": "sha512-VAhF7gYwunW4Lw/+RQZvW8dlsf2r0YYqV9W0Gi2Mz8+0TGg1mBJWoUtsHfOr8kPJXhcLsC4eP/z3x6L/Fvjk/A==", - "dependencies": { - "@firebase/auth-interop-types": "0.2.1", - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "faye-websocket": "0.11.4", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/database-compat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.1.tgz", - "integrity": "sha512-ky82yLIboLxtAIWyW/52a6HLMVTzD2kpZlEilVDok73pNPLjkJYowj8iaIWK5nTy7+6Gxt7d00zfjL6zckGdXQ==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/database": "1.0.1", - "@firebase/database-types": "1.0.0", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/database-types": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.0.tgz", - "integrity": "sha512-SjnXStoE0Q56HcFgNQ+9SsmJc0c8TqGARdI/T44KXy+Ets3r6x/ivhQozT66bMnCEjJRywYoxNurRTMlZF8VNg==", - "dependencies": { - "@firebase/app-types": "0.9.0", - "@firebase/util": "1.9.3" - } - }, - "node_modules/@firebase/firestore": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.3.0.tgz", - "integrity": "sha512-FwSMCxGdUuA9Su74I9himAKJogzjU41IBjjnNf0+5smORMKtWlNeeXqMpljrhZubj5V+GmWyExf5UD3y1in6FA==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "@firebase/webchannel-wrapper": "0.10.3", - "@grpc/grpc-js": "~1.9.0", - "@grpc/proto-loader": "^0.7.8", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10.10.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/firestore-compat": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.19.tgz", - "integrity": "sha512-hRcW9oTyluap8Qko/yqtgk4O/BJmR4FxkvF+P6LVvoqtspKLfQL70jJvzr1gYCCXn2OY8XUI7Q9BVdsTzEEONA==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/firestore": "4.3.0", - "@firebase/firestore-types": "3.0.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/firestore-types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-3.0.0.tgz", - "integrity": "sha512-Meg4cIezHo9zLamw0ymFYBD4SMjLb+ZXIbuN7T7ddXN6MGoICmOTq3/ltdCGoDCS2u+H1XJs2u/cYp75jsX9Qw==", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" - } - }, - "node_modules/@firebase/functions": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.10.0.tgz", - "integrity": "sha512-2U+fMNxTYhtwSpkkR6WbBcuNMOVaI7MaH3cZ6UAeNfj7AgEwHwMIFLPpC13YNZhno219F0lfxzTAA0N62ndWzA==", - "dependencies": { - "@firebase/app-check-interop-types": "0.3.0", - "@firebase/auth-interop-types": "0.2.1", - "@firebase/component": "0.6.4", - "@firebase/messaging-interop-types": "0.2.0", - "@firebase/util": "1.9.3", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/functions-compat": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.5.tgz", - "integrity": "sha512-uD4jwgwVqdWf6uc3NRKF8cSZ0JwGqSlyhPgackyUPe+GAtnERpS4+Vr66g0b3Gge0ezG4iyHo/EXW/Hjx7QhHw==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/functions": "0.10.0", - "@firebase/functions-types": "0.6.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/functions-types": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.0.tgz", - "integrity": "sha512-hfEw5VJtgWXIRf92ImLkgENqpL6IWpYaXVYiRkFY1jJ9+6tIhWM7IzzwbevwIIud/jaxKVdRzD7QBWfPmkwCYw==" - }, - "node_modules/@firebase/installations": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.4.tgz", - "integrity": "sha512-u5y88rtsp7NYkCHC3ElbFBrPtieUybZluXyzl7+4BsIz4sqb4vSAuwHEUgCgCeaQhvsnxDEU6icly8U9zsJigA==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", - "idb": "7.0.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/installations-compat": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.4.tgz", - "integrity": "sha512-LI9dYjp0aT9Njkn9U4JRrDqQ6KXeAmFbRC0E7jI7+hxl5YmRWysq5qgQl22hcWpTk+cm3es66d/apoDU/A9n6Q==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/installations-types": "0.5.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/installations-types": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.0.tgz", - "integrity": "sha512-9DP+RGfzoI2jH7gY4SlzqvZ+hr7gYzPODrbzVD82Y12kScZ6ZpRg/i3j6rleto8vTFC8n6Len4560FnV1w2IRg==", - "peerDependencies": { - "@firebase/app-types": "0.x" - } - }, - "node_modules/@firebase/installations/node_modules/idb": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", - "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" - }, - "node_modules/@firebase/logger": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz", - "integrity": "sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/messaging": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.4.tgz", - "integrity": "sha512-6JLZct6zUaex4g7HI3QbzeUrg9xcnmDAPTWpkoMpd/GoSVWH98zDoWXMGrcvHeCAIsLpFMe4MPoZkJbrPhaASw==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/messaging-interop-types": "0.2.0", - "@firebase/util": "1.9.3", - "idb": "7.0.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/messaging-compat": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.4.tgz", - "integrity": "sha512-lyFjeUhIsPRYDPNIkYX1LcZMpoVbBWXX4rPl7c/rqc7G+EUea7IEtSt4MxTvh6fDfPuzLn7+FZADfscC+tNMfg==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/messaging": "0.12.4", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/messaging-interop-types": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.0.tgz", - "integrity": "sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ==" - }, - "node_modules/@firebase/messaging/node_modules/idb": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", - "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" - }, - "node_modules/@firebase/performance": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.4.tgz", - "integrity": "sha512-HfTn/bd8mfy/61vEqaBelNiNnvAbUtME2S25A67Nb34zVuCSCRIX4SseXY6zBnOFj3oLisaEqhVcJmVPAej67g==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/performance-compat": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.4.tgz", - "integrity": "sha512-nnHUb8uP9G8islzcld/k6Bg5RhX62VpbAb/Anj7IXs/hp32Eb2LqFPZK4sy3pKkBUO5wcrlRWQa6wKOxqlUqsg==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/performance": "0.6.4", - "@firebase/performance-types": "0.2.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/performance-types": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.0.tgz", - "integrity": "sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA==" - }, - "node_modules/@firebase/remote-config": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.4.tgz", - "integrity": "sha512-x1ioTHGX8ZwDSTOVp8PBLv2/wfwKzb4pxi0gFezS5GCJwbLlloUH4YYZHHS83IPxnua8b6l0IXUaWd0RgbWwzQ==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/remote-config-compat": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.4.tgz", - "integrity": "sha512-FKiki53jZirrDFkBHglB3C07j5wBpitAaj8kLME6g8Mx+aq7u9P7qfmuSRytiOItADhWUj7O1JIv7n9q87SuwA==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/remote-config": "0.4.4", - "@firebase/remote-config-types": "0.3.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/remote-config-types": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.0.tgz", - "integrity": "sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA==" - }, - "node_modules/@firebase/storage": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.11.2.tgz", - "integrity": "sha512-CtvoFaBI4hGXlXbaCHf8humajkbXhs39Nbh6MbNxtwJiCqxPy9iH3D3CCfXAvP0QvAAwmJUTK3+z9a++Kc4nkA==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/storage-compat": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.2.tgz", - "integrity": "sha512-wvsXlLa9DVOMQJckbDNhXKKxRNNewyUhhbXev3t8kSgoCotd1v3MmqhKKz93ePhDnhHnDs7bYHy+Qa8dRY6BXw==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/storage": "0.11.2", - "@firebase/storage-types": "0.8.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/storage-types": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.0.tgz", - "integrity": "sha512-isRHcGrTs9kITJC0AVehHfpraWFui39MPaU7Eo8QfWlqW7YPymBmRgjDrlOgFdURh6Cdeg07zmkLP5tzTKRSpg==", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" - } - }, - "node_modules/@firebase/util": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.3.tgz", - "integrity": "sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/webchannel-wrapper": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.10.3.tgz", - "integrity": "sha512-+ZplYUN3HOpgCfgInqgdDAbkGGVzES1cs32JJpeqoh87SkRobGXElJx+1GZSaDqzFL+bYiX18qEcBK76mYs8uA==" - }, - "node_modules/@floating-ui/core": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", - "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", - "dependencies": { - "@floating-ui/utils": "^0.1.3" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", - "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", - "dependencies": { - "@floating-ui/core": "^1.4.2", - "@floating-ui/utils": "^0.1.3" - } - }, - "node_modules/@floating-ui/react-dom": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", - "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", - "dependencies": { - "@floating-ui/dom": "^1.5.1" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", - "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" - }, - "node_modules/@grpc/grpc-js": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.5.tgz", - "integrity": "sha512-iouYNlPxRAwZ2XboDT+OfRKHuaKHiqjB5VFYZ0NFrHkbEF+AV3muIUY9olQsp8uxU4VvRCMiRk9ftzFDGb61aw==", - "dependencies": { - "@grpc/proto-loader": "^0.7.8", - "@types/node": ">=12.12.47" - }, - "engines": { - "node": "^8.13.0 || >=10.10.0" - } - }, - "node_modules/@grpc/proto-loader": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz", - "integrity": "sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==", - "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.2.4", - "yargs": "^17.7.2" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "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, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@mui/base": { - "version": "5.0.0-beta.19", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.19.tgz", - "integrity": "sha512-maNBgAscddyPNzFZQUJDF/puxM27Li+NqSBsr/lAP8TLns2VvWS2SoL3OKFOIoRnAMKGY/Ic6Aot6gCYeQnssA==", - "dependencies": { - "@babel/runtime": "^7.23.1", - "@floating-ui/react-dom": "^2.0.2", - "@mui/types": "^7.2.6", - "@mui/utils": "^5.14.13", - "@popperjs/core": "^2.11.8", - "clsx": "^2.0.0", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/core-downloads-tracker": { - "version": "5.14.13", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.13.tgz", - "integrity": "sha512-3ZUbzcH4yloLKlV6Y+S0Edn2wef9t+EGHSfEkwVCn8E0ULdshifEFgfEroKRegQifDIwcKS/ofccxuZ8njTAYg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - } - }, - "node_modules/@mui/icons-material": { - "version": "5.14.13", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.13.tgz", - "integrity": "sha512-fxKE1UrjI4xVxHe9IAGuVQZrc18dSBJg0P+Sqi2SZmcDUCShmgRq6Jq7l7GduvuMIkOSqAJdNgLtXmtmZkjtLg==", - "dependencies": { - "@babel/runtime": "^7.23.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - }, - "peerDependencies": { - "@mui/material": "^5.0.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/material": { - "version": "5.14.13", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.13.tgz", - "integrity": "sha512-iPEFwhoVG789UVsXX4gqd1eJUlcLW1oceqwJYQN8Z4MpcAKfL9Lv3fda65AwG7pQ5lf+d7IbHzm4m48SWZxI2g==", - "dependencies": { - "@babel/runtime": "^7.23.1", - "@mui/base": "5.0.0-beta.19", - "@mui/core-downloads-tracker": "^5.14.13", - "@mui/system": "^5.14.13", - "@mui/types": "^7.2.6", - "@mui/utils": "^5.14.13", - "@types/react-transition-group": "^4.4.7", - "clsx": "^2.0.0", - "csstype": "^3.1.2", - "prop-types": "^15.8.1", - "react-is": "^18.2.0", - "react-transition-group": "^4.4.5" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - }, - "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/private-theming": { - "version": "5.14.13", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.13.tgz", - "integrity": "sha512-5EFqk4tqiSwPguj4NW/6bUf4u1qoUWXy9lrKfNh9H6oAohM+Ijv/7qSxFjnxPGBctj469/Sc5aKAR35ILBKZLQ==", - "dependencies": { - "@babel/runtime": "^7.23.1", - "@mui/utils": "^5.14.13", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/styled-engine": { - "version": "5.14.13", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.13.tgz", - "integrity": "sha512-1ff/egFQl26hiwcUtCMKAkp4Sgqpm3qIewmXq+GN27fb44lDIACquehMFBuadOjceOFmbIXbayzbA46ZyqFYzA==", - "dependencies": { - "@babel/runtime": "^7.23.1", - "@emotion/cache": "^11.11.0", - "csstype": "^3.1.2", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - }, - "peerDependencies": { - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - } - } - }, - "node_modules/@mui/system": { - "version": "5.14.13", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.13.tgz", - "integrity": "sha512-+5+Dx50lG4csbx2sGjrKLozXQJeCpJ4dIBZolyFLkZ+XphD1keQWouLUvJkPQ3MSglLLKuD37pp52YjMncZMEQ==", - "dependencies": { - "@babel/runtime": "^7.23.1", - "@mui/private-theming": "^5.14.13", - "@mui/styled-engine": "^5.14.13", - "@mui/types": "^7.2.6", - "@mui/utils": "^5.14.13", - "clsx": "^2.0.0", - "csstype": "^3.1.2", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - }, - "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/types": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.6.tgz", - "integrity": "sha512-7sjLQrUmBwufm/M7jw/quNiPK/oor2+pGUQP2CULRcFCArYTq78oJ3D5esTaL0UMkXKJvDqXn6Ike69yAOBQng==", - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/utils": { - "version": "5.14.13", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.13.tgz", - "integrity": "sha512-2AFpyXWw7uDCIqRu7eU2i/EplZtks5LAMzQvIhC79sPV9IhOZU2qwOWVnPtdctRXiQJOAaXulg+A37pfhEueQw==", - "dependencies": { - "@babel/runtime": "^7.23.1", - "@types/prop-types": "^15.7.7", - "prop-types": "^15.8.1", - "react-is": "^18.2.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/x-charts": { - "version": "6.0.0-alpha.15", - "resolved": "https://registry.npmjs.org/@mui/x-charts/-/x-charts-6.0.0-alpha.15.tgz", - "integrity": "sha512-5O54e+9FYSIggT5vEYkXXnKVo3b8b4E5iIdYOrpkKAG3ZonASqpObUp8zblvdg0JRJc0UGV3X5o7n3HD0fMw4g==", - "dependencies": { - "@babel/runtime": "^7.23.1", - "@mui/base": "^5.0.0-beta.17", - "clsx": "^2.0.0", - "d3-color": "^3.1.0", - "d3-scale": "^4.0.2", - "d3-shape": "^3.2.0", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@emotion/react": "^11.9.0", - "@emotion/styled": "^11.8.1", - "@mui/material": "^5.4.1", - "@mui/system": "^5.4.1", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - } - } - }, - "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, - "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, - "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, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@remix-run/router": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz", - "integrity": "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@swc/core": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.93.tgz", - "integrity": "sha512-690GRr1wUGmGYZHk7fUduX/JUwViMF2o74mnZYIWEcJaCcd9MQfkhsxPBtjeg6tF+h266/Cf3RPYhsFBzzxXcA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@swc/counter": "^0.1.1", - "@swc/types": "^0.1.5" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.93", - "@swc/core-darwin-x64": "1.3.93", - "@swc/core-linux-arm-gnueabihf": "1.3.93", - "@swc/core-linux-arm64-gnu": "1.3.93", - "@swc/core-linux-arm64-musl": "1.3.93", - "@swc/core-linux-x64-gnu": "1.3.93", - "@swc/core-linux-x64-musl": "1.3.93", - "@swc/core-win32-arm64-msvc": "1.3.93", - "@swc/core-win32-ia32-msvc": "1.3.93", - "@swc/core-win32-x64-msvc": "1.3.93" - }, - "peerDependencies": { - "@swc/helpers": "^0.5.0" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.93.tgz", - "integrity": "sha512-gEKgk7FVIgltnIfDO6GntyuQBBlAYg5imHpRgLxB1zSI27ijVVkksc6QwISzFZAhKYaBWIsFSVeL9AYSziAF7A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.93.tgz", - "integrity": "sha512-ZQPxm/fXdDQtn3yrYSL/gFfA8OfZ5jTi33yFQq6vcg/Y8talpZ+MgdSlYM0FkLrZdMTYYTNFiuBQuuvkA+av+Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.93.tgz", - "integrity": "sha512-OYFMMI2yV+aNe3wMgYhODxHdqUB/jrK0SEMHHS44GZpk8MuBXEF+Mcz4qjkY5Q1EH7KVQqXb/gVWwdgTHpjM2A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.93.tgz", - "integrity": "sha512-BT4dT78odKnJMNiq5HdjBsv29CiIdcCcImAPxeFqAeFw1LL6gh9nzI8E96oWc+0lVT5lfhoesCk4Qm7J6bty8w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.93.tgz", - "integrity": "sha512-yH5fWEl1bktouC0mhh0Chuxp7HEO4uCtS/ly1Vmf18gs6wZ8DOOkgAEVv2dNKIryy+Na++ljx4Ym7C8tSJTrLw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.93.tgz", - "integrity": "sha512-OFUdx64qvrGJhXKEyxosHxgoUVgba2ztYh7BnMiU5hP8lbI8G13W40J0SN3CmFQwPP30+3oEbW7LWzhKEaYjlg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.93.tgz", - "integrity": "sha512-4B8lSRwEq1XYm6xhxHhvHmKAS7pUp1Q7E33NQ2TlmFhfKvCOh86qvThcjAOo57x8DRwmpvEVrqvpXtYagMN6Ig==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.93.tgz", - "integrity": "sha512-BHShlxtkven8ZjjvZ5QR6sC5fZCJ9bMujEkiha6W4cBUTY7ce7qGFyHmQd+iPC85d9kD/0cCiX/Xez8u0BhO7w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.93.tgz", - "integrity": "sha512-nEwNWnz4JzYAK6asVvb92yeylfxMYih7eMQOnT7ZVlZN5ba9WF29xJ6kcQKs9HRH6MvWhz9+wRgv3FcjlU6HYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.93.tgz", - "integrity": "sha512-jibQ0zUr4kwJaQVwgmH+svS04bYTPnPw/ZkNInzxS+wFAtzINBYcU8s2PMWbDb2NGYiRSEeoSGyAvS9H+24JFA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/counter": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", - "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", - "dev": true - }, - "node_modules/@swc/types": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", - "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.13", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", - "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.8.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.6.tgz", - "integrity": "sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==", - "dependencies": { - "undici-types": "~5.25.1" - } - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "node_modules/@types/prop-types": { - "version": "15.7.8", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz", - "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==" - }, - "node_modules/@types/react": { - "version": "18.2.28", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.28.tgz", - "integrity": "sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.2.13", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.13.tgz", - "integrity": "sha512-eJIUv7rPP+EC45uNYp/ThhSpE16k22VJUknt5OLoH9tbXoi8bMhwLf5xRuWMywamNbWzhrSmU7IBJfPup1+3fw==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/react-transition-group": { - "version": "4.4.7", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.7.tgz", - "integrity": "sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg==", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.4", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", - "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==" - }, - "node_modules/@types/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz", - "integrity": "sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.7.5", - "@typescript-eslint/type-utils": "6.7.5", - "@typescript-eslint/utils": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.5.tgz", - "integrity": "sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "6.7.5", - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/typescript-estree": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz", - "integrity": "sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz", - "integrity": "sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "6.7.5", - "@typescript-eslint/utils": "6.7.5", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.5.tgz", - "integrity": "sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz", - "integrity": "sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.5.tgz", - "integrity": "sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.7.5", - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/typescript-estree": "6.7.5", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz", - "integrity": "sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.7.5", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@vitejs/plugin-react-swc": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.4.0.tgz", - "integrity": "sha512-m7UaA4Uvz82N/0EOVpZL4XsFIakRqrFKeSNxa1FBLSXGvWrWRBwmZb4qxk+ZIVAZcW3c3dn5YosomDgx62XWcQ==", - "dev": true, - "dependencies": { - "@swc/core": "^1.3.85" - }, - "peerDependencies": { - "vite": "^4" - } - }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "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, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.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, - "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/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "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==", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "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==", - "dev": true - }, - "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, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "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, - "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/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/clsx": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", - "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", - "engines": { - "node": ">=6" - } - }, - "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==", - "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==" - }, - "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 - }, - "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==" - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "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/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - }, - "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==", - "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==", - "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==", - "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==", - "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==", - "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==", - "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-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "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==", - "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==", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "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 - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.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==", - "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "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==" - }, - "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==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "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==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", - "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.51.0", - "@humanwhocodes/config-array": "^0.11.11", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.3.tgz", - "integrity": "sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA==", - "dev": true, - "peerDependencies": { - "eslint": ">=7" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "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, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "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, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true - }, - "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, - "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, - "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 - }, - "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 - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "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==" - }, - "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==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/firebase": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.5.0.tgz", - "integrity": "sha512-ROwoOFQa7tZret/giHtVJH4YCRLCuKpN386mxzXd0likAVmv+38YGkJiqfkmZju7dIQ+QJOvBScXVf27Kvob0g==", - "dependencies": { - "@firebase/analytics": "0.10.0", - "@firebase/analytics-compat": "0.2.6", - "@firebase/app": "0.9.20", - "@firebase/app-check": "0.8.0", - "@firebase/app-check-compat": "0.3.7", - "@firebase/app-compat": "0.2.20", - "@firebase/app-types": "0.9.0", - "@firebase/auth": "1.3.0", - "@firebase/auth-compat": "0.4.6", - "@firebase/database": "1.0.1", - "@firebase/database-compat": "1.0.1", - "@firebase/firestore": "4.3.0", - "@firebase/firestore-compat": "0.3.19", - "@firebase/functions": "0.10.0", - "@firebase/functions-compat": "0.3.5", - "@firebase/installations": "0.6.4", - "@firebase/installations-compat": "0.2.4", - "@firebase/messaging": "0.12.4", - "@firebase/messaging-compat": "0.2.4", - "@firebase/performance": "0.6.4", - "@firebase/performance-compat": "0.2.4", - "@firebase/remote-config": "0.4.4", - "@firebase/remote-config-compat": "0.2.4", - "@firebase/storage": "0.11.2", - "@firebase/storage-compat": "0.3.2", - "@firebase/util": "1.9.3" - } - }, - "node_modules/flat-cache": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", - "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "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==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.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==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "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, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "engines": { - "node": ">= 0.4.0" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hoist-non-react-statics/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==" - }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" - }, - "node_modules/idb": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "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==", - "engines": { - "node": ">=12" - } - }, - "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==" - }, - "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", - "dependencies": { - "has": "^1.0.3" - }, - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "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==" - }, - "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==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "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 - }, - "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==" - }, - "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 - }, - "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 - }, - "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, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "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, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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==" - }, - "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==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, - "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 - }, - "node_modules/long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" - }, - "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==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "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, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "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 - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "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==", - "engines": { - "node": ">=0.10.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==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "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==", - "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "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==" - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "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" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "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, - "engines": { - "node": ">= 0.8.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==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/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==" - }, - "node_modules/protobufjs": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", - "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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" - } - ] - }, - "node_modules/raf": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", - "dependencies": { - "performance-now": "^2.1.0" - } - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "node_modules/react-router": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz", - "integrity": "sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==", - "dependencies": { - "@remix-run/router": "1.9.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": ">=16.8" - } - }, - "node_modules/react-router-dom": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz", - "integrity": "sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==", - "dependencies": { - "@remix-run/router": "1.9.0", - "react-router": "6.16.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" - } - }, - "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==", - "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/react-tsparticles": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/react-tsparticles/-/react-tsparticles-2.12.2.tgz", - "integrity": "sha512-/nrEbyL8UROXKIMXe+f+LZN2ckvkwV2Qa+GGe/H26oEIc+wq/ybSG9REDwQiSt2OaDQGu0MwmA4BKmkL6wAWcA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/matteobruni" - }, - { - "type": "github", - "url": "https://github.com/sponsors/tsparticles" - }, - { - "type": "buymeacoffee", - "url": "https://www.buymeacoffee.com/matteobruni" - } - ], - "hasInstallScript": true, - "dependencies": { - "tsparticles-engine": "^2.12.0" - }, - "peerDependencies": { - "react": ">=16" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "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/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==", - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "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" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "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" - } - ] - }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "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==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.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==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" - }, - "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==", - "dev": true, - "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==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, - "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==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", - "dev": true, - "engines": { - "node": ">=16.13.0" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/tsparticles-basic": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-basic/-/tsparticles-basic-2.12.0.tgz", - "integrity": "sha512-pN6FBpL0UsIUXjYbiui5+IVsbIItbQGOlwyGV55g6IYJBgdTNXgFX0HRYZGE9ZZ9psEXqzqwLM37zvWnb5AG9g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/matteobruni" - }, - { - "type": "github", - "url": "https://github.com/sponsors/tsparticles" - }, - { - "type": "buymeacoffee", - "url": "https://www.buymeacoffee.com/matteobruni" - } - ], - "dependencies": { - "tsparticles-engine": "^2.12.0", - "tsparticles-move-base": "^2.12.0", - "tsparticles-shape-circle": "^2.12.0", - "tsparticles-updater-color": "^2.12.0", - "tsparticles-updater-opacity": "^2.12.0", - "tsparticles-updater-out-modes": "^2.12.0", - "tsparticles-updater-size": "^2.12.0" - } - }, - "node_modules/tsparticles-engine": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-engine/-/tsparticles-engine-2.12.0.tgz", - "integrity": "sha512-ZjDIYex6jBJ4iMc9+z0uPe7SgBnmb6l+EJm83MPIsOny9lPpetMsnw/8YJ3xdxn8hV+S3myTpTN1CkOVmFv0QQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/matteobruni" - }, - { - "type": "github", - "url": "https://github.com/sponsors/tsparticles" - }, - { - "type": "buymeacoffee", - "url": "https://www.buymeacoffee.com/matteobruni" - } - ], - "hasInstallScript": true - }, - "node_modules/tsparticles-interaction-external-attract": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-attract/-/tsparticles-interaction-external-attract-2.12.0.tgz", - "integrity": "sha512-0roC6D1QkFqMVomcMlTaBrNVjVOpyNzxIUsjMfshk2wUZDAvTNTuWQdUpmsLS4EeSTDN3rzlGNnIuuUQqyBU5w==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-interaction-external-bounce": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-bounce/-/tsparticles-interaction-external-bounce-2.12.0.tgz", - "integrity": "sha512-MMcqKLnQMJ30hubORtdq+4QMldQ3+gJu0bBYsQr9BsThsh8/V0xHc1iokZobqHYVP5tV77mbFBD8Z7iSCf0TMQ==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-interaction-external-bubble": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-bubble/-/tsparticles-interaction-external-bubble-2.12.0.tgz", - "integrity": "sha512-5kImCSCZlLNccXOHPIi2Yn+rQWTX3sEa/xCHwXW19uHxtILVJlnAweayc8+Zgmb7mo0DscBtWVFXHPxrVPFDUA==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-interaction-external-connect": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-connect/-/tsparticles-interaction-external-connect-2.12.0.tgz", - "integrity": "sha512-ymzmFPXz6AaA1LAOL5Ihuy7YSQEW8MzuSJzbd0ES13U8XjiU3HlFqlH6WGT1KvXNw6WYoqrZt0T3fKxBW3/C3A==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-interaction-external-grab": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-grab/-/tsparticles-interaction-external-grab-2.12.0.tgz", - "integrity": "sha512-iQF/A947hSfDNqAjr49PRjyQaeRkYgTYpfNmAf+EfME8RsbapeP/BSyF6mTy0UAFC0hK2A2Hwgw72eT78yhXeQ==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-interaction-external-pause": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-pause/-/tsparticles-interaction-external-pause-2.12.0.tgz", - "integrity": "sha512-4SUikNpsFROHnRqniL+uX2E388YTtfRWqqqZxRhY0BrijH4z04Aii3YqaGhJxfrwDKkTQlIoM2GbFT552QZWjw==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-interaction-external-push": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-push/-/tsparticles-interaction-external-push-2.12.0.tgz", - "integrity": "sha512-kqs3V0dgDKgMoeqbdg+cKH2F+DTrvfCMrPF1MCCUpBCqBiH+TRQpJNNC86EZYHfNUeeLuIM3ttWwIkk2hllR/Q==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-interaction-external-remove": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-remove/-/tsparticles-interaction-external-remove-2.12.0.tgz", - "integrity": "sha512-2eNIrv4m1WB2VfSVj46V2L/J9hNEZnMgFc+A+qmy66C8KzDN1G8aJUAf1inW8JVc0lmo5+WKhzex4X0ZSMghBg==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-interaction-external-repulse": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-repulse/-/tsparticles-interaction-external-repulse-2.12.0.tgz", - "integrity": "sha512-rSzdnmgljeBCj5FPp4AtGxOG9TmTsK3AjQW0vlyd1aG2O5kSqFjR+FuT7rfdSk9LEJGH5SjPFE6cwbuy51uEWA==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-interaction-external-slow": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-slow/-/tsparticles-interaction-external-slow-2.12.0.tgz", - "integrity": "sha512-2IKdMC3om7DttqyroMtO//xNdF0NvJL/Lx7LDo08VpfTgJJozxU+JAUT8XVT7urxhaDzbxSSIROc79epESROtA==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-interaction-particles-attract": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-interaction-particles-attract/-/tsparticles-interaction-particles-attract-2.12.0.tgz", - "integrity": "sha512-Hl8qwuwF9aLq3FOkAW+Zomu7Gb8IKs6Y3tFQUQScDmrrSCaeRt2EGklAiwgxwgntmqzL7hbMWNx06CHHcUQKdQ==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-interaction-particles-collisions": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-interaction-particles-collisions/-/tsparticles-interaction-particles-collisions-2.12.0.tgz", - "integrity": "sha512-Se9nPWlyPxdsnHgR6ap4YUImAu3W5MeGKJaQMiQpm1vW8lSMOUejI1n1ioIaQth9weKGKnD9rvcNn76sFlzGBA==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-interaction-particles-links": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-interaction-particles-links/-/tsparticles-interaction-particles-links-2.12.0.tgz", - "integrity": "sha512-e7I8gRs4rmKfcsHONXMkJnymRWpxHmeaJIo4g2NaDRjIgeb2AcJSWKWZvrsoLnm7zvaf/cMQlbN6vQwCixYq3A==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-move-base": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-move-base/-/tsparticles-move-base-2.12.0.tgz", - "integrity": "sha512-oSogCDougIImq+iRtIFJD0YFArlorSi8IW3HD2gO3USkH+aNn3ZqZNTqp321uB08K34HpS263DTbhLHa/D6BWw==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-move-parallax": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-move-parallax/-/tsparticles-move-parallax-2.12.0.tgz", - "integrity": "sha512-58CYXaX8Ih5rNtYhpnH0YwU4Ks7gVZMREGUJtmjhuYN+OFr9FVdF3oDIJ9N6gY5a5AnAKz8f5j5qpucoPRcYrQ==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-particles.js": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-particles.js/-/tsparticles-particles.js-2.12.0.tgz", - "integrity": "sha512-LyOuvYdhbUScmA4iDgV3LxA0HzY1DnOwQUy3NrPYO393S2YwdDjdwMod6Btq7EBUjg9FVIh+sZRizgV5elV2dg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/matteobruni" - }, - { - "type": "github", - "url": "https://github.com/sponsors/tsparticles" - }, - { - "type": "buymeacoffee", - "url": "https://www.buymeacoffee.com/matteobruni" - } - ], - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-plugin-easing-quad": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-plugin-easing-quad/-/tsparticles-plugin-easing-quad-2.12.0.tgz", - "integrity": "sha512-2mNqez5pydDewMIUWaUhY5cNQ80IUOYiujwG6qx9spTq1D6EEPLbRNAEL8/ecPdn2j1Um3iWSx6lo340rPkv4Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/matteobruni" - }, - { - "type": "github", - "url": "https://github.com/sponsors/tsparticles" - }, - { - "type": "buymeacoffee", - "url": "https://www.buymeacoffee.com/matteobruni" - } - ], - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-shape-circle": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-shape-circle/-/tsparticles-shape-circle-2.12.0.tgz", - "integrity": "sha512-L6OngbAlbadG7b783x16ns3+SZ7i0SSB66M8xGa5/k+YcY7zm8zG0uPt1Hd+xQDR2aNA3RngVM10O23/Lwk65Q==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-shape-image": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-shape-image/-/tsparticles-shape-image-2.12.0.tgz", - "integrity": "sha512-iCkSdUVa40DxhkkYjYuYHr9MJGVw+QnQuN5UC+e/yBgJQY+1tQL8UH0+YU/h0GHTzh5Sm+y+g51gOFxHt1dj7Q==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-shape-line": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-shape-line/-/tsparticles-shape-line-2.12.0.tgz", - "integrity": "sha512-RcpKmmpKlk+R8mM5wA2v64Lv1jvXtU4SrBDv3vbdRodKbKaWGGzymzav1Q0hYyDyUZgplEK/a5ZwrfrOwmgYGA==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-shape-polygon": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-shape-polygon/-/tsparticles-shape-polygon-2.12.0.tgz", - "integrity": "sha512-5YEy7HVMt1Obxd/jnlsjajchAlYMr9eRZWN+lSjcFSH6Ibra7h59YuJVnwxOxAobpijGxsNiBX0PuGQnB47pmA==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-shape-square": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-shape-square/-/tsparticles-shape-square-2.12.0.tgz", - "integrity": "sha512-33vfajHqmlODKaUzyPI/aVhnAOT09V7nfEPNl8DD0cfiNikEuPkbFqgJezJuE55ebtVo7BZPDA9o7GYbWxQNuw==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-shape-star": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-shape-star/-/tsparticles-shape-star-2.12.0.tgz", - "integrity": "sha512-4sfG/BBqm2qBnPLASl2L5aBfCx86cmZLXeh49Un+TIR1F5Qh4XUFsahgVOG0vkZQa+rOsZPEH04xY5feWmj90g==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-shape-text": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-shape-text/-/tsparticles-shape-text-2.12.0.tgz", - "integrity": "sha512-v2/FCA+hyTbDqp2ymFOe97h/NFb2eezECMrdirHWew3E3qlvj9S/xBibjbpZva2gnXcasBwxn0+LxKbgGdP0rA==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-slim": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-slim/-/tsparticles-slim-2.12.0.tgz", - "integrity": "sha512-27w9aGAAAPKHvP4LHzWFpyqu7wKyulayyaZ/L6Tuuejy4KP4BBEB4rY5GG91yvAPsLtr6rwWAn3yS+uxnBDpkA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/matteobruni" - }, - { - "type": "github", - "url": "https://github.com/sponsors/tsparticles" - }, - { - "type": "buymeacoffee", - "url": "https://www.buymeacoffee.com/matteobruni" - } - ], - "dependencies": { - "tsparticles-basic": "^2.12.0", - "tsparticles-engine": "^2.12.0", - "tsparticles-interaction-external-attract": "^2.12.0", - "tsparticles-interaction-external-bounce": "^2.12.0", - "tsparticles-interaction-external-bubble": "^2.12.0", - "tsparticles-interaction-external-connect": "^2.12.0", - "tsparticles-interaction-external-grab": "^2.12.0", - "tsparticles-interaction-external-pause": "^2.12.0", - "tsparticles-interaction-external-push": "^2.12.0", - "tsparticles-interaction-external-remove": "^2.12.0", - "tsparticles-interaction-external-repulse": "^2.12.0", - "tsparticles-interaction-external-slow": "^2.12.0", - "tsparticles-interaction-particles-attract": "^2.12.0", - "tsparticles-interaction-particles-collisions": "^2.12.0", - "tsparticles-interaction-particles-links": "^2.12.0", - "tsparticles-move-base": "^2.12.0", - "tsparticles-move-parallax": "^2.12.0", - "tsparticles-particles.js": "^2.12.0", - "tsparticles-plugin-easing-quad": "^2.12.0", - "tsparticles-shape-circle": "^2.12.0", - "tsparticles-shape-image": "^2.12.0", - "tsparticles-shape-line": "^2.12.0", - "tsparticles-shape-polygon": "^2.12.0", - "tsparticles-shape-square": "^2.12.0", - "tsparticles-shape-star": "^2.12.0", - "tsparticles-shape-text": "^2.12.0", - "tsparticles-updater-color": "^2.12.0", - "tsparticles-updater-life": "^2.12.0", - "tsparticles-updater-opacity": "^2.12.0", - "tsparticles-updater-out-modes": "^2.12.0", - "tsparticles-updater-rotate": "^2.12.0", - "tsparticles-updater-size": "^2.12.0", - "tsparticles-updater-stroke-color": "^2.12.0" - } - }, - "node_modules/tsparticles-updater-color": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-updater-color/-/tsparticles-updater-color-2.12.0.tgz", - "integrity": "sha512-KcG3a8zd0f8CTiOrylXGChBrjhKcchvDJjx9sp5qpwQK61JlNojNCU35xoaSk2eEHeOvFjh0o3CXWUmYPUcBTQ==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-updater-life": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-updater-life/-/tsparticles-updater-life-2.12.0.tgz", - "integrity": "sha512-J7RWGHAZkowBHpcLpmjKsxwnZZJ94oGEL2w+wvW1/+ZLmAiFFF6UgU0rHMC5CbHJT4IPx9cbkYMEHsBkcRJ0Bw==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-updater-opacity": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-updater-opacity/-/tsparticles-updater-opacity-2.12.0.tgz", - "integrity": "sha512-YUjMsgHdaYi4HN89LLogboYcCi1o9VGo21upoqxq19yRy0hRCtx2NhH22iHF/i5WrX6jqshN0iuiiNefC53CsA==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-updater-out-modes": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-updater-out-modes/-/tsparticles-updater-out-modes-2.12.0.tgz", - "integrity": "sha512-owBp4Gk0JNlSrmp12XVEeBroDhLZU+Uq3szbWlHGSfcR88W4c/0bt0FiH5bHUqORIkw+m8O56hCjbqwj69kpOQ==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-updater-rotate": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-updater-rotate/-/tsparticles-updater-rotate-2.12.0.tgz", - "integrity": "sha512-waOFlGFmEZOzsQg4C4VSejNVXGf4dMf3fsnQrEROASGf1FCd8B6WcZau7JtXSTFw0OUGuk8UGz36ETWN72DkCw==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-updater-size": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-updater-size/-/tsparticles-updater-size-2.12.0.tgz", - "integrity": "sha512-B0yRdEDd/qZXCGDL/ussHfx5YJ9UhTqNvmS5X2rR2hiZhBAE2fmsXLeWkdtF2QusjPeEqFDxrkGiLOsh6poqRA==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-updater-stroke-color": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-updater-stroke-color/-/tsparticles-updater-stroke-color-2.12.0.tgz", - "integrity": "sha512-MPou1ZDxsuVq6SN1fbX+aI5yrs6FyP2iPCqqttpNbWyL+R6fik1rL0ab/x02B57liDXqGKYomIbBQVP3zUTW1A==", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "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, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typewriter-effect": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/typewriter-effect/-/typewriter-effect-2.21.0.tgz", - "integrity": "sha512-Y3VL1fuJpUBj0gS4OTXBLzy1gnYTYaBuVuuO99tGNyTkkub5CXi+b/hsV7Og9fp6HlhogOwWJwgq7iXI5sQlEg==", - "dependencies": { - "prop-types": "^15.8.1", - "raf": "^3.4.1" - }, - "peerDependencies": { - "react": "^17.x || ^18.x", - "react-dom": "^17.x || ^18.x" - } - }, - "node_modules/undici-types": { - "version": "5.25.3", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", - "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==" - }, - "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, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/vite": { - "version": "4.4.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz", - "integrity": "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==", - "dev": true, - "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "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==" - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "engines": { - "node": ">=0.8.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==", - "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==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/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==", - "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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/website/package.json b/website/package.json deleted file mode 100644 index 75f885a..0000000 --- a/website/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "website", - "private": true, - "version": "0.0.0", - "type": "module", - "homepage": "https://shaunakw.github.io/HackGT2023", - "scripts": { - "dev": "vite", - "build": "tsc && vite build", - "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" - }, - "dependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "@mui/icons-material": "^5.14.13", - "@mui/material": "^5.14.13", - "@mui/x-charts": "^6.0.0-alpha.15", - "firebase": "^10.5.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-router-dom": "^6.16.0", - "react-tsparticles": "^2.12.2", - "tsparticles-slim": "^2.12.0", - "typewriter-effect": "^2.21.0" - }, - "devDependencies": { - "@types/react": "^18.2.15", - "@types/react-dom": "^18.2.7", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "@vitejs/plugin-react-swc": "^3.3.2", - "eslint": "^8.45.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.3", - "typescript": "^5.0.2", - "vite": "^4.4.5" - } -} diff --git a/website/public/CNAME b/website/public/CNAME deleted file mode 100644 index 12422e5..0000000 --- a/website/public/CNAME +++ /dev/null @@ -1 +0,0 @@ -pp.hackga.tech \ No newline at end of file diff --git a/website/src/App.css b/website/src/App.css deleted file mode 100644 index 7583255..0000000 --- a/website/src/App.css +++ /dev/null @@ -1,39 +0,0 @@ -/* App.css */ -@keyframes blink { - from, - to { - color: transparent; - } - 50% { - color: black; - } -} - -.cursor { - font-weight: 100; - color: white; - -webkit-animation-name: blink; - -webkit-animation-duration: 5s; - -webkit-animation-iteration-count: infinite; - -moz-animation-name: blink; - -moz-animation-duration: 5s; - -moz-animation-iteration-count: infinite; - animation-name: blink; - animation-duration: 5s; - animation-iteration-count: infinite; - animation-play-state: running; -} - -.type { - color: white; - font-size: 50px; - font-weight: 100; -} - -.button-style { - color: white; -} - -.subtitle { - transition: all 0.5s ease-in-out; -} diff --git a/website/src/App.tsx b/website/src/App.tsx deleted file mode 100644 index aa6ade1..0000000 --- a/website/src/App.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import { User, onAuthStateChanged, signInWithRedirect } from "firebase/auth"; -import { useEffect, useState } from "react"; -import { Box, Button, CircularProgress, Typography } from "@mui/material"; -import Typewriter from "typewriter-effect"; -import UserHome from "./components/UserHome"; -import Dots from "./components/Dots"; -import { auth, getCurrentUserData, githubProvider } from "./firebase"; -import { UserData } from "./types"; -import "./App.css"; - -function App() { - const [loading, setLoading] = useState(true); - const [user, setUser] = useState(null); - const [userData, setUserData] = useState(); - - const [titleDone, setTitleDone] = useState(false); - - useEffect(() => { - onAuthStateChanged(auth, async (user) => { - if (user) { - setUserData(await getCurrentUserData(user)); - } else { - setUserData(undefined); - } - - setUser(user); - setLoading(false); - }); - }, []); - - return ( - <> - {!loading && !user && } - - {!loading ? ( - user ? ( - - ) : ( - <> - - logo - - -
- { - typewriter - .typeString("Welcome to Watt Wizard!") - .pauseFor(100) - .callFunction(() => setTitleDone(true)) - .start(); - }} - /> -
- - Compete with your friends to save the most energy! - - - - ) - ) : ( - - )} -
- - ); -} - -export default App; diff --git a/website/src/components/DataTable.tsx b/website/src/components/DataTable.tsx deleted file mode 100644 index cd684b4..0000000 --- a/website/src/components/DataTable.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { Box, Typography } from "@mui/material"; -import { useMemo } from "react"; -import DataTableEntry from "./DataTableEntry"; - -interface IProps { - title: string; - data: [string, number[]][]; -} - -function DataTable(props: IProps) { - const data = useMemo(() => { - return props.data.sort( - (a, b) => b[1][b[1].length - 1] - a[1][a[1].length - 1] - ); - }, [props.data]); - - return ( - <> - - {props.title} - Power Consumption (W) - - {data.map((d, i) => ( - - ))} - - ); -} - -export default DataTable; diff --git a/website/src/components/DataTableEntry.tsx b/website/src/components/DataTableEntry.tsx deleted file mode 100644 index 5f69730..0000000 --- a/website/src/components/DataTableEntry.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { Box, Card, IconButton, Modal, Typography } from "@mui/material"; -import CloseIcon from "@mui/icons-material/Close"; -import { LineChart } from "@mui/x-charts"; -import { useState } from "react"; - -interface IProps { - color?: string; - name: string; - values: number[]; -} - -function DataTableEntry(props: IProps) { - const [open, setOpen] = useState(false); - - console.log(open); - - return ( - <> - setOpen(true)} - > - {props.name} - {props.values[props.values.length - 1]} - - setOpen(false)}> - - - {props.name} - setOpen(false)}> - - - - i) }]} - series={[{ data: props.values }]} - width={600 - 2 * 16} - height={400} - /> - - - - ); -} - -export default DataTableEntry; diff --git a/website/src/components/Devices.tsx b/website/src/components/Devices.tsx deleted file mode 100644 index 232ffd4..0000000 --- a/website/src/components/Devices.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { Typography } from "@mui/material"; -import { UserData } from "../types"; -import { useMemo } from "react"; -import DataTable from "./DataTable"; - -interface IProps { - userData: UserData; -} - -function Devices(props: IProps) { - const data = useMemo(() => { - const devices = props.userData.devices ?? []; - return devices.map( - (device) => [device.name, device.power] as [string, number[]] - ); - }, [props.userData.devices]); - - return ( - <> - - My Devices - - - - ); -} - -export default Devices; diff --git a/website/src/components/Dots.tsx b/website/src/components/Dots.tsx deleted file mode 100644 index e9e525f..0000000 --- a/website/src/components/Dots.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import React, { useCallback } from "react"; -import type { Container, Engine } from "tsparticles-engine"; -import Particles from "react-tsparticles"; -//import { loadFull } from "tsparticles"; // if you are going to use `loadFull`, install the "tsparticles" package too. -import { loadSlim } from "tsparticles-slim"; // if you are going to use `loadSlim`, install the "tsparticles-slim" package too. - -const Dots: React.FC = () => { - const particlesInit = useCallback(async (engine: Engine) => { - console.log(engine); - - // you can initialize the tsParticles instance (engine) here, adding custom shapes or presets - // this loads the tsparticles package bundle, it's the easiest method for getting everything ready - // starting from v2 you can add only the features you need reducing the bundle size - //await loadFull(engine); - await loadSlim(engine); - }, []); - - const particlesLoaded = useCallback( - async (container: Container | undefined) => { - await console.log(container); - }, - [] - ); - return ( - - ); -}; - -export default Dots; diff --git a/website/src/components/Leaderboard.tsx b/website/src/components/Leaderboard.tsx deleted file mode 100644 index 16f37f8..0000000 --- a/website/src/components/Leaderboard.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import { CircularProgress, Typography } from "@mui/material"; -import { useCallback, useEffect, useState } from "react"; -import { getAllHomes, getMultipleUserData } from "../firebase"; -import DataTable from "./DataTable"; - -function Leaderboard() { - const [loading, setLoading] = useState(true); - const [data, setData] = useState<[string, number[]][]>([]); - - const loadData = useCallback(async () => { - setLoading(true); - const homes = await getAllHomes(); - const data: [string, number[]][] = []; - for (const home of homes) { - if (home.users && home.users.length > 0) { - const array = await getMultipleUserData(home.users); - console.log(array); - const dataArray = array - .filter( - (data) => data.devices?.length && data.devices[0].power?.length - ) - .map((data) => - data.devices!.reduce( - (power, device) => power.map((p, i) => p + device.power![i]), - data.devices![0].power!.map(() => 0) - ) - ); - const sumArray = dataArray.reduce((power, user) => - power.map((p, i) => p + user[i]) - ); - data.push([home.name, sumArray]); - } - } - setData(data); - setLoading(false); - }, []); - - useEffect(() => { - loadData(); - }, [loadData]); - - return !loading ? ( - <> - - Leaderboard - - - - ) : ( - - ); -} - -export default Leaderboard; diff --git a/website/src/components/MyHome.tsx b/website/src/components/MyHome.tsx deleted file mode 100644 index 9742af9..0000000 --- a/website/src/components/MyHome.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { CircularProgress, Typography } from "@mui/material"; -import { UserData } from "../types"; -import { useCallback, useEffect, useState } from "react"; -import { getHome, getMultipleUserData } from "../firebase"; -import DataTable from "./DataTable"; - -interface IProps { - userData: UserData; -} - -function MyHome(props: IProps) { - const [loading, setLoading] = useState(true); - const [name, setName] = useState(""); - const [data, setData] = useState<[string, number[]][]>([]); - - const loadData = useCallback(async () => { - if (props.userData.home) { - setLoading(true); - const home = await getHome(props.userData.home); - const userDatas = await getMultipleUserData(home.users ?? []); - const data = userDatas - .filter( - (userData) => - userData.devices?.length && userData.devices[0].power?.length - ) - .map((userData) => { - const power = userData.devices!.reduce( - (power, device) => power.map((p, i) => p + device.power![i]), - userData.devices![0].power!.map(() => 0) - ); - return [userData.name, power] as [string, number[]]; - }); - setName(home.name); - setData(data); - setLoading(false); - } - }, [props.userData.home]); - - useEffect(() => { - loadData(); - }, [loadData]); - - return props.userData.home ? ( - !loading ? ( - <> - - {name} - - - - ) : ( - - ) - ) : ( - <> - - No Home - - - Join a home to see how you stack up against your housemates! - - - ); -} - -export default MyHome; diff --git a/website/src/components/UserHome.tsx b/website/src/components/UserHome.tsx deleted file mode 100644 index c5d89ad..0000000 --- a/website/src/components/UserHome.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import { signOut } from "firebase/auth"; -import { Box, Button, Card, Grid, Typography } from "@mui/material"; -import { auth } from "../firebase"; -import { UserData } from "../types"; -import Devices from "./Devices"; -import MyHome from "./MyHome"; -import Leaderboard from "./Leaderboard"; - -interface IProps { - userData: UserData; -} - -function UserHome(props: IProps) { - return ( - - - logo - - Watt Wizard - - - - - - - - - - - - - - - - - - - - - - - - - ); -} - -export default UserHome; diff --git a/website/src/firebase.ts b/website/src/firebase.ts deleted file mode 100644 index 5a15587..0000000 --- a/website/src/firebase.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { initializeApp } from "firebase/app"; -import { GithubAuthProvider, User, getAuth } from "firebase/auth"; -import { - collection, - doc, - documentId, - getDoc, - getDocs, - getFirestore, - query, - setDoc, - where, -} from "firebase/firestore"; -import { Home, UserData } from "./types"; - -const firebaseConfig = { - apiKey: "AIzaSyAEZWnInWLWU5yqG7Y1NyKkQSon_RRxWNY", - authDomain: "hackgt2023.firebaseapp.com", - projectId: "hackgt2023", - storageBucket: "hackgt2023.appspot.com", - messagingSenderId: "192909855910", - appId: "1:192909855910:web:f50aa440ac666be3873867", -}; - -export const githubProvider = new GithubAuthProvider(); -githubProvider.addScope("user:email"); - -const app = initializeApp(firebaseConfig); -export const auth = getAuth(app); -export const db = getFirestore(app); - -export async function getMultipleUserData(uids: string[]): Promise { - const q = query(collection(db, "users"), where(documentId(), "in", uids)); - const querySnap = await getDocs(q); - return querySnap.docs.map((doc) => doc.data() as UserData); -} - -export async function getCurrentUserData(user: User): Promise { - const docRef = doc(db, "users", user.uid); - const docSnap = await getDoc(docRef); - if (!docSnap.exists()) { - await setDoc(docRef, {}); - return { - name: user.displayName ?? "Anonymous", - pfp: "https://m.media-amazon.com/images/I/612-e1vHBAL._AC_SL1145_.jpg", - }; - } - - return docSnap.data() as UserData; -} - -export async function getAllHomes(): Promise { - const querySnap = await getDocs(collection(db, "homes")); - return querySnap.docs.map((doc) => doc.data() as Home); -} - -export async function getHome(id: string): Promise { - const docRef = doc(db, "homes", id); - const docSnap = await getDoc(docRef); - return docSnap.data() as Home; -} diff --git a/website/src/index.css b/website/src/index.css deleted file mode 100644 index 4dc4eeb..0000000 --- a/website/src/index.css +++ /dev/null @@ -1,5 +0,0 @@ -html, -body { - margin: 0; - padding: 0; -} diff --git a/website/src/main.tsx b/website/src/main.tsx deleted file mode 100644 index dde2471..0000000 --- a/website/src/main.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import React from "react"; -import ReactDOM from "react-dom/client"; -import App from "./App.tsx"; -import "./index.css"; -import { ThemeProvider, createTheme } from "@mui/material"; - -const theme = createTheme({ typography: { fontFamily: "Gabarito" } }); - -ReactDOM.createRoot(document.getElementById("root")!).render( - - - - - -); diff --git a/website/src/types.ts b/website/src/types.ts deleted file mode 100644 index 3a0ee5f..0000000 --- a/website/src/types.ts +++ /dev/null @@ -1,18 +0,0 @@ -export interface UserData { - friends?: string[]; - home?: string; - pfp: string; - name: string; - devices?: Device[]; -} - -export interface Device { - name: string; - power?: number[]; -} - -export interface Home { - name: string; - pfp: string; - users?: string[]; -} diff --git a/website/src/vite-env.d.ts b/website/src/vite-env.d.ts deleted file mode 100644 index 11f02fe..0000000 --- a/website/src/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/website/tsconfig.json b/website/tsconfig.json deleted file mode 100644 index a7fc6fb..0000000 --- a/website/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "module": "ESNext", - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx", - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true - }, - "include": ["src"], - "references": [{ "path": "./tsconfig.node.json" }] -} diff --git a/website/tsconfig.node.json b/website/tsconfig.node.json deleted file mode 100644 index 42872c5..0000000 --- a/website/tsconfig.node.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "skipLibCheck": true, - "module": "ESNext", - "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/website/vite.config.ts b/website/vite.config.ts deleted file mode 100644 index d366e8c..0000000 --- a/website/vite.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from "vite"; -import react from "@vitejs/plugin-react-swc"; - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], -});