From 4bb2d203b67eb52f7e67fca3b259dd079a9beea8 Mon Sep 17 00:00:00 2001 From: alie03 Date: Fri, 30 Aug 2024 22:53:14 +0530 Subject: [PATCH] New Feature Addition --- .github/workflows/firebase-hosting-merge.yml | 20 - .../firebase-hosting-pull-request.yml | 21 - .gitignore | 121 - .hintrc | 16 - .metadata | 25 +- .vscode/settings.json | 4 - LICENSE | 21 - README.md | 142 +- analysis_options.yaml | 29 +- android/.gitignore | 13 + android/app/build.gradle | 46 + android/app/google-services.json | 29 + android/app/src/debug/AndroidManifest.xml | 7 + android/app/src/main/AndroidManifest.xml | 45 + .../com/example/sharekhanclg/MainActivity.kt | 5 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../app/src/main/res/values-night/styles.xml | 18 + android/app/src/main/res/values/styles.xml | 18 + android/app/src/profile/AndroidManifest.xml | 7 + android/build.gradle | 20 + android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 5 + android/settings.gradle | 28 + assets/icons/logo.png | Bin 17494 -> 0 bytes assets/images/73d7548d91bbd2ab_960.png | Bin 0 -> 4626 bytes assets/images/dash.png | Bin 386796 -> 0 bytes assets/images/ebe5792b765dbf87_960.png | Bin 0 -> 92229 bytes assets/images/flutterfire_300x.png | Bin 3425 -> 65967 bytes firebase.json | 1 + ios/.gitignore | 34 + ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Runner.xcodeproj/project.pbxproj | 616 + .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 + .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 + .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 295 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 450 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 282 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 462 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 704 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 586 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 1674 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 762 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 1226 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 1418 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + ios/Runner/Base.lproj/LaunchScreen.storyboard | 37 + ios/Runner/Base.lproj/Main.storyboard | 26 + ios/Runner/Info.plist | 10 +- ios/Runner/Runner-Bridging-Header.h | 1 + ios/RunnerTests/RunnerTests.swift | 12 + lib/app.dart | 15 + lib/app/middleware/auth_middleware.dart | 94 - .../modules/cart/bindings/cart_binding.dart | 12 - .../cart/controllers/cart_controller.dart | 23 - lib/app/modules/cart/views/cart_view.dart | 27 - .../bindings/categories_binding.dart | 12 - .../controllers/categories_controller.dart | 23 - .../categories/views/categories_view.dart | 24 - .../checkout/bindings/checkout_binding.dart | 12 - .../controllers/checkout_controller.dart | 23 - .../modules/checkout/views/checkout_view.dart | 24 - .../dashboard/bindings/dashboard_binding.dart | 12 - .../controllers/dashboard_controller.dart | 17 - .../dashboard/views/dashboard_view.dart | 28 - .../modules/home/bindings/home_binding.dart | 12 - .../home/controllers/home_controller.dart | 14 - lib/app/modules/home/views/home_view.dart | 34 - .../modules/login/bindings/login_binding.dart | 12 - .../login/controllers/login_controller.dart | 20 - lib/app/modules/login/views/login_view.dart | 162 - .../bindings/my_products_binding.dart | 12 - .../controllers/my_products_controller.dart | 23 - .../my_products/views/my_products_view.dart | 24 - .../bindings/product_details_binding.dart | 14 - .../product_details_controller.dart | 18 - .../views/product_details_view.dart | 27 - .../products/bindings/products_binding.dart | 12 - .../controllers/products_controller.dart | 28 - .../modules/products/views/products_view.dart | 58 - .../profile/bindings/profile_binding.dart | 12 - .../controllers/profile_controller.dart | 62 - .../modules/profile/views/profile_view.dart | 124 - .../register/bindings/register_binding.dart | 12 - .../controllers/register_controller.dart | 23 - .../modules/register/views/register_view.dart | 53 - .../modules/root/bindings/root_binding.dart | 12 - .../controllers/my_drawer_controller.dart | 10 - .../root/controllers/root_controller.dart | 14 - lib/app/modules/root/views/drawer.dart | 118 - lib/app/modules/root/views/root_view.dart | 64 - .../settings/bindings/settings_binding.dart | 12 - .../controllers/settings_controller.dart | 20 - .../modules/settings/views/settings_view.dart | 21 - .../bindings/task_details_binding.dart | 12 - .../controllers/task_details_controller.dart | 23 - .../task_details/views/task_details_view.dart | 24 - .../modules/tasks/bindings/tasks_binding.dart | 12 - .../tasks/controllers/tasks_controller.dart | 23 - lib/app/modules/tasks/views/tasks_view.dart | 24 - .../modules/users/bindings/users_binding.dart | 12 - .../users/controllers/users_controller.dart | 23 - lib/app/modules/users/views/users_view.dart | 24 - lib/app/routes/app_pages.dart | 154 - lib/app/routes/app_routes.dart | 54 - lib/app/routes/screen_extension.dart | 125 - lib/app/widgets/change_password_dialog.dart | 139 - lib/app/widgets/image_picker_button.dart | 91 - lib/app/widgets/login_widgets.dart | 95 - lib/app/widgets/menu_sheet_button.dart | 94 - lib/app/widgets/screen_widget.dart | 75 - lib/auth_gate.dart | 82 + lib/change_password_screen.dart | 88 + lib/constants.dart | 21 - lib/cors.json | 9 + lib/firebase_options.dart | 75 + lib/firebase_options.template | 96 - lib/home.dart | 185 + lib/image_controller.dart | 19 + lib/image_uploads.dart | 134 + lib/main.dart | 53 +- lib/models/access_level.dart | 9 - lib/models/action_enum.dart | 7 - lib/models/product.dart | 9 - lib/models/role.dart | 35 - lib/models/screens.dart | 177 - lib/services/auth_service.dart | 201 - lib/services/remote_config.dart | 78 - lib/sign_in_screen.dart | 93 + linux/.gitignore | 1 + linux/CMakeLists.txt | 145 + linux/flutter/CMakeLists.txt | 88 + linux/flutter/generated_plugin_registrant.cc | 19 + linux/flutter/generated_plugin_registrant.h | 15 + linux/flutter/generated_plugins.cmake | 25 + linux/main.cc | 6 + linux/my_application.cc | 124 + linux/my_application.h | 18 + macos/.gitignore | 7 + macos/Flutter/Flutter-Debug.xcconfig | 1 + macos/Flutter/Flutter-Release.xcconfig | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 24 + macos/Runner.xcodeproj/project.pbxproj | 705 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 + .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 + .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 102994 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5680 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 520 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14142 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1066 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 36406 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2218 bytes macos/Runner/Base.lproj/MainMenu.xib | 343 + macos/Runner/Configs/AppInfo.xcconfig | 14 + macos/Runner/Configs/Debug.xcconfig | 2 + macos/Runner/Configs/Release.xcconfig | 2 + macos/Runner/Configs/Warnings.xcconfig | 13 + macos/Runner/DebugProfile.entitlements | 12 + macos/Runner/MainFlutterWindow.swift | 15 + macos/Runner/Release.entitlements | 8 + macos/RunnerTests/RunnerTests.swift | 12 + pubspec.lock | 318 +- pubspec.yaml | 137 +- server/.firebaserc | 10 - server/.gitignore | 66 - server/database.rules.json | 6 - server/firebase.json | 79 - server/firestore.indexes.json | 4 - server/firestore.rules | 16 - server/functions/.eslintrc.js | 28 - server/functions/.gitignore | 2 - server/functions/lib/auth.js | 194 - server/functions/lib/auth.js.map | 1 - server/functions/lib/index.js | 54 - server/functions/lib/index.js.map | 1 - server/functions/lib/init.js | 29 - server/functions/lib/init.js.map | 1 - server/functions/package-lock.json | 13017 -------------- server/functions/package.json | 29 - server/functions/src/admin.ts | 49 - server/functions/src/auth.ts | 189 - server/functions/src/index.ts | 33 - server/functions/src/init.ts | 28 - server/functions/tsconfig.json | 16 - server/genkit/.eslintrc.js | 33 - server/genkit/.gitignore | 10 - server/genkit/package-lock.json | 14490 ---------------- server/genkit/package.json | 31 - server/genkit/src/index.ts | 19 - server/genkit/tsconfig.dev.json | 5 - server/genkit/tsconfig.json | 15 - server/get-flutter-fire | 1 - server/package-lock.json | 13 - server/package.json | 12 - server/public/404.html | 33 - server/public/index.html | 89 - server/storage.rules | 13 - test/widget_test.dart | 30 + web/favicon.png | Bin 0 -> 917 bytes web/icons/Icon-192.png | Bin 0 -> 5292 bytes web/icons/Icon-512.png | Bin 0 -> 8252 bytes web/icons/Icon-maskable-192.png | Bin 0 -> 5594 bytes web/icons/Icon-maskable-512.png | Bin 0 -> 20998 bytes web/index.html | 38 + web/manifest.json | 35 + windows/.gitignore | 17 + windows/CMakeLists.txt | 108 + windows/flutter/CMakeLists.txt | 109 + .../flutter/generated_plugin_registrant.cc | 29 + windows/flutter/generated_plugin_registrant.h | 15 + windows/flutter/generated_plugins.cmake | 29 + windows/runner/CMakeLists.txt | 40 + windows/runner/Runner.rc | 121 + windows/runner/flutter_window.cpp | 71 + windows/runner/flutter_window.h | 33 + windows/runner/main.cpp | 43 + windows/runner/resource.h | 16 + windows/runner/resources/app_icon.ico | Bin 0 -> 33772 bytes windows/runner/runner.exe.manifest | 14 + windows/runner/utils.cpp | 65 + windows/runner/utils.h | 19 + windows/runner/win32_window.cpp | 288 + windows/runner/win32_window.h | 102 + 249 files changed, 5321 insertions(+), 32231 deletions(-) delete mode 100644 .github/workflows/firebase-hosting-merge.yml delete mode 100644 .github/workflows/firebase-hosting-pull-request.yml delete mode 100644 .hintrc delete mode 100644 .vscode/settings.json delete mode 100644 LICENSE create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle create mode 100644 android/app/google-services.json create mode 100644 android/app/src/debug/AndroidManifest.xml create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/kotlin/com/example/sharekhanclg/MainActivity.kt create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable/launch_background.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/values-night/styles.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/profile/AndroidManifest.xml create mode 100644 android/build.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/settings.gradle delete mode 100644 assets/icons/logo.png create mode 100644 assets/images/73d7548d91bbd2ab_960.png delete mode 100644 assets/images/dash.png create mode 100644 assets/images/ebe5792b765dbf87_960.png create mode 100644 firebase.json create mode 100644 ios/.gitignore create mode 100644 ios/Flutter/Debug.xcconfig create mode 100644 ios/Flutter/Release.xcconfig create mode 100644 ios/Runner.xcodeproj/project.pbxproj create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner/AppDelegate.swift create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/Runner/Base.lproj/Main.storyboard create mode 100644 ios/Runner/Runner-Bridging-Header.h create mode 100644 ios/RunnerTests/RunnerTests.swift create mode 100644 lib/app.dart delete mode 100644 lib/app/middleware/auth_middleware.dart delete mode 100644 lib/app/modules/cart/bindings/cart_binding.dart delete mode 100644 lib/app/modules/cart/controllers/cart_controller.dart delete mode 100644 lib/app/modules/cart/views/cart_view.dart delete mode 100644 lib/app/modules/categories/bindings/categories_binding.dart delete mode 100644 lib/app/modules/categories/controllers/categories_controller.dart delete mode 100644 lib/app/modules/categories/views/categories_view.dart delete mode 100644 lib/app/modules/checkout/bindings/checkout_binding.dart delete mode 100644 lib/app/modules/checkout/controllers/checkout_controller.dart delete mode 100644 lib/app/modules/checkout/views/checkout_view.dart delete mode 100644 lib/app/modules/dashboard/bindings/dashboard_binding.dart delete mode 100644 lib/app/modules/dashboard/controllers/dashboard_controller.dart delete mode 100644 lib/app/modules/dashboard/views/dashboard_view.dart delete mode 100644 lib/app/modules/home/bindings/home_binding.dart delete mode 100644 lib/app/modules/home/controllers/home_controller.dart delete mode 100644 lib/app/modules/home/views/home_view.dart delete mode 100644 lib/app/modules/login/bindings/login_binding.dart delete mode 100644 lib/app/modules/login/controllers/login_controller.dart delete mode 100644 lib/app/modules/login/views/login_view.dart delete mode 100644 lib/app/modules/my_products/bindings/my_products_binding.dart delete mode 100644 lib/app/modules/my_products/controllers/my_products_controller.dart delete mode 100644 lib/app/modules/my_products/views/my_products_view.dart delete mode 100644 lib/app/modules/product_details/bindings/product_details_binding.dart delete mode 100644 lib/app/modules/product_details/controllers/product_details_controller.dart delete mode 100644 lib/app/modules/product_details/views/product_details_view.dart delete mode 100644 lib/app/modules/products/bindings/products_binding.dart delete mode 100644 lib/app/modules/products/controllers/products_controller.dart delete mode 100644 lib/app/modules/products/views/products_view.dart delete mode 100644 lib/app/modules/profile/bindings/profile_binding.dart delete mode 100644 lib/app/modules/profile/controllers/profile_controller.dart delete mode 100644 lib/app/modules/profile/views/profile_view.dart delete mode 100644 lib/app/modules/register/bindings/register_binding.dart delete mode 100644 lib/app/modules/register/controllers/register_controller.dart delete mode 100644 lib/app/modules/register/views/register_view.dart delete mode 100644 lib/app/modules/root/bindings/root_binding.dart delete mode 100644 lib/app/modules/root/controllers/my_drawer_controller.dart delete mode 100644 lib/app/modules/root/controllers/root_controller.dart delete mode 100644 lib/app/modules/root/views/drawer.dart delete mode 100644 lib/app/modules/root/views/root_view.dart delete mode 100644 lib/app/modules/settings/bindings/settings_binding.dart delete mode 100644 lib/app/modules/settings/controllers/settings_controller.dart delete mode 100644 lib/app/modules/settings/views/settings_view.dart delete mode 100644 lib/app/modules/task_details/bindings/task_details_binding.dart delete mode 100644 lib/app/modules/task_details/controllers/task_details_controller.dart delete mode 100644 lib/app/modules/task_details/views/task_details_view.dart delete mode 100644 lib/app/modules/tasks/bindings/tasks_binding.dart delete mode 100644 lib/app/modules/tasks/controllers/tasks_controller.dart delete mode 100644 lib/app/modules/tasks/views/tasks_view.dart delete mode 100644 lib/app/modules/users/bindings/users_binding.dart delete mode 100644 lib/app/modules/users/controllers/users_controller.dart delete mode 100644 lib/app/modules/users/views/users_view.dart delete mode 100644 lib/app/routes/app_pages.dart delete mode 100644 lib/app/routes/app_routes.dart delete mode 100644 lib/app/routes/screen_extension.dart delete mode 100644 lib/app/widgets/change_password_dialog.dart delete mode 100644 lib/app/widgets/image_picker_button.dart delete mode 100644 lib/app/widgets/login_widgets.dart delete mode 100644 lib/app/widgets/menu_sheet_button.dart delete mode 100644 lib/app/widgets/screen_widget.dart create mode 100644 lib/auth_gate.dart create mode 100644 lib/change_password_screen.dart delete mode 100644 lib/constants.dart create mode 100644 lib/cors.json create mode 100644 lib/firebase_options.dart delete mode 100644 lib/firebase_options.template create mode 100644 lib/home.dart create mode 100644 lib/image_controller.dart create mode 100644 lib/image_uploads.dart delete mode 100644 lib/models/access_level.dart delete mode 100644 lib/models/action_enum.dart delete mode 100644 lib/models/product.dart delete mode 100644 lib/models/role.dart delete mode 100644 lib/models/screens.dart delete mode 100644 lib/services/auth_service.dart delete mode 100644 lib/services/remote_config.dart create mode 100644 lib/sign_in_screen.dart create mode 100644 linux/.gitignore create mode 100644 linux/CMakeLists.txt create mode 100644 linux/flutter/CMakeLists.txt create mode 100644 linux/flutter/generated_plugin_registrant.cc create mode 100644 linux/flutter/generated_plugin_registrant.h create mode 100644 linux/flutter/generated_plugins.cmake create mode 100644 linux/main.cc create mode 100644 linux/my_application.cc create mode 100644 linux/my_application.h create mode 100644 macos/.gitignore create mode 100644 macos/Flutter/Flutter-Debug.xcconfig create mode 100644 macos/Flutter/Flutter-Release.xcconfig create mode 100644 macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 macos/Runner.xcodeproj/project.pbxproj create mode 100644 macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner/AppDelegate.swift create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 macos/Runner/Base.lproj/MainMenu.xib create mode 100644 macos/Runner/Configs/AppInfo.xcconfig create mode 100644 macos/Runner/Configs/Debug.xcconfig create mode 100644 macos/Runner/Configs/Release.xcconfig create mode 100644 macos/Runner/Configs/Warnings.xcconfig create mode 100644 macos/Runner/DebugProfile.entitlements create mode 100644 macos/Runner/MainFlutterWindow.swift create mode 100644 macos/Runner/Release.entitlements create mode 100644 macos/RunnerTests/RunnerTests.swift delete mode 100644 server/.firebaserc delete mode 100644 server/.gitignore delete mode 100644 server/database.rules.json delete mode 100644 server/firebase.json delete mode 100644 server/firestore.indexes.json delete mode 100644 server/firestore.rules delete mode 100644 server/functions/.eslintrc.js delete mode 100644 server/functions/.gitignore delete mode 100644 server/functions/lib/auth.js delete mode 100644 server/functions/lib/auth.js.map delete mode 100644 server/functions/lib/index.js delete mode 100644 server/functions/lib/index.js.map delete mode 100644 server/functions/lib/init.js delete mode 100644 server/functions/lib/init.js.map delete mode 100644 server/functions/package-lock.json delete mode 100644 server/functions/package.json delete mode 100644 server/functions/src/admin.ts delete mode 100644 server/functions/src/auth.ts delete mode 100644 server/functions/src/index.ts delete mode 100644 server/functions/src/init.ts delete mode 100644 server/functions/tsconfig.json delete mode 100644 server/genkit/.eslintrc.js delete mode 100644 server/genkit/.gitignore delete mode 100644 server/genkit/package-lock.json delete mode 100644 server/genkit/package.json delete mode 100644 server/genkit/src/index.ts delete mode 100644 server/genkit/tsconfig.dev.json delete mode 100644 server/genkit/tsconfig.json delete mode 100644 server/get-flutter-fire delete mode 100644 server/package-lock.json delete mode 100644 server/package.json delete mode 100644 server/public/404.html delete mode 100644 server/public/index.html delete mode 100644 server/storage.rules create mode 100644 web/favicon.png create mode 100644 web/icons/Icon-192.png create mode 100644 web/icons/Icon-512.png create mode 100644 web/icons/Icon-maskable-192.png create mode 100644 web/icons/Icon-maskable-512.png create mode 100644 web/index.html create mode 100644 web/manifest.json create mode 100644 windows/.gitignore create mode 100644 windows/CMakeLists.txt create mode 100644 windows/flutter/CMakeLists.txt create mode 100644 windows/flutter/generated_plugin_registrant.cc create mode 100644 windows/flutter/generated_plugin_registrant.h create mode 100644 windows/flutter/generated_plugins.cmake create mode 100644 windows/runner/CMakeLists.txt create mode 100644 windows/runner/Runner.rc create mode 100644 windows/runner/flutter_window.cpp create mode 100644 windows/runner/flutter_window.h create mode 100644 windows/runner/main.cpp create mode 100644 windows/runner/resource.h create mode 100644 windows/runner/resources/app_icon.ico create mode 100644 windows/runner/runner.exe.manifest create mode 100644 windows/runner/utils.cpp create mode 100644 windows/runner/utils.h create mode 100644 windows/runner/win32_window.cpp create mode 100644 windows/runner/win32_window.h diff --git a/.github/workflows/firebase-hosting-merge.yml b/.github/workflows/firebase-hosting-merge.yml deleted file mode 100644 index 0deb698e..00000000 --- a/.github/workflows/firebase-hosting-merge.yml +++ /dev/null @@ -1,20 +0,0 @@ -# This file was auto-generated by the Firebase CLI -# https://github.com/firebase/firebase-tools - -name: Deploy to Firebase Hosting on merge -on: - push: - branches: - - main -jobs: - build_and_deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - run: npm ci && npm run build - - uses: FirebaseExtended/action-hosting-deploy@v0 - with: - repoToken: ${{ secrets.GITHUB_TOKEN }} - firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_FLUTTERFAST_92C25 }} - channelId: live - projectId: flutterfast-92c25 diff --git a/.github/workflows/firebase-hosting-pull-request.yml b/.github/workflows/firebase-hosting-pull-request.yml deleted file mode 100644 index 26a8406f..00000000 --- a/.github/workflows/firebase-hosting-pull-request.yml +++ /dev/null @@ -1,21 +0,0 @@ -# This file was auto-generated by the Firebase CLI -# https://github.com/firebase/firebase-tools - -name: Deploy to Firebase Hosting on PR -on: pull_request -permissions: - checks: write - contents: read - pull-requests: write -jobs: - build_and_preview: - if: ${{ github.event.pull_request.head.repo.full_name == github.repository }} - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - run: npm ci && npm run build - - uses: FirebaseExtended/action-hosting-deploy@v0 - with: - repoToken: ${{ secrets.GITHUB_TOKEN }} - firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_FLUTTERFAST_92C25 }} - projectId: flutterfast-92c25 diff --git a/.gitignore b/.gitignore index c9583676..29a3a501 100644 --- a/.gitignore +++ b/.gitignore @@ -41,124 +41,3 @@ app.*.map.json /android/app/debug /android/app/profile /android/app/release -android/.gitignore -android/build.gradle -android/gradle.properties -android/settings.gradle -android/app/build.gradle -android/app/src/debug/AndroidManifest.xml -android/app/src/main/AndroidManifest.xml -android/app/src/main/java/com/getflutterfire/get_flutter_fire/MainActivity.java -android/app/src/main/res/drawable/launch_background.xml -android/app/src/main/res/drawable-v21/launch_background.xml -android/app/src/main/res/mipmap-hdpi/ic_launcher.png -android/app/src/main/res/mipmap-mdpi/ic_launcher.png -android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -android/app/src/main/res/values/styles.xml -android/app/src/main/res/values-night/styles.xml -android/app/src/profile/AndroidManifest.xml -android/gradle/wrapper/gradle-wrapper.properties -ios/.gitignore -ios/Flutter/Debug.xcconfig -ios/Flutter/Release.xcconfig -ios/Runner/AppDelegate.swift -ios/Runner/Runner-Bridging-Header.h -ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json -ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md -ios/Runner/Base.lproj/LaunchScreen.storyboard -ios/Runner/Base.lproj/Main.storyboard -ios/Runner.xcodeproj/project.pbxproj -ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata -ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings -ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme -ios/Runner.xcworkspace/contents.xcworkspacedata -ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings -ios/RunnerTests/RunnerTests.swift -linux/.gitignore -linux/CMakeLists.txt -linux/main.cc -linux/my_application.cc -linux/my_application.h -linux/flutter/CMakeLists.txt -linux/flutter/generated_plugin_registrant.cc -linux/flutter/generated_plugin_registrant.h -linux/flutter/generated_plugins.cmake -macos/.gitignore -macos/Flutter/Flutter-Debug.xcconfig -macos/Flutter/Flutter-Release.xcconfig -macos/Flutter/GeneratedPluginRegistrant.swift -macos/Runner/AppDelegate.swift -macos/Runner/DebugProfile.entitlements -macos/Runner/MainFlutterWindow.swift -macos/Runner/Release.entitlements -macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json -macos/Runner/Base.lproj/MainMenu.xib -macos/Runner/Configs/AppInfo.xcconfig -macos/Runner/Configs/Debug.xcconfig -macos/Runner/Configs/Release.xcconfig -macos/Runner/Configs/Warnings.xcconfig -macos/Runner.xcodeproj/project.pbxproj -macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme -macos/Runner.xcworkspace/contents.xcworkspacedata -macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -macos/RunnerTests/RunnerTests.swift -web/favicon.png -web/index.html -web/manifest.json -web/icons/Icon-192.png -web/icons/Icon-512.png -web/icons/Icon-maskable-192.png -web/icons/Icon-maskable-512.png -windows/.gitignore -windows/CMakeLists.txt -windows/flutter/CMakeLists.txt -windows/flutter/generated_plugin_registrant.cc -windows/flutter/generated_plugin_registrant.h -windows/flutter/generated_plugins.cmake -windows/runner/CMakeLists.txt -windows/runner/flutter_window.cpp -windows/runner/flutter_window.h -windows/runner/main.cpp -windows/runner/resource.h -windows/runner/runner.exe.manifest -windows/runner/Runner.rc -windows/runner/utils.cpp -windows/runner/utils.h -windows/runner/win32_window.cpp -windows/runner/win32_window.h -windows/runner/resources/app_icon.ico -lib/firebase_options.dart -pubspec.lock -pubspec.lock -server/functions/firebase_options.json diff --git a/.hintrc b/.hintrc deleted file mode 100644 index 156d7c50..00000000 --- a/.hintrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": [ - "development" - ], - "hints": { - "meta-viewport": "off", - "axe/language": [ - "default", - { - "html-has-lang": "off" - } - ], - "typescript-config/consistent-casing": "off", - "typescript-config/strict": "off" - } -} \ No newline at end of file diff --git a/.metadata b/.metadata index 784ce129..90eabcff 100644 --- a/.metadata +++ b/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled and should not be manually edited. version: - revision: "a14f74ff3a1cbd521163c5f03d68113d50af93d3" + revision: "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819" channel: "stable" project_type: app @@ -13,11 +13,26 @@ project_type: app migration: platforms: - platform: root - create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3 - base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3 + create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + - platform: android + create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + - platform: ios + create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + - platform: linux + create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + - platform: macos + create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 - platform: web - create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3 - base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3 + create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + - platform: windows + create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 # User provided section diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index e0120650..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "java.compile.nullAnalysis.mode": "automatic", - "java.configuration.updateBuildConfiguration": "interactive" -} \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 6d272c3e..00000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 Anshuman Das - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md index 451d649a..89b4cf06 100644 --- a/README.md +++ b/README.md @@ -1,132 +1,28 @@ -# get-flutter-fire +# ShareKhanCLG -This codebase provides a boilerplate code utilizing the following three technologies: +**ShareKhanCLG** is a Flutter-based application designed to manage and upload files to Firebase Storage. The app supports user authentication via Firebase, including anonymous sign-in, and provides features like image selection and file uploads. It also includes user profile management and a change password option. -1. Flutter 3.0 - For UX and uses Dart languange. See [https://flutter.dev/] -2. GetX - State management for Flutter. See [https://github.com/jonataslaw/getx/tree/4.6.1] -3. Firebase - For Backend as a Service. See [https://firebase.google.com/] - 1. Easy Authentication flow - 2. Server side functions - 3. Remote Configurations which can be used for A/B testing -This was created as part of my own learning process and you will find that git commits were made according to the Steps listed below. You can use the git version history to check each commit and learn step by step, as I did. -I am also using this codebase as an experiment towards hiring people (freshers especially but not limited to them) for my development team. If you are in Mumbai and are interested to join my team, you can use this codebase in the following manner: +## Features -* Fork the codebase -* Add your own firebase_options.dart (follow steps and see firebase_options.template) -* **Build your own application using this as a base (integrating any existing project of yours also works)**, or complete a TODO or fix a bug (only if you have no other ideas) -* Send me a Pull Request. Mention a way of connecting with you in the commit message along with details of commit. Also modify ReadMe to say what you have changed in detail. -* I will go through the request and then connect with you if I find the entry to be interesting and take an interview round. +- **User Authentication:** Users can sign in using Firebase authentication. Both registered and anonymous sign-ins are supported. +- **File Upload:** Upload images and documents to Firebase Storage, with automatic categorization into folders. +- **Profile Management:** Manage user profile details. +- **Change Password:** Secure password change option for authenticated users. +- **Anonymous Restrictions:** Anonymous users cannot upload files or access certain features until they create an account -## The Steps +Contact info +Niraj kotve (MIT WPU) +7247328001 +neerajkotve19@gmail.com +1032210710@mitwpu.edu.in -Step 1: Use Get CLI [https://pub.dev/packages/get_cli] +## Installation -`get create project` +To get started with this project, clone the repository and install the required dependencies: -Step 2: Copy code from [https://github.com/jonataslaw/getx/tree/4.6.1/example_nav2/lib] - -Step 3: Integrate FlutterFire Authentication - -- Tutorials [https://firebase.google.com/codelabs/firebase-auth-in-flutter-apps#0] for inspiration -- Firebase Documentation [https://firebase.google.com/docs/auth/flutter/start] -- Blog [www.medium.com/TBD] -- To compile the code ensure that you generate your own firebase_options.dart by running - - `flutterfire configure` - -Step 4: Add Google OAuth [https://firebase.google.com/codelabs/firebase-auth-in-flutter-apps#6]. Note ensure you do the steps for Android and iOS as the code for it is not in Github - -Step 5: Add Guest User/Anonymous login with a Cart and Checkout use case [https://firebase.google.com/docs/auth/flutter/anonymous-auth] - -* delete unlinked anonymous user post logout - -Step 6: Add ImagePicker and Firebase Storage for profile image - -* Create PopupMenu button for web [https://api.flutter.dev/flutter/material/PopupMenuButton-class.html] -* BottomSheet for phones and single file button for desktops -* GetX and Image Picker [https://stackoverflow.com/questions/66559553/flutter-imagepicker-with-getx] -* Add FilePicker [https://medium.com/@onuaugustine07/pick-any-file-file-picker-flutter-f82c0144e27c] -* Firebase Storage [https://mercyjemosop.medium.com/select-and-upload-images-to-firebase-storage-flutter-6fac855970a9] and [https://firebase.google.com/docs/storage/flutter/start] - - Modify the Firebase Rules - `service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow write: if request.auth.uid != null; allow read: if true; } } }` - - Fix CORS [https://stackoverflow.com/questions/37760695/firebase-storage-and-access-control-allow-origin] -* PList additions [https://medium.com/unitechie/flutter-tutorial-image-picker-from-camera-gallery-c27af5490b74] - -Step 7: Additional Auth flow items - -1. Add a Change Password Screen. The Flutter Fire package does not have this screen. -2. TODO: Add ReCaptcha to login flow for password authentication for Web only - * Phone Auth on Web has a ReCaptcha already [https://firebase.flutter.dev/docs/auth/phone/]. Tried to use that library but it is very cryptic. - * Use the following instead [https://stackoverflow.com/questions/60675575/how-to-implement-recaptcha-into-a-flutter-app] or [https://medium.com/cloudcraftz/securing-your-flutter-web-app-with-google-recaptcha-b556c567f409] or [https://pub.dev/packages/g_recaptcha_v3] -3. TODO: Ensure Reset Password has Email verification -4. TODO: Add Phone verification [https://firebase.google.com/docs/auth/flutter/phone-auth] - * See [https://github.com/firebase/flutterfire/issues/4189]. -5. TODO: Add 2FA with SMS Pin. This screen is available in the Flutter Fire package - -Step 8: Add Firebase Emulator to test on laptop instead of server so that we can use Functions without upgrading the plan to Blaze. See [https://firebase.google.com/docs/emulator-suite/install_and_configure] - -Step 9: Add User Roles using Custom Claims. This requires upgrade of plan as we need to use Firebase Functions. Instead using Emulator. - -1. In Emulator we can add user via http://127.0.0.1:4000/auth and add custom claim via UI as {"role":"admin"}. The effect is shown via Product page in Nav instead of Cart page for admin user. -2. Add Function to add the custom claim to make the first user the admin using the Admin SDK -3. Registeration form to collect some data post signUp and enforce email verification from Client side. - - * Note! for Emulator check the console to verify using the link provided as email is not sent. -4. Enforcing verify email using a button which appears when SignIn fails due to non verification. - - * Fixed the error handling message during login. - * Coverted server side to Typescript - * Enabled Resend verification mail button - * Approach 1 - Use Email Link Authentication and signIn, assuming it marks email as verified also. We cannot send the verification mail as is, since that can be sent only if signed in (which was allowed only for first login post signup) - * Refer https://firebase.google.com/docs/auth/flutter/email-link-auth - * TODO Enable Deep Linking: According to https://firebase.google.com/docs/dynamic-links/flutter/receive, the Flutter feature is being deprecated and we should use the AppLinks (Android), UniversalLinks(iOS) instead. Leaving this for future as adding complexity. - * We could use the server side handling instead of deep linking. See [https://firebase.google.com/docs/auth/custom-email-handler?hl=en&authuser=0#web]. However, this requires changing the email template for the URL which is not possible in Emulator. Using the continueURL instead does not work as oobCode is already expired. This handling also uses the web client sdk. Thus it is better to go with the below method instead. - * Approach 2 - (Hack) send a create request with suffix ".verify" added in email when button clicked. Use the server side beforeCreate to catch this and send verification mail - * Note that the Server side beforeCreate function can also bypass user creation till verification but the user record (esp password) needs to be stored anyways, so bypassing user creation is not a good idea. Instead, we should use the verified tag in subsequent processing - * Sending emails from server side is possible but by using the web client SDK. -5. TODO: Other Items - - * TODO: Using autocomplete for emails is throwing error log in terminal. No impact but need to fix when all is done. - * TODO: Add a job that removes all unverified users after a while automatically. This could be useful if you were victim of bot attacks, but adding the Recaptcha is better precaution. See [https://stackoverflow.com/questions/67148672/how-to-delete-unverified-e-mail-addresses-in-firebase-authentication-flutter/67150606#67150606] -6. Added Roles of Buyer and Seller. - - 1. Added Access level in increasing order of role order => Buyer then Seller then Admin - 2. Created Navigation for each of Admin, Buyer, Seller screens - 3. Allowed switch from lower role Navigation to Navigation view till the given role of the user - -Step 10: Firebase Remote Config for A/B testing. See [https://firebase.google.com/docs/remote-config] - -1. Complete the Screen enum based Navigation framework -2. Config useBottomSheetForProfileOptions for Navigation element to be one of the following - * False: Drawer for Account, Settings, Sign Out - * True: Hamburger that opens BottomSheet (Context Menu in larger screen) for the same options -3. TODO: Config for adding Search Bar at the Top vs a Bottom Navigation button - -Step 11: TODO: CRUD - -* Users request role upgrade -* Add this request data to Firebase Datastore -* Create ListView with slidable tiles for approvals -* Admin SDK used by admin user via workflow on this request data and is approved from app - * Allow a Plan attribute via Custome Claims (e.g. Premium user flag) for Buyer and Seller, to add features which are not Navigation linked. Add a button Upgrade to Plan in Drawer that leads to Payment screen. Also certain aspects of premium plan can be visible that leads to upgrade plan screen via middleware -* Nested Category, Sub-Category tree creation - -Step 12: TODO: Theming and Custom Settings - -* Add Persona (like that in Netflix) and create a Persona selection only for Buyer Role -* Add Minimal (Three Color Gradient Pallette) Material Theme. Align it with Persona Templates (like Kids Template in Netflix) -* Dark theme toggle setting based on each Persona of the logged in User - -Step 13: TODO: Large vs Small screen responsiveness - -* Drawer: Triggered by Top Left Icon (App Logo). For iOS this icon changes to back button when required. Contains allowed Role List, Screens specified as Drawer. Becomes Left Side Navigation for Horizontal Screens. Can have additional extreme left vertical Navigation Strip. Bottom Navigation Bar also folds into this strip in Horizontal Screens. -* Top Right Icon: used for Login and post Login triggers BottomSheet/Context Menu for Persona Change, Profile, Settings, Change Password, Logout -* Search Bar (Toggle Button for phones) on Top Center with Title -* Status Bottom Bar for desktops only instead of SnackBars -* FAB vs Main Menu - -Step 14: TODO: Make own login flow screens. Remove firebase library reference from all but auth_service +```bash +git clone https://github.com/your-username/sharekhanclg.git +cd sharekhanclg +flutter pub get diff --git a/analysis_options.yaml b/analysis_options.yaml index 72b295f6..0d290213 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,7 +1,28 @@ -analyzer: - errors: - constant_identifier_names: ignore +# 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/android/.gitignore b/android/.gitignore new file mode 100644 index 00000000..55afd919 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/to/reference-keystore +key.properties +**/*.keystore +**/*.jks diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 00000000..cc581a19 --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,46 @@ +plugins { + id "com.android.application" + // START: FlutterFire Configuration + id 'com.google.gms.google-services' + // END: FlutterFire Configuration + id "kotlin-android" + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id "dev.flutter.flutter-gradle-plugin" +} + +android { + namespace = "com.example.sharekhanclg" + compileSdk = 34 // Update this to 34 + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "com.example.sharekhanclg" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = 23 // Keep this as required + targetSdk = 34 // Update this to 34 to match the compileSdkVersion + versionCode = 1 + versionName = "1.0" + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_1_8 + } + + 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 = "../.." +} diff --git a/android/app/google-services.json b/android/app/google-services.json new file mode 100644 index 00000000..5229e938 --- /dev/null +++ b/android/app/google-services.json @@ -0,0 +1,29 @@ +{ + "project_info": { + "project_number": "3991487808", + "project_id": "sharekhanclg", + "storage_bucket": "sharekhanclg.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:3991487808:android:b94b49e0ac05c492ea66a5", + "android_client_info": { + "package_name": "com.example.sharekhanclg" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyC36dmVwt-cECpeaH0sbgotmoqNYkdk1vw" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000..399f6981 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..0e68b645 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/kotlin/com/example/sharekhanclg/MainActivity.kt b/android/app/src/main/kotlin/com/example/sharekhanclg/MainActivity.kt new file mode 100644 index 00000000..77fef05c --- /dev/null +++ b/android/app/src/main/kotlin/com/example/sharekhanclg/MainActivity.kt @@ -0,0 +1,5 @@ +package com.example.sharekhanclg + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 00000000..f74085f3 --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 00000000..304732f8 --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 00000000..06952be7 --- /dev/null +++ b/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..cb1ef880 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 00000000..399f6981 --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 00000000..c860ac94 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,20 @@ + + +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/android/gradle.properties b/android/gradle.properties new file mode 100644 index 00000000..25971708 --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true +android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..e1ca574e --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 00000000..7fb86d70 --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,28 @@ +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 + }() + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "7.3.0" apply false + // START: FlutterFire Configuration + id "com.google.gms.google-services" version "4.3.15" apply false + // END: FlutterFire Configuration + id "org.jetbrains.kotlin.android" version "1.7.10" apply false +} + +include ":app" diff --git a/assets/icons/logo.png b/assets/icons/logo.png deleted file mode 100644 index 77ffea4243118e4e73d5342b7101e2ce32d13e73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17494 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 literal 0 HcmV?d00001 diff --git a/assets/images/dash.png b/assets/images/dash.png deleted file mode 100644 index 6ccb3f390078f9482957e860d32fef22f72faa18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386796 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�MY+02|B4_ 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 p`@Kp?d`1 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%0A#%_THjcAbGp<&Pqg)aTn=W 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

H{h09VD{09oW;#j#h)z}cY58%- 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
+)d$*!G4J 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 NMdyE3{=@g)zX1$HA~^s6 diff --git a/assets/images/ebe5792b765dbf87_960.png b/assets/images/ebe5792b765dbf87_960.png new file mode 100644 index 0000000000000000000000000000000000000000..9253c5cabc037dfc2b18edd4a031beb61a33300f GIT binary patch literal 92229 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 R7Tt3<^3uvu6%vMl{|^_$U~vEd literal 0 HcmV?d00001 diff --git a/assets/images/flutterfire_300x.png b/assets/images/flutterfire_300x.png index 604593b8e4814998fc8e6d5853a96fbb9176708e..0e804c1c1dfc7ed57d8db0635112936d1db61536 100644 GIT binary patch literal 65967 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 bGdK>SbTdSxVpdd(mFengA+A+iaftj6Cm9@S literal 3425 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 + + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..f9b0d7c5 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..8e3ca5df --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..f9b0d7c5 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift new file mode 100644 index 00000000..62666446 --- /dev/null +++ b/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Flutter +import UIKit + +@main +@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/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..d36b1fab --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "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/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..797d452e458972bab9d994556c8305db4c827017 GIT binary patch literal 406 zcmV;H0crk;P))>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed2d933e1120817fe9182483a228007b18ab6ae GIT binary patch literal 450 zcmV;z0X_bSP)iGWQ_5NJQ_~rNh*z)}eT%KUb z`7gNk0#AwF^#0T0?hIa^`~Ck;!}#m+_uT050aTR(J!bU#|IzRL%^UsMS#KsYnTF*!YeDOytlP4VhV?b} z%rz_<=#CPc)tU1MZTq~*2=8~iZ!lSa<{9b@2Jl;?IEV8)=fG217*|@)CCYgFze-x? zIFODUIA>nWKpE+bn~n7;-89sa>#DR>TSlqWk*!2hSN6D~Qb#VqbP~4Fk&m`@1$JGr zXPIdeRE&b2Thd#{MtDK$px*d3-Wx``>!oimf%|A-&-q*6KAH)e$3|6JV%HX{Hig)k suLT-RhftRq8b9;(V=235Wa|I=027H2wCDra;{X5v07*qoM6N<$f;9x^2LJ#7 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd7b0099ca80c806f8fe495613e8d6c69460d76 GIT binary patch literal 282 zcmV+#0p(^bcu7P-R4C8Q z&e;xxFbF_Vrezo%_kH*OKhshZ6BFpG-Y1e10`QXJKbND7AMQ&cMj60B5TNObaZxYybcN07*qoM6N<$g3m;S%K!iX literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fe730945a01f64a61e2235dbe3f45b08f7729182 GIT binary patch literal 462 zcmV;<0WtoGP)-}iV`2<;=$?g5M=KQbZ{F&YRNy7Nn@%_*5{gvDM0aKI4?ESmw z{NnZg)A0R`+4?NF_RZexyVB&^^ZvN!{I28tr{Vje;QNTz`dG&Jz0~Ek&f2;*Z7>B|cg}xYpxEFY+0YrKLF;^Q+-HreN0P{&i zK~zY`?b7ECf-n?@;d<&orQ*Q7KoR%4|C>{W^h6@&01>0SKS`dn{Q}GT%Qj_{PLZ_& zs`MFI#j-(>?bvdZ!8^xTwlY{qA)T4QLbY@j(!YJ7aXJervHy6HaG_2SB`6CC{He}f zHVw(fJWApwPq!6VY7r1w-Fs)@ox~N+q|w~e;JI~C4Vf^@d>Wvj=fl`^u9x9wd9 zR%3*Q+)t%S!MU_`id^@&Y{y7-r98lZX0?YrHlfmwb?#}^1b{8g&KzmkE(L>Z&)179 zp<)v6Y}pRl100G2FL_t(o!|l{-Q-VMg#&MKg7c{O0 z2wJImOS3Gy*Z2Qifdv~JYOp;v+U)a|nLoc7hNH;I$;lzDt$}rkaFw1mYK5_0Q(Sut zvbEloxON7$+HSOgC9Z8ltuC&0OSF!-mXv5caV>#bc3@hBPX@I$58-z}(ZZE!t-aOG zpjNkbau@>yEzH(5Yj4kZiMH32XI!4~gVXNnjAvRx;Sdg^`>2DpUEwoMhTs_st8pKG z(%SHyHdU&v%f36~uERh!bd`!T2dw;z6PrOTQ7Vt*#9F2uHlUVnb#ev_o^fh}Dzmq} zWtlk35}k=?xj28uO|5>>$yXadTUE@@IPpgH`gJ~Ro4>jd1IF|(+IX>8M4Ps{PNvmI zNj4D+XgN83gPt_Gm}`Ybv{;+&yu-C(Grdiahmo~BjG-l&mWM+{e5M1sm&=xduwgM9 z`8OEh`=F3r`^E{n_;%9weN{cf2%7=VzC@cYj+lg>+3|D|_1C@{hcU(DyQG_BvBWe? zvTv``=%b1zrol#=R`JB)>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..502f463a9bc882b461c96aadf492d1729e49e725 GIT binary patch literal 586 zcmV-Q0=4~#P)+}#`wDE{8-2Mebf5<{{PqV{TgVcv*r8?UZ3{-|G?_}T*&y;@cqf{ z{Q*~+qr%%p!1pS*_Uicl#q9lc(D`!D`LN62sNwq{oYw(Wmhk)k<@f$!$@ng~_5)Ru z0Z)trIA5^j{DIW^c+vT2%lW+2<(RtE2wR;4O@)Tm`Xr*?A(qYoM}7i5Yxw>D(&6ou zxz!_Xr~yNF+waPe00049Nkl*;a!v6h%{rlvIH#gW3s8p;bFr=l}mRqpW2h zw=OA%hdyL~z+UHOzl0eKhEr$YYOL-c-%Y<)=j?(bzDweB7{b+%_ypvm_cG{SvM=DK zhv{K@m>#Bw>2W$eUI#iU)Wdgs8Y3U+A$Gd&{+j)d)BmGKx+43U_!tik_YlN)>$7G! zhkE!s;%oku3;IwG3U^2kw?z+HM)jB{@zFhK8P#KMSytSthr+4!c(5c%+^UBn`0X*2 zy3(k600_CSZj?O$Qu%&$;|TGUJrptR(HzyIx>5E(2r{eA(<6t3e3I0B)7d6s7?Z5J zZ!rtKvA{MiEBm&KFtoifx>5P^Z=vl)95XJn()aS5%ad(s?4-=Tkis9IGu{`Fy8r+H07*qoM6N<$f20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec303439225b78712f49115768196d8d76f6790 GIT binary patch literal 862 zcmV-k1EKthP)20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e9f5fea27c705180eb716271f41b582e76dcbd90 GIT binary patch literal 1674 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0467bf12aa4d28f374bb26596605a46dcbb3e7c8 GIT binary patch literal 1418 zcmV;51$Fv~P)q zKfU)WzW*n(@|xWGCA9ScMt*e9`2kdxPQ&&>|-UCa7_51w+ zLUsW@ZzZSW0y$)Hp~e9%PvP|a03ks1`~K?q{u;6NC8*{AOqIUq{CL&;p56Lf$oQGq z^={4hPQv)y=I|4n+?>7Fim=dxt1 z2H+Dm+1+fh+IF>G0SjJMkQQre1x4|G*Z==(Ot&kCnUrL4I(rf(ucITwmuHf^hXiJT zkdTm&kdTm&kdTm&kdP`esgWG0BcWCVkVZ&2dUwN`cgM8QJb`Z7Z~e<&Yj2(}>Tmf` zm1{eLgw!b{bXkjWbF%dTkTZEJWyWOb##Lfw4EK2}<0d6%>AGS{po>WCOy&f$Tay_> z?NBlkpo@s-O;0V%Y_Xa-G#_O08q5LR*~F%&)}{}r&L%Sbs8AS4t7Y0NEx*{soY=0MZExqA5XHQkqi#4gW3 zqODM^iyZl;dvf)-bOXtOru(s)Uc7~BFx{w-FK;2{`VA?(g&@3z&bfLFyctOH!cVsF z7IL=fo-qBndRUm;kAdXR4e6>k-z|21AaN%ubeVrHl*<|s&Ax@W-t?LR(P-24A5=>a z*R9#QvjzF8n%@1Nw@?CG@6(%>+-0ASK~jEmCV|&a*7-GKT72W<(TbSjf)&Eme6nGE z>Gkj4Sq&2e+-G%|+NM8OOm5zVl9{Z8Dd8A5z3y8mZ=4Bv4%>as_{9cN#bm~;h>62( zdqY93Zy}v&c4n($Vv!UybR8ocs7#zbfX1IY-*w~)p}XyZ-SFC~4w>BvMVr`dFbelV{lLL0bx7@*ZZdebr3`sP;? zVImji)kG)(6Juv0lz@q`F!k1FE;CQ(D0iG$wchPbKZQELlsZ#~rt8#90Y_Xh&3U-< z{s<&cCV_1`^TD^ia9!*mQDq& zn2{r`j};V|uV%_wsP!zB?m%;FeaRe+X47K0e+KE!8C{gAWF8)lCd1u1%~|M!XNRvw zvtqy3iz0WSpWdhn6$hP8PaRBmp)q`#PCA`Vd#Tc$@f1tAcM>f_I@bC)hkI9|o(Iqv zo}Piadq!j76}004RBio<`)70k^`K1NK)q>w?p^C6J2ZC!+UppiK6&y3Kmbv&O!oYF z34$0Z;QO!JOY#!`qyGH<3Pd}Pt@q*A0V=3SVtWKRR8d8Z&@)3qLPA19LPA19LPEUC YUoZo%k(ykuW&i*H07*qoM6N<$f+CH{y8r+H literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 00000000..0bedcf2f --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "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/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 00000000..89c2725b --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# 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/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..f2e259c7 --- /dev/null +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 00000000..f3c28516 --- /dev/null +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index fc7f1dd4..d81a58f4 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -5,7 +5,7 @@ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - Get Flutter Fire + Sharekhanclg CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -13,7 +13,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - get_flutter_fire + sharekhanclg CFBundlePackageType APPL CFBundleShortVersionString @@ -45,11 +45,5 @@ UIApplicationSupportsIndirectInputEvents - NSCameraUsageDescription - Allow access to camera - NSMicrophoneUsageDescription - Allow access to microphone for video recording - NSPhotoLibraryUsageDescription - Allow access to photo library diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 00000000..308a2a56 --- /dev/null +++ b/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/ios/RunnerTests/RunnerTests.swift b/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000..86a7c3b1 --- /dev/null +++ b/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +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/lib/app.dart b/lib/app.dart new file mode 100644 index 00000000..784cd0a8 --- /dev/null +++ b/lib/app.dart @@ -0,0 +1,15 @@ +import 'package:flutter/material.dart'; +import 'auth_gate.dart'; + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + @override + Widget build(BuildContext context) { + return MaterialApp( + theme: ThemeData( + primarySwatch: Colors.blue, + ), + home: const AuthGate(), + ); + } +} \ No newline at end of file diff --git a/lib/app/middleware/auth_middleware.dart b/lib/app/middleware/auth_middleware.dart deleted file mode 100644 index 827dd96c..00000000 --- a/lib/app/middleware/auth_middleware.dart +++ /dev/null @@ -1,94 +0,0 @@ -// ignore_for_file: avoid_print -import 'package:get/get.dart'; -import 'package:get_flutter_fire/models/role.dart'; -import 'package:get_flutter_fire/services/auth_service.dart'; -import 'package:get_flutter_fire/app/routes/app_pages.dart'; - -Future loginVerify(bool check, GetNavConfig route, - Future Function(GetNavConfig) redirector) async { - final newRoute = route.location == Routes.LOGIN - ? Routes.LOGIN - : Routes.LOGIN_THEN(route.location); - if (check) { - return GetNavConfig.fromRoute(newRoute); - } - - // Below could be used if the login was happening without verification. - // This will never get reached if server is sending error in login due to non verification - // With customClaims status == "creating", it will reach here for SignUp case only - if (!AuthService.to.isEmailVerified && !AuthService.to.registered.value) { - return GetNavConfig.fromRoute(route.location == Routes.REGISTER - ? Routes.REGISTER - : Routes.REGISTER_THEN(route.location)); - } - - return await redirector(route); -} - -// class EnsureAuthMiddleware extends GetMiddleware { -// @override -// Future redirectDelegate(GetNavConfig route) async { -// // you can do whatever you want here -// // but it's preferable to make this method fast - -// return await loginVerify( -// !AuthService.to.isLoggedInValue, route, super.redirectDelegate); -// } -// } - -class EnsureNotAuthedOrGuestMiddleware extends GetMiddleware { - //AccessLevel.notAuthed - @override - Future redirectDelegate(GetNavConfig route) async { - if (AuthService.to.isLoggedInValue && !AuthService.to.isAnon) { - //NEVER navigate to auth screen, when user is already authed - return GetNavConfig.fromRoute( - AuthService.to.registered.value ? Routes.HOME : Routes.REGISTER); - } - return await super.redirectDelegate(route); - } -} - -class EnsureAuthedAndNotGuestMiddleware extends GetMiddleware { - //AccessLevel.authenticated - @override - Future redirectDelegate(GetNavConfig route) async { - return await loginVerify( - !AuthService.to.isLoggedInValue || AuthService.to.isAnon, - route, - super.redirectDelegate); - } -} - -class EnsureRoleMiddleware extends GetMiddleware { - //AccessLevel.roleBased - Role role; - EnsureRoleMiddleware(this.role); - - @override - Future redirectDelegate(GetNavConfig route) async { - if (!AuthService.to.isLoggedInValue || !AuthService.to.hasRole(role)) { - final newRoute = Routes.LOGIN_THEN(route.location); - return GetNavConfig.fromRoute(newRoute); - } - return await super.redirectDelegate(route); - } -} - -class EnsureAuthOrGuestMiddleware extends GetMiddleware { - //AccessLevel.guest - @override - Future redirectDelegate(GetNavConfig route) async { - // you can do whatever you want here - // but it's preferable to make this method fast - // In this case this is taking human input and is not fast - - if (!AuthService.to.isLoggedInValue) { - bool? value = await AuthService.to.guest(); - if (value != true) { - return GetNavConfig.fromRoute(Routes.LOGIN); - } - } - return await super.redirectDelegate(route); - } -} diff --git a/lib/app/modules/cart/bindings/cart_binding.dart b/lib/app/modules/cart/bindings/cart_binding.dart deleted file mode 100644 index 009c52ae..00000000 --- a/lib/app/modules/cart/bindings/cart_binding.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:get/get.dart'; - -import '../controllers/cart_controller.dart'; - -class CartBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut( - () => CartController(), - ); - } -} diff --git a/lib/app/modules/cart/controllers/cart_controller.dart b/lib/app/modules/cart/controllers/cart_controller.dart deleted file mode 100644 index c938ec4c..00000000 --- a/lib/app/modules/cart/controllers/cart_controller.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:get/get.dart'; - -class CartController extends GetxController { - //TODO: Implement CartController - - final count = 0.obs; - @override - void onInit() { - super.onInit(); - } - - @override - void onReady() { - super.onReady(); - } - - @override - void onClose() { - super.onClose(); - } - - void increment() => count.value++; -} diff --git a/lib/app/modules/cart/views/cart_view.dart b/lib/app/modules/cart/views/cart_view.dart deleted file mode 100644 index 3e048c79..00000000 --- a/lib/app/modules/cart/views/cart_view.dart +++ /dev/null @@ -1,27 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:get/get.dart'; -import 'package:get_flutter_fire/app/routes/app_pages.dart'; -import '../../../widgets/screen_widget.dart'; -import '../../../../services/auth_service.dart'; -import '../controllers/cart_controller.dart'; - -class CartView extends GetView { - const CartView({super.key}); - @override - Widget build(BuildContext context) { - return ScreenWidget( - appBar: AppBar( - title: Text('${AuthService.to.userName} Cart'), - centerTitle: true, - ), - body: const Center( - child: Text( - 'CartView is working', - style: TextStyle(fontSize: 20), - ), - ), - screen: screen!, - ); - } -} diff --git a/lib/app/modules/categories/bindings/categories_binding.dart b/lib/app/modules/categories/bindings/categories_binding.dart deleted file mode 100644 index 06e278c8..00000000 --- a/lib/app/modules/categories/bindings/categories_binding.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:get/get.dart'; - -import '../controllers/categories_controller.dart'; - -class CategoriesBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut( - () => CategoriesController(), - ); - } -} diff --git a/lib/app/modules/categories/controllers/categories_controller.dart b/lib/app/modules/categories/controllers/categories_controller.dart deleted file mode 100644 index 6612e511..00000000 --- a/lib/app/modules/categories/controllers/categories_controller.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:get/get.dart'; - -class CategoriesController extends GetxController { - //TODO: Implement CategoriesController - - final count = 0.obs; - @override - void onInit() { - super.onInit(); - } - - @override - void onReady() { - super.onReady(); - } - - @override - void onClose() { - super.onClose(); - } - - void increment() => count.value++; -} diff --git a/lib/app/modules/categories/views/categories_view.dart b/lib/app/modules/categories/views/categories_view.dart deleted file mode 100644 index 97bfef38..00000000 --- a/lib/app/modules/categories/views/categories_view.dart +++ /dev/null @@ -1,24 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:get/get.dart'; - -import '../controllers/categories_controller.dart'; - -class CategoriesView extends GetView { - const CategoriesView({super.key}); - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: const Text('CategoriesView'), - centerTitle: true, - ), - body: const Center( - child: Text( - 'CategoriesView is working', - style: TextStyle(fontSize: 20), - ), - ), - ); - } -} diff --git a/lib/app/modules/checkout/bindings/checkout_binding.dart b/lib/app/modules/checkout/bindings/checkout_binding.dart deleted file mode 100644 index 42202b56..00000000 --- a/lib/app/modules/checkout/bindings/checkout_binding.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:get/get.dart'; - -import '../controllers/checkout_controller.dart'; - -class CheckoutBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut( - () => CheckoutController(), - ); - } -} diff --git a/lib/app/modules/checkout/controllers/checkout_controller.dart b/lib/app/modules/checkout/controllers/checkout_controller.dart deleted file mode 100644 index aa1265f6..00000000 --- a/lib/app/modules/checkout/controllers/checkout_controller.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:get/get.dart'; - -class CheckoutController extends GetxController { - //TODO: Implement CheckoutController - - final count = 0.obs; - @override - void onInit() { - super.onInit(); - } - - @override - void onReady() { - super.onReady(); - } - - @override - void onClose() { - super.onClose(); - } - - void increment() => count.value++; -} diff --git a/lib/app/modules/checkout/views/checkout_view.dart b/lib/app/modules/checkout/views/checkout_view.dart deleted file mode 100644 index b8b17072..00000000 --- a/lib/app/modules/checkout/views/checkout_view.dart +++ /dev/null @@ -1,24 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:get/get.dart'; - -import '../controllers/checkout_controller.dart'; - -class CheckoutView extends GetView { - const CheckoutView({super.key}); - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: const Text('CheckoutView'), - centerTitle: true, - ), - body: const Center( - child: Text( - 'CheckoutView is working', - style: TextStyle(fontSize: 20), - ), - ), - ); - } -} diff --git a/lib/app/modules/dashboard/bindings/dashboard_binding.dart b/lib/app/modules/dashboard/bindings/dashboard_binding.dart deleted file mode 100644 index da48f13c..00000000 --- a/lib/app/modules/dashboard/bindings/dashboard_binding.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:get/get.dart'; - -import '../controllers/dashboard_controller.dart'; - -class DashboardBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut( - () => DashboardController(), - ); - } -} diff --git a/lib/app/modules/dashboard/controllers/dashboard_controller.dart b/lib/app/modules/dashboard/controllers/dashboard_controller.dart deleted file mode 100644 index 24d91a16..00000000 --- a/lib/app/modules/dashboard/controllers/dashboard_controller.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'dart:async'; - -import 'package:get/get.dart'; - -class DashboardController extends GetxController { - final now = DateTime.now().obs; - @override - void onReady() { - super.onReady(); - Timer.periodic( - const Duration(seconds: 1), - (timer) { - now.value = DateTime.now(); - }, - ); - } -} diff --git a/lib/app/modules/dashboard/views/dashboard_view.dart b/lib/app/modules/dashboard/views/dashboard_view.dart deleted file mode 100644 index f475030f..00000000 --- a/lib/app/modules/dashboard/views/dashboard_view.dart +++ /dev/null @@ -1,28 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - -import '../controllers/dashboard_controller.dart'; - -class DashboardView extends GetView { - const DashboardView({super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Center( - child: Obx( - () => Column( - mainAxisSize: MainAxisSize.min, - children: [ - const Text( - 'DashboardView is working', - style: TextStyle(fontSize: 20), - ), - Text('Time: ${controller.now.value.toString()}'), - ], - ), - ), - ), - ); - } -} diff --git a/lib/app/modules/home/bindings/home_binding.dart b/lib/app/modules/home/bindings/home_binding.dart deleted file mode 100644 index d08a80d4..00000000 --- a/lib/app/modules/home/bindings/home_binding.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:get/get.dart'; - -import '../controllers/home_controller.dart'; - -class HomeBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut( - () => HomeController(), - ); - } -} diff --git a/lib/app/modules/home/controllers/home_controller.dart b/lib/app/modules/home/controllers/home_controller.dart deleted file mode 100644 index f058de2a..00000000 --- a/lib/app/modules/home/controllers/home_controller.dart +++ /dev/null @@ -1,14 +0,0 @@ -import 'package:get/get.dart'; - -import '../../../../models/role.dart'; -import '../../../../services/auth_service.dart'; - -class HomeController extends GetxController { - final Rx chosenRole = Rx(AuthService.to.maxRole); - - // Role get role => AuthService.to.maxRole; - - get isBuyer => chosenRole.value == Role.buyer; - - get isAdmin => chosenRole.value == Role.admin; -} diff --git a/lib/app/modules/home/views/home_view.dart b/lib/app/modules/home/views/home_view.dart deleted file mode 100644 index 0cfc040d..00000000 --- a/lib/app/modules/home/views/home_view.dart +++ /dev/null @@ -1,34 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; -import '../../../routes/app_pages.dart'; -import '../../../widgets/screen_widget.dart'; -import '../controllers/home_controller.dart'; - -class HomeView extends GetView { - const HomeView({super.key}); - - @override - Widget build(BuildContext context) { - return GetRouterOutlet.builder( - builder: (context, delegate, currentRoute) { - var arg = Get.rootDelegate.arguments(); - if (arg != null) { - controller.chosenRole.value = arg["role"]; - } - var route = controller.chosenRole.value.tabs[0].route; - //This router outlet handles the appbar and the bottom navigation bar - return ScreenWidget( - screen: screen!, - body: GetRouterOutlet( - initialRoute: route, - // anchorRoute: Routes.HOME, - key: Get.nestedKey(route), - ), - role: controller.chosenRole.value, - delegate: delegate, - currentRoute: currentRoute, - ); - }, - ); - } -} diff --git a/lib/app/modules/login/bindings/login_binding.dart b/lib/app/modules/login/bindings/login_binding.dart deleted file mode 100644 index ac119f4a..00000000 --- a/lib/app/modules/login/bindings/login_binding.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:get/get.dart'; - -import '../controllers/login_controller.dart'; - -class LoginBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut( - () => LoginController(), - ); - } -} diff --git a/lib/app/modules/login/controllers/login_controller.dart b/lib/app/modules/login/controllers/login_controller.dart deleted file mode 100644 index 5178fec9..00000000 --- a/lib/app/modules/login/controllers/login_controller.dart +++ /dev/null @@ -1,20 +0,0 @@ -import 'package:get/get.dart'; - -import '../../../../services/auth_service.dart'; - -class LoginController extends GetxController { - static AuthService get to => Get.find(); - - final Rx showReverificationButton = Rx(false); - - bool get isRobot => AuthService.to.robot.value == true; - - set robot(bool v) => AuthService.to.robot.value = v; - - bool get isLoggedIn => AuthService.to.isLoggedInValue; - - bool get isAnon => AuthService.to.isAnon; - - bool get isRegistered => - AuthService.to.registered.value || AuthService.to.isEmailVerified; -} diff --git a/lib/app/modules/login/views/login_view.dart b/lib/app/modules/login/views/login_view.dart deleted file mode 100644 index 00c3af3f..00000000 --- a/lib/app/modules/login/views/login_view.dart +++ /dev/null @@ -1,162 +0,0 @@ -// ignore_for_file: inference_failure_on_function_invocation - -import 'package:firebase_auth/firebase_auth.dart' as fba; -import 'package:firebase_ui_auth/firebase_ui_auth.dart'; -import 'package:firebase_ui_oauth_google/firebase_ui_oauth_google.dart'; -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; -import '../../../../firebase_options.dart'; - -import '../../../../models/screens.dart'; -import '../../../widgets/login_widgets.dart'; -import '../controllers/login_controller.dart'; - -class LoginView extends GetView { - void showReverificationButton( - bool show, fba.EmailAuthCredential? credential) { - // Below is very important. - // See [https://stackoverflow.com/questions/69351845/this-obx-widget-cannot-be-marked-as-needing-to-build-because-the-framework-is-al] - WidgetsBinding.instance.addPostFrameCallback((_) { - controller.showReverificationButton.value = show; - }); - //or Future.delayed(Duration.zero, () { - // We can get the email and password from the controllers either by making the whole screen from scratch - // or probably by add flutter_test find.byKey (hacky) - // tried using AuthStateChangeAction instead which is not getting called - // Finally Subclassed EmailAuthProvider to handle the same, but that also did not work - // So went for server side email sending option - //})); - } - - const LoginView({super.key}); - - @override - Widget build(BuildContext context) { - return Obx(() => loginScreen(context)); - } - - Widget subtitleBuilder(context, action) { - return Padding( - padding: const EdgeInsets.symmetric(vertical: 8.0), - child: action == AuthAction.signIn - ? const Text('Welcome to Get Flutter Fire, please sign in!') - : const Text('New to Get Flutter Fire, please sign up!'), - ); - } - - Widget footerBuilder(Rx show, Rxn credential) { - return LoginWidgets.footerBuilder(EmailLinkButton(show, credential)); - } - - Widget loginScreen(BuildContext context) { - Widget ui; - if (!controller.isLoggedIn) { - ui = !(GetPlatform.isAndroid || GetPlatform.isIOS) && controller.isRobot - ? recaptcha() - : SignInScreen( - providers: [ - GoogleProvider(clientId: DefaultFirebaseOptions.webClientId), - MyEmailAuthProvider(), - ], - showAuthActionSwitch: !controller.isRegistered, - showPasswordVisibilityToggle: true, - headerBuilder: LoginWidgets.headerBuilder, - subtitleBuilder: subtitleBuilder, - footerBuilder: (context, action) => footerBuilder( - controller.showReverificationButton, - LoginController.to.credential), - sideBuilder: LoginWidgets.sideBuilder, - actions: getActions(), - ); - } else if (controller.isAnon) { - ui = RegisterScreen( - providers: [ - MyEmailAuthProvider(), - ], - showAuthActionSwitch: !controller.isAnon, //if Anon only SignUp - showPasswordVisibilityToggle: true, - headerBuilder: LoginWidgets.headerBuilder, - subtitleBuilder: subtitleBuilder, - footerBuilder: (context, action) => footerBuilder( - controller.showReverificationButton, LoginController.to.credential), - sideBuilder: LoginWidgets.sideBuilder, - actions: getActions(), - ); - } else { - final thenTo = Get - .rootDelegate.currentConfiguration!.currentPage!.parameters?['then']; - Get.rootDelegate.offNamed(thenTo ?? - (controller.isRegistered ? Screen.HOME : Screen.REGISTER).route); - ui = const Scaffold(); - } - return ui; - } - - Widget recaptcha() { - //TODO: Add Recaptcha - return Scaffold( - body: TextButton( - onPressed: () => controller.robot = false, - child: const Text("Are you a Robot?"), - )); - } - - /// The following actions are useful here: - /// - [AuthStateChangeAction] - /// - [AuthCancelledAction] - /// - [EmailLinkSignInAction] - /// - [VerifyPhoneAction] - /// - [SMSCodeRequestedAction] - - List getActions() { - return [ - // AuthStateChangeAction((context, state) { - AuthStateChangeAction((context, state) => LoginController.to - .errorMessage(context, state, showReverificationButton)), - // AuthStateChangeAction((context, state) { - // // This is not required due to the AuthMiddleware - // }), - // EmailLinkSignInAction((context) { - // final thenTo = Get.rootDelegate.currentConfiguration!.currentPage! - // .parameters?['then']; - // Get.rootDelegate.offNamed(thenTo ?? Routes.PROFILE); - // }), - ]; - } -} - -class MyEmailAuthProvider extends EmailAuthProvider { - @override - void onCredentialReceived( - fba.EmailAuthCredential credential, - AuthAction action, - ) { - WidgetsBinding.instance.addPostFrameCallback((_) { - LoginController.to.credential.value = credential; - }); - super.onCredentialReceived(credential, action); - } -} - -class EmailLinkButton extends StatelessWidget { - final Rx show; - final Rxn credential; - - const EmailLinkButton( - this.show, - this.credential, { - super.key, - }); - - @override - Widget build(BuildContext context) { - return Obx(() => Visibility( - visible: show.value, - child: Padding( - padding: const EdgeInsets.only(top: 16), - child: ElevatedButton( - onPressed: () => LoginController.to - .sendVerificationMail(emailAuth: credential.value), - child: const Text('Resend Verification Mail'))))); - } -} diff --git a/lib/app/modules/my_products/bindings/my_products_binding.dart b/lib/app/modules/my_products/bindings/my_products_binding.dart deleted file mode 100644 index a537f047..00000000 --- a/lib/app/modules/my_products/bindings/my_products_binding.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:get/get.dart'; - -import '../controllers/my_products_controller.dart'; - -class MyProductsBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut( - () => MyProductsController(), - ); - } -} diff --git a/lib/app/modules/my_products/controllers/my_products_controller.dart b/lib/app/modules/my_products/controllers/my_products_controller.dart deleted file mode 100644 index 31696ea2..00000000 --- a/lib/app/modules/my_products/controllers/my_products_controller.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:get/get.dart'; - -class MyProductsController extends GetxController { - //TODO: Implement MyProductsController - - final count = 0.obs; - @override - void onInit() { - super.onInit(); - } - - @override - void onReady() { - super.onReady(); - } - - @override - void onClose() { - super.onClose(); - } - - void increment() => count.value++; -} diff --git a/lib/app/modules/my_products/views/my_products_view.dart b/lib/app/modules/my_products/views/my_products_view.dart deleted file mode 100644 index 43793ebb..00000000 --- a/lib/app/modules/my_products/views/my_products_view.dart +++ /dev/null @@ -1,24 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:get/get.dart'; - -import '../controllers/my_products_controller.dart'; - -class MyProductsView extends GetView { - const MyProductsView({super.key}); - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: const Text('MyProductsView'), - centerTitle: true, - ), - body: const Center( - child: Text( - 'MyProductsView is working', - style: TextStyle(fontSize: 20), - ), - ), - ); - } -} diff --git a/lib/app/modules/product_details/bindings/product_details_binding.dart b/lib/app/modules/product_details/bindings/product_details_binding.dart deleted file mode 100644 index 624d55ac..00000000 --- a/lib/app/modules/product_details/bindings/product_details_binding.dart +++ /dev/null @@ -1,14 +0,0 @@ -import 'package:get/get.dart'; - -import '../controllers/product_details_controller.dart'; - -class ProductDetailsBinding extends Bindings { - @override - void dependencies() { - Get.create( - () => ProductDetailsController( - Get.parameters['productId'] ?? '', - ), - ); - } -} diff --git a/lib/app/modules/product_details/controllers/product_details_controller.dart b/lib/app/modules/product_details/controllers/product_details_controller.dart deleted file mode 100644 index d894e10c..00000000 --- a/lib/app/modules/product_details/controllers/product_details_controller.dart +++ /dev/null @@ -1,18 +0,0 @@ -import 'package:get/get.dart'; - -class ProductDetailsController extends GetxController { - final String productId; - - ProductDetailsController(this.productId); - @override - void onInit() { - super.onInit(); - Get.log('ProductDetailsController created with id: $productId'); - } - - @override - void onClose() { - Get.log('ProductDetailsController close with id: $productId'); - super.onClose(); - } -} diff --git a/lib/app/modules/product_details/views/product_details_view.dart b/lib/app/modules/product_details/views/product_details_view.dart deleted file mode 100644 index c9290724..00000000 --- a/lib/app/modules/product_details/views/product_details_view.dart +++ /dev/null @@ -1,27 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:get/get.dart'; - -import '../controllers/product_details_controller.dart'; - -class ProductDetailsView extends GetWidget { - const ProductDetailsView({super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Center( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - const Text( - 'ProductDetailsView is working', - style: TextStyle(fontSize: 20), - ), - Text('ProductId: ${controller.productId}') - ], - ), - ), - ); - } -} diff --git a/lib/app/modules/products/bindings/products_binding.dart b/lib/app/modules/products/bindings/products_binding.dart deleted file mode 100644 index e7c762db..00000000 --- a/lib/app/modules/products/bindings/products_binding.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:get/get.dart'; - -import '../controllers/products_controller.dart'; - -class ProductsBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut( - () => ProductsController(), - ); - } -} diff --git a/lib/app/modules/products/controllers/products_controller.dart b/lib/app/modules/products/controllers/products_controller.dart deleted file mode 100644 index 118c7dc8..00000000 --- a/lib/app/modules/products/controllers/products_controller.dart +++ /dev/null @@ -1,28 +0,0 @@ -import 'package:get/get.dart'; - -import '../../../../models/product.dart'; - -class ProductsController extends GetxController { - final products = [].obs; - - void loadDemoProductsFromSomeWhere() { - products.add( - Product( - name: 'Product added on: ${DateTime.now().toString()}', - id: DateTime.now().millisecondsSinceEpoch.toString(), - ), - ); - } - - @override - void onReady() { - super.onReady(); - loadDemoProductsFromSomeWhere(); - } - - @override - void onClose() { - Get.printInfo(info: 'Products: onClose'); - super.onClose(); - } -} diff --git a/lib/app/modules/products/views/products_view.dart b/lib/app/modules/products/views/products_view.dart deleted file mode 100644 index 5b190a6a..00000000 --- a/lib/app/modules/products/views/products_view.dart +++ /dev/null @@ -1,58 +0,0 @@ -// ignore_for_file: inference_failure_on_function_invocation - -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - -import '../../../../models/role.dart'; -import '../../../routes/app_pages.dart'; -import '../controllers/products_controller.dart'; - -class ProductsView extends GetView { - const ProductsView({super.key}); - - @override - Widget build(BuildContext context) { - var arg = Get.rootDelegate.arguments(); - return Scaffold( - floatingActionButton: - (arg != null && Get.rootDelegate.arguments()["role"] == Role.seller) - ? FloatingActionButton.extended( - onPressed: controller.loadDemoProductsFromSomeWhere, - label: const Text('Add'), - ) - : null, - body: Column( - children: [ - const Hero( - tag: 'heroLogo', - child: FlutterLogo(), - ), - Expanded( - child: Obx( - () => RefreshIndicator( - onRefresh: () async { - controller.products.clear(); - controller.loadDemoProductsFromSomeWhere(); - }, - child: ListView.builder( - itemCount: controller.products.length, - itemBuilder: (context, index) { - final item = controller.products[index]; - return ListTile( - onTap: () { - Get.rootDelegate.toNamed(Routes.PRODUCT_DETAILS( - item.id)); //we could use Get Parameters - }, - title: Text(item.name), - subtitle: Text(item.id), - ); - }, - ), - ), - ), - ), - ], - ), - ); - } -} diff --git a/lib/app/modules/profile/bindings/profile_binding.dart b/lib/app/modules/profile/bindings/profile_binding.dart deleted file mode 100644 index 5eb3b2bd..00000000 --- a/lib/app/modules/profile/bindings/profile_binding.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:get/get.dart'; - -import '../controllers/profile_controller.dart'; - -class ProfileBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut( - () => ProfileController(), - ); - } -} diff --git a/lib/app/modules/profile/controllers/profile_controller.dart b/lib/app/modules/profile/controllers/profile_controller.dart deleted file mode 100644 index 0c1e059e..00000000 --- a/lib/app/modules/profile/controllers/profile_controller.dart +++ /dev/null @@ -1,62 +0,0 @@ -import 'dart:io'; - -import 'package:firebase_auth/firebase_auth.dart'; -import 'package:firebase_storage/firebase_storage.dart'; -import 'package:get/get.dart'; -import 'package:get_storage/get_storage.dart'; - -import 'package:path/path.dart'; -import '../../../../services/auth_service.dart'; - -class ProfileController extends GetxController { - FirebaseStorage storage = FirebaseStorage.instance; - User? currentUser = AuthService.to.user; - final Rxn _photoURL = Rxn(); - - File? _photo; - - String? get photoURL => _photoURL.value; - - @override - onInit() { - super.onInit(); - _photoURL.value = currentUser!.photoURL; - _photoURL.bindStream(currentUser!.photoURL.obs.stream); - } - - Future uploadFile(String path) async { - try { - var byt = GetStorage().read(path); - if (byt != null) { - final fileName = path; - final destination = 'profilePics/${currentUser!.uid}'; - - final ref = storage.ref(destination).child(fileName); - await ref.putData(byt); - return "$destination/$fileName"; - } else { - _photo = File(path); - if (_photo == null) return null; - final fileName = basename(_photo!.path); - final destination = 'profilePics/${currentUser!.uid}'; - - final ref = storage.ref(destination).child(fileName); - await ref.putFile(_photo!); - return "$destination/$fileName"; - } - } catch (e) { - Get.snackbar('Error', 'Image Not Uploaded as ${e.toString()}'); - } - return null; - } - - void logout() { - AuthService.to.logout(); - } - - Future updatePhotoURL(String dest) async { - _photoURL.value = await storage.ref().child(dest).getDownloadURL(); - await currentUser?.updatePhotoURL(_photoURL.value); - Get.snackbar('Success', 'Picture stored and linked'); - } -} diff --git a/lib/app/modules/profile/views/profile_view.dart b/lib/app/modules/profile/views/profile_view.dart deleted file mode 100644 index c26d11c1..00000000 --- a/lib/app/modules/profile/views/profile_view.dart +++ /dev/null @@ -1,124 +0,0 @@ -// ignore_for_file: inference_failure_on_function_invocation - -import 'package:firebase_ui_auth/firebase_ui_auth.dart'; -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - -import '../../../../services/auth_service.dart'; -import '../../../../models/screens.dart'; -import '../../../widgets/change_password_dialog.dart'; -import '../../../widgets/image_picker_button.dart'; -import '../controllers/profile_controller.dart'; - -class ProfileView extends GetView { - const ProfileView({super.key}); - ShapeBorder get shape => const CircleBorder(); - double get size => 120; - Color get placeholderColor => Colors.grey; - - Widget _imageFrameBuilder( - BuildContext context, - Widget? child, - int? frame, - bool? _, - ) { - if (frame == null) { - return Container(color: placeholderColor); - } - - return child!; - } - - @override - Widget build(BuildContext context) { - return Obx(() => profileScreen()); - } - - Widget profileScreen() { - return AuthService.to.isLoggedInValue - ? ProfileScreen( - // We are using the Flutter Fire Profile Screen now but will change in subsequent steps. - // The issues are highlighted in comments here - - // appBar: AppBar( - // title: const Text('User Profile'), - // ), - avatar: SizedBox( - //null will give the profile image component but it does not refresh the pic when changed - height: size, - width: size, - child: ClipPath( - clipper: ShapeBorderClipper(shape: shape), - clipBehavior: Clip.hardEdge, - child: controller.photoURL != null - ? Image.network( - controller.photoURL!, - width: size, - height: size, - cacheWidth: size.toInt(), - cacheHeight: size.toInt(), - fit: BoxFit.contain, - frameBuilder: _imageFrameBuilder, - ) - : Center( - child: Image.asset( - 'assets/images/dash.png', - width: size, - fit: BoxFit.contain, - ), - ), - ), - ), - // showDeleteConfirmationDialog: true, //this does not work properly. Possibly a bug in FlutterFire - actions: [ - SignedOutAction((context) { - Get.back(); - controller.logout(); - Get.rootDelegate.toNamed(Screen.PROFILE.route); - // Navigator.of(context).pop(); - }), - AccountDeletedAction((context, user) { - //If we don't include this the button is still shown but no action gets done. Ideally the button should also not be shown. Its a bug in FlutterFire - Get.defaultDialog( - //this is only called after the delete is done and not useful for confirmation of the delete action - title: 'Deleted Account of ${user.displayName}', - barrierDismissible: true, - navigatorKey: Get.nestedKey(Screen.HOME.route), - ); - }) - ], - children: [ - //This is to show that we can add custom content here - const Divider(), - controller.currentUser?.email != null - ? TextButton.icon( - onPressed: callChangePwdDialog, - label: const Text('Change Password'), - icon: const Icon(Icons.password_rounded), - ) - : const SizedBox.shrink(), - ImagePickerButton(callback: (String? path) async { - if (path != null) { - //Upload to Store - String? dest = await controller.uploadFile(path); - //attach it to User imageUrl - if (dest != null) { - await controller.updatePhotoURL(dest); - } - } - }) - ], - ) - : const Scaffold(); - } - - void callChangePwdDialog() { - var dlg = ChangePasswordDialog(controller.currentUser!); - Get.defaultDialog( - title: "Change Password", - content: dlg, - textConfirm: "Submit", - textCancel: "Cancel", - onConfirm: dlg.onSubmit); - } -} diff --git a/lib/app/modules/register/bindings/register_binding.dart b/lib/app/modules/register/bindings/register_binding.dart deleted file mode 100644 index 1089ecbd..00000000 --- a/lib/app/modules/register/bindings/register_binding.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:get/get.dart'; - -import '../controllers/register_controller.dart'; - -class RegisterBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut( - () => RegisterController(), - ); - } -} diff --git a/lib/app/modules/register/controllers/register_controller.dart b/lib/app/modules/register/controllers/register_controller.dart deleted file mode 100644 index 96cb2cb0..00000000 --- a/lib/app/modules/register/controllers/register_controller.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:get/get.dart'; - -import '../../../../services/auth_service.dart'; - -class RegisterController extends GetxController { - @override - void onInit() { - super.onInit(); - // Send email verification and logout - AuthService.to - .sendVerificationMail(); //if we use the EmailVerificationScreen then no need to call this - } - - // @override - // void onReady() { - // super.onReady(); - // } - - // @override - // void onClose() { - // super.onClose(); - // } -} diff --git a/lib/app/modules/register/views/register_view.dart b/lib/app/modules/register/views/register_view.dart deleted file mode 100644 index 01f73e88..00000000 --- a/lib/app/modules/register/views/register_view.dart +++ /dev/null @@ -1,53 +0,0 @@ -// import 'package:firebase_ui_auth/firebase_ui_auth.dart'; -import 'package:flutter/material.dart'; - -import 'package:get/get.dart'; - -import '../../../../services/auth_service.dart'; -// import '../../../widgets/login_widgets.dart'; -import '../controllers/register_controller.dart'; - -//ALso add a form to take additional info such as display name of other customer details mapped with uid in Firestore -class RegisterView extends GetView { - const RegisterView({super.key}); - - @override - Widget build(BuildContext context) { - // Add pre verification Form if any. Mostly it can be post verification and can be the Profile or Setting screens - try { - // using this is causing an error when we send verification mail from server side - // if it was initiated once, even when no visible. So we need to dispose when not visible - var w = - // EmailVerificationScreen( - // headerBuilder: LoginWidgets.headerBuilder, - // sideBuilder: LoginWidgets.sideBuilder, - // actions: [ - // EmailVerifiedAction(() { - // AuthService.to.register(); - // }), - // ], - // ); - Scaffold( - appBar: AppBar( - title: const Text('Registeration'), - centerTitle: true, - ), - body: Center( - child: Column(children: [ - const Text( - 'Please verify your email (check SPAM folder), and then relogin', - style: TextStyle(fontSize: 20), - ), - TextButton( - onPressed: () => AuthService.to.register(), - child: const Text("Verification Done. Relogin"), - ) - ])), - ); - return w; - } catch (e) { - // TODO - } - return const Scaffold(); - } -} diff --git a/lib/app/modules/root/bindings/root_binding.dart b/lib/app/modules/root/bindings/root_binding.dart deleted file mode 100644 index e1e94d1d..00000000 --- a/lib/app/modules/root/bindings/root_binding.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:get/get.dart'; - -import '../controllers/root_controller.dart'; - -class RootBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut( - () => RootController(), - ); - } -} diff --git a/lib/app/modules/root/controllers/my_drawer_controller.dart b/lib/app/modules/root/controllers/my_drawer_controller.dart deleted file mode 100644 index f45ef122..00000000 --- a/lib/app/modules/root/controllers/my_drawer_controller.dart +++ /dev/null @@ -1,10 +0,0 @@ -import 'package:get/get.dart'; - -import '../../../../models/screens.dart'; - -class MyDrawerController extends GetxController { - MyDrawerController(Iterable iter) - : values = Rx>(iter); - - final Rx> values; -} diff --git a/lib/app/modules/root/controllers/root_controller.dart b/lib/app/modules/root/controllers/root_controller.dart deleted file mode 100644 index 7f160fc6..00000000 --- a/lib/app/modules/root/controllers/root_controller.dart +++ /dev/null @@ -1,14 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - -class RootController extends GetxController { - GlobalKey scaffoldKey = GlobalKey(); - - void openDrawer() { - scaffoldKey.currentState!.openDrawer(); - } - - void closeDrawer() { - scaffoldKey.currentState!.openEndDrawer(); - } -} diff --git a/lib/app/modules/root/views/drawer.dart b/lib/app/modules/root/views/drawer.dart deleted file mode 100644 index 908d0223..00000000 --- a/lib/app/modules/root/views/drawer.dart +++ /dev/null @@ -1,118 +0,0 @@ -// ignore_for_file: inference_failure_on_function_invocation - -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - -import '../../../../models/role.dart'; -import '../../../../services/auth_service.dart'; - -import '../../../../models/screens.dart'; -import '../controllers/my_drawer_controller.dart'; - -class DrawerWidget extends StatelessWidget { - const DrawerWidget({ - super.key, - }); - - @override - Widget build(BuildContext context) { - MyDrawerController controller = Get.put(MyDrawerController([]), - permanent: true); //must make true else gives error - Screen.drawer().then((v) => {controller.values.value = v}); - return Obx(() => Drawer( - //changing the shape of the drawer - shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.only( - topRight: Radius.circular(0), bottomRight: Radius.circular(20)), - ), - width: 200, - child: Column( - children: drawerItems(context, controller.values), - ), - )); - } - - List drawerItems(BuildContext context, Rx> values) { - List list = [ - Container( - height: 100, - color: Colors.red, - //adding content in the highlighted part of the drawer - child: Align( - alignment: Alignment.centerLeft, - child: Container( - margin: const EdgeInsets.only(left: 15), - child: const Text('User Name', //Profile Icon also - style: TextStyle(fontWeight: FontWeight.bold)))), - ) - ]; - - if (AuthService.to.maxRole.index > 1) { - for (var i = 0; i <= AuthService.to.maxRole.index; i++) { - Role role = Role.values[i]; - list.add(ListTile( - title: Text( - role.name, - style: const TextStyle( - color: Colors.blue, - ), - ), - onTap: () { - Get.rootDelegate - .toNamed(Screen.HOME.route, arguments: {'role': role}); - //to close the drawer - Navigator.of(context).pop(); - }, - )); - } - } - - for (Screen screen in values.value) { - list.add(ListTile( - title: Text(screen.label ?? ''), - onTap: () { - Get.rootDelegate.toNamed(screen.route); - //to close the drawer - - Navigator.of(context).pop(); - }, - )); - } - - if (AuthService.to.isLoggedInValue) { - list.add(ListTile( - title: const Text( - 'Logout', - style: TextStyle( - color: Colors.red, - ), - ), - onTap: () { - AuthService.to.logout(); - Get.rootDelegate.toNamed(Screen.LOGIN.route); - //to close the drawer - - Navigator.of(context).pop(); - }, - )); - } - if (!AuthService.to.isLoggedInValue) { - list.add(ListTile( - title: const Text( - 'Login', - style: TextStyle( - color: Colors.blue, - ), - ), - onTap: () { - Get.rootDelegate.toNamed(Screen.LOGIN.route); - //to close the drawer - - Navigator.of(context).pop(); - }, - )); - } - - return list; - } -} diff --git a/lib/app/modules/root/views/root_view.dart b/lib/app/modules/root/views/root_view.dart deleted file mode 100644 index 2bbf228c..00000000 --- a/lib/app/modules/root/views/root_view.dart +++ /dev/null @@ -1,64 +0,0 @@ -// ignore_for_file: inference_failure_on_function_invocation - -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; -import 'package:get_flutter_fire/services/auth_service.dart'; -import '../../../routes/app_pages.dart'; -import '../../../../models/screens.dart'; -import '../controllers/root_controller.dart'; -import 'drawer.dart'; - -class RootView extends GetView { - const RootView({super.key}); - - @override - Widget build(BuildContext context) { - return GetRouterOutlet.builder( - builder: (context, delegate, current) { - final title = current!.currentPage!.title; - return Scaffold( - key: controller.scaffoldKey, - drawer: const DrawerWidget(), - appBar: AppBar( - title: Text(title ?? ''), - centerTitle: true, - leading: GetPlatform.isIOS // Since Web and Android have back button - && - current.locationString.contains(RegExp(r'(\/[^\/]*){3,}')) - ? BackButton( - onPressed: () => - Get.rootDelegate.popRoute(), //Navigator.pop(context), - ) - : IconButton( - icon: ImageIcon( - const AssetImage("icons/logo.png"), - color: Colors.grey.shade800, - ), - onPressed: () => AuthService.to.isLoggedInValue - ? controller.openDrawer() - : {Screen.HOME.doAction()}, - ), - actions: topRightMenuButtons(current), - // automaticallyImplyLeading: false, //removes drawer icon - ), - body: GetRouterOutlet( - initialRoute: AppPages.INITIAL, - // anchorRoute: '/', - // filterPages: (afterAnchor) { - // return afterAnchor.take(1); - // }, - ), - ); - }, - ); - } - -//This could be used to add icon buttons in expanded web view instead of the context menu - List topRightMenuButtons(GetNavConfig current) { - return [ - Container( - margin: const EdgeInsets.only(right: 15), - child: Screen.LOGIN.widget(current)) - ]; //TODO add seach button - } -} diff --git a/lib/app/modules/settings/bindings/settings_binding.dart b/lib/app/modules/settings/bindings/settings_binding.dart deleted file mode 100644 index fb567f07..00000000 --- a/lib/app/modules/settings/bindings/settings_binding.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:get/get.dart'; - -import '../controllers/settings_controller.dart'; - -class SettingsBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut( - () => SettingsController(), - ); - } -} diff --git a/lib/app/modules/settings/controllers/settings_controller.dart b/lib/app/modules/settings/controllers/settings_controller.dart deleted file mode 100644 index 265e54b1..00000000 --- a/lib/app/modules/settings/controllers/settings_controller.dart +++ /dev/null @@ -1,20 +0,0 @@ -import 'package:get/get.dart'; - -class SettingsController extends GetxController { - //TODO: Implement SettingsController - - final count = 0.obs; - @override - void onInit() { - super.onInit(); - } - - @override - void onReady() { - super.onReady(); - } - - @override - void onClose() {} - void increment() => count.value++; -} diff --git a/lib/app/modules/settings/views/settings_view.dart b/lib/app/modules/settings/views/settings_view.dart deleted file mode 100644 index 2bb244b6..00000000 --- a/lib/app/modules/settings/views/settings_view.dart +++ /dev/null @@ -1,21 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:get/get.dart'; - -import '../controllers/settings_controller.dart'; - -class SettingsView extends GetView { - const SettingsView({super.key}); - - @override - Widget build(BuildContext context) { - return const Scaffold( - body: Center( - child: Text( - 'SettingsView is working', - style: TextStyle(fontSize: 20), - ), - ), - ); - } -} diff --git a/lib/app/modules/task_details/bindings/task_details_binding.dart b/lib/app/modules/task_details/bindings/task_details_binding.dart deleted file mode 100644 index 1e017283..00000000 --- a/lib/app/modules/task_details/bindings/task_details_binding.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:get/get.dart'; - -import '../controllers/task_details_controller.dart'; - -class TaskDetailsBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut( - () => TaskDetailsController(), - ); - } -} diff --git a/lib/app/modules/task_details/controllers/task_details_controller.dart b/lib/app/modules/task_details/controllers/task_details_controller.dart deleted file mode 100644 index e0a6a0d9..00000000 --- a/lib/app/modules/task_details/controllers/task_details_controller.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:get/get.dart'; - -class TaskDetailsController extends GetxController { - //TODO: Implement TaskDetailsController - - final count = 0.obs; - @override - void onInit() { - super.onInit(); - } - - @override - void onReady() { - super.onReady(); - } - - @override - void onClose() { - super.onClose(); - } - - void increment() => count.value++; -} diff --git a/lib/app/modules/task_details/views/task_details_view.dart b/lib/app/modules/task_details/views/task_details_view.dart deleted file mode 100644 index c21dbc0e..00000000 --- a/lib/app/modules/task_details/views/task_details_view.dart +++ /dev/null @@ -1,24 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:get/get.dart'; - -import '../controllers/task_details_controller.dart'; - -class TaskDetailsView extends GetView { - const TaskDetailsView({super.key}); - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: const Text('TaskDetailsView'), - centerTitle: true, - ), - body: const Center( - child: Text( - 'TaskDetailsView is working', - style: TextStyle(fontSize: 20), - ), - ), - ); - } -} diff --git a/lib/app/modules/tasks/bindings/tasks_binding.dart b/lib/app/modules/tasks/bindings/tasks_binding.dart deleted file mode 100644 index 9d836c2b..00000000 --- a/lib/app/modules/tasks/bindings/tasks_binding.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:get/get.dart'; - -import '../controllers/tasks_controller.dart'; - -class TasksBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut( - () => TasksController(), - ); - } -} diff --git a/lib/app/modules/tasks/controllers/tasks_controller.dart b/lib/app/modules/tasks/controllers/tasks_controller.dart deleted file mode 100644 index 4d4196e4..00000000 --- a/lib/app/modules/tasks/controllers/tasks_controller.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:get/get.dart'; - -class TasksController extends GetxController { - //TODO: Implement TasksController - - final count = 0.obs; - @override - void onInit() { - super.onInit(); - } - - @override - void onReady() { - super.onReady(); - } - - @override - void onClose() { - super.onClose(); - } - - void increment() => count.value++; -} diff --git a/lib/app/modules/tasks/views/tasks_view.dart b/lib/app/modules/tasks/views/tasks_view.dart deleted file mode 100644 index 2103103b..00000000 --- a/lib/app/modules/tasks/views/tasks_view.dart +++ /dev/null @@ -1,24 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:get/get.dart'; - -import '../controllers/tasks_controller.dart'; - -class TasksView extends GetView { - const TasksView({super.key}); - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: const Text('TasksView'), - centerTitle: true, - ), - body: const Center( - child: Text( - 'TasksView is working', - style: TextStyle(fontSize: 20), - ), - ), - ); - } -} diff --git a/lib/app/modules/users/bindings/users_binding.dart b/lib/app/modules/users/bindings/users_binding.dart deleted file mode 100644 index 7d8efdb0..00000000 --- a/lib/app/modules/users/bindings/users_binding.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:get/get.dart'; - -import '../controllers/users_controller.dart'; - -class UsersBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut( - () => UsersController(), - ); - } -} diff --git a/lib/app/modules/users/controllers/users_controller.dart b/lib/app/modules/users/controllers/users_controller.dart deleted file mode 100644 index 871467c4..00000000 --- a/lib/app/modules/users/controllers/users_controller.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:get/get.dart'; - -class UsersController extends GetxController { - //TODO: Implement UsersController - - final count = 0.obs; - @override - void onInit() { - super.onInit(); - } - - @override - void onReady() { - super.onReady(); - } - - @override - void onClose() { - super.onClose(); - } - - void increment() => count.value++; -} diff --git a/lib/app/modules/users/views/users_view.dart b/lib/app/modules/users/views/users_view.dart deleted file mode 100644 index 702f32da..00000000 --- a/lib/app/modules/users/views/users_view.dart +++ /dev/null @@ -1,24 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:get/get.dart'; - -import '../controllers/users_controller.dart'; - -class UsersView extends GetView { - const UsersView({super.key}); - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: const Text('UsersView'), - centerTitle: true, - ), - body: const Center( - child: Text( - 'UsersView is working', - style: TextStyle(fontSize: 20), - ), - ), - ); - } -} diff --git a/lib/app/routes/app_pages.dart b/lib/app/routes/app_pages.dart deleted file mode 100644 index 7269755d..00000000 --- a/lib/app/routes/app_pages.dart +++ /dev/null @@ -1,154 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - -import '../../models/access_level.dart'; -import '../../models/role.dart'; -import '../middleware/auth_middleware.dart'; -import '../modules/cart/bindings/cart_binding.dart'; -import '../modules/cart/views/cart_view.dart'; -import '../modules/categories/bindings/categories_binding.dart'; -import '../modules/categories/views/categories_view.dart'; -import '../modules/checkout/bindings/checkout_binding.dart'; -import '../modules/checkout/views/checkout_view.dart'; -import '../modules/dashboard/bindings/dashboard_binding.dart'; -import '../modules/dashboard/views/dashboard_view.dart'; -import '../modules/home/bindings/home_binding.dart'; -import '../modules/home/views/home_view.dart'; -import '../modules/login/bindings/login_binding.dart'; -import '../modules/login/views/login_view.dart'; -import '../modules/my_products/bindings/my_products_binding.dart'; -import '../modules/my_products/views/my_products_view.dart'; -import '../modules/product_details/bindings/product_details_binding.dart'; -import '../modules/product_details/views/product_details_view.dart'; -import '../modules/products/bindings/products_binding.dart'; -import '../modules/products/views/products_view.dart'; -import '../modules/profile/bindings/profile_binding.dart'; -import '../modules/profile/views/profile_view.dart'; -import '../modules/register/bindings/register_binding.dart'; -import '../modules/register/views/register_view.dart'; -import '../modules/root/bindings/root_binding.dart'; -import '../modules/root/views/root_view.dart'; -import '../modules/settings/bindings/settings_binding.dart'; -import '../modules/settings/views/settings_view.dart'; -import '../modules/task_details/bindings/task_details_binding.dart'; -import '../modules/task_details/views/task_details_view.dart'; -import '../modules/tasks/bindings/tasks_binding.dart'; -import '../modules/tasks/views/tasks_view.dart'; -import '../modules/users/bindings/users_binding.dart'; -import '../modules/users/views/users_view.dart'; -import '../../models/screens.dart'; - -part 'app_routes.dart'; -part 'screen_extension.dart'; - -class AppPages { - AppPages._(); - - static const INITIAL = Routes.HOME; - - //TODO create this using the information from Screen and Role data - //can use https://pub.dev/packages/freezed - static final routes = [ - GetPage( - name: '/', - page: () => const RootView(), - binding: RootBinding(), - participatesInRootNavigator: true, - preventDuplicates: true, - children: [ - Screen.LOGIN.getPage( - page: () => const LoginView(), - binding: LoginBinding(), - ), - Screen.REGISTER.getPage( - page: () => const RegisterView(), - binding: RegisterBinding(), - ), - Screen.PROFILE.getPage( - page: () => const ProfileView(), - binding: ProfileBinding(), - ), - Screen.SETTINGS.getPage( - page: () => const SettingsView(), - binding: SettingsBinding(), - ), - Screen.HOME.getPage( - page: () => const HomeView(), - bindings: [ - HomeBinding(), - ], - children: [ - Screen.DASHBOARD.getPage( - page: () => const DashboardView(), - binding: DashboardBinding(), - ), - Screen.USERS.getPage( - role: Role.admin, - page: () => const UsersView(), - binding: UsersBinding(), - children: [ - Screen.USER_PROFILE.getPage( - page: () => const ProfileView(), - binding: ProfileBinding(), - ) - ], - ), - Screen.PRODUCTS.getPage( - page: () => const ProductsView(), - binding: ProductsBinding(), - children: [ - Screen.PRODUCT_DETAILS.getPages( - page: () => const ProductDetailsView(), - binding: ProductDetailsBinding(), - ), - ], - ), - Screen.CATEGORIES.getPage( - role: Role.admin, - page: () => const CategoriesView(), - binding: CategoriesBinding(), - ), - Screen.CART.getPage( - page: () => const CartView(), - binding: CartBinding(), - role: Role.buyer, - children: [ - Screen.CHECKOUT.getPage( - //if this is after cart details, it never gets reached - page: () => const CheckoutView(), - binding: CheckoutBinding(), - ), - Screen.CART_DETAILS.getPages( - page: () => const ProductDetailsView(), - binding: ProductDetailsBinding(), - ), - ], - ), - Screen.MY_PRODUCTS.getPage( - page: () => const MyProductsView(), - binding: MyProductsBinding(), - role: Role.seller, - children: [ - Screen.MY_PRODUCT_DETAILS.getPages( - page: () => const ProductDetailsView(), - binding: ProductDetailsBinding(), - ), - ], - ), - Screen.TASKS.getPage( - role: Role.admin, - page: () => const TasksView(), - binding: TasksBinding(), - children: [ - Screen.TASK_DETAILS.getPage( - page: () => const TaskDetailsView(), - binding: TaskDetailsBinding(), - ), - ], - ), - ], - ) - ], - ), - ]; -} diff --git a/lib/app/routes/app_routes.dart b/lib/app/routes/app_routes.dart deleted file mode 100644 index f3129d21..00000000 --- a/lib/app/routes/app_routes.dart +++ /dev/null @@ -1,54 +0,0 @@ -// ignore_for_file: non_constant_identifier_names, constant_identifier_names - -part of 'app_pages.dart'; -// DO NOT EDIT. This is code generated via package:get_cli/get_cli.dart - -abstract class Routes { - static const HOME = _Paths.HOME; - // static String PROFILE = Screen.PROFILE.fullPath; - // static String SETTINGS = Screen.SETTINGS.fullPath; - static String LOGIN = Screen.LOGIN.route; - static String REGISTER = Screen.REGISTER.route; - // static String DASHBOARD = Screen.DASHBOARD.fullPath; - // static String PRODUCTS = Screen.PRODUCTS.fullPath; - // static String CART = Screen.CART.fullPath; - // static String CHECKOUT = Screen.CHECKOUT.fullPath; - // static const CATEGORIES = _Paths.HOME + _Paths.CATEGORIES; - // static const TASKS = _Paths.HOME + _Paths.TASKS; - // static const USERS = _Paths.HOME + _Paths.USERS; - // static const MY_PRODUCTS = _Paths.HOME + _Paths.MY_PRODUCTS; - - static String PRODUCT_DETAILS(String productId) => - '${Screen.PRODUCTS.route}/$productId'; - static String CART_DETAILS(String productId) => - '${Screen.CART.route}/$productId'; - static String TASK_DETAILS(String taskId) => '${Screen.TASKS.route}/$taskId'; - static String USER_PROFILE(String uId) => '${Screen.USERS.route}/$uId'; - - Routes._(); - static String LOGIN_THEN(String afterSuccessfulLogin) => - '${Screen.LOGIN.route}?then=${Uri.encodeQueryComponent(afterSuccessfulLogin)}'; - static String REGISTER_THEN(String afterSuccessfulLogin) => - '${Screen.REGISTER.route}?then=${Uri.encodeQueryComponent(afterSuccessfulLogin)}'; -} - -// Keeping this as Get_Cli will require it. Any addition can later be added to Screen -abstract class _Paths { - static const String HOME = '/home'; - // static const DASHBOARD = '/dashboard'; - // static const PRODUCTS = '/products'; - // static const PROFILE = '/profile'; - // static const SETTINGS = '/settings'; - // static const PRODUCT_DETAILS = '/:productId'; - // static const CART_DETAILS = '/:productId'; - // static const LOGIN = '/login'; - // static const CART = '/cart'; - // static const CHECKOUT = '/checkout'; - // static const REGISTER = '/register'; - // static const CATEGORIES = '/categories'; - // static const TASKS = '/tasks'; - // static const TASK_DETAILS = '/:taskId'; - // static const USERS = '/users'; - // static const USER_PROFILE = '/:uId'; - // static const MY_PRODUCTS = '/my-products'; -} diff --git a/lib/app/routes/screen_extension.dart b/lib/app/routes/screen_extension.dart deleted file mode 100644 index aaf138b0..00000000 --- a/lib/app/routes/screen_extension.dart +++ /dev/null @@ -1,125 +0,0 @@ -part of 'app_pages.dart'; - -extension GetViewExtension on GetView { - static final _screens = Expando(); - - Screen? get screen => _screens[this]; - set screen(Screen? x) => _screens[this] = x; -} - -extension GetWidgetExtension on GetWidget { - static final _screens = Expando(); - - Screen? get screen => _screens[this]; - set screen(Screen? x) => _screens[this] = x; -} - -extension GetPageExtension on GetPage {} - -extension ScreenExtension on Screen { - GetPage getPage( - {required GetView Function() page, - Bindings? binding, - List bindings = const [], - List? middlewares, - List>? children, - bool preventDuplicates = true, - Role? role}) { - // we are injecting the Screen variable here - pageW() { - GetView p = page(); - p.screen = this; - return p; - } - - //check role and screen mapping for rolebased access - if (accessLevel == AccessLevel.roleBased) { - if (role == null && - (parent == null || parent!.accessLevel != AccessLevel.roleBased)) { - throw Exception("Role must be provided for RoleBased Screens"); - } - if (role != null && !role.permissions.contains(this)) { - throw Exception("Role must permit this Screen"); - } - } - - return _getPage(pageW, binding, bindings, middlewares, children, - preventDuplicates, role); - } - - GetPage getPages( - {required GetWidget Function() page, - Bindings? binding, - List bindings = const [], - List? middlewares, - List>? children, - bool preventDuplicates = false, - Role? role}) { - pageW() { - GetWidget p = page(); - p.screen = this; - return p; - } - - return _getPage(pageW, binding, bindings, middlewares, children, - preventDuplicates, role); - } - - GetPage _getPage( - Widget Function() pageW, - Bindings? binding, - List bindings, - List? middlewares, - List>? children, - bool preventDuplicates, - Role? role) { - return binding != null - ? GetPage( - preventDuplicates: preventDuplicates, - middlewares: middlewares ?? defaultMiddlewares(role), - name: path, - page: pageW, - title: label, - transition: Transition.fade, - binding: binding, - children: children ?? const []) - : GetPage( - preventDuplicates: preventDuplicates, - middlewares: middlewares, - name: path, - page: pageW, - title: label, - transition: Transition.fade, - bindings: bindings, - children: children ?? const []); - } - - List? defaultMiddlewares(Role? role) => (parent == null || - parent!.accessLevel.index < accessLevel.index) - ? switch (accessLevel) { - AccessLevel.public => null, - AccessLevel.guest => [EnsureAuthOrGuestMiddleware()], - AccessLevel.authenticated => [EnsureAuthedAndNotGuestMiddleware()], - AccessLevel.roleBased => [EnsureRoleMiddleware(role ?? Role.buyer)], - AccessLevel.masked => throw UnimplementedError(), //not for screens - AccessLevel.secret => throw UnimplementedError(), //not for screens - AccessLevel.notAuthed => [EnsureNotAuthedOrGuestMiddleware()], - } - : null; -} - -extension RoleExtension on Role { - int getCurrentIndexFromRoute(GetNavConfig? currentRoute) { - final String? currentLocation = currentRoute?.location; - int currentIndex = 0; - if (currentLocation != null) { - currentIndex = - tabs.indexWhere((tab) => currentLocation.startsWith(tab.path)); - } - return (currentIndex > 0) ? currentIndex : 0; - } - - void routeTo(int value, GetDelegate delegate) { - delegate.toNamed(tabs[value].route, arguments: {'role': this}); - } -} diff --git a/lib/app/widgets/change_password_dialog.dart b/lib/app/widgets/change_password_dialog.dart deleted file mode 100644 index 78c392e5..00000000 --- a/lib/app/widgets/change_password_dialog.dart +++ /dev/null @@ -1,139 +0,0 @@ -import 'package:firebase_auth/firebase_auth.dart'; -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - -import '../../constants.dart'; - -class ChangePasswordDialog extends StatefulWidget { - final User user; - - ChangePasswordDialog(this.user, {super.key}); - - final _formKey = GlobalKey(); - final _formValues = FormValues(); - - @override - State createState() => _ChangePasswordDialogState(); - - void onSubmit() async { - if (_formKey.currentState != null && _formKey.currentState!.validate()) { - _formKey.currentState?.save(); - try { - AuthCredential credential = EmailAuthProvider.credential( - email: user.email!, password: _formValues.old!); - await user.reauthenticateWithCredential(credential); - await user.updatePassword(_formValues.newP!); - Get.back(result: true); - } catch (e) { - _formValues.authError = "Incorrect Password"; - _formKey.currentState!.validate(); - // Get.snackbar("Error", e.toString()); - } - } - } - - void onReset() { - _formKey.currentState?.reset(); - } -} - -class FormValues { - String? old; - String? newP; - String? authError; -} - -class _ChangePasswordDialogState extends State { - @override - Widget build(BuildContext context) { - return Material( - child: Form( - key: widget._formKey, - child: Column( - children: [ - TextFormField( - textInputAction: TextInputAction.done, - autovalidateMode: AutovalidateMode.onUserInteraction, - obscureText: true, - cursorColor: kPrimaryColor, - decoration: const InputDecoration( - hintText: "Old Password", - prefixIcon: Padding( - padding: EdgeInsets.all(defaultPadding), - child: Icon(Icons.key), - ), - ), - validator: (String? value) { - return widget._formValues.authError ?? - ((value != null && value.length < 8) - ? 'Pwd cannot be less than 8 characters' - : null); - }, - onChanged: (value) { - setState(() { - widget._formValues.old = value; - widget._formValues.authError = null; - }); - }, - ), - Padding( - padding: const EdgeInsets.symmetric(vertical: defaultPadding), - child: TextFormField( - textInputAction: TextInputAction.done, - autovalidateMode: AutovalidateMode.onUserInteraction, - obscureText: true, - cursorColor: kPrimaryColor, - decoration: const InputDecoration( - hintText: "New Password", - prefixIcon: Padding( - padding: EdgeInsets.all(defaultPadding), - child: Icon(Icons.lock), - ), - ), - validator: (String? value) { - return (value != null && value.length < 8) - ? 'Pwd cannot be less than 8 characters' - : (value != null && value == widget._formValues.old) - ? 'Pwd cannot be same as old Pwd' - : null; - }, - onChanged: (value) { - setState(() { - widget._formValues.newP = value; - }); - }, - ), - ), - Padding( - padding: const EdgeInsets.symmetric(vertical: defaultPadding), - child: TextFormField( - textInputAction: TextInputAction.done, - autovalidateMode: AutovalidateMode.onUserInteraction, - obscureText: true, - cursorColor: kPrimaryColor, - decoration: const InputDecoration( - hintText: "Confirm Password", - prefixIcon: Padding( - padding: EdgeInsets.all(defaultPadding), - child: Icon(Icons.confirmation_num), - ), - ), - validator: (String? value) { - return (value != null && value != widget._formValues.newP) - ? 'Pwd does not match' - : null; - }, - ), - ), - const SizedBox(height: defaultPadding), - ElevatedButton( - onPressed: widget.onReset, - child: const Text( - "Reset", - ), - ), - ], - ), - )); - } -} diff --git a/lib/app/widgets/image_picker_button.dart b/lib/app/widgets/image_picker_button.dart deleted file mode 100644 index d6e87ff4..00000000 --- a/lib/app/widgets/image_picker_button.dart +++ /dev/null @@ -1,91 +0,0 @@ -import 'package:file_picker/file_picker.dart'; -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; -import 'package:get_storage/get_storage.dart'; -import 'package:image_picker/image_picker.dart'; - -import '../../models/action_enum.dart'; -import 'menu_sheet_button.dart'; - -enum ImageSources implements ActionEnum { - camera(Icons.camera, 'Camera'), - gallery(Icons.photo_library, 'Gallery'), - file(Icons.file_upload, 'File'); - - const ImageSources(this.icon, this.label); - - @override - Future doAction() async { - switch (this) { - case ImageSources.camera: - return await getImage(ImageSource.camera); - case ImageSources.gallery: - return await getImage(ImageSource.gallery); - case ImageSources.file: - return await getFile(); - default: - } - return null; - } - - @override - final IconData? icon; - @override - final String? label; - - static Future getImage(ImageSource imageSource) async { - final pickedFile = await ImagePicker().pickImage(source: imageSource); - if (pickedFile != null) { - return pickedFile.path; - } else { - Get.snackbar('Error', 'Image Not Selected'); - return null; - } - } - - static Future getFile() async { - FilePickerResult? result = await FilePicker.platform - .pickFiles(type: FileType.image, allowMultiple: false); - - if (result != null && result.files.isNotEmpty) { - final fileBytes = result.files.first.bytes; - final fileName = result.files.first.name; - GetStorage().write(fileName, fileBytes); - - return fileName; - //result.files.single.path;//is causing issues for Web, see https://github.com/miguelpruivo/flutter_file_picker/wiki/FAQ - } else { - Get.snackbar('Error', 'Image Not Selected'); - return null; - } - } -} - -class ImagePickerButton extends MenuSheetButton { - final ValueSetter? callback; - - const ImagePickerButton( - {super.key, - super.icon = const Icon(Icons.image), - super.label = 'Pick an Image', - this.callback}); - - @override - Iterable get values => ImageSources.values; - - @override - void callbackFunc(act) { - if (callback != null) callback!(act); - } - - @override - Widget build(BuildContext context) { - return !(GetPlatform.isAndroid || GetPlatform.isIOS) - ? TextButton.icon( - onPressed: () async => callbackFunc(await ImageSources.getFile()), - icon: icon, - label: const Text('Pick an Image'), - ) - : builder(context); - } -} diff --git a/lib/app/widgets/login_widgets.dart b/lib/app/widgets/login_widgets.dart deleted file mode 100644 index b8f2d8c1..00000000 --- a/lib/app/widgets/login_widgets.dart +++ /dev/null @@ -1,95 +0,0 @@ -// ignore_for_file: inference_failure_on_function_invocation - -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - -import '../../services/auth_service.dart'; -import '../../models/screens.dart'; -import '../../services/remote_config.dart'; -import 'menu_sheet_button.dart'; - -class LoginWidgets { - static Widget headerBuilder(context, constraints, shrinkOffset) { - return Padding( - padding: const EdgeInsets.all(20), - child: AspectRatio( - aspectRatio: 1, - child: Image.asset('assets/images/flutterfire_300x.png'), - ), - ); - } - - static Widget footerBuilder(myWidget) { - return Column( - children: [ - myWidget, - const Padding( - padding: EdgeInsets.only(top: 16), - child: Text( - 'By signing in, you agree to our terms and conditions.', - style: TextStyle(color: Colors.grey), - )) - ], - ); - } - - static Widget sideBuilder(context, shrinkOffset) { - return Padding( - padding: const EdgeInsets.all(20), - child: AspectRatio( - aspectRatio: 1, - child: Image.asset('assets/images/flutterfire_300x.png'), - ), - ); - } -} - -class LoginBottomSheetToggle extends MenuSheetButton { - const LoginBottomSheetToggle(this.current, {super.key}); - final GetNavConfig current; - - @override - Iterable get values { - MenuItemsController controller = Get.find(); - return controller.values.value; - } - - @override - Icon? get icon => (AuthService.to.isLoggedInValue) - ? values.length == 1 - ? const Icon(Icons.logout) - : const Icon(Icons.menu) - : const Icon(Icons.login); - - @override - String? get label => (AuthService.to.isLoggedInValue) - ? values.length == 1 - ? 'Logout' - : 'Click for Options' - : 'Login'; - - @override - Widget build(BuildContext context) { - MenuItemsController controller = Get.put( - MenuItemsController([]), - permanent: true); //must make true else gives error - Screen.sheet(null).then((val) { - controller.values.value = val; - }); - RemoteConfig.instance.then((ins) => - ins.addUseBottomSheetForProfileOptionsListener((val) async => - {controller.values.value = await Screen.sheet(null)})); - return Obx(() => (AuthService.to.isLoggedInValue) - ? builder(context, vals: controller.values.value) - : !(current.currentPage!.name == Screen.LOGIN.path) - ? IconButton( - onPressed: () async { - await Screen.LOGIN.doAction(); - // controller.toggle(Screen.LOGIN); - }, - icon: Icon(Screen.LOGIN.icon), - tooltip: Screen.LOGIN.label, - ) - : const SizedBox.shrink()); //should be only for loggedin case - } -} diff --git a/lib/app/widgets/menu_sheet_button.dart b/lib/app/widgets/menu_sheet_button.dart deleted file mode 100644 index abd3873e..00000000 --- a/lib/app/widgets/menu_sheet_button.dart +++ /dev/null @@ -1,94 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - -import '../../models/action_enum.dart'; - -class MenuItemsController extends GetxController { - MenuItemsController(Iterable iter) : values = Rx>(iter); - - final Rx> values; -} - -class MenuSheetButton extends StatelessWidget { - final Iterable? values_; - final Icon? icon; - final String? label; - - const MenuSheetButton( - {super.key, - this.values_, - this.icon, - this.label}); //passing scaffoldKey means that bottomSheet is added to it - - Iterable get values => values_!; - - static Widget bottomSheet( - Iterable values, ValueSetter? callback) { - return SizedBox( - height: 180, - width: Get.mediaQuery.size.width, - child: ListView( - // mainAxisAlignment: MainAxisAlignment.center, - children: values - .map( - (ActionEnum value) => ListTile( - leading: Icon(value.icon), - title: Text( - value.label!, - ), - onTap: () async { - Get.back(); - callback != null - ? callback(await value.doAction()) - : await value.doAction(); - }), - ) - .toList(), - ), - ); - } - - List> getItems(BuildContext context, Iterable values) { - return values.map>(createPopupMenuItem).toList(); - } - - PopupMenuEntry createPopupMenuItem(dynamic value) => PopupMenuItem( - value: value, - child: Text(value.label ?? ''), //TODO add Icon - ); - - @override - Widget build(BuildContext context) { - return builder(context); - } - -//This should be a modal bottom sheet if on Mobile (See https://mercyjemosop.medium.com/select-and-upload-images-to-firebase-storage-flutter-6fac855970a9) - Widget builder(BuildContext context, {Iterable? vals}) { - Iterable values = vals ?? values_!; - return values.length == 1 || - Get.mediaQuery.orientation == Orientation.portrait - // : Get.context!.isPortrait - ? (icon != null - ? IconButton( - onPressed: () => buttonPressed(values), - icon: icon!, - tooltip: label, - ) - : TextButton( - onPressed: () => buttonPressed(values), - child: Text(label ?? 'Need Label'))) - : PopupMenuButton( - itemBuilder: (context_) => getItems(context_, values), - icon: icon, - tooltip: label, - onSelected: (T value) async => - callbackFunc(await value.doAction())); - } - - void buttonPressed(Iterable values) async => values.length == 1 - ? callbackFunc(await values.first.doAction()) - : Get.bottomSheet(MenuSheetButton.bottomSheet(values, callbackFunc), - backgroundColor: Colors.white); - - void callbackFunc(act) {} -} diff --git a/lib/app/widgets/screen_widget.dart b/lib/app/widgets/screen_widget.dart deleted file mode 100644 index d80c9275..00000000 --- a/lib/app/widgets/screen_widget.dart +++ /dev/null @@ -1,75 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; -import '../routes/app_pages.dart'; -import '../../models/role.dart'; -import '../../models/screens.dart'; - -class ScreenWidget extends StatelessWidget { - final Widget body; - final Role? role; - - final GetDelegate? delegate; - - final GetNavConfig? currentRoute; - - final Screen screen; - final AppBar? appBar; - - const ScreenWidget({ - super.key, - required this.body, - required this.screen, - this.role = Role.buyer, - this.delegate, - this.currentRoute, - this.appBar, - }); - - @override - Widget build(BuildContext context) { - int currentIndex = - role != null ? role!.getCurrentIndexFromRoute(currentRoute) : 0; - Iterable fabs = screen.fabs; - return Scaffold( - body: body, - appBar: appBar, - bottomNavigationBar: (screen.navTabs.isNotEmpty) - ? BottomNavigationBar( - currentIndex: currentIndex, - onTap: (value) { - if (delegate != null) { - role!.routeTo(value, delegate!); - } - }, - items: - role!.tabs //screen may have more navTabs but we need by role - .map((Screen tab) => BottomNavigationBarItem( - icon: Icon(tab.icon), - label: tab.label, - )) - .toList(), - ) - : null, - floatingActionButton: fabs.isNotEmpty ? getFAB(fabs) : null, - // bottomSheet: //this is used for persistent bar like status bar - ); - } - - FloatingActionButton? getFAB(Iterable fabs) { - if (fabs.length == 1) { - var screen = fabs.firstOrNull!; - return FloatingActionButton.extended( - backgroundColor: Colors.blue, - onPressed: () => Get.rootDelegate.toNamed(screen.route), - label: Text(screen.label ?? ''), - icon: screen.icon == null - ? null - : Icon( - screen.icon, - color: Colors.white, - ), - ); - } - return null; //TODO multi fab button on press - } -} diff --git a/lib/auth_gate.dart b/lib/auth_gate.dart new file mode 100644 index 00000000..c4ef55df --- /dev/null +++ b/lib/auth_gate.dart @@ -0,0 +1,82 @@ +import 'package:firebase_auth/firebase_auth.dart' hide EmailAuthProvider; +import 'package:firebase_ui_auth/firebase_ui_auth.dart'; +import 'package:firebase_ui_oauth_google/firebase_ui_oauth_google.dart'; +import 'package:flutter/material.dart'; + +import 'home.dart'; + +class AuthGate extends StatelessWidget { + const AuthGate({super.key}); + + Future _signInAnonymously(BuildContext context) async { + try { + final userCredential = await FirebaseAuth.instance.signInAnonymously(); + print("Signed in with temporary account: ${userCredential.user?.uid}"); + } on FirebaseAuthException catch (e) { + print("FirebaseAuthException: ${e.message}"); + if (e.code == "operation-not-allowed") { + print("Anonymous auth hasn't been enabled for this project."); + } else { + print("Unknown error: ${e.message}"); + } + } catch (e) { + print("General error: $e"); + } + } + + @override + Widget build(BuildContext context) { + return StreamBuilder( + stream: FirebaseAuth.instance.authStateChanges(), + builder: (context, snapshot) { + if (!snapshot.hasData) { + return SignInScreen( + providers: [ + EmailAuthProvider(), + GoogleProvider(clientId: "YOUR_CLIENT_ID.apps.googleusercontent.com"), + ], + headerBuilder: (context, constraints, shrinkOffset) { + return Padding( + padding: const EdgeInsets.all(20), + child: AspectRatio( + aspectRatio: 1, + child: Image.asset('flutterfire_300x.png'), + ), + ); + }, + subtitleBuilder: (context, action) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: action == AuthAction.signIn + ? const Text('Welcome to FlutterFire, please sign in!') + : const Text('Welcome to Flutterfire, please sign up!'), + ); + }, + footerBuilder: (context, action) { + return Padding( + padding: const EdgeInsets.only(top: 16), + child: TextButton( + onPressed: () => _signInAnonymously(context), + child: const Text('Sign in Anonymously'), + ), + ); + }, + sideBuilder: (context, shrinkOffset) { + return Padding( + padding: const EdgeInsets.all(20), + child: AspectRatio( + aspectRatio: 1, + child: Image.asset('flutterfire_300x.png'), + ), + ); + }, + ); + } + + + + return const HomeScreen(); + }, + ); + } +} diff --git a/lib/change_password_screen.dart b/lib/change_password_screen.dart new file mode 100644 index 00000000..ea863a64 --- /dev/null +++ b/lib/change_password_screen.dart @@ -0,0 +1,88 @@ +import 'package:flutter/material.dart'; +import 'package:firebase_auth/firebase_auth.dart'; + +class ChangePasswordScreen extends StatefulWidget { + @override + _ChangePasswordScreenState createState() => _ChangePasswordScreenState(); +} + +class _ChangePasswordScreenState extends State { + final _currentPasswordController = TextEditingController(); + final _newPasswordController = TextEditingController(); + final _auth = FirebaseAuth.instance; + String? _message; + + void _changePassword() async { + final user = _auth.currentUser; + + if (user == null) { + setState(() { + _message = 'No user is currently logged in.'; + }); + return; + } + + try { + // Reauthenticate user to change the password + final credential = EmailAuthProvider.credential( + email: user.email!, + password: _currentPasswordController.text, + ); + + await user.reauthenticateWithCredential(credential); + + // Update the password + await user.updatePassword(_newPasswordController.text); + + // Send email to notify the user + await user.sendEmailVerification(); + + setState(() { + _message = 'Password changed successfully. A confirmation email has been sent.'; + }); + } catch (e) { + setState(() { + _message = 'Failed to change password. Please try again later.'; + }); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text('Change Password'), + ), + body: Padding( + padding: EdgeInsets.all(16.0), + child: Column( + children: [ + TextField( + controller: _currentPasswordController, + decoration: InputDecoration(labelText: 'Current Password'), + obscureText: true, + ), + TextField( + controller: _newPasswordController, + decoration: InputDecoration(labelText: 'New Password'), + obscureText: true, + ), + SizedBox(height: 20), + ElevatedButton( + onPressed: _changePassword, + child: Text('Change Password'), + ), + if (_message != null) + Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + _message!, + style: TextStyle(color: Colors.red), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/constants.dart b/lib/constants.dart deleted file mode 100644 index dd5d17ce..00000000 --- a/lib/constants.dart +++ /dev/null @@ -1,21 +0,0 @@ -import 'package:flutter/material.dart'; -// import 'package:get/get_utils/src/platform/platform.dart'; - -const kPrimaryColor = Color(0xFF6F35A5); -const kPrimaryLightColor = Color(0xFFF1E6FF); - -const double defaultPadding = 16.0; - -const useEmulator = false; - -const useRecaptcha = false; - -const sendMailFromClient = - true; // set this true if in server using custom claim status - -const emulatorHost = - "127.0.0.1"; // GetPlatform.isAndroid ? "10.0.2.2" : "127.0.0.1"; //This is not required due to automaticHostMapping - -const baseUrl = useEmulator ? "http://127.0.0.1" : "your domain"; - -const bundleID = "com.example"; diff --git a/lib/cors.json b/lib/cors.json new file mode 100644 index 00000000..b9fdbe2b --- /dev/null +++ b/lib/cors.json @@ -0,0 +1,9 @@ + +[ + { + "origin": ["*"], + "method": ["GET", "POST", "PUT", "DELETE"], + "responseHeader": ["Content-Type", "Authorization"], + "maxAgeSeconds": 3600 + } +] diff --git a/lib/firebase_options.dart b/lib/firebase_options.dart new file mode 100644 index 00000000..22a6ea92 --- /dev/null +++ b/lib/firebase_options.dart @@ -0,0 +1,75 @@ +// File generated by FlutterFire CLI. +// ignore_for_file: type=lint +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:a +/// ```dart +/// import 'firebase_options.dart'; +/// // ... +/// await Firebase.initializeApp( +/// options: DefaultFirebaseOptions.currentPlatform, +/// ); +/// ``` +class DefaultFirebaseOptions { + static FirebaseOptions get currentPlatform { + if (kIsWeb) { + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for web - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + } + switch (defaultTargetPlatform) { + case TargetPlatform.android: + return android; + case TargetPlatform.iOS: + return ios; + case TargetPlatform.macOS: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for macos - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + case TargetPlatform.windows: + return windows; + 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 android = FirebaseOptions( + apiKey: 'AIzaSyC36dmVwt-cECpeaH0sbgotmoqNYkdk1vw', + appId: '1:3991487808:android:b94b49e0ac05c492ea66a5', + messagingSenderId: '3991487808', + projectId: 'sharekhanclg', + storageBucket: 'sharekhanclg.appspot.com', + ); + + static const FirebaseOptions ios = FirebaseOptions( + apiKey: 'AIzaSyAuOAa9gSMcz3D5qNBANKYf91QPBuRKmy8', + appId: '1:3991487808:ios:c6b5399412adf28aea66a5', + messagingSenderId: '3991487808', + projectId: 'sharekhanclg', + storageBucket: 'sharekhanclg.appspot.com', + iosBundleId: 'com.example.sharekhanclg', + ); + + static const FirebaseOptions windows = FirebaseOptions( + apiKey: 'AIzaSyBE_bhn-MWtQNbT3-BZIh9fltEmTq6UDLk', + appId: '1:3991487808:web:3390d957047b1e55ea66a5', + messagingSenderId: '3991487808', + projectId: 'sharekhanclg', + authDomain: 'sharekhanclg.firebaseapp.com', + storageBucket: 'sharekhanclg.appspot.com', + ); +} diff --git a/lib/firebase_options.template b/lib/firebase_options.template deleted file mode 100644 index 57f5e36d..00000000 --- a/lib/firebase_options.template +++ /dev/null @@ -1,96 +0,0 @@ -// This is a template of the file generated by FlutterFire CLI. -// Actual file will be .dart extension -// ignore_for_file: type=lint -import 'package:firebase_core/firebase_core.dart' show FirebaseOptions; -import 'package:firebase_storage/firebase_storage.dart'; -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: - return windows; - 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: 'YOUR_API_KEY', - appId: 'YOUR_APP_ID', - messagingSenderId: 'YOUR_MESSAGING_ID', - projectId: 'YOUR_PROJECT_ID', - authDomain: 'YOUR_PROJECT_ID.firebaseapp.com', - storageBucket: 'YOUR_PROJECT_ID.appspot.com', - measurementId: 'YOUR_MEASUREMENT_ID', - ); - - static const String webClientId = - 'YOUR_APP_ID.apps.googleusercontent.com'; - - static const FirebaseOptions android = FirebaseOptions( - apiKey: 'YOUR_APP_ID', - appId: 'YOUR_APP_ID', - messagingSenderId: 'YOUR_MESSAGING_ID', - projectId: 'YOUR_PROJECT_ID', - storageBucket: 'YOUR_PROJECT_ID.appspot.com', - ); - - static const FirebaseOptions ios = FirebaseOptions( - apiKey: 'YOUR_API_KEY', - appId: 'YOUR_APP_ID', - messagingSenderId: 'YOUR_MESSAGING_ID', - projectId: 'YOUR_PROJECT_ID', - storageBucket: 'YOUR_PROJECT_ID.appspot.com', - iosBundleId: 'com.example.complete', - ); - - static const FirebaseOptions macos = FirebaseOptions( - apiKey: 'YOUR_API_KEY', - appId: 'YOUR_APP_ID', - messagingSenderId: 'YOUR_MESSAGING_ID', - projectId: 'YOUR_PROJECT_ID', - storageBucket: 'YOUR_PROJECT_ID.appspot.com', - iosBundleId: 'com.example.complete', - ); - - static const FirebaseOptions windows = FirebaseOptions( - apiKey: 'YOUR_API_KEY', - appId: 'YOUR_APP_ID', - messagingSenderId: 'YOUR_MESSAGING_ID', - projectId: 'YOUR_PROJECT_ID', - authDomain: 'YOUR_PROJECT_ID.firebaseapp.com', - storageBucket: 'YOUR_PROJECT_ID.appspot.com', - measurementId: 'YOUR_MEASUREMENT_ID', - ); - - final storage = - FirebaseStorage.instanceFor(bucket: "gs://YOUR_PROJECT_ID.appspot.com"); -} diff --git a/lib/home.dart b/lib/home.dart new file mode 100644 index 00000000..2d79afeb --- /dev/null +++ b/lib/home.dart @@ -0,0 +1,185 @@ +import 'dart:io'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:firebase_ui_auth/firebase_ui_auth.dart'; +import 'image_controller.dart'; // Import ImageController +import 'image_uploads.dart'; // Import ImageUploads +import 'change_password_screen.dart'; // Import ChangePasswordScreen + +class HomeScreen extends StatelessWidget { + const HomeScreen({super.key}); + + @override + Widget build(BuildContext context) { + final ImageController imageController = Get.find(); + final User? user = FirebaseAuth.instance.currentUser; + + return Scaffold( + appBar: AppBar( + actions: [ + MenuAnchor( + builder: (context, controller, child) { + return IconButton( + icon: const Icon(Icons.more_vert), + onPressed: () { + controller.open(); + }, + ); + }, + menuChildren: [ + MenuItemButton( + onPressed: () { + // Check if the user is logged in anonymously + if (user != null && user.isAnonymous) { + _showCreateAccountDialog(context); + } else { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ProfileScreen( + appBar: AppBar( + title: const Text('User Profile'), + ), + actions: [ + SignedOutAction((context) { + Navigator.of(context).pop(); + }) + ], + children: [ + const Divider(), + Padding( + padding: const EdgeInsets.all(8.0), + child: AspectRatio( + aspectRatio: 1, + child: Image.asset('flutterfire_300x.png'), + ), + ), + ], + ), + ), + ); + } + }, + child: const Text('Profile'), + ), + MenuItemButton( + onPressed: () { + // Check if the user is logged in anonymously + if (user != null && user.isAnonymous) { + _showCreateAccountDialog(context); + } else { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ChangePasswordScreen(), + ), + ); + } + }, + child: const Text('Change Password'), + ), + MenuItemButton( + onPressed: () { + FirebaseUIAuth.signOut(); + }, + child: const Text('Sign Out'), + ), + ], + ), + ], + automaticallyImplyLeading: false, + ), + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Obx(() { + return Container( + height: MediaQuery.of(context).size.height / 3.2, + width: MediaQuery.of(context).size.width / 1.8, + decoration: BoxDecoration( + image: DecorationImage( + image: imageController.files.isNotEmpty + ? FileImage(imageController.files.first) + : const AssetImage('lib/assets/images/dash.png') as ImageProvider, + fit: BoxFit.cover, + ), + border: Border.all( + width: 0.0, + color: Colors.transparent, + ), + borderRadius: BorderRadius.zero, + ), + ); + }), + SizedBox(height: 32), + ElevatedButton( + onPressed: () { + // Check if the user is logged in anonymously + if (user != null && user.isAnonymous) { + _showCreateAccountDialog(context); + } else { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ImageUploads(), + ), + ); + } + }, + child: const Text("Go to Upload Screen"), + ), + SizedBox(height: 32), + Text( + 'Welcome!', + style: Theme.of(context).textTheme.headlineMedium, + ), + const SignOutButton(), + ], + ), + ), + ); + } + + void _showCreateAccountDialog(BuildContext context) { + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Create an Account'), + content: const Text('You are currently logged in anonymously. Please create an account to access this feature.'), + actions: [ + TextButton( + onPressed: () { + Navigator.of(context).pop(); + }, + child: const Text('Cancel'), + ), + TextButton( + onPressed: () { + Navigator.of(context).pop(); // Close the dialog + // Redirect to the sign-up screen or process account creation + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ProfileScreen( + appBar: AppBar( + title: const Text('Create Account'), + ), + children: [ + // Your account creation widget here + ], + ), + ), + ); + }, + child: const Text('Create Account'), + ), + ], + ); + }, + ); + } +} diff --git a/lib/image_controller.dart b/lib/image_controller.dart new file mode 100644 index 00000000..2a463efd --- /dev/null +++ b/lib/image_controller.dart @@ -0,0 +1,19 @@ +import 'dart:io'; +import 'package:file_picker/file_picker.dart'; +import 'package:get/get.dart'; + +import 'image_uploads.dart'; + +class ImageController extends GetxController { + var files = [].obs; + + Future getFiles() async { + // Use file picker to select files + final pickedFiles = await FilePicker.platform.pickFiles(allowMultiple: true); + + if (pickedFiles != null) { + files.value = pickedFiles.paths.map((path) => File(path!)).toList(); + Get.to(() => ImageUploads()); // Navigate to the upload screen + } + } +} diff --git a/lib/image_uploads.dart b/lib/image_uploads.dart new file mode 100644 index 00000000..fa0a76d9 --- /dev/null +++ b/lib/image_uploads.dart @@ -0,0 +1,134 @@ +import 'dart:io'; +import 'package:firebase_storage/firebase_storage.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:path/path.dart'; +import 'image_controller.dart'; + +class ImageUploads extends StatefulWidget { + @override + _ImageUploadsState createState() => _ImageUploadsState(); +} + +class _ImageUploadsState extends State { + final ImageController imageController = Get.find(); + bool isUploading = false; + double uploadProgress = 0.0; + + Future uploadFiles() async { + if (imageController.files.isEmpty) return; + + setState(() { + isUploading = true; + uploadProgress = 0.0; + }); + + try { + int totalFiles = imageController.files.length; + int uploadedFiles = 0; + + for (var file in imageController.files) { + final fileName = basename(file.path); + String destination; + + if (fileName.endsWith('.png') || fileName.endsWith('.jpg')) { + destination = 'images/$fileName'; + } else if (fileName.endsWith('.pdf') || fileName.endsWith('.docx')) { + destination = 'documents/$fileName'; + } else { + destination = 'others/$fileName'; + } + + final ref = FirebaseStorage.instance.ref(destination); + UploadTask uploadTask = ref.putFile(file); + + uploadTask.snapshotEvents.listen((snapshot) { + setState(() { + uploadProgress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100; + }); + }); + + await uploadTask; + + uploadedFiles += 1; + + setState(() { + uploadProgress = (uploadedFiles / totalFiles) * 100; + }); + + print('File uploaded successfully to $destination'); + } + + imageController.files.clear(); + + ScaffoldMessenger.of(Get.context!).showSnackBar( + SnackBar( + content: Text('Files uploaded successfully'), + backgroundColor: Colors.green, + duration: Duration(seconds: 2), + ), + ); + + Get.back(); // Navigate back to the previous screen + } catch (e) { + ScaffoldMessenger.of(Get.context!).showSnackBar( + SnackBar( + content: Text('Error occurred: $e'), + backgroundColor: Colors.red, + duration: Duration(seconds: 2), + ), + ); + } finally { + setState(() { + isUploading = false; + }); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text('Upload Files')), + body: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + children: [ + if (isUploading) ...[ + CircularProgressIndicator(value: uploadProgress / 100), + SizedBox(height: 16), + Text('Uploading... ${uploadProgress.toStringAsFixed(2)}%'), + ] else ...[ + ElevatedButton( + onPressed: () { + imageController.getFiles(); + }, + child: Text('Select Files'), + ), + SizedBox(height: 16), + if (imageController.files.isNotEmpty) + Expanded( + child: ListView.builder( + itemCount: imageController.files.length, + itemBuilder: (context, index) { + File file = imageController.files[index]; + return ListTile( + leading: Icon(Icons.insert_drive_file), + title: Text(basename(file.path)), + ); + }, + ), + ), + SizedBox(height: 16), + ElevatedButton( + onPressed: imageController.files.isNotEmpty ? uploadFiles : null, + child: isUploading + ? CircularProgressIndicator(value: uploadProgress / 100) + : Text('Upload Files'), + ), + ], + ], + ), + ), + ); + } +} diff --git a/lib/main.dart b/lib/main.dart index 30c258f2..1fac9597 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,44 +1,35 @@ -// ignore_for_file: inference_failure_on_instance_creation - import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:get_storage/get_storage.dart'; - -import 'app/routes/app_pages.dart'; import 'firebase_options.dart'; -import 'services/auth_service.dart'; +import 'auth_gate.dart'; +import 'image_controller.dart'; // Import ImageController +import 'image_uploads.dart'; // Import ImageUploads void main() async { WidgetsFlutterBinding.ensureInitialized(); - await GetStorage.init(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); - runApp( - GetMaterialApp.router( - debugShowCheckedModeBanner: - false, //the debug banner will automatically disappear in prod build - title: 'Application', - initialBinding: BindingsBuilder( - () { - Get.put(AuthService()); - }, - ), - getPages: AppPages.routes, - // routeInformationParser: GetInformationParser( - // // initialRoute: Routes.HOME, - // ), - // routerDelegate: GetDelegate( - // backButtonPopMode: PopMode.History, - // preventDuplicateHandlingMode: - // PreventDuplicateHandlingMode.ReorderRoutes, - // ), + // Initialize ImageController globally + Get.put(ImageController()); + + runApp(MyApp()); +} + +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return GetMaterialApp( + title: 'Flutter Demo', theme: ThemeData( - highlightColor: Colors.black.withOpacity(0.5), - bottomSheetTheme: - const BottomSheetThemeData(surfaceTintColor: Colors.blue)), - ), - ); + primarySwatch: Colors.blue, + ), + home: AuthGate(), // Use AuthGate for authentication + routes: { + '/upload': (context) => ImageUploads(), // Route for ImageUploads screen + }, + ); + } } diff --git a/lib/models/access_level.dart b/lib/models/access_level.dart deleted file mode 100644 index a7b89742..00000000 --- a/lib/models/access_level.dart +++ /dev/null @@ -1,9 +0,0 @@ -enum AccessLevel { - public, //available without any login - guest, //available with guest login - notAuthed, // used for login screens - authenticated, //available on login - roleBased, //available on login and with allowed roles - masked, //available in a partly masked manner based on role - secret //never visible -} diff --git a/lib/models/action_enum.dart b/lib/models/action_enum.dart deleted file mode 100644 index 023adba5..00000000 --- a/lib/models/action_enum.dart +++ /dev/null @@ -1,7 +0,0 @@ -import 'package:flutter/material.dart'; - -abstract class ActionEnum { - Future doAction(); - IconData? get icon; - String? get label; -} diff --git a/lib/models/product.dart b/lib/models/product.dart deleted file mode 100644 index 003d5785..00000000 --- a/lib/models/product.dart +++ /dev/null @@ -1,9 +0,0 @@ -class Product { - final String name; - final String id; - - Product({ - required this.name, - required this.id, - }); -} diff --git a/lib/models/role.dart b/lib/models/role.dart deleted file mode 100644 index 50ee31b4..00000000 --- a/lib/models/role.dart +++ /dev/null @@ -1,35 +0,0 @@ -import 'screens.dart'; - -// First tab for all except Admin is Home/Dashboard which is diferrent for each role -// Admin is User List By Roles with slide to Change Role or Disable -// Second tab for -// Guest & Buyer is Public Product List by Category with Slide to Add to Cart -// Seller is Product List by Category with Add Product FAB leading to Product Form -// Admin is Category List with Add Category FAB -// Third tab for -// Guest is Cart with Guest Auth -// Buyer is Cart with own Auth -// Seller is MyProducts -// Admin is Tasks/Approvals -// Profile and Settings is in Drawer - -enum Role { - buyer([Screen.DASHBOARD, Screen.PRODUCTS, Screen.CART]), - seller([Screen.DASHBOARD, Screen.PRODUCTS, Screen.MY_PRODUCTS]), - admin([Screen.USERS, Screen.CATEGORIES, Screen.TASKS]); -//higher role can assume a lower role - - const Role(this.permissions); - final List - permissions; //list of screens, with accessLevel = roleBased, visible for the role - - static Role fromString(String? name) => (name != null - ? Role.values.firstWhere((role) => role.name == name) - : Role.buyer); - bool hasAccess(Role role) => index >= role.index; - bool hasAccessOf(String role) => index >= fromString(role).index; - - List get tabs => permissions - .where((screen) => screen.accessor_ == AccessedVia.navigator) - .toList(); //the ones in tab -} diff --git a/lib/models/screens.dart b/lib/models/screens.dart deleted file mode 100644 index 24dee39f..00000000 --- a/lib/models/screens.dart +++ /dev/null @@ -1,177 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; -import '../app/widgets/login_widgets.dart'; -import '../services/remote_config.dart'; -import 'action_enum.dart'; -import 'access_level.dart'; -import '../../services/auth_service.dart'; - -enum AccessedVia { - auto, - widget, //example: top right button - navigator, //bottom nav. can be linked to drawer items //handled in ScreenWidget - drawer, //creates nav tree //handled in RootView - bottomSheet, //context menu for web handled via the Button that calls the sheet - fab, //handled in ScreenWidget - singleTap, //when an item of a list is clicked - longTap //or double click -} - -enum Screen implements ActionEnum { - HOME('/home', - icon: Icons.home, - label: "Home", - accessor_: AccessedVia.drawer, - accessLevel: AccessLevel.public), //first screen is default screen - DASHBOARD('/dashboard', - icon: Icons.home, - label: "Home", - accessor_: AccessedVia.navigator, - accessLevel: AccessLevel.public, - parent: HOME), - PRODUCTS('/products', - icon: Icons.dataset, - label: "Products", - accessor_: AccessedVia.navigator, - accessLevel: AccessLevel.public, - parent: HOME), - PRODUCT_DETAILS('/:productId', - accessLevel: AccessLevel.public, parent: PRODUCTS), - LOGIN('/login', - icon: Icons.login, - accessor_: AccessedVia.widget, - accessLevel: AccessLevel.notAuthed), - PROFILE('/profile', - icon: Icons.account_box_rounded, - label: "Profile", - accessor_: AccessedVia.drawer, - accessLevel: AccessLevel.authenticated, - remoteConfig: true), - SETTINGS('/settings', - icon: Icons.settings, - label: "Settings", - accessor_: AccessedVia.drawer, - accessLevel: AccessLevel.authenticated, - remoteConfig: true), - CART('/cart', - icon: Icons.trolley, - label: "Cart", - parent: HOME, - accessor_: AccessedVia.navigator, - accessLevel: AccessLevel.guest), - CART_DETAILS('/:productId', parent: CART, accessLevel: AccessLevel.guest), - CHECKOUT('/checkout', - icon: Icons.check_outlined, - label: "Checkout", - accessor_: AccessedVia.fab, //fab appears in parent - parent: CART, - accessLevel: AccessLevel.authenticated), - REGISTER('/register', - accessor_: AccessedVia.auto, accessLevel: AccessLevel.authenticated), - CATEGORIES('/categories', - icon: Icons.category, - label: "Categories", - parent: HOME, - accessor_: AccessedVia.navigator, - accessLevel: AccessLevel.roleBased), - TASKS('/tasks', - icon: Icons.task, - label: "Tasks", - parent: HOME, - accessor_: AccessedVia.navigator, - accessLevel: AccessLevel.roleBased), - TASK_DETAILS('/:taskId', parent: TASKS, accessLevel: AccessLevel.roleBased), - USERS('/users', - icon: Icons.verified_user, - label: "Users", - parent: HOME, - accessor_: AccessedVia.navigator, - accessLevel: AccessLevel.roleBased), - USER_PROFILE('/:uId', parent: USERS, accessLevel: AccessLevel.roleBased), - MY_PRODUCTS('/my-products', - parent: HOME, - icon: Icons.inventory, - accessor_: AccessedVia.navigator, - label: "Inventory", - accessLevel: AccessLevel.roleBased), - MY_PRODUCT_DETAILS('/:productId', - parent: MY_PRODUCTS, accessLevel: AccessLevel.roleBased), - LOGOUT('/login', - icon: Icons.logout, - label: "Logout", - accessor_: AccessedVia.bottomSheet, - accessLevel: AccessLevel.authenticated), - ; - - const Screen(this.path, - {this.icon, - this.label, - this.parent, - this.accessor_ = AccessedVia.singleTap, - this.accessLevel = AccessLevel.authenticated, - this.remoteConfig = false}); - - @override - final IconData? icon; - @override - final String? label; - - final String path; - final AccessedVia accessor_; - final Screen? parent; - final AccessLevel - accessLevel; //if false it is role based. true means allowed for all - final bool remoteConfig; - - Future get accessor async { - if (remoteConfig && - (await RemoteConfig.instance).useBottomSheetForProfileOptions()) { - return AccessedVia.bottomSheet; - } - return accessor_; - } - - Iterable get children => - Screen.values.where((Screen screen) => screen.parent == this); - - Iterable get fabs => Screen.values.where((Screen screen) => - screen.parent == this && screen.accessor_ == AccessedVia.fab); - - Iterable get navTabs => Screen.values.where((Screen screen) => - screen.parent == this && screen.accessor_ == AccessedVia.navigator); - - String get route => (parent != null ? parent?.route : '')! + path; - - static Future> sheet(Screen? parent) async { - List list = []; - await Future.forEach(Screen.values, (Screen screen) async { - if (screen.parent == parent && - (await screen.accessor) == AccessedVia.bottomSheet) { - list.add(screen); - } - }); - return list; - } - - static Future> drawer() async { - //drawer is not parent linked - List list = []; - await Future.forEach(Screen.values, (Screen screen) async { - if ((await screen.accessor) == AccessedVia.drawer) { - list.add(screen); - } - }); - return list; - } - - @override - Future doAction() async { - if (this == LOGOUT) { - AuthService.to.logout(); - } - Get.rootDelegate.toNamed(route); - } - - Widget? widget(GetNavConfig current) => - (this == LOGIN) ? LoginBottomSheetToggle(current) : null; -} diff --git a/lib/services/auth_service.dart b/lib/services/auth_service.dart deleted file mode 100644 index 8bf72aaa..00000000 --- a/lib/services/auth_service.dart +++ /dev/null @@ -1,201 +0,0 @@ -// ignore_for_file: avoid_print - -import 'package:firebase_auth/firebase_auth.dart'; -import 'package:firebase_ui_auth/firebase_ui_auth.dart' as fbui; -import 'package:firebase_ui_localizations/firebase_ui_localizations.dart'; -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - -import '../models/screens.dart'; -import '../constants.dart'; -import '../models/role.dart'; - -class AuthService extends GetxService { - static AuthService get to => Get.find(); - - final FirebaseAuth _auth = FirebaseAuth.instance; - late Rxn credential = Rxn(); - final Rxn _firebaseUser = Rxn(); - final Rx _userRole = Rx(Role.buyer); - final Rx robot = RxBool(useRecaptcha); - final RxBool registered = false.obs; - - User? get user => _firebaseUser.value; - Role get maxRole => _userRole.value; - - @override - onInit() { - super.onInit(); - if (useEmulator) _auth.useAuthEmulator(emulatorHost, 9099); - _firebaseUser.bindStream(_auth.authStateChanges()); - _auth.authStateChanges().listen((User? user) { - if (user != null) { - user.getIdTokenResult().then((token) { - _userRole.value = Role.fromString(token.claims?["role"]); - }); - } - }); - } - - bool get isEmailVerified => - user != null && (user!.email == null || user!.emailVerified); - - bool get isLoggedInValue => user != null; - - bool get isAdmin => user != null && _userRole.value == Role.admin; - - bool hasRole(Role role) => user != null && _userRole.value == role; - - bool get isAnon => user != null && user!.isAnonymous; - - String? get userName => (user != null && !user!.isAnonymous) - ? (user!.displayName ?? user!.email) - : 'Guest'; - - void login() { - // this is not needed as we are using Firebase UI for the login part - } - - void sendVerificationMail({EmailAuthCredential? emailAuth}) async { - if (sendMailFromClient) { - if (_auth.currentUser != null) { - await _auth.currentUser?.sendEmailVerification(); - } else if (emailAuth != null) { - // Approach 1: sending email auth link requires deep linking which is - // a TODO as the current Flutter methods are deprecated - // sendSingInLink(emailAuth); - - // Approach 2: This is a hack. - // We are using createUser to send the verification link from the server side by adding suffix .verify in the email - // if the user already exists and the password is also same and sign in occurs via custom token on server side - try { - await _auth.createUserWithEmailAndPassword( - email: "${credential.value!.email}.verify", - password: credential.value!.password!); - } on FirebaseAuthException catch (e) { - int i = e.message!.indexOf("message") + 10; - int j = e.message!.indexOf('"', i); - Get.snackbar( - e.message!.substring(i, j), - 'Please verify your email by clicking the link on the Email sent', - ); - } - } - } - } - - void sendSingInLink(EmailAuthCredential emailAuth) { - var acs = ActionCodeSettings( - // URL you want to redirect back to. The domain (www.example.com) for this - // URL must be whitelisted in the Firebase Console. - url: - '$baseUrl:5001/flutterfast-92c25/us-central1/handleEmailLinkVerification', - // // This must be true if deep linking. - // // If deeplinking. See [https://firebase.google.com/docs/dynamic-links/flutter/receive] - handleCodeInApp: true, - // iOSBundleId: '$bundleID.ios', - // androidPackageName: '$bundleID.android', - // // installIfNotAvailable - // androidInstallApp: true, - // // minimumVersion - // androidMinimumVersion: '12' - ); - _auth - .sendSignInLinkToEmail(email: emailAuth.email, actionCodeSettings: acs) - .catchError( - (onError) => print('Error sending email verification $onError')) - .then((value) => print('Successfully sent email verification')); - } - - void register() { - registered.value = true; - // logout(); // Uncomment if we need to enforce relogin - final thenTo = - Get.rootDelegate.currentConfiguration!.currentPage!.parameters?['then']; - Get.rootDelegate - .offAndToNamed(thenTo ?? Screen.PROFILE.route); //Profile has the forms - } - - void logout() { - _auth.signOut(); - if (isAnon) _auth.currentUser?.delete(); - _firebaseUser.value = null; - } - - Future guest() async { - return await Get.defaultDialog( - middleText: 'Sign in as Guest', - barrierDismissible: true, - onConfirm: loginAsGuest, - onCancel: () => Get.back(result: false), - textConfirm: 'Yes, will SignUp later', - textCancel: 'No, will SignIn now'); - } - - void loginAsGuest() async { - try { - await FirebaseAuth.instance.signInAnonymously(); - Get.back(result: true); - Get.snackbar( - 'Alert!', - 'Signed in with temporary account.', - ); - } on FirebaseAuthException catch (e) { - switch (e.code) { - case "operation-not-allowed": - print("Anonymous auth hasn't been enabled for this project."); - break; - default: - print("Unknown error."); - } - Get.back(result: false); - } - } - - void errorMessage(BuildContext context, fbui.AuthFailed state, - Function(bool, EmailAuthCredential?) callback) { - fbui.ErrorText.localizeError = - (BuildContext context, FirebaseAuthException e) { - final defaultLabels = FirebaseUILocalizations.labelsOf(context); - - // for verification error, also set a boolean flag to trigger button visibility to resend verification mail - String? verification; - if (e.code == "internal-error" && - e.message!.contains('"status":"UNAUTHENTICATED"')) { - // Note that (possibly in Emulator only) the e.email is always coming as null - // String? email = e.email ?? parseEmail(e.message!); - callback(true, credential.value); - verification = - "Please verify email id by clicking the link on the email sent"; - } else { - callback(false, credential.value); - } - - return switch (e.code) { - 'invalid-credential' => 'User ID or Password incorrect', - 'user-not-found' => 'Please create an account first.', - 'credential-already-in-use' => 'This email is already in use.', - _ => fbui.localizedErrorText(e.code, defaultLabels) ?? - verification ?? - 'Oh no! Something went wrong.', - }; - }; - } -} - -class MyCredential extends AuthCredential { - final EmailAuthCredential cred; - MyCredential(this.cred) - : super(providerId: "custom", signInMethod: cred.signInMethod); - - @override - Map asMap() { - return cred.asMap(); - } -} - -parseEmail(String message) { - int i = message.indexOf('"message":') + 13; - int j = message.indexOf('"', i); - return message.substring(i, j - 1); -} diff --git a/lib/services/remote_config.dart b/lib/services/remote_config.dart deleted file mode 100644 index 5d1145a5..00000000 --- a/lib/services/remote_config.dart +++ /dev/null @@ -1,78 +0,0 @@ -import 'package:firebase_remote_config/firebase_remote_config.dart'; -import 'package:get/get_utils/src/platform/platform.dart'; - -enum Typer { integer, boolean, double, string } - -class RemoteConfig { - static RemoteConfig? _instance; - - static Future get instance async { - _instance = _instance ?? RemoteConfig(); - await _instance!.init(); - return _instance!; - } - - final FirebaseRemoteConfig _remoteConfig = FirebaseRemoteConfig.instance; - final List listeners = []; - - Future init() async { - await _remoteConfig.setConfigSettings(RemoteConfigSettings( - fetchTimeout: const Duration(minutes: 1), - minimumFetchInterval: //const Duration(hours: 1), //use for prod - const Duration(minutes: 5), //use for testing only - )); - - await _remoteConfig.setDefaults(const { - "useBottomSheetForProfileOptions": false, - "showSearchBarOnTop": true, - }); - - await fetch(); - } - - Future fetch() async { - return await _remoteConfig.fetchAndActivate(); - } - -//can be used to change config without restart - void addListener(String key, Typer typ, Function listener) async { - if (!GetPlatform.isWeb) { - _remoteConfig.onConfigUpdated. //not supported in web - listen((event) async { - await _remoteConfig.activate(); - if (event.updatedKeys.contains(key)) { - _remoteConfig.fetch(); - var val = _remoteConfig.getValue(key); - switch (typ) { - case Typer.integer: - listener(val.asInt()); - break; - case Typer.boolean: - listener(val.asInt()); - break; - case Typer.double: - listener(val.asDouble()); - break; - default: - listener(val.asString()); - } - } - }); - } - } - - bool useBottomSheetForProfileOptions() { - return _remoteConfig.getBool("useBottomSheetForProfileOptions"); - } - - bool showSearchBarOnTop() { - return _remoteConfig.getBool("showSearchBarOnTop"); - } - - void addUseBottomSheetForProfileOptionsListener(listener) { - addListener("useBottomSheetForProfileOptions", Typer.boolean, listener); - if (!listeners.contains(listener)) { - listeners.add(listener); - } - } -} diff --git a/lib/sign_in_screen.dart b/lib/sign_in_screen.dart new file mode 100644 index 00000000..8d206e4a --- /dev/null +++ b/lib/sign_in_screen.dart @@ -0,0 +1,93 @@ +import 'package:flutter/material.dart'; +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:google_sign_in/google_sign_in.dart'; +import 'package:get/get.dart'; +import 'image_controller.dart'; // Import ImageController +import 'image_uploads.dart'; // Import ImageUploads (or use a different screen for handling image uploads) + +class SignInScreen extends StatelessWidget { + final FirebaseAuth _auth = FirebaseAuth.instance; + final ImageController imageController = Get.put(ImageController()); + + Future _signInAnonymously() async { + try { + final userCredential = await _auth.signInAnonymously(); + print("Signed in with temporary account: ${userCredential.user?.uid}"); + } on FirebaseAuthException catch (e) { + print("FirebaseAuthException: ${e.message}"); + } catch (e) { + print("General error: $e"); + } + } + + Future _linkWithNewCredential(AuthCredential credential) async { + try { + final userCredential = await FirebaseAuth.instance.currentUser! + .linkWithCredential(credential); + print("Account linked successfully: ${userCredential.user?.uid}"); + } on FirebaseAuthException catch (e) { + switch (e.code) { + case "provider-already-linked": + print("The provider has already been linked to the user."); + break; + case "invalid-credential": + print("The provider's credential is not valid."); + break; + case "credential-already-in-use": + print("The account corresponding to the credential already exists, or is already linked to a Firebase User."); + break; + default: + print("Unknown error: ${e.message}"); + } + } catch (e) { + print("General error: $e"); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text('Sign In'), + ), + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ElevatedButton( + onPressed: _signInAnonymously, + child: Text('Sign in Anonymously'), + ), + ElevatedButton( + onPressed: () async { + final GoogleSignIn googleSignIn = GoogleSignIn(); + final GoogleSignInAccount? googleUser = await googleSignIn.signIn(); + final GoogleSignInAuthentication googleAuth = await googleUser!.authentication; + + final credential = GoogleAuthProvider.credential( + idToken: googleAuth.idToken, + accessToken: googleAuth.accessToken, + ); + + await _linkWithNewCredential(credential); + }, + child: Text('Sign in with Google'), + ), + ElevatedButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ImageUploads(), // Navigate to ImageUploads screen + ), + ); + }, + child: Text('Upload Image'), + ), + // Add similar buttons for other providers like Email/Password + ], + ), + ), + ); + } +} diff --git a/linux/.gitignore b/linux/.gitignore new file mode 100644 index 00000000..d3896c98 --- /dev/null +++ b/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt new file mode 100644 index 00000000..e51b4380 --- /dev/null +++ b/linux/CMakeLists.txt @@ -0,0 +1,145 @@ +# 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 "sharekhanclg") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "com.example.sharekhanclg") + +# 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) + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# 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/linux/flutter/CMakeLists.txt b/linux/flutter/CMakeLists.txt new file mode 100644 index 00000000..d5bd0164 --- /dev/null +++ b/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +# 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/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 00000000..21d96be6 --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,19 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include +#include + +void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) desktop_webview_auth_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "DesktopWebviewAuthPlugin"); + desktop_webview_auth_plugin_register_with_registrar(desktop_webview_auth_registrar); + g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); + file_selector_plugin_register_with_registrar(file_selector_linux_registrar); +} diff --git a/linux/flutter/generated_plugin_registrant.h b/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 00000000..e0f0a47b --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// 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/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake new file mode 100644 index 00000000..b5438041 --- /dev/null +++ b/linux/flutter/generated_plugins.cmake @@ -0,0 +1,25 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + desktop_webview_auth + file_selector_linux +) + +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/linux/main.cc b/linux/main.cc new file mode 100644 index 00000000..e7c5c543 --- /dev/null +++ b/linux/main.cc @@ -0,0 +1,6 @@ +#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/linux/my_application.cc b/linux/my_application.cc new file mode 100644 index 00000000..a5fd4859 --- /dev/null +++ b/linux/my_application.cc @@ -0,0 +1,124 @@ +#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, "sharekhanclg"); + 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, "sharekhanclg"); + } + + 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 GApplication::startup. +static void my_application_startup(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application startup. + + G_APPLICATION_CLASS(my_application_parent_class)->startup(application); +} + +// Implements GApplication::shutdown. +static void my_application_shutdown(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application shutdown. + + G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application); +} + +// 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_APPLICATION_CLASS(klass)->startup = my_application_startup; + G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown; + 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/linux/my_application.h b/linux/my_application.h new file mode 100644 index 00000000..72271d5e --- /dev/null +++ b/linux/my_application.h @@ -0,0 +1,18 @@ +#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/macos/.gitignore b/macos/.gitignore new file mode 100644 index 00000000..746adbb6 --- /dev/null +++ b/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/macos/Flutter/Flutter-Debug.xcconfig b/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 00000000..c2efd0b6 --- /dev/null +++ b/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/Flutter-Release.xcconfig b/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 00000000..c2efd0b6 --- /dev/null +++ b/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 00000000..61c03d3f --- /dev/null +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,24 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import cloud_firestore +import desktop_webview_auth +import file_selector_macos +import firebase_auth +import firebase_core +import firebase_storage +import google_sign_in_ios + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin")) + DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) + FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) + FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) + FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) + FLTFirebaseStoragePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseStoragePlugin")) + FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin")) +} diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..cef9b7f0 --- /dev/null +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,705 @@ +// !$*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 */; }; +/* 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 /* sharekhanclg.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "sharekhanclg.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 = ""; }; + 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 */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* sharekhanclg.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 /* sharekhanclg.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1510; + 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 */, + ); + 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.sharekhanclg.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/sharekhanclg.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/sharekhanclg"; + }; + 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.sharekhanclg.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/sharekhanclg.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/sharekhanclg"; + }; + 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.sharekhanclg.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/sharekhanclg.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/sharekhanclg"; + }; + name = Profile; + }; + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..ee5610cd --- /dev/null +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner.xcworkspace/contents.xcworkspacedata b/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner/AppDelegate.swift b/macos/Runner/AppDelegate.swift new file mode 100644 index 00000000..8e02df28 --- /dev/null +++ b/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@main +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..a2ec33f1 --- /dev/null +++ b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "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/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..82b6f9d9a33e198f5747104729e1fcef999772a5 GIT binary patch literal 102994 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ⅅ8MglG&ER{i5lN315cO?EdHNLrg? zgxkP+ytd)OMWe7QvTf8yj4;V=?m172!BEt@6*TPUT4m3)yir}esnIodFGatGnsSfJ z**;;yw=1VCb2J|A7cBz-F5QFOQh2JDQFLarE>;4ZMzQ$s^)fOscIVv2-o{?ct3~Zv zy{0zU>3`+-PluS|ADraI9n~=3#Tvfx{pDr^5i$^-h5tL*CV@AeQFLxv4Y<$xI{9y< zZ}li*WIQ+XS!IK;?IVD0)C?pNBA(DMxqozMy1L#j+ba1Cd+2w&{^d-OEWSSHmNH>9 z%1Ldo(}5*>a8rjQF&@%Ka`-M|HM+m<^E#bJtVg&YM}uMb7UVJ|OVQI-zt-*BqQ zG&mq`Bn7EY;;+b%Obs9i{gC^%>kUz`{Qnc=ps7ra_UxEP$!?f&|5fHnU(rr?7?)D z$3m9e{&;Zu6yfa1ixTr;80IP7KLgkKCbgv1%f_weZK6b7tY+AS%fyjf6dR(wQa9TD zYG9`#!N4DqpMim|{uViKVf0B+Vmsr7p)Y+;*T~-2HFr!IOedrpiXXz+BDppd5BTf3 ztsg4U?0wR?9@~`iV*nwGmtYFGnq`X< zf?G%=o!t50?gk^qN#J(~!sxi=_yeg?Vio04*w<2iBT+NYX>V#CFuQGLsX^u8dPIkP zPraQK?ro`rqA4t7yUbGYk;pw6Z})Bv=!l-a5^R5Ra^TjoXI?=Qdup)rtyhwo<(c9_ zF>6P%-6Aqxb8gf?wY1z!4*hagIch)&A4treifFk=E9v@kRXyMm?V*~^LEu%Y%0u(| z52VvVF?P^D<|fG)_au(!iqo~1<5eF$Sc5?)*$4P3MAlSircZ|F+9T66-$)0VUD6>e zl2zlSl_QQ?>ULUA~H?QbWazYeh61%B!!u;c(cs`;J|l z=7?q+vo^T#kzddr>C;VZ5h*;De8^F2y{iA#9|(|5@zYh4^FZ-3r)xej=GghMN3K2Y z=(xE`TM%V8UHc4`6Cdhz4%i0OY^%DSguLUXQ?Y3LP+5x3jyN)-UDVhEC}AI5wImt; zHY|*=UW}^bS3va-@L$-fJz2P2LbCl)XybkY)p%2MjPJd-FzkdyWW~NBC@NlPJkz{v z+6k6#nif`E>>KCGaP34oY*c#nBFm#G8a0^px1S6mm6Cs+d}E8{J;DX=NEHb|{fZm0 z@Ors@ebTgbf^Jg&DzVS|h&Or)56$+;%&sh0)`&6VkS@QxQ=#6WxF5g+FWSr7Lp9uF zV#rc`yLe?f*u6oZoi3WpOkKFf^>lHb2GC6t!)dyGaQbK7&BNZ7oyP)hUX1Y(LdW-I z6LI2$i%+g!zsjT(5l}5ROLb)8`9kkldbklcq6tfLSrAyh#s(C1U2Sz9`h3#T9eX#Hryi1AU^!uv*&6I~qdM_B7-@`~8#O^jN&t7+S zTKI6;T$1@`Kky-;;$rU1*TdY;cUyg$JXalGc&3-Rh zJ&7kx=}~4lEx*%NUJA??g8eIeavDIDC7hTvojgRIT$=MlpU}ff0BTTTvjsZ0=wR)8 z?{xmc((XLburb0!&SA&fc%%46KU0e&QkA%_?9ZrZU%9Wt{*5DCUbqIBR%T#Ksp?)3 z%qL(XlnM!>F!=q@jE>x_P?EU=J!{G!BQq3k#mvFR%lJO2EU2M8egD?0r!2s*lL2Y} zdrmy`XvEarM&qTUz4c@>Zn}39Xi2h?n#)r3C4wosel_RUiL8$t;FSuga{9}-%FuOU z!R9L$Q!njtyY!^070-)|#E8My)w*~4k#hi%Y77)c5zfs6o(0zaj~nla0Vt&7bUqfD zrZmH~A50GOvk73qiyfXX6R9x3Qh)K=>#g^^D65<$5wbZjtrtWxfG4w1f<2CzsKj@e zvdsQ$$f6N=-%GJk~N7G(+-29R)Cbz8SIn_u|(VYVSAnlWZhPp8z6qm5=hvS$Y zULkbE?8HQ}vkwD!V*wW7BDBOGc|75qLVkyIWo~3<#nAT6?H_YSsvS+%l_X$}aUj7o z>A9&3f2i-`__#MiM#|ORNbK!HZ|N&jKNL<-pFkqAwuMJi=(jlv5zAN6EW`ex#;d^Z z<;gldpFcVD&mpfJ1d7><79BnCn~z8U*4qo0-{i@1$CCaw+<$T{29l1S2A|8n9ccx0!1Pyf;)aGWQ15lwEEyU35_Y zQS8y~9j9ZiByE-#BV7eknm>ba75<_d1^*% zB_xp#q`bpV1f9o6C(vbhN((A-K+f#~3EJtjWVhRm+g$1$f2scX!eZkfa%EIZd2ZVG z6sbBo@~`iwZQC4rH9w84rlHjd!|fHc9~12Il&?-FldyN50A`jzt~?_4`OWmc$qkgI zD_@7^L@cwg4WdL(sWrBYmkH;OjZGE^0*^iWZM3HBfYNw(hxh5>k@MH>AerLNqUg*Og9LiYmTgPw zX9IiqU)s?_obULF(#f~YeK#6P>;21x+cJ$KTL}|$xeG?i`zO;dAk0{Uj6GhT-p-=f zP2NJUcRJ{fZy=bbsN1Jk3q}(!&|Fkt_~GYdcBd7^JIt)Q!!7L8`3@so@|GM9b(D$+ zlD&69JhPnT>;xlr(W#x`JJvf*DPX(4^OQ%1{t@)Lkw5nc5zLVmRt|s+v zn(25v*1Z(c8RP@=3l_c6j{{=M$=*aO^ zPMUbbEKO7m2Q$4Xn>GIdwm#P_P4`or_w0+J+joK&qIP#uEiCo&RdOaP_7Z;PvfMh@ zsXUTn>ppdoEINmmq5T1BO&57*?QNLolW-8iz-jv7VAIgoV&o<<-vbD)--SD%FFOLd z>T$u+V>)4Dl6?A24xd1vgm}MovrQjf-@YH7cIk6tP^eq-xYFymnoSxcw}{lsbCP1g zE_sX|c_nq(+INR3iq+Oj^TwkjhbdOo}FmpPS2*#NGxNgl98|H0M*lu)Cu0TrA|*t=i`KIqoUl(Q7jN zb6!H-rO*!&_>-t)vG5jG>WR6z#O9O&IvA-4ho9g;as~hSnt!oF5 z6w(4pxz|WpO?HO<>sC_OB4MW)l`-E9DZJ$!=ytzO}fWXwnP>`8yWm5tYw`b1KDdg zp@oD;g===H+sj+^v6DCpEu7R?fh7>@pz>f74V5&#PvBN+95?28`mIdGR@f*L@j2%% z%;Rz5R>l#1U zYCS_5_)zUjgq#0SdO#)xEfYJ)JrHLXfe8^GK3F*CA(Y)jsSPJ{j&Ae!SeWN%Ev727 zxdd3Y0n^OBOtBSKdglEBL)i5=NdKfqK=1n~6LX`ja;#Tr!II$AAH{Z#sp%`rwNGT5 zvHT%(LJB+kD{5N}7c_Rk6}@tikIeq%@MqxX%$P!(238YD(H<_d;xxo*oMiv^1io>g zt5z&6`}cjci90q2r0hutQXr!UA~|4e*u=k81D(Cp7n{4LVCa+u0%-8Uha+sqI#Om~ z!&)KN(#Zone^~&@Ja{|l?X64Dxk)q>tLRv{=0|t$`Kdaj z#{AJr>{_BtpS|XEgTVJ4WMvBRk-(mk@ZYGdY1VwI z81;z(MBGV|2j*Cj%dvl8?b2{{B#e0B7&7wfv+>g`R2^Ai5C_WUx|CnTrHm+RFGXrt zs<~zBtk@?Niu%|o6IEL+y60Q>zJlv``ePCa07C%*O~lj?74|}&A0!uA)3V7ST8b_- z6CBP1;x+S@xTzgOY2#s%@=bhZ@i@BwmS)neQG&=9KUtRf^K=MvjC5JnqLqykCE_P0 zjf#V4SdH2#%2EuDb!>FLHK7j;nd6VLW|$3gJuegpEl3DZ`BpJU$<}}A(rW?<6OB@9 zKP9G3An?T5BztrLdlximA;{>Tr7GAeSU=^<*y;%RHj+7;v+tonyh(8d;Izn}2{oz& zW)fsZ9gHYpI?B|uekS3zHUue3mI zb7?0+&Zm>Kq(F>~%VYEn)0b32I3~O^?Wx-HI|Zu?1-OA2yfyJ;gWygLOeU;)vRm3u z5J4vDIQYztnEm=QauX2(WJO{yzI0HUFl+oO&isMf!Yh2pu@p}65)|0EdWRbg(@J6qo5_Els>#|_2a1p0&y&UP z8x#Z69q=d663NPPi>DHx3|QhJl5Ka$Cfqbvl*oRLYYXiH>g8*vriy!0XgmT~&jh3l z+!|~l=oCj<*PD>1EY*#+^a{rVk3T(66rJ^DxGt|~XTNnJf$vix1v1qdYu+d@Jn~bh z!7`a`y+IEcS#O*fSzA;I`e_T~XYzpW7alC%&?1nr);tSkNwO&J`JnX+7X1Q8fRh_d zx%)Xh_YjI3hwTCmGUeq_Z@H#ovkk_b(`osa$`aNmt`9A#t&<^jvuf z1E1DrW(%7PpAOQGwURz@luEW9-)L!`Jy*aC*4mcD?Si~mb=3Kn#M#1il9%`C0wkZ` zbpJ-qEPaOE5Y5iv_z%Wr{y4jh#U+o^KtP{pPCq-Qf&!=Uu)cEE(Iu9`uT#oHwHj+w z_R=kr7vmr~{^5sxXkj|WzNhAlXkW^oB4V)BZ{({~4ylOcM#O>DR)ZhD;RWwmf|(}y zDn)>%iwCE=*82>zP0db>I4jN#uxcYWod+<;#RtdMGPDpQW;riE;3cu``1toL|FaWa zK)MVA%ogXt3q55(Q&q+sjOG`?h=UJE9P;8i#gI*#f}@JbV(DuGEkee;La*9{p&Z?;~lE!&-kUFCtoDHY*MS zzj+S$L9+aTs(F^4ufZe6>SBg;m@>0&+kEZMFmD*~p~sx?rx=!>Ge;KYw<33y#*&77 zFZI`YE(Iz?+tH;Fq;y=MaSqT{Ayh*HFv0(z{_?Q+7@nE%p?S8%X6c!+y;!0NLXwJV8Co_}R3*7>n+oMsQpv8}8ZS-P@(Rg|gmxZHzf=nMOUAAY}AZGfWVzZjE@4$=7xkIrs8BE%606aVU%kxz_04ipig51k& z(>c9rJL2q%xvU%Zj#GR9C9)HLCR;#zQBB@x;e_9$ayn(JmSg_*0G?+wOF?&iu@}S{ zt$;TPf*Lj$3=d<}Q3o!Hq@3~lFxoiCyeEt}o3fihIn{x2s1)e2@3##&GYDq~YO|!q zUs0P-zy)+ohl-VQ`bhvUpC{-d$lkpML_M%Kl6@#_@A}w{jWCDsPa#cSbWA#C4Sf|*C*&Z{ zz?hOU7Cc`?>H$WGqITA2P~fYudnQHxB8^;0ZFKC;19F#~n_2P@{cE{Czq-#K5L_8| zc3aOEwq4%zL5>YU_mc9fc-p~{fBTWUkxTiZvxt9FOqC{s#TBp(#dWc+{Ee{dZ#B!g zHnaOJ8;KO1G;QU2ciodE+#Z$Wuz*Hc6NRO!AUMi|gov=>=cwcZeL&`>Jfn!35hV1J z;B2@0!bIR853w%T*m6)gQ?DPnQ)o6EtKaN3L;o?*q<83d&lG&U=A|6hcT?f0)4h6{ zGIZ0|!}-?*n{zr}-}cC}qWxEN%g60+{my)o^57{QEn(tSrmD7o)|r0+HVpQPopFu; z0<S}pW8W2vXzSxEqGD+qePj^x?R$e2LO&*ewsLo{+_Z)Wl|Z1K47j zsKoNRlX)h2z^ls_>IZ0!2X5t&irUs%RAO$Dr>0o$-D+$!Kb9puSgpoWza1jnX6(eG zTg-U z6|kf1atI!_>#@|=d01Ro@Rg)BD?mY3XBsG7U9%lmq>4;Gf&2k3_oyEOdEN&X6Hl5K zCz^hyt67G;IE&@w1n~%ji_{sob_ssP#Ke|qd!Xx?J&+|2K=^`WfwZ-zt|sklFouxC zXZeDgluD2a?Zd3e{MtE$gQfAY9eO@KLX;@8N`(?1-m`?AWp!a8bA%UN>QTntIcJX zvbY+C-GD&F?>E?jo$xhyKa@ps9$Dnwq>&)GB=W~2V3m)k;GNR$JoPRk%#f3#hgVdZ zhW3?cSQ*((Fog26jiEeNvum-6ID-fbfJ?q1ZU#)dgnJ^FCm`+sdP?g;d4VD$3XKx{ zs|Y4ePJp|93fpu)RL+#lIN9Ormd;<_5|oN!k5CENnpO>{60X;DN>vgHCX$QZYtgrj z*1{bEA1LKi8#U%oa!4W-4G+458~`5O4S1&tuyv>%H9DjLip7cC~RRS@HvdJ<|c z$TxEL=)r)XTfTgVxaG!gtZhLL`$#=gz1X=j|I@n~eHDUCW39r=o_ml@B z0cDx$5;3OA2l)&41kiKY^z7sO_U%1=)Ka4gV(P#(<^ z_zhThw=}tRG|2|1m4EP|p{Swfq#eNzDdi&QcVWwP+7920UQB*DpO0(tZHvLVMIGJl zdZ5;2J%a!N1lzxFwAkq05DPUg2*6SxcLRsSNI6dLiK0&JRuYAqwL}Z!YVJ$?mdnDF z82)J_t=jbY&le6Hq$Qs}@AOZGpB1}$Ah#i;&SzD1QQNwi6&1ddUf7UG0*@kX?E zDCbHypPZ9+H~KnDwBeOXZ-W-Y80wpoGB*A) z_;26Z`#s0tKrf~QBi2rl2=>;CS1w)rcD3-sB!8NI*1iQo59PJ>OLnqeV4iK7`RBi^ zFW{*6;nlD&cSunmU3v4JKj|K4xeN(q>H%;SsY8yDdw5BJ75q8>Ov)&D5OPZ`XiRHl z;)mAA0Woy6f!xCK(9H2rq?qzp83liZAIpBPl-dQ&$2=&H?Im~%g;vnIw1I+8q|kr! z36&^9}CMmR(U2rf|j12oG=vb%Ypsq8u9Kq}U*ANX*)9uK}fAi8;V_7Z;0_4*iydDxN-? zv?qJ=T*{MzL~-xUv{_Kh_q9#F{8gPV!yPUUS8pEq*=}2-#1d=sC_|U-rX~F0 zBLawgCWy#?#ax{~DAnDvh^`}wyUO`ioMK~jgh%L7^}#h?beSyvQ_g>+`2`}`-1h7# zg*?qJdm=53hwN8~B=^|LPmYtOVrQ(W{sNm4uofq=4P@dUA%$onWbw_m-KWia&n9iv zi)!9#OJ#^}eg8tE{wSb9(c0D^PS1 z9EBS5*ypSiVRS_G0v?$hyoZOS7hFWlp4qbYkf9Y&{%OzhsIdHskLptn96@k6@^K@U zszd8POehITDK+AyW#JKpnWY;ju#MC$JjB1Y*~(E6N%{p#kO+bVxG3X<34n3fW=k{A zCZt|KP%x^GQ9%mU)KE0{LA=vaZvRQbxSlK~eAkwWo2Z<{j5eS5NVTMe`m%re8%~7K zZLtU&b~YDN%~uA9wPf>x2=PI=MA6_oVe>Ek$s5&&Z=8vvF5EODP4Av(b|dlNgF1O8 zy83W0WRdzjz2iNA~t1piEqlyU&`$yZtqR`6X_PmuP>W+D|8iH;FQ zN{JuU#Tz9mV=4R_IewROL1|mK^`lLat#LcIBfggzM(iO$pQT*-c_ z94^LUWw#5B9~sp2W1p`c)Y(xfR<{O^9n4E6vDDw{#-R4UMBKo{>Hqlqn*a9rl_>+0 zS5MwJC~nCC`1X%VCyWFsiDX;bfAJQAUkU#105f_s5U-8rqO}n8fA1{b>Fr6Q|Ea(V z5B11Lo^ooWF?`^{-U#?iatokWI-e$632frzY?Yzzx(xJc@LFM4A~-eg!u|tl{)8Nx ztZLXsSC*68g%9TFu(f&J9nmc^9hgyy#uUOMJFCaifSaDcyQ&6=8e9=t zIFEAQ{EK{|73{($!a4=!wj4ABcQrUQp#+gGM?wEUp(w@+Fzi{!lt}|3`PM%&d-seeR zB$}BrFGD3R10CE>Hsb>;PrP}pd` zaY4}6+Wu(`#uAV+E5SV7VIT7ES#b(U0%%DgN1}USJH>)mm;CHPv>}B18&0F~Kj@1= z&^Jyo+z-E)GRT4U*7$8wJO1OibWg0Jw>C$%Ge|=YwV@Y1(4fR>cV#6aGtRoF@I`*w_V4;)V231NzNqb6g@jdpjmjv*<2j02yU$F8ZS$fTvCC`%|Yn#x< zXUnP&b!GLpOY-TY3d?<-Hhxom_LM9`JC9LEX2{t1P-Nj%nG+0Vq)vQwvO^}coPH-> zAo8w#s>Je^Yy*#PlK=XDxpVS~pFe-j#jN-(As&LRewOf(kN-aKF(H+s*{*!0xrlZw zchJu@XAvQWX7DI1E8?F}Wc8m46eT+C<0eXVB+Z^(g=Kl@FG-cn@u$suj)1V2(KNg_ zh29ws6&6(q~+sOAoHY^o86A<#n*?Pg2)cK$+y;cY$hJLq4)4V84=j+3ShSr##Tk5kgmxB zkW+8A1GtceEx~^Ebhwm36U?oA)h)!mt=eg0QE$D1QsLNZ_T3NH?=B&0j~#298!6iv zhc0|-{46*3`Rx&nKSXnf1&w-Rs>#PGAGuY@cBTU-j|Fxbn3z49S#6KBaP^Lx*AOXxIibr z!1ysMi(&kr!1wwQB5w`BDH2~>T4bI`T1}A2RM0zd7ikC&kuBRsB`Z2@J!Udm{AmSN zrr0k6_qCZL**=)xRW`MFu(OY=OT;3G8eF~ z2mmkXZ9X(sjuKmq+_<=LSjphB$~R1o^Yb=rO!j!(4ErIox^x55o{pXSE9X$!76^*$ zoKhlAX6y%n^U=C~@!vIlEgXQGD@>oOU=_(aXF-Sjas*$AKESfRzxQ8#3yOj|y0OCU z>6Z-0%LCcjla&7I+CXm&caKp@@jQ!5M`(_{CL=@4#JJ}cHeZw>^b6fpv269LSV?gV5Q{kk?4;;y9RIsy5vk%DIRiL(9xe1aA@4!VX zDh2}xgUd5X?6nji%&7-%QuyKSYA-Z{PwJijUQ}In+EJl|x@dF1P<5bPa5W3&&?^h$ zZCo8LepKo0a(Fsln*cHL;D(gu9MMkoiM0*n31u)jHqX5x^F95tnI&^}^yKx3YwEm@ zo8?EZ710ykx@19{=yz5IXb8w4yjdveWb{IVL6Z(Cs>!a_0X^1E27o!4e&b43+J*u2Gb(59k2uK0goLwhO{ujLS ziI9LA9`&x~Y$6JNX!aEXR``}LUI}Gr#=<^wBHmg%v<)zRWDVtq)kT$-P7iU1R)2XZ zi~bYhV@EZ`@prgK(cs{>2jn$pxg$<|KjJ7%26Km>%KcXh^bU@y@V_Lf@=j1x%R4{v zOcQn{I}!2W<~08FOVnoV>zOTH=+>v9!jFo|q)ucqIe!N4{U5_G`>>*sVD{8I~4FqyU8imZ**-Gy`~Xd z4w35GMf%7^i65HdX{Iz|f2Kg193#KhPIeR)-=eYx3Z!%RM=JjwLrdk^B#6rg!ym2w zPbFqYyO4>W_Z6PonAwiu7?!h=x%sR-T+_*xZOGh2wWhWr%}%2^$$ zQvACIB~pi=m|`hXIMvoq`TOCx=J_D2>pi6$NPy3&8#vy|oX)=kM0Z}$BR$r0G}MzOk-OqG+VmZtOZoj6x4(tLh|5h) zBv64Y{DPHsy&_H(5_l(&Y}FhVvr9m_*_Q~Zy-}V9+VmGnvndEjYW4qt4K~N&Y&6g| zfpz*V=A#^mVmuOAz)(KVI<%v5NY0%Goy!{9&o41upsPWk(yFuRP|A4q6NMnX%V~MT zi_Rb-Bno2kI+j0Cw`@ydy{e%ARS#Z%b6I%_yfo_ZKXr4BLVoHzBKJ^ZG z-2>2IzU)55@9C|?_P$ew^-7zEiAKG1XAi{!3h%1m#9s%^pGy6S9wKFYY4<$djeoJP z{GI}Vd%idY$4_fh(7NXm7#;cC!DS&-{tGr!Qze{^%bUx2jgG@-kMta^q-EwrKB}d8 z{%FT>rFk_bzW<{lc%eYlrsiYTZXGgzD1&lmRyp+c1O=0=zAX=KV62bx-a~JP{cPF4 zU$-XT#(9&T>l@bMu3nSr{)%-5lV+0t&bxip4DVJ~vlL$J2P6X~ zd{FS8vm{Lhrieul*7&(AgPuXhjpGila%6_?-+k#b)cdk#M1jB*nE>G6NGOr+Ek{`= z9b%S1`$`=g0CC$>0$Db;l_szReLYVmce*(()9%Zz1`*fNXhI*oRlerWHarD(v^W^c zuc1Vuw6Gbp7ZsoRH>QGt#&lv;5G~Ovt$%7VFd*-rN2>UjbOWBFGNGO`bru7CFB4tn zL`^?69Lj_g_TA&`9`dSI8s|)K|QM0 zybvV7!>xDY|6c6y;Q}qs`){1+WQu_5Dgd8Qe|q}}bxjH+joQQtqs1IVZn6{e7T{ia zF|=^xa%eWO%(x<7j*QZbcU_;aVaVP!arexOLOtoSNt*hvsRL%}%)jPetSich(`b-^ zMZ$PM9%s@%*jPVz0Z^W*cK_>G4f}+eEVX`HOaHg#!B`<4v;x}zDLMR*M27`kNfp!! zOfdt(>k-g>7jf^{Se@3$8<+;R*cYtw+wD_Z8Pl~!JDCUEPq{Ea*!J9`%ihyNJZ30i zmfve}S5<$Uso}_?SuI$ks|{-ddGLu9WR9`^9)Kdi@Vs;x#SY-xp}wHPU0|vEA7234 z@BN1z7OF=OOQtPF$4twn3!HTVlUVD_)ubMM7PEPoiC6lQgL2q9PK4~e8v-OuH%lie z?NgBLkIdPMG$QBq(>r^AOHB`|*1#*!2Z? zuU8H|FD`OBRu^(R?Z-Vhr0j;FLpS~a34KREnd}B=EYHS*>Hm+f%tgJt!4J8Q`qn^4 z9F=tO#JRJ}tzA`vx$nZ)O%wC?Uiv0+_nz}5Lj4ki*&=K&*#U`=rv z`Q@Q{+IhAj@6lrNK2B=8Yln!O2%zomfRehFT~;!O@(@Xy|1Jlw*uOB-M$#6K^)QBm z_7%#QVUDPwnW{iOV-grMQQU|3{=BQMh}c5(yMGdoQf*)k9-B zMQ(^GdJh+y)>qJprknS!%WxqM>HlHOP#7UVdy>%PW$!l72J`n-p7j(DBKoGxXWh(Y z>BFDZl|7knU_jg_SSbvFk8)39%2)Hu5W0}HKlh>EaqvFoXI&56Yy)3) zQkE4X^P0QnPn?iUUVHJZXzPp`s5uv?pG{K9IgGoHvcmlBxubi|iF7n{)mhenIcxGs zgr0OpQy#Y#u=5lOyiECfE_Sn?Fj1LyoRKcbTgX{p<T*v!CGkPc)pcA2D=4Ekp0Gb*wpy7S88C%Ywsbr?MI(3UdsCM?XJ1X%*hNjB)XqZ*W(qDdtSb z<3XN74ARXL3=c^bfW~F%NM^5*Zx92>Wq`&M625p~j$8mYwLbk%Kf)jbn#<2z$%vP5 zy#b>-tF-S2_AB4;R^K&^-1LJrUmi@9rB^FLF)-k&YHK8P+k@RCJ1qSTZ@=kHxA3l$ zmK_ZG)l6(nmCR1a8|;QF-B5e_ELnjJ1$m-;4UXX?WytF_wz7#&AjwZYTMVieLbq@R z3t-q|G4^BB#EpNu4uyfDebB+-uu_$9>y-dzB30Y9F=R zrW-Heqnj*InPTWHgR9v^R7~hokldh&h8=HDhMW(EFfim1*{)5Lc1-+eBVkK-2!u=N zuZKABgJs3I--NbjE;>Undg6uK`^U>AQ6V zhc!RhYgvrmeGNsftr+(C<_MtuV$`5RZTf#5r=DR?gWG->#})#=(td%C3`oO+2B7im zUqY}&a_QNTn?s+?=mNXiREN%x_=(H)L|DtYPY>SR3pQfBOel7G_jR_{!9`dSj8Up-`JgcB;=Oor)U=_EVjF3C5{Sqh8cq=~bRjoBpoc$kJCgtTyZGSpQ4= zYi$6b$-dGmuTDF&@amhV?cU05g(AZV&v2$4m&j_~GZk;&keSO(@LRESRZ&p`dV*6w z2$em~p*8yM6j;SYorw`M5K2mluJq7P5Yn$VtZj8DEs2Zk=O@4T&Q}>~f31Z{uk}`E z{Dp{KObh1kk~~MfLUod72{Pk6G@T$_0_N??lOrdR=Z;VV#m0l)&@hz{Z?)@sgImi-&i1@95g53rON83v!yVPDHRU*Mzc4yZ(-Fr z{8{WXmIJf7jeswk$;6s~Qac6QyM3W&`}m#gRt=rr95A+Ad&wSAgvXZ|F))rBJVJ5W1CsjN`QaOzct2ocq#0!v zmj#075)C!3oS>&N;aHS@<+c>RHL)8j^p)k(8#7$LEx!1g_1^02!4_qA=;uhKW=+ix zGX%+vBMiRiF^^jm{mdO(?GdWJ#unO#_F^7mhT8)s(z_WlwFyJ#Xh)k5+RG2f;LC*K**1dr`#}~6A=0B=I&V;%zDA1)d@G!X#Rng)7G*2k8Kg447r0ox> z5NK`d(H-afBwo9feDOUi>;BbPsu!2|=@g=3j*PY}@YrOb+SX6?#Yb2xaaK!?>SX1J z_!VsB`2n1=wwSftkydm!39|-1?c%Epx?TO<(#GO~I&{f4+)XwRk<7RQ1~5>QcKH|D z?!}j1ueO0Lk;FZ{k4FA_(S`Ot0w~tl&m0duID*f6RY#bkw||o;kZ# zISYNTb|{~|X$m$Q-Jv#uxyw)eM0gIv`V#wOAp&Vv@>X4_tSZ&L#juM@$S9 zx_X_tLh<_^-F;LAQ09s@sPb%PMTrcw*HUV0P=RYSlM&AXEOI&&R&YCm_S<7DRBx^L zA^R^iwW+LMk(r*$Pq-fKU5X@=mQ=`ErO30H@@&qqnI7zJcrbSh+H<V ze&7Uli0xj@WrW#&-9%*FP~kPYF_YYM_hs5~|ExMynQ%qvq`leRB6W0yhC@pCb8>_P zlf=F~WMv_u*-DV=UaVu#2rlzK{q8D95VwZrfV?gj@rSNWXFvktUq)V5+YrlxwX302ae(;aG4e>L-M@3J+-f3IT{b9l!kg*2M zC1+ND9}6m^()LE87Mt+^Q|)!y#suc&v26C=0W88%a{?)E8Yvo@kM&KNMaOst#|-_CbUTm}WS@-c>nRb;&z^ zYr)+IE$1=jov(CZ%3uR+`~NI>1&Gs6W(jaamjcN$a`2!*nO}l|b%?)Q%%UWzw>A`C zR@px(P*7j$TK?jbv*%x)e^|jcLsv}aF(Z0=7(%Oa7+1wY>{B>d+i&ZA$}k(qgZPZY z;VkW~8eWnU&HPIAbco?&tc2O1$6=7n{u|^Y*nXoac{o1W-6aXfy~KlNbJfLoq~6;+ zDYmnv--Fhqrl+UV#k@_(1=gWNtqhyVKN=9CZ-{Ohi>e=~bm4IKbhM%%W zW8oXE!rGpV7Wt(_^4nndH1_imheaWzDi|I})9ZVZ9>pN+P%dVc5wG`Ze*4`@rjn1^ z`ln(;vPBHQUb}y8S>=8q__r7g+=z$>!pReVB0@XKchAvyGjLQs-u>+w%`frV4FeIG zj=7n~hGrwx*&5aHy(7X$bDZ7YhcP%(*>G^lAYMK;qG~V8Jz@b7oNg;IA1z$9@TbzW z;@I51@Ekef#qbxnG$Y8Z%bm~ibZ=4#%yKr%#b)CDrfKN`ujIY?tA4h9)i~dZ4E;ZM znvb$n2)zn$Wx&zlW%mJZDh28ox$@%`w3i7YFepXUChw}$UXKI=-TM51`M#FH=tdr*mQ!c=aB1296Lu>iTTKZWss0f z5~ihdImPN$aTle_AdbYC^31}_^EK|9R&l#%3hbx;8vJ+Gp^tm{9JDILu*1PW!rh^Dn9p<)h#Sl4kKM%nm<+!ESSk* zC;lLNT$fgr-!+{aBsSx$41b}yy6o>r3F#1&iv3cfY2N<+`0qJ+>=&Qxs}JOEkD?^l-F5i`t5+zNuvJf z3Fh4$mNqiFXL-aq4U4K@Ae$fq-TDT`rvrx;gqx96w^*@s=mcthCaIyPe(w)6kI{EqV10tcShHU9eeAPs)s?6#vrq}>y3FeTJu$Udha+z zs7}rmA@yR(L&>35sNjQqrw}o^)UitMU!5g6nnG)(tgst!^`FKJEzI1(d@j_w@;^hr zgYxlIRYjho4U$bhczfq&YySCqCE(5_d>l(4tk1v9!V7PB%Vx{QO=G2NC@c1%3rEzw zN<6i?h;CJX>h)kn49Sr)g#Em6km6ESP`1qc5C3ZHizN>r>V-fSS=X1nT{+Thh@kC! z(H=PlqDt7V6gOYezXUK-dretz!1?IUD6&eL2b!4=9h+HUO&DYZKMM>|YhlEEg?q?S z^XT4$2Fd|zT=x3U#L1|F;-#`to-Y6hiYkWdO=rRC)meY72pIfl`3zEGDU8($iWR^K zI$nq80aSJII<;#W5Pj>^_T&013BJ*O89Uoq z5>;Paa^E}xar^r=!pexg&OTM8wluk4R~Ru=)Hgk`Y#i_$jk{jc8hx}?(dW*X!l4vs z6_%$s#duJJFmaFc-5#>v6Yea=I~)s_pXGS>Tkz?s+WS}>Qp<9MappMLXpkXpSM~SmH6u)`Z5>o02kJs;w@KhdiZ3}29y*xr|6tMo zBHzGic+b+dTd!xOJ;p{Rguh^corJ;K?R6daayQKm+0rf7|AXg0qs!R9eS7t4{G=fs z1$=?kK1Ih=gEkI>@jgXDWHZt*C7FUEWs|u^pE3Z``^K|1KEC^sbN*4nQUfRc_AyE0 zn)?RrGjgPkzfE~_s!rDB!fDsV+*|kEX4+DyS#8%!cshn;s8svwBXSsDGX2ZRa0={* z=`p1F{zD17*Rk>Uk_cw3t5j=9-d6$}MoM~z{v{t^M!g75-+o8_XkP@CZWUQ2z!^26 zCNOu~hgrrK)y>bgqb{`Q_1^zrG4;cGarP!nb4E~(ZKWc`LVeEq;IewVneLp^ZU2+% z95PgN*M5v7Q;ZlGvM#`&u2NdHm%&gZ{bZM5wBCp&?HeZhwU87wyT_z!n4z+1?=RvXZ^72d*%+R1s1$KbAFtR|= zw;MEq=O7pMIKpFwKH6$OOszJAf<_Z<1)36cB>D>|Z6$gJL~jH`n3MMou$#Si%rDAu z4pSkJspG|^CJ86vg6kkfXsA_`8@8iOryOe!Qhn8SV6}mPlof3=WJRVqAr_b;e->`Z zMR(p|K|$L0^6;u~USxg#B6-ZNc%E1dv*^P=|2k*^NOBni#G%9Y?##{=)8KZwh85OL zSBG9|gb|hdmY^gn(ziY&O5#@I?W)W;361Yb^VQNpz0A7&^(7HRAsUvw#)fvhocvja zLxV65J0_$>&cVRctJFsn^qLos^tG`+B0_gQ{NeOwKt-!C^gGFufdtPT*Vi>l#X1|V z2XxsAcixN)Ekq=a##_^=k_^BFH5_zpvPDRP>u6+3$}i&b zy0@FdzAHw?i9OqnlTts_w5D@Nd#eM)KKEuN#m{|AJyscxa}(eA?z4&4yvXo{OBS65 z-?gW;<+;+ntM}U_yTmHm6*2zj0Imj<&ZgE9Wj|gfsXhrVH-c0p$7HXnR8bxDYOi z=_r3FA~u`L&2;Vir8}P3)k|@c?sK1U@&iWo{HEXcoy>6wQSuJ+b4l%aTBuigs&k@Y<2c=S3Ef?p zH>ki4yDuXdo_eu>X1{E$g(Q-u#zVXN^&%70guoizo7x(kQ0OZ}H$O9UB}(FaX8Ct1 zFpx~}EbHf2r6V;x=@8GH$C2|6*?K~?LrtMYd^bw*WYXhA z_))@RMH;nZedW3+qfWbv<|_#BYOxX^rhbN+!za)|!|8K*LRs(R$O*2SDM{g9k7e{u zN4VIdi}e#0&h?sBxu$>Yy%)j(k1V2fuhp8r!}gfF@b;F?U`6}YnnMh1&sSU&lR^?# zu!61+lGsuFEfDraX3+$QZibCbKzc{75G^T7@WZSQ)j5898G1AOXB*H*TSd`f<`IK# zm1%&t?i|2Z-a&r!pJehzg@!awNp)R)aa?q_SqGrxE5u+T#f?K2;GAHV?O&>!W@Q*k)7=g2vDW+7K zbyY9i{|nOF*SbMYoRQSAbSH2y$bE5(@d6xKxcF#@TE~X#3o=;`0sc!RupdRmQsML? z&>SCwS{FOpSr+@6Uuz3m`hj}(^g`Jz|6?({!%WVJn$H|ugxW+x-GEA?J&U^ugj3Nb z;65~)W<}iH2PJ@st8LtLfSOLXYgj=9<;?ih7rq$bXW9J#!B8!Wu6#U`A$wlcoC*&` z_9Js~7%m79#+edeT&P`@_Ng@e&5J+pqpx%31tAF71)pcz~-yJ>P5yX(nuM4;bUHDa8E(~~l{j~JeCGkX>nHJDpgSf&bTHEf)qw8{Q~CBPEVen|MW2P3vmf`8X9-g|>>ddp zcgfjbl~(?3Wa*NzQH>4nsM$3}Ul>pX1xC0oF3TZXe7=V!9!n?WgvH|R zpbruczmB%z=zkZ>=1R|gXwGThLELqD5KCUhtiRGT*JwKIvzbzV%ZU!e!VcNHSSX3> zObH|oohc8nvQZ2}q??C}@>!fe3gH+HF@4(qWqi>;ag~md#D;cl8&gQb^?2a@5cikT z=7r78@&5gV3Ggc9f=<<8v~yz`NcEGvbX1V_`IL(&+Z>LB zM~$ok2qXzod@1$TEl*U~H$V5g$er{Uj^($sWb7Nr{gsIbE(`$LRGECTOraXiU%=uq z0zvpi1S%)RxTjzoVcR4#10)fs()4Mtsa@e?9j)Bk!LsYyXIZga2q7d%`vQE!V@<1Y zmkpH3LeXJNO9f7l>F84g;huc=4nk(UnU}RLZmYk2TtB#lv34K(?8~gyx-mN%g=U44 zOPdr_!j-;IEbe|l9-buuKEy^Q9MLjSKG$S6dz)!U_32{1)N}L)3+COmlg=nY1@od$ zJ<0z-B%sisAR1yh>z-RfQQb6M4i-d#vxvb~f69M{JLPZv1JSCh1$gQ*LxOF-tH9!k zbQ0ZW)S7)qCSF|=2`q_A3}OHBNBueZwTTz^ar~gz#2KA74&&D)KHt~m4F_nK<^*7_ z!!pN@xiGkq%>1N(rNxw$zu-=1t*IpAy$ z4~dD0w%9;E?(greVWZ3(o9ux`elM>Rek#0 zO=#-(4p5B+wFzlEU7^k{3EdL6sIp|K*>xrriI`}E8ze|z-$YpN`^_teL_7P`%e>IN z7tNiH619P+0Q1hBR|W#POOta)1|LkIRtgz zMJ9VOxXN#o)mlXS=u%`Q>~PBuKEmOWsIuQRp{y%!ty{fEyL0gV)$LQeL#pqX3L@SR zJ2Gb^E9+KVd?;joVOXlGie3?z6>(>u(i!(qGz(W( ze~^xj&IRF<98ypEis{Y_FoHn%C0bW(XeF#Lj=2WUEBqKNPPFppEH?_a3}-h906X}C zSYKcZFU`Om5YlWhh@ogzCn3NvuM~F9jOX|xe-X*!YL+#ceh_tJoHXz`aTnvSrOAZ| zOtdGz?QdT!oAJr3(XL2G(p%2X4{xEohU&vd_zQ(U%ihHOlKPWnb$&YYhx48?|R++>`5?sxvM?!;ru|9 zZ#nwuTK^S%ce<+ggdJBE&fRrXN7O!{nu`%q`M{2Ef_+IRad2cf01P9pST9AOK>y75c!9}~)Et^6$`&Nm{wzWcm4c0j9DF!xJTpGrMp3esI4D_iiDe`sswXSu{dQZE_`^A11 z?Z@Hw=65mVu^%X`>;$mciK}XiZ{xw7I_!t)S00^JuxdCXhIRO~S*lPS(S^je`DH4E zxbKNs8RL`N?gCQ@YSOU=>0FE#Ku#DRO7JA&fu-X8b;3!^#{=7`WsDXUxfUsE(FKSQ z&=N`A7IwLq%+vt(F;z+T=uZNl=@K4|E%p{p^o5(BGjsE|WOR`%8+XgGW8xJTFJc4L zVY#L`OdnSM{HyS$fX1)3_JuNNH1aDsDqi>CzCT5=kY5zV<~29bX)c^I8R5n&ymHkx zj(QC4t#mDK;2xi8O%V;C{HqDQeM64=b4@sa*N_K0a&ro4+8LY6cFHz< ze|!g}zF|tDrP=`+U7KwKl20gdW1%!iN>1=uxA|NZJ2peruBOj?RBPb~8G;s6xIi6- z?_odhafsxoxiBf zwZZ)c*)FLc0#wE~bXw0TPBYl+h9hs|DYr_B4LR_YL@S1hQs=p zNEh%_fUvWZCbJtaF#kP5=(O#{8|g&Kmz1&8{@Lufw^DhtvKx955~aqxi2C=)Z-!Kd z+m-u+#^U4(HYn6a1w652kO0bYBt&goyx(n?MR^kI+{Q?0Y{G~W2) z0dS3fuJ?SU(6ZDp=kUley%PK}K_;YQyK|U|?7t9SHiyIfpT4a_kUVIhH4PSaj@3mo z`z}|mHhx1Pq?@(3vTBb5HTXuFAzFZEt0D-fw_kd=XvwIUh3VXTm{wbDA~cESd5cI1 zd>6=&AvG3yu+)`9oxmfrDQ(1fzv(_0l?bp{a364dXLRRBI8kBv!KsL;brY)#E3`o{ z3TlWUsS0{Voci?6MejccG9x_KiqN>So*1{25r6BSl9jUyR}1TgXBLL7Pr6Wv~Nu47;fbiU7TbL}>qmtl36YSZ() zVf@nqW(As~#`@bIC+AxSw!O5Pocf&rYaCFm?Jd?XR)p#@{!|5^Ws@wd855)mI^8y{ zws+VvGXW6%xoj@JkGb=~%oJ~7m6+uhOv?bH+jJJ~eFgp+}~*^C+3>R-MY!IZQoabCh( zN(T+z@Oyc^C)WqQESmh{d!!T8zS(!wX=R#hEKxMXy(eg zZ+Cwm1a%?;RH$h2_ws|nRjn8ZY!>3gn+6Ep4xT|AeFox7!rac2Lw?jsz}JqPE?5JG zok0}q1P;cuzs%Yrze|&d$oTr<`Lx{fbq2OV=!3v-ODq(n?|WxuhtmwJBIoW^^FB+D z-?Ok9HBKc5@)L(W&vmI{prL?4^OE9TR)bELS=<>*w%&aKjzi*@;5#P3moG@dm{Eke zhE#Is;&=o|{2GWai}7LYEI+gmc^Kj4K7w7n)+9godg?yB2?xs}pF1<*!Sv?D~Uvbkgs9xx9s#6zBv9l@ox>d#H6eqw^KZO;Vg}h!q zI33^$4}yF*q+q{DsJsa(SsV!YQ#zi^IF9MQV6i{SiN4dWWCi%YQ+hNc1r!^+<(YnB zG62-D`M3w3Q2;@X{S`n`{QO>migDpz0FK`->sYDOESs6u>-~<}_XN_6><2g7U#XC{ z$#Ig;n{_yEMnlvx-lP*;ts#DHV0r8j518>~33?Ak#jocW>uk>6V||p7{4rov#RS9c zdPD6r`qF1om9r!zS4Jk1>7fn#GCnmD=JIt1Na`X)=*LP7R!3XATgk`;&U*P<(0d z9p<0T&eYqQ9jot39FxpfuPSPYlfQ$s-*;+c1KL+cHIVcG5`H~^Ryu1Hk7%Nf$TCwR!SzG31@NHpm`mcp8v!wyWM49TjTxASJ-8JP*MTHLC}hF==PUOh8kaaXeGFGd<|e29vSDaS ztPeu&zv0^wN}Hahi`$pcDs~FVt2F;K!q}q*Y@{7i#stWfU`u2La4aerBKhV`^zG~j zJWvtZpcHIP7x*tfLSQcng6D(`HVp4=LWp_0Xt=2wEHjK)!DSz_Z?5J@>awRyk?azj zU-kdSs~cp))*pfJ_q7u`IsCq8F|OShB~D56S(Mwwlt?{yURE7#eI&WcpVq(@9Fd~g zeUiD!a4w51Nj(YzLnau+O3MDub|?loF0=<#jLztAM>PruE7yNDD0L}y=Ayuc?^?Ni zf~%GK=iEhn2}xKp7GonJx!JpDmDsco$|$XtRdUDwbM9$9s7x9-of2nKNj~?b@UOKz z9{`=Irz^ba-c&1vSQxSh;I2`cKc8-4)aCy%#bam;3_8vSJ-jw`_}lyukEC~z00EbC zI*dU3F21A)dSZr{qA5QF+{a%D`h#?8o%M?)*hWxuqnQD(TpcmfNq&UN$BmB)0!r8) zxno@Q?$_D&*4(rW6b+?-Y^5|*P`DHmJ%pI<6*yP)o}2^?>d7P#bd2j=vvx2mfLW@R zQLD`%buR*}nzNYNf%68w-D$7%v|=bXg1mYrdZy~}(@RRZ-U+Gx=nmCjVxr5Ag# zLw3R29-MHJl|`mRxj#sv@EfyR#-q>BE-XFEENbV$#dWM?!VjU8~kKZsd@G=HPrI{HiqN&j<92*-3$^M*;n@rG*i! zvi#?j;lc5w>@+r!6*CVUrN9as=S3?(ZBT979$5R#ZpPm?2VjIyQcEFp9orGR>f;G? zK<~FiYY6ow-&}|v7k?+03TC++so$)2~rN``u z>N%j$AbNQLX_!evzG8abf=15260vIXdz7K^a$YS)iw{@x5<|Rr#ii|ov=LJ{eu>dZYe_ip$ZuzvRu1dpjQK1BvP zH~m#t=2_wy>9+YkdNF-z` zQ*#7=^r%R*pIi2AI`>n9>(QJVE1k8?Ilav<)NUjW^O$}^yZZ{_Uwn!4Fq1`aslX;Y zj`XDIm`E1sz|wShA=?a@ZGKDSMU#Z3$E!1nZ)g^Eg3ZDoSN6@RXrGVCHvMIauS7d> zuJltXf9)LdTWdF!n%-iA9b#2$W#i??K)zYho^((ZqluvhAr@{H{diy0%@-~VW zKYC|2Ma)2^=skdLT@ZVqJfiCDqS@~qIGexL(BKy6Aw9ch0hoHN&E+m3*uka9+AIh3gTWdSe~W({-&^oFw`!j7$DcsF$7`pO?kRMK<9h=SV?cmyJIe`$4|zoI(6u9#qY9zM?#zNe^!Dl2>Z^dH`>`wSY# ztU;V*+g0R0DH6EnJA$U{QL&T~&s{`smeC2I-5mzv=v$l@iF;yN0hMibU=CG^e>J;+9k`Si9PzLaj$>}QKI6lWmO_o+_( zmhxA*0|-Na`+*J1qEMIXZf9rb#;pcOw>EDeDjb!|GumQ2!1ac;YqU|X;F@l1_lemzTN0J|U zFJF(kO21aHg)*KfuKT=BA{VDkOvlx(b{f|A9D69_BHUm#S$F>~`Mt@GesjLp3;reY zP~q>6Tt;`XkjqV?i7lqPbWGh`y<7dq<}pDHl-dDA4QG6`QDq)+vq_&HfW!}P6Cp4d zt>Qnli5ri*I1ILEOGD~3Y!@2^Jmcy1xDXmKolC?at}_6;neEfca0rLHT}NLpoUYh` zDbCtfZnYN&>}m-(F{5d1=)bBuZ?OcP`GmsQV@kn%JMJUIep`Avon#8=ATpEo-@hg& z12f-)R=HCD%pUjvbWa|P!}u)=wInpZG*LHKrZDMeC>Qils^IyY)x;kDRs4c3!DDOG zAptSsf#1X>kSli|Qka@S)6O4un-2aKL?bcV;$*>KSxHovjrfZ^-+c#>;(42yj71K| zzRyFiLrwv$rPcNA{mtv=o(*JDA0kS93>OE0D{KMJzLk$cc_5dCLWnJcFJd6_>BpE< z?aW9;^!;arQcIjloW&YL+~MkNO&a>N=pmhg>{SM<@`a&VeUA`ay*P@R$_+WS2%r?_ zs&Z%c`>ie+%!I=Lz>$9$7a`-`hoc&*dl60^whsaQ;~9~@JYn1Oc_bmgVVyAzUOYgZ z#j{`#D_YZ)(wa5;qzR#zo4a|-ANJjBB90r4Iun3*BkMxw_Ti>SjhktsmR|BPCLt>9 zZ_3eQjweI*-8+HNt)$9^s|+10w@sU!PY{`#BnF!ULS=#{k0Zr5`yOS?p8PfWbKT`6 z@T+PeRJ4`fj5t8bMs)0>o9|C>mBTlfQ*nFG#Rri-Q7}E}+eaz`LmO!`Y_pHkoAruu z`&!5VNnA3IG$}Pz)V&pt&AF!$E{J-;or3vWv3&Sl&9KzG+ae73Zf}=aP*SCI1{?0T z9SAC)W(?DSKOkcmW$(K5Bl?c@(5#>J#j@eq#ctX~$TIjkl>Wrfv%Ey+bl1Z-v?NxJ zwZ9!ae-MsHPUx&_W22?9$mCE%&~lzVG?hDXM%~gXGk+Q!Jf0BspkMWxy;^!n<6JIrSYjv z6F%~$8)0^qbUho9Sdf97b_n({$;|XH9-RHrohHuPcro@03KEPFejN&q?&nJFoIQY; zSI#uL6>2^^yOR!51OLO65xGas55dPG;3=uQ35ZYW04#+~byXQf^7Vq`G z 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 Pe7HEdAEg|=c=LY&YVNkY literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..13b35eba55c6dabc3aac36f33d859266c18fa0d0 GIT binary patch literal 5680 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 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3f5fa40fb3d1e0710331a48de5d256da3f275d GIT binary patch literal 520 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 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1632cfddf3d9dade342351e627a0a75609fb46 GIT binary patch literal 2218 zcmV;b2vzrqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuE6iGxuRCodHTWf3-RTMruyW6Fu zQYeUM04eX6D5c0FCjKKPrco1(K`<0SL=crI{PC3-^hZU0kQie$gh-5!7z6SH6Q0J% zqot*`H1q{R5fHFYS}dje@;kG=v$L0(yY0?wY2%*c?A&{2?!D*x?m71{of2gv!$5|C z3>qG_BW}7K_yUcT3A5C6QD<+{aq?x;MAUyAiJn#Jv8_zZtQ{P zTRzbL3U9!qVuZzS$xKU10KiW~Bgdcv1-!uAhQxf3a7q+dU6lj?yoO4Lq4TUN4}h{N z*fIM=SS8|C2$(T>w$`t@3Tka!(r!7W`x z-isCVgQD^mG-MJ;XtJuK3V{Vy72GQ83KRWsHU?e*wrhKk=ApIYeDqLi;JI1e zuvv}5^Dc=k7F7?nm3nIw$NVmU-+R>> zyqOR$-2SDpJ}Pt;^RkJytDVXNTsu|mI1`~G7yw`EJR?VkGfNdqK9^^8P`JdtTV&tX4CNcV4 z&N06nZa??Fw1AgQOUSE2AmPE@WO(Fvo`%m`cDgiv(fAeRA%3AGXUbsGw{7Q`cY;1BI#ac3iN$$Hw z0LT0;xc%=q)me?Y*$xI@GRAw?+}>=9D+KTk??-HJ4=A>`V&vKFS75@MKdSF1JTq{S zc1!^8?YA|t+uKigaq!sT;Z!&0F2=k7F0PIU;F$leJLaw2UI6FL^w}OG&!;+b%ya1c z1n+6-inU<0VM-Y_s5iTElq)ThyF?StVcebpGI znw#+zLx2@ah{$_2jn+@}(zJZ{+}_N9BM;z)0yr|gF-4=Iyu@hI*Lk=-A8f#bAzc9f z`Kd6K--x@t04swJVC3JK1cHY-Hq+=|PN-VO;?^_C#;coU6TDP7Bt`;{JTG;!+jj(` zw5cLQ-(Cz-Tlb`A^w7|R56Ce;Wmr0)$KWOUZ6ai0PhzPeHwdl0H(etP zUV`va_i0s-4#DkNM8lUlqI7>YQLf)(lz9Q3Uw`)nc(z3{m5ZE77Ul$V%m)E}3&8L0 z-XaU|eB~Is08eORPk;=<>!1w)Kf}FOVS2l&9~A+@R#koFJ$Czd%Y(ENTV&A~U(IPI z;UY+gf+&6ioZ=roly<0Yst8ck>(M=S?B-ys3mLdM&)ex!hbt+ol|T6CTS+Sc0jv(& z7ijdvFwBq;0a{%3GGwkDKTeG`b+lyj0jjS1OMkYnepCdoosNY`*zmBIo*981BU%%U z@~$z0V`OVtIbEx5pa|Tct|Lg#ZQf5OYMUMRD>Wdxm5SAqV2}3!ceE-M2 z@O~lQ0OiKQp}o9I;?uxCgYVV?FH|?Riri*U$Zi_`V2eiA>l zdSm6;SEm6#T+SpcE8Ro_f2AwxzI z44hfe^WE3!h@W3RDyA_H440cpmYkv*)6m1XazTqw%=E5Xv7^@^^T7Q2wxr+Z2kVYr + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner/Configs/AppInfo.xcconfig b/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 00000000..bda56cf6 --- /dev/null +++ b/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// 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 = sharekhanclg + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.example.sharekhanclg + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2024 com.example. All rights reserved. diff --git a/macos/Runner/Configs/Debug.xcconfig b/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 00000000..36b0fd94 --- /dev/null +++ b/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Release.xcconfig b/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 00000000..dff4f495 --- /dev/null +++ b/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Warnings.xcconfig b/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 00000000..42bcbf47 --- /dev/null +++ b/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +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/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements new file mode 100644 index 00000000..dddb8a30 --- /dev/null +++ b/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/macos/Runner/MainFlutterWindow.swift b/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 00000000..3cc05eb2 --- /dev/null +++ b/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +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/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements new file mode 100644 index 00000000..852fa1a4 --- /dev/null +++ b/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/macos/RunnerTests/RunnerTests.swift b/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000..61f3bd1f --- /dev/null +++ b/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Cocoa +import FlutterMacOS +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/pubspec.lock b/pubspec.lock index 877fc75e..4e82d480 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: "37a42d06068e2fe3deddb2da079a8c4d105f241225ba27b7122b37e9865fd8f7" + sha256: "9371d13b8ee442e3bfc08a24e3a1b3742c839abbfaf5eef11b79c4b862c89bf7" url: "https://pub.dev" source: hosted - version: "1.3.35" + version: "1.3.41" args: dependency: transitive description: @@ -49,6 +49,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.1" + cloud_firestore: + dependency: "direct main" + description: + name: cloud_firestore + sha256: "77ac40d66a0fd585ca1e80ef3cbfd9df34462103bd4c1cf5950cb7d1f4c2e188" + url: "https://pub.dev" + source: hosted + version: "5.3.0" + cloud_firestore_platform_interface: + dependency: transitive + description: + name: cloud_firestore_platform_interface + sha256: da0fa07284bc845b4a517449365eac0346a084676b3ed399f75a0ed25c3ec4c8 + url: "https://pub.dev" + source: hosted + version: "6.3.2" + cloud_firestore_web: + dependency: transitive + description: + name: cloud_firestore_web + sha256: "98dca6f864141cd3f79cf42a036f45233b8e2a3940b0011e6a370dd2283c45db" + url: "https://pub.dev" + source: hosted + version: "4.1.2" collection: dependency: transitive description: @@ -61,18 +85,18 @@ packages: dependency: transitive description: name: cross_file - sha256: "55d7b444feb71301ef6b8838dbc1ae02e63dd48c8773f3810ff53bb1e2945b32" + sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" url: "https://pub.dev" source: hosted - version: "0.3.4+1" + version: "0.3.4+2" crypto: dependency: transitive description: name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" cupertino_icons: dependency: "direct main" description: @@ -109,18 +133,18 @@ packages: dependency: transitive description: name: ffi - sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" file_picker: dependency: "direct main" description: name: file_picker - sha256: "29c90806ac5f5fb896547720b73b17ee9aed9bba540dc5d91fe29f8c5745b10a" + sha256: be325344c1f3070354a1d84a231a1ba75ea85d413774ec4bdf444c023342e030 url: "https://pub.dev" source: hosted - version: "8.0.3" + version: "5.5.0" file_selector_linux: dependency: transitive description: @@ -149,156 +173,108 @@ packages: dependency: transitive description: name: file_selector_windows - sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0 - url: "https://pub.dev" - source: hosted - version: "0.9.3+1" - firebase_analytics: - dependency: "direct main" - description: - name: firebase_analytics - sha256: dbf1e7ab22cfb1f4a4adb103b46a26276b4edc593d4a78ef6fb942bafc92e035 - url: "https://pub.dev" - source: hosted - version: "10.10.7" - firebase_analytics_platform_interface: - dependency: transitive - description: - name: firebase_analytics_platform_interface - sha256: "3729b74f8cf1d974a27ba70332ecb55ff5ff560edc8164a6469f4a055b429c37" + sha256: "2ad726953f6e8affbc4df8dc78b77c3b4a060967a291e528ef72ae846c60fb69" url: "https://pub.dev" source: hosted - version: "3.10.8" - firebase_analytics_web: - dependency: transitive - description: - name: firebase_analytics_web - sha256: "019cd7eee74254d33fbd2e29229367ce33063516bf6b3258a341d89e3b0f1655" - url: "https://pub.dev" - source: hosted - version: "0.5.7+7" + version: "0.9.3+2" firebase_auth: dependency: "direct main" description: name: firebase_auth - sha256: f0a75f61992d036e4c46ad0e9febd364d98aa2c092690a5475cb1421a8243cfe + sha256: "6f5792bdc208416bfdfbfe3363b78ce01667b6ebc4c5cb47cfa891f2fca45ab7" url: "https://pub.dev" source: hosted - version: "4.19.5" + version: "5.2.0" firebase_auth_platform_interface: dependency: transitive description: name: firebase_auth_platform_interface - sha256: feb77258404309ffc7761c78e1c0ad2ed5e4fdc378e035619e2cc13be4397b62 + sha256: "80237bb8a92bb0a5e3b40de1c8dbc80254e49ac9e3907b4b47b8e95ac3dd3fad" url: "https://pub.dev" source: hosted - version: "7.2.6" + version: "7.4.4" firebase_auth_web: dependency: transitive description: name: firebase_auth_web - sha256: "6d527f357da2bf93a67a42b423aa92943104a0c290d1d72ad9a42c779d501cd2" + sha256: "9d315491a6be65ea83511cb0e078544a309c39dd54c0ee355c51dbd6d8c03cc8" url: "https://pub.dev" source: hosted - version: "5.11.5" + version: "5.12.6" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: "26de145bb9688a90962faec6f838247377b0b0d32cc0abecd9a4e43525fc856c" + sha256: "06537da27db981947fa535bb91ca120b4e9cb59cb87278dbdde718558cafc9ff" url: "https://pub.dev" source: hosted - version: "2.32.0" + version: "3.4.0" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: c437ae5d17e6b5cc7981cf6fd458a5db4d12979905f9aafd1fea930428a9fe63 + sha256: f7d7180c7f99babd4b4c517754d41a09a4943a0f7a69b65c894ca5c68ba66315 url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.2.1" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: "43d9e951ac52b87ae9cc38ecdcca1e8fa7b52a1dd26a96085ba41ce5108db8e9" + sha256: "362e52457ed2b7b180964769c1e04d1e0ea0259fdf7025fdfedd019d4ae2bd88" url: "https://pub.dev" source: hosted - version: "2.17.0" + version: "2.17.5" firebase_dynamic_links: dependency: transitive description: name: firebase_dynamic_links - sha256: f704859abc17d99e74b47eaf47455b45a88ab7e2973f03e6130ff666b45fe11f + sha256: f4e259d669c15c6002d0d22a80d0a770fff03753a719f290dc3b98499d30aafa url: "https://pub.dev" source: hosted - version: "5.5.5" + version: "6.0.5" firebase_dynamic_links_platform_interface: dependency: transitive description: name: firebase_dynamic_links_platform_interface - sha256: f86992605b50e2f0ce6c24993430affc98021da8d8a74d5596b7a2c84196c110 - url: "https://pub.dev" - source: hosted - version: "0.2.6+33" - firebase_remote_config: - dependency: "direct main" - description: - name: firebase_remote_config - sha256: "653bd94b68e2c4e89eca10db90576101f1024151f39f2d4e7c64ae6a90a5f9c5" - url: "https://pub.dev" - source: hosted - version: "4.4.7" - firebase_remote_config_platform_interface: - dependency: transitive - description: - name: firebase_remote_config_platform_interface - sha256: "24a2c445b15de3af7e4582ebceb2aa9a1e3731d0202cb3e7a1e03012440fa07d" + sha256: "916ecac68ffe718ff69eb13484c929a91f0b9bf18dcc96bda770796e70dab1a1" url: "https://pub.dev" source: hosted - version: "1.4.35" - firebase_remote_config_web: - dependency: transitive - description: - name: firebase_remote_config_web - sha256: "525aa3000fd27cd023841c802010a06515e564aab2f147aa964b35f54abbf449" - url: "https://pub.dev" - source: hosted - version: "1.6.7" + version: "0.2.6+41" firebase_storage: dependency: "direct main" description: name: firebase_storage - sha256: da76ca9c11d795c4bae1bd13b31d54bb9eb9ccbee7eb5f6b86b8294370e9d488 + sha256: dfc06d783dbc0b6200a4b936d8cdbd826bd1571c959854d14a70259188d96e85 url: "https://pub.dev" source: hosted - version: "11.7.5" + version: "12.2.0" firebase_storage_platform_interface: dependency: transitive description: name: firebase_storage_platform_interface - sha256: be17bfa9110a6429b40dd3760c755034079fd734aa1dd2476d5638ab780cc508 + sha256: "3da511301b77514dee5370281923fbbc6d5725c2a0b96004c5c45415e067f234" url: "https://pub.dev" source: hosted - version: "5.1.20" + version: "5.1.28" firebase_storage_web: dependency: transitive description: name: firebase_storage_web - sha256: "5219c20c0768a8e2ffedf0a116b7bc80ab32fcc6e2cbd50cbde14f8c4575c3f4" + sha256: "7ad67b1c1c46c995a6bd4f225d240fc9a5fb277fade583631ae38750ffd9be17" url: "https://pub.dev" source: hosted - version: "3.9.5" + version: "3.9.13" firebase_ui_auth: dependency: "direct main" description: name: firebase_ui_auth - sha256: "62c3ce9c8da134e0780bf8ed7d7ed91dd2308596ee3cb56fab03eb79f8323479" + sha256: "36be86d964b16d5025108519ccdc8baf5143d59bc9d0d113d6386b41b5a775e4" url: "https://pub.dev" source: hosted - version: "1.14.0" + version: "1.15.0" firebase_ui_localizations: - dependency: "direct main" + dependency: transitive description: name: firebase_ui_localizations sha256: a7faa62e2d56cb38aae270a8f05c1a8518b04b06dd0f0cc2d4974e4b4782de1c @@ -309,18 +285,18 @@ packages: dependency: transitive description: name: firebase_ui_oauth - sha256: b86458b7d403d48d335c2502004bf88f2145d2f0be58b29fba8de28944f7fa91 + sha256: "31eb35172f1cfc02f60a1b7048ee9a248964427794b5ddcae27147725068c3db" url: "https://pub.dev" source: hosted - version: "1.5.2" + version: "1.5.3" firebase_ui_oauth_google: dependency: "direct main" description: name: firebase_ui_oauth_google - sha256: "101c13ba7ac04f6b70e1d73ab6d063b82801b794394914655356eb2a6f18bbcb" + sha256: "79ddc76efffc3853bd9a94c7dadb9342f0f8c489d051951635a0ee9ed7b677c6" url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.3.3" firebase_ui_shared: dependency: transitive description: @@ -338,10 +314,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1" + sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "4.0.0" flutter_localizations: dependency: transitive description: flutter @@ -351,10 +327,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "8cf40eebf5dec866a6d1956ad7b4f7016e6c0cc69847ab946833b7d43743809f" + sha256: "9ee02950848f61c4129af3d6ec84a1cfc0e47931abc746b03e7a3bc3e8ff6eda" url: "https://pub.dev" source: hosted - version: "2.0.19" + version: "2.0.22" flutter_svg: dependency: transitive description: @@ -381,30 +357,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.6.6" - get_storage: - dependency: "direct main" - description: - name: get_storage - sha256: "39db1fffe779d0c22b3a744376e86febe4ade43bf65e06eab5af707dc84185a2" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - google_fonts: - dependency: "direct main" - description: - name: google_fonts - sha256: b1ac0fe2832c9cc95e5e88b57d627c5e68c223b9657f4b96e1487aa9098c7b82 - url: "https://pub.dev" - source: hosted - version: "6.2.1" google_identity_services_web: dependency: transitive description: name: google_identity_services_web - sha256: "9482364c9f8b7bd36902572ebc3a7c2b5c8ee57a9c93e6eb5099c1a9ec5265d8" + sha256: "5be191523702ba8d7a01ca97c17fca096822ccf246b0a9f11923a6ded06199b6" url: "https://pub.dev" source: hosted - version: "0.3.1+1" + version: "0.3.1+4" google_sign_in: dependency: "direct main" description: @@ -417,18 +377,18 @@ packages: dependency: transitive description: name: google_sign_in_android - sha256: "7647893c65e6720973f0e579051c8f84b877b486614d9f70a404259c41a4632e" + sha256: "5a47ebec9af97daf0822e800e4f101c3340b5ebc3f6898cf860c1a71b53cf077" url: "https://pub.dev" source: hosted - version: "6.1.23" + version: "6.1.28" google_sign_in_ios: dependency: transitive description: name: google_sign_in_ios - sha256: a058c9880be456f21e2e8571c1126eaacd570bdc5b6c6d9d15aea4bdf22ca9fe + sha256: "4898410f55440049e1ba8f15411612d9f89299d89c61cd9baf7e02d56ff81ac7" url: "https://pub.dev" source: hosted - version: "5.7.6" + version: "5.7.7" google_sign_in_platform_interface: dependency: transitive description: @@ -441,18 +401,18 @@ packages: dependency: transitive description: name: google_sign_in_web - sha256: fc0f14ed45ea616a6cfb4d1c7534c2221b7092cc4f29a709f0c3053cc3e821bd + sha256: "042805a21127a85b0dc46bba98a37926f17d2439720e8a459d27045d8ef68055" url: "https://pub.dev" source: hosted - version: "0.12.4" + version: "0.12.4+2" http: dependency: transitive description: name: http - sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" http_parser: dependency: transitive description: @@ -465,34 +425,34 @@ packages: dependency: "direct main" description: name: image_picker - sha256: "33974eca2e87e8b4e3727f1b94fa3abcb25afe80b6bc2c4d449a0e150aedf720" + sha256: b6951e25b795d053a6ba03af5f710069c99349de9341af95155d52665cb4607c url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "0.8.9" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: "79455f6cff4cbef583b2b524bbf0d4ec424e5959f4d464e36ef5323715b98370" + sha256: c0a6763d50b354793d0192afd0a12560b823147d3ded7c6b77daf658fa05cc85 url: "https://pub.dev" source: hosted - version: "0.8.12" + version: "0.8.12+13" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "5d6eb13048cd47b60dbf1a5495424dea226c5faf3950e20bf8120a58efb5b5f3" + sha256: "869fe8a64771b7afbc99fc433a5f7be2fea4d1cb3d7c11a48b6b579eb9c797f0" url: "https://pub.dev" source: hosted - version: "3.0.4" + version: "2.2.0" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: cb0db0ec0d3e2cd49674f2e6053be25ccdb959832607c1cbd215dd6cf10fb0dd + sha256: "6703696ad49f5c3c8356d576d7ace84d1faf459afb07accbb0fae780753ff447" url: "https://pub.dev" source: hosted - version: "0.8.11" + version: "0.8.12" image_picker_linux: dependency: transitive description: @@ -537,18 +497,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" url: "https://pub.dev" source: hosted - version: "10.0.4" + version: "10.0.5" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" leak_tracker_testing: dependency: transitive description: @@ -561,10 +521,10 @@ packages: dependency: transitive description: name: lints - sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 + sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "4.0.0" matcher: dependency: transitive description: @@ -577,26 +537,26 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.8.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.15.0" mime: dependency: transitive description: name: mime - sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" path: dependency: "direct main" description: @@ -613,54 +573,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.1" - path_provider: - dependency: transitive - description: - name: path_provider - sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 - url: "https://pub.dev" - source: hosted - version: "2.1.3" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d - url: "https://pub.dev" - source: hosted - version: "2.2.4" - path_provider_foundation: - dependency: transitive - description: - name: path_provider_foundation - sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 - url: "https://pub.dev" - source: hosted - version: "2.4.0" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 - url: "https://pub.dev" - source: hosted - version: "2.2.1" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" - url: "https://pub.dev" - source: hosted - version: "2.2.1" petitparser: dependency: transitive description: @@ -669,14 +581,6 @@ packages: url: "https://pub.dev" source: hosted version: "6.0.2" - platform: - dependency: transitive - description: - name: platform - sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" - url: "https://pub.dev" - source: hosted - version: "3.1.4" plugin_platform_interface: dependency: transitive description: @@ -734,10 +638,10 @@ packages: dependency: transitive description: name: test_api - sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" + sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" url: "https://pub.dev" source: hosted - version: "0.7.0" + version: "0.7.2" typed_data: dependency: transitive description: @@ -782,10 +686,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" url: "https://pub.dev" source: hosted - version: "14.2.1" + version: "14.2.5" web: dependency: transitive description: @@ -798,18 +702,10 @@ packages: dependency: transitive description: name: win32 - sha256: "0eaf06e3446824099858367950a813472af675116bf63f008a4c2a75ae13e9cb" - url: "https://pub.dev" - source: hosted - version: "5.5.0" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d + sha256: "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "5.5.4" xml: dependency: transitive description: @@ -819,5 +715,5 @@ packages: source: hosted version: "6.5.0" sdks: - dart: ">=3.3.4 <4.0.0" - flutter: ">=3.19.2" + dart: ">=3.5.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/pubspec.yaml b/pubspec.yaml index 2909a374..71ae58ba 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,43 +1,110 @@ -name: get_flutter_fire +name: sharekhanclg +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 -publish_to: none -description: Boilerplate for Flutter with GetX, showing sample utilization of Firebase capabilities -environment: - sdk: '>=3.3.4 <4.0.0' - -dependencies: - cupertino_icons: ^1.0.6 - get: 4.6.6 - flutter: + +environment: + sdk: ^3.5.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 - firebase_core: ^2.31.0 - firebase_ui_auth: ^1.14.0 - firebase_auth: ^4.19.5 + get: ^4.6.5 + image_picker: ^0.8.6+1 + file_picker: ^5.0.0 + firebase_storage: ^12.2.0 + path: ^1.8.0 + cloud_firestore: ^5.0.0 # Add this line + + + + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.8 + firebase_core: ^3.3.0 + firebase_auth: ^5.1.4 + firebase_ui_auth: ^1.15.0 + firebase_ui_oauth_google: ^1.3.3 google_sign_in: ^6.2.1 - firebase_ui_oauth_google: ^1.3.2 - google_fonts: ^6.2.1 - firebase_storage: ^11.7.5 - image_picker: ^1.1.1 - file_picker: ^8.0.3 - path: ^1.9.0 - get_storage: ^2.1.1 - firebase_ui_localizations: ^1.12.0 - firebase_remote_config: ^4.4.7 - firebase_analytics: ^10.10.7 - -dev_dependencies: - flutter_lints: 3.0.2 - flutter_test: + + + +dev_dependencies: + flutter_test: sdk: flutter -flutter: - fonts: - - family: SocialIcons - fonts: - - asset: packages/firebase_ui_auth/fonts/SocialIcons.ttf + # 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: ^4.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: assets: - - assets/images/flutterfire_300x.png - - assets/images/dash.png - - assets/icons/logo.png + + - assets/images/73d7548d91bbd2ab_960.png + - assets/images/ebe5792b765dbf87_960.png + + + # 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/to/resolution-aware-images + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/to/asset-from-package + + # 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/to/font-from-package diff --git a/server/.firebaserc b/server/.firebaserc deleted file mode 100644 index 9ebcd4cc..00000000 --- a/server/.firebaserc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "projects": { - "default": "flutterfast-92c25" - }, - "dataconnectEmulatorConfig": { - "postgres": { - "localConnectionString": "postgresql://localhost:5432?sslmode=disable" - } - } -} diff --git a/server/.gitignore b/server/.gitignore deleted file mode 100644 index dbb58ffb..00000000 --- a/server/.gitignore +++ /dev/null @@ -1,66 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -firebase-debug.log* -firebase-debug.*.log* - -# Firebase cache -.firebase/ - -# Firebase config - -# Uncomment this if you'd like others to create their own Firebase project. -# For a team working on the same Firebase project(s), it is recommended to leave -# it commented so all members can deploy to the same project(s) in .firebaserc. -# .firebaserc - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env diff --git a/server/database.rules.json b/server/database.rules.json deleted file mode 100644 index 1102a91f..00000000 --- a/server/database.rules.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "rules": { - ".read": false, - ".write": false - } -} \ No newline at end of file diff --git a/server/firebase.json b/server/firebase.json deleted file mode 100644 index b377caf0..00000000 --- a/server/firebase.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "database": { - "rules": "database.rules.json" - }, - "firestore": { - "rules": "firestore.rules", - "indexes": "firestore.indexes.json" - }, - "functions": [ - { - "source": "genkit", - "codebase": "genkit", - "predeploy": [ - "npm --prefix \"$RESOURCE_DIR\" run lint", - "npm --prefix \"$RESOURCE_DIR\" run build" - ] - }, - { - "source": "functions", - "codebase": "functions", - "ignore": [ - "node_modules", - ".git", - "firebase-debug.log", - "firebase-debug.*.log", - "*.local" - ], - "predeploy": [ - "npm --prefix \"$RESOURCE_DIR\" run lint" - ] - } - ], - "hosting": { - "public": "public", - "ignore": [ - "firebase.json", - "**/.*", - "**/node_modules/**" - ] - }, - "storage": { - "rules": "storage.rules" - }, - "emulators": { - "auth": { - "port": 9099 - }, - "functions": { - "port": 5001 - }, - "firestore": { - "port": 8080 - }, - "database": { - "port": 9000 - }, - "hosting": { - "port": 5000 - }, - "pubsub": { - "port": 8085 - }, - "storage": { - "port": 9199 - }, - "eventarc": { - "port": 9299 - }, - "ui": { - "enabled": true, - "port": 4000 - }, - "singleProjectMode": true - }, - "remoteconfig": { - "template": "get-flutter-fire" - }, - "extensions": {} -} diff --git a/server/firestore.indexes.json b/server/firestore.indexes.json deleted file mode 100644 index 415027e5..00000000 --- a/server/firestore.indexes.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "indexes": [], - "fieldOverrides": [] -} diff --git a/server/firestore.rules b/server/firestore.rules deleted file mode 100644 index 48798134..00000000 --- a/server/firestore.rules +++ /dev/null @@ -1,16 +0,0 @@ -service cloud.firestore { - match /databases/{database}/documents { - match /{document=**} { - // This rule allows anyone with your database reference to view, edit, - // and delete all data in your database. It is useful for getting - // started, but it is configured to expire after 30 days because it - // leaves your app open to attackers. At that time, all client - // requests to your database will be denied. - // - // Make sure to write security rules for your app before that time, or - // else all client requests to your database will be denied until you - // update your rules. - allow read, write: if request.time < timestamp.date(2024, 7, 3); - } - } -} diff --git a/server/functions/.eslintrc.js b/server/functions/.eslintrc.js deleted file mode 100644 index f4cb76ca..00000000 --- a/server/functions/.eslintrc.js +++ /dev/null @@ -1,28 +0,0 @@ -module.exports = { - env: { - es6: true, - node: true, - }, - parserOptions: { - "ecmaVersion": 2018, - }, - extends: [ - "eslint:recommended", - "google", - ], - rules: { - "no-restricted-globals": ["error", "name", "length"], - "prefer-arrow-callback": "error", - "quotes": ["error", "double", {"allowTemplateLiterals": true}], - }, - overrides: [ - { - files: ["**/*.spec.*"], - env: { - mocha: true, - }, - rules: {}, - }, - ], - globals: {}, -}; diff --git a/server/functions/.gitignore b/server/functions/.gitignore deleted file mode 100644 index 21ee8d3d..00000000 --- a/server/functions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -*.local \ No newline at end of file diff --git a/server/functions/lib/auth.js b/server/functions/lib/auth.js deleted file mode 100644 index cf1510f2..00000000 --- a/server/functions/lib/auth.js +++ /dev/null @@ -1,194 +0,0 @@ -"use strict"; -/* eslint-disable curly */ -/* eslint-disable object-curly-spacing */ -/* eslint-disable prefer-arrow-callback */ -/* eslint-disable space-before-function-paren */ -/* eslint-disable indent */ -/* eslint-disable block-spacing */ -/* eslint-disable brace-style */ -/* eslint-disable no-var */ -/* eslint-disable no-invalid-this */ -/* eslint-disable valid-jsdoc */ -/* eslint-disable camelcase */ -/* eslint-disable require-jsdoc */ -/* eslint-disable max-len */ -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.verifyIdToken = exports.beforeUserCreated = exports.beforeSignIn = exports.addUser = void 0; -const logger_1 = require("firebase-functions/logger"); -const firebase_functions_1 = require("firebase-functions"); -const firebase_admin_1 = __importDefault(require("firebase-admin")); -const init_1 = require("./init"); -const auth_1 = require("firebase/auth"); -const addUser = firebase_functions_1.auth.user().onCreate(async (user, context) => { - var _a; - // This is used to provide admin role to the first user that gets created - (0, logger_1.debug)("added user: ", user); - if (((_a = user.customClaims) === null || _a === void 0 ? void 0 : _a.status) == "creating") { // this is using client side to send the verification mail - firebase_admin_1.default.auth().setCustomUserClaims(user.uid, { status: "created" }); - } - else if (!init_1.config.useCustomeVerificationEmail && user && user.email && !user.emailVerified) { - // this is client side module and can create issues with server side quota limits - await sendVerificationEmail(user, context); - } -}); -exports.addUser = addUser; -async function checkUserExistsSendVerification(user, context) { - var email = user.email; - if (!email.endsWith(".verify")) - return null; - try { - const userRecord = await firebase_admin_1.default.auth().getUserByEmail(email.substring(0, email.length - 7)); - (0, logger_1.debug)("existing user: ", user); - // we could save the last email sent time in another DB to stop multiple sends - await sendVerificationEmail(userRecord, context); - return userRecord; - } - catch (e) { - return null; - } -} -const beforeUserCreated = firebase_functions_1.auth.user().beforeCreate(async (user, context) => { - if (!(user && user.email)) { - throw new firebase_functions_1.auth.HttpsError("invalid-argument", `Email is required`); - } - // if same email exists then it does not reach here - const rec = await checkUserExistsSendVerification(user, context); - if (rec != null) { - throw new firebase_functions_1.auth.HttpsError("already-exists", `Verification Email Sent`); - } - else { - // Only users of a specific domain can sign up. - // if(!user.email.includes("@acme.com")) { - // throw new functionAuth.HttpsError("invalid-argument", "Unauthorized email"); - // } - if (init_1.config.adminEmail && init_1.config.adminEmail == user.email) { - return { - displayName: "Admin", - customClaims: { "role": "admin" }, - emailVerified: true, // admin is auto verified - }; - } - else if (!init_1.config.adminEmail) { - // ake the first user admin if admin email is not specified in config - const listUsersResult = await firebase_admin_1.default.auth().listUsers(2); - if (listUsersResult.users.length == 0) { - return { - displayName: "Admin", - customClaims: { "role": "admin" }, - emailVerified: true, // admin is auto verified - }; - } - } - if (!user.emailVerified && init_1.config.useCustomeVerificationEmail) { - await sendVerificationEmail(user, context); - } - else if (!user.emailVerified) { - // This could be useful if SignUp flow has other pages to take post email registeration details - return { - customClaims: { status: "creating" }, // set "creating" if you want to use client side for sending the verification mail instead of server side on SignUp. - // sessionClaims: {status: "creating"}, // this does not propogate and thus using customClaims - }; - } - } -}); -exports.beforeUserCreated = beforeUserCreated; -const beforeSignIn = firebase_functions_1.auth.user().beforeSignIn((user, _context) => { - var _a; - (0, logger_1.debug)(_context); - // custom token by passes this method - if (user.disabled) { - throw new firebase_functions_1.auth.HttpsError("permission-denied", `"${user.email}" has been disabled by admin.`); - } - if (user.email && !user.emailVerified) { - if (!(((_a = user.customClaims) === null || _a === void 0 ? void 0 : _a.status) == "creating")) { - throw new firebase_functions_1.auth.HttpsError("unauthenticated", `"${user.email}" needs to be verified before access is granted.`); - } - else { - return { - customClaims: { status: "registering" }, - }; - } - } - return {}; -}); -exports.beforeSignIn = beforeSignIn; -// TODO: use the below to verify auth token before any CRUD requests in a middleware -const verifyIdToken = function (idToken) { - firebase_admin_1.default.auth().verifyIdToken(idToken).then((decodedToken) => { - if (decodedToken.email_verified) { - // Email verified. Grant access. - } - else { - // Email not verified. Ask user to verify email in error response - } - }); -}; -exports.verifyIdToken = verifyIdToken; -/** - * Used to send email from server side - * @param {*} user - * @param {*} context - */ -async function sendVerificationEmail(user, context) { - if (!init_1.config.useCustomeVerificationEmail) { - // If using Emulator don't forget to add this - const emulator = process.env.FUNCTIONS_EMULATOR === "true"; - const customToken = await firebase_admin_1.default.auth().createCustomToken(user.uid, user.customClaims); - // debug(customToken); - if (init_1.config.useClientSDK) { - // This is a hack to use client side email sending function at server side, suggested in stackOverflow - try { - if (emulator) { - (0, auth_1.connectAuthEmulator)(init_1.auth, "http://localhost:9099"); - } - } - catch (error) { - /* this might happen if already connected */ - } - (0, auth_1.signInWithCustomToken)(init_1.auth, customToken).then(async (credential) => { - const firebaseUser = credential.user; - await (0, auth_1.sendEmailVerification)(firebaseUser); - init_1.auth.signOut().then(() => { - // Sign-out successful. - console.log("signed out success"); - }, () => { - }); - }); - } - else { - // better and cleaner approach, however it cannot be tested in Emulator - // TODO test the below in live Firebase - try { - const axios = require("axios"); - const url = emulator ? "http://localhost:9099/emulator" : "https://identitytoolkit.googleapis.com"; - await axios.post(`${url}/v1/accounts:sendOobCode?key=[${init_1.config.appId}]`, { requestType: "VERIFY_EMAIL", idToken: customToken }); // Not working. TODO fix the issue - } - catch (error) { - (0, logger_1.debug)(error); - } - } - } - else { - // Send custom email verification on sign-up. - const link = await firebase_admin_1.default.auth().generateEmailVerificationLink(user.email); // you can provide actionCodeSettings also - await sendCustomVerificationEmail(user.email, link, context === null || context === void 0 ? void 0 : context.locale); - // we can throw error such that user does not get created till verification. - // However, we need the user details like pwd and thus the user has to be created - } -} -/** - * This function is used to send mails - * This will require a Firebase extension or a node module like nodemailer - * @param {*} _email - * @param {*} _link - * @param {*} _locale - */ -// eslint-disable-next-line no-unused-vars -async function sendCustomVerificationEmail(_email, _link, _locale) { - // TODO use nodemailer etc. This will not use Firebase templates - // We could also see https://canopas.com/how-to-send-emails-using-cloud-functions-firestore-firebase-send-email-ff4702a16fef -} -//# sourceMappingURL=auth.js.map \ No newline at end of file diff --git a/server/functions/lib/auth.js.map b/server/functions/lib/auth.js.map deleted file mode 100644 index 659cbc09..00000000 --- a/server/functions/lib/auth.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/server/functions/lib/index.js b/server/functions/lib/index.js deleted file mode 100644 index 1d509192..00000000 --- a/server/functions/lib/index.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; -/* eslint-disable curly */ -/* eslint-disable object-curly-spacing */ -/* eslint-disable prefer-arrow-callback */ -/* eslint-disable space-before-function-paren */ -/* eslint-disable indent */ -/* eslint-disable block-spacing */ -/* eslint-disable brace-style */ -/* eslint-disable no-var */ -/* eslint-disable no-invalid-this */ -/* eslint-disable valid-jsdoc */ -/* eslint-disable camelcase */ -/* eslint-disable require-jsdoc */ -/* eslint-disable max-len */ -/* eslint-disable spaced-comment */ -/* eslint-disable eol-last */ -/** - * Import function triggers from their respective submodules: - * - * const {onCall} = require("firebase-functions/v2/https"); - * const {onDocumentWritten} = require("firebase-functions/v2/firestore"); - * - * See a full list of supported triggers at https://firebase.google.com/docs/functions - */ -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -// const {onRequest} = require("firebase-functions/v2/https"); -// Create and deploy functions -// See: https://firebase.google.com/docs/functions/get-started -const _ = __importStar(require("./auth")); -exports.default = _; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/server/functions/lib/index.js.map b/server/functions/lib/index.js.map deleted file mode 100644 index 2c20c19f..00000000 --- a/server/functions/lib/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,0BAA0B;AAC1B,yCAAyC;AACzC,0CAA0C;AAC1C,gDAAgD;AAChD,2BAA2B;AAC3B,kCAAkC;AAClC,gCAAgC;AAChC,2BAA2B;AAC3B,oCAAoC;AACpC,gCAAgC;AAChC,8BAA8B;AAC9B,kCAAkC;AAClC,4BAA4B;AAC5B,mCAAmC;AACnC,6BAA6B;AAC7B;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,8DAA8D;AAE9D,8BAA8B;AAC9B,8DAA8D;AAE9D,0CAA4B;AAE5B,kBAAe,CAAC,CAAC"} \ No newline at end of file diff --git a/server/functions/lib/init.js b/server/functions/lib/init.js deleted file mode 100644 index 430de49c..00000000 --- a/server/functions/lib/init.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; -/* eslint-disable curly */ -/* eslint-disable object-curly-spacing */ -/* eslint-disable prefer-arrow-callback */ -/* eslint-disable space-before-function-paren */ -/* eslint-disable indent */ -/* eslint-disable block-spacing */ -/* eslint-disable brace-style */ -/* eslint-disable no-var */ -/* eslint-disable no-invalid-this */ -/* eslint-disable valid-jsdoc */ -/* eslint-disable camelcase */ -/* eslint-disable require-jsdoc */ -/* eslint-disable max-len */ -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.auth = exports.config = void 0; -const firebase_admin_1 = __importDefault(require("firebase-admin")); -const fs_1 = __importDefault(require("fs")); -exports.config = JSON.parse(fs_1.default.readFileSync("firebase_options.json", "utf8")); -const firebaseApp = firebase_admin_1.default.initializeApp(exports.config); -exports.firebaseApp = firebaseApp; -const auth_1 = require("firebase/auth"); -const app_1 = require("firebase/app"); -const tempApp = (0, app_1.initializeApp)(exports.config, "client"); -exports.auth = (0, auth_1.getAuth)(tempApp); -//# sourceMappingURL=init.js.map \ No newline at end of file diff --git a/server/functions/lib/init.js.map b/server/functions/lib/init.js.map deleted file mode 100644 index a6f01966..00000000 --- a/server/functions/lib/init.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":";AAAA,0BAA0B;AAC1B,yCAAyC;AACzC,0CAA0C;AAC1C,gDAAgD;AAChD,2BAA2B;AAC3B,kCAAkC;AAClC,gCAAgC;AAChC,2BAA2B;AAC3B,oCAAoC;AACpC,gCAAgC;AAChC,8BAA8B;AAC9B,kCAAkC;AAClC,4BAA4B;;;;;;AAE5B,oEAAmC;AAEnC,4CAAoB;AACP,QAAA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC;AACnF,MAAM,WAAW,GAAG,wBAAK,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC;AAEhD,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;AAClC,wCAAsC;AACtC,sCAA6C;AAC7C,MAAM,OAAO,GAAG,IAAA,mBAAa,EAAC,cAAM,EAAE,QAAQ,CAAC,CAAC;AACnC,QAAA,IAAI,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,CAAC"} \ No newline at end of file diff --git a/server/functions/package-lock.json b/server/functions/package-lock.json deleted file mode 100644 index a4aa2fca..00000000 --- a/server/functions/package-lock.json +++ /dev/null @@ -1,13017 +0,0 @@ -{ - "name": "functions", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "functions", - "dependencies": { - "axios": "^1.7.2", - "firebase": "^10.12.2", - "firebase-admin": "^12.1.0", - "firebase-functions": "^5.0.0" - }, - "devDependencies": { - "eslint": "^8.15.0", - "eslint-config-google": "^0.14.0", - "firebase-functions-test": "^3.1.0", - "typescript": "^5.4.5" - }, - "engines": { - "node": "18" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz", - "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/highlight": "^7.24.6", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.6.tgz", - "integrity": "sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.6.tgz", - "integrity": "sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==", - "dev": true, - "peer": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.6", - "@babel/generator": "^7.24.6", - "@babel/helper-compilation-targets": "^7.24.6", - "@babel/helper-module-transforms": "^7.24.6", - "@babel/helpers": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/template": "^7.24.6", - "@babel/traverse": "^7.24.6", - "@babel/types": "^7.24.6", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.6.tgz", - "integrity": "sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.6", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz", - "integrity": "sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.24.6", - "@babel/helper-validator-option": "^7.24.6", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz", - "integrity": "sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz", - "integrity": "sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.24.6", - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz", - "integrity": "sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz", - "integrity": "sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz", - "integrity": "sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-module-imports": "^7.24.6", - "@babel/helper-simple-access": "^7.24.6", - "@babel/helper-split-export-declaration": "^7.24.6", - "@babel/helper-validator-identifier": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz", - "integrity": "sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz", - "integrity": "sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz", - "integrity": "sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz", - "integrity": "sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", - "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz", - "integrity": "sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.6.tgz", - "integrity": "sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.24.6", - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz", - "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.6", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.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==", - "dev": true, - "peer": true, - "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==", - "dev": true, - "peer": true, - "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==", - "dev": true, - "peer": true, - "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==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true, - "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==", - "dev": true, - "peer": true, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz", - "integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==", - "dev": true, - "peer": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.6.tgz", - "integrity": "sha512-lWfvAIFNWMlCsU0DRUun2GpFwZdGTukLaHJqRh1JRb80NdAP5Sb1HDHB5X9P9OtgZHQl089UzQkpYlBq2VTPRw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.6.tgz", - "integrity": "sha512-TzCtxGgVTEJWWwcYwQhCIQ6WaKlo80/B+Onsk4RRCcYqpYGFcG9etPW94VToGte5AAcxRrhjPUFvUS3Y2qKi4A==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.6.tgz", - "integrity": "sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.6.tgz", - "integrity": "sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.24.6", - "@babel/generator": "^7.24.6", - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-function-name": "^7.24.6", - "@babel/helper-hoist-variables": "^7.24.6", - "@babel/helper-split-export-declaration": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/types": "^7.24.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.6.tgz", - "integrity": "sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-string-parser": "^7.24.6", - "@babel/helper-validator-identifier": "^7.24.6", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "peer": true - }, - "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.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "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.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "engines": { - "node": ">=14" - } - }, - "node_modules/@firebase/analytics": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.4.tgz", - "integrity": "sha512-OJEl/8Oye/k+vJ1zV/1L6eGpc1XzAj+WG2TPznJ7PszL7sOFLBXkL9IjHfOCGDGpXeO3btozy/cYUqv4zgNeHg==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/installations": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/analytics-compat": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.10.tgz", - "integrity": "sha512-ia68RcLQLLMFWrM10JfmFod7eJGwqr4/uyrtzHpTDnxGX/6gNCBTOuxdAbyWIqXI5XmcMQdz9hDijGKOHgDfPw==", - "dependencies": { - "@firebase/analytics": "0.10.4", - "@firebase/analytics-types": "0.8.2", - "@firebase/component": "0.6.7", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/analytics-types": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.2.tgz", - "integrity": "sha512-EnzNNLh+9/sJsimsA/FGqzakmrAUKLeJvjRHlg8df1f97NLUlFidk9600y0ZgWOp3CAxn6Hjtk+08tixlUOWyw==" - }, - "node_modules/@firebase/app": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.5.tgz", - "integrity": "sha512-iY/fNot+hWPk9sTX8aHMqlcX9ynRvpGkskWAdUZ2eQQdLo8d1hSFYcYNwPv0Q/frGMasw8udKWMcFOEpC9fG8g==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "idb": "7.1.1", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/app-check": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.4.tgz", - "integrity": "sha512-2tjRDaxcM5G7BEpytiDcIl+NovV99q8yEqRMKDbn4J4i/XjjuThuB4S+4PkmTnZiCbdLXQiBhkVxNlUDcfog5Q==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/app-check-compat": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.11.tgz", - "integrity": "sha512-t01zaH3RJpKEey0nGduz3Is+uSz7Sj4U5nwOV6lWb+86s5xtxpIvBJzu/lKxJfYyfZ29eJwpdjEgT1/lm4iQyA==", - "dependencies": { - "@firebase/app-check": "0.8.4", - "@firebase/app-check-types": "0.5.2", - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/app-check-interop-types": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.2.tgz", - "integrity": "sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ==" - }, - "node_modules/@firebase/app-check-types": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.2.tgz", - "integrity": "sha512-FSOEzTzL5bLUbD2co3Zut46iyPWML6xc4x+78TeaXMSuJap5QObfb+rVvZJtla3asN4RwU7elaQaduP+HFizDA==" - }, - "node_modules/@firebase/app-compat": { - "version": "0.2.35", - "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.35.tgz", - "integrity": "sha512-vgay/WRjeH0r97/Q6L6df2CMx7oyNFDsE5yPQ9oR1G+zx2eT0s8vNNh0WlKqQxUEWaOLRnXhQ8gy7uu0cBgTRg==", - "dependencies": { - "@firebase/app": "0.10.5", - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/app-types": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.2.tgz", - "integrity": "sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ==" - }, - "node_modules/@firebase/auth": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.7.4.tgz", - "integrity": "sha512-d2Fw17s5QesojwebrA903el20Li9/YGgkoOGJjagM4I1qAT36APa/FcZ+OX86KxbYKCtQKTMqraU8pxG7C2JWA==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0", - "undici": "5.28.4" - }, - "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.5.9", - "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.9.tgz", - "integrity": "sha512-RX8Zh/3zz2CsVbmYfgHkfUm4fAEPCl+KHVIImNygV5jTGDF6oKOhBIpf4Yigclyu8ESQKZ4elyN0MBYm9/7zGw==", - "dependencies": { - "@firebase/auth": "1.7.4", - "@firebase/auth-types": "0.12.2", - "@firebase/component": "0.6.7", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0", - "undici": "5.28.4" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/auth-interop-types": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.3.tgz", - "integrity": "sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ==" - }, - "node_modules/@firebase/auth-types": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.2.tgz", - "integrity": "sha512-qsEBaRMoGvHO10unlDJhaKSuPn4pyoTtlQuP1ghZfzB6rNQPuhp/N/DcFZxm9i4v0SogjCbf9reWupwIvfmH6w==", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" - } - }, - "node_modules/@firebase/component": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.7.tgz", - "integrity": "sha512-baH1AA5zxfaz4O8w0vDwETByrKTQqB5CDjRls79Sa4eAGAoERw4Tnung7XbMl3jbJ4B/dmmtsMrdki0KikwDYA==", - "dependencies": { - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/database": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.5.tgz", - "integrity": "sha512-cAfwBqMQuW6HbhwI3Cb/gDqZg7aR0OmaJ85WUxlnoYW2Tm4eR0hFl5FEijI3/gYPUiUcUPQvTkGV222VkT7KPw==", - "dependencies": { - "@firebase/app-check-interop-types": "0.3.2", - "@firebase/auth-interop-types": "0.2.3", - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "faye-websocket": "0.11.4", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/database-compat": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.5.tgz", - "integrity": "sha512-NDSMaDjQ+TZEMDMmzJwlTL05kh1+0Y84C+kVMaOmNOzRGRM7VHi29I6YUhCetXH+/b1Wh4ZZRyp1CuWkd8s6hg==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/database": "1.0.5", - "@firebase/database-types": "1.0.3", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/database-types": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.3.tgz", - "integrity": "sha512-39V/Riv2R3O/aUjYKh0xypj7NTNXNAK1bcgY5Kx+hdQPRS/aPTS8/5c0CGFYKgVuFbYlnlnhrCTYsh2uNhGwzA==", - "dependencies": { - "@firebase/app-types": "0.9.2", - "@firebase/util": "1.9.6" - } - }, - "node_modules/@firebase/firestore": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.6.3.tgz", - "integrity": "sha512-d/+N2iUsiJ/Dc7fApdpdmmTXzwuTCromsdA1lKwYfZtMIOd1fI881NSLwK2wV4I38wkLnvfKJUV6WpU1f3/ONg==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "@firebase/webchannel-wrapper": "1.0.0", - "@grpc/grpc-js": "~1.9.0", - "@grpc/proto-loader": "^0.7.8", - "tslib": "^2.1.0", - "undici": "5.28.4" - }, - "engines": { - "node": ">=10.10.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/firestore-compat": { - "version": "0.3.32", - "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.32.tgz", - "integrity": "sha512-at71mwK7a/mUXH0OgyY0+gUzedm/EUydDFYSFsBoO8DYowZ23Mgd6P4Rzq/Ll3zI/3xJN7LGe7Qp4iE/V/3Arg==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/firestore": "4.6.3", - "@firebase/firestore-types": "3.0.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/firestore-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-3.0.2.tgz", - "integrity": "sha512-wp1A+t5rI2Qc/2q7r2ZpjUXkRVPtGMd6zCLsiWurjsQpqPgFin3AhNibKcIzoF2rnToNa/XYtyWXuifjOOwDgg==", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" - } - }, - "node_modules/@firebase/firestore/node_modules/@grpc/grpc-js": { - "version": "1.9.14", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.14.tgz", - "integrity": "sha512-nOpuzZ2G3IuMFN+UPPpKrC6NsLmWsTqSsm66IRfnBt1D4pwTqE27lmbpcPM+l2Ua4gE7PfjRHI6uedAy7hoXUw==", - "dependencies": { - "@grpc/proto-loader": "^0.7.8", - "@types/node": ">=12.12.47" - }, - "engines": { - "node": "^8.13.0 || >=10.10.0" - } - }, - "node_modules/@firebase/functions": { - "version": "0.11.5", - "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.5.tgz", - "integrity": "sha512-qrHJ+l62mZiU5UZiVi84t/iLXZlhRuSvBQsa2qvNLgPsEWR7wdpWhRmVdB7AU8ndkSHJjGlMICqrVnz47sgU7Q==", - "dependencies": { - "@firebase/app-check-interop-types": "0.3.2", - "@firebase/auth-interop-types": "0.2.3", - "@firebase/component": "0.6.7", - "@firebase/messaging-interop-types": "0.2.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0", - "undici": "5.28.4" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/functions-compat": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.11.tgz", - "integrity": "sha512-Qn+ts/M6Lj2/6i1cp5V5TRR+Hi9kyXyHbo+w9GguINJ87zxrCe6ulx3TI5AGQkoQa8YFHUhT3DMGmLFiJjWTSQ==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/functions": "0.11.5", - "@firebase/functions-types": "0.6.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/functions-types": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.2.tgz", - "integrity": "sha512-0KiJ9lZ28nS2iJJvimpY4nNccV21rkQyor5Iheu/nq8aKXJqtJdeSlZDspjPSBBiHRzo7/GMUttegnsEITqR+w==" - }, - "node_modules/@firebase/installations": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.7.tgz", - "integrity": "sha512-i6iGoXRu5mX4rTsiMSSKrgh9pSEzD4hwBEzRh5kEhOTr8xN/wvQcCPZDSMVYKwM2XyCPBLVq0JzjyerwL0Rihg==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/util": "1.9.6", - "idb": "7.1.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/installations-compat": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.7.tgz", - "integrity": "sha512-RPcbD+3nqHbnhVjIOpWK2H5qzZ8pAAAScceiWph0VNTqpKyPQ5tDcp4V5fS0ELpfgsHYvroMLDKfeHxpfvm8cw==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/installations": "0.6.7", - "@firebase/installations-types": "0.5.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/installations-types": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.2.tgz", - "integrity": "sha512-que84TqGRZJpJKHBlF2pkvc1YcXrtEDOVGiDjovP/a3s6W4nlbohGXEsBJo0JCeeg/UG9A+DEZVDUV9GpklUzA==", - "peerDependencies": { - "@firebase/app-types": "0.x" - } - }, - "node_modules/@firebase/logger": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.2.tgz", - "integrity": "sha512-Q1VuA5M1Gjqrwom6I6NUU4lQXdo9IAQieXlujeHZWvRt1b7qQ0KwBaNAjgxG27jgF9/mUwsNmO8ptBCGVYhB0A==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/messaging": { - "version": "0.12.9", - "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.9.tgz", - "integrity": "sha512-IH+JJmzbFGZXV3+TDyKdqqKPVfKRqBBg2BfYYOy7cm7J+SwV+uJMe8EnDKYeQLEQhtpwciPfJ3qQXJs2lbxDTw==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/installations": "0.6.7", - "@firebase/messaging-interop-types": "0.2.2", - "@firebase/util": "1.9.6", - "idb": "7.1.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/messaging-compat": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.9.tgz", - "integrity": "sha512-5jN6wyhwPgBH02zOtmmoOeyfsmoD7ty48D1m0vVPsFg55RqN2Z3Q9gkZ5GmPklFPjTPLcxB1ObcHOZvThTkm7g==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/messaging": "0.12.9", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/messaging-interop-types": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.2.tgz", - "integrity": "sha512-l68HXbuD2PPzDUOFb3aG+nZj5KA3INcPwlocwLZOzPp9rFM9yeuI9YLl6DQfguTX5eAGxO0doTR+rDLDvQb5tA==" - }, - "node_modules/@firebase/performance": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.7.tgz", - "integrity": "sha512-d+Q4ltjdJZqjzcdms5i0UC9KLYX7vKGcygZ+7zHA/Xk+bAbMD2CPU0nWTnlNFWifZWIcXZ/2mAMvaGMW3lypUA==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/installations": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/performance-compat": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.7.tgz", - "integrity": "sha512-cb8ge/5iTstxfIGW+iiY+7l3FtN8gobNh9JSQNZgLC9xmcfBYWEs8IeEWMI6S8T+At0oHc3lv+b2kpRMUWr8zQ==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/performance": "0.6.7", - "@firebase/performance-types": "0.2.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/performance-types": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.2.tgz", - "integrity": "sha512-gVq0/lAClVH5STrIdKnHnCo2UcPLjJlDUoEB/tB4KM+hAeHUxWKnpT0nemUPvxZ5nbdY/pybeyMe8Cs29gEcHA==" - }, - "node_modules/@firebase/remote-config": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.7.tgz", - "integrity": "sha512-5oPNrPFLsbsjpq0lUEIXoDF2eJK7vAbyXe/DEuZQxnwJlfR7aQbtUlEkRgQWcicXpyDmAmDLo7q7lDbCYa6CpA==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/installations": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/remote-config-compat": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.7.tgz", - "integrity": "sha512-Fq0oneQ4SluLnfr5/HfzRS1TZf1ANj1rWbCCW3+oC98An3nE+sCdp+FSuHsEVNwgMg4Tkwx9Oom2lkKeU+Vn+w==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/remote-config": "0.4.7", - "@firebase/remote-config-types": "0.3.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/remote-config-types": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.2.tgz", - "integrity": "sha512-0BC4+Ud7y2aPTyhXJTMTFfrGGLqdYXrUB9sJVAB8NiqJswDTc4/2qrE/yfUbnQJhbSi6ZaTTBKyG3n1nplssaA==" - }, - "node_modules/@firebase/storage": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.12.5.tgz", - "integrity": "sha512-nGWBOGFNr10j0LA4NJ3/Yh3us/lb0Q1xSIKZ38N6FcS+vY54nqJ7k3zE3PENregHC8+8txRow++A568G3v8hOA==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0", - "undici": "5.28.4" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/storage-compat": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.8.tgz", - "integrity": "sha512-qDfY9kMb6Ch2hZb40sBjDQ8YPxbjGOxuT+gU1Z0iIVSSpSX0f4YpGJCypUXiA0T11n6InCXB+T/Dknh2yxVTkg==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/storage": "0.12.5", - "@firebase/storage-types": "0.8.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/storage-types": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.2.tgz", - "integrity": "sha512-0vWu99rdey0g53lA7IShoA2Lol1jfnPovzLDUBuon65K7uKG9G+L5uO05brD9pMw+l4HRFw23ah3GwTGpEav6g==", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" - } - }, - "node_modules/@firebase/util": { - "version": "1.9.6", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.6.tgz", - "integrity": "sha512-IBr1MZbp4d5MjBCXL3TW1dK/PDXX4yOGbiwRNh1oAbE/+ci5Uuvy9KIrsFYY80as1I0iOaD5oOMA9Q8j4TJWcw==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/vertexai-preview": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@firebase/vertexai-preview/-/vertexai-preview-0.0.2.tgz", - "integrity": "sha512-NOOL63kFQRq45ioi5P+hlqj/4LNmvn1URhGjQdvyV54c1Irvoq26aW861PRRLjrSMIeNeiLtCLD5pe+ediepAg==", - "dependencies": { - "@firebase/app-check-interop-types": "0.3.2", - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@firebase/app": "0.x", - "@firebase/app-types": "0.x" - } - }, - "node_modules/@firebase/webchannel-wrapper": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.0.tgz", - "integrity": "sha512-zuWxyfXNbsKbm96HhXzainONPFqRcoZblQ++e9cAIGUuHfl2cFSBzW01jtesqWG/lqaUyX3H8O1y9oWboGNQBA==" - }, - "node_modules/@google-cloud/firestore": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-7.7.0.tgz", - "integrity": "sha512-41/vBFXOeSYjFI/2mJuJrDwg2umGk+FDrI/SCGzBRUe+UZWDN4GoahIbGZ19YQsY0ANNl6DRiAy4wD6JezK02g==", - "optional": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "functional-red-black-tree": "^1.0.1", - "google-gax": "^4.3.3", - "protobufjs": "^7.2.6" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@google-cloud/paginator": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", - "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", - "optional": true, - "dependencies": { - "arrify": "^2.0.0", - "extend": "^3.0.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@google-cloud/projectify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", - "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", - "optional": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@google-cloud/promisify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", - "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@google-cloud/storage": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.11.1.tgz", - "integrity": "sha512-tibLSvgw7nDohMyIelt26kBpJ59YGWA2Rzep++DFNzEzKaSuCSp56Se9iM13ZlM3j5nLzR21IBkpRN58CmvCIw==", - "optional": true, - "dependencies": { - "@google-cloud/paginator": "^5.0.0", - "@google-cloud/projectify": "^4.0.0", - "@google-cloud/promisify": "^4.0.0", - "abort-controller": "^3.0.0", - "async-retry": "^1.3.3", - "duplexify": "^4.1.3", - "fast-xml-parser": "^4.3.0", - "gaxios": "^6.0.2", - "google-auth-library": "^9.6.3", - "html-entities": "^2.5.2", - "mime": "^3.0.0", - "p-limit": "^3.0.1", - "retry-request": "^7.0.0", - "teeny-request": "^9.0.0", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@google-cloud/storage/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "optional": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@grpc/grpc-js": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.8.tgz", - "integrity": "sha512-vYVqYzHicDqyKB+NQhAc54I1QWCBLCrYG6unqOIcBTHx+7x8C9lcoLj3KVJXs2VB4lUbpWY+Kk9NipcbXYWmvg==", - "optional": true, - "dependencies": { - "@grpc/proto-loader": "^0.7.13", - "@js-sdsl/ordered-map": "^4.4.2" - }, - "engines": { - "node": ">=12.10.0" - } - }, - "node_modules/@grpc/proto-loader": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", - "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", - "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.2.5", - "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.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.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": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "peer": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "peer": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "peer": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "peer": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "peer": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "peer": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "peer": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "peer": true, - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "peer": true, - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "peer": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "peer": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "peer": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@js-sdsl/ordered-map": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", - "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "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/@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/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, - "peer": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "peer": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "peer": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "optional": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==", - "optional": true - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.3.tgz", - "integrity": "sha512-I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg==", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz", - "integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "peer": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jsonwebtoken": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.6.tgz", - "integrity": "sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==", - "dev": true - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", - "optional": true - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" - }, - "node_modules/@types/node": { - "version": "20.14.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.0.tgz", - "integrity": "sha512-5cHBxFGJx6L4s56Bubp4fglrEpmyJypsqI6RgzMfBHWUJQGWAAi8cWcgetEbZXHYXo9C2Fa4EEds/uSyS4cxmA==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" - }, - "node_modules/@types/request": { - "version": "2.48.12", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", - "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", - "optional": true, - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "peer": true - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "optional": true - }, - "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "peer": true - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "optional": true, - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "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/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "optional": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "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-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "peer": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "peer": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", - "optional": true, - "dependencies": { - "retry": "0.13.1" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "peer": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "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/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "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/bignumber.js": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", - "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "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.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "peer": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true, - "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "peer": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "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": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "peer": true - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001627", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001627.tgz", - "integrity": "sha512-4zgNiB8nTyV/tHhwZrFs88ryjls/lHiqFhrxCW4qSTeuRByBVnPYpDInchOIySWknznucaf31Z4KYqjfbrecVw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true - }, - "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/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", - "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", - "dev": true, - "peer": true - }, - "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/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "peer": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true, - "peer": true - }, - "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/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "peer": true - }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "peer": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "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/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "peer": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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/duplexify": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", - "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", - "optional": true, - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.2" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.788", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.788.tgz", - "integrity": "sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==", - "dev": true, - "peer": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "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/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "peer": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "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==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "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-config-google": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", - "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "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/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "peer": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "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/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "peer": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.6.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "optional": true - }, - "node_modules/farmhash": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/farmhash/-/farmhash-3.3.1.tgz", - "integrity": "sha512-XUizHanzlr/v7suBr/o85HSakOoWh6HKXZjFYl5C2+Gj0f0rkw+XTUZzrd9odDsgI9G5tRUcF4wSbKaX04T0DQ==", - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^5.1.0", - "prebuild-install": "^7.1.2" - }, - "engines": { - "node": ">=10" - } - }, - "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==", - "devOptional": true - }, - "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/fast-xml-parser": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", - "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "optional": true, - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "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/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "peer": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "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.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "peer": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "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.12.2", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.12.2.tgz", - "integrity": "sha512-ZxEdtSvP1I9su1yf32D8TIdgxtPgxwr6z3jYAR1TXS/t+fVfpoPc/N1/N2bxOco9mNjUoc+od34v5Fn4GeKs6Q==", - "dependencies": { - "@firebase/analytics": "0.10.4", - "@firebase/analytics-compat": "0.2.10", - "@firebase/app": "0.10.5", - "@firebase/app-check": "0.8.4", - "@firebase/app-check-compat": "0.3.11", - "@firebase/app-compat": "0.2.35", - "@firebase/app-types": "0.9.2", - "@firebase/auth": "1.7.4", - "@firebase/auth-compat": "0.5.9", - "@firebase/database": "1.0.5", - "@firebase/database-compat": "1.0.5", - "@firebase/firestore": "4.6.3", - "@firebase/firestore-compat": "0.3.32", - "@firebase/functions": "0.11.5", - "@firebase/functions-compat": "0.3.11", - "@firebase/installations": "0.6.7", - "@firebase/installations-compat": "0.2.7", - "@firebase/messaging": "0.12.9", - "@firebase/messaging-compat": "0.2.9", - "@firebase/performance": "0.6.7", - "@firebase/performance-compat": "0.2.7", - "@firebase/remote-config": "0.4.7", - "@firebase/remote-config-compat": "0.2.7", - "@firebase/storage": "0.12.5", - "@firebase/storage-compat": "0.3.8", - "@firebase/util": "1.9.6", - "@firebase/vertexai-preview": "0.0.2" - } - }, - "node_modules/firebase-admin": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-12.1.1.tgz", - "integrity": "sha512-Nuoxk//gaYrspS7TvwBINdGvFhh2QeiaWpRW6+PJ+tWyn2/CugBc7jKa1NaBg0AvhGSOXFOCIsXhzCzHA47Rew==", - "dependencies": { - "@fastify/busboy": "^2.1.0", - "@firebase/database-compat": "^1.0.2", - "@firebase/database-types": "^1.0.0", - "@types/node": "^20.10.3", - "farmhash": "^3.3.1", - "jsonwebtoken": "^9.0.0", - "jwks-rsa": "^3.1.0", - "long": "^5.2.3", - "node-forge": "^1.3.1", - "uuid": "^9.0.0" - }, - "engines": { - "node": ">=14" - }, - "optionalDependencies": { - "@google-cloud/firestore": "^7.7.0", - "@google-cloud/storage": "^7.7.0" - } - }, - "node_modules/firebase-functions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-5.0.1.tgz", - "integrity": "sha512-1m+crtgAR8Tl36gjpM02KCY5zduAejFmDSXvih/DB93apg39f0U/WwRgT7sitGIRqyCcIpktNUbXJv7Y9JOF4A==", - "dependencies": { - "@types/cors": "^2.8.5", - "@types/express": "4.17.3", - "cors": "^2.8.5", - "express": "^4.17.1", - "protobufjs": "^7.2.2" - }, - "bin": { - "firebase-functions": "lib/bin/firebase-functions.js" - }, - "engines": { - "node": ">=14.10.0" - }, - "peerDependencies": { - "firebase-admin": "^11.10.0 || ^12.0.0" - } - }, - "node_modules/firebase-functions-test": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-3.2.0.tgz", - "integrity": "sha512-UkOPIJH4I4qUGGSr4vaBcbAqn+YblVtMqRI2KQMW2nhMw5So91Iw1klu5Epk8vhEOhn1LPG5/tMaBI1MAtOt6Q==", - "dev": true, - "dependencies": { - "@types/lodash": "^4.14.104", - "lodash": "^4.17.5", - "ts-deepmerge": "^2.0.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "firebase-admin": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0", - "firebase-functions": ">=4.9.0", - "jest": ">=28.0.0" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "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" - ], - "peer": true, - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "optional": true - }, - "node_modules/gaxios": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.6.0.tgz", - "integrity": "sha512-bpOZVQV5gthH/jVCSuYuokRo2bTKOcuBiVWpjmTn6C5Agl5zclGfTljuGsQZxwwDBkli+YhZhP4TdlqTnhOezQ==", - "optional": true, - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^7.0.1", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/gcp-metadata": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", - "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", - "optional": true, - "dependencies": { - "gaxios": "^6.0.0", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "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.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/google-auth-library": { - "version": "9.10.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.10.0.tgz", - "integrity": "sha512-ol+oSa5NbcGdDqA+gZ3G3mev59OHBZksBTxY/tYwjtcp1H/scAFwJfSQU9/1RALoyZ7FslNbke8j4i3ipwlyuQ==", - "optional": true, - "dependencies": { - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "gaxios": "^6.1.1", - "gcp-metadata": "^6.1.0", - "gtoken": "^7.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/google-gax": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.3.5.tgz", - "integrity": "sha512-zXRSGgHp33ottCQMdYlKEFX/MhWkzKVX5P3Vpmx+DW6rtseLILzp3V0YV5Rh4oQzzkM0BH9+nJIyX01EUgmd3g==", - "optional": true, - "dependencies": { - "@grpc/grpc-js": "~1.10.3", - "@grpc/proto-loader": "^0.7.0", - "@types/long": "^4.0.0", - "abort-controller": "^3.0.0", - "duplexify": "^4.0.0", - "google-auth-library": "^9.3.0", - "node-fetch": "^2.6.1", - "object-hash": "^3.0.0", - "proto3-json-serializer": "^2.0.0", - "protobufjs": "7.3.0", - "retry-request": "^7.0.0", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "peer": true - }, - "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/gtoken": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", - "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", - "optional": true, - "dependencies": { - "gaxios": "^6.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=14.0.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/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "optional": true - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "peer": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "optional": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-agent/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "optional": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", - "optional": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/idb": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "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/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "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==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "peer": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "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==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "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==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "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==", - "dev": true, - "peer": true - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "peer": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "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-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "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, - "peer": 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/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "devOptional": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", - "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "peer": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "peer": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "peer": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "peer": true, - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "peer": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "peer": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "peer": true, - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "peer": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "peer": true, - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jose": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.5.tgz", - "integrity": "sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, - "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==", - "dev": true, - "peer": true - }, - "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/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "optional": true, - "dependencies": { - "bignumber.js": "^9.0.0" - } - }, - "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==", - "dev": true, - "peer": true - }, - "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/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "peer": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/jsonwebtoken/node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jsonwebtoken/node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jsonwebtoken/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "optional": true, - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jwks-rsa": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.1.0.tgz", - "integrity": "sha512-v7nqlfezb9YfHHzYII3ef2a2j1XnGeSE/bK3WfumaYCqONAIstJbrEGapz4kadScZzEt7zYCN7bucj8C0Mv/Rg==", - "dependencies": { - "@types/express": "^4.17.17", - "@types/jsonwebtoken": "^9.0.2", - "debug": "^4.3.4", - "jose": "^4.14.6", - "limiter": "^1.1.5", - "lru-memoizer": "^2.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/jwks-rsa/node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "optional": true, - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "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/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "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/limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" - }, - "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==", - "dev": true, - "peer": true - }, - "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": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "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.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, - "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/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" - }, - "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/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "peer": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/lru-memoizer": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.3.0.tgz", - "integrity": "sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==", - "dependencies": { - "lodash.clonedeep": "^4.5.0", - "lru-cache": "6.0.0" - } - }, - "node_modules/lru-memoizer/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==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lru-memoizer/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "peer": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "peer": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "peer": true - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, - "peer": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "optional": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "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==" - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "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/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-abi": { - "version": "3.63.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.63.0.tgz", - "integrity": "sha512-vAszCsOUrUxjGAmdnM/pq7gUgie0IRteCQMX6d4A534fQCR93EJU5qgzBvU6EkFfK27s0T3HEV3BOyJIr7OMYw==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "optional": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "peer": true - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true, - "peer": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "peer": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "optional": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "peer": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "devOptional": 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/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "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==", - "dev": true, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "dev": true, - "peer": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true, - "peer": 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, - "peer": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "peer": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "peer": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "peer": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "peer": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "peer": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/prebuild-install": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", - "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "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/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "peer": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/proto3-json-serializer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz", - "integrity": "sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==", - "optional": true, - "dependencies": { - "protobufjs": "^7.2.5" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/protobufjs": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", - "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", - "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/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "peer": true - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "peer": true - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "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==", - "dev": true, - "peer": true, - "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-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "peer": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "optional": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/retry-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", - "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", - "optional": true, - "dependencies": { - "@types/request": "^2.48.8", - "extend": "^3.0.2", - "teeny-request": "^9.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "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==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "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/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "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/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "peer": true - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "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/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "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": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "peer": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "peer": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "peer": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stream-events": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", - "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", - "optional": true, - "dependencies": { - "stubs": "^3.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "optional": true - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "peer": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "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/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "optional": true - }, - "node_modules/stubs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", - "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", - "optional": true - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "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==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/teeny-request": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", - "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", - "optional": true, - "dependencies": { - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.9", - "stream-events": "^1.0.5", - "uuid": "^9.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/teeny-request/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "optional": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/teeny-request/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "optional": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "peer": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "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/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "peer": 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==", - "dev": true, - "peer": true, - "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, - "peer": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "optional": true - }, - "node_modules/ts-deepmerge": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/ts-deepmerge/-/ts-deepmerge-2.0.7.tgz", - "integrity": "sha512-3phiGcxPSSR47RBubQxPoZ+pqXsEsozLo4G4AlSrsMKTFg9TA3l+3he5BqpUi9wiuDbaHWXH/amlzQ49uEdXtg==", - "dev": true - }, - "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/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "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-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "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/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici": { - "version": "5.28.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", - "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true, - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "peer": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "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==", - "optional": true - }, - "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==", - "optional": true, - "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/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==" - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "peer": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "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": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "peer": true - }, - "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==", - "devOptional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@babel/code-frame": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz", - "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==", - "dev": true, - "peer": true, - "requires": { - "@babel/highlight": "^7.24.6", - "picocolors": "^1.0.0" - } - }, - "@babel/compat-data": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.6.tgz", - "integrity": "sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==", - "dev": true, - "peer": true - }, - "@babel/core": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.6.tgz", - "integrity": "sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==", - "dev": true, - "peer": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.6", - "@babel/generator": "^7.24.6", - "@babel/helper-compilation-targets": "^7.24.6", - "@babel/helper-module-transforms": "^7.24.6", - "@babel/helpers": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/template": "^7.24.6", - "@babel/traverse": "^7.24.6", - "@babel/types": "^7.24.6", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - } - }, - "@babel/generator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.6.tgz", - "integrity": "sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.24.6", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz", - "integrity": "sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==", - "dev": true, - "peer": true, - "requires": { - "@babel/compat-data": "^7.24.6", - "@babel/helper-validator-option": "^7.24.6", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz", - "integrity": "sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==", - "dev": true, - "peer": true - }, - "@babel/helper-function-name": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz", - "integrity": "sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==", - "dev": true, - "peer": true, - "requires": { - "@babel/template": "^7.24.6", - "@babel/types": "^7.24.6" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz", - "integrity": "sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.24.6" - } - }, - "@babel/helper-module-imports": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz", - "integrity": "sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.24.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz", - "integrity": "sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-module-imports": "^7.24.6", - "@babel/helper-simple-access": "^7.24.6", - "@babel/helper-split-export-declaration": "^7.24.6", - "@babel/helper-validator-identifier": "^7.24.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz", - "integrity": "sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==", - "dev": true, - "peer": true - }, - "@babel/helper-simple-access": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz", - "integrity": "sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.24.6" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz", - "integrity": "sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.24.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz", - "integrity": "sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==", - "dev": true, - "peer": true - }, - "@babel/helper-validator-identifier": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", - "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", - "dev": true, - "peer": true - }, - "@babel/helper-validator-option": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz", - "integrity": "sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==", - "dev": true, - "peer": true - }, - "@babel/helpers": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.6.tgz", - "integrity": "sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==", - "dev": true, - "peer": true, - "requires": { - "@babel/template": "^7.24.6", - "@babel/types": "^7.24.6" - } - }, - "@babel/highlight": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz", - "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-validator-identifier": "^7.24.6", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "dependencies": { - "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==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz", - "integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==", - "dev": true, - "peer": true - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.6.tgz", - "integrity": "sha512-lWfvAIFNWMlCsU0DRUun2GpFwZdGTukLaHJqRh1JRb80NdAP5Sb1HDHB5X9P9OtgZHQl089UzQkpYlBq2VTPRw==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.24.6" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.6.tgz", - "integrity": "sha512-TzCtxGgVTEJWWwcYwQhCIQ6WaKlo80/B+Onsk4RRCcYqpYGFcG9etPW94VToGte5AAcxRrhjPUFvUS3Y2qKi4A==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.24.6" - } - }, - "@babel/template": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.6.tgz", - "integrity": "sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==", - "dev": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/types": "^7.24.6" - } - }, - "@babel/traverse": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.6.tgz", - "integrity": "sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==", - "dev": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.24.6", - "@babel/generator": "^7.24.6", - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-function-name": "^7.24.6", - "@babel/helper-hoist-variables": "^7.24.6", - "@babel/helper-split-export-declaration": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/types": "^7.24.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "peer": true - } - } - }, - "@babel/types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.6.tgz", - "integrity": "sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-string-parser": "^7.24.6", - "@babel/helper-validator-identifier": "^7.24.6", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "peer": true - }, - "@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, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "requires": { - "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" - } - }, - "@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true - }, - "@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==" - }, - "@firebase/analytics": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.4.tgz", - "integrity": "sha512-OJEl/8Oye/k+vJ1zV/1L6eGpc1XzAj+WG2TPznJ7PszL7sOFLBXkL9IjHfOCGDGpXeO3btozy/cYUqv4zgNeHg==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/installations": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/analytics-compat": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.10.tgz", - "integrity": "sha512-ia68RcLQLLMFWrM10JfmFod7eJGwqr4/uyrtzHpTDnxGX/6gNCBTOuxdAbyWIqXI5XmcMQdz9hDijGKOHgDfPw==", - "requires": { - "@firebase/analytics": "0.10.4", - "@firebase/analytics-types": "0.8.2", - "@firebase/component": "0.6.7", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/analytics-types": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.2.tgz", - "integrity": "sha512-EnzNNLh+9/sJsimsA/FGqzakmrAUKLeJvjRHlg8df1f97NLUlFidk9600y0ZgWOp3CAxn6Hjtk+08tixlUOWyw==" - }, - "@firebase/app": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.5.tgz", - "integrity": "sha512-iY/fNot+hWPk9sTX8aHMqlcX9ynRvpGkskWAdUZ2eQQdLo8d1hSFYcYNwPv0Q/frGMasw8udKWMcFOEpC9fG8g==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "idb": "7.1.1", - "tslib": "^2.1.0" - } - }, - "@firebase/app-check": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.4.tgz", - "integrity": "sha512-2tjRDaxcM5G7BEpytiDcIl+NovV99q8yEqRMKDbn4J4i/XjjuThuB4S+4PkmTnZiCbdLXQiBhkVxNlUDcfog5Q==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/app-check-compat": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.11.tgz", - "integrity": "sha512-t01zaH3RJpKEey0nGduz3Is+uSz7Sj4U5nwOV6lWb+86s5xtxpIvBJzu/lKxJfYyfZ29eJwpdjEgT1/lm4iQyA==", - "requires": { - "@firebase/app-check": "0.8.4", - "@firebase/app-check-types": "0.5.2", - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/app-check-interop-types": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.2.tgz", - "integrity": "sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ==" - }, - "@firebase/app-check-types": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.2.tgz", - "integrity": "sha512-FSOEzTzL5bLUbD2co3Zut46iyPWML6xc4x+78TeaXMSuJap5QObfb+rVvZJtla3asN4RwU7elaQaduP+HFizDA==" - }, - "@firebase/app-compat": { - "version": "0.2.35", - "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.35.tgz", - "integrity": "sha512-vgay/WRjeH0r97/Q6L6df2CMx7oyNFDsE5yPQ9oR1G+zx2eT0s8vNNh0WlKqQxUEWaOLRnXhQ8gy7uu0cBgTRg==", - "requires": { - "@firebase/app": "0.10.5", - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/app-types": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.2.tgz", - "integrity": "sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ==" - }, - "@firebase/auth": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.7.4.tgz", - "integrity": "sha512-d2Fw17s5QesojwebrA903el20Li9/YGgkoOGJjagM4I1qAT36APa/FcZ+OX86KxbYKCtQKTMqraU8pxG7C2JWA==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0", - "undici": "5.28.4" - } - }, - "@firebase/auth-compat": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.9.tgz", - "integrity": "sha512-RX8Zh/3zz2CsVbmYfgHkfUm4fAEPCl+KHVIImNygV5jTGDF6oKOhBIpf4Yigclyu8ESQKZ4elyN0MBYm9/7zGw==", - "requires": { - "@firebase/auth": "1.7.4", - "@firebase/auth-types": "0.12.2", - "@firebase/component": "0.6.7", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0", - "undici": "5.28.4" - } - }, - "@firebase/auth-interop-types": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.3.tgz", - "integrity": "sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ==" - }, - "@firebase/auth-types": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.2.tgz", - "integrity": "sha512-qsEBaRMoGvHO10unlDJhaKSuPn4pyoTtlQuP1ghZfzB6rNQPuhp/N/DcFZxm9i4v0SogjCbf9reWupwIvfmH6w==", - "requires": {} - }, - "@firebase/component": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.7.tgz", - "integrity": "sha512-baH1AA5zxfaz4O8w0vDwETByrKTQqB5CDjRls79Sa4eAGAoERw4Tnung7XbMl3jbJ4B/dmmtsMrdki0KikwDYA==", - "requires": { - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/database": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.5.tgz", - "integrity": "sha512-cAfwBqMQuW6HbhwI3Cb/gDqZg7aR0OmaJ85WUxlnoYW2Tm4eR0hFl5FEijI3/gYPUiUcUPQvTkGV222VkT7KPw==", - "requires": { - "@firebase/app-check-interop-types": "0.3.2", - "@firebase/auth-interop-types": "0.2.3", - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "faye-websocket": "0.11.4", - "tslib": "^2.1.0" - } - }, - "@firebase/database-compat": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.5.tgz", - "integrity": "sha512-NDSMaDjQ+TZEMDMmzJwlTL05kh1+0Y84C+kVMaOmNOzRGRM7VHi29I6YUhCetXH+/b1Wh4ZZRyp1CuWkd8s6hg==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/database": "1.0.5", - "@firebase/database-types": "1.0.3", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/database-types": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.3.tgz", - "integrity": "sha512-39V/Riv2R3O/aUjYKh0xypj7NTNXNAK1bcgY5Kx+hdQPRS/aPTS8/5c0CGFYKgVuFbYlnlnhrCTYsh2uNhGwzA==", - "requires": { - "@firebase/app-types": "0.9.2", - "@firebase/util": "1.9.6" - } - }, - "@firebase/firestore": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.6.3.tgz", - "integrity": "sha512-d/+N2iUsiJ/Dc7fApdpdmmTXzwuTCromsdA1lKwYfZtMIOd1fI881NSLwK2wV4I38wkLnvfKJUV6WpU1f3/ONg==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "@firebase/webchannel-wrapper": "1.0.0", - "@grpc/grpc-js": "~1.9.0", - "@grpc/proto-loader": "^0.7.8", - "tslib": "^2.1.0", - "undici": "5.28.4" - }, - "dependencies": { - "@grpc/grpc-js": { - "version": "1.9.14", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.14.tgz", - "integrity": "sha512-nOpuzZ2G3IuMFN+UPPpKrC6NsLmWsTqSsm66IRfnBt1D4pwTqE27lmbpcPM+l2Ua4gE7PfjRHI6uedAy7hoXUw==", - "requires": { - "@grpc/proto-loader": "^0.7.8", - "@types/node": ">=12.12.47" - } - } - } - }, - "@firebase/firestore-compat": { - "version": "0.3.32", - "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.32.tgz", - "integrity": "sha512-at71mwK7a/mUXH0OgyY0+gUzedm/EUydDFYSFsBoO8DYowZ23Mgd6P4Rzq/Ll3zI/3xJN7LGe7Qp4iE/V/3Arg==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/firestore": "4.6.3", - "@firebase/firestore-types": "3.0.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/firestore-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-3.0.2.tgz", - "integrity": "sha512-wp1A+t5rI2Qc/2q7r2ZpjUXkRVPtGMd6zCLsiWurjsQpqPgFin3AhNibKcIzoF2rnToNa/XYtyWXuifjOOwDgg==", - "requires": {} - }, - "@firebase/functions": { - "version": "0.11.5", - "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.5.tgz", - "integrity": "sha512-qrHJ+l62mZiU5UZiVi84t/iLXZlhRuSvBQsa2qvNLgPsEWR7wdpWhRmVdB7AU8ndkSHJjGlMICqrVnz47sgU7Q==", - "requires": { - "@firebase/app-check-interop-types": "0.3.2", - "@firebase/auth-interop-types": "0.2.3", - "@firebase/component": "0.6.7", - "@firebase/messaging-interop-types": "0.2.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0", - "undici": "5.28.4" - } - }, - "@firebase/functions-compat": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.11.tgz", - "integrity": "sha512-Qn+ts/M6Lj2/6i1cp5V5TRR+Hi9kyXyHbo+w9GguINJ87zxrCe6ulx3TI5AGQkoQa8YFHUhT3DMGmLFiJjWTSQ==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/functions": "0.11.5", - "@firebase/functions-types": "0.6.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/functions-types": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.2.tgz", - "integrity": "sha512-0KiJ9lZ28nS2iJJvimpY4nNccV21rkQyor5Iheu/nq8aKXJqtJdeSlZDspjPSBBiHRzo7/GMUttegnsEITqR+w==" - }, - "@firebase/installations": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.7.tgz", - "integrity": "sha512-i6iGoXRu5mX4rTsiMSSKrgh9pSEzD4hwBEzRh5kEhOTr8xN/wvQcCPZDSMVYKwM2XyCPBLVq0JzjyerwL0Rihg==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/util": "1.9.6", - "idb": "7.1.1", - "tslib": "^2.1.0" - } - }, - "@firebase/installations-compat": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.7.tgz", - "integrity": "sha512-RPcbD+3nqHbnhVjIOpWK2H5qzZ8pAAAScceiWph0VNTqpKyPQ5tDcp4V5fS0ELpfgsHYvroMLDKfeHxpfvm8cw==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/installations": "0.6.7", - "@firebase/installations-types": "0.5.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/installations-types": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.2.tgz", - "integrity": "sha512-que84TqGRZJpJKHBlF2pkvc1YcXrtEDOVGiDjovP/a3s6W4nlbohGXEsBJo0JCeeg/UG9A+DEZVDUV9GpklUzA==", - "requires": {} - }, - "@firebase/logger": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.2.tgz", - "integrity": "sha512-Q1VuA5M1Gjqrwom6I6NUU4lQXdo9IAQieXlujeHZWvRt1b7qQ0KwBaNAjgxG27jgF9/mUwsNmO8ptBCGVYhB0A==", - "requires": { - "tslib": "^2.1.0" - } - }, - "@firebase/messaging": { - "version": "0.12.9", - "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.9.tgz", - "integrity": "sha512-IH+JJmzbFGZXV3+TDyKdqqKPVfKRqBBg2BfYYOy7cm7J+SwV+uJMe8EnDKYeQLEQhtpwciPfJ3qQXJs2lbxDTw==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/installations": "0.6.7", - "@firebase/messaging-interop-types": "0.2.2", - "@firebase/util": "1.9.6", - "idb": "7.1.1", - "tslib": "^2.1.0" - } - }, - "@firebase/messaging-compat": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.9.tgz", - "integrity": "sha512-5jN6wyhwPgBH02zOtmmoOeyfsmoD7ty48D1m0vVPsFg55RqN2Z3Q9gkZ5GmPklFPjTPLcxB1ObcHOZvThTkm7g==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/messaging": "0.12.9", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/messaging-interop-types": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.2.tgz", - "integrity": "sha512-l68HXbuD2PPzDUOFb3aG+nZj5KA3INcPwlocwLZOzPp9rFM9yeuI9YLl6DQfguTX5eAGxO0doTR+rDLDvQb5tA==" - }, - "@firebase/performance": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.7.tgz", - "integrity": "sha512-d+Q4ltjdJZqjzcdms5i0UC9KLYX7vKGcygZ+7zHA/Xk+bAbMD2CPU0nWTnlNFWifZWIcXZ/2mAMvaGMW3lypUA==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/installations": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/performance-compat": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.7.tgz", - "integrity": "sha512-cb8ge/5iTstxfIGW+iiY+7l3FtN8gobNh9JSQNZgLC9xmcfBYWEs8IeEWMI6S8T+At0oHc3lv+b2kpRMUWr8zQ==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/performance": "0.6.7", - "@firebase/performance-types": "0.2.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/performance-types": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.2.tgz", - "integrity": "sha512-gVq0/lAClVH5STrIdKnHnCo2UcPLjJlDUoEB/tB4KM+hAeHUxWKnpT0nemUPvxZ5nbdY/pybeyMe8Cs29gEcHA==" - }, - "@firebase/remote-config": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.7.tgz", - "integrity": "sha512-5oPNrPFLsbsjpq0lUEIXoDF2eJK7vAbyXe/DEuZQxnwJlfR7aQbtUlEkRgQWcicXpyDmAmDLo7q7lDbCYa6CpA==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/installations": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/remote-config-compat": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.7.tgz", - "integrity": "sha512-Fq0oneQ4SluLnfr5/HfzRS1TZf1ANj1rWbCCW3+oC98An3nE+sCdp+FSuHsEVNwgMg4Tkwx9Oom2lkKeU+Vn+w==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/remote-config": "0.4.7", - "@firebase/remote-config-types": "0.3.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/remote-config-types": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.2.tgz", - "integrity": "sha512-0BC4+Ud7y2aPTyhXJTMTFfrGGLqdYXrUB9sJVAB8NiqJswDTc4/2qrE/yfUbnQJhbSi6ZaTTBKyG3n1nplssaA==" - }, - "@firebase/storage": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.12.5.tgz", - "integrity": "sha512-nGWBOGFNr10j0LA4NJ3/Yh3us/lb0Q1xSIKZ38N6FcS+vY54nqJ7k3zE3PENregHC8+8txRow++A568G3v8hOA==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0", - "undici": "5.28.4" - } - }, - "@firebase/storage-compat": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.8.tgz", - "integrity": "sha512-qDfY9kMb6Ch2hZb40sBjDQ8YPxbjGOxuT+gU1Z0iIVSSpSX0f4YpGJCypUXiA0T11n6InCXB+T/Dknh2yxVTkg==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/storage": "0.12.5", - "@firebase/storage-types": "0.8.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/storage-types": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.2.tgz", - "integrity": "sha512-0vWu99rdey0g53lA7IShoA2Lol1jfnPovzLDUBuon65K7uKG9G+L5uO05brD9pMw+l4HRFw23ah3GwTGpEav6g==", - "requires": {} - }, - "@firebase/util": { - "version": "1.9.6", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.6.tgz", - "integrity": "sha512-IBr1MZbp4d5MjBCXL3TW1dK/PDXX4yOGbiwRNh1oAbE/+ci5Uuvy9KIrsFYY80as1I0iOaD5oOMA9Q8j4TJWcw==", - "requires": { - "tslib": "^2.1.0" - } - }, - "@firebase/vertexai-preview": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@firebase/vertexai-preview/-/vertexai-preview-0.0.2.tgz", - "integrity": "sha512-NOOL63kFQRq45ioi5P+hlqj/4LNmvn1URhGjQdvyV54c1Irvoq26aW861PRRLjrSMIeNeiLtCLD5pe+ediepAg==", - "requires": { - "@firebase/app-check-interop-types": "0.3.2", - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/webchannel-wrapper": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.0.tgz", - "integrity": "sha512-zuWxyfXNbsKbm96HhXzainONPFqRcoZblQ++e9cAIGUuHfl2cFSBzW01jtesqWG/lqaUyX3H8O1y9oWboGNQBA==" - }, - "@google-cloud/firestore": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-7.7.0.tgz", - "integrity": "sha512-41/vBFXOeSYjFI/2mJuJrDwg2umGk+FDrI/SCGzBRUe+UZWDN4GoahIbGZ19YQsY0ANNl6DRiAy4wD6JezK02g==", - "optional": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "functional-red-black-tree": "^1.0.1", - "google-gax": "^4.3.3", - "protobufjs": "^7.2.6" - } - }, - "@google-cloud/paginator": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", - "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", - "optional": true, - "requires": { - "arrify": "^2.0.0", - "extend": "^3.0.2" - } - }, - "@google-cloud/projectify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", - "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", - "optional": true - }, - "@google-cloud/promisify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", - "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", - "optional": true - }, - "@google-cloud/storage": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.11.1.tgz", - "integrity": "sha512-tibLSvgw7nDohMyIelt26kBpJ59YGWA2Rzep++DFNzEzKaSuCSp56Se9iM13ZlM3j5nLzR21IBkpRN58CmvCIw==", - "optional": true, - "requires": { - "@google-cloud/paginator": "^5.0.0", - "@google-cloud/projectify": "^4.0.0", - "@google-cloud/promisify": "^4.0.0", - "abort-controller": "^3.0.0", - "async-retry": "^1.3.3", - "duplexify": "^4.1.3", - "fast-xml-parser": "^4.3.0", - "gaxios": "^6.0.2", - "google-auth-library": "^9.6.3", - "html-entities": "^2.5.2", - "mime": "^3.0.0", - "p-limit": "^3.0.1", - "retry-request": "^7.0.0", - "teeny-request": "^9.0.0", - "uuid": "^8.0.0" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "optional": true - } - } - }, - "@grpc/grpc-js": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.8.tgz", - "integrity": "sha512-vYVqYzHicDqyKB+NQhAc54I1QWCBLCrYG6unqOIcBTHx+7x8C9lcoLj3KVJXs2VB4lUbpWY+Kk9NipcbXYWmvg==", - "optional": true, - "requires": { - "@grpc/proto-loader": "^0.7.13", - "@js-sdsl/ordered-map": "^4.4.2" - } - }, - "@grpc/proto-loader": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", - "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", - "requires": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.2.5", - "yargs": "^17.7.2" - } - }, - "@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - } - }, - "@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 - }, - "@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "peer": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "peer": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "peer": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "peer": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "peer": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "peer": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "peer": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "peer": true - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "peer": true - }, - "@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "peer": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "peer": true, - "requires": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - } - }, - "@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "peer": true, - "requires": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - } - }, - "@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "peer": true, - "requires": { - "jest-get-type": "^29.6.3" - } - }, - "@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - } - }, - "@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "peer": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - } - }, - "@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "peer": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - } - }, - "@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "peer": true, - "requires": { - "@sinclair/typebox": "^0.27.8" - } - }, - "@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - } - }, - "@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "peer": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "peer": true, - "requires": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - } - }, - "@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - } - }, - "@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "peer": true, - "requires": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "peer": true - }, - "@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "peer": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "peer": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@js-sdsl/ordered-map": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", - "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", - "optional": true - }, - "@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, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@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 - }, - "@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, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@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==" - }, - "@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, - "peer": true - }, - "@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "peer": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "peer": true, - "requires": { - "@sinonjs/commons": "^3.0.0" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "optional": true - }, - "@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "peer": true, - "requires": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "peer": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.20.7" - } - }, - "@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==", - "optional": true - }, - "@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "requires": { - "@types/node": "*" - } - }, - "@types/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", - "requires": { - "@types/node": "*" - } - }, - "@types/express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.3.tgz", - "integrity": "sha512-I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz", - "integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==", - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*" - } - }, - "@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "peer": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jsonwebtoken": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.6.tgz", - "integrity": "sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==", - "requires": { - "@types/node": "*" - } - }, - "@types/lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==", - "dev": true - }, - "@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", - "optional": true - }, - "@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" - }, - "@types/node": { - "version": "20.14.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.0.tgz", - "integrity": "sha512-5cHBxFGJx6L4s56Bubp4fglrEpmyJypsqI6RgzMfBHWUJQGWAAi8cWcgetEbZXHYXo9C2Fa4EEds/uSyS4cxmA==", - "requires": { - "undici-types": "~5.26.4" - } - }, - "@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" - }, - "@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" - }, - "@types/request": { - "version": "2.48.12", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", - "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", - "optional": true, - "requires": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "requires": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, - "@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "peer": true - }, - "@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "optional": true - }, - "@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "peer": true - }, - "@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "optional": true, - "requires": { - "event-target-shim": "^5.0.0" - } - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true - }, - "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, - "requires": {} - }, - "agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "optional": true, - "requires": { - "debug": "^4.3.4" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "peer": true, - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "peer": true - } - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "peer": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "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 - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "optional": true - }, - "async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", - "optional": true, - "requires": { - "retry": "0.13.1" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", - "requires": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - }, - "dependencies": { - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } - } - }, - "babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "peer": true, - "requires": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "dependencies": { - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - } - } - }, - "babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "peer": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "peer": true, - "requires": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "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 - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bignumber.js": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", - "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", - "optional": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "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, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "peer": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "dev": true, - "peer": true, - "requires": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "peer": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "peer": true - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, - "call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "peer": true - }, - "caniuse-lite": { - "version": "1.0.30001627", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001627.tgz", - "integrity": "sha512-4zgNiB8nTyV/tHhwZrFs88ryjls/lHiqFhrxCW4qSTeuRByBVnPYpDInchOIySWknznucaf31Z4KYqjfbrecVw==", - "dev": true, - "peer": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "peer": true - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "peer": true - }, - "cjs-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", - "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", - "dev": true, - "peer": true - }, - "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==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "peer": true - }, - "collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true, - "peer": true - }, - "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==", - "requires": { - "color-name": "~1.1.4" - } - }, - "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==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" - }, - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "peer": true - }, - "cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - } - }, - "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, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "requires": { - "ms": "2.1.2" - } - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "requires": { - "mimic-response": "^3.1.0" - } - }, - "dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "peer": true, - "requires": {} - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "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 - }, - "deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "peer": true - }, - "define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==" - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "peer": true - }, - "diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "peer": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "duplexify": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", - "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", - "optional": true, - "requires": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.2" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "electron-to-chromium": { - "version": "1.4.788", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.788.tgz", - "integrity": "sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==", - "dev": true, - "peer": true - }, - "emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "peer": true - }, - "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==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "requires": { - "get-intrinsic": "^1.2.4" - } - }, - "es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" - }, - "escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "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==", - "dev": true - }, - "eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "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" - } - }, - "eslint-config-google": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", - "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", - "dev": true, - "requires": {} - }, - "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, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "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 - }, - "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, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "peer": true - }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "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, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "optional": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "peer": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "peer": true - }, - "expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" - }, - "expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "peer": true, - "requires": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - } - }, - "express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.6.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "optional": true - }, - "farmhash": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/farmhash/-/farmhash-3.3.1.tgz", - "integrity": "sha512-XUizHanzlr/v7suBr/o85HSakOoWh6HKXZjFYl5C2+Gj0f0rkw+XTUZzrd9odDsgI9G5tRUcF4wSbKaX04T0DQ==", - "requires": { - "node-addon-api": "^5.1.0", - "prebuild-install": "^7.1.2" - } - }, - "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==", - "devOptional": true - }, - "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 - }, - "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 - }, - "fast-xml-parser": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", - "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", - "optional": true, - "requires": { - "strnum": "^1.0.5" - } - }, - "fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "peer": true, - "requires": { - "bser": "2.1.1" - } - }, - "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, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "peer": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "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, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "firebase": { - "version": "10.12.2", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.12.2.tgz", - "integrity": "sha512-ZxEdtSvP1I9su1yf32D8TIdgxtPgxwr6z3jYAR1TXS/t+fVfpoPc/N1/N2bxOco9mNjUoc+od34v5Fn4GeKs6Q==", - "requires": { - "@firebase/analytics": "0.10.4", - "@firebase/analytics-compat": "0.2.10", - "@firebase/app": "0.10.5", - "@firebase/app-check": "0.8.4", - "@firebase/app-check-compat": "0.3.11", - "@firebase/app-compat": "0.2.35", - "@firebase/app-types": "0.9.2", - "@firebase/auth": "1.7.4", - "@firebase/auth-compat": "0.5.9", - "@firebase/database": "1.0.5", - "@firebase/database-compat": "1.0.5", - "@firebase/firestore": "4.6.3", - "@firebase/firestore-compat": "0.3.32", - "@firebase/functions": "0.11.5", - "@firebase/functions-compat": "0.3.11", - "@firebase/installations": "0.6.7", - "@firebase/installations-compat": "0.2.7", - "@firebase/messaging": "0.12.9", - "@firebase/messaging-compat": "0.2.9", - "@firebase/performance": "0.6.7", - "@firebase/performance-compat": "0.2.7", - "@firebase/remote-config": "0.4.7", - "@firebase/remote-config-compat": "0.2.7", - "@firebase/storage": "0.12.5", - "@firebase/storage-compat": "0.3.8", - "@firebase/util": "1.9.6", - "@firebase/vertexai-preview": "0.0.2" - } - }, - "firebase-admin": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-12.1.1.tgz", - "integrity": "sha512-Nuoxk//gaYrspS7TvwBINdGvFhh2QeiaWpRW6+PJ+tWyn2/CugBc7jKa1NaBg0AvhGSOXFOCIsXhzCzHA47Rew==", - "requires": { - "@fastify/busboy": "^2.1.0", - "@firebase/database-compat": "^1.0.2", - "@firebase/database-types": "^1.0.0", - "@google-cloud/firestore": "^7.7.0", - "@google-cloud/storage": "^7.7.0", - "@types/node": "^20.10.3", - "farmhash": "^3.3.1", - "jsonwebtoken": "^9.0.0", - "jwks-rsa": "^3.1.0", - "long": "^5.2.3", - "node-forge": "^1.3.1", - "uuid": "^9.0.0" - } - }, - "firebase-functions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-5.0.1.tgz", - "integrity": "sha512-1m+crtgAR8Tl36gjpM02KCY5zduAejFmDSXvih/DB93apg39f0U/WwRgT7sitGIRqyCcIpktNUbXJv7Y9JOF4A==", - "requires": { - "@types/cors": "^2.8.5", - "@types/express": "4.17.3", - "cors": "^2.8.5", - "express": "^4.17.1", - "protobufjs": "^7.2.2" - } - }, - "firebase-functions-test": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-3.2.0.tgz", - "integrity": "sha512-UkOPIJH4I4qUGGSr4vaBcbAqn+YblVtMqRI2KQMW2nhMw5So91Iw1klu5Epk8vhEOhn1LPG5/tMaBI1MAtOt6Q==", - "dev": true, - "requires": { - "@types/lodash": "^4.14.104", - "lodash": "^4.17.5", - "ts-deepmerge": "^2.0.1" - } - }, - "flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "requires": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" - }, - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "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 - }, - "fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "optional": true, - "peer": true - }, - "function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "optional": true - }, - "gaxios": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.6.0.tgz", - "integrity": "sha512-bpOZVQV5gthH/jVCSuYuokRo2bTKOcuBiVWpjmTn6C5Agl5zclGfTljuGsQZxwwDBkli+YhZhP4TdlqTnhOezQ==", - "optional": true, - "requires": { - "extend": "^3.0.2", - "https-proxy-agent": "^7.0.1", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9", - "uuid": "^9.0.1" - } - }, - "gcp-metadata": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", - "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", - "optional": true, - "requires": { - "gaxios": "^6.0.0", - "json-bigint": "^1.0.0" - } - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "peer": true - }, - "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==" - }, - "get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "requires": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "peer": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "peer": true - }, - "github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "google-auth-library": { - "version": "9.10.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.10.0.tgz", - "integrity": "sha512-ol+oSa5NbcGdDqA+gZ3G3mev59OHBZksBTxY/tYwjtcp1H/scAFwJfSQU9/1RALoyZ7FslNbke8j4i3ipwlyuQ==", - "optional": true, - "requires": { - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "gaxios": "^6.1.1", - "gcp-metadata": "^6.1.0", - "gtoken": "^7.0.0", - "jws": "^4.0.0" - } - }, - "google-gax": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.3.5.tgz", - "integrity": "sha512-zXRSGgHp33ottCQMdYlKEFX/MhWkzKVX5P3Vpmx+DW6rtseLILzp3V0YV5Rh4oQzzkM0BH9+nJIyX01EUgmd3g==", - "optional": true, - "requires": { - "@grpc/grpc-js": "~1.10.3", - "@grpc/proto-loader": "^0.7.0", - "@types/long": "^4.0.0", - "abort-controller": "^3.0.0", - "duplexify": "^4.0.0", - "google-auth-library": "^9.3.0", - "node-fetch": "^2.6.1", - "object-hash": "^3.0.0", - "proto3-json-serializer": "^2.0.0", - "protobufjs": "7.3.0", - "retry-request": "^7.0.0", - "uuid": "^9.0.1" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "peer": true - }, - "graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "gtoken": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", - "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", - "optional": true, - "requires": { - "gaxios": "^6.0.0", - "jws": "^4.0.0" - } - }, - "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 - }, - "has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "requires": { - "es-define-property": "^1.0.0" - } - }, - "has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "requires": { - "function-bind": "^1.1.2" - } - }, - "html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", - "optional": true - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "peer": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "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==" - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "optional": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "optional": true, - "requires": { - "debug": "4" - } - } - } - }, - "https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", - "optional": true, - "requires": { - "agent-base": "^7.0.2", - "debug": "4" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "peer": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "idb": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "peer": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "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, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "peer": true - }, - "is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "peer": true, - "requires": { - "hasown": "^2.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "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==" - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "peer": true - }, - "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, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "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, - "peer": true - }, - "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 - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "devOptional": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "peer": true - }, - "istanbul-lib-instrument": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", - "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "dependencies": { - "semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "peer": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "peer": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "peer": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "peer": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "peer": true, - "requires": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - } - }, - "jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "peer": true, - "requires": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - } - }, - "jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "peer": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "peer": true, - "requires": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - } - }, - "jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - } - }, - "jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - } - }, - "jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "peer": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - } - }, - "jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "peer": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - } - }, - "jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "peer": true - }, - "jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - } - }, - "jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "peer": true, - "requires": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - } - }, - "jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - } - }, - "jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - } - }, - "jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "peer": true, - "requires": {} - }, - "jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "peer": true - }, - "jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "peer": true, - "requires": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - } - }, - "jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "peer": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - } - }, - "jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "peer": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - } - }, - "jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "dependencies": { - "semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "peer": true - } - } - }, - "jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "peer": true - } - } - }, - "jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "peer": true, - "requires": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - } - }, - "jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jose": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.5.tgz", - "integrity": "sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "peer": true - }, - "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, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "peer": true - }, - "json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "optional": true, - "requires": { - "bignumber.js": "^9.0.0" - } - }, - "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 - }, - "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==", - "dev": true, - "peer": true - }, - "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 - }, - "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 - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "peer": true - }, - "jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", - "requires": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "dependencies": { - "jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==" - } - } - }, - "jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "optional": true, - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jwks-rsa": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.1.0.tgz", - "integrity": "sha512-v7nqlfezb9YfHHzYII3ef2a2j1XnGeSE/bK3WfumaYCqONAIstJbrEGapz4kadScZzEt7zYCN7bucj8C0Mv/Rg==", - "requires": { - "@types/express": "^4.17.17", - "@types/jsonwebtoken": "^9.0.2", - "debug": "^4.3.4", - "jose": "^4.14.6", - "limiter": "^1.1.5", - "lru-memoizer": "^2.2.0" - }, - "dependencies": { - "@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - } - } - }, - "jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "optional": true, - "requires": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "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, - "requires": { - "json-buffer": "3.0.1" - } - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "peer": true - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "peer": true - }, - "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, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" - }, - "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==", - "dev": true, - "peer": true - }, - "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, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "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==" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, - "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 - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" - }, - "long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "peer": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "lru-memoizer": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.3.0.tgz", - "integrity": "sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==", - "requires": { - "lodash.clonedeep": "^4.5.0", - "lru-cache": "6.0.0" - }, - "dependencies": { - "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==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "peer": true, - "requires": { - "semver": "^7.5.3" - }, - "dependencies": { - "semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "peer": true - } - } - }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "peer": true, - "requires": { - "tmpl": "1.0.5" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "peer": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - }, - "micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, - "peer": true, - "requires": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "optional": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "peer": true - }, - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "node-abi": { - "version": "3.63.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.63.0.tgz", - "integrity": "sha512-vAszCsOUrUxjGAmdnM/pq7gUgie0IRteCQMX6d4A534fQCR93EJU5qgzBvU6EkFfK27s0T3HEV3BOyJIr7OMYw==", - "requires": { - "semver": "^7.3.5" - }, - "dependencies": { - "semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==" - } - } - }, - "node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" - }, - "node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "optional": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "peer": true - }, - "node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true, - "peer": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "peer": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "peer": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "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==" - }, - "object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "optional": true - }, - "object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "peer": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "devOptional": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "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, - "requires": { - "p-limit": "^3.0.2" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "@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" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "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 - }, - "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 - }, - "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 - }, - "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==", - "dev": true, - "peer": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true, - "peer": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "peer": true - }, - "pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "peer": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "peer": true, - "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "peer": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "peer": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "peer": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "peer": true, - "requires": { - "p-limit": "^2.2.0" - } - } - } - }, - "prebuild-install": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", - "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", - "requires": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - } - }, - "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 - }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "peer": true, - "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true - } - } - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "peer": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "proto3-json-serializer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz", - "integrity": "sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==", - "optional": true, - "requires": { - "protobufjs": "^7.2.5" - } - }, - "protobufjs": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", - "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", - "requires": { - "@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" - } - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true - }, - "pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, - "peer": true - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "requires": { - "side-channel": "^1.0.4" - } - }, - "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 - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" - } - } - }, - "react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "peer": true - }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "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==" - }, - "resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "peer": true, - "requires": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "peer": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "peer": true - } - } - }, - "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==", - "dev": true - }, - "resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "peer": true - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "optional": true - }, - "retry-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", - "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", - "optional": true, - "requires": { - "@types/request": "^2.48.8", - "extend": "^3.0.2", - "teeny-request": "^9.0.0" - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "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, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "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==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "peer": true - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - } - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "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, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "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 - }, - "side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "peer": true - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - }, - "simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "requires": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "peer": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "peer": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true - }, - "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "peer": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "peer": true - }, - "stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "peer": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "peer": true - } - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - }, - "stream-events": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", - "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", - "optional": true, - "requires": { - "stubs": "^3.0.0" - } - }, - "stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "optional": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "peer": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "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==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "peer": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "peer": true - }, - "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 - }, - "strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "optional": true - }, - "stubs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", - "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", - "optional": true - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - }, - "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==", - "dev": true, - "peer": true - }, - "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - }, - "teeny-request": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", - "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", - "optional": true, - "requires": { - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.9", - "stream-events": "^1.0.5", - "uuid": "^9.0.0" - }, - "dependencies": { - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "optional": true, - "requires": { - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "optional": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "peer": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "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 - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true - }, - "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, - "peer": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "optional": true - }, - "ts-deepmerge": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/ts-deepmerge/-/ts-deepmerge-2.0.7.tgz", - "integrity": "sha512-3phiGcxPSSR47RBubQxPoZ+pqXsEsozLo4G4AlSrsMKTFg9TA3l+3he5BqpUi9wiuDbaHWXH/amlzQ49uEdXtg==", - "dev": true - }, - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "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, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "peer": true - }, - "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 - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", - "dev": true - }, - "undici": { - "version": "5.28.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", - "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", - "requires": { - "@fastify/busboy": "^2.0.0" - } - }, - "undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - }, - "update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", - "dev": true, - "peer": true, - "requires": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - }, - "uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" - }, - "v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - }, - "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "peer": true, - "requires": { - "makeerror": "1.0.12" - } - }, - "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==", - "optional": true - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "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==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "optional": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true - }, - "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==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "peer": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "peer": true - }, - "yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "requires": { - "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" - } - }, - "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==" - }, - "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==", - "devOptional": true - } - } -} diff --git a/server/functions/package.json b/server/functions/package.json deleted file mode 100644 index 0967e42b..00000000 --- a/server/functions/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "functions", - "description": "Cloud Functions for Firebase", - "scripts": { - "lint": "eslint .", - "serve": "firebase emulators:start --only functions", - "shell": "firebase functions:shell", - "start": "npm run shell", - "deploy": "firebase deploy --only functions", - "logs": "firebase functions:log" - }, - "engines": { - "node": "20" - }, - "main": "lib/index.js", - "dependencies": { - "axios": "^1.7.2", - "firebase": "^10.12.2", - "firebase-admin": "^12.1.0", - "firebase-functions": "^5.0.0" - }, - "devDependencies": { - "eslint": "^8.15.0", - "eslint-config-google": "^0.14.0", - "firebase-functions-test": "^3.1.0", - "typescript": "^5.4.5" - }, - "private": true -} diff --git a/server/functions/src/admin.ts b/server/functions/src/admin.ts deleted file mode 100644 index 3363b36a..00000000 --- a/server/functions/src/admin.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* eslint-disable curly */ -/* eslint-disable object-curly-spacing */ -/* eslint-disable prefer-arrow-callback */ -/* eslint-disable space-before-function-paren */ -/* eslint-disable indent */ -/* eslint-disable block-spacing */ -/* eslint-disable brace-style */ -/* eslint-disable no-var */ -/* eslint-disable no-invalid-this */ -/* eslint-disable valid-jsdoc */ -/* eslint-disable camelcase */ -/* eslint-disable require-jsdoc */ -/* eslint-disable max-len */ - -// import { debug } from "firebase-functions/logger"; -import admin from "firebase-admin"; - -const adminAuth = admin.auth(); - - -// Note on Typescript Enums: https://www.crocoder.dev/blog/typescript-enums-good-bad-and-ugly/ -// https://dev.to/ivanzm123/dont-use-enums-in-typescript-they-are-very-dangerous-57bh -// and https://graphqleditor.com/blog/enums-are-still-bad/ -const Roles = [ - "guest", - "buyer", - "seller", - "admin" - ] as const; - -type RoleType = (typeof Roles)[number]; - -// // Or we could have it as an object if we don't need the order -// const Roles = { -// Admin: "admin", -// Seller: "seller", -// Buyer: "buyer" -// } as const; - -// // Convert object key in a type -// type RoleType = typeof Roles[keyof typeof Roles] - -function hasAccess(role: RoleType, access: RoleType): boolean { - return Roles.indexOf(role) >= Roles.indexOf(access); -} - -// TODO use this to add/change User Roles and Permissions - -export {adminAuth, hasAccess}; \ No newline at end of file diff --git a/server/functions/src/auth.ts b/server/functions/src/auth.ts deleted file mode 100644 index 9c485db1..00000000 --- a/server/functions/src/auth.ts +++ /dev/null @@ -1,189 +0,0 @@ -/* eslint-disable curly */ -/* eslint-disable object-curly-spacing */ -/* eslint-disable prefer-arrow-callback */ -/* eslint-disable space-before-function-paren */ -/* eslint-disable indent */ -/* eslint-disable block-spacing */ -/* eslint-disable brace-style */ -/* eslint-disable no-var */ -/* eslint-disable no-invalid-this */ -/* eslint-disable valid-jsdoc */ -/* eslint-disable camelcase */ -/* eslint-disable require-jsdoc */ -/* eslint-disable max-len */ - -import { debug } from "firebase-functions/logger"; -import { auth as functionAuth } from "firebase-functions"; -import { UserRecord } from "firebase-admin/auth"; -import { AuthUserRecord, AuthEventContext } from "firebase-functions/lib/common/providers/identity"; -import { connectAuthEmulator, sendEmailVerification, signInWithCustomToken } from "firebase/auth"; -import { adminAuth } from "./admin"; -import { config, auth } from "./init"; - -const addUser = functionAuth.user().onCreate(async (user, context) => { - // This is used to provide admin role to the first user that gets created - debug("added user: ", user); - if (user.customClaims?.status == "creating") { // this is using client side to send the verification mail - adminAuth.setCustomUserClaims(user.uid, { status: "created" }); - } else if (!config.useCustomeVerificationEmail && user && user.email && !user.emailVerified) { - // this is client side module and can create issues with server side quota limits - await sendVerificationEmail(user, context); - } -}); -async function checkUserExistsSendVerification(user: AuthUserRecord, context: AuthEventContext): Promise { - var email: String = user.email!; - if (!email.endsWith(".verify")) return null; - try { - const userRecord = await adminAuth.getUserByEmail(email.substring(0, email.length - 7)); - debug("existing user: ", user); - // we could save the last email sent time in another DB to stop multiple sends - await sendVerificationEmail(userRecord, context); - return userRecord; - } catch (e) { - return null; - } -} -const beforeUserCreated = functionAuth.user().beforeCreate(async (user, context): Promise => { - if (!(user && user.email)) { - throw new functionAuth.HttpsError( - "invalid-argument", `Email is required`); - } - // if same email exists then it does not reach here - const rec = await checkUserExistsSendVerification(user, context); - if (rec != null) { - throw new functionAuth.HttpsError("already-exists", `Verification Email Sent`); - } else { - // Only users of a specific domain can sign up. - // if(!user.email.includes("@acme.com")) { - // throw new functionAuth.HttpsError("invalid-argument", "Unauthorized email"); - // } - if (config.adminEmail && config.adminEmail == user.email) { - return { - displayName: "Admin", - customClaims: { "role": "admin" }, - emailVerified: true, // admin is auto verified - }; - } else if (!config.adminEmail) { - // ake the first user admin if admin email is not specified in config - const listUsersResult = await adminAuth.listUsers(2); - if (listUsersResult.users.length == 0) { - return { - displayName: "Admin", - customClaims: { "role": "admin" }, - emailVerified: true, // admin is auto verified - }; - } - } - if (!user.emailVerified && config.useCustomeVerificationEmail) { - await sendVerificationEmail(user, context); - } else if (!user.emailVerified) { - // This could be useful if SignUp flow has other pages to take post email registeration details - return { - customClaims: { status: "creating" }, // set "creating" if you want to use client side for sending the verification mail instead of server side on SignUp. - // sessionClaims: {status: "creating"}, // this does not propogate and thus using customClaims - }; - } - } -}); -const beforeSignIn = functionAuth.user().beforeSignIn((user, _context) => { - debug(_context); - // custom token by passes this method - if (user.disabled) { - throw new functionAuth.HttpsError( - "permission-denied", `"${user.email}" has been disabled by admin.`); - } - if (user.email && !user.emailVerified) { - if (!(user.customClaims?.status == "creating")) { - throw new functionAuth.HttpsError( - "unauthenticated", `"${user.email}" needs to be verified before access is granted.`); - } else { - return { - customClaims: { status: "registering" }, - }; - } - } - return {}; -}); - -// TODO: use the below to verify auth token before any CRUD requests in a middleware -const verifyIdToken = function (idToken: string) { - adminAuth.verifyIdToken(idToken).then((decodedToken) => { - if (decodedToken.email_verified) { - // Email verified. Grant access. - } else { - // Email not verified. Ask user to verify email in error response - } - }); -}; -/** - * Used to send email from server side - * @param {*} user - * @param {*} context - */ - -async function sendVerificationEmail(user: any, context: any) { - if (!config.useCustomeVerificationEmail) { - // If using Emulator don't forget to add this - const emulator = process.env.FUNCTIONS_EMULATOR === "true"; - const customToken = await adminAuth.createCustomToken(user.uid, user.customClaims); - // debug(customToken); - if (config.useClientSDK) { - // This is a hack to use client side email sending function at server side, suggested in stackOverflow - try { - if (emulator) { - connectAuthEmulator(auth, "http://localhost:9099"); - } - } catch (error) { - /* this might happen if already connected */ - } - signInWithCustomToken(auth, customToken).then( - async (credential) => { - const firebaseUser = credential.user; - await sendEmailVerification(firebaseUser); - auth.signOut().then(() => { - // Sign-out successful. - console.log("signed out success"); - }, () => { - }); - }); - } else { - // better and cleaner approach, however it cannot be tested in Emulator - // TODO test the below in live Firebase - try { - const axios = require("axios"); - const url = emulator ? "http://localhost:9099/emulator" : "https://identitytoolkit.googleapis.com"; - await axios.post(`${url}/v1/accounts:sendOobCode?key=[${config.appId}]`, - { requestType: "VERIFY_EMAIL", idToken: customToken } - ); // Not working. TODO fix the issue - } catch (error) { - debug(error); - } - } - } else { - // Send custom email verification on sign-up. - const link = await adminAuth.generateEmailVerificationLink(user.email!); // you can provide actionCodeSettings also - await sendCustomVerificationEmail(user.email, link, context?.locale); - // we can throw error such that user does not get created till verification. - // However, we need the user details like pwd and thus the user has to be created - } -} -/** - * This function is used to send mails - * This will require a Firebase extension or a node module like nodemailer - * @param {*} _email - * @param {*} _link - * @param {*} _locale - */ -// eslint-disable-next-line no-unused-vars - -async function sendCustomVerificationEmail(_email?: string, _link?: string, _locale?: string) { - // TODO use nodemailer etc. This will not use Firebase templates - // We could also see https://canopas.com/how-to-send-emails-using-cloud-functions-firestore-firebase-send-email-ff4702a16fef -} - -export { - addUser, - beforeSignIn, - beforeUserCreated, - verifyIdToken -} diff --git a/server/functions/src/index.ts b/server/functions/src/index.ts deleted file mode 100644 index 3109b420..00000000 --- a/server/functions/src/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* eslint-disable curly */ -/* eslint-disable object-curly-spacing */ -/* eslint-disable prefer-arrow-callback */ -/* eslint-disable space-before-function-paren */ -/* eslint-disable indent */ -/* eslint-disable block-spacing */ -/* eslint-disable brace-style */ -/* eslint-disable no-var */ -/* eslint-disable no-invalid-this */ -/* eslint-disable valid-jsdoc */ -/* eslint-disable camelcase */ -/* eslint-disable require-jsdoc */ -/* eslint-disable max-len */ -/* eslint-disable spaced-comment */ -/* eslint-disable eol-last */ -/** - * Import function triggers from their respective submodules: - * - * const {onCall} = require("firebase-functions/v2/https"); - * const {onDocumentWritten} = require("firebase-functions/v2/firestore"); - * - * See a full list of supported triggers at https://firebase.google.com/docs/functions - */ - -// const {onRequest} = require("firebase-functions/v2/https"); - -// Create and deploy functions -// See: https://firebase.google.com/docs/functions/get-started - -import * as _ from "./auth"; - -export default _; - diff --git a/server/functions/src/init.ts b/server/functions/src/init.ts deleted file mode 100644 index 5b34d910..00000000 --- a/server/functions/src/init.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* eslint-disable curly */ -/* eslint-disable object-curly-spacing */ -/* eslint-disable prefer-arrow-callback */ -/* eslint-disable space-before-function-paren */ -/* eslint-disable indent */ -/* eslint-disable block-spacing */ -/* eslint-disable brace-style */ -/* eslint-disable no-var */ -/* eslint-disable no-invalid-this */ -/* eslint-disable valid-jsdoc */ -/* eslint-disable camelcase */ -/* eslint-disable require-jsdoc */ -/* eslint-disable max-len */ - -import admin from "firebase-admin"; - -import fs from "fs"; -export const config = JSON.parse(fs.readFileSync("firebase_options.json", "utf8")); -const firebaseApp = admin.initializeApp(config); - -exports.firebaseApp = firebaseApp; -import {getAuth} from "firebase/auth"; -import { initializeApp } from "firebase/app"; -const tempApp = initializeApp(config, "client"); -export const auth = getAuth(tempApp); - - - diff --git a/server/functions/tsconfig.json b/server/functions/tsconfig.json deleted file mode 100644 index 9a32a38d..00000000 --- a/server/functions/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs", - "noImplicitReturns": true, - "noUnusedLocals": true, - "outDir": "lib", - "sourceMap": true, - "strict": true, - "esModuleInterop": true, - "target": "es2017" - }, - "compileOnSave": true, - "include": [ - "src" - ] -} diff --git a/server/genkit/.eslintrc.js b/server/genkit/.eslintrc.js deleted file mode 100644 index 0f8e2a9b..00000000 --- a/server/genkit/.eslintrc.js +++ /dev/null @@ -1,33 +0,0 @@ -module.exports = { - root: true, - env: { - es6: true, - node: true, - }, - extends: [ - "eslint:recommended", - "plugin:import/errors", - "plugin:import/warnings", - "plugin:import/typescript", - "google", - "plugin:@typescript-eslint/recommended", - ], - parser: "@typescript-eslint/parser", - parserOptions: { - project: ["tsconfig.json", "tsconfig.dev.json"], - sourceType: "module", - }, - ignorePatterns: [ - "/lib/**/*", // Ignore built files. - "/generated/**/*", // Ignore generated files. - ], - plugins: [ - "@typescript-eslint", - "import", - ], - rules: { - "quotes": ["error", "double"], - "import/no-unresolved": 0, - "indent": ["error", 2], - }, -}; diff --git a/server/genkit/.gitignore b/server/genkit/.gitignore deleted file mode 100644 index 9be0f014..00000000 --- a/server/genkit/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -# Compiled JavaScript files -lib/**/*.js -lib/**/*.js.map - -# TypeScript v1 declaration files -typings/ - -# Node.js dependency directory -node_modules/ -*.local \ No newline at end of file diff --git a/server/genkit/package-lock.json b/server/genkit/package-lock.json deleted file mode 100644 index 0639e365..00000000 --- a/server/genkit/package-lock.json +++ /dev/null @@ -1,14490 +0,0 @@ -{ - "name": "functions", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "functions", - "dependencies": { - "firebase-admin": "^12.1.0", - "firebase-functions": "^5.0.0" - }, - "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.12.0", - "@typescript-eslint/parser": "^5.12.0", - "eslint": "^8.9.0", - "eslint-config-google": "^0.14.0", - "eslint-plugin-import": "^2.25.4", - "firebase-functions-test": "^3.1.0", - "typescript": "^4.9.0" - }, - "engines": { - "node": "18" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz", - "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/highlight": "^7.24.6", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.6.tgz", - "integrity": "sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.6.tgz", - "integrity": "sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==", - "dev": true, - "peer": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.6", - "@babel/generator": "^7.24.6", - "@babel/helper-compilation-targets": "^7.24.6", - "@babel/helper-module-transforms": "^7.24.6", - "@babel/helpers": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/template": "^7.24.6", - "@babel/traverse": "^7.24.6", - "@babel/types": "^7.24.6", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.6.tgz", - "integrity": "sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.6", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz", - "integrity": "sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.24.6", - "@babel/helper-validator-option": "^7.24.6", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz", - "integrity": "sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz", - "integrity": "sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.24.6", - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz", - "integrity": "sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz", - "integrity": "sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz", - "integrity": "sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-module-imports": "^7.24.6", - "@babel/helper-simple-access": "^7.24.6", - "@babel/helper-split-export-declaration": "^7.24.6", - "@babel/helper-validator-identifier": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz", - "integrity": "sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz", - "integrity": "sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz", - "integrity": "sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz", - "integrity": "sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", - "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz", - "integrity": "sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.6.tgz", - "integrity": "sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.24.6", - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz", - "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.6", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.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==", - "dev": true, - "peer": true, - "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==", - "dev": true, - "peer": true, - "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==", - "dev": true, - "peer": true, - "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==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true, - "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==", - "dev": true, - "peer": true, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz", - "integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==", - "dev": true, - "peer": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.6.tgz", - "integrity": "sha512-lWfvAIFNWMlCsU0DRUun2GpFwZdGTukLaHJqRh1JRb80NdAP5Sb1HDHB5X9P9OtgZHQl089UzQkpYlBq2VTPRw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.6.tgz", - "integrity": "sha512-TzCtxGgVTEJWWwcYwQhCIQ6WaKlo80/B+Onsk4RRCcYqpYGFcG9etPW94VToGte5AAcxRrhjPUFvUS3Y2qKi4A==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.6.tgz", - "integrity": "sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.6.tgz", - "integrity": "sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.24.6", - "@babel/generator": "^7.24.6", - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-function-name": "^7.24.6", - "@babel/helper-hoist-variables": "^7.24.6", - "@babel/helper-split-export-declaration": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/types": "^7.24.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.6.tgz", - "integrity": "sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-string-parser": "^7.24.6", - "@babel/helper-validator-identifier": "^7.24.6", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "peer": true - }, - "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.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "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.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "engines": { - "node": ">=14" - } - }, - "node_modules/@firebase/app-check-interop-types": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.2.tgz", - "integrity": "sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ==" - }, - "node_modules/@firebase/app-types": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.2.tgz", - "integrity": "sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ==" - }, - "node_modules/@firebase/auth-interop-types": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.3.tgz", - "integrity": "sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ==" - }, - "node_modules/@firebase/component": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.7.tgz", - "integrity": "sha512-baH1AA5zxfaz4O8w0vDwETByrKTQqB5CDjRls79Sa4eAGAoERw4Tnung7XbMl3jbJ4B/dmmtsMrdki0KikwDYA==", - "dependencies": { - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/database": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.5.tgz", - "integrity": "sha512-cAfwBqMQuW6HbhwI3Cb/gDqZg7aR0OmaJ85WUxlnoYW2Tm4eR0hFl5FEijI3/gYPUiUcUPQvTkGV222VkT7KPw==", - "dependencies": { - "@firebase/app-check-interop-types": "0.3.2", - "@firebase/auth-interop-types": "0.2.3", - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "faye-websocket": "0.11.4", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/database-compat": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.5.tgz", - "integrity": "sha512-NDSMaDjQ+TZEMDMmzJwlTL05kh1+0Y84C+kVMaOmNOzRGRM7VHi29I6YUhCetXH+/b1Wh4ZZRyp1CuWkd8s6hg==", - "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/database": "1.0.5", - "@firebase/database-types": "1.0.3", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/database-types": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.3.tgz", - "integrity": "sha512-39V/Riv2R3O/aUjYKh0xypj7NTNXNAK1bcgY5Kx+hdQPRS/aPTS8/5c0CGFYKgVuFbYlnlnhrCTYsh2uNhGwzA==", - "dependencies": { - "@firebase/app-types": "0.9.2", - "@firebase/util": "1.9.6" - } - }, - "node_modules/@firebase/logger": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.2.tgz", - "integrity": "sha512-Q1VuA5M1Gjqrwom6I6NUU4lQXdo9IAQieXlujeHZWvRt1b7qQ0KwBaNAjgxG27jgF9/mUwsNmO8ptBCGVYhB0A==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/util": { - "version": "1.9.6", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.6.tgz", - "integrity": "sha512-IBr1MZbp4d5MjBCXL3TW1dK/PDXX4yOGbiwRNh1oAbE/+ci5Uuvy9KIrsFYY80as1I0iOaD5oOMA9Q8j4TJWcw==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@google-cloud/firestore": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-7.7.0.tgz", - "integrity": "sha512-41/vBFXOeSYjFI/2mJuJrDwg2umGk+FDrI/SCGzBRUe+UZWDN4GoahIbGZ19YQsY0ANNl6DRiAy4wD6JezK02g==", - "optional": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "functional-red-black-tree": "^1.0.1", - "google-gax": "^4.3.3", - "protobufjs": "^7.2.6" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@google-cloud/paginator": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", - "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", - "optional": true, - "dependencies": { - "arrify": "^2.0.0", - "extend": "^3.0.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@google-cloud/projectify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", - "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", - "optional": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@google-cloud/promisify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", - "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@google-cloud/storage": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.11.1.tgz", - "integrity": "sha512-tibLSvgw7nDohMyIelt26kBpJ59YGWA2Rzep++DFNzEzKaSuCSp56Se9iM13ZlM3j5nLzR21IBkpRN58CmvCIw==", - "optional": true, - "dependencies": { - "@google-cloud/paginator": "^5.0.0", - "@google-cloud/projectify": "^4.0.0", - "@google-cloud/promisify": "^4.0.0", - "abort-controller": "^3.0.0", - "async-retry": "^1.3.3", - "duplexify": "^4.1.3", - "fast-xml-parser": "^4.3.0", - "gaxios": "^6.0.2", - "google-auth-library": "^9.6.3", - "html-entities": "^2.5.2", - "mime": "^3.0.0", - "p-limit": "^3.0.1", - "retry-request": "^7.0.0", - "teeny-request": "^9.0.0", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@google-cloud/storage/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "optional": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@grpc/grpc-js": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.8.tgz", - "integrity": "sha512-vYVqYzHicDqyKB+NQhAc54I1QWCBLCrYG6unqOIcBTHx+7x8C9lcoLj3KVJXs2VB4lUbpWY+Kk9NipcbXYWmvg==", - "optional": true, - "dependencies": { - "@grpc/proto-loader": "^0.7.13", - "@js-sdsl/ordered-map": "^4.4.2" - }, - "engines": { - "node": ">=12.10.0" - } - }, - "node_modules/@grpc/proto-loader": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", - "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", - "optional": true, - "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.2.5", - "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.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.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": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "peer": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "peer": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "peer": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "peer": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "peer": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "peer": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "peer": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "peer": true, - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "peer": true, - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "peer": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "peer": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "peer": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@js-sdsl/ordered-map": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", - "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "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/@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/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, - "peer": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "peer": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "peer": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "optional": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==", - "optional": true - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.3.tgz", - "integrity": "sha512-I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg==", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz", - "integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "peer": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@types/jsonwebtoken": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.6.tgz", - "integrity": "sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==", - "dev": true - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", - "optional": true - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" - }, - "node_modules/@types/node": { - "version": "20.14.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.0.tgz", - "integrity": "sha512-5cHBxFGJx6L4s56Bubp4fglrEpmyJypsqI6RgzMfBHWUJQGWAAi8cWcgetEbZXHYXo9C2Fa4EEds/uSyS4cxmA==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" - }, - "node_modules/@types/request": { - "version": "2.48.12", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", - "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", - "optional": true, - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "peer": true - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "optional": true - }, - "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "peer": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "optional": true, - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "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/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "optional": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "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-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "peer": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "devOptional": true, - "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==", - "devOptional": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "peer": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-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/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", - "optional": true, - "dependencies": { - "retry": "0.13.1" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "optional": true - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "peer": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "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/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "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/bignumber.js": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", - "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "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.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true, - "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "peer": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "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": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "peer": true - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001627", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001627.tgz", - "integrity": "sha512-4zgNiB8nTyV/tHhwZrFs88ryjls/lHiqFhrxCW4qSTeuRByBVnPYpDInchOIySWknznucaf31Z4KYqjfbrecVw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true - }, - "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/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", - "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", - "dev": true, - "peer": true - }, - "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==", - "devOptional": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "peer": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true, - "peer": true - }, - "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==", - "devOptional": true, - "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==", - "devOptional": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "optional": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "peer": true - }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "peer": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "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/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "optional": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "peer": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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/duplexify": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", - "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", - "optional": true, - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.2" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.788", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.788.tgz", - "integrity": "sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==", - "dev": true, - "peer": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "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==", - "devOptional": true - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "peer": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "devOptional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "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==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "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-config-google": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", - "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", - "dev": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "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/eslint/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/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/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/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "peer": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "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/esquery/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/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/esrecurse/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/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "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/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "peer": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.6.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "optional": true - }, - "node_modules/farmhash": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/farmhash/-/farmhash-3.3.1.tgz", - "integrity": "sha512-XUizHanzlr/v7suBr/o85HSakOoWh6HKXZjFYl5C2+Gj0f0rkw+XTUZzrd9odDsgI9G5tRUcF4wSbKaX04T0DQ==", - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^5.1.0", - "prebuild-install": "^7.1.2" - }, - "engines": { - "node": ">=10" - } - }, - "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==", - "devOptional": true - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "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/fast-xml-parser": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", - "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "optional": true, - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "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/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "peer": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "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.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "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-admin": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-12.1.1.tgz", - "integrity": "sha512-Nuoxk//gaYrspS7TvwBINdGvFhh2QeiaWpRW6+PJ+tWyn2/CugBc7jKa1NaBg0AvhGSOXFOCIsXhzCzHA47Rew==", - "dependencies": { - "@fastify/busboy": "^2.1.0", - "@firebase/database-compat": "^1.0.2", - "@firebase/database-types": "^1.0.0", - "@types/node": "^20.10.3", - "farmhash": "^3.3.1", - "jsonwebtoken": "^9.0.0", - "jwks-rsa": "^3.1.0", - "long": "^5.2.3", - "node-forge": "^1.3.1", - "uuid": "^9.0.0" - }, - "engines": { - "node": ">=14" - }, - "optionalDependencies": { - "@google-cloud/firestore": "^7.7.0", - "@google-cloud/storage": "^7.7.0" - } - }, - "node_modules/firebase-functions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-5.0.1.tgz", - "integrity": "sha512-1m+crtgAR8Tl36gjpM02KCY5zduAejFmDSXvih/DB93apg39f0U/WwRgT7sitGIRqyCcIpktNUbXJv7Y9JOF4A==", - "dependencies": { - "@types/cors": "^2.8.5", - "@types/express": "4.17.3", - "cors": "^2.8.5", - "express": "^4.17.1", - "protobufjs": "^7.2.2" - }, - "bin": { - "firebase-functions": "lib/bin/firebase-functions.js" - }, - "engines": { - "node": ">=14.10.0" - }, - "peerDependencies": { - "firebase-admin": "^11.10.0 || ^12.0.0" - } - }, - "node_modules/firebase-functions-test": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-3.2.0.tgz", - "integrity": "sha512-UkOPIJH4I4qUGGSr4vaBcbAqn+YblVtMqRI2KQMW2nhMw5So91Iw1klu5Epk8vhEOhn1LPG5/tMaBI1MAtOt6Q==", - "dev": true, - "dependencies": { - "@types/lodash": "^4.14.104", - "lodash": "^4.17.5", - "ts-deepmerge": "^2.0.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "firebase-admin": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0", - "firebase-functions": ">=4.9.0", - "jest": ">=28.0.0" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "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" - ], - "peer": true, - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "optional": true - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gaxios": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.6.0.tgz", - "integrity": "sha512-bpOZVQV5gthH/jVCSuYuokRo2bTKOcuBiVWpjmTn6C5Agl5zclGfTljuGsQZxwwDBkli+YhZhP4TdlqTnhOezQ==", - "optional": true, - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^7.0.1", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/gcp-metadata": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", - "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", - "optional": true, - "dependencies": { - "gaxios": "^6.0.0", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "devOptional": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "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.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/google-auth-library": { - "version": "9.10.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.10.0.tgz", - "integrity": "sha512-ol+oSa5NbcGdDqA+gZ3G3mev59OHBZksBTxY/tYwjtcp1H/scAFwJfSQU9/1RALoyZ7FslNbke8j4i3ipwlyuQ==", - "optional": true, - "dependencies": { - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "gaxios": "^6.1.1", - "gcp-metadata": "^6.1.0", - "gtoken": "^7.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/google-gax": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.3.5.tgz", - "integrity": "sha512-zXRSGgHp33ottCQMdYlKEFX/MhWkzKVX5P3Vpmx+DW6rtseLILzp3V0YV5Rh4oQzzkM0BH9+nJIyX01EUgmd3g==", - "optional": true, - "dependencies": { - "@grpc/grpc-js": "~1.10.3", - "@grpc/proto-loader": "^0.7.0", - "@types/long": "^4.0.0", - "abort-controller": "^3.0.0", - "duplexify": "^4.0.0", - "google-auth-library": "^9.3.0", - "node-fetch": "^2.6.1", - "object-hash": "^3.0.0", - "proto3-json-serializer": "^2.0.0", - "protobufjs": "7.3.0", - "retry-request": "^7.0.0", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "peer": true - }, - "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/gtoken": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", - "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", - "optional": true, - "dependencies": { - "gaxios": "^6.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "optional": true - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "peer": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "optional": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-agent/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "optional": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", - "optional": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "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/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "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==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "peer": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "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==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "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==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "peer": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dev": true, - "dependencies": { - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "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==", - "devOptional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "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-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "devOptional": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "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/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", - "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "peer": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "peer": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "peer": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "peer": true, - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "peer": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "peer": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "peer": true, - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "peer": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "peer": true, - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jose": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.5.tgz", - "integrity": "sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, - "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==", - "dev": true, - "peer": true - }, - "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/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "optional": true, - "dependencies": { - "bignumber.js": "^9.0.0" - } - }, - "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==", - "dev": true, - "peer": true - }, - "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/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "peer": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/jsonwebtoken/node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jsonwebtoken/node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "optional": true, - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jwks-rsa": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.1.0.tgz", - "integrity": "sha512-v7nqlfezb9YfHHzYII3ef2a2j1XnGeSE/bK3WfumaYCqONAIstJbrEGapz4kadScZzEt7zYCN7bucj8C0Mv/Rg==", - "dependencies": { - "@types/express": "^4.17.17", - "@types/jsonwebtoken": "^9.0.2", - "debug": "^4.3.4", - "jose": "^4.14.6", - "limiter": "^1.1.5", - "lru-memoizer": "^2.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/jwks-rsa/node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "optional": true, - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "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/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "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/limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" - }, - "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==", - "dev": true, - "peer": true - }, - "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": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "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==", - "optional": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, - "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/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" - }, - "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/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "peer": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/lru-memoizer": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.3.0.tgz", - "integrity": "sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==", - "dependencies": { - "lodash.clonedeep": "^4.5.0", - "lru-cache": "6.0.0" - } - }, - "node_modules/lru-memoizer/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==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lru-memoizer/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "peer": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "peer": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "peer": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "optional": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "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==" - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "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/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-abi": { - "version": "3.63.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.63.0.tgz", - "integrity": "sha512-vAszCsOUrUxjGAmdnM/pq7gUgie0IRteCQMX6d4A534fQCR93EJU5qgzBvU6EkFfK27s0T3HEV3BOyJIr7OMYw==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "optional": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "peer": true - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true, - "peer": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "peer": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "optional": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "peer": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "devOptional": 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/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "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==", - "dev": true, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true, - "peer": 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/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "peer": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "peer": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "peer": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "peer": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "peer": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/prebuild-install": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", - "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "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/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "peer": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/proto3-json-serializer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz", - "integrity": "sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==", - "optional": true, - "dependencies": { - "protobufjs": "^7.2.5" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/protobufjs": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", - "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", - "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/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "peer": true - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "peer": true - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "devOptional": true, - "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==", - "dev": true, - "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-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "peer": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "optional": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/retry-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", - "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", - "optional": true, - "dependencies": { - "@types/request": "^2.48.8", - "extend": "^3.0.2", - "teeny-request": "^9.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "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==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "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-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "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/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "peer": true - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "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/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "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": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "peer": true - }, - "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.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "peer": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "peer": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stream-events": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", - "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", - "optional": true, - "dependencies": { - "stubs": "^3.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "optional": true - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "peer": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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==", - "devOptional": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "devOptional": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "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/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "optional": true - }, - "node_modules/stubs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", - "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", - "optional": true - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "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==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/teeny-request": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", - "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", - "optional": true, - "dependencies": { - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.9", - "stream-events": "^1.0.5", - "uuid": "^9.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/teeny-request/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "optional": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/teeny-request/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "optional": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "peer": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "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/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "peer": 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==", - "dev": true, - "peer": true, - "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/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "optional": true - }, - "node_modules/ts-deepmerge": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/ts-deepmerge/-/ts-deepmerge-2.0.7.tgz", - "integrity": "sha512-3phiGcxPSSR47RBubQxPoZ+pqXsEsozLo4G4AlSrsMKTFg9TA3l+3he5BqpUi9wiuDbaHWXH/amlzQ49uEdXtg==", - "dev": true - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "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-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "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/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true, - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "peer": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "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==", - "optional": true - }, - "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==", - "optional": true, - "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/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "devOptional": true, - "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==" - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "peer": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "devOptional": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "peer": true - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "devOptional": true, - "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==", - "devOptional": true, - "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==", - "devOptional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@babel/code-frame": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz", - "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==", - "dev": true, - "peer": true, - "requires": { - "@babel/highlight": "^7.24.6", - "picocolors": "^1.0.0" - } - }, - "@babel/compat-data": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.6.tgz", - "integrity": "sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==", - "dev": true, - "peer": true - }, - "@babel/core": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.6.tgz", - "integrity": "sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==", - "dev": true, - "peer": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.6", - "@babel/generator": "^7.24.6", - "@babel/helper-compilation-targets": "^7.24.6", - "@babel/helper-module-transforms": "^7.24.6", - "@babel/helpers": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/template": "^7.24.6", - "@babel/traverse": "^7.24.6", - "@babel/types": "^7.24.6", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "peer": true - } - } - }, - "@babel/generator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.6.tgz", - "integrity": "sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.24.6", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz", - "integrity": "sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==", - "dev": true, - "peer": true, - "requires": { - "@babel/compat-data": "^7.24.6", - "@babel/helper-validator-option": "^7.24.6", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "peer": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz", - "integrity": "sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==", - "dev": true, - "peer": true - }, - "@babel/helper-function-name": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz", - "integrity": "sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==", - "dev": true, - "peer": true, - "requires": { - "@babel/template": "^7.24.6", - "@babel/types": "^7.24.6" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz", - "integrity": "sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.24.6" - } - }, - "@babel/helper-module-imports": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz", - "integrity": "sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.24.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz", - "integrity": "sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-module-imports": "^7.24.6", - "@babel/helper-simple-access": "^7.24.6", - "@babel/helper-split-export-declaration": "^7.24.6", - "@babel/helper-validator-identifier": "^7.24.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz", - "integrity": "sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==", - "dev": true, - "peer": true - }, - "@babel/helper-simple-access": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz", - "integrity": "sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.24.6" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz", - "integrity": "sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.24.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz", - "integrity": "sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==", - "dev": true, - "peer": true - }, - "@babel/helper-validator-identifier": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", - "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", - "dev": true, - "peer": true - }, - "@babel/helper-validator-option": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz", - "integrity": "sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==", - "dev": true, - "peer": true - }, - "@babel/helpers": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.6.tgz", - "integrity": "sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==", - "dev": true, - "peer": true, - "requires": { - "@babel/template": "^7.24.6", - "@babel/types": "^7.24.6" - } - }, - "@babel/highlight": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz", - "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-validator-identifier": "^7.24.6", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "dependencies": { - "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==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz", - "integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==", - "dev": true, - "peer": true - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.6.tgz", - "integrity": "sha512-lWfvAIFNWMlCsU0DRUun2GpFwZdGTukLaHJqRh1JRb80NdAP5Sb1HDHB5X9P9OtgZHQl089UzQkpYlBq2VTPRw==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.24.6" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.6.tgz", - "integrity": "sha512-TzCtxGgVTEJWWwcYwQhCIQ6WaKlo80/B+Onsk4RRCcYqpYGFcG9etPW94VToGte5AAcxRrhjPUFvUS3Y2qKi4A==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.24.6" - } - }, - "@babel/template": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.6.tgz", - "integrity": "sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==", - "dev": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/types": "^7.24.6" - } - }, - "@babel/traverse": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.6.tgz", - "integrity": "sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==", - "dev": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.24.6", - "@babel/generator": "^7.24.6", - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-function-name": "^7.24.6", - "@babel/helper-hoist-variables": "^7.24.6", - "@babel/helper-split-export-declaration": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/types": "^7.24.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "peer": true - } - } - }, - "@babel/types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.6.tgz", - "integrity": "sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-string-parser": "^7.24.6", - "@babel/helper-validator-identifier": "^7.24.6", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "peer": true - }, - "@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, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "requires": { - "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" - } - }, - "@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true - }, - "@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==" - }, - "@firebase/app-check-interop-types": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.2.tgz", - "integrity": "sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ==" - }, - "@firebase/app-types": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.2.tgz", - "integrity": "sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ==" - }, - "@firebase/auth-interop-types": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.3.tgz", - "integrity": "sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ==" - }, - "@firebase/component": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.7.tgz", - "integrity": "sha512-baH1AA5zxfaz4O8w0vDwETByrKTQqB5CDjRls79Sa4eAGAoERw4Tnung7XbMl3jbJ4B/dmmtsMrdki0KikwDYA==", - "requires": { - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/database": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.5.tgz", - "integrity": "sha512-cAfwBqMQuW6HbhwI3Cb/gDqZg7aR0OmaJ85WUxlnoYW2Tm4eR0hFl5FEijI3/gYPUiUcUPQvTkGV222VkT7KPw==", - "requires": { - "@firebase/app-check-interop-types": "0.3.2", - "@firebase/auth-interop-types": "0.2.3", - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "faye-websocket": "0.11.4", - "tslib": "^2.1.0" - } - }, - "@firebase/database-compat": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.5.tgz", - "integrity": "sha512-NDSMaDjQ+TZEMDMmzJwlTL05kh1+0Y84C+kVMaOmNOzRGRM7VHi29I6YUhCetXH+/b1Wh4ZZRyp1CuWkd8s6hg==", - "requires": { - "@firebase/component": "0.6.7", - "@firebase/database": "1.0.5", - "@firebase/database-types": "1.0.3", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" - } - }, - "@firebase/database-types": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.3.tgz", - "integrity": "sha512-39V/Riv2R3O/aUjYKh0xypj7NTNXNAK1bcgY5Kx+hdQPRS/aPTS8/5c0CGFYKgVuFbYlnlnhrCTYsh2uNhGwzA==", - "requires": { - "@firebase/app-types": "0.9.2", - "@firebase/util": "1.9.6" - } - }, - "@firebase/logger": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.2.tgz", - "integrity": "sha512-Q1VuA5M1Gjqrwom6I6NUU4lQXdo9IAQieXlujeHZWvRt1b7qQ0KwBaNAjgxG27jgF9/mUwsNmO8ptBCGVYhB0A==", - "requires": { - "tslib": "^2.1.0" - } - }, - "@firebase/util": { - "version": "1.9.6", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.6.tgz", - "integrity": "sha512-IBr1MZbp4d5MjBCXL3TW1dK/PDXX4yOGbiwRNh1oAbE/+ci5Uuvy9KIrsFYY80as1I0iOaD5oOMA9Q8j4TJWcw==", - "requires": { - "tslib": "^2.1.0" - } - }, - "@google-cloud/firestore": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-7.7.0.tgz", - "integrity": "sha512-41/vBFXOeSYjFI/2mJuJrDwg2umGk+FDrI/SCGzBRUe+UZWDN4GoahIbGZ19YQsY0ANNl6DRiAy4wD6JezK02g==", - "optional": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "functional-red-black-tree": "^1.0.1", - "google-gax": "^4.3.3", - "protobufjs": "^7.2.6" - } - }, - "@google-cloud/paginator": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", - "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", - "optional": true, - "requires": { - "arrify": "^2.0.0", - "extend": "^3.0.2" - } - }, - "@google-cloud/projectify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", - "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", - "optional": true - }, - "@google-cloud/promisify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", - "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", - "optional": true - }, - "@google-cloud/storage": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.11.1.tgz", - "integrity": "sha512-tibLSvgw7nDohMyIelt26kBpJ59YGWA2Rzep++DFNzEzKaSuCSp56Se9iM13ZlM3j5nLzR21IBkpRN58CmvCIw==", - "optional": true, - "requires": { - "@google-cloud/paginator": "^5.0.0", - "@google-cloud/projectify": "^4.0.0", - "@google-cloud/promisify": "^4.0.0", - "abort-controller": "^3.0.0", - "async-retry": "^1.3.3", - "duplexify": "^4.1.3", - "fast-xml-parser": "^4.3.0", - "gaxios": "^6.0.2", - "google-auth-library": "^9.6.3", - "html-entities": "^2.5.2", - "mime": "^3.0.0", - "p-limit": "^3.0.1", - "retry-request": "^7.0.0", - "teeny-request": "^9.0.0", - "uuid": "^8.0.0" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "optional": true - } - } - }, - "@grpc/grpc-js": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.8.tgz", - "integrity": "sha512-vYVqYzHicDqyKB+NQhAc54I1QWCBLCrYG6unqOIcBTHx+7x8C9lcoLj3KVJXs2VB4lUbpWY+Kk9NipcbXYWmvg==", - "optional": true, - "requires": { - "@grpc/proto-loader": "^0.7.13", - "@js-sdsl/ordered-map": "^4.4.2" - } - }, - "@grpc/proto-loader": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", - "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", - "optional": true, - "requires": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.2.5", - "yargs": "^17.7.2" - } - }, - "@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - } - }, - "@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 - }, - "@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "peer": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "peer": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "peer": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "peer": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "peer": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "peer": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "peer": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "peer": true - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "peer": true - }, - "@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "peer": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "peer": true, - "requires": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - } - }, - "@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "peer": true, - "requires": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - } - }, - "@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "peer": true, - "requires": { - "jest-get-type": "^29.6.3" - } - }, - "@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - } - }, - "@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "peer": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - } - }, - "@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "peer": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - } - }, - "@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "peer": true, - "requires": { - "@sinclair/typebox": "^0.27.8" - } - }, - "@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - } - }, - "@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "peer": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "peer": true, - "requires": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - } - }, - "@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - } - }, - "@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "peer": true, - "requires": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "peer": true - }, - "@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "peer": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "peer": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@js-sdsl/ordered-map": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", - "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", - "optional": true - }, - "@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, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@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 - }, - "@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, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@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==" - }, - "@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, - "peer": true - }, - "@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "peer": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "peer": true, - "requires": { - "@sinonjs/commons": "^3.0.0" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "optional": true - }, - "@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "peer": true, - "requires": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "peer": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.20.7" - } - }, - "@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==", - "optional": true - }, - "@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "requires": { - "@types/node": "*" - } - }, - "@types/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", - "requires": { - "@types/node": "*" - } - }, - "@types/express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.3.tgz", - "integrity": "sha512-I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz", - "integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==", - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*" - } - }, - "@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "peer": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "@types/jsonwebtoken": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.6.tgz", - "integrity": "sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==", - "requires": { - "@types/node": "*" - } - }, - "@types/lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==", - "dev": true - }, - "@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", - "optional": true - }, - "@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" - }, - "@types/node": { - "version": "20.14.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.0.tgz", - "integrity": "sha512-5cHBxFGJx6L4s56Bubp4fglrEpmyJypsqI6RgzMfBHWUJQGWAAi8cWcgetEbZXHYXo9C2Fa4EEds/uSyS4cxmA==", - "requires": { - "undici-types": "~5.26.4" - } - }, - "@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" - }, - "@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" - }, - "@types/request": { - "version": "2.48.12", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", - "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", - "optional": true, - "requires": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, - "@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "requires": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, - "@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "peer": true - }, - "@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "optional": true - }, - "@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "peer": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", - "dev": true, - "requires": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - } - }, - "@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "optional": true, - "requires": { - "event-target-shim": "^5.0.0" - } - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true - }, - "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, - "requires": {} - }, - "agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "optional": true, - "requires": { - "debug": "^4.3.4" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "peer": true, - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "peer": true - } - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "devOptional": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "peer": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "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 - }, - "array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "requires": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - } - }, - "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 - }, - "array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - } - }, - "array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - } - }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "optional": true - }, - "async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", - "optional": true, - "requires": { - "retry": "0.13.1" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "optional": true - }, - "available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "requires": { - "possible-typed-array-names": "^1.0.0" - } - }, - "babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "peer": true, - "requires": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "dependencies": { - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "peer": true - } - } - }, - "babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "peer": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "peer": true, - "requires": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "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 - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bignumber.js": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", - "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", - "optional": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "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, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "dev": true, - "peer": true, - "requires": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "peer": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "peer": true - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, - "call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "peer": true - }, - "caniuse-lite": { - "version": "1.0.30001627", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001627.tgz", - "integrity": "sha512-4zgNiB8nTyV/tHhwZrFs88ryjls/lHiqFhrxCW4qSTeuRByBVnPYpDInchOIySWknznucaf31Z4KYqjfbrecVw==", - "dev": true, - "peer": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "peer": true - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "peer": true - }, - "cjs-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", - "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", - "dev": true, - "peer": true - }, - "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==", - "devOptional": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "peer": true - }, - "collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true, - "peer": true - }, - "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==", - "devOptional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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==", - "devOptional": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "optional": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" - }, - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "peer": true - }, - "cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - } - }, - "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, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, - "requires": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, - "data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, - "data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, - "requires": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, - "debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "requires": { - "ms": "2.1.2" - } - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "requires": { - "mimic-response": "^3.1.0" - } - }, - "dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "peer": true, - "requires": {} - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "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 - }, - "deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "peer": true - }, - "define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - } - }, - "define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "requires": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "optional": true - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==" - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "peer": true - }, - "diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "peer": true - }, - "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, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "duplexify": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", - "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", - "optional": true, - "requires": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.2" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "electron-to-chromium": { - "version": "1.4.788", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.788.tgz", - "integrity": "sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==", - "dev": true, - "peer": true - }, - "emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "peer": true - }, - "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==", - "devOptional": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - } - }, - "es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "requires": { - "get-intrinsic": "^1.2.4" - } - }, - "es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" - }, - "es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, - "requires": { - "es-errors": "^1.3.0" - } - }, - "es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - } - }, - "es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "requires": { - "hasown": "^2.0.0" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "devOptional": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "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==", - "dev": true - }, - "eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "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" - }, - "dependencies": { - "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, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "eslint-config-google": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", - "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", - "dev": true, - "requires": {} - }, - "eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", - "dev": true, - "requires": { - "debug": "^3.2.7" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", - "dev": true, - "requires": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "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 - }, - "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, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "peer": true - }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "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, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "optional": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "peer": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "peer": true - }, - "expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" - }, - "expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "peer": true, - "requires": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - } - }, - "express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.6.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "optional": true - }, - "farmhash": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/farmhash/-/farmhash-3.3.1.tgz", - "integrity": "sha512-XUizHanzlr/v7suBr/o85HSakOoWh6HKXZjFYl5C2+Gj0f0rkw+XTUZzrd9odDsgI9G5tRUcF4wSbKaX04T0DQ==", - "requires": { - "node-addon-api": "^5.1.0", - "prebuild-install": "^7.1.2" - } - }, - "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==", - "devOptional": true - }, - "fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "requires": { - "@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" - }, - "dependencies": { - "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, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "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 - }, - "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 - }, - "fast-xml-parser": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", - "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", - "optional": true, - "requires": { - "strnum": "^1.0.5" - } - }, - "fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "peer": true, - "requires": { - "bser": "2.1.1" - } - }, - "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, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "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, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "firebase-admin": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-12.1.1.tgz", - "integrity": "sha512-Nuoxk//gaYrspS7TvwBINdGvFhh2QeiaWpRW6+PJ+tWyn2/CugBc7jKa1NaBg0AvhGSOXFOCIsXhzCzHA47Rew==", - "requires": { - "@fastify/busboy": "^2.1.0", - "@firebase/database-compat": "^1.0.2", - "@firebase/database-types": "^1.0.0", - "@google-cloud/firestore": "^7.7.0", - "@google-cloud/storage": "^7.7.0", - "@types/node": "^20.10.3", - "farmhash": "^3.3.1", - "jsonwebtoken": "^9.0.0", - "jwks-rsa": "^3.1.0", - "long": "^5.2.3", - "node-forge": "^1.3.1", - "uuid": "^9.0.0" - } - }, - "firebase-functions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-5.0.1.tgz", - "integrity": "sha512-1m+crtgAR8Tl36gjpM02KCY5zduAejFmDSXvih/DB93apg39f0U/WwRgT7sitGIRqyCcIpktNUbXJv7Y9JOF4A==", - "requires": { - "@types/cors": "^2.8.5", - "@types/express": "4.17.3", - "cors": "^2.8.5", - "express": "^4.17.1", - "protobufjs": "^7.2.2" - } - }, - "firebase-functions-test": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-3.2.0.tgz", - "integrity": "sha512-UkOPIJH4I4qUGGSr4vaBcbAqn+YblVtMqRI2KQMW2nhMw5So91Iw1klu5Epk8vhEOhn1LPG5/tMaBI1MAtOt6Q==", - "dev": true, - "requires": { - "@types/lodash": "^4.14.104", - "lodash": "^4.17.5", - "ts-deepmerge": "^2.0.1" - } - }, - "flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "requires": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "requires": { - "is-callable": "^1.1.3" - } - }, - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "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 - }, - "fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "optional": true, - "peer": true - }, - "function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" - }, - "function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - } - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "optional": true - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, - "gaxios": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.6.0.tgz", - "integrity": "sha512-bpOZVQV5gthH/jVCSuYuokRo2bTKOcuBiVWpjmTn6C5Agl5zclGfTljuGsQZxwwDBkli+YhZhP4TdlqTnhOezQ==", - "optional": true, - "requires": { - "extend": "^3.0.2", - "https-proxy-agent": "^7.0.1", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9", - "uuid": "^9.0.1" - } - }, - "gcp-metadata": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", - "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", - "optional": true, - "requires": { - "gaxios": "^6.0.0", - "json-bigint": "^1.0.0" - } - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "peer": true - }, - "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==", - "devOptional": true - }, - "get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "requires": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "peer": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "peer": true - }, - "get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "requires": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - } - }, - "github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "requires": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "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" - } - }, - "google-auth-library": { - "version": "9.10.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.10.0.tgz", - "integrity": "sha512-ol+oSa5NbcGdDqA+gZ3G3mev59OHBZksBTxY/tYwjtcp1H/scAFwJfSQU9/1RALoyZ7FslNbke8j4i3ipwlyuQ==", - "optional": true, - "requires": { - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "gaxios": "^6.1.1", - "gcp-metadata": "^6.1.0", - "gtoken": "^7.0.0", - "jws": "^4.0.0" - } - }, - "google-gax": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.3.5.tgz", - "integrity": "sha512-zXRSGgHp33ottCQMdYlKEFX/MhWkzKVX5P3Vpmx+DW6rtseLILzp3V0YV5Rh4oQzzkM0BH9+nJIyX01EUgmd3g==", - "optional": true, - "requires": { - "@grpc/grpc-js": "~1.10.3", - "@grpc/proto-loader": "^0.7.0", - "@types/long": "^4.0.0", - "abort-controller": "^3.0.0", - "duplexify": "^4.0.0", - "google-auth-library": "^9.3.0", - "node-fetch": "^2.6.1", - "object-hash": "^3.0.0", - "proto3-json-serializer": "^2.0.0", - "protobufjs": "7.3.0", - "retry-request": "^7.0.0", - "uuid": "^9.0.1" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "peer": true - }, - "graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "gtoken": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", - "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", - "optional": true, - "requires": { - "gaxios": "^6.0.0", - "jws": "^4.0.0" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true - }, - "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 - }, - "has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "requires": { - "es-define-property": "^1.0.0" - } - }, - "has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.3" - } - }, - "hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "requires": { - "function-bind": "^1.1.2" - } - }, - "html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", - "optional": true - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "peer": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "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==" - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "optional": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "optional": true, - "requires": { - "debug": "4" - } - } - } - }, - "https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", - "optional": true, - "requires": { - "agent-base": "^7.0.2", - "debug": "4" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "peer": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "peer": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "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, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, - "requires": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - } - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "peer": true - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true - }, - "is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "requires": { - "hasown": "^2.0.0" - } - }, - "is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dev": true, - "requires": { - "is-typed-array": "^1.1.13" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "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==", - "devOptional": true - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "peer": true - }, - "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, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true - }, - "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 - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "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 - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dev": true, - "requires": { - "call-bind": "^1.0.7" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "devOptional": true - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "requires": { - "which-typed-array": "^1.1.14" - } - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "peer": true - }, - "istanbul-lib-instrument": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", - "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - } - }, - "istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "peer": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "peer": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "peer": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "peer": true, - "requires": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - } - }, - "jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "peer": true, - "requires": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - } - }, - "jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "peer": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "peer": true, - "requires": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - } - }, - "jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - } - }, - "jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - } - }, - "jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "peer": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - } - }, - "jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "peer": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - } - }, - "jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "peer": true - }, - "jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - } - }, - "jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "peer": true, - "requires": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - } - }, - "jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - } - }, - "jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - } - }, - "jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "peer": true, - "requires": {} - }, - "jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "peer": true - }, - "jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "peer": true, - "requires": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - } - }, - "jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "peer": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - } - }, - "jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "peer": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - } - }, - "jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - } - }, - "jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "peer": true - } - } - }, - "jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "peer": true, - "requires": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - } - }, - "jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jose": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.5.tgz", - "integrity": "sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "peer": true - }, - "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, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "peer": true - }, - "json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "optional": true, - "requires": { - "bignumber.js": "^9.0.0" - } - }, - "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 - }, - "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==", - "dev": true, - "peer": true - }, - "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 - }, - "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 - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "peer": true - }, - "jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", - "requires": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "dependencies": { - "jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - } - } - }, - "jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "optional": true, - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jwks-rsa": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.1.0.tgz", - "integrity": "sha512-v7nqlfezb9YfHHzYII3ef2a2j1XnGeSE/bK3WfumaYCqONAIstJbrEGapz4kadScZzEt7zYCN7bucj8C0Mv/Rg==", - "requires": { - "@types/express": "^4.17.17", - "@types/jsonwebtoken": "^9.0.2", - "debug": "^4.3.4", - "jose": "^4.14.6", - "limiter": "^1.1.5", - "lru-memoizer": "^2.2.0" - }, - "dependencies": { - "@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - } - } - }, - "jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "optional": true, - "requires": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "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, - "requires": { - "json-buffer": "3.0.1" - } - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "peer": true - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "peer": true - }, - "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, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" - }, - "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==", - "dev": true, - "peer": true - }, - "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, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "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==", - "optional": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, - "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 - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" - }, - "long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "peer": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "lru-memoizer": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.3.0.tgz", - "integrity": "sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==", - "requires": { - "lodash.clonedeep": "^4.5.0", - "lru-cache": "6.0.0" - }, - "dependencies": { - "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==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "peer": true, - "requires": { - "semver": "^7.5.3" - } - }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "peer": true, - "requires": { - "tmpl": "1.0.5" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "peer": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - }, - "micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, - "requires": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "optional": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "peer": true - }, - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "node-abi": { - "version": "3.63.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.63.0.tgz", - "integrity": "sha512-vAszCsOUrUxjGAmdnM/pq7gUgie0IRteCQMX6d4A534fQCR93EJU5qgzBvU6EkFfK27s0T3HEV3BOyJIr7OMYw==", - "requires": { - "semver": "^7.3.5" - } - }, - "node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" - }, - "node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "optional": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "peer": true - }, - "node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true, - "peer": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "peer": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "peer": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "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==" - }, - "object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "optional": true - }, - "object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - } - }, - "object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - } - }, - "object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "peer": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "devOptional": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "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, - "requires": { - "p-limit": "^3.0.2" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "@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" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "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 - }, - "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 - }, - "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 - }, - "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==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true, - "peer": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "peer": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "peer": true, - "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "peer": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "peer": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "peer": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "peer": true, - "requires": { - "p-limit": "^2.2.0" - } - } - } - }, - "possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true - }, - "prebuild-install": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", - "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", - "requires": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - } - }, - "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 - }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "peer": true, - "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true - } - } - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "peer": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "proto3-json-serializer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz", - "integrity": "sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==", - "optional": true, - "requires": { - "protobufjs": "^7.2.5" - } - }, - "protobufjs": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", - "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", - "requires": { - "@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" - } - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true - }, - "pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, - "peer": true - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "requires": { - "side-channel": "^1.0.4" - } - }, - "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 - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" - } - } - }, - "react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "peer": true - }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, - "requires": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - } - }, - "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==", - "devOptional": true - }, - "resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "requires": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "peer": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "peer": true - } - } - }, - "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==", - "dev": true - }, - "resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "peer": true - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "optional": true - }, - "retry-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", - "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", - "optional": true, - "requires": { - "@types/request": "^2.48.8", - "extend": "^3.0.2", - "teeny-request": "^9.0.0" - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "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, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - } - }, - "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==" - }, - "safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "requires": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==" - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - } - }, - "set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - } - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "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, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "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 - }, - "side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "peer": true - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - }, - "simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "requires": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "peer": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true - }, - "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "peer": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "peer": true - }, - "stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "peer": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "peer": true - } - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - }, - "stream-events": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", - "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", - "optional": true, - "requires": { - "stubs": "^3.0.0" - } - }, - "stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "optional": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "peer": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "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==", - "devOptional": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "devOptional": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "peer": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "peer": true - }, - "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 - }, - "strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "optional": true - }, - "stubs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", - "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", - "optional": true - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - }, - "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==", - "dev": true - }, - "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - }, - "teeny-request": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", - "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", - "optional": true, - "requires": { - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.9", - "stream-events": "^1.0.5", - "uuid": "^9.0.0" - }, - "dependencies": { - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "optional": true, - "requires": { - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "optional": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "peer": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "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 - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true - }, - "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, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "optional": true - }, - "ts-deepmerge": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/ts-deepmerge/-/ts-deepmerge-2.0.7.tgz", - "integrity": "sha512-3phiGcxPSSR47RBubQxPoZ+pqXsEsozLo4G4AlSrsMKTFg9TA3l+3he5BqpUi9wiuDbaHWXH/amlzQ49uEdXtg==", - "dev": true - }, - "tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true - } - } - }, - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "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, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "peer": true - }, - "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 - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - } - }, - "typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - } - }, - "typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - } - }, - "typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - } - }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - }, - "update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", - "dev": true, - "peer": true, - "requires": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - }, - "uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" - }, - "v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - }, - "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "peer": true, - "requires": { - "makeerror": "1.0.12" - } - }, - "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==", - "optional": true - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "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==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "optional": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - } - }, - "word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true - }, - "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==", - "devOptional": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "peer": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "devOptional": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "peer": true - }, - "yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "devOptional": true, - "requires": { - "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" - } - }, - "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==", - "devOptional": true - }, - "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==", - "devOptional": true - } - } -} diff --git a/server/genkit/package.json b/server/genkit/package.json deleted file mode 100644 index a95223d4..00000000 --- a/server/genkit/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "functions", - "scripts": { - "lint": "eslint --ext .js,.ts .", - "build": "tsc", - "build:watch": "tsc --watch", - "serve": "npm run build && firebase emulators:start --only functions", - "shell": "npm run build && firebase functions:shell", - "start": "npm run shell", - "deploy": "firebase deploy --only functions", - "logs": "firebase functions:log" - }, - "engines": { - "node": "20" - }, - "main": "lib/index.js", - "dependencies": { - "firebase-admin": "^12.1.0", - "firebase-functions": "^5.0.0" - }, - "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.12.0", - "@typescript-eslint/parser": "^5.12.0", - "eslint": "^8.9.0", - "eslint-config-google": "^0.14.0", - "eslint-plugin-import": "^2.25.4", - "firebase-functions-test": "^3.1.0", - "typescript": "^4.9.0" - }, - "private": true -} diff --git a/server/genkit/src/index.ts b/server/genkit/src/index.ts deleted file mode 100644 index 88cab58f..00000000 --- a/server/genkit/src/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Import function triggers from their respective submodules: - * - * import {onCall} from "firebase-functions/v2/https"; - * import {onDocumentWritten} from "firebase-functions/v2/firestore"; - * - * See a full list of supported triggers at https://firebase.google.com/docs/functions - */ - -import {onRequest} from "firebase-functions/v2/https"; -import * as logger from "firebase-functions/logger"; - -// Start writing functions -// https://firebase.google.com/docs/functions/typescript - -export const helloWorld = onRequest((request, response) => { - logger.info("Hello logs!", {structuredData: true}); - response.send("Hello from Firebase!"); -}); diff --git a/server/genkit/tsconfig.dev.json b/server/genkit/tsconfig.dev.json deleted file mode 100644 index 7560eed4..00000000 --- a/server/genkit/tsconfig.dev.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "include": [ - ".eslintrc.js" - ] -} diff --git a/server/genkit/tsconfig.json b/server/genkit/tsconfig.json deleted file mode 100644 index 7ce05d03..00000000 --- a/server/genkit/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs", - "noImplicitReturns": true, - "noUnusedLocals": true, - "outDir": "lib", - "sourceMap": true, - "strict": true, - "target": "es2017" - }, - "compileOnSave": true, - "include": [ - "src" - ] -} diff --git a/server/get-flutter-fire b/server/get-flutter-fire deleted file mode 100644 index 9e26dfee..00000000 --- a/server/get-flutter-fire +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/server/package-lock.json b/server/package-lock.json deleted file mode 100644 index c0990268..00000000 --- a/server/package-lock.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "get_flutter_fire_server", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "get_flutter_fire_server", - "version": "1.0.0", - "license": "ISC" - } - } -} diff --git a/server/package.json b/server/package.json deleted file mode 100644 index 7d544bdf..00000000 --- a/server/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "get_flutter_fire_server", - "version": "1.0.0", - "description": "firebase server code for get_flutter_fire", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 0", - "build": "echo \"add build logic\" && exit 0" - }, - "author": "Anshuman Das", - "license": "ISC" -} diff --git a/server/public/404.html b/server/public/404.html deleted file mode 100644 index 829eda8f..00000000 --- a/server/public/404.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - Page Not Found - - - - -
-

404

-

Page Not Found

-

The specified file was not found on this website. Please check the URL for mistakes and try again.

-

Why am I seeing this?

-

This page was generated by the Firebase Command-Line Interface. To modify it, edit the 404.html file in your project's configured public directory.

-
- - diff --git a/server/public/index.html b/server/public/index.html deleted file mode 100644 index 3bfb4239..00000000 --- a/server/public/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Welcome to Firebase Hosting - - - - - - - - - - - - - - - - - - - -
-

Firebase SDK Loading…

- - - - diff --git a/server/storage.rules b/server/storage.rules deleted file mode 100644 index 4aa0d5c1..00000000 --- a/server/storage.rules +++ /dev/null @@ -1,13 +0,0 @@ -rules_version = '2'; - -// Craft rules based on data in your Firestore database -// allow write: if firestore.get( -// /databases/(default)/documents/users/$(request.auth.uid)).data.isAdmin; -service firebase.storage { - match /b/{bucket}/o { - match /{allPaths=**} { - allow write: if request.auth.uid != null && request.auth.token.email_verified == true; - allow read: if true; - } - } -} \ No newline at end of file diff --git a/test/widget_test.dart b/test/widget_test.dart index e69de29b..2e5e50bf 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -0,0 +1,30 @@ +// 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:sharekhanclg/main.dart'; + +void main() { + testWidgets('Counter increments smoke test', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(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/web/favicon.png b/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaa46ac1ae21512746f852a42ba87e4165dfdd1 GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM literal 0 HcmV?d00001 diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..b749bfef07473333cf1dd31e9eed89862a5d52aa GIT binary patch literal 5292 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 literal 0 HcmV?d00001 diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..88cfd48dff1169879ba46840804b412fe02fefd6 GIT binary patch literal 8252 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 literal 0 HcmV?d00001 diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9b4d76e525556d5d89141648c724331630325d GIT binary patch literal 5594 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! literal 0 HcmV?d00001 diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..d69c56691fbdb0b7efa65097c7cc1edac12a6d3e GIT binary patch literal 20998 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 MPgg&ebxsLQ025IeI{*Lx literal 0 HcmV?d00001 diff --git a/web/index.html b/web/index.html new file mode 100644 index 00000000..844c13b4 --- /dev/null +++ b/web/index.html @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + sharekhanclg + + + + + + diff --git a/web/manifest.json b/web/manifest.json new file mode 100644 index 00000000..6c15ec91 --- /dev/null +++ b/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "sharekhanclg", + "short_name": "sharekhanclg", + "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/windows/.gitignore b/windows/.gitignore new file mode 100644 index 00000000..d492d0d9 --- /dev/null +++ b/windows/.gitignore @@ -0,0 +1,17 @@ +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/windows/CMakeLists.txt b/windows/CMakeLists.txt new file mode 100644 index 00000000..2af8f7ae --- /dev/null +++ b/windows/CMakeLists.txt @@ -0,0 +1,108 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(sharekhanclg 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 "sharekhanclg") + +# 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() + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# 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/windows/flutter/CMakeLists.txt b/windows/flutter/CMakeLists.txt new file mode 100644 index 00000000..903f4899 --- /dev/null +++ b/windows/flutter/CMakeLists.txt @@ -0,0 +1,109 @@ +# 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") + +# Set fallback configurations for older versions of the flutter tool. +if (NOT DEFINED FLUTTER_TARGET_PLATFORM) + set(FLUTTER_TARGET_PLATFORM "windows-x64") +endif() + +# === 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" + ${FLUTTER_TARGET_PLATFORM} $ + 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/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 00000000..90e091c5 --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,29 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include +#include +#include +#include +#include +#include + +void RegisterPlugins(flutter::PluginRegistry* registry) { + CloudFirestorePluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("CloudFirestorePluginCApi")); + DesktopWebviewAuthPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("DesktopWebviewAuthPlugin")); + FileSelectorWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FileSelectorWindows")); + FirebaseAuthPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FirebaseAuthPluginCApi")); + FirebaseCorePluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); + FirebaseStoragePluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FirebaseStoragePluginCApi")); +} diff --git a/windows/flutter/generated_plugin_registrant.h b/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 00000000..dc139d85 --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// 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/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake new file mode 100644 index 00000000..27e8486a --- /dev/null +++ b/windows/flutter/generated_plugins.cmake @@ -0,0 +1,29 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + cloud_firestore + desktop_webview_auth + file_selector_windows + firebase_auth + firebase_core + firebase_storage +) + +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/windows/runner/CMakeLists.txt b/windows/runner/CMakeLists.txt new file mode 100644 index 00000000..394917c0 --- /dev/null +++ b/windows/runner/CMakeLists.txt @@ -0,0 +1,40 @@ +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/windows/runner/Runner.rc b/windows/runner/Runner.rc new file mode 100644 index 00000000..22d7a67e --- /dev/null +++ b/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// 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", "sharekhanclg" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "sharekhanclg" "\0" + VALUE "LegalCopyright", "Copyright (C) 2024 com.example. All rights reserved." "\0" + VALUE "OriginalFilename", "sharekhanclg.exe" "\0" + VALUE "ProductName", "sharekhanclg" "\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/windows/runner/flutter_window.cpp b/windows/runner/flutter_window.cpp new file mode 100644 index 00000000..955ee303 --- /dev/null +++ b/windows/runner/flutter_window.cpp @@ -0,0 +1,71 @@ +#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/windows/runner/flutter_window.h b/windows/runner/flutter_window.h new file mode 100644 index 00000000..6da0652f --- /dev/null +++ b/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#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/windows/runner/main.cpp b/windows/runner/main.cpp new file mode 100644 index 00000000..b0e233ef --- /dev/null +++ b/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#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"sharekhanclg", 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/windows/runner/resource.h b/windows/runner/resource.h new file mode 100644 index 00000000..66a65d1e --- /dev/null +++ b/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{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/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c04e20caf6370ebb9253ad831cc31de4a9c965f6 GIT binary patch literal 33772 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 literal 0 HcmV?d00001 diff --git a/windows/runner/runner.exe.manifest b/windows/runner/runner.exe.manifest new file mode 100644 index 00000000..153653e8 --- /dev/null +++ b/windows/runner/runner.exe.manifest @@ -0,0 +1,14 @@ + + + + + PerMonitorV2 + + + + + + + + + diff --git a/windows/runner/utils.cpp b/windows/runner/utils.cpp new file mode 100644 index 00000000..3a0b4651 --- /dev/null +++ b/windows/runner/utils.cpp @@ -0,0 +1,65 @@ +#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(); + } + unsigned 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/windows/runner/utils.h b/windows/runner/utils.h new file mode 100644 index 00000000..3879d547 --- /dev/null +++ b/windows/runner/utils.h @@ -0,0 +1,19 @@ +#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/windows/runner/win32_window.cpp b/windows/runner/win32_window.cpp new file mode 100644 index 00000000..60608d0f --- /dev/null +++ b/windows/runner/win32_window.cpp @@ -0,0 +1,288 @@ +#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/windows/runner/win32_window.h b/windows/runner/win32_window.h new file mode 100644 index 00000000..e901dde6 --- /dev/null +++ b/windows/runner/win32_window.h @@ -0,0 +1,102 @@ +#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_