From 53c58dd5025213142c86fdb56a796ce6031b9e6f Mon Sep 17 00:00:00 2001 From: Alexander Laevens Date: Sat, 26 Nov 2022 00:25:41 -0700 Subject: [PATCH] delete old front end --- grocery_helper/.gitignore | 44 -- grocery_helper/.metadata | 45 -- grocery_helper/.vscode/settings.json | 3 - grocery_helper/README.md | 16 - grocery_helper/analysis_options.yaml | 29 - grocery_helper/android/.gitignore | 13 - grocery_helper/android/app/build.gradle | 72 --- .../android/app/src/debug/AndroidManifest.xml | 8 - .../android/app/src/main/AndroidManifest.xml | 34 -- .../example/grocery_helper/MainActivity.kt | 6 - .../res/drawable-v21/launch_background.xml | 12 - .../main/res/drawable/launch_background.xml | 12 - .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 2959 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 1909 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 3971 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 5702 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 7391 -> 0 bytes .../app/src/main/res/values-night/styles.xml | 18 - .../app/src/main/res/values/styles.xml | 18 - .../app/src/profile/AndroidManifest.xml | 8 - grocery_helper/android/build.gradle | 31 - grocery_helper/android/gradle.properties | 3 - .../gradle/wrapper/gradle-wrapper.properties | 5 - grocery_helper/android/settings.gradle | 11 - grocery_helper/assets/icons/android.svg | 92 --- grocery_helper/assets/icons/desktop.png | Bin 80111 -> 0 bytes grocery_helper/assets/icons/icon.png | Bin 15479 -> 0 bytes grocery_helper/assets/images/base.svg | 93 --- grocery_helper/assets/images/desktop.svg | 101 --- grocery_helper/assets/images/holes-dark.svg | 72 --- grocery_helper/assets/images/holes.svg | 72 --- grocery_helper/assets/images/person.svg | 1 - grocery_helper/ios/.gitignore | 34 -- .../ios/Flutter/AppFrameworkInfo.plist | 26 - grocery_helper/ios/Flutter/Debug.xcconfig | 1 - grocery_helper/ios/Flutter/Release.xcconfig | 1 - .../ios/Runner.xcodeproj/project.pbxproj | 483 --------------- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 8 - .../xcshareddata/xcschemes/Runner.xcscheme | 87 --- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 8 - grocery_helper/ios/Runner/AppDelegate.swift | 13 - .../AppIcon.appiconset/Contents.json | 122 ---- .../Icon-App-1024x1024@1x.png | Bin 58024 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 624 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1574 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 2435 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 981 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 2376 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 3642 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1574 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 3381 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 4888 -> 0 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 2047 -> 0 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 3951 -> 0 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 2310 -> 0 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 4684 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 4888 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 6867 -> 0 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 2959 -> 0 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 5702 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 3233 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 5994 -> 0 bytes .../Icon-App-83.5x83.5@2x.png | Bin 6327 -> 0 bytes .../LaunchImage.imageset/Contents.json | 23 - .../LaunchImage.imageset/LaunchImage.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/README.md | 5 - .../Runner/Base.lproj/LaunchScreen.storyboard | 37 -- .../ios/Runner/Base.lproj/Main.storyboard | 26 - grocery_helper/ios/Runner/Info.plist | 54 -- .../ios/Runner/Runner-Bridging-Header.h | 1 - grocery_helper/lib/api/auth.dart | 86 --- grocery_helper/lib/api/consts.dart | 3 - grocery_helper/lib/api/models/homegroup.dart | 72 --- .../lib/api/models/homegroupinvite.dart | 70 --- grocery_helper/lib/api/models/ingredient.dart | 28 - grocery_helper/lib/api/models/recipe.dart | 81 --- grocery_helper/lib/api/models/simpleuser.dart | 89 --- grocery_helper/lib/api/models/user.dart | 115 ---- grocery_helper/lib/main.dart | 30 - .../lib/pages/profile_page/profile_page.dart | 164 ----- .../widgets/homegroup_card_widget.dart | 360 ----------- .../widgets/invite_homegroup_dialog.dart | 163 ----- .../widgets/profile_card_widget.dart | 86 --- .../pages/profile_page/widgets/user_chip.dart | 51 -- .../lib/pages/recipes_page/recipes_page.dart | 132 ---- .../widgets/recipe_card_widget.dart | 133 ---- grocery_helper/lib/pages/themetest.dart | 125 ---- grocery_helper/lib/screens/home_screen.dart | 75 --- grocery_helper/lib/screens/login_screen.dart | 348 ----------- grocery_helper/lib/theme.dart | 43 -- .../lib/widgets/pagination_listview.dart | 112 ---- .../lib/widgets/text_entry_dialog.dart | 82 --- grocery_helper/linux/.gitignore | 1 - grocery_helper/linux/CMakeLists.txt | 138 ----- grocery_helper/linux/flutter/CMakeLists.txt | 88 --- .../flutter/generated_plugin_registrant.cc | 15 - .../flutter/generated_plugin_registrant.h | 15 - .../linux/flutter/generated_plugins.cmake | 24 - grocery_helper/linux/main.cc | 6 - grocery_helper/linux/my_application.cc | 104 ---- grocery_helper/linux/my_application.h | 18 - grocery_helper/macos/.gitignore | 7 - .../macos/Flutter/Flutter-Debug.xcconfig | 1 - .../macos/Flutter/Flutter-Release.xcconfig | 1 - .../Flutter/GeneratedPluginRegistrant.swift | 12 - .../macos/Runner.xcodeproj/project.pbxproj | 573 ------------------ .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/xcschemes/Runner.xcscheme | 87 --- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - grocery_helper/macos/Runner/AppDelegate.swift | 9 - .../AppIcon.appiconset/Contents.json | 68 --- .../AppIcon.appiconset/app_icon_1024.png | Bin 92675 -> 0 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 9831 -> 0 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 780 -> 0 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 19026 -> 0 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 2062 -> 0 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 40828 -> 0 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 4882 -> 0 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 - grocery_helper/macos/Runner/Info.plist | 32 - .../macos/Runner/MainFlutterWindow.swift | 15 - .../macos/Runner/Release.entitlements | 8 - grocery_helper/pubspec.lock | 411 ------------- grocery_helper/pubspec.yaml | 110 ---- grocery_helper/test/widget_test.dart | 30 - grocery_helper/web/favicon.png | Bin 917 -> 0 bytes grocery_helper/web/icons/Icon-192.png | Bin 5292 -> 0 bytes grocery_helper/web/icons/Icon-512.png | Bin 8252 -> 0 bytes .../web/icons/Icon-maskable-192.png | Bin 5594 -> 0 bytes .../web/icons/Icon-maskable-512.png | Bin 20998 -> 0 bytes grocery_helper/web/index.html | 59 -- grocery_helper/web/manifest.json | 35 -- grocery_helper/windows/.gitignore | 17 - grocery_helper/windows/CMakeLists.txt | 101 --- grocery_helper/windows/flutter/CMakeLists.txt | 104 ---- .../flutter/generated_plugin_registrant.cc | 14 - .../flutter/generated_plugin_registrant.h | 15 - .../windows/flutter/generated_plugins.cmake | 24 - grocery_helper/windows/runner/CMakeLists.txt | 40 -- grocery_helper/windows/runner/Runner.rc | 121 ---- .../windows/runner/flutter_window.cpp | 66 -- .../windows/runner/flutter_window.h | 33 - grocery_helper/windows/runner/main.cpp | 43 -- grocery_helper/windows/runner/resource.h | 16 - .../windows/runner/resources/app_icon.ico | Bin 19048 -> 0 bytes .../windows/runner/runner.exe.manifest | 20 - grocery_helper/windows/runner/utils.cpp | 64 -- grocery_helper/windows/runner/utils.h | 19 - .../windows/runner/win32_window.cpp | 288 --------- grocery_helper/windows/runner/win32_window.h | 102 ---- 162 files changed, 7589 deletions(-) delete mode 100644 grocery_helper/.gitignore delete mode 100644 grocery_helper/.metadata delete mode 100644 grocery_helper/.vscode/settings.json delete mode 100644 grocery_helper/README.md delete mode 100644 grocery_helper/analysis_options.yaml delete mode 100644 grocery_helper/android/.gitignore delete mode 100644 grocery_helper/android/app/build.gradle delete mode 100644 grocery_helper/android/app/src/debug/AndroidManifest.xml delete mode 100644 grocery_helper/android/app/src/main/AndroidManifest.xml delete mode 100644 grocery_helper/android/app/src/main/kotlin/com/example/grocery_helper/MainActivity.kt delete mode 100644 grocery_helper/android/app/src/main/res/drawable-v21/launch_background.xml delete mode 100644 grocery_helper/android/app/src/main/res/drawable/launch_background.xml delete mode 100644 grocery_helper/android/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 grocery_helper/android/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 grocery_helper/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 grocery_helper/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 grocery_helper/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 grocery_helper/android/app/src/main/res/values-night/styles.xml delete mode 100644 grocery_helper/android/app/src/main/res/values/styles.xml delete mode 100644 grocery_helper/android/app/src/profile/AndroidManifest.xml delete mode 100644 grocery_helper/android/build.gradle delete mode 100644 grocery_helper/android/gradle.properties delete mode 100644 grocery_helper/android/gradle/wrapper/gradle-wrapper.properties delete mode 100644 grocery_helper/android/settings.gradle delete mode 100644 grocery_helper/assets/icons/android.svg delete mode 100644 grocery_helper/assets/icons/desktop.png delete mode 100644 grocery_helper/assets/icons/icon.png delete mode 100644 grocery_helper/assets/images/base.svg delete mode 100644 grocery_helper/assets/images/desktop.svg delete mode 100644 grocery_helper/assets/images/holes-dark.svg delete mode 100644 grocery_helper/assets/images/holes.svg delete mode 100644 grocery_helper/assets/images/person.svg delete mode 100644 grocery_helper/ios/.gitignore delete mode 100644 grocery_helper/ios/Flutter/AppFrameworkInfo.plist delete mode 100644 grocery_helper/ios/Flutter/Debug.xcconfig delete mode 100644 grocery_helper/ios/Flutter/Release.xcconfig delete mode 100644 grocery_helper/ios/Runner.xcodeproj/project.pbxproj delete mode 100644 grocery_helper/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 grocery_helper/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 grocery_helper/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 grocery_helper/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme delete mode 100644 grocery_helper/ios/Runner.xcworkspace/contents.xcworkspacedata delete mode 100644 grocery_helper/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 grocery_helper/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 grocery_helper/ios/Runner/AppDelegate.swift delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png delete mode 100644 grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md delete mode 100644 grocery_helper/ios/Runner/Base.lproj/LaunchScreen.storyboard delete mode 100644 grocery_helper/ios/Runner/Base.lproj/Main.storyboard delete mode 100644 grocery_helper/ios/Runner/Info.plist delete mode 100644 grocery_helper/ios/Runner/Runner-Bridging-Header.h delete mode 100644 grocery_helper/lib/api/auth.dart delete mode 100644 grocery_helper/lib/api/consts.dart delete mode 100644 grocery_helper/lib/api/models/homegroup.dart delete mode 100644 grocery_helper/lib/api/models/homegroupinvite.dart delete mode 100644 grocery_helper/lib/api/models/ingredient.dart delete mode 100644 grocery_helper/lib/api/models/recipe.dart delete mode 100644 grocery_helper/lib/api/models/simpleuser.dart delete mode 100644 grocery_helper/lib/api/models/user.dart delete mode 100644 grocery_helper/lib/main.dart delete mode 100644 grocery_helper/lib/pages/profile_page/profile_page.dart delete mode 100644 grocery_helper/lib/pages/profile_page/widgets/homegroup_card_widget.dart delete mode 100644 grocery_helper/lib/pages/profile_page/widgets/invite_homegroup_dialog.dart delete mode 100644 grocery_helper/lib/pages/profile_page/widgets/profile_card_widget.dart delete mode 100644 grocery_helper/lib/pages/profile_page/widgets/user_chip.dart delete mode 100644 grocery_helper/lib/pages/recipes_page/recipes_page.dart delete mode 100644 grocery_helper/lib/pages/recipes_page/widgets/recipe_card_widget.dart delete mode 100644 grocery_helper/lib/pages/themetest.dart delete mode 100644 grocery_helper/lib/screens/home_screen.dart delete mode 100644 grocery_helper/lib/screens/login_screen.dart delete mode 100644 grocery_helper/lib/theme.dart delete mode 100644 grocery_helper/lib/widgets/pagination_listview.dart delete mode 100644 grocery_helper/lib/widgets/text_entry_dialog.dart delete mode 100644 grocery_helper/linux/.gitignore delete mode 100644 grocery_helper/linux/CMakeLists.txt delete mode 100644 grocery_helper/linux/flutter/CMakeLists.txt delete mode 100644 grocery_helper/linux/flutter/generated_plugin_registrant.cc delete mode 100644 grocery_helper/linux/flutter/generated_plugin_registrant.h delete mode 100644 grocery_helper/linux/flutter/generated_plugins.cmake delete mode 100644 grocery_helper/linux/main.cc delete mode 100644 grocery_helper/linux/my_application.cc delete mode 100644 grocery_helper/linux/my_application.h delete mode 100644 grocery_helper/macos/.gitignore delete mode 100644 grocery_helper/macos/Flutter/Flutter-Debug.xcconfig delete mode 100644 grocery_helper/macos/Flutter/Flutter-Release.xcconfig delete mode 100644 grocery_helper/macos/Flutter/GeneratedPluginRegistrant.swift delete mode 100644 grocery_helper/macos/Runner.xcodeproj/project.pbxproj delete mode 100644 grocery_helper/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 grocery_helper/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme delete mode 100644 grocery_helper/macos/Runner.xcworkspace/contents.xcworkspacedata delete mode 100644 grocery_helper/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 grocery_helper/macos/Runner/AppDelegate.swift delete mode 100644 grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png delete mode 100644 grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png delete mode 100644 grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png delete mode 100644 grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png delete mode 100644 grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png delete mode 100644 grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png delete mode 100644 grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png delete mode 100644 grocery_helper/macos/Runner/Base.lproj/MainMenu.xib delete mode 100644 grocery_helper/macos/Runner/Configs/AppInfo.xcconfig delete mode 100644 grocery_helper/macos/Runner/Configs/Debug.xcconfig delete mode 100644 grocery_helper/macos/Runner/Configs/Release.xcconfig delete mode 100644 grocery_helper/macos/Runner/Configs/Warnings.xcconfig delete mode 100644 grocery_helper/macos/Runner/DebugProfile.entitlements delete mode 100644 grocery_helper/macos/Runner/Info.plist delete mode 100644 grocery_helper/macos/Runner/MainFlutterWindow.swift delete mode 100644 grocery_helper/macos/Runner/Release.entitlements delete mode 100644 grocery_helper/pubspec.lock delete mode 100644 grocery_helper/pubspec.yaml delete mode 100644 grocery_helper/test/widget_test.dart delete mode 100644 grocery_helper/web/favicon.png delete mode 100644 grocery_helper/web/icons/Icon-192.png delete mode 100644 grocery_helper/web/icons/Icon-512.png delete mode 100644 grocery_helper/web/icons/Icon-maskable-192.png delete mode 100644 grocery_helper/web/icons/Icon-maskable-512.png delete mode 100644 grocery_helper/web/index.html delete mode 100644 grocery_helper/web/manifest.json delete mode 100644 grocery_helper/windows/.gitignore delete mode 100644 grocery_helper/windows/CMakeLists.txt delete mode 100644 grocery_helper/windows/flutter/CMakeLists.txt delete mode 100644 grocery_helper/windows/flutter/generated_plugin_registrant.cc delete mode 100644 grocery_helper/windows/flutter/generated_plugin_registrant.h delete mode 100644 grocery_helper/windows/flutter/generated_plugins.cmake delete mode 100644 grocery_helper/windows/runner/CMakeLists.txt delete mode 100644 grocery_helper/windows/runner/Runner.rc delete mode 100644 grocery_helper/windows/runner/flutter_window.cpp delete mode 100644 grocery_helper/windows/runner/flutter_window.h delete mode 100644 grocery_helper/windows/runner/main.cpp delete mode 100644 grocery_helper/windows/runner/resource.h delete mode 100644 grocery_helper/windows/runner/resources/app_icon.ico delete mode 100644 grocery_helper/windows/runner/runner.exe.manifest delete mode 100644 grocery_helper/windows/runner/utils.cpp delete mode 100644 grocery_helper/windows/runner/utils.h delete mode 100644 grocery_helper/windows/runner/win32_window.cpp delete mode 100644 grocery_helper/windows/runner/win32_window.h diff --git a/grocery_helper/.gitignore b/grocery_helper/.gitignore deleted file mode 100644 index 24476c5..0000000 --- a/grocery_helper/.gitignore +++ /dev/null @@ -1,44 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ -migrate_working_dir/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release diff --git a/grocery_helper/.metadata b/grocery_helper/.metadata deleted file mode 100644 index c5a7f9c..0000000 --- a/grocery_helper/.metadata +++ /dev/null @@ -1,45 +0,0 @@ -# This file tracks properties of this Flutter project. -# Used by Flutter tool to assess capabilities and perform upgrades etc. -# -# This file should be version controlled. - -version: - revision: 2921ca0c482401e557ebb20d16180e2e14e47ee9 - channel: master - -project_type: app - -# Tracks metadata for the flutter migrate command -migration: - platforms: - - platform: root - create_revision: 2921ca0c482401e557ebb20d16180e2e14e47ee9 - base_revision: 2921ca0c482401e557ebb20d16180e2e14e47ee9 - - platform: android - create_revision: 2921ca0c482401e557ebb20d16180e2e14e47ee9 - base_revision: 2921ca0c482401e557ebb20d16180e2e14e47ee9 - - platform: ios - create_revision: 2921ca0c482401e557ebb20d16180e2e14e47ee9 - base_revision: 2921ca0c482401e557ebb20d16180e2e14e47ee9 - - platform: linux - create_revision: 2921ca0c482401e557ebb20d16180e2e14e47ee9 - base_revision: 2921ca0c482401e557ebb20d16180e2e14e47ee9 - - platform: macos - create_revision: 2921ca0c482401e557ebb20d16180e2e14e47ee9 - base_revision: 2921ca0c482401e557ebb20d16180e2e14e47ee9 - - platform: web - create_revision: 2921ca0c482401e557ebb20d16180e2e14e47ee9 - base_revision: 2921ca0c482401e557ebb20d16180e2e14e47ee9 - - platform: windows - create_revision: 2921ca0c482401e557ebb20d16180e2e14e47ee9 - base_revision: 2921ca0c482401e557ebb20d16180e2e14e47ee9 - - # User provided section - - # List of Local paths (relative to this file) that should be - # ignored by the migrate tool. - # - # Files that are not part of the templates will be ignored by default. - unmanaged_files: - - 'lib/main.dart' - - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/grocery_helper/.vscode/settings.json b/grocery_helper/.vscode/settings.json deleted file mode 100644 index cad7657..0000000 --- a/grocery_helper/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "cmake.configureOnOpen": false -} \ No newline at end of file diff --git a/grocery_helper/README.md b/grocery_helper/README.md deleted file mode 100644 index ac70fb7..0000000 --- a/grocery_helper/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# grocery_helper - -A new Flutter project. - -## Getting Started - -This project is a starting point for a Flutter application. - -A few resources to get you started if this is your first Flutter project: - -- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) - -For help getting started with Flutter development, view the -[online documentation](https://docs.flutter.dev/), which offers tutorials, -samples, guidance on mobile development, and a full API reference. diff --git a/grocery_helper/analysis_options.yaml b/grocery_helper/analysis_options.yaml deleted file mode 100644 index 61b6c4d..0000000 --- a/grocery_helper/analysis_options.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# This file configures the analyzer, which statically analyzes Dart code to -# check for errors, warnings, and lints. -# -# The issues identified by the analyzer are surfaced in the UI of Dart-enabled -# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be -# invoked from the command line by running `flutter analyze`. - -# The following line activates a set of recommended lints for Flutter apps, -# packages, and plugins designed to encourage good coding practices. -include: package:flutter_lints/flutter.yaml - -linter: - # The lint rules applied to this project can be customized in the - # section below to disable rules from the `package:flutter_lints/flutter.yaml` - # included above or to enable additional rules. A list of all available lints - # and their documentation is published at - # https://dart-lang.github.io/linter/lints/index.html. - # - # 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/grocery_helper/android/.gitignore b/grocery_helper/android/.gitignore deleted file mode 100644 index 6f56801..0000000 --- a/grocery_helper/android/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -gradle-wrapper.jar -/.gradle -/captures/ -/gradlew -/gradlew.bat -/local.properties -GeneratedPluginRegistrant.java - -# Remember to never publicly share your keystore. -# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app -key.properties -**/*.keystore -**/*.jks diff --git a/grocery_helper/android/app/build.gradle b/grocery_helper/android/app/build.gradle deleted file mode 100644 index 99c0056..0000000 --- a/grocery_helper/android/app/build.gradle +++ /dev/null @@ -1,72 +0,0 @@ -def localProperties = new Properties() -def localPropertiesFile = rootProject.file('local.properties') -if (localPropertiesFile.exists()) { - localPropertiesFile.withReader('UTF-8') { reader -> - localProperties.load(reader) - } -} - -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - -android { - compileSdkVersion flutter.compileSdkVersion - ndkVersion flutter.ndkVersion - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = '1.8' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.grocery_helper" - // You can update the following values to match your application needs. - // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 18 - compileSdkVersion 33 - targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName - } - - buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug - } - } -} - -flutter { - source '../..' -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} diff --git a/grocery_helper/android/app/src/debug/AndroidManifest.xml b/grocery_helper/android/app/src/debug/AndroidManifest.xml deleted file mode 100644 index ce69bfa..0000000 --- a/grocery_helper/android/app/src/debug/AndroidManifest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/grocery_helper/android/app/src/main/AndroidManifest.xml b/grocery_helper/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 4dfc7ac..0000000 --- a/grocery_helper/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - diff --git a/grocery_helper/android/app/src/main/kotlin/com/example/grocery_helper/MainActivity.kt b/grocery_helper/android/app/src/main/kotlin/com/example/grocery_helper/MainActivity.kt deleted file mode 100644 index ae880b3..0000000 --- a/grocery_helper/android/app/src/main/kotlin/com/example/grocery_helper/MainActivity.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.example.grocery_helper - -import io.flutter.embedding.android.FlutterActivity - -class MainActivity: FlutterActivity() { -} diff --git a/grocery_helper/android/app/src/main/res/drawable-v21/launch_background.xml b/grocery_helper/android/app/src/main/res/drawable-v21/launch_background.xml deleted file mode 100644 index f74085f..0000000 --- a/grocery_helper/android/app/src/main/res/drawable-v21/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/grocery_helper/android/app/src/main/res/drawable/launch_background.xml b/grocery_helper/android/app/src/main/res/drawable/launch_background.xml deleted file mode 100644 index 304732f..0000000 --- a/grocery_helper/android/app/src/main/res/drawable/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/grocery_helper/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/grocery_helper/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 1b3650e914bc4567baf34310266338e0af8a25c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2959 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 diff --git a/grocery_helper/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/grocery_helper/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index c5147b2a353b800aba9c27e996d6753899350b46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3971 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 diff --git a/grocery_helper/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/grocery_helper/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index de3c34e9b4096aa5fd9351fab36d2d5bb3665037..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5702 zcmcgw_cI(0u+QN*cX~Tf@8ocz6QUDNOOz-PE*Bi9MwBlSqIW{{2st&;IZ;AH^e%cQ z%IPK1Ta@5=Gw*MBKkRC^PblmFSyB>^gvE|6II7vLI04W-j$#HeuS zx&qwpwE)|P$^L%>vrHs+t8zoE$EZo~Sc^|vBue9=B!YzKOX)23nW|YL)$E3^7qE44R5eC!x3JH58KehG4bs>*n>b12$ zo<3cYNCPH&#qUBs$&CzAJL@kgsf*c@o_3Xx-U%W$1PD7`C=jJV>u8GX#-FN$rWa;FXnX>)|53=x=w95PIFOnS z(bXd<$^~@AEC`DkDvp*|e51d_%fe`=@>)nBA{kNTbjfbunrTMkI|0yl`oegq$I#PS zp-`Vgep3Gi{`(?Mic$c^Az>LI~e~slAJ#)4HT1XC@TXg)lV_bghcUB z^1?WH4kV0le~v*papqg$1AqcL`h255+|vq45F}TN$yRvSIJ25%uf9IyEAf&P&^TeQN3L#EoToE&r zW(zb<$CJ-|u!_L_(9>j=Wl&WiVwBZVyt!WcEc6c^eNoP6P`cGW*CwVG*{mfdd3j#M z9_}J7Ss(cJKf}eV>ha3s3%#$JUmcu^vlYyhCcyf$&ov2M@%|x}QnZ{di{tT}In1vRXXV!n>`^lQ#LA30WB?h@Iend1$)41M~okZO^}|Lj_Ws+T3_pf#tY+`8kQ7-PS!DR2kk9^K^5%VLVR91<@ZO>k%{Cut=oRC^u_ zajs)!KaEuuGgEDv0c`SkqmO@FD-P$68vJk0FAAo5@aeG@q-^|7-2-`xOj(n2Xf6W?INQva{pnh)#HnP8G zzIyz`+}_zah2T;@LUwo%v#2KHL?aWh55^UY76kk$MbwTkoe{-k9D`p))Q|HrpmbG6 zD?71WG01!W9bsFqxRCrV`M8H_?))IKTLfaK%|h6@fkE-Yh*&1hEwfll@gCbn3Y5*Hi2$Nr{6a0 zK$idRS5I1<^R!9cQ`Os_gP9+W*Jq`IKr3%1jOK;)Zl+_forV0SMWg$wlh;w%>X`I; znP*E6+BvRTpFzQe4CH2R0bg5V zzzk66@8!h{F)@yf_x?76dfg8TBzvw;w*a;Cx6AK|`d;g$nk182FFV&hNVnjvx2A#L zWd|5J+74}xMP>xP;Vk$4M9s%5OIbF%aTstCAgow!3s5|xp^*O%pU*Cx7T5{w)o@nJ z)S--ck^Zamm!Rkus@NFA84ucSZuKsIeQ#`y6CS?i^O!@Z22OFWhT=`i-RPA;2{vXj z*SZQ)#3VE{pM>YPa*SM!cFN-%{NbW}auTsEK^8kx2klb!~5^?@T5p&*}uHC@_VZILkh zAk^&Vh1;Cu?jL=%Xu?t{K^O0NU1taBMHtShw34dz#k#EHAEdk9>p|2~$6n+LX#O!Y z(s1bt4mMz**4DHAcnYODvKu=IW6^wxFFi8G;upF`QKtsoec&_F(LwV(yRQ?INVAN>x$iNPG`J1@VtKM#f8QI_XC z-)g*_&ze95X`>Y&kFme{PpDqoTLxF2fOgkxTKGyX2M`3iTdoRwbiw2%GzZQ9ihfwL zYx@lxEqb}vn&klAl>+y!8>_tk=}N!_@v*n=lDo+~epfPQo^R7%OQ7+u zL$Ud#Fw2QAW*3VQO_WYmuNFPh0%LvWsjkm{^250y!B{0hnDoa|k^a1teOsP89j&ue z-Mt59LlZE{cFRZ;E!IvQ+p}JWV0vo+^%)Rx=*E=3V)#Ji1DbT%`{}iq&A@Qts!g7t zhDDM%gDTS+2WP~GSWMuq-*HWR)BUksTWrRL_&4^_8WkFf4otk7rglsER?UvUtDrZE zN`lD(+#(_L&j6le{upNWr`5>N%{-PmZ!TfFX!Y8|R))us22+CE_nPm#7RmcpspWTH zTl@};!@s-6tv7)p)o#=8}>fc9l5+Od7OMCH{039Gx=8ZQe{J;%-x8B9ZAqQZOj9{^ab^86Rq{H7bo z1gUs`h5TPC7(^T$m)r3MCSMJ`}D4@Au`j!%JmtrL_6Pz@Cj8|dGD^(ug0PdfCtgcgef81m@4 zqId!D4MfRmIKuzxx7$?xy|3S;D-AVRuad|v*x!@gOJm$V@ydRl7s&=T|1cK#g)5;0 zqtgGp?dm?I)xjeMx?pc6LltJ7mIIAAg;r#D4iHz>o23(Ow(M^u%K^Zmjtbh=!}cs1 z0KGfe!b9BiijWIsha*vI=?lRZzo!B;TCOzuv=fe~VnGi=Le4RDQRPbE@4fmhQEMBt zJCGP(-LXpOS_xQd4JFBq|ISR46xL;hmkI^cnw7Hf+h8tO%hTg$uWw3`% zax*>)lGk-11>?l(VwOd-%HYWvF)Kud{nt>ZPYJ@l|Qe9hx_2-Y! zXuO6gl>|!Nl)I%hd>_n$)U^#70~*6I^}@Z5i_JZP#WOti>e>~H|n(5S(I9cxten%^mHmTa#BZ9OzI>8cOWXk!bkh z!_#S<2()G@rPc#9_#Bw%r;#Sk2qdk+dNZ!nc&&L+G*Rzf)Ks9TUQ`Od@iBe;I2RqA z`-kUF+c{+I{sU-O%*dYN?U6ZUnWe;I>O66^RKZXwZ4|Bu1P zkE>K#B!+6>1*bEg0n$XDuJpHrFLj^|iG3288oti(BHk1sae3i0awl2RFhiuwM@~j& zC#ojyi}4@HyRPA>b3uh+`w0E{A8bkv_D08HrX|wIQ!8b!orVQsgAX$kW3|WxNzZxf zG#QV0eZ(&c#V76L|Gemj!fFDG2sU-wQ+o2HYVV=A3;oOykM|Prv27R{HZM1gmG3lZNbH%8& zpnwGRCw9kOZ<&16FyIfK)!k9VY&dD=ma*V_TVdLBvxQwf6nw6nnsQjZ zSs{tp;U7oabBPv~vcPof#ph06$>dE2!zPt8>;0tDvGf(V0;AiWI_N}VP*arfDLMO+ z$hXdg{+LWR@w;t~4WZ6)uUmW{pS9~e(Fr%$CbUNJ0NZV?ho=#fij6OL73%!Vx-SN- zep|ktm4-~vZ5KUMA1Y{alULC2Kt6OYN3e_~H&Zlu!B(s-EiQ9STASIs93iK%roBn$ zndOnc+NlDDN&MjMa%c_W{vRZaqBPa(DOkRLz0R`uX+Nz{6+h!{JF`3KVVzpq6M8D9 z81yQKyEZQF>%YU??5vWUn}T$iTgL5r7*MYJ?`|Bi+$(Q<}RPet#cNfzx|XfSlVg?j)qkZvic;Rhm&M2&t(iA!9Nqn)VD~h zW^iO-K#Lj6h5I)71%`9sj$PRkTAef&!$R1?#oIf_QVaOLb2N-H{aw)CM30aP60AO- zpjaR0?}zKqc;cU9y6|B-!Dm%^}>$TJBi_?Y9i;yWJAQeM;kN z?IoT(mGo2f$jRn06^riVOei-Cs3p`&MJ2=-X(1E|X+sOVi_1#NQMj;Yt>NmNXjK)+ z508$H+L~fXg@rfY&amyStqwB6)VI#w_d2PbbOQzT4^xW-DdEw?6#y-PiFR zua^-Gxr%+bCjWC|*R<7_f@XAO{jhkm8PI!wWmLn~WQeG2G1b_<#K@U{tJ|=rI@W)P zbPGCiEI@cS0k3^oGZ-|_drI{qSSP0?QB}c zu_`|y`VoGm+evgWXFa-T`eCg;G{`;k{lAext8LW9e#{?1Sh_uuGE!2?btB2PW+SMP zq|!0#fom1xHcv5I9eCsD$qedU4@~s@t(ubV zvs*jE^uzFFR@ymW=wWR6^N~51zDaZ9)`kd-j5uRCP#!t08(R?x0l@jN$PjTXl6_JX zu^OuX57dnd&MmcarTzNH51B3&$qs<$CwmMRbu!6zv9`Ytq;t1b^6K&()sorQpQQwe zFF)qfuu*7X-EGec+*34J+v3@q`Z0cgZQ~&Z3~I@IM#Lb_jCy4D)n>t<2ZAd*?0{l? zI^)y!>Oh?}oY;DDu$@@_B!#P$CI$i$FR%sRRzkYy@!tCBdyzf>_|o!U&F!Uhgq|;! z3V=;P3)R*{8$FcS4}ss@weII)J&{SjZW#84DIi>__k&+>V1)oTFpEV3;Pne^7OZ+I zAko@R+HfYiR!G@?5Eh7F!GsOXOWHpnrZP%V3BuabKT?_t)g3rIsKeR=;J)biMpko` z|AR;uG@WSe?+2pR7pCsZgDWBq7}5)@InWq8xHee>U} bd)N1zx?SExV?N*fhi_@C>!He2Erb6D2jivm diff --git a/grocery_helper/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/grocery_helper/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 68d497ae3912cb0f0aef560c821678f1683c02eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7391 zcmd5>#TwUl%Th=g=XcSs!0 z`76$cnYrfqa9{V#6ZbRM#OY|M;Nei?004lermCp-w4(lZU|~GXdW$ZY06Y*OAnx2X9RTfagMJKkXLi~oi! z&-r4EU1}BD;zjwpT~EAzz7jFNtW2b6EZRwGD4f#yz6x!w z#(1~DA|0c3OKXz3iaDO6xe!oKMUGUPXwVT55J&rme^uzp(?c?KycQSI5@5h{bN9#n zRlfN4c9-mEE6TJM(9ki^1D?5L)C4``wU=0W1WCN*0$&d%Y^Q-s`S>E6ox+3H-qAXm zy%6mN^LLG1TJzU7_Oa&#qIsHBM@5kNEUqN1Hiv8Tou;=1Ninrt!z4}+im;;UKE>uTv6Wqqlba)h+Swf=d4FA^l;%@8Y#yiZbn<+p|J&q;YZq9!0NdA z04nEs7Bjeuq;nb(w&zXkq1PrreYEwl!cFycm%NeE7%g1Z9>g#PaQFv(f)gjUQ)_(W zmv{83jS4YRJvc##Q~a+#+MpA)0O`K50n}FMyg$PC@#s)8b&IUbf6Id)=y1zmh37nZ zynqh{&b0)w`^_3aKa5KUm$F&2Opq$9PaRJzr5?{^8K#U|6CcrszNW$WaZqPHhfNO1 zDcBOZydceD(5Bs2Uw0ZgDOk>#`n*cc&Nr5x-NQ`BdKPl27l>hK=WYz3(|1}@wZzE_ z6^8l{n@h~)Y>|zQYQWGt#i#Ln-CS97`bYSo@Ms8ZLa>I^ZEmqNh;A4vm~tc1qirr# zV-&8J!Zm_xF{f9hl9=(*7y!3E8#Q9>AWUps_^|$^U}9bp|9RX9|3j9H|GJ>xc=KaM z*oQd^ayY5q+)+Hyt>V_GKUTAPGiHv8D*XcLS=jG=cOLa*jwlxPBP+0r{mlHzw zOVE{KF`C@<5Q)lE8{?kTi5}+N=IiHq{5kk>R$fQLva;{D4E_(cF4O$MCxCG5vZ!QN znkYbo?LNK6r(3dla_smbeKZ17guz;bqX*og=%`EA=IGjf>MyzQ!1!)o63ur||G`4J!S^N@h;--oDRc4Uk&$fg378dd<&`Fs?%&@9Z6(?6f-vVD{zhNCUx@j<3X zA3Zf>!RQwX+W&RD_c?hIIf~XK>s&XSvGXA)j!M26!!h2c`uuQ{M+S03CVHysA zhAI}1k(2IWc}m=fJK8Q;9mqiM6+AYbzZh9l1+5IAf(WGdo2qkvT1$vCFBK+a!H4;$4R_My zfVE`!dT=J64w(0u^s?}$CmtPC1qBgiYISyJ{NMU^dYRd|#uOMvNvT2UMrQTd+=8q~ zcRJCgo#4HQtn*7L)~l|Ny|-5(MzStCH`L37Ey6eGwOV>Z7u%hgZf=+FZ@8uIHn^huMH@yU#ykJL-Pjwy z#O<>0Y#l!~wsxfoT4$O~tx?%NB@CMfE(Qre zPX*VgTi;7shp0nP0fKx?NTR;V?8kTzZ+9!as0liOnZX?HijMSo3M)mxz_xE*J0(O{ z(c8SWlpW-^=;lz(74zbY^1pgt)dQ22bUqw}Uy$BSfP2avL_^EoEq^{TR6U@w7EUW# zD3fsdo^f-p6|*0gLN=TtG}|ga+TDpdATpt|p#`9JP9)1d2xc1UER!FHrcEe>kaU@Y zDUW-$N*$N>8d^8cYN%9R=K}iN*%lnwE8WSrh}K*6Z(BCZ(SW)tXoP6&Im3F0f3ksY z$1PVoKX)iOS)@2sUR9uR0QavX&vTa?VMl6r^~ppHjc!!z>rjGWCes!uvp64u3ly7@ zJIY1P0{VQYuR>@jGK&(bX`-gv+c#RsTKj@6XCV*S47_F)dZy{>BfkWS$C5iT>UazJ$Z+={>_Bbp77hArt|9Giyu?=lxd>qFo2hS%tH+eYNAuE!8gr?%OyoI@9Mtf35Zbm3dy(cX5)yt>ej4j_=A=gDTN{NV|3wrk44(+neXB#$%rIC^QMx(x(UO9SN_F1Vdf`vqil(A zTk-|$6~scW9KaJfdOsAWwRyBoe*ZnWs&Ai%1(14Hkzc6OI@Q++y)LfY1nDF$-yNl| zhDkQ}-9KZ}(S=p$bLGSJd$AmKuGvdkH+B|(Myp5cs@;&D5L51AXd8UJeDKlg=58WE z)#0yW@=54o9Ri%K+3|Y4w=2W#O4!)2Y{lPKmo&($Hve{(m~^Y~0W{;Hw#beIy-A_A zm!zECmD_v+L`;)%&9A^jsVf>SrV?Gh)SftBXsyRg>+?OLO;-0e$TZTvco#RfU_B?m!7ee3;v`aLA+%=cDn&1H=wO{f|B0=^BBe3>1`Mwi6lMhe zq?8~3HB+2ip^bTpes-lu-1dBjmC#!}O3|HUJ!u%Vn%MmVKffm3NOEv$@nLP>s}7x=~sEJ6(V zGVYHj2$Iorv07)i1hb5>nsNriU34fL@2a{a0*FUe(9=1oV4Qw6&vG6DItuY$JE5 ztxyA2cfvMD1WQ?A9wRDm_)Jk-1iXTfsB)Jn@na-?QNinNN}R;e1o9W+VQme)!+X`Y8jND{8DnVYaeN#^TWRMdv#fgqXAbkI}K4!T`m z7ky{?4{tu(sQMM`UWTknXYQgriG3fp00Pf|lMB}GrBC-bS9$%pTmSbCCEY6eDTKaa zl8p;ncF44snssQAW}1d^(gI~>fXmBVfzQr5&r5iY7rx-U^uPB)C>)Wm?X%ccPZV;o zhTY?=|HpFLuquB4sWhMmrcjVTV$!gMox0G!yEwMX?1DzK9mag{x|lK*T*$ew#e_G9 zNXaTlr|lc-KOH(>canHfWMlve7CeTcGM^#|=GXJr6hkq$($GZ(vXefTAUb zGWbsF@xJb83fXRLjm#SY2jM`eCu8{lm<8~0I;l1{b8A~~6_G{L8T^elvf9CDi*0sJPaPTX=iI=)D6is+&+1N~`vTX3Jr06Bv>3A?-$QJ$iT zpy;okDfR2ym>aX@PDlycx&bo;D?yJcLswkbv8oc-1PXUa?yn2an83y^ir=A30OxAL z&dBl%Rc$cgYjIdNBs4=NMsmwD3$akq6j~Uq2;4iYWIV?1E?^uPTLt0g#vSVJp`k8+ zUYH5vWQZORPr@d{w(e=T^k!p}2Gk8+yCdZJ)bb5gDNI>wSTmO4=0 z^$%NYT)ze-*V|)#ir;p5P;N7p2}7(z0=Rj{m0n!f0R&-(iOQsxLb;`QP-cCgU2&(I zD-mB*4qd&Ubw|27Ct_}`Cgx#2p85Vf3f)ATRSzZT&)%1vw)5Mc$4j_~5Mno%n8#mU z4jefCovHNtc+kZ5>rRDifcg9lKhwi6o*$p!#==*-F;~=dXXIq4&c!S8U1<&yRdF1p zNi2HJ@_)#6aEzm7Qux0$Ri%GW#02|Od!rZSM){ru0uT0QCv|E@5d(F0o8^t8?*abZ z%YC`7I^^+cKtABnOl0w&^Y>R*D=p`@JAY>#%*B54is!ok<3@B7LtxoDaXNV0s^7KfT^5c`uTfj6M>=9T26U(MG;Yy`_G7#Qt z7(ZgcVUkToKOSt-0aLf*v{7i5{AIbYeSKObF%Z7avsl!4JIxoZmR3mugf}h*lsuAd zV`lUYsDogKKP5&^=1Eyx2#Mi0mIMD5O(VH zfnEG|gH#}dK9&js6Js1?A4m0dBM~4>XVYH5F8_u|642Db20SSYcBs}Sgo8&odK6Q= z!7Zd@)J{478WYzCr9tpQM0FB$D?@xx4FtPAp8CXrb-NkoiA%y@4?(sF$567We0%#| z_x%Fc<6Dm|18;^k=|%%U*zSw4lL$fx_F!$a0moA8+8lOq_on>)s$y`!vIUWp=aC51 zBF4;2vE_0!30x6^;nwKLmNo<6g>~+n!Y6YaYm(0_08NG766F}Nw?i5z=832OY0t~G z$!rb2s5(#*39$BKi|Ub|Vnkq!6d>l!SjYC(>aPQ%!o}Oe>w$RVBO$qPg11`~3J&w>yG8sQk&s+)fxI6+Rg - - - - - - diff --git a/grocery_helper/android/app/src/main/res/values/styles.xml b/grocery_helper/android/app/src/main/res/values/styles.xml deleted file mode 100644 index cb1ef88..0000000 --- a/grocery_helper/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/grocery_helper/android/app/src/profile/AndroidManifest.xml b/grocery_helper/android/app/src/profile/AndroidManifest.xml deleted file mode 100644 index ce69bfa..0000000 --- a/grocery_helper/android/app/src/profile/AndroidManifest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/grocery_helper/android/build.gradle b/grocery_helper/android/build.gradle deleted file mode 100644 index 58a8c74..0000000 --- a/grocery_helper/android/build.gradle +++ /dev/null @@ -1,31 +0,0 @@ -buildscript { - ext.kotlin_version = '1.7.10' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.2.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -allprojects { - repositories { - google() - mavenCentral() - } -} - -rootProject.buildDir = '../build' -subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { - project.evaluationDependsOn(':app') -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/grocery_helper/android/gradle.properties b/grocery_helper/android/gradle.properties deleted file mode 100644 index 94adc3a..0000000 --- a/grocery_helper/android/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -org.gradle.jvmargs=-Xmx1536M -android.useAndroidX=true -android.enableJetifier=true diff --git a/grocery_helper/android/gradle/wrapper/gradle-wrapper.properties b/grocery_helper/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 3c472b9..0000000 --- a/grocery_helper/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip diff --git a/grocery_helper/android/settings.gradle b/grocery_helper/android/settings.gradle deleted file mode 100644 index 44e62bc..0000000 --- a/grocery_helper/android/settings.gradle +++ /dev/null @@ -1,11 +0,0 @@ -include ':app' - -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() - -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } - -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/grocery_helper/assets/icons/android.svg b/grocery_helper/assets/icons/android.svg deleted file mode 100644 index 3d73053..0000000 --- a/grocery_helper/assets/icons/android.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/grocery_helper/assets/icons/desktop.png b/grocery_helper/assets/icons/desktop.png deleted file mode 100644 index e37a5e0784d4962ecf6c37242d30bfac9e5a8f05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80111 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%0DTTnewDx9$UuxU*>e!&T)-5xX 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 diff --git a/grocery_helper/assets/icons/icon.png b/grocery_helper/assets/icons/icon.png deleted file mode 100644 index 74208e16592f6ab69267b5903666a8559927e11c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15479 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 - - - - - - - - - - - - - - - - - - diff --git a/grocery_helper/assets/images/desktop.svg b/grocery_helper/assets/images/desktop.svg deleted file mode 100644 index 8c8eb44..0000000 --- a/grocery_helper/assets/images/desktop.svg +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/grocery_helper/assets/images/holes-dark.svg b/grocery_helper/assets/images/holes-dark.svg deleted file mode 100644 index f79b598..0000000 --- a/grocery_helper/assets/images/holes-dark.svg +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/grocery_helper/assets/images/holes.svg b/grocery_helper/assets/images/holes.svg deleted file mode 100644 index afc19b1..0000000 --- a/grocery_helper/assets/images/holes.svg +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/grocery_helper/assets/images/person.svg b/grocery_helper/assets/images/person.svg deleted file mode 100644 index 88c85dd..0000000 --- a/grocery_helper/assets/images/person.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grocery_helper/ios/.gitignore b/grocery_helper/ios/.gitignore deleted file mode 100644 index 7a7f987..0000000 --- a/grocery_helper/ios/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -**/dgph -*.mode1v3 -*.mode2v3 -*.moved-aside -*.pbxuser -*.perspectivev3 -**/*sync/ -.sconsign.dblite -.tags* -**/.vagrant/ -**/DerivedData/ -Icon? -**/Pods/ -**/.symlinks/ -profile -xcuserdata -**/.generated/ -Flutter/App.framework -Flutter/Flutter.framework -Flutter/Flutter.podspec -Flutter/Generated.xcconfig -Flutter/ephemeral/ -Flutter/app.flx -Flutter/app.zip -Flutter/flutter_assets/ -Flutter/flutter_export_environment.sh -ServiceDefinitions.json -Runner/GeneratedPluginRegistrant.* - -# Exceptions to above rules. -!default.mode1v3 -!default.mode2v3 -!default.pbxuser -!default.perspectivev3 diff --git a/grocery_helper/ios/Flutter/AppFrameworkInfo.plist b/grocery_helper/ios/Flutter/AppFrameworkInfo.plist deleted file mode 100644 index 9625e10..0000000 --- a/grocery_helper/ios/Flutter/AppFrameworkInfo.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - App - CFBundleIdentifier - io.flutter.flutter.app - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - App - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - MinimumOSVersion - 11.0 - - diff --git a/grocery_helper/ios/Flutter/Debug.xcconfig b/grocery_helper/ios/Flutter/Debug.xcconfig deleted file mode 100644 index 592ceee..0000000 --- a/grocery_helper/ios/Flutter/Debug.xcconfig +++ /dev/null @@ -1 +0,0 @@ -#include "Generated.xcconfig" diff --git a/grocery_helper/ios/Flutter/Release.xcconfig b/grocery_helper/ios/Flutter/Release.xcconfig deleted file mode 100644 index 592ceee..0000000 --- a/grocery_helper/ios/Flutter/Release.xcconfig +++ /dev/null @@ -1 +0,0 @@ -#include "Generated.xcconfig" diff --git a/grocery_helper/ios/Runner.xcodeproj/project.pbxproj b/grocery_helper/ios/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index f2c2c34..0000000 --- a/grocery_helper/ios/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,483 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXBuildFile section */ - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 9705A1C41CF9048500538489 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; - 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 9740EEB11CF90186004384FC /* Flutter */ = { - isa = PBXGroup; - children = ( - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 9740EEB31CF90195004384FC /* Generated.xcconfig */, - ); - name = Flutter; - sourceTree = ""; - }; - 97C146E51CF9000F007C117D = { - isa = PBXGroup; - children = ( - 9740EEB11CF90186004384FC /* Flutter */, - 97C146F01CF9000F007C117D /* Runner */, - 97C146EF1CF9000F007C117D /* Products */, - ); - sourceTree = ""; - }; - 97C146EF1CF9000F007C117D /* Products */ = { - isa = PBXGroup; - children = ( - 97C146EE1CF9000F007C117D /* Runner.app */, - ); - name = Products; - sourceTree = ""; - }; - 97C146F01CF9000F007C117D /* Runner */ = { - isa = PBXGroup; - children = ( - 97C146FA1CF9000F007C117D /* Main.storyboard */, - 97C146FD1CF9000F007C117D /* Assets.xcassets */, - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, - 97C147021CF9000F007C117D /* Info.plist */, - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, - ); - path = Runner; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 97C146ED1CF9000F007C117D /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - 9740EEB61CF901F6004384FC /* Run Script */, - 97C146EA1CF9000F007C117D /* Sources */, - 97C146EB1CF9000F007C117D /* Frameworks */, - 97C146EC1CF9000F007C117D /* Resources */, - 9705A1C41CF9048500538489 /* Embed Frameworks */, - 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Runner; - productName = Runner; - productReference = 97C146EE1CF9000F007C117D /* Runner.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 97C146E61CF9000F007C117D /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 97C146ED1CF9000F007C117D = { - CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 1100; - }; - }; - }; - buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 97C146E51CF9000F007C117D; - productRefGroup = 97C146EF1CF9000F007C117D /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 97C146ED1CF9000F007C117D /* Runner */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 97C146EC1CF9000F007C117D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Thin Binary"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; - }; - 9740EEB61CF901F6004384FC /* Run Script */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Run Script"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 97C146EA1CF9000F007C117D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 97C146FA1CF9000F007C117D /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C146FB1CF9000F007C117D /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C147001CF9000F007C117D /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 249021D3217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Profile; - }; - 249021D4217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.groceryHelper; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Profile; - }; - 97C147031CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 97C147041CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 97C147061CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.groceryHelper; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 97C147071CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.groceryHelper; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147031CF9000F007C117D /* Debug */, - 97C147041CF9000F007C117D /* Release */, - 249021D3217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147061CF9000F007C117D /* Debug */, - 97C147071CF9000F007C117D /* Release */, - 249021D4217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 97C146E61CF9000F007C117D /* Project object */; -} diff --git a/grocery_helper/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/grocery_helper/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a..0000000 --- a/grocery_helper/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/grocery_helper/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/grocery_helper/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/grocery_helper/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/grocery_helper/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/grocery_helper/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c..0000000 --- a/grocery_helper/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/grocery_helper/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/grocery_helper/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index c87d15a..0000000 --- a/grocery_helper/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/grocery_helper/ios/Runner.xcworkspace/contents.xcworkspacedata b/grocery_helper/ios/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 1d526a1..0000000 --- a/grocery_helper/ios/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/grocery_helper/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/grocery_helper/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/grocery_helper/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/grocery_helper/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/grocery_helper/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c..0000000 --- a/grocery_helper/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/grocery_helper/ios/Runner/AppDelegate.swift b/grocery_helper/ios/Runner/AppDelegate.swift deleted file mode 100644 index 70693e4..0000000 --- a/grocery_helper/ios/Runner/AppDelegate.swift +++ /dev/null @@ -1,13 +0,0 @@ -import UIKit -import Flutter - -@UIApplicationMain -@objc class AppDelegate: FlutterAppDelegate { - override func application( - _ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? - ) -> Bool { - GeneratedPluginRegistrant.register(with: self) - return super.application(application, didFinishLaunchingWithOptions: launchOptions) - } -} diff --git a/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index d36b1fa..0000000 --- a/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@1x.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index 961d23cb787655eb95b45c481480c2a16dd8a287..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58024 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 diff --git a/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png deleted file mode 100644 index c29771d692d158781003c51a5776dfe40c2b7648..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 624 zcmV-$0+0QPP);I!=e}C!SfC#yZJZxKX{s+j3yqud0CtX zqfsCd4-<6LByfq)i>Z8oiUeE4f z?OqDcOyH=eF%ozw9!9R(hSdF8URTwTDezdBJBAPW=HG$DFZbSAjA89{!RG7h`TH{N zFDH=B?+<;38TDJ>%6SnpoNExY^9d^nbCWpy4KkEs8V{}xtP0=3!>k_!MLU5N`V5ls zAT-0kM97CQ>jnQ^h9D}?bOTcy3%{2}U69b06f3UUEJBycAcGMnuvi!Ic~i2Iug{;x zlZ~%fx;Tx^DsNrDcqqI~=W%l}fj8L_dYX={-4=|l1f$mh;r7~rrMiTL7>h~Hhf=MD zD|082EAQjQ+Z>Ju8Qe(CVlvDkb|Qcf>p|l{MsZiLa&@T*G8DA~`xEV`1_F!+vZCTu zrij@nhil0=K7Om9(^XA>581*V{0xnTS$eZA4|?8{t>t(&H0?D@*3G|!!tJHA(9E*> zLrf(ipePsIBx&`v-xi7@ZMmA*bOLvH1q`VU_KkzX$2M)(1iM4+IDs3v7S{P~vnlEy zVWZ>#5`+t6U<#U084u8cn&T%J4u;H+2iTX($3g2!W?z(l0{#FR&*VFL=MLfk0000< KMNUMnLSTXj;~nb& diff --git a/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png deleted file mode 100644 index 7a13d11bc5ff2a05625beef5d9cb7022d8555380..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1574 zcmV+>2HE+EP)mJ=`$Jk5QkikG60|yF1R3M-{M#eA;W`Pi+pcpX&0z!ZoodlGC zKm;F|1el<~@o*pvezw4H&Np!qUuCEZlYuWwq8eeVPzCR%E4O z^`6T(SKjb=0H+O&L(do$jE#1WK66tGlC>&K85~Q1=Q|%z87Rdo19aGZwh|V*)1%+v z60q~sO=M?u!^gWWqS5B)TtEgFB$Hsv(Xw{OY&~9%*M}!y%8*!maqwE_0%noX(^t*7 zP|?`#mR`##LZ+|P?KX=n-(v}(*+wHu3bp8Lm| zKwdOKqKfhzP+wz3qAmv?VcGQI{9Q$DBXp4}T)JUGk~R$b$~w0_!QMz-424K4_Z85B9`un?gBcTtrSRpk z+FMa@;2h3esf1b?h$?dvj;xxF{OurV7NkA>Hw6MlvQX zDRhrNcvg?}6rKB-g~jX%gYayxSVYkOvN&{7QfNYhap|TBBl^ap=)~nVHiZ@|gjO3w z0fF8D*$xmFt)^L;`LmX0ZZI}+z$%l45+DFJ`<+utLKijG)ApxQ+*+b$0%Y+xpO!pp zL@)AQBTp2uScEGCnEP^H=&R~I>~b%L>bwKCIt9q(a#T~iStwhz;VQmFVM+xqlo_Fr zOKFUYmkOroFQs95!7pw=2G5cumSU5MO->u3;+e~SM^UEN)_d+OLTj_zi(a=nL%p41 zMup22Cd7~jS)!zLi^RUurTF=b{uW4!!|mbhk*V(Y%!8xzzNI}vghe^SU?ngXe{4mR z6qgo?=k|2li(Ucs)fS#@EbCbIo!8fLPi=m0JQDePBd>FLQ!@}36^gz|(HPk;p0+~) zYv+tca@Po4qfG4{6ON6$&+y5zq+`!_XYl>J=%RS^4oHcTmK4Q{YHET8XRlOI0k$E3 z+i`sNK_+tZcVWZavDiqlm-Av873%=3rh3WVE&j3u2l8LTTWj`W!L(tplSfnIHK?X< z_3y6b;13e>qE|q6`dBz~p!@mxK5@Kda7;fg&*JUcIb+;o3g%DX?V*)9yxqQNGH;o8 z@7COP#Sb>_uzLqQeyJ9HW^IPxxX;0%gKBkp-evBUS3o*+!4Vh%XWflQ0_CrKI zM;sghm&N#R^LWVT6SXLi_Q)1ipZq%!cT~Ou(lJV`(!gmhr*-%3B>gDl*PVo&c*Vhy za5Yu`TRa}}`_d$qD``Ww@W0NG|JP2o)JnG0Hd<=$Wul{csC%(UETMRef~&#ssChi} YH+|S+8l5-Cw*UYD07*qoM6N<$f=BW3$^ZZW diff --git a/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png deleted file mode 100644 index 238e49352fcc1d28d8eae00e884f1bdc19d70a5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2435 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 BtStZl diff --git a/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png deleted file mode 100644 index 3a0c2c4a59cd509eddd8a55b3a892d40539abce5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 981 zcmV;`11kK9P)~ajK+hWy?F89#fuv6KH?RloD?51 zR`G!-5{x1$p+!q6v}~8!Zs~LD?3h#r+G}kH2&CHC zAXt-w*v90CN=+)5vB?n31`USB{MfvF32ya#qGLr01**#};KQ?2T#^xDN!))kiaqP< z(fQ;f+Ux9efmLOupMt3v#AFl-mA)|4t0&gUMBU_hY*P1$77u9wXwze-t zG9}V1%gj1zYpF>K?)z-6u$V+99xi-2DAj71bZV?`uAqJYOcWbQg-&o`eD-jpXd0*! zWWdmF!XM}2X!S3U9Ge?QkBlN>%z@m`uY5WCmXxn zGo1ZCH=avP6^8bVgy7`IsU>o^f>4H0pvYK;bjVw1iu_OtR%)Qom5_Z1E*zACwPqke zUI3~10zye8Qk$jyg*^X2{_1_o6se%lTgl;`mIe9)pfGLPRF!W$00000NkvXXu0mjf D5#-(M diff --git a/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png deleted file mode 100644 index 65c6636ef35c490a1b94c2446068eb2350ae2ac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2376 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 YH+|S+8l5-Cw*UYD07*qoM6N<$f=BW3$^ZZW diff --git a/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index fdcdb734303994f2b7baa1755acf033cdadf4d08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3381 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 diff --git a/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png deleted file mode 100644 index 8271a4d19d1ba643d5de46125bd60dd86b18e090..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3951 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 diff --git a/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png deleted file mode 100644 index 6c94b517e1ab693243dbe60eab98cb7870b3f5dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4684 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 AXaE2J diff --git a/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index f0889b127623fda9d2941cd95625da74d7153238..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4888 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 diff --git a/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png deleted file mode 100644 index 1b3650e914bc4567baf34310266338e0af8a25c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2959 zcmV;A3vl#_P)e256+V)zU9x0L@*-QtOATf=V`Iy^WE&e$PyFL%Bu@pIq*Tad&J}Q5>?>PgjA*4&C2uvm*R~RGLsIUo%!k#rMey?b&ERl( z(q(E8GDgr>XK6qw5zzg2&UDkzi3ht+cT<9L#e7&ZzZl;Ayf+^s*J_w|_d2F(u842?PCz6X{BNGxW-**XQxEmOdy zu8~xm8itGzv}tiE@OfOizb6iH4#nQH-SF(g6_CT_QZJek1YsSsWr>dNU+Wu%#tu`$ z_v#;Uz?qgISYD%nM~GOza_AbEVki}oLD~sgU0Vo6N)g@P^;t*K_uGH2ml7o8^N1If z!5=?vOZuL-L)r;?`u=kIJ4|%v@C8HC_dDJ+5G2-rJJt@a7>6v0Agu(Ukj^23iujO_ z6YJRPb{O|eh_y;Cq;=5;jmZ;#E2Nbm>|quM&-bP5zErFqB4SO1|4H(UNlB1W%BMn# zKyhyBF{kX_DAvcC24U5_LYO~INoNR}$urV{v=Owiu7nCH0>@IR#vXD{BnZc6TbGu> zj=fDOe+D8hg6cF@C=ibWP${{+o>cSuprK)i?t2FfuvX_z)W(S5ILvVJl#`Yb`7SrP ze{408h196WjdDUPH>UP+5mX^}K~-*SRj_%mmu$>_wLG4u#E#Amy?=k6Dzj$c43wt7)49r@**WTi3q>-(U%|;p|@XFg~KqeNzbL$q+Ht#iDgFVNa z;Fr%l2&HN{*qq}*@8PkT7%k%RQcIA2zyd2~GxIxbeG~J;TD6Q4)HgIr3DRkD;raCo zA)j~$i%s{>gt{4o9EFq~=gCF1jhehXi`B$)sb1+1~bNv(O;!Z z1ncS<&$-^mtY^)uET9__gOH1bv<;s((Tn$zaKO+l%4bLvkb*PxKC{ZzbSq(>d4qW- zYXhR);3J5TefV5!#CP%7O^g=Z!iy3PG3=#E(lZyX8=-5!3^R$xu*UV?m?--$sW4e@zHO$!L&jJ{Q6&~Xo$V>ok!u}1r^ZJGYpTvv@fD9 zpT71KAyO9LL5vNiF*^*A@XeQtX-DY|x0r|WdTH9{$!JiH_hMi~Ij#`~?;=i3l zw*)k82Lek9YJ-}wp|yw6D$InK;Q~7?5~vqpM#~WfolkhE(bhi(_mnXNvAu($Efe!; z>PDlG3^s$^^bsT$GLN)6gFOg|9I-fPErkLd2&>QA&bJ!ixz`WFl9?s2>xIXH+VtG; z5u{-}sI_;3Ak-gk40ClJ%MkDs+Msg@6NH%zha6I(3tjz8h@s|Sn4zc|NRL%%^C4fx z5QHy}5DOR&vWIw(I#&Ys%`T-i(8czFp#NCCsvv0}YaYykfxtrY#)y?pub?O+0yXID z)!5e1ye=EvIQ)sSByoZUm`sK`bWuM*-Cr&d_zCJInt%kcB0A#pAd%05LW?%U)2nJJ zL7`yVVn+Mnmin;&4Z~y9L-5&X6P6uVexOIAXX*{HujP9z!@yIb7csR|!UXAknXFRF z5QH^HEvcCOLhaKbmY~l`^^EEEvYzpdNFqJAqJUQBXRZXVys{dEq5LipauzdmDws7* z6PDt;`k8RUq=1CoUZ8{F9k+wWX#=i+DO{5XF$?K6uRlw)`3VY6^{mSuZPe3^MQEC5 zvHfdxVFa;REc71eO+f^ynP+$UvTAG@EF2!|Fby*#H(`P-4ifjHPJgOz_r-i@HH}7Y zTwW7)eT|M0V!1>}|1Zj8UJkPp4lDXeh!p$Co}p7myhm+iVbHVu9>fwvY{O3MFvht8 zJMI9llSqhAmfVCHhFK-+K`cS);997>Pzf(?T}nsSnAO}K4_HY$=W&^71{{Oo|6K0G z^a&0&$K4*1@fbm0LA2+Ad1W9Xqj@YgF+2nR4-c^k55mIK8X=scfqIcZnjAqW)C(4s z&~@3x`$u`8Gg*I(7?VOo2h`}PyYhz2--M zIT|$7c=65SbS(9|Z?A$!7kvf3@#-OHY&F8$KidfNtBU-3$A&i>V%T{dafX*4ZWr~U zqzGy!1mW7${iJuXr?6LXN&>|eT^qecAr--Fq7xb=Gw{R_dEmGWQ!^fy7b^Vs#aaf> z$$Z}vX%u35%#Qd~a^|?ucTX%e@OYZ<9wL4Y4L=;neo6|Xl3ilAe}3r{W$I{xvtWkJWkC!Q6E(C7d42kRzm>`UTv zJ-0JSf{bI-)uSx|-AOcc#Qv#YBqT*pzu5uXb{-|;nDl?AbElB>vJY39Pdt$njh@JL z&16T?1mUUxSEd1vIei}x+)1Ql;SkGmuTTzNM|wUWxRXfP$|_f?CZ&UI%7t3W2;z{+ zm?tj)_eko#1G*cK(zSUU;Bh5+w7{AwNcqPL9C03STy{F~G!>9~f;b$K)kvtBy6M8) zWJg*)f5GJwu1pP{(ShiV?{cK=`yeh&`xZJPp3F$=2UJ)C^PblmFSyB>^gvE|6II7vLI04W-j$#HeuS zx&qwpwE)|P$^L%>vrHs+t8zoE$EZo~Sc^|vBue9=B!YzKOX)23nW|YL)$E3^7qE44R5eC!x3JH58KehG4bs>*n>b12$ zo<3cYNCPH&#qUBs$&CzAJL@kgsf*c@o_3Xx-U%W$1PD7`C=jJV>u8GX#-FN$rWa;FXnX>)|53=x=w95PIFOnS z(bXd<$^~@AEC`DkDvp*|e51d_%fe`=@>)nBA{kNTbjfbunrTMkI|0yl`oegq$I#PS zp-`Vgep3Gi{`(?Mic$c^Az>LI~e~slAJ#)4HT1XC@TXg)lV_bghcUB z^1?WH4kV0le~v*papqg$1AqcL`h255+|vq45F}TN$yRvSIJ25%uf9IyEAf&P&^TeQN3L#EoToE&r zW(zb<$CJ-|u!_L_(9>j=Wl&WiVwBZVyt!WcEc6c^eNoP6P`cGW*CwVG*{mfdd3j#M z9_}J7Ss(cJKf}eV>ha3s3%#$JUmcu^vlYyhCcyf$&ov2M@%|x}QnZ{di{tT}In1vRXXV!n>`^lQ#LA30WB?h@Iend1$)41M~okZO^}|Lj_Ws+T3_pf#tY+`8kQ7-PS!DR2kk9^K^5%VLVR91<@ZO>k%{Cut=oRC^u_ zajs)!KaEuuGgEDv0c`SkqmO@FD-P$68vJk0FAAo5@aeG@q-^|7-2-`xOj(n2Xf6W?INQva{pnh)#HnP8G zzIyz`+}_zah2T;@LUwo%v#2KHL?aWh55^UY76kk$MbwTkoe{-k9D`p))Q|HrpmbG6 zD?71WG01!W9bsFqxRCrV`M8H_?))IKTLfaK%|h6@fkE-Yh*&1hEwfll@gCbn3Y5*Hi2$Nr{6a0 zK$idRS5I1<^R!9cQ`Os_gP9+W*Jq`IKr3%1jOK;)Zl+_forV0SMWg$wlh;w%>X`I; znP*E6+BvRTpFzQe4CH2R0bg5V zzzk66@8!h{F)@yf_x?76dfg8TBzvw;w*a;Cx6AK|`d;g$nk182FFV&hNVnjvx2A#L zWd|5J+74}xMP>xP;Vk$4M9s%5OIbF%aTstCAgow!3s5|xp^*O%pU*Cx7T5{w)o@nJ z)S--ck^Zamm!Rkus@NFA84ucSZuKsIeQ#`y6CS?i^O!@Z22OFWhT=`i-RPA;2{vXj z*SZQ)#3VE{pM>YPa*SM!cFN-%{NbW}auTsEK^8kx2klb!~5^?@T5p&*}uHC@_VZILkh zAk^&Vh1;Cu?jL=%Xu?t{K^O0NU1taBMHtShw34dz#k#EHAEdk9>p|2~$6n+LX#O!Y z(s1bt4mMz**4DHAcnYODvKu=IW6^wxFFi8G;upF`QKtsoec&_F(LwV(yRQ?INVAN>x$iNPG`J1@VtKM#f8QI_XC z-)g*_&ze95X`>Y&kFme{PpDqoTLxF2fOgkxTKGyX2M`3iTdoRwbiw2%GzZQ9ihfwL zYx@lxEqb}vn&klAl>+y!8>_tk=}N!_@v*n=lDo+~epfPQo^R7%OQ7+u zL$Ud#Fw2QAW*3VQO_WYmuNFPh0%LvWsjkm{^250y!B{0hnDoa|k^a1teOsP89j&ue z-Mt59LlZE{cFRZ;E!IvQ+p}JWV0vo+^%)Rx=*E=3V)#Ji1DbT%`{}iq&A@Qts!g7t zhDDM%gDTS+2WP~GSWMuq-*HWR)BUksTWrRL_&4^_8WkFf4otk7rglsER?UvUtDrZE zN`lD(+#(_L&j6le{upNWr`5>N%{-PmZ!TfFX!Y8|R))us22+CE_nPm#7RmcpspWTH zTl@};!@s-6tv7)p)o#=8}>fc9l5+Od7OMCH{039Gx=8ZQe{J;%-x8B9ZAqQZOj9{^ab^86Rq{H7bo z1gUs`h5TPC7(^T$m)r3MCSMJ`}D4@Au`j!%JmtrL_6Pz@Cj8|dGD^(ug0PdfCtgcgef81m@4 zqId!D4MfRmIKuzxx7$?xy|3S;D-AVRuad|v*x!@gOJm$V@ydRl7s&=T|1cK#g)5;0 zqtgGp?dm?I)xjeMx?pc6LltJ7mIIAAg;r#D4iHz>o23(Ow(M^u%K^Zmjtbh=!}cs1 z0KGfe!b9BiijWIsha*vI=?lRZzo!B;TCOzuv=fe~VnGi=Le4RDQRPbE@4fmhQEMBt zJCGP(-LXpOS_xQd4JFBq|ISR46xL;hmkI^cnw7Hf+h8tO%hTg$uWw3`% zax*>)lGk-11>?l(VwOd-%HYWvF)Kud{nt>ZPYJ@l|Qe9hx_2-Y! zXuO6gl>|!Nl)I%hd>_n$)U^#70~*6I^}@Z5i_JZP#WOti>e>~H|n(5S(I9cxten%^mHmTa#BZ9OzI>8cOWXk!bkh z!_#S<2()G@rPc#9_#Bw%r;#Sk2qdk+dNZ!nc&&L+G*Rzf)Ks9TUQ`Od@iBe;I2RqA z`-kUF+c{+I{sU-O%*dYN?U6ZUnWe;I>O66^RKZXwZ4|Bu1P zkE>K#B!+6>1*bEg0n$XDuJpHrFLj^|iG3288oti(BHk1sae3i0awl2RFhiuwM@~j& zC#ojyi}4@HyRPA>b3uh+`w0E{A8bkv_D08HrX|wIQ!8b!orVQsgAX$kW3|WxNzZxf zG#QV0eZ(&c#V76L|Gemj!fFDG2sU-wQ+o2HYVV=A3;oOykM|Prv27R{HZM1gmG3lZNbH%8& zpnwGRCw9kOZ<&16FyIfK)!k9VY&dD=ma*V_TVdLBvxQwf6nw6nnsQjZ zSs{tp;U7oabBPv~vcPof#ph06$>dE2!zPt8>;0tDvGf(V0;AiWI_N}VP*arfDLMO+ z$hXdg{+LWR@w;t~4WZ6)uUmW{pS9~e(Fr%$CbUNJ0NZV?ho=#fij6OL73%!Vx-SN- zep|ktm4-~vZ5KUMA1Y{alULC2Kt6OYN3e_~H&Zlu!B(s-EiQ9STASIs93iK%roBn$ zndOnc+NlDDN&MjMa%c_W{vRZaqBPa(DOkRLz0R`uX+Nz{6+h!{JF`3KVVzpq6M8D9 z81yQKyEZQF>%YU??5vWUn}T$iTgL5r7*MYJ?`|Bi+$(Q<}RPet#cNfzx|XfSlVg?j)qkZvic;Rhm&M2&t(iA!9Nqn)VD~h zW^iO-K#Lj6h5I)71%`9sj$PRkTAef&!$R1?#oIf_QVaOLb2N-H{aw)CM30aP60AO- zpjaR0?}zKqc;cU9y6|B-!Dm%^}>$TJBi_?Y9i;yWJAQeM;kN z?IoT(mGo2f$jRn06^riVOei-Cs3p`&MJ2=-X(1E|X+sOVi_1#NQMj;Yt>NmNXjK)+ z508$H+L~fXg@rfY&amyStqwB6)VI#w_d2PbbOQzT4^xW-DdEw?6#y-PiFR zua^-Gxr%+bCjWC|*R<7_f@XAO{jhkm8PI!wWmLn~WQeG2G1b_<#K@U{tJ|=rI@W)P zbPGCiEI@cS0k3^oGZ-|_drI{qSSP0?QB}c zu_`|y`VoGm+evgWXFa-T`eCg;G{`;k{lAext8LW9e#{?1Sh_uuGE!2?btB2PW+SMP zq|!0#fom1xHcv5I9eCsD$qedU4@~s@t(ubV zvs*jE^uzFFR@ymW=wWR6^N~51zDaZ9)`kd-j5uRCP#!t08(R?x0l@jN$PjTXl6_JX zu^OuX57dnd&MmcarTzNH51B3&$qs<$CwmMRbu!6zv9`Ytq;t1b^6K&()sorQpQQwe zFF)qfuu*7X-EGec+*34J+v3@q`Z0cgZQ~&Z3~I@IM#Lb_jCy4D)n>t<2ZAd*?0{l? zI^)y!>Oh?}oY;DDu$@@_B!#P$CI$i$FR%sRRzkYy@!tCBdyzf>_|o!U&F!Uhgq|;! z3V=;P3)R*{8$FcS4}ss@weII)J&{SjZW#84DIi>__k&+>V1)oTFpEV3;Pne^7OZ+I zAko@R+HfYiR!G@?5Eh7F!GsOXOWHpnrZP%V3BuabKT?_t)g3rIsKeR=;J)biMpko` z|AR;uG@WSe?+2pR7pCsZgDWBq7}5)@InWq8xHee>U} bd)N1zx?SExV?N*fhi_@C>!He2Erb6D2jivm diff --git a/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png deleted file mode 100644 index 177b3c2978729443b8db7a6f4a0056390c4a12db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3233 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 OI)SFDo=S}pBJ_Xy`h8ab diff --git a/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/grocery_helper/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png deleted file mode 100644 index c9d7a11de01b31370e6a64a1ea7866d5d1364d1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6327 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 diff --git a/grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json deleted file mode 100644 index 0bedcf2..0000000 --- a/grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "LaunchImage.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md deleted file mode 100644 index 89c2725..0000000 --- a/grocery_helper/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Launch Screen Assets - -You can customize the launch screen with your own desired assets by replacing the image files in this directory. - -You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/grocery_helper/ios/Runner/Base.lproj/LaunchScreen.storyboard b/grocery_helper/ios/Runner/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index f2e259c..0000000 --- a/grocery_helper/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/grocery_helper/ios/Runner/Base.lproj/Main.storyboard b/grocery_helper/ios/Runner/Base.lproj/Main.storyboard deleted file mode 100644 index f3c2851..0000000 --- a/grocery_helper/ios/Runner/Base.lproj/Main.storyboard +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/grocery_helper/ios/Runner/Info.plist b/grocery_helper/ios/Runner/Info.plist deleted file mode 100644 index ecdb42c..0000000 --- a/grocery_helper/ios/Runner/Info.plist +++ /dev/null @@ -1,54 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - One Trip - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - grocery_helper - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - - NSCameraUsageDescription - So you may take a photo for your profile picture - - - diff --git a/grocery_helper/ios/Runner/Runner-Bridging-Header.h b/grocery_helper/ios/Runner/Runner-Bridging-Header.h deleted file mode 100644 index 308a2a5..0000000 --- a/grocery_helper/ios/Runner/Runner-Bridging-Header.h +++ /dev/null @@ -1 +0,0 @@ -#import "GeneratedPluginRegistrant.h" diff --git a/grocery_helper/lib/api/auth.dart b/grocery_helper/lib/api/auth.dart deleted file mode 100644 index 9824a75..0000000 --- a/grocery_helper/lib/api/auth.dart +++ /dev/null @@ -1,86 +0,0 @@ -import 'dart:convert'; - -import 'consts.dart'; -import 'package:http/http.dart' as http; - -class TokenSingleton { - static final TokenSingleton _instance = TokenSingleton._internal(); - String token = ""; - - factory TokenSingleton() { - return _instance; - } - - void setToken(String tok) { - token = tok; - } - - String getToken() { - return token; - } - - TokenSingleton._internal(); -} - -Future getToken(String username, String password) async { - const String requestURL = "$baseURL/auth/token"; - - final http.Response response = await http.post(Uri.parse(requestURL), - body: {"username": username, "password": password}); - - if (response.statusCode == 200) { - Map json = jsonDecode(response.body); - - final TokenSingleton s = TokenSingleton(); - s.setToken(json["token"]); - - return json["token"]; - } else { - return ""; - } -} - -Future testToken(String token) async { - const String requestURL = "$baseURL/auth/users/me"; - - final http.Response response = await http.get( - Uri.parse(requestURL), - headers: { - "Authorization": "Token $token", - }, - ); - - return response.statusCode == 200; -} - -Future signup( - String firstName, - String lastName, - String username, - String password, -) async { - const String requestURL = "$baseURL/auth/users/"; - - final http.Response response = await http.post( - Uri.parse(requestURL), - body: { - "first_name": firstName, - "last_name": lastName, - "username": username, - "password": password, - }, - ); - - if (response.statusCode == 201) { - return ""; - } - - Map errorBody = jsonDecode(response.body); - - List errors = []; - errorBody.forEach((key, value) { - errors.add("$key: ${value[0]}"); - }); - - return errors.join(", "); -} diff --git a/grocery_helper/lib/api/consts.dart b/grocery_helper/lib/api/consts.dart deleted file mode 100644 index 6fe171b..0000000 --- a/grocery_helper/lib/api/consts.dart +++ /dev/null @@ -1,3 +0,0 @@ -const String baseURL = "http://192.168.0.16:8000"; - -const int resultsPerPage = 4; diff --git a/grocery_helper/lib/api/models/homegroup.dart b/grocery_helper/lib/api/models/homegroup.dart deleted file mode 100644 index 20bf402..0000000 --- a/grocery_helper/lib/api/models/homegroup.dart +++ /dev/null @@ -1,72 +0,0 @@ -import 'dart:convert'; -import 'package:grocery_helper/api/auth.dart'; -import 'package:grocery_helper/api/consts.dart'; -import 'package:http/http.dart' as http; - -class Homegroup { - int id; - String name; - List recipes; - List users; - List inviteIDs; - - Homegroup({ - required this.id, - required this.name, - required this.recipes, - required this.users, - required this.inviteIDs, - }); - - factory Homegroup.fromJson(Map json) { - List recipes = - (json["recipes"] as List).map(((e) => e as int)).toList(); - List users = - (json["users"] as List).map(((e) => e as int)).toList(); - List inviteIDs = - (json["invites"] as List).map(((e) => e as int)).toList(); - - return Homegroup( - id: json["id"] as int, - name: json["name"] as String, - recipes: recipes, - users: users, - inviteIDs: inviteIDs, - ); - } - - static Future get(int id) async { - String requestURL = "$baseURL/api/homegroups/$id/"; - - String token = TokenSingleton().getToken(); - final http.Response response = await http.get( - Uri.parse(requestURL), - headers: {"Authorization": "Token $token"}, - ); - - if (response.statusCode == 200) { - Homegroup hg = Homegroup.fromJson(jsonDecode(response.body)); - return hg; - } else { - return null; - } - } - - static Future create(String title) async { - String requestURL = "$baseURL/api/homegroups/"; - - String token = TokenSingleton().getToken(); - final http.Response response = await http.post( - Uri.parse(requestURL), - headers: {"Authorization": "Token $token"}, - body: {"name": title}, - ); - - if (response.statusCode == 201) { - Homegroup hg = Homegroup.fromJson(jsonDecode(response.body)); - return hg; - } - - return null; - } -} diff --git a/grocery_helper/lib/api/models/homegroupinvite.dart b/grocery_helper/lib/api/models/homegroupinvite.dart deleted file mode 100644 index a507a45..0000000 --- a/grocery_helper/lib/api/models/homegroupinvite.dart +++ /dev/null @@ -1,70 +0,0 @@ -import 'dart:convert'; -import 'package:grocery_helper/api/auth.dart'; -import 'package:grocery_helper/api/consts.dart'; -import 'package:http/http.dart' as http; - -class HomegroupInvite { - int id; - int homegroupID; - int userID; - - HomegroupInvite({ - required this.id, - required this.homegroupID, - required this.userID, - }); - - factory HomegroupInvite.fromJson(Map json) { - return HomegroupInvite( - id: json["id"] as int, - homegroupID: json["homegroup"] as int, - userID: json["user"] as int, - ); - } - - static Future get(int id) async { - String requestURL = "$baseURL/api/groupinvites/$id/"; - String token = TokenSingleton().getToken(); - final http.Response response = await http.get( - Uri.parse(requestURL), - headers: {"Authorization": "Token $token"}, - ); - - if (response.statusCode == 200) { - return HomegroupInvite.fromJson(jsonDecode(response.body)); - } - - return null; - } - - static Future create(int homegroupID, int userID) async { - String requestURL = "$baseURL/api/groupinvites/"; - String token = TokenSingleton().getToken(); - final http.Response response = await http.post( - Uri.parse(requestURL), - headers: {"Authorization": "Token $token"}, - body: {"homegroup": "$homegroupID", "user": "$userID"}, - ); - - if (response.statusCode == 201) { - return HomegroupInvite.fromJson(jsonDecode(response.body)); - } - - return null; - } - - Future delete() async { - String requestURL = "$baseURL/api/groupinvites/$id/"; - String token = TokenSingleton().getToken(); - final http.Response response = await http.delete( - Uri.parse(requestURL), - headers: {"Authorization": "Token $token"}, - ); - - if (response.statusCode == 204) { - return true; - } - - return false; - } -} diff --git a/grocery_helper/lib/api/models/ingredient.dart b/grocery_helper/lib/api/models/ingredient.dart deleted file mode 100644 index 3bc131c..0000000 --- a/grocery_helper/lib/api/models/ingredient.dart +++ /dev/null @@ -1,28 +0,0 @@ -import 'package:grocery_helper/api/auth.dart'; -import 'package:grocery_helper/api/consts.dart'; -import 'package:http/http.dart' as http; - -class Ingredient { - int id; - String name; - bool inStock; - int contentType; - int objectID; - - Ingredient({ - required this.id, - required this.name, - required this.inStock, - required this.contentType, - required this.objectID, - }); - - factory Ingredient.fromJson(Map json) { - return Ingredient( - id: json["id"] as int, - name: json["name"] as String, - inStock: json["in_stock"] as bool, - contentType: json["content_type"] as int, - objectID: json["object_id"] as int); - } -} diff --git a/grocery_helper/lib/api/models/recipe.dart b/grocery_helper/lib/api/models/recipe.dart deleted file mode 100644 index 3118929..0000000 --- a/grocery_helper/lib/api/models/recipe.dart +++ /dev/null @@ -1,81 +0,0 @@ -import 'dart:convert'; - -import 'package:grocery_helper/api/auth.dart'; -import 'package:grocery_helper/api/consts.dart'; -import 'package:grocery_helper/api/models/homegroup.dart'; -import 'package:grocery_helper/api/models/ingredient.dart'; -import 'package:http/http.dart' as http; - -class Recipe { - int id; - int homegroup; - String name; - List ingredients; - - Recipe( - {required this.id, - required this.name, - required this.ingredients, - required this.homegroup}); - - factory Recipe.fromJson(Map json) { - List ingredients = []; - for (dynamic ingredient in json["ingredients"]) { - ingredients.add(Ingredient.fromJson(ingredient)); - } - return Recipe( - id: json["id"] as int, - homegroup: json["homegroup"] as int, - name: json["name"] as String, - ingredients: ingredients); - } - - static Future get(int id) async { - String requestURL = "$baseURL/api/recipes/$id/"; - - String token = TokenSingleton().getToken(); - final http.Response response = await http.get( - Uri.parse(requestURL), - headers: {"Authorization": "Token $token"}, - ); - - if (response.statusCode == 200) { - return Recipe.fromJson(jsonDecode(response.body)); - } - - return null; - } - - static Future> getList(int groupID) async { - Homegroup? group = await Homegroup.get(groupID); - if (group == null) { - return []; - } - - List recipes = []; - for (int recipeID in group.recipes) { - Recipe? recipe = await Recipe.get(recipeID); - if (recipe != null) { - recipes.add(recipe); - } - } - - return recipes; - } - - static Future create(String name, int group) async { - String requestURL = "$baseURL/api/recipes/"; - String token = TokenSingleton().getToken(); - final http.Response response = await http.post( - Uri.parse(requestURL), - headers: {"Authorization": "Token $token"}, - body: {"homegroup": "$group", "name": name}, - ); - - if (response.statusCode == 201) { - return Recipe.fromJson(jsonDecode(response.body)); - } - - return null; - } -} diff --git a/grocery_helper/lib/api/models/simpleuser.dart b/grocery_helper/lib/api/models/simpleuser.dart deleted file mode 100644 index 522faf3..0000000 --- a/grocery_helper/lib/api/models/simpleuser.dart +++ /dev/null @@ -1,89 +0,0 @@ -import 'dart:convert'; - -import 'package:grocery_helper/api/auth.dart'; -import 'package:grocery_helper/api/consts.dart'; -import 'package:http/http.dart' as http; - -class SearchResult { - List users; - String? next; - - SearchResult({required this.users, required this.next}); -} - -class SimpleUser { - int id; - String username; - String firstName; - String lastName; - String? imageUrl; - int? invite; - - SimpleUser({ - required this.id, - required this.username, - required this.firstName, - required this.lastName, - this.imageUrl, - }); - - factory SimpleUser.fromJson(Map json) { - return SimpleUser( - id: json["id"] as int, - username: json["username"] as String, - firstName: json["first_name"] as String, - lastName: json["last_name"] as String, - imageUrl: json["image"] as String?, - ); - } - - static Future get({int? id}) async { - String requestURL = "$baseURL/auth/users/${id ?? 'me'}"; - - String token = TokenSingleton().getToken(); - final http.Response response = await http.get( - Uri.parse(requestURL), - headers: {"Authorization": "Token $token"}, - ); - - if (response.statusCode == 200) { - SimpleUser u = SimpleUser.fromJson(jsonDecode(response.body)); - return u; - } else { - return null; - } - } - - static Future search(String query, int page) async { - // String requestURL = ""; - // if (url != null) { - // requestURL = url; - // } else if (query != null) { - // requestURL = "$baseURL/auth/users/?search=$query"; - // } else { - // return SearchResult(users: [], next: null); - // } - - String requestURL = "$baseURL/auth/users/?page=$page&search=$query"; - requestURL = requestURL.replaceAll(RegExp(r"\s+"), "+"); - - String token = TokenSingleton().getToken(); - final http.Response response = await http.get( - Uri.parse(requestURL), - headers: {"Authorization": "Token $token"}, - ); - - if (response.statusCode == 200) { - Map json = jsonDecode(response.body); - List users = []; - for (var userObject in json["results"]) { - SimpleUser u = SimpleUser.fromJson(userObject); - users.add(u); - } - - return SearchResult(users: users, next: json["next"] as String?); - } - - return SearchResult(users: [], next: null); - } -} diff --git a/grocery_helper/lib/api/models/user.dart b/grocery_helper/lib/api/models/user.dart deleted file mode 100644 index c9aad28..0000000 --- a/grocery_helper/lib/api/models/user.dart +++ /dev/null @@ -1,115 +0,0 @@ -import 'dart:convert'; - -import 'package:grocery_helper/api/auth.dart'; -import 'package:grocery_helper/api/consts.dart'; -import 'package:http/http.dart' as http; -import 'dart:io' show File; - -class User { - int id; - String username; - String firstName; - String lastName; - List homegroupInvites; - int? homegroup; - String? imageUrl; - - User({ - required this.id, - required this.username, - required this.firstName, - required this.lastName, - required this.homegroupInvites, - this.homegroup, - this.imageUrl, - }); - - factory User.fromJson(Map json) { - List invitesDynamic = json["homegroup_invites"]; - List invites = invitesDynamic.map((e) => e as int).toList(); - - return User( - id: json["id"] as int, - username: json["username"] as String, - firstName: json["first_name"] as String, - lastName: json["last_name"] as String, - homegroup: json["homegroup"] as int?, - imageUrl: json["image"] as String?, - homegroupInvites: invites, - ); - } - - static Future getMe() async { - String requestURL = "$baseURL/auth/users/me"; - - String token = TokenSingleton().getToken(); - final http.Response response = - await http.get(Uri.parse(requestURL), headers: { - "Authorization": "Token $token", - }); - - if (response.statusCode == 200) { - User u = User.fromJson(jsonDecode(response.body)); - return u; - } else { - return null; - } - } - - Future patchMe({ - String? firstName, - String? lastName, - int? homegroup, - }) async { - String requestURL = "$baseURL/auth/users/me"; - - Map body = {}; - if (firstName != null) { - body["first_name"] = firstName; - } - - if (lastName != null) { - body["last_name"] = lastName; - } - - if (homegroup != null) { - body["homegroup"] = "$homegroup"; - } - - String token = TokenSingleton().getToken(); - final http.Response response = await http.patch( - Uri.parse(requestURL), - headers: { - "Authorization": "Token $token", - }, - body: body, - ); - - if (response.statusCode == 200) { - return User.fromJson(jsonDecode(response.body)); - } - - return null; - } - - Future uploadImage(File file) async { - String requestURL = "$baseURL/auth/users/me"; - String token = TokenSingleton().getToken(); - - http.MultipartRequest request = - http.MultipartRequest("PATCH", Uri.parse(requestURL)); - - request.headers.addAll({"Authorization": "Token $token"}); - request.files.add(http.MultipartFile.fromBytes( - "image", file.readAsBytesSync(), - filename: file.path)); - - var multiresponse = await request.send(); - http.Response response = await http.Response.fromStream(multiresponse); - if (response.statusCode == 200) { - return User.fromJson(jsonDecode(response.body)); - } - - return null; - } -} diff --git a/grocery_helper/lib/main.dart b/grocery_helper/lib/main.dart deleted file mode 100644 index 052570e..0000000 --- a/grocery_helper/lib/main.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:grocery_helper/screens/home_screen.dart'; -import 'package:grocery_helper/screens/login_screen.dart'; -import 'package:grocery_helper/theme.dart'; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatelessWidget { - const MyApp({super.key}); - - // This widget is the root of your application. - @override - Widget build(BuildContext context) { - return MaterialApp( - title: 'Grocery Helper', - theme: lightTheme, - darkTheme: darkTheme, - themeMode: ThemeMode.system, - debugShowCheckedModeBanner: false, - initialRoute: "/login", - routes: { - "/login": (context) => const LoginScreen(), - "/home": (context) => ScrollConfiguration( - behavior: MyBehavior(), child: const HomeScreen()) - }, - ); - } -} diff --git a/grocery_helper/lib/pages/profile_page/profile_page.dart b/grocery_helper/lib/pages/profile_page/profile_page.dart deleted file mode 100644 index 1d2b372..0000000 --- a/grocery_helper/lib/pages/profile_page/profile_page.dart +++ /dev/null @@ -1,164 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_secure_storage/flutter_secure_storage.dart'; -import 'package:grocery_helper/api/models/homegroup.dart'; -import 'package:grocery_helper/widgets/text_entry_dialog.dart'; -import 'package:grocery_helper/pages/profile_page/widgets/homegroup_card_widget.dart'; -import 'package:grocery_helper/pages/profile_page/widgets/profile_card_widget.dart'; -import 'package:grocery_helper/api/models/user.dart'; -import 'package:image_picker/image_picker.dart'; -import 'dart:io' show Platform, File; - -class ProfilePage extends StatefulWidget { - const ProfilePage({super.key}); - - @override - State createState() => _ProfilePageState(); -} - -class _ProfilePageState extends State { - late User _userInfo; - late Future _isLoaded; - - Future _loadProfile() async { - User? userInfo = await User.getMe(); - - if (userInfo != null) { - _userInfo = userInfo; - return true; - } - - return false; - } - - void showError(String text) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - backgroundColor: Theme.of(context).colorScheme.error, - content: Text(text), - action: SnackBarAction( - textColor: Theme.of(context).colorScheme.onError, - label: "Dismiss", - onPressed: () => ScaffoldMessenger.of(context).hideCurrentSnackBar(), - ), - ), - ); - } - - @override - void initState() { - super.initState(); - _isLoaded = _loadProfile(); - } - - @override - Widget build(BuildContext context) { - return FutureBuilder( - future: _isLoaded, - builder: (context, snapshot) { - if (snapshot.hasError) { - return Text(snapshot.error.toString()); - } else if (snapshot.hasData && - snapshot.connectionState == ConnectionState.done) { - return Scrollbar( - child: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - ProfileCard( - userInfo: _userInfo, - onTapPhoto: () async { - if (Platform.isAndroid) { - final ImagePicker picker = ImagePicker(); - final XFile? photo = await picker.pickImage( - source: ImageSource.camera, - imageQuality: 70, - maxWidth: 400, - maxHeight: 400); - - if (photo == null) { - return; - } - File file = File(photo.path); - - User? response = await _userInfo.uploadImage(file); - if (response != null) { - setState(() { - _userInfo = response; - }); - } - } else { - showError( - "This feature is only available on Android"); - } - }, - onLogout: () async { - const storage = FlutterSecureStorage(); - await storage.delete(key: "token"); - - if (mounted) { - Navigator.pushReplacementNamed(context, "/login"); - } - }, - ), - const SizedBox(height: 12), - _userInfo.homegroup == null - ? CreateJoinHomegroup( - invites: _userInfo.homegroupInvites, - onJoin: (id) async { - User? response = - await _userInfo.patchMe(homegroup: id); - - if (response != null) { - setState(() { - _userInfo = response; - }); - } - }, - onCreate: () async { - String? name = await textEntryDialog( - context, - "Create Homegroup", - "Homegroup Name", - defaultValue: "${_userInfo.username}'s Kitchen", - ); - if (name == null) { - return; - } - - if (name == "") { - showError("Homegroup name must not be empty"); - return; - } - - Homegroup? hg = await Homegroup.create(name); - if (hg == null) { - return; - } - - User? response = - await _userInfo.patchMe(homegroup: hg.id); - - if (response != null) { - setState(() { - _userInfo = response; - }); - } - }, - ) - : EditHomegroup( - homegroupID: _userInfo.homegroup!, - ) - ], - ), - ), - ), - ); - } else { - return const CircularProgressIndicator(); - } - }, - ); - } -} diff --git a/grocery_helper/lib/pages/profile_page/widgets/homegroup_card_widget.dart b/grocery_helper/lib/pages/profile_page/widgets/homegroup_card_widget.dart deleted file mode 100644 index 08d0d8c..0000000 --- a/grocery_helper/lib/pages/profile_page/widgets/homegroup_card_widget.dart +++ /dev/null @@ -1,360 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:grocery_helper/api/models/homegroup.dart'; -import 'package:grocery_helper/api/models/homegroupinvite.dart'; -import 'package:grocery_helper/api/models/simpleuser.dart'; -import 'package:grocery_helper/pages/profile_page/widgets/invite_homegroup_dialog.dart'; -import 'package:grocery_helper/pages/profile_page/widgets/user_chip.dart'; -import 'package:grocery_helper/theme.dart'; - -class CreateJoinHomegroup extends StatefulWidget { - final List invites; - final Function(int id) onJoin; - final Function() onCreate; - - const CreateJoinHomegroup({ - super.key, - required this.invites, - required this.onJoin, - required this.onCreate, - }); - - @override - State createState() => _CreateJoinHomegroupState(); -} - -class _CreateJoinHomegroupState extends State { - late Future _isLoaded; - final List _invitedGroups = []; - - Future _loadInvites() async { - for (int id in widget.invites) { - Homegroup? hg = await Homegroup.get(id); - - if (hg != null) { - _invitedGroups.add(hg); - } - } - - return true; - } - - @override - void initState() { - super.initState(); - _isLoaded = _loadInvites(); - } - - @override - Widget build(BuildContext context) { - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Card( - elevation: 10, - margin: EdgeInsets.zero, - shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.vertical( - top: Radius.circular(10), bottom: Radius.zero), - ), - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "Create or Join a Homegroup", - style: Theme.of(context).textTheme.titleMedium, - ), - const Divider(), - widget.invites.isEmpty - ? const Text( - "You have not been invited to join any homegroups") - : Center( - child: FutureBuilder( - future: _isLoaded, - builder: ((context, snapshot) { - if (snapshot.hasError) { - return Text(snapshot.error.toString()); - } else if (snapshot.hasData && - snapshot.connectionState == - ConnectionState.done) { - return ListView.separated( - shrinkWrap: true, - itemBuilder: (context, index) { - return JoinRow( - hg: _invitedGroups[index], - onJoin: (id) => widget.onJoin(id), - ); - }, - separatorBuilder: (context, index) => - const Divider(), - itemCount: _invitedGroups.length); - } else { - return const CircularProgressIndicator(); - } - }), - ), - ), - ], - ), - ), - ), - ElevatedButton( - style: bottomButtonStyle, - onPressed: () => widget.onCreate(), - child: const Text("Create Homegroup"), - ) - ], - ); - } -} - -class JoinRow extends StatelessWidget { - final Homegroup hg; - final Function(int id) onJoin; - const JoinRow({super.key, required this.hg, required this.onJoin}); - - @override - Widget build(BuildContext context) { - return Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text(hg.name), - ElevatedButton( - style: ButtonStyle( - backgroundColor: MaterialStatePropertyAll( - Theme.of(context).colorScheme.secondary), - foregroundColor: MaterialStatePropertyAll( - Theme.of(context).colorScheme.onSecondary)), - onPressed: () => onJoin(hg.id), - child: Row( - children: const [ - Text("Join"), - SizedBox(width: 4), - Icon(Icons.check) - ], - ), - ) - ], - ); - } -} - -class EditHomegroup extends StatefulWidget { - final int homegroupID; - - const EditHomegroup({super.key, required this.homegroupID}); - - @override - State createState() => _EditHomegroupState(); -} - -class _EditHomegroupState extends State { - late Future _isLoaded; - Homegroup? _homegroup; - List _groupUsers = []; - List _groupInvites = []; - Map _groupInviteUsers = {}; - - Future _loadHomegroup() async { - Homegroup? hg = await Homegroup.get(widget.homegroupID); - if (hg == null) { - return false; - } - - _homegroup = hg; - _groupUsers = []; - _groupInvites = []; - _groupInviteUsers = {}; - - for (int id in hg.users) { - SimpleUser? u = await SimpleUser.get(id: id); - - if (u != null) { - _groupUsers.add(u); - } - } - - for (int id in hg.inviteIDs) { - HomegroupInvite? invite = await HomegroupInvite.get(id); - if (invite == null || hg.users.contains(invite.userID)) { - continue; - } - - SimpleUser? u = await SimpleUser.get(id: invite.userID); - - if (u != null) { - _groupInvites.add(invite); - _groupInviteUsers[invite] = u; - } - } - - return true; - } - - @override - void initState() { - super.initState(); - _isLoaded = _loadHomegroup(); - } - - @override - Widget build(BuildContext context) { - final TextStyle textstylebase = Theme.of(context).textTheme.titleSmall!; - - final TextStyle textstyle = TextStyle( - fontSize: textstylebase.fontSize, - fontWeight: textstylebase.fontWeight, - color: textstylebase.color, - decorationColor: textstylebase.color, - decorationStyle: TextDecorationStyle.solid, - decoration: TextDecoration.underline); - - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Card( - elevation: 10, - margin: EdgeInsets.zero, - shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.vertical( - top: Radius.circular(10), bottom: Radius.zero), - ), - child: Padding( - padding: const EdgeInsets.all(8.0), - child: FutureBuilder( - future: _isLoaded, - builder: (context, snapshot) { - if (snapshot.hasError) { - return Center(child: Text(snapshot.error.toString())); - } else if (snapshot.hasData && - snapshot.connectionState == ConnectionState.done) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - _homegroup!.name, - style: Theme.of(context).textTheme.titleLarge, - ), - const Divider(), - Text( - "Users", - style: textstyle, - ), - const SizedBox(height: 8), - ListView.separated( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemCount: _groupUsers.length, - separatorBuilder: (context, index) => const Divider(), - itemBuilder: (context, index) { - return UserRow( - user: _groupUsers[index], - onButton: (id) {}, - buttonText: "Kick", - ); - }, - ), - const Divider(), - Text( - "Pending Invites", - style: textstyle, - ), - const SizedBox(height: 8), - _groupInvites.isEmpty - ? const Text("None") - : ListView.separated( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemBuilder: (context, index) { - return UserRow( - user: - _groupInviteUsers[_groupInvites[index]]!, - onButton: (id) async { - bool success = - await _groupInvites[index].delete(); - if (success) { - setState(() { - _isLoaded = _loadHomegroup(); - }); - } - }, - buttonText: "Cancel", - ); - }, - separatorBuilder: (context, index) => - const Divider(), - itemCount: _groupInvites.length) - ], - ); - } else { - return const Center(child: CircularProgressIndicator()); - } - }, - ), - ), - ), - ElevatedButton( - style: bottomButtonStyle, - onPressed: () async { - List? selectedIDs = await inviteHomegroupDialog(context); - - if (selectedIDs == null) { - return; - } - - for (int id in selectedIDs) { - await HomegroupInvite.create(_homegroup!.id, id); - } - - setState(() { - _isLoaded = _loadHomegroup(); - }); - }, - child: const Text("Invite"), - ) - ], - ); - } -} - -class UserRow extends StatelessWidget { - final SimpleUser user; - final Function(int id) onButton; - final String buttonText; - const UserRow( - {super.key, - required this.user, - required this.onButton, - required this.buttonText}); - - @override - Widget build(BuildContext context) { - final ButtonStyle buttonStyle = ButtonStyle( - padding: const MaterialStatePropertyAll( - EdgeInsets.symmetric(vertical: 8, horizontal: 4)), - backgroundColor: - MaterialStatePropertyAll(Theme.of(context).colorScheme.secondary), - foregroundColor: MaterialStatePropertyAll( - Theme.of(context).colorScheme.onSecondary)); - - return Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - SmallUserChip(user: user), - ElevatedButton( - style: buttonStyle, - onPressed: () => onButton(user.id), - child: Row( - children: [ - Text(buttonText), - const SizedBox(width: 4), - const Icon(Icons.close) - ], - ), - ) - ], - ); - } -} diff --git a/grocery_helper/lib/pages/profile_page/widgets/invite_homegroup_dialog.dart b/grocery_helper/lib/pages/profile_page/widgets/invite_homegroup_dialog.dart deleted file mode 100644 index 2836236..0000000 --- a/grocery_helper/lib/pages/profile_page/widgets/invite_homegroup_dialog.dart +++ /dev/null @@ -1,163 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:grocery_helper/api/models/simpleuser.dart'; -import 'package:grocery_helper/pages/profile_page/widgets/user_chip.dart'; -import 'package:grocery_helper/theme.dart'; -import 'package:grocery_helper/widgets/pagination_listview.dart'; - -class InviteHomegroupDialog extends StatefulWidget { - const InviteHomegroupDialog({super.key}); - - @override - State createState() => _InviteHomegroupDialogState(); -} - -class _InviteHomegroupDialogState extends State { - final TextEditingController _searchController = TextEditingController(); - ListViewState _listState = ListViewState.inactive; - List selectedIDs = []; - - @override - Widget build(BuildContext context) { - return Card( - margin: EdgeInsets.zero, - child: Padding( - padding: const EdgeInsets.all(8), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "Invite to Homegroup", - style: Theme.of(context).textTheme.titleMedium, - ), - const Divider(), - TextFormField( - controller: _searchController, - textInputAction: TextInputAction.search, - onFieldSubmitted: (value) { - setState(() { - _listState = ListViewState.changed; - }); - }, - onChanged: (value) { - setState(() { - _listState = ListViewState.inactive; - }); - }, - decoration: InputDecoration( - label: const Text("Search"), - isDense: true, - suffix: IconButton( - onPressed: () { - setState(() { - _listState = ListViewState.changed; - }); - - // https://flutterigniter.com/dismiss-keyboard-form-lose-focus/ - FocusScopeNode currentFocus = FocusScope.of(context); - if (!currentFocus.hasPrimaryFocus) { - currentFocus.unfocus(); - } - }, - icon: const Icon(Icons.search), - ), - ), - ), - const SizedBox(height: 8), - LayoutBuilder( - builder: (builder, constraints) { - return ConstrainedBox( - constraints: BoxConstraints.expand( - width: constraints.maxWidth - 8, - height: 160, - ), - child: PaginationListView( - state: _listState, - shrinkWrap: true, - itemBuilder: (context, data) { - return GestureDetector( - behavior: HitTestBehavior.translucent, - onTap: () { - setState(() { - // _ready = false; - _listState = ListViewState.inUse; - if (selectedIDs.contains(data.id)) { - selectedIDs.remove(data.id); - } else { - selectedIDs.add(data.id); - } - }); - }, - child: Container( - padding: const EdgeInsets.all(4), - color: selectedIDs.contains(data.id) - ? Theme.of(context).colorScheme.secondary - : null, - child: Row( - mainAxisSize: MainAxisSize.max, - children: [ - SmallUserChip( - user: data, - radius: 20, - textColor: selectedIDs.contains(data.id) - ? Theme.of(context).colorScheme.onSecondary - : null, - ), - ], - ), - ), - ); - }, - seperatorBuilder: (context, data) { - return const Divider(); - }, - dataProvider: (int page) async { - SearchResult result = - await SimpleUser.search(_searchController.text, page); - List users = List.from(result.users); - - if (result.next == null) { - users.add(null); - } - - return users; - }, - ), - ); - }, - ), - Padding( - padding: const EdgeInsets.only(top: 8), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - ElevatedButton( - onPressed: () => Navigator.pop(context), - child: const Text("Cancel"), - ), - ElevatedButton( - onPressed: () => Navigator.pop(context, selectedIDs), - child: const Text("Done")), - ], - ), - ) - ], - ), - ), - ); - } -} - -Future?> inviteHomegroupDialog(BuildContext context) async { - List? selectedIDs = await showDialog( - context: context, - builder: (context) { - return Dialog( - child: ScrollConfiguration( - behavior: MyBehavior(), child: const InviteHomegroupDialog()), - ); - }, - ); - - return selectedIDs; -} diff --git a/grocery_helper/lib/pages/profile_page/widgets/profile_card_widget.dart b/grocery_helper/lib/pages/profile_page/widgets/profile_card_widget.dart deleted file mode 100644 index 2cc59c0..0000000 --- a/grocery_helper/lib/pages/profile_page/widgets/profile_card_widget.dart +++ /dev/null @@ -1,86 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:grocery_helper/api/models/user.dart'; -import 'package:flutter_svg_provider/flutter_svg_provider.dart'; -import 'package:grocery_helper/theme.dart'; - -class ProfileCard extends StatelessWidget { - final User userInfo; - final Function() onTapPhoto; - final Function() onLogout; - const ProfileCard( - {super.key, - required this.userInfo, - required this.onTapPhoto, - required this.onLogout}); - - @override - Widget build(BuildContext context) { - return Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Card( - elevation: 10, - margin: EdgeInsets.zero, - shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.vertical( - top: Radius.circular(10), bottom: Radius.zero), - ), - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - mainAxisSize: MainAxisSize.max, - children: [ - CircleAvatar( - backgroundColor: Theme.of(context).colorScheme.primary, - radius: 42, - child: CircleAvatar( - radius: 40, - backgroundImage: userInfo.imageUrl != null - ? NetworkImage(userInfo.imageUrl!) - : Image( - image: Svg('assets/images/person.svg', - color: Theme.of(context) - .colorScheme - .onPrimaryContainer), - ).image, - backgroundColor: - Theme.of(context).colorScheme.primaryContainer, - // https://github.com/flutter/flutter/issues/42901#issuecomment-708050484 - child: Material( - shape: const CircleBorder(), - clipBehavior: Clip.hardEdge, - color: Colors.transparent, - child: InkWell( - onTap: () => onTapPhoto(), - ), - ), - ), - ), - Padding( - padding: const EdgeInsets.only(left: 12), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "${userInfo.firstName} ${userInfo.lastName}", - style: Theme.of(context).textTheme.titleMedium, - ), - Text("@${userInfo.username}", - style: Theme.of(context).textTheme.titleLarge), - ], - ), - ) - ], - ), - ), - ), - ElevatedButton( - style: bottomButtonStyle, - onPressed: () => onLogout(), - child: const Text("Log out"), - ) - ], - ); - } -} diff --git a/grocery_helper/lib/pages/profile_page/widgets/user_chip.dart b/grocery_helper/lib/pages/profile_page/widgets/user_chip.dart deleted file mode 100644 index 2b4147d..0000000 --- a/grocery_helper/lib/pages/profile_page/widgets/user_chip.dart +++ /dev/null @@ -1,51 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_svg_provider/flutter_svg_provider.dart'; -import 'package:grocery_helper/api/models/simpleuser.dart'; - -class SmallUserChip extends StatelessWidget { - final SimpleUser user; - final double? radius; - final Color? textColor; - const SmallUserChip( - {super.key, required this.user, this.radius, this.textColor}); - - @override - Widget build(BuildContext context) { - double baseRadius = radius ?? 30; - return Row( - children: [ - CircleAvatar( - radius: baseRadius, - backgroundColor: Theme.of(context).colorScheme.primary, - child: CircleAvatar( - radius: baseRadius - 2, - backgroundColor: Theme.of(context).colorScheme.primaryContainer, - backgroundImage: user.imageUrl != null - ? NetworkImage(user.imageUrl!) - : Image( - image: Svg('assets/images/person.svg', - color: - Theme.of(context).colorScheme.onPrimaryContainer), - ).image, - ), - ), - const SizedBox(width: 8), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "${user.firstName} ${user.lastName}", - style: TextStyle( - color: textColor ?? Theme.of(context).colorScheme.onSurface), - ), - Text( - "@${user.username}", - style: TextStyle( - color: textColor ?? Theme.of(context).colorScheme.onSurface), - ), - ], - ) - ], - ); - } -} diff --git a/grocery_helper/lib/pages/recipes_page/recipes_page.dart b/grocery_helper/lib/pages/recipes_page/recipes_page.dart deleted file mode 100644 index 1a5feef..0000000 --- a/grocery_helper/lib/pages/recipes_page/recipes_page.dart +++ /dev/null @@ -1,132 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:grocery_helper/api/models/homegroup.dart'; -import 'package:grocery_helper/api/models/recipe.dart'; -import 'package:grocery_helper/api/models/user.dart'; -import 'package:grocery_helper/pages/recipes_page/widgets/recipe_card_widget.dart'; -import 'package:grocery_helper/widgets/text_entry_dialog.dart'; - -class RecipesPage extends StatefulWidget { - const RecipesPage({super.key}); - - @override - State createState() => _RecipesPageState(); -} - -class _RecipesPageState extends State { - late Future> _recipes; - late User _userInfo; - - Future> _fetchList() async { - User? userInfo = await User.getMe(); - if (userInfo == null || userInfo.homegroup == null) { - return []; - } - _userInfo = userInfo; - - List recipes = await Recipe.getList(_userInfo.homegroup!); - return recipes; - } - - @override - void initState() { - super.initState(); - _recipes = _fetchList(); - } - - @override - Widget build(BuildContext context) { - return FutureBuilder( - future: _recipes, - builder: (context, snapshot) { - if (snapshot.hasError) { - return Text(snapshot.error.toString()); - } else if (snapshot.hasData && - snapshot.connectionState == ConnectionState.done) { - return RecipeList( - recipes: snapshot.data!, homegroup: _userInfo.homegroup!); - } else { - return const Center(child: CircularProgressIndicator()); - } - }, - ); - } -} - -class RecipeList extends StatefulWidget { - final List recipes; - final int homegroup; - const RecipeList({super.key, required this.recipes, required this.homegroup}); - - @override - State createState() => _RecipeListState(); -} - -class _RecipeListState extends State { - int? _expandedCard; - - void showError(String text) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - backgroundColor: Theme.of(context).colorScheme.error, - content: Text(text), - action: SnackBarAction( - textColor: Theme.of(context).colorScheme.onError, - label: "Dismiss", - onPressed: () => ScaffoldMessenger.of(context).hideCurrentSnackBar(), - ), - ), - ); - } - - @override - Widget build(BuildContext context) { - return Stack( - children: [ - ListView.separated( - padding: const EdgeInsets.all(8), - itemCount: widget.recipes.length, - separatorBuilder: (context, index) => const SizedBox(height: 12), - itemBuilder: (context, index) => RecipeCard( - recipe: widget.recipes[index], - isExpanded: _expandedCard == index, - onTap: () { - setState(() { - if (_expandedCard == index) { - _expandedCard = null; - } else { - _expandedCard = index; - } - }); - }, - ), - ), - Align( - alignment: Alignment.bottomRight, - child: Padding( - padding: const EdgeInsets.all(8.0), - child: FloatingActionButton.extended( - onPressed: () async { - String? name = - await textEntryDialog(context, "Recipe Name", "Recipe"); - - if (name == null) { - return; - } - - if (name == "") { - showError("Recipe name cannot be empty"); - return; - } - - Recipe? created = await Recipe.create(name, widget.homegroup); - }, - label: Row( - children: const [Icon(Icons.note_add), Text("New Recipe")], - ), - ), - ), - ) - ], - ); - } -} diff --git a/grocery_helper/lib/pages/recipes_page/widgets/recipe_card_widget.dart b/grocery_helper/lib/pages/recipes_page/widgets/recipe_card_widget.dart deleted file mode 100644 index b9b6abc..0000000 --- a/grocery_helper/lib/pages/recipes_page/widgets/recipe_card_widget.dart +++ /dev/null @@ -1,133 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:grocery_helper/api/models/ingredient.dart'; -import 'package:grocery_helper/api/models/recipe.dart'; -import 'package:grocery_helper/theme.dart'; -import 'package:grocery_helper/widgets/text_entry_dialog.dart'; - -class RecipeCard extends StatelessWidget { - final Recipe recipe; - final bool isExpanded; - final Function() onTap; - const RecipeCard({ - super.key, - required this.recipe, - required this.isExpanded, - required this.onTap, - }); - - @override - Widget build(BuildContext context) { - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Card( - elevation: 10, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.vertical( - top: const Radius.circular(10), - bottom: isExpanded ? Radius.zero : const Radius.circular(10)), - ), - margin: EdgeInsets.zero, - child: GestureDetector( - onTap: onTap, - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Padding( - padding: const EdgeInsets.all(8), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Expanded( - child: Text( - recipe.name, - style: Theme.of(context).textTheme.headlineSmall, - ), - ), - AnimatedRotation( - duration: const Duration(milliseconds: 200), - turns: isExpanded ? 0.5 : 0, - child: const Icon(Icons.expand_more, size: 30), - ), - ], - ), - ), - AnimatedSize( - duration: const Duration(milliseconds: 200), - child: isExpanded - ? IngredientSection(ingredients: recipe.ingredients) - : const SizedBox(), - ), - ], - ), - ), - ), - AnimatedSize( - duration: const Duration(milliseconds: 200), - child: isExpanded - ? ElevatedButton( - style: bottomButtonStyle, - onPressed: () async { - String? name = await textEntryDialog( - context, "Ingredient Name", "Ingredient"); - }, - child: const Text("Add Ingredient"), - ) - : const SizedBox(), - ) - ], - ); - } -} - -class IngredientSection extends StatelessWidget { - final List ingredients; - const IngredientSection({super.key, required this.ingredients}); - - @override - Widget build(BuildContext context) { - final TextStyle ingredientStyle = Theme.of(context) - .textTheme - .bodyLarge! - .copyWith(color: Theme.of(context).colorScheme.onSurface); - - return Container( - color: Theme.of(context).colorScheme.surface, - child: ListView.separated( - padding: const EdgeInsets.all(8), - itemCount: (ingredients.length / 2).ceil(), - shrinkWrap: true, - separatorBuilder: (context, index) => Divider( - color: index % 2 == 0 - ? Theme.of(context).colorScheme.primary - : Theme.of(context).colorScheme.error, - ), - itemBuilder: (context, index) { - if (ingredients.length % 2 == 0 || - index * 2 <= ingredients.length - 2) { - return Row( - children: [ - Expanded( - child: Text( - ingredients[index * 2].name, - style: ingredientStyle, - ), - ), - Expanded( - child: Text(ingredients[index * 2 + 1].name, - style: ingredientStyle), - ) - ], - ); - } else { - return Row( - children: [ - Text(ingredients[index * 2].name, style: ingredientStyle), - ], - ); - } - }, - ), - ); - } -} diff --git a/grocery_helper/lib/pages/themetest.dart b/grocery_helper/lib/pages/themetest.dart deleted file mode 100644 index 9f9ef8e..0000000 --- a/grocery_helper/lib/pages/themetest.dart +++ /dev/null @@ -1,125 +0,0 @@ -import 'package:flutter/material.dart'; - -class ColorPage extends StatelessWidget { - const ColorPage({super.key}); - - @override - Widget build(BuildContext context) { - return GridView.count( - crossAxisCount: 3, - children: [ - // FIRST ROW - Container( - padding: const EdgeInsets.all(8), - color: Theme.of(context).colorScheme.primary, - child: Center( - child: Text( - "Primary", - style: TextStyle(color: Theme.of(context).colorScheme.onPrimary), - )), - ), - Container( - padding: const EdgeInsets.all(8), - color: Theme.of(context).colorScheme.secondary, - child: Center( - child: Text( - "Secondary", - style: TextStyle(color: Theme.of(context).colorScheme.onSecondary), - )), - ), - Container( - padding: const EdgeInsets.all(8), - color: Theme.of(context).colorScheme.tertiary, - child: Center( - child: Text( - "Tertiary", - style: TextStyle(color: Theme.of(context).colorScheme.onTertiary), - )), - ), - - // SECOND ROW - Container( - padding: const EdgeInsets.all(8), - color: Theme.of(context).colorScheme.primaryContainer, - child: Center( - child: Text( - "Primary Container", - style: TextStyle( - color: Theme.of(context).colorScheme.onPrimaryContainer), - )), - ), - Container( - padding: const EdgeInsets.all(8), - color: Theme.of(context).colorScheme.secondaryContainer, - child: Center( - child: Text( - "Secondary Container", - style: TextStyle( - color: Theme.of(context).colorScheme.onSecondaryContainer), - )), - ), - Container( - padding: const EdgeInsets.all(8), - color: Theme.of(context).colorScheme.tertiaryContainer, - child: Center( - child: Text( - "Tertiary Container", - style: TextStyle( - color: Theme.of(context).colorScheme.onTertiaryContainer), - )), - ), - - // THIRD ROW - Container( - padding: const EdgeInsets.all(8), - color: Theme.of(context).colorScheme.error, - child: Center( - child: Text( - "Error", - style: TextStyle(color: Theme.of(context).colorScheme.onError), - )), - ), - Container( - padding: const EdgeInsets.all(8), - color: Theme.of(context).colorScheme.background, - child: Center( - child: Text( - "Background", - style: TextStyle(color: Theme.of(context).colorScheme.onBackground), - )), - ), - Container( - padding: const EdgeInsets.all(8), - color: Theme.of(context).colorScheme.surface, - child: Center( - child: Text( - "Surface", - style: TextStyle(color: Theme.of(context).colorScheme.onSurface), - )), - ), - - // FOURTH ROW - Container( - padding: const EdgeInsets.all(8), - color: Theme.of(context).colorScheme.errorContainer, - child: Center( - child: Text( - "Error Container", - style: TextStyle( - color: Theme.of(context).colorScheme.onErrorContainer), - )), - ), - Container( - padding: const EdgeInsets.all(8), - color: Theme.of(context).colorScheme.surfaceVariant, - child: Center( - child: Text( - "Surface Variant", - style: TextStyle( - color: Theme.of(context).colorScheme.onSurfaceVariant), - )), - ), - ], - ); - } -} diff --git a/grocery_helper/lib/screens/home_screen.dart b/grocery_helper/lib/screens/home_screen.dart deleted file mode 100644 index cb3e937..0000000 --- a/grocery_helper/lib/screens/home_screen.dart +++ /dev/null @@ -1,75 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:grocery_helper/pages/profile_page/profile_page.dart'; -import 'package:grocery_helper/pages/recipes_page/recipes_page.dart'; -import 'package:grocery_helper/pages/themetest.dart'; - -class HomeScreen extends StatefulWidget { - const HomeScreen({super.key}); - - @override - State createState() => _HomeScreenState(); -} - -class _HomeScreenState extends State { - int _selectedPage = 0; - late List _pages; - final List _pageNames = [ - "Shopping List", - "Saved Recipes", - "Your Profile", - "Color Debug" - ]; - - @override - void initState() { - _pages = [ - Container(), - const RecipesPage(), - const ProfilePage(), - const ColorPage() - ]; - super.initState(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: SafeArea(child: _pages[_selectedPage]), - appBar: AppBar(title: Text(_pageNames[_selectedPage])), - bottomNavigationBar: BottomNavigationBar( - type: BottomNavigationBarType.shifting, - selectedItemColor: Theme.of(context).colorScheme.primary, - unselectedItemColor: Theme.of(context).colorScheme.secondary, - landscapeLayout: BottomNavigationBarLandscapeLayout.centered, - items: [ - BottomNavigationBarItem( - icon: const Icon(Icons.list_alt), - label: "List", - backgroundColor: Theme.of(context).colorScheme.secondaryContainer, - ), - BottomNavigationBarItem( - icon: const Icon(Icons.menu_book), - label: "Recipes", - backgroundColor: Theme.of(context).colorScheme.secondaryContainer, - ), - BottomNavigationBarItem( - icon: const Icon(Icons.person), - label: "Profile", - backgroundColor: Theme.of(context).colorScheme.secondaryContainer, - ), - BottomNavigationBarItem( - icon: const Icon(Icons.grid_3x3), - label: "Colors", - backgroundColor: Theme.of(context).colorScheme.secondaryContainer, - ) - ], - currentIndex: _selectedPage, - onTap: (value) { - setState(() { - _selectedPage = value; - }); - }, - ), - ); - } -} diff --git a/grocery_helper/lib/screens/login_screen.dart b/grocery_helper/lib/screens/login_screen.dart deleted file mode 100644 index 0e4cb8f..0000000 --- a/grocery_helper/lib/screens/login_screen.dart +++ /dev/null @@ -1,348 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_secure_storage/flutter_secure_storage.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:grocery_helper/api/auth.dart'; - -class LoginScreen extends StatefulWidget { - const LoginScreen({super.key}); - - @override - State createState() => _LoginScreenState(); -} - -class _LoginScreenState extends State { - final List _isSelected = [true, false]; - - @override - Widget build(BuildContext context) { - return Scaffold( - body: LayoutBuilder( - builder: (BuildContext context, BoxConstraints viewportContraints) { - return SingleChildScrollView( - child: ConstrainedBox( - constraints: - BoxConstraints(minHeight: viewportContraints.maxHeight), - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - mainAxisSize: MainAxisSize.min, - children: [ - SizedBox.square( - dimension: 150, - child: SvgPicture.asset( - "assets/images/desktop.svg", - fit: BoxFit.contain, - ), - ), - FractionallySizedBox( - widthFactor: 0.9, - child: Card( - elevation: 10, - child: Padding( - padding: const EdgeInsets.all(8), - child: Column( - children: [ - LayoutBuilder(builder: (builder, constraints) { - return ToggleButtons( - isSelected: _isSelected, - constraints: BoxConstraints.expand( - width: constraints.maxWidth / 2 - 8, - height: 30), - selectedBorderColor: - Theme.of(context).colorScheme.primary, - onPressed: (index) { - setState(() { - for (int i = 0; - i < _isSelected.length; - i++) { - _isSelected[i] = (i == index); - } - }); - }, - children: const [ - Text("Log In"), - Text("Sign Up") - ], - ); - }), - _isSelected[0] - ? const LoginForm() - : const SignupForm() - ], - ), - ), - ), - ), - ], - ), - ), - ); - }, - ), - ); - } -} - -class LoginForm extends StatefulWidget { - const LoginForm({super.key}); - - @override - State createState() => _LoginFormState(); -} - -class _LoginFormState extends State { - bool _stayLoggedIn = false; - bool _tryingLogin = false; - final _usernameController = TextEditingController(text: ""); - final _passwordController = TextEditingController(text: ""); - - void tryLogIn(bool save) async { - setState(() { - _tryingLogin = true; - }); - - String tok = - await getToken(_usernameController.text, _passwordController.text); - - if (tok == "") { - showError("That Username / Password combination does not exist."); - setState(() { - _tryingLogin = false; - }); - return; - } - - if (save) { - const storage = FlutterSecureStorage(); - storage.write(key: "token", value: tok); - } - - if (mounted) { - await Navigator.pushReplacementNamed(context, "/home"); - } - } - - void trySavedToken() async { - setState(() { - _tryingLogin = true; - }); - - // get token from storage - const storage = FlutterSecureStorage(); - final String? token = await storage.read(key: "token"); - if (token == null) { - setState(() { - _tryingLogin = false; - }); - - return; - } - - // check the stored token still works - final bool stillValid = await testToken(token); - if (!stillValid) { - storage.delete(key: "token"); - - setState(() { - _tryingLogin = false; - }); - return; - } - - // store the token in a singleton to avoid repeated storage accesses - final TokenSingleton s = TokenSingleton(); - s.setToken(token); - - if (mounted) { - await Navigator.pushReplacementNamed(context, "/home"); - } - } - - void showError(String text) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - backgroundColor: Theme.of(context).colorScheme.error, - content: Text(text), - action: SnackBarAction( - textColor: Theme.of(context).colorScheme.onError, - label: "Dismiss", - onPressed: () => ScaffoldMessenger.of(context).hideCurrentSnackBar(), - ), - ), - ); - } - - @override - void initState() { - super.initState(); - trySavedToken(); - } - - @override - Widget build(BuildContext context) { - return Form( - child: Column( - children: [ - TextFormField( - controller: _usernameController, - textInputAction: TextInputAction.next, - decoration: const InputDecoration(hintText: "Username"), - ), - TextFormField( - controller: _passwordController, - textInputAction: TextInputAction.done, - obscureText: true, - decoration: const InputDecoration(hintText: "Password"), - onFieldSubmitted: (value) => tryLogIn(_stayLoggedIn), - ), - Row( - children: [ - const Text("Stay Logged In:"), - Checkbox( - value: _stayLoggedIn, - onChanged: (value) { - setState(() { - _stayLoggedIn = value!; - }); - }, - ) - ], - ), - ElevatedButton( - onPressed: !_tryingLogin ? () => tryLogIn(_stayLoggedIn) : null, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.min, - children: _tryingLogin - ? [ - const Text("Log In"), - const Padding( - padding: EdgeInsets.only(left: 12), - child: Center( - child: SizedBox( - height: 20, - width: 20, - child: CircularProgressIndicator(), - ), - ), - ) - ] - : const [ - Text("Log In"), - ], - ), - ) - ], - ), - ); - } -} - -class SignupForm extends StatefulWidget { - const SignupForm({super.key}); - - @override - State createState() => _SignupFormState(); -} - -class _SignupFormState extends State { - final _usernameController = TextEditingController(text: ""); - final _passwordController = TextEditingController(text: ""); - final _firstnameController = TextEditingController(text: ""); - final _lastnameController = TextEditingController(text: ""); - - void showError(String text) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - backgroundColor: Theme.of(context).colorScheme.error, - content: Text(text), - action: SnackBarAction( - textColor: Theme.of(context).colorScheme.onError, - label: "Dismiss", - onPressed: () => ScaffoldMessenger.of(context).hideCurrentSnackBar(), - ), - ), - ); - } - - void trySignUpLogin() async { - String firstName = _firstnameController.text; - String lastName = _lastnameController.text; - String userName = _usernameController.text; - String password = _passwordController.text; - - if (firstName == "" || lastName == "" || userName == "" || password == "") { - showError("All fields must be populated"); - return; - } - - String errors = await signup(firstName, lastName, userName, password); - - if (errors != "") { - showError(errors); - return; - } - - String tok = await getToken(userName, password); - if (tok == "") { - showError("That Username / Password combination does not exist."); - return; - } - - if (mounted) { - await Navigator.pushReplacementNamed(context, "/home"); - } - } - - @override - Widget build(BuildContext context) { - return Form( - child: Column( - children: [ - Row( - children: [ - Flexible( - child: TextFormField( - controller: _firstnameController, - textInputAction: TextInputAction.next, - decoration: const InputDecoration(hintText: "First Name"), - ), - ), - const SizedBox(width: 8), - Flexible( - child: TextFormField( - controller: _lastnameController, - textInputAction: TextInputAction.next, - decoration: const InputDecoration(hintText: "Last Name"), - ), - ) - ], - ), - TextFormField( - controller: _usernameController, - textInputAction: TextInputAction.next, - decoration: const InputDecoration(hintText: "Username"), - ), - TextFormField( - controller: _passwordController, - textInputAction: TextInputAction.done, - obscureText: true, - decoration: const InputDecoration(hintText: "Password"), - onFieldSubmitted: (value) async => trySignUpLogin(), - ), - const SizedBox(height: 8), - ElevatedButton( - onPressed: () async { - trySignUpLogin(); - }, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.min, - children: const [Text("Sign up & Log in")], - ), - ) - ], - ), - ); - } -} diff --git a/grocery_helper/lib/theme.dart b/grocery_helper/lib/theme.dart deleted file mode 100644 index 0c9c6f2..0000000 --- a/grocery_helper/lib/theme.dart +++ /dev/null @@ -1,43 +0,0 @@ -import 'package:flutter/material.dart'; - -// const Color _seed = Color.fromARGB(255, 8, 150, 255); -const Color _seed = Color.fromARGB(255, 50, 110, 160); - -final _darkScheme = - ColorScheme.fromSeed(seedColor: _seed, brightness: Brightness.dark); - -final _lightScheme = - ColorScheme.fromSeed(seedColor: _seed, brightness: Brightness.light); - -final darkTheme = ThemeData( - colorScheme: _darkScheme, - toggleableActiveColor: _darkScheme.primary, - floatingActionButtonTheme: FloatingActionButtonThemeData( - backgroundColor: _darkScheme.primary, - splashColor: _darkScheme.secondary, - ), - cardColor: _darkScheme.secondaryContainer); - -final lightTheme = ThemeData( - colorScheme: _lightScheme, - toggleableActiveColor: _lightScheme.primary, - cardColor: _lightScheme.secondaryContainer); - -final bottomButtonStyle = ButtonStyle( - tapTargetSize: MaterialTapTargetSize.shrinkWrap, - shape: MaterialStateProperty.all( - const RoundedRectangleBorder( - borderRadius: - BorderRadius.vertical(top: Radius.zero, bottom: Radius.circular(10)), - ), - ), -); - -// https://stackoverflow.com/a/51119796/13538080 -class MyBehavior extends ScrollBehavior { - @override - Widget buildOverscrollIndicator( - BuildContext context, Widget child, ScrollableDetails details) { - return child; - } -} diff --git a/grocery_helper/lib/widgets/pagination_listview.dart b/grocery_helper/lib/widgets/pagination_listview.dart deleted file mode 100644 index 064a72d..0000000 --- a/grocery_helper/lib/widgets/pagination_listview.dart +++ /dev/null @@ -1,112 +0,0 @@ -import "package:flutter/material.dart"; - -enum ListViewState { inUse, changed, inactive } - -class PaginationListView extends StatefulWidget { - final Widget Function(BuildContext context, dynamic data) itemBuilder; - final Widget Function(BuildContext context, dynamic data) seperatorBuilder; - final bool? shrinkWrap; - final ListViewState state; - final Future> Function(int page) dataProvider; - - const PaginationListView( - {super.key, - required this.itemBuilder, - required this.dataProvider, - required this.state, - required this.seperatorBuilder, - this.shrinkWrap}); - - @override - State createState() => _PaginationListViewState(); -} - -class _PaginationListViewState extends State { - int _pagesLoaded = 0; - List _data = []; - bool _dataLeft = true; - bool _isLoading = false; - ListViewState _state = ListViewState.inactive; - late ScrollController _scrollController; - - void consumeData() async { - if (_state != ListViewState.inUse || _isLoading || !_dataLeft) { - return; - } - - setState(() { - _isLoading = true; - }); - - List newData = await widget.dataProvider(_pagesLoaded + 1); - if (newData[newData.length - 1] == null) { - newData.removeAt(newData.length - 1); - _dataLeft = false; - } - - _pagesLoaded++; - - setState(() { - _data.addAll(newData); - }); - - setState(() { - _isLoading = false; - }); - } - - @override - void initState() { - super.initState(); - _scrollController = ScrollController(); - _state = widget.state; - } - - @override - void didUpdateWidget(covariant PaginationListView oldWidget) { - super.didUpdateWidget(oldWidget); - _state = widget.state; - if (_state == ListViewState.changed) { - _state = ListViewState.inUse; - _data = []; - _dataLeft = true; - _isLoading = false; - _pagesLoaded = 0; - consumeData(); - } - } - - @override - Widget build(BuildContext context) { - List stackChildren = [ - NotificationListener( - onNotification: (notification) { - if (_scrollController.position.maxScrollExtent == - _scrollController.position.pixels) { - consumeData(); - } - return true; - }, - // child: Scrollbar( - child: ListView.separated( - controller: _scrollController, - itemCount: _data.length, - shrinkWrap: widget.shrinkWrap ?? false, - itemBuilder: (context, index) => - widget.itemBuilder(context, _data[index]), - separatorBuilder: (context, index) => - widget.seperatorBuilder(context, _data[index]), - ), - ), - // ) - ]; - - if (_isLoading) { - stackChildren.add(const Center(child: CircularProgressIndicator())); - } - - return Stack( - children: stackChildren, - ); - } -} diff --git a/grocery_helper/lib/widgets/text_entry_dialog.dart b/grocery_helper/lib/widgets/text_entry_dialog.dart deleted file mode 100644 index af15b2a..0000000 --- a/grocery_helper/lib/widgets/text_entry_dialog.dart +++ /dev/null @@ -1,82 +0,0 @@ -import 'package:flutter/material.dart'; - -class TextEntryForm extends StatefulWidget { - final String title; - final String label; - final String? defaultValue; - const TextEntryForm( - {super.key, required this.title, required this.label, this.defaultValue}); - - @override - State createState() => _TextEntryFormState(); -} - -class _TextEntryFormState extends State { - late TextEditingController _textController; - - @override - void initState() { - super.initState(); - _textController = TextEditingController(text: widget.defaultValue); - } - - @override - Widget build(BuildContext context) { - return Card( - margin: EdgeInsets.zero, - child: Padding( - padding: const EdgeInsets.all(8), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - widget.title, - style: Theme.of(context).textTheme.titleMedium, - ), - const Divider(), - TextFormField( - controller: _textController, - decoration: InputDecoration(hintText: widget.label), - ), - Padding( - padding: const EdgeInsets.only(top: 8), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - ElevatedButton( - onPressed: () => Navigator.pop(context), - child: const Text("Cancel"), - ), - ElevatedButton( - onPressed: () => - Navigator.pop(context, _textController.text), - child: const Text("Done")), - ], - ), - ), - ], - ), - ), - ); - } -} - -Future textEntryDialog( - BuildContext context, String title, String label, - {String? defaultValue}) async { - String? name = await showDialog( - context: context, - builder: (context) { - return Dialog( - child: TextEntryForm( - title: title, - label: label, - defaultValue: defaultValue, - ), - ); - }, - ); - - return name; -} diff --git a/grocery_helper/linux/.gitignore b/grocery_helper/linux/.gitignore deleted file mode 100644 index d3896c9..0000000 --- a/grocery_helper/linux/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/grocery_helper/linux/CMakeLists.txt b/grocery_helper/linux/CMakeLists.txt deleted file mode 100644 index 3977f07..0000000 --- a/grocery_helper/linux/CMakeLists.txt +++ /dev/null @@ -1,138 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.10) -project(runner LANGUAGES CXX) - -# The name of the executable created for the application. Change this to change -# the on-disk name of your application. -set(BINARY_NAME "one_trip") -# The unique GTK application identifier for this application. See: -# https://wiki.gnome.org/HowDoI/ChooseApplicationID -set(APPLICATION_ID "com.example.grocery_helper") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(SET CMP0063 NEW) - -# Load bundled libraries from the lib/ directory relative to the binary. -set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") - -# Root filesystem for cross-building. -if(FLUTTER_TARGET_PLATFORM_SYSROOT) - set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -endif() - -# Define build configuration options. -if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") -endif() - -# Compilation settings that should be applied to most targets. -# -# Be cautious about adding new options here, as plugins use this function by -# default. In most cases, you should add new options to specific targets instead -# of modifying this function. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_14) - target_compile_options(${TARGET} PRIVATE -Wall -Werror) - target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") - target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) - -add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") - -# Define the application target. To change its name, change BINARY_NAME above, -# not the value here, or `flutter run` will no longer work. -# -# Any new source files that you add to the application should be added here. -add_executable(${BINARY_NAME} - "main.cc" - "my_application.cc" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" -) - -# Apply the standard set of build settings. This can be removed for applications -# that need different build settings. -apply_standard_settings(${BINARY_NAME}) - -# Add dependency libraries. Add any application-specific dependencies here. -target_link_libraries(${BINARY_NAME} PRIVATE flutter) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) - -# Run the Flutter tool portions of the build. This must not be removed. -add_dependencies(${BINARY_NAME} flutter_assemble) - -# Only the install-generated bundle's copy of the executable will launch -# correctly, since the resources must in the right relative locations. To avoid -# people trying to run the unbundled copy, put it in a subdirectory instead of -# the default top-level location. -set_target_properties(${BINARY_NAME} - PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" -) - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# By default, "installing" just makes a relocatable bundle in the build -# directory. -set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -# Start with a clean build bundle directory every time. -install(CODE " - file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") - " COMPONENT Runtime) - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) - install(FILES "${bundled_library}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endforeach(bundled_library) - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") - install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() diff --git a/grocery_helper/linux/flutter/CMakeLists.txt b/grocery_helper/linux/flutter/CMakeLists.txt deleted file mode 100644 index d5bd016..0000000 --- a/grocery_helper/linux/flutter/CMakeLists.txt +++ /dev/null @@ -1,88 +0,0 @@ -# This file controls Flutter-level build steps. It should not be edited. -cmake_minimum_required(VERSION 3.10) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. - -# Serves the same purpose as list(TRANSFORM ... PREPEND ...), -# which isn't available in 3.10. -function(list_prepend LIST_NAME PREFIX) - set(NEW_LIST "") - foreach(element ${${LIST_NAME}}) - list(APPEND NEW_LIST "${PREFIX}${element}") - endforeach(element) - set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) -endfunction() - -# === Flutter Library === -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) -pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) -pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) - -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "fl_basic_message_channel.h" - "fl_binary_codec.h" - "fl_binary_messenger.h" - "fl_dart_project.h" - "fl_engine.h" - "fl_json_message_codec.h" - "fl_json_method_codec.h" - "fl_message_codec.h" - "fl_method_call.h" - "fl_method_channel.h" - "fl_method_codec.h" - "fl_method_response.h" - "fl_plugin_registrar.h" - "fl_plugin_registry.h" - "fl_standard_message_codec.h" - "fl_standard_method_codec.h" - "fl_string_codec.h" - "fl_value.h" - "fl_view.h" - "flutter_linux.h" -) -list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") -target_link_libraries(flutter INTERFACE - PkgConfig::GTK - PkgConfig::GLIB - PkgConfig::GIO -) -add_dependencies(flutter flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CMAKE_CURRENT_BINARY_DIR}/_phony_ - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" - ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} -) diff --git a/grocery_helper/linux/flutter/generated_plugin_registrant.cc b/grocery_helper/linux/flutter/generated_plugin_registrant.cc deleted file mode 100644 index d0e7f79..0000000 --- a/grocery_helper/linux/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - -#include - -void fl_register_plugins(FlPluginRegistry* registry) { - g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin"); - flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar); -} diff --git a/grocery_helper/linux/flutter/generated_plugin_registrant.h b/grocery_helper/linux/flutter/generated_plugin_registrant.h deleted file mode 100644 index e0f0a47..0000000 --- a/grocery_helper/linux/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void fl_register_plugins(FlPluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/grocery_helper/linux/flutter/generated_plugins.cmake b/grocery_helper/linux/flutter/generated_plugins.cmake deleted file mode 100644 index b29e9ba..0000000 --- a/grocery_helper/linux/flutter/generated_plugins.cmake +++ /dev/null @@ -1,24 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST - flutter_secure_storage_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/grocery_helper/linux/main.cc b/grocery_helper/linux/main.cc deleted file mode 100644 index e7c5c54..0000000 --- a/grocery_helper/linux/main.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include "my_application.h" - -int main(int argc, char** argv) { - g_autoptr(MyApplication) app = my_application_new(); - return g_application_run(G_APPLICATION(app), argc, argv); -} diff --git a/grocery_helper/linux/my_application.cc b/grocery_helper/linux/my_application.cc deleted file mode 100644 index c9e9c70..0000000 --- a/grocery_helper/linux/my_application.cc +++ /dev/null @@ -1,104 +0,0 @@ -#include "my_application.h" - -#include -#ifdef GDK_WINDOWING_X11 -#include -#endif - -#include "flutter/generated_plugin_registrant.h" - -struct _MyApplication { - GtkApplication parent_instance; - char** dart_entrypoint_arguments; -}; - -G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) - -// Implements GApplication::activate. -static void my_application_activate(GApplication* application) { - MyApplication* self = MY_APPLICATION(application); - GtkWindow* window = - GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); - - // Use a header bar when running in GNOME as this is the common style used - // by applications and is the setup most users will be using (e.g. Ubuntu - // desktop). - // If running on X and not using GNOME then just use a traditional title bar - // in case the window manager does more exotic layout, e.g. tiling. - // If running on Wayland assume the header bar will work (may need changing - // if future cases occur). - gboolean use_header_bar = TRUE; -#ifdef GDK_WINDOWING_X11 - GdkScreen* screen = gtk_window_get_screen(window); - if (GDK_IS_X11_SCREEN(screen)) { - const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); - if (g_strcmp0(wm_name, "GNOME Shell") != 0) { - use_header_bar = FALSE; - } - } -#endif - if (use_header_bar) { - GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); - gtk_widget_show(GTK_WIDGET(header_bar)); - gtk_header_bar_set_title(header_bar, "One Trip"); - 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, "One Trip"); - } - - gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); - - g_autoptr(FlDartProject) project = fl_dart_project_new(); - fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); - - FlView* view = fl_view_new(project); - gtk_widget_show(GTK_WIDGET(view)); - gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); - - fl_register_plugins(FL_PLUGIN_REGISTRY(view)); - - gtk_widget_grab_focus(GTK_WIDGET(view)); -} - -// Implements GApplication::local_command_line. -static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { - MyApplication* self = MY_APPLICATION(application); - // Strip out the first argument as it is the binary name. - self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); - - g_autoptr(GError) error = nullptr; - if (!g_application_register(application, nullptr, &error)) { - g_warning("Failed to register: %s", error->message); - *exit_status = 1; - return TRUE; - } - - g_application_activate(application); - *exit_status = 0; - - return TRUE; -} - -// Implements GObject::dispose. -static void my_application_dispose(GObject* object) { - MyApplication* self = MY_APPLICATION(object); - g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); - G_OBJECT_CLASS(my_application_parent_class)->dispose(object); -} - -static void my_application_class_init(MyApplicationClass* klass) { - G_APPLICATION_CLASS(klass)->activate = my_application_activate; - G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; - G_OBJECT_CLASS(klass)->dispose = my_application_dispose; -} - -static void my_application_init(MyApplication* self) {} - -MyApplication* my_application_new() { - return MY_APPLICATION(g_object_new(my_application_get_type(), - "application-id", APPLICATION_ID, - "flags", G_APPLICATION_NON_UNIQUE, - nullptr)); -} diff --git a/grocery_helper/linux/my_application.h b/grocery_helper/linux/my_application.h deleted file mode 100644 index 72271d5..0000000 --- a/grocery_helper/linux/my_application.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef FLUTTER_MY_APPLICATION_H_ -#define FLUTTER_MY_APPLICATION_H_ - -#include - -G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, - GtkApplication) - -/** - * my_application_new: - * - * Creates a new Flutter-based application. - * - * Returns: a new #MyApplication. - */ -MyApplication* my_application_new(); - -#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/grocery_helper/macos/.gitignore b/grocery_helper/macos/.gitignore deleted file mode 100644 index 746adbb..0000000 --- a/grocery_helper/macos/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -# Flutter-related -**/Flutter/ephemeral/ -**/Pods/ - -# Xcode-related -**/dgph -**/xcuserdata/ diff --git a/grocery_helper/macos/Flutter/Flutter-Debug.xcconfig b/grocery_helper/macos/Flutter/Flutter-Debug.xcconfig deleted file mode 100644 index c2efd0b..0000000 --- a/grocery_helper/macos/Flutter/Flutter-Debug.xcconfig +++ /dev/null @@ -1 +0,0 @@ -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/grocery_helper/macos/Flutter/Flutter-Release.xcconfig b/grocery_helper/macos/Flutter/Flutter-Release.xcconfig deleted file mode 100644 index c2efd0b..0000000 --- a/grocery_helper/macos/Flutter/Flutter-Release.xcconfig +++ /dev/null @@ -1 +0,0 @@ -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/grocery_helper/macos/Flutter/GeneratedPluginRegistrant.swift b/grocery_helper/macos/Flutter/GeneratedPluginRegistrant.swift deleted file mode 100644 index 25d87cc..0000000 --- a/grocery_helper/macos/Flutter/GeneratedPluginRegistrant.swift +++ /dev/null @@ -1,12 +0,0 @@ -// -// Generated file. Do not edit. -// - -import FlutterMacOS -import Foundation - -import flutter_secure_storage_macos - -func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { - FlutterSecureStorageMacosPlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStorageMacosPlugin")) -} diff --git a/grocery_helper/macos/Runner.xcodeproj/project.pbxproj b/grocery_helper/macos/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index b184356..0000000 --- a/grocery_helper/macos/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,573 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXAggregateTarget section */ - 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; - buildPhases = ( - 33CC111E2044C6BF0003C045 /* ShellScript */, - ); - dependencies = ( - ); - name = "Flutter Assemble"; - productName = FLX; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 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 */ - 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 */ - 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 /* grocery_helper.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "grocery_helper.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 */ - 33CC10EA2044A3C60003C045 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 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 */, - 33CC10EE2044A3C60003C045 /* Products */, - D73912EC22F37F3D000D13A0 /* Frameworks */, - ); - sourceTree = ""; - }; - 33CC10EE2044A3C60003C045 /* Products */ = { - isa = PBXGroup; - children = ( - 33CC10ED2044A3C60003C045 /* grocery_helper.app */, - ); - 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 */ - 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 /* grocery_helper.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 33CC10E52044A3C60003C045 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 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 */, - 33CC111A2044C6BA0003C045 /* Flutter Assemble */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 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 */ - 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 */ - 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 */ - 338D0CE9231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Profile; - }; - 338D0CEA231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Profile; - }; - 338D0CEB231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Profile; - }; - 33CC10F92044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 33CC10FA2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Release; - }; - 33CC10FC2044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 33CC10FD2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - 33CC111C2044C6BA0003C045 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 33CC111D2044C6BA0003C045 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 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/grocery_helper/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/grocery_helper/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/grocery_helper/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/grocery_helper/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/grocery_helper/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index 473b10a..0000000 --- a/grocery_helper/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/grocery_helper/macos/Runner.xcworkspace/contents.xcworkspacedata b/grocery_helper/macos/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 1d526a1..0000000 --- a/grocery_helper/macos/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/grocery_helper/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/grocery_helper/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/grocery_helper/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/grocery_helper/macos/Runner/AppDelegate.swift b/grocery_helper/macos/Runner/AppDelegate.swift deleted file mode 100644 index d53ef64..0000000 --- a/grocery_helper/macos/Runner/AppDelegate.swift +++ /dev/null @@ -1,9 +0,0 @@ -import Cocoa -import FlutterMacOS - -@NSApplicationMain -class AppDelegate: FlutterAppDelegate { - override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { - return true - } -} diff --git a/grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 96d3fee..0000000 --- a/grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "info": { - "version": 1, - "author": "xcode" - }, - "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" - } - ] -} \ No newline at end of file diff --git a/grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png deleted file mode 100644 index 8bad7cfa7d4e8bb91adbb6158e5a9f5607ca6f12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92675 zcmZ^Kby$^Ox9z4&8UaB{N|5f5?oR2H25FFn4M<6YbV*8wfPkbRCEeZKog3Kq-TvFbfIK`rSZo~ZT+K|KELa>}tTK+@l7QfB3gsllG(F)Cm(Vf|-es|# zLYo?{OZ5$x=K9*I6-5zcoKdN0XlRzmIzT}f!o(@R*xvG>$%1JNt2)n-WnQ`yT$OaO zy>^szHf3{r|J(lMuQPsOvX`2l;zYkr>{V7?X)SGKHtlGk;P;L1x!sg(-8?!8*Sopj zuaJ$qL!qw2P{dC-uqVfltmyw8#W*w;KJw8ZJs0WLdGp+6Icz>$t*?27N)|B~|Fbr`^A>$%e3h3$vO~6-rxOQADYrCYG zEc*COMaKKEaUrx+$$~$D4#(4Wu0mx$qZ8d2g2#%oaih5`zTMPMqTm26Ajf)ZqgPcJ!iGT>=Bk z5*1wT#Abcs-fF`AB5PC1yfS^oyqiE+omxbcR!P*-UQ&Lu_~!SlLy^r02jQ&}i+nrI ziafT`EH45GG)f8E7Mx6-vhwZa&BzCtfJD0T2JgAux9h$?ajuzMmS~*mNj%ELP}02p z;ui=les$O9Eer7%y*#vVX1!8jYSW7&|4xkYC6#=aT4_PT+l0vGkT=Lqg^2pT-Ha3- z1gaw;0CxDwptL{F*UT6+KwQ=q{ql*9F0-lAy$HRRV|{V_Xl?UJmGfqFb@KEkkiSYusH9zj*L&3ArYCEHH>@ z(l!OHl2jsz(~cwfgpm8HOj2O@)h^pBbIt8gHYGzt=Mf?}T%ZjT|NsXw+< zzjZhH=usVp=zI5Zl(~xqc&ybIryDIufw*ipOYR&);ueiM;N#&ZBv=#4J(J<@HC*(? zOc%B(7$S*4AQQyD5Bzg%In68b&0^B;OwRrq72HZ8joIf-^w8Db8MxvOL%MQxbyWtr z`U<3!zHj)E(DYgpni2S4ONtmm)Uwc~;me~r`#s|lOkyCm$gt;A&3k;v7V$9frgtsf zL7matrM=hatLL6_hKnNc;8J5QlAKymclyk`OzWd~sLw7MIEtZ&Ep%k)Z_mIt@6nAt zK8*V$38Vsh2ykhjs5f)YD{Oa+uXcP{$3zle+O<_H1tZ>AUDfbXq%WU-hWjr6%?H|^ zb1YQLGt6b0>Dt;Kl&dX=@fc8aun>U+<)6tQ*Cb;Bfw)*<*Kaady_F{W>No2v2gBbl zAxDcfmOW&ge~`v~!3e0spX_^DYC3#qdTD>pTHz~H@p22DCyWL`m49`3e17-HeirN| z<=zM+>&w59Qxi0K(Qe<$Z<-?TNmoz@n?a;QEg^(sAj*Y9<&wPrtnE`#V$EgGL)#HT z&>nXF93^lZLKvE|y^_|pES0{t=ycb{YfvWAvWRgieS)AS_<_%;8Wk>o9w9{3R>cn? zL(<5-lS4WevUGY=6k`21pHJ1mgG3)CfMft+l~%Y;L>TR#iEV2&ry4$TnkKDR?tcY= z&1)6c<|h!xxERMcl9&9fT=p<&(Ld!p|D{@0X@~vHzUd;iv5W*WV-I z;{(jRZ{IZ0d;chn!3BZn$YBv-e${jyllVz_hHb!z`SAP0jO^u#y)Ha5=Q8=xon*ve4cz@1cOF z=`g^{I2+7&jyIdQ;*)^pazkLS}8vR>G z)+QwwoEVZ*_u)>AC#zHEFV}yBzVHX}5sG^@wY}TL(K4;SadP){KK-@%S^s0T>a8)C z(6z_hiG!z_dlZlo0C%iWZz?qooJ$mbBV2zzCw-xxj*skL_yqC&mq7iBXDB_2D4kAFOA51o2? zz{ROlaD4lE+-GnJ;dp?~Im-29x}r66p?)NxDp81G^CA;+6LQdJ^Zu2#e|C$z^o2%{ zG_?vL@iOBoj=l|3>#qW*hi_CuPAj4(S*@jA2q5csuxn6cGn*>%;BZ*#s5m!{vzLC? zi(nSqZ@#3ktV^k>FnRSg#dF5tanp$I%$vENo|Ve#>1cN)wAV}pbwZjD+h^%WZ9}M-!OK!6JbwhRN1po4F3SJ`-VHc8*B(37xfiW2LfOvHtuHK%0&F~C!mQnNWJ zqRm&Cbne`X*y{X*k(idQ*VKq^QyyLybygea6a(>jyXfisg^rS{NTz(aV3O2wt5gK- zjGrzBsR%ZrxCgew(A(U<+kJvDxeYbJG_YA6$Ui6?M)l_srRJsB2RD? zePW%De+n}bLj2E>{871D1v%cLyqaY|Va5`>ST}$YKIzmypQrjg8+Y#jN-c zrYECJxCW_mVq)xboql=$bp3u~nRI_cmpd6_ zleO7z=lYyEgz$D%0M+;#HELP+tCr~I>8!KbD#QK@Ke4GZF0!VV`op_n>rdrn0V@g* zHT)DLNDDKv9O?5Xx@$xTM*7Sq&%-mMUd50jm<2U2k8ld+3?9;NC{#i`&);s?pnqSu zXuWxmgk8|NGZ0{{oetB%CX2jwQ|uv`DyHK4jcg%Cu^^ImZt|{ zqalxh;fd5k3MA?J)_c=@o>%pS4>~>APUcKFm(nO|@%u)LD zN5AxV!COn8D3_ze)cS<4_qs+3TYB0eNA^UOj06Oh2hd1#K;G@zSJYL$0i)I_LA16q zpE`CavQM%-nv1`gRj_EIQ3%Wq1ZV_@Oxq_&(4PuC5Cl$389E&`cPe1w9Av)0`&Flq zFyJ^xmDl4J!n`+9jD-ObMKY*>6IDoa*%O*53mNZi)NTB7=t7V(LQRAJR4t}gSMlSE zG2Mfr2HA7bgSa7%e1>t0e6jYKuLj3P=NNGHd7?3WQo+Bv;zNu~v4*H!cTezl44}@; znX`D&q%)U(J2ApjHE!4yS+OLq$RQo|3%!D2;U-|JZ)yqs+wHc{1Vj3~|AcZ?!20ZuX70DA|0)fv$ zffC?iZch}k@ldOGDy$ylnL3-~4)|CT&BZ!5^J+Pkk>DK}F6brgocV-fU0UY0NOCW> zi!KgZnC%-xJ`#+!z}cBMln`#SIhnS>R}nIGChLTmlmK3!!){cd1cN90*PH8a8{4C= z+|ES^wrL;w=gFU}n>|SB70(d3hzO$+jxpu`2*c-1ONbI8{*mx^6}!aYi@Ujy^W2ay z!0@N^TE72QXL5L-yL`#|t``Z!mJBp%a1mAP=|rY)XvQ59%_s}x>S0cde}F;`H?nZF z4*P2%TYGF6u@%s=DV}&D)n$9@5CwfmlqU(PelZ+cC{l^;m2Tu zW*87;by&$r$bP&o$Dev2%hOAr94E>lZ~Btcy?E`*Sr?oj22n;t4_$1D@OSFieh$iWljjb$JP&rr@H-O5GV!_$ctkA4_;uX?o6k8%&XscjTs7=i*r^GPz+GZkXEgSN&j2$=0nu2$B`jnz_~(Rfa( z;<6O&TBw88d51WZP`#5PzcnswLNfcV2=JN(iGMDdn7e-0jWAYvv!j&m%j-_&c5LY+#rbJ zU-+-|i-TXf*nwXkQ#Dkl^x4E`!!260%tAj7*Fo8|7VmTPXr9&PKiRTBkWXPKZ~X*S zw7j-DM-^kv)DgUt+=l#JEC{w3G5-c@>GX~yzmM$z&678{&KjlWQ_5|xfTj!rNR@Y! z5N_^moH@H_Hl6CCLd&Gera-9#sd3)NPn5hD3yadIqv@r%{p-#x8DpY^3fkbjNfj#?nx8% z*2ty1g7s8%y{p?^NC(hC8!*%&=9RV@;jqle*|5AepQ=$rY+p-KypOh#^j3A}13bJi z_UPBb5pMjA5-oh9Z=sB6WyJz@XB$ND$UFF?iw;c2HwlF7m4Afd=SpE$q6}O~N9qBL z6lzB1;9B|{P4M0%Dm-k|7vzL&l;*>MtjW`FAl&>z6yHG|7mvRqeZoBx9dJ*VSz2#~ zbSu+NlqwsyyqMn`aMsbbDgk*jY5+q(_KE2!*P`k{lyv`|730eEb1TT!vVV`;6fPWy zig_dmG;FM$L`VZx!BW>2ZRp8KtUKyzM&Q$?T|#{DtV zc9d)%5Wghte{_~y?bafOZeR^(p9p{^h4ATl79_)L-guEM|CL>g@YT=#Q(E#sCXp!xjQhhNL027(A7} z#%94A`f_^!H@?0sWo%2Ae1`z4YeYy#{&NI(w;j6oPj$ z=%^%8CO`)&rhoyN3eT-V>NG+g*D1@KiLCouGdcp=CB7J)anf=IY$o6r)Xp=Ie~i#o z_z|9oi<~Vw;A!DsPT&VMrU|8$-mUz>M?fb#N{N)2-huVBeHe&HuD-tZLQOPnqtCyYQbpS)Er;1#6!w24F-}0`S&Y1bkAUQx~997$0Rr! z5Ts@)+apPWecJvE1QQKd1eR{_TYAS`Zn_1Oh}hh^17nAc4xg%c8Pq=$W}dmRx1$bt z4)5GGdqr_rcL-GrZ!^qyLVGddn@*m`Rxp>vpo8d;D^ub0B=u*CGS;_peH!hhHG5sk zb=btyQ*LWFx!x;k!^*A>zG+^OoGRmOjHfeeQ&UPflZLxyK0O3s6S9oUy7RqcID2sP z$IwkNkaIm0K&mLQxc}i9FTTYzQAaqd!MiVCjdRt$)toO}7th9T3tFwb15I9^L` ztp)RY9EG7*%+t97KsAC%PO{#$vG!99QmxNr{eBazkBXDj$yJ*C#0~H%isuP6k=+gB z5`b9)t^stsD89U#!#$}b)-qG`Q)$eWPM`9iH{`?nu`l}o_=2$H+En(INB>A{T6*vt zeg;wTMT~cR_pERHR#CRIyf{6Sq1lTFGAqkXL;&%ro|6e#MZDk3FyD@`+uVNQIGa)D zWZwV|i5b$ZPH-ApylEE#;`}C1Fy>q;#@pbN?|iIer|Wr6dsjjFq~tCOV&efewT1^+ z)BD||FfW_a_ju6@OB9@dX*c?86QXN!U(yu3OS1fSkJ`h|L?eR56Uoeyq7=HMdm3$NagRBQ-C3lDc6` z34k=$oAyyM{tzyWN>tA=R#dK+fR|f#F1693?}$|}|Fbq0=GMuAoGxLf5|!2-$jd~QUWh*YVjz*6j?@$t8Le0zSL0|ULAFZe z{AuCC&2gKayClfT4Yn91taXj$6)&k5Bq4M`)RrnLywa1`qt)Z+Q)+ZIFN}sY%S2?18HaIb0|*|^3TUsPs~uH z&Vu?8x}nsfzxgEa>mkWW%<wYl@I16B!6Q>q@K&t^K&cdv95HE?~828H~7T;jp^RXD+pZ5j)1TbG}tnsLCzX zR=O<-6tZqbGlUHmfG)!OYhi)~I$7>h<6m2~GkivPLt3)W+8-)?U*PpyJi0*x$c(SY zyKv+5tdte@0%yO7U};88!rzQX1=$LauhfBxV8rXB%qBQ=xMIVl)^EsAwAmSEZZ_VhAQTV%N*Et}va z$nNtMa|fIrco5j71Or->l~Swk>E)!>#dLPjNBdMy`&k3c>K=HmC|2lhN17v*(W1oL z=HO2gl+p0^oHXBA1D18158Mf&aM{28;I}XP0?8ull=`icQr-rG8NV zlD-w4wtEPaG+VrR6`2{M&G~LeuHo{mQnbt4>etxW@`2}-<~Q5z!#CG&zY36pwE#T` zhW~K(vltii`h2`Y9kx!(uB;+;g&#|e=*Hxm)l+e}Xr^!MEaY&jvui89iE-VYcmA1g zV{TWKp|>5OI#Rou;=a~9A~f2|*SX>!#E6v9L8+cVZ7NpBU~mx8!4J=PGOVzXJ?Xv{ zOaCBAz^)kvZ+2L8p_1oHs9aR__<>01{vxHsz+E#8fGS10$E9x+GAG77vDy9(al+TL zwWSh4?46fvdm73#%=}rm9T&gfAOVSq%6e>=Q2obep_$h>`{?K{X5aH4w-x_WO_XK% zcXER6R&CVdQYNPO)ef0W;+K?jW}XDU7|JmH5^JRYtjC0Y4+3 zPUX!EB;h-9hq7Mgdt~!RE^lGpofxFg;TE=^JR+oN1-D@T3a@qwy4?GQ`{tO+!wDr` zANmOQ>0OM#wZe*WWy?`S5UC-xf1ETDi3$8y;1=NKwU%06*Kjq5>_lQtFd8c;UnD@A zBn6Toyk#CO?mc#LfnUNAcb6h9AsZqepN&a~EQ_rK6y>}m8VG?S3F#ru@)AceY;t2^ zHslMLJ+N&Ey*YV!Xi)qn6Y!Lf4l;c>Jix{|q11N3=xfgt$fHhp#E^78*_WK%wL2It zAHFIIs1%_4>j-!7DF8TyW;74MU3ZXB%&nCr-AmlT$LIz!c;j%%YDjpq_sQ4j52<5r zYY3wsgs6FMEnrE`ujvn>Gzv(@>^p8z^e{ZbmfXZ>vfTW#3z_xrjhfrwm)XC095nq3jlD~uo4V29Co?`oBQhbp_y-cWF0f)n7AWTi^^h<>H4-J zV=GynPrh)^;u)e~J!HtWp#+OVc&`%sAFK`9Jh2|VcN}~8IErQT%7g3X82*CN#{u^n zpkFbWZd;+Xo-dg16kXlfdn|tg>dX>w1v-e|4{+j2ytz3)@Axjw7ab;*P@p25ty64@ zMFVCZCC66#mhv`g`k};`3lmXw)kNu0x(veHJJw49CBr1BVE>G@Pci{CHyOS6=uM9S zUlfkt$+&q|7G6A*QSfT{UjBLSG(Y$LfSDHHB3u{%*XWTwe-Io|ZVXm&s?~&AZSBDU zElo~gxWg7oNRxsQhS1x_hopo6*Rv9zejlA|Am!9=JebESboVg(5IBnSU=PQ+qS!LJ z0{Vu8inn#RCtW;0v)p<|Hn*HjQ5=K%^#v@$krT2=g@+@3X1K-kMUqn$1LZJAm)fQJ z&BcewW4M8n5bMiKOgh#r`%HiEUJYZ78z435CyAoc5@e>FRzB{)TJIJrMG#iLhNgJxSe)m~VF(&oEfG)r2XNGy|D>bNt7brajzbIRG}94%Eqvp=!5 z#r(Kiu?8}sqc2)YqkZh>!y*4`P#vGwgQLmz9!==S#Ec~=&0eJ_PyPll{FEWUC?FX6 zywF+znMiPfHX;)NL#A?nLxTGi-4Vxx1Za`)o#)BE%Y&tFuJd3vL1C?OI@g*p5pXG3 z4on&M(bIGEN=058@9Xm0%Qp`s{7e+->FCkd6Z@7RGI&WX`*B!9C7&dprl1*zEgR#V z0ks}gztpm0KkWVMb8`$zk(K+xkh>Pi?^iloi|NJ~FfpCgAcK#jcBfh~U3^ zgz6{ehdwRuT0InY+Tt;wf$yewLpT_yOd_&{oj#fVA;QcQw@^Hawx=Iknzl@C7Ig4o~}#NJd0CIrJh%p(}N zZDHI)9gd6}j*n&QL%yfe6i>71-Gv|YqeQUNk;O|DEH&EuUCi~0E!5Cj=e^Pd(TT&q z@?x`;WDvjL8`sSS&yi&aR6o~vYHW}IM>d)ktDkc098Rk!NOr`M+OI_l3!N!Qcd zqONdk>K2{a$!ToElM~s&LE^-N<9Fa3>S$KL7W1AmNa!FZOnhpDkXhGI0jKQAa5aoN zk`mJuzv1SmHicRN$F46R@BwULf%EivEj#Mm87^v%yA&pxCK2HSY$tn+H?A9wR73De z2*1jsMkgJ=Uy64Jp%alEU^&UaA>c8+pm{!(KzvN^wF)24F-*3XJ{jM^L=tP{!t=q8 z&C>+Z?y>{N_6jK0%3o89*AldokW^uhWWj-}aDE3oj8eI{@|5`lzlv_4M|D+w})MX#D6TWK?z%~ z!bppFDQb12<~$FjuTb*cRvS|Ukvn$gJ?c_;DoS$2zd5T!`{A~F{PI&6*lTKF1tN=& za}+{j{!{iWi}SDm#JpaWRFR*ORo1|ZyfS~!0we=9Aj&Cw<|gkkxhETfHRs|^91+D{ zjTtKEmA%A#S__rS!x4%6@X?#I!&z!02JW=U{9V3b&B%T}X6W$?NXYbxkus~BTYTQS zAd0bKwGKTU5+X$Q$|Jsr#PLgk0M7^dyFXM`6Vr}JHx5u?U_Xb~AkleO9^t2n*>$L0 z!HWx1nd-TIb-u7Z+w!I{6JMx<169&i8pM_Qjjiu15ctKR@3#zcU0o@{v6dvg$82XS zdpP&ZOJ^Cl37qwz@R0J@j|fr7O$dI;j2O0Gt-@;87Cex!eXBwQu|V_$AWD0*1L)Y+ z>D{unOlWCStwC(6zH&lykYYeJfzAgV%i-;SoR4fjP|uL1o6JCqIL2)9Wc2sNrfp61 zwI6hh0^vc6TvXJFOobP6WIq-EtkOQd6!s_>QSEvx%kuEckEA(BSPi7dobSdl@di4+ z4Z}?~v%aVuBxYwqxMwXwB#47>y-Mp|45;muK6F4^y{posvm*?+Wee zcN`HM>xH_=P$<)2TXHxruiS7`J19`I2N%3(h)X@%R)(ju8o;qRN>D#0Mw?hEAgSX< z>DckUJGGc^`H?IrEk4c6oNu)-GS-)Rmi{x4A2mo;{poPlRf(LzZ%0<+8IO_r3;d*C z3ecsw(<94EB(NLcn-?JEc5k>vh5A=uVGpehyD)oiWZotRMBM~4R9iYTG=1l6G@~)+ zW1KiRG2V)SV`HdtH_GizFJtJnT<&F(DGJdeOd2iAN@>am_oL}HnKKv@u)-Hp2QNAc zQ!f*(9y?~&ha(wZpFp+1g4i8yoF}aK9hfe>-h}*lPsSx<;b+%o=-I;7`lvW)jdS*c?`q?sv z16lKzhI!X8XvGh+MK4ehpz-3yUk>R%Az)%Zi39xuQjS4L8X?6^Gyif?jWUF(e6Y}K zOBoi$1}H-6Tx8f!C1X%Av-{{@nCwwdONEDz-^`YKpPaGT#wq!|hOWih47WFx!~eH` z?2bt2inUKX>@@6)d8j6(jp+>zQ$fPmC7;)pD=_%)%o&Pf9`V-SplZB%E)Df_GL0L) z{sg2vjie)@XMtTDp>|qx)j+7lbGLE`pT{#MD26z)(r0voCzu_@ z1K8wIVtjx@DMt9o_}EOOlQ6o?H|8s*bAME6ars%DYUuWLpP;ny!{2>l~u z*>2XKMJW&g# zK_=c!O8QWFtSe~vq_bJ8(MaDb1vN~x>6gbeamebqcPqbU*E>nsw6v|kl6OIB`+Q?E zm={BasLRzY!21lTAJ3@aYIf+FPPoPz1O2f#$DYxy`VCCAY@NU#sXW99Vu`*2=#z#k zkAs&H=9Q2law)+9qR%hMlmNB$7*6p>e6$s)O~kkqn|nT-U+=U{6cktomuu{5c4=-T@6T=M8IlDO$J(k zW9eGpl=Q(R>(;x3RDJ2Qzy^?9wX>H+3ko>R{Yt9%q9q5Y<2uiiOc7zi>Yua2WESI> z`h)lP=<_uYE)N1(lsw6Vwn&aqiO2NUuHvq3qJMG$5j%1m5!X#+N(|*9>!t)Rk4l0&o)DX^W)T zHMdz(hzqT%uL%#lRz*KMdQvw+G93_c@?=9whdwT#XfwQJ1lmlh*1eUl$6@W0No!Mk z?LXLrmW zb5cvAQ!97%IL($1KUE`(h1oCTn(?ADsA5r#uZM10Q!8X>8i zRQ;K&4ah*<^l}A-2zl>=N~$2TsQPX+DAo;ge4UZk9NTeVm>%@S=5ALg%8oN;I&NIwU(c@n*$D@TAN7a9TH`{6p zqMteUrhScxoFCoFX(VaTM7|ap>jC!g2Fj=lpu|rlB-eh?g1z7NmaGdO7=ep+gC1>} z*AiQ53>IAe7c~@BKN6f*$e5l~&7J50GQ7OTXXIbhFwm{&2I+MrwZ-bI5-~HbgelFC zFL4c1bBz|3PAm8Uzp_wP^?=li{BJ{ zZ(#zkHvV~%k@pN=Rwi76oXGuo-yg>B;i3FXA1CA&)7<{W4O4e9Oor$RZwPE$z6dHu zN!M7-Rq>rXT|;sk+HWkBs5Sp|u)#u!Gwo9z(=0ACb*jqjksKS5hL!Mnd%Z=3Se}s! zDoCu)<%xi7vy2#L-e&SeK>1Rw>){mu>vMlmkL}s7bP4sjpomwZlf*+7Q?k&U`IC7! z`9^N5z-v>|bW1Q5EF&lvw`vyZM;YAR`q&`pNIq~8AyfB+pySt|oYb@&sVmoWKs$Wc zq2huDUlyIfv-!Z8+-1V2ze`mj^6Oeu1Fa+WlQ?1(UuI3Lbh!3LOoTpiUyEM_Re$U? zIJ#1z0?G&QK?P+7G(tYQ?-meZK6kQ8ql^PUPu)oB!4X6~*Vw|bjL{UU{VX~jr7zpp_sZfFFCOmWiXF9t#Yd$*mvWz< zEOiH@ev4j|tpEs>FO~__zFrq8ik5o0s7t5#V7+VA4~pvfi+6>K?07}(cayg{y`b4v z-&+oQBfC@$$HearHZO!0{9~kho{joquHwT-9H#+AE4v4&ph`!u&Cm5UT|IYnZNLBB znY*O_v++Xo9+-m9ZdS|-2fUpRNbQl18XHpl9#?41f|jOyOaq#!`%49fmSW%kWrCz; z2Kb08X{4Rl|eQu&Wq}4~3oKw<6hC$_Ao$0k)QYWgsiM7qttdx zKB)gnp`$~*ZJtFzwEmOIN4W2|G}dC_SNs^E?KL6#6QI=zonw>tafIiOnVP{&Ph)!& ziknXh1O1ll9oqD8kH21%@f`!~-$WJ?b3ILZF1^Z$?J2@vPRC8{K^3nW~j!7*N>iax&J_q?*Y-saJ7T)KdF zB$frnj~#U`JdQr8K|&(zo$JPNVWi!aBUcX6;z zy)LOaV#~{4MfN?p^4t82-`zLn19FvW;5iH%vL{I|&O+6m2L`o@IP)~f|GKsxISUQc z1SU9&q%yTTto5r?P~7%h_6*_+ZK9Q9Bon%l(T5Y05A3U$Q7*k8Hm?8Dz5cj=+a65# zrpiCOsQCcLAatMFf$Eq#%UMgZ`&d(EQ$}6w0m1g{5-kPlvnZs@>%iD9u+2)2vt!-3 z>X>k-J5_`&>)*Am_=O0VH1|KC4LP*|%PIKMFfTblpS}k%h9kCiQd11`>XFwsdf*kJ8MK?64UhNbKgpGJ%|25x)->Q*}Giayun)_edK*-wI5vC-(5ex=&b7($C>yz*a0s(lgW!fu*+^(|dWri2U*vm9R zTU|}@s*ibh^r>;8G+Wy7looO8P%=A$R@AT3Eh0|b^`(KW3)!Z?iMm?aSxjCJPgMkv z>pwtMo;ac6hebkfgjb$-4E_h0rOLy=Ob`Gw^6G!UZ1OTi&KvsLVpaSD?Qn_&D?DIW zVFO;}*lLEo$hHD}2|(LqQ(J575kgu=NOKq3HFcEo%#b~vfj|9EG21cZbEet=06={q zmY(Wbp4rkM<`f8zQb6H7v^H*CP^Nrm?s5+#p$(l|uA?PchWu_nMGDjeW|=g zfuHT%^%L>-7o_(2PJD$Jf|+P9WUIHUdqAm-H-LS{6WP?Ob^TwQ4P5g7aJIRBaW**F z)VM7gg}n+Iad0I>vL*)gVVO-_!b?IkKN*;DSYd z{G(P4M-yPAjVP-ft|-X=%XWOyJ9FGQpF?H62*JeTa^|lwiNXLK(hwib5mVSnT)dzf zyM1kp(~637-Fp0CuI<(B_Ot}B+XrAb(&UEwex&*E0FnNdNN5De>_qT`{JRAV_jKXJ9 znOC2NzKjC4T*sx?e;}D}BsJKEHk{`92yM5|=Q`ZBktUL}8NTDEYty_FW(y3sP{5P$ z4K?0k;zESp)O<0-;1VFQK$nXNVh0eL3I zZ>*5nC&ciEA0*OokOIjYD>4Ct+-R>waRc4^85~V;xout91-j5YTZW*#IC*J~+&|-n zWw;V0R(PGy+X;(Ze6Lg|WHAlw-FX^}(0@4k#Ly!W1OF2z8uKo@O4WSTYg{w%O|Z$p zo%LC4EKNb!bN3L<Ent{XpRT9L6a8hjyxoM^lxfEfx0?u-wg3<3#;Wv-(4pN4FAB^t=^6+^du*Q#%cXy zoOLzxvi%`Lpscw4FXJq-5q81nfMB5X+ZBX+Kl1Yo03}7(clR#8A))zRkepBR4cV(` zaMIxC+9a+#zVtbpeN}Sg^)43StWOFKvqTAkm|DOlG~5lfHg)K&UM z2@TtaML2ZimMEqEIIqeO)p&PXVAV5jSNorMyFx6{E-RikF!Fm@|JPcLmBPrs;HM^ z(m}pe*c{*2c}2zEFZhBwI{!^J22PH)V}OSS!dNG^>+1m}`QNIM07%+?YClcHM(<2u zGLnosZ*3h)t$(j{IMT!f2Y!wYvgvDcxe#Msw}NzH5WbP4y#TPT?jI2PpYwva>3>6^ zSeO4sAw`1ms4uuagl$P*%6erJ^OObgILA|VIOaKuD*PW2X2HA5U;q~rsLsEUW8kfJu(gqV=R{+M! z)5tHsl}CkSPzO8`m}}kE;gOVk*N^YoeFqJPB3PYh$lR6-lUIk*g8nW)*tCBpWc%B= z*WHi3DnT;kZYK+Y##YJ@HUVwEEBr?TPGXu!-j8LcrtFk@(Z!-q@M0 zXjR5Q@2_e74n#mWLxUrE_xyK2WPV)Wq(gz0{U1L5+U@`0>#O6k*uJj^5Kz*hQwas> zZcw_FknZjV>Bm5%ySt>jLqfW{ySuyJdGLn!{_gjE{)5lVnG<`jz4qE?&d@{T-eT~g zC4Oc1*2blP*?ljpGwGS+8XtiJTh9bG+gyRi?PEB0i7bN=?h1Jm?vwg+U9) zJ%Fe6FCB}ZJbRY%k6j%gu2tyM89fq# zz&Bq?Iq^@{=4hE6CA2GRnPaFJjdk23s|VTZ}aG)JEJvv$^xFx_J z#U#ZOZMFl+o(w>wQd|+LI*tQQ7XyCS`tfN#n2AI1_LM;~o>LiZZMt$zZU5)y4zKSi zfECDKL{GeAw{csTgcY+bCeoKUul{6;dK!97N3H~G z((j^ZL)HswXRf+$Pw>~1_A!>c1JOD*33kws_{;}K>SXw9FO_HrXQSo#KQVhQ9{@t71q=}@VVoe>kO0vN zSlR!VKo19MFeoH$LuDD^OW7~JrSz9$?o6&38*}52Rc}Y7YT$nd%TMI1#`{xwUoPAQ zqB|_@p3Uq@w{_@Mus{m`qDb*{P(yv-L{d+p_PL~@qx+84gWEXFj|kw-n4S#^LY2$? zI7v5DzCn=(=WcVxCpB1x7Ml_W!&*p5fTniksatQZAOcz-N6&zrbVmXP(K#aE-u4e* zS}FN2VB+`Ub?$s8b5$pP)2w5H#>`;ZH@+9=4c7e;gNcCeuwehc3%Ljnt%55?VS)!;3l(MHMjeVe@5KS&>kA}UZc7z*5b}Nu zI7YQ#blt$wk^GNz?#KPP08#kjMNXKZ`G!;tPWx_Jc059NvJZ3BT-s_@{I8PZN6wDaunNXoUguLn z0%0&}T`9;@m!`U9l9lEdbfODl(rE^?>QL#neryZ3q=Th>IabVGUA#n99i^1eZW>O7 zo-)Wq{&AUtLntFV_s#fZoivJ1D1%rLOaL@XcI`darENzJUnmX z(p@(rJ_{3Gk{?>O-Nyw!S(Wl$8F6!+*wM_3y}r2r_>fBmIJ10@ed927R>+O-dq@KZ zFwo(Oz3o*Y8M43Tnn}~umCYtX1t0<1gw5Q$xMHaB%%`i20Sf7@@h3T`u_(0z*NiLk zbS8$teSr<9fkof1>g3eTwQ;oV>v+DpPaJrk@s$lnV9AQhvhOl5lpUsH-ymwjuc!dY ztblS1rD1LUml-0x+b>V}?#aA$xkHrcPLh z14Xg^j7+ui)zMIc!-ojiz~a>Btm7-p?~Kp53e8~++rJGe$s9ddJV1{^Xv|51A->-` z;aQt2NS-$zMD4t3IYm_8T7cCyRH=FuLf`e`E60i%jABc?EZh;F0V6o1A}c{^GftO} z+M;0&6ac%pwOpVK?lU{@YZM}Gj@qGO`_1yt`CMflj%=#TOu)UjBZL)_r~%jP0jBLn zQxY``yG96YWvHFTZL%`;)xN$0Pbi#jjyr2Q0SLQoqC;SrEmLqK&5ksWLXh7GZSHs1 zAJ|ezdzWo`ZUeGb13z`Tiih|15+Yn_ENvH>clf&+=d-?Dngza4-To-X%~2L%8+Pv8 z96T-Ry(_zdv1tg*+m?QteaUI-^zG;V(_IEY6HV}O=8?hW;iuUYmi&Vh7+|lEG}zUT z2p=8WpoUCiG*dO6x zPw-cns=S_Va2Qefw{Vc-tF`p&pR7Q%iK^}AS$>1d&o$yOZAQVVfvS$E>z@ro6rPwi zhR|0t*)?-L(tI|lS%GT^EYUekes(TVwB$L|v{`W1v$+`K1+-^9iwad)ZZu z0<^)}Je*sv6;&>)@2n2>HLYrwHn{BFr-3706)l66$%+vrxPo8jm>kDZwl)6fJk8(h z;m@-V|Gi<)D+wkrC3chWJm4we4vr*TNp(pu|XsEUE=9c z@{^G%XXTCc@pv8?=BZ+U=Ruk&%(~ahb*r*N#;#IdOq83ZvrM_{!w*>xh#sIq@E0#k zwG%MWx^?1W2rpRkz3iwUeIu%yDHBE7GkUtDX~rd&q~s=WOK>*Xy+6vSh-0XB)_I0! zo-0qQzUHea zC37gO3}yba;{&AuJ3pfmT*Awm?8Tt#K~JLTZYFG=$6)I}hY2%=NK$$qEut?Yu6ocs zZ}(4f2NY6jYa*4SI~*f|3gdX2_jn;L+O_b+PH>5(nV(iJ#n!I-UxI7?<=Hqvi^YwQ zjBrmeD$59qlkNe#PVOM1YpU}XGd34&CcyejXzWd9yf;=+kGz8xwvf z1W4P3(DR|o&IdDkV3n7*nl1?3c2Ouc)l%oUxox~ZD2q5duZ9G9+ckUT^!$yoWuV!f zM9$mj2e-vmcBqq@XLR5?1EW=*wP~&2ag|o1`EQqs5Jn1tpT$r}s`=`GgTt6`Zv(p% zF3{m57B>-*BL*B!kl!m~qse*Xr{YE2i}-xDEA4 z8PQ##F#&8gxu`Be0lsEhaj(Xa+?kK0w_Zd7T;Lu6{`kj*2Ks+P5`czwgfXI~it zK-X6pzJr?PRJ1sf@A-6dg~{AX>J90{9J6W;UFZVXJLfYI97!{@*OK7a!dLI z$eIttamCiFIQDsYS2k~fz&f|1LAQB4pqrVds$n;&_}WxM51|0IvQ6>R2RxCu4+%zj z;l3QI{R<>5%f=v1Qe-r9m?86++r~Ki{B&{6&M3P{mwv7f`!Vs`bG?8r;i3^JQ zDrW68huD5bf*6@w{eC29y5%H=bF}5n0}gxhNH9_c!uiKnzB#o}l;A0k14HF|!>N#6 z)px>^8qK({n(v?Djb}xR5^#xEGxPa{`0_BH(swi_ou<#XN4Mk1`TGXdC?*Hew1rR)2&MLl8Dha&d!Mc_k1nMW@& z%5uQ|gdA_>`6yJS$B)ZVRD4?O)KFg{oowe7X-d=QMFkrdyiHJ`nW8k6%NXRT_R1iF=X8h zRrN+_kiT@X>uQCC1Qe_e0o;A#UEu#rRo{tEqG=>5$}EGH+Shfi<>caBvWE>$Pj2dq zPn@Zfa6H$Vtm@0{&zXRtE@ro74C+UE9BvwvFQ3O)Jn9qyIwuNpzH*VlgMnCtDJXeW zqwX%^Yau!z8i@;&ux~BgFxg^^8(t3>PmKC#r2|ni9auqx=ppgiteheVUg2yc&9pcX z30j!Zo=rbGk?W`XuhW%nlf&%twoDjqJb0BMm3_m{Z}#f2q|o27#V@EK080fT&jo2~ z*#*>IHP^11sV{>sY--ZHWRY2+{ywx^+;o8PhMS?brT?bQ-5cNW2oYQXl=ogr3+B!R zsy>Kytru}BX{J0NAN?K$ye~~n3eC&5fi5mcc7cQ@|IrH%3xH{~Vhy3rv*!fSF#?vD zt9^%beDj6b!fj!yHb+%eBJbx9mFKXPYanO+?Y%^QQBD1-dM){nGt^3VOwtw z5pe;fxmvr;AIiE50g+!R;Zx5rpLlU+;1e7C4LfB|q`?gslv`X@qGt$vtpk)!7k$-C zgi_Ez?$R>xCet)^sJ_=r&VKSi>Drm!&WZ3YDuLsYMU=>O{>zJmXWHi* zbpm3|=^{no6HtgFrb>(aw^*V;pT$8YTN|r{q9=s!|DaFxFZB7*2Kudd;8RWtr~_PU zXqUJ2i~9Jw2yZx9=ht3lj}0<<_5qPPc>+fTEKdwBaw(j%MD4##=OVU|6_NH&vySY8 z)9>tzXeiV??hfp=|1S)JgIW2cxNdK& zdVo|(L02e}w3nWDy@k zuV8xpDA3CWdro$EL2|XFiD_(Q2y{JKKiQ37OGz?_lD1;pVY%#YdVCg zW!QmT7mf|8jW~*WIVk+qS_w{6P%1nK2v^Whm!OthhLT+W8#su>7RTK(o5;dQZ$b*S4MLato-rb{tub0uyPbgU+r>&`$R`S3DX0C?`!I@%2poRHQYLGwZ!3ZOviWh+HpX$=XcC;z}Xdo1&}9f zj3I<;rYmYfLM(Y1X=a|ZZ>cgtBdwPiNQXtanmYT@V2rAJRUrB`KBNkE`C`XBc0US+ z31C8Sozs<=Zw~ zZz)^QWW2>i?R|c{KqpqPEB(fMwd*m+|I|PILj(+f`A{@;mR7kA!kd-99s zutEvLygNV_VP7*s>jIZp*&@h##%){13w0!)Adx&(fr+$)Cq|}(JdrABsULLnt(4kH z`#ynAL?(U7KRdE8$P*q_<}FA%zC}d>bMO_z|HgT7fi#Xtn>7#-$mzwu_o2!nIGlR# zfQF1D#{6J#96VQ`6DYtJEew$XBY4nZ7sGK=N$+&+ab{mo>y81Y@iWl4-<)6Y#o@+Z zJ?@lfS9%T7C_PfXnLQ39qv>EuFn=(80p?nKnEytbmMuC+B{`>Ss$fgE=yexE>E4(- zt%duC$+MtVoOoeFRA|c#ggkGIWwbCeo(AT+JS%2{xY*ofS-N1mx>TWwI;&qDp)+lJ z)P+&y-l%<0+3bp3*jLdyTbb-%R@Y&!iNnW3KMO0;{Hd!9Hjsnlg+VZ)UpBAq6GH++ zK$UEDVuv?vZK#xr5yNJq?)izXHAIz6{PDD_4gplkD0hJ9%f((J0yea1>m_v#fjcHo zF14DtsgI9LrHL|ecftT0Ng1R;6HL1!*kTE8mck*|%@JpQTHcfLt~b;GDkPhD8vmtr zDtUrv0)P8A)dk7A_i(^?;fgZRaJZLij=tEi;i;%Z1p;J?z8rhnxf8aieF5!x-U(*^ z#tPDgqjM-IIE0f{Qw~l7C2RL$_;f_S3xApfUFhbu`}*VqmZSxKxH-xS(|uQEst)rs z;#Z^!ObkA7ZNk3e8C2fD-#_*Upf9Nlj=WEI>0P#?JLGxf1 zJgzD$@x1o2lRFcXiHVC@!0+|Eu-oE>BH;pB@5PJv2pUdn23>F9zarGXNNpuY56q)? z-jxK?*>MkrTbLrFzw;>D4Q`?Q2^c2kh+3L5D(V1lQD)ApaN{T+=+OepEN~xb4=@Zy-7J z;Y?-TLeV%MLLv!L2;&qD&@9k@)Etw>@a-qU>^U1UCb{OE=1b zX7ruNX1E+Q@N@1T5dm!fnLMSXjj|1<2xPLw)GHP=6rTju-LE}ZD<8Y(4UY;zfA-5G ziFBfjvK2*wNx^X6Chm}%LsAWvTPGA>zHaS7g^HvHWBrT@Yd5Gq?W>p$hE_@YYL3v_3&U7`bLqDCCsy9BA16PQrYJuMj;EarAiHLgg9)eWf}35w$x z_?cn~Yp`JN@a|yOFPnztBeebUiU~OP#MTy8I^z(qp-K9ouBlqE~shCg^xKonNgnS-DxW0$d5>s=CrWUd{i1_(VFPoz?dHUPd zHIlx42$~9}k^V(%)pv$Va@md*yxYf@RMx;dMXj@0t3}}r%ZC=lFo1hX(!Jvv<~L@e zKCUkN-{14%0ss}Z31MZ<$C5&gqISkn+x9(}#SL7RkJ@0DM?tmVJQ)*}Mmy{UMy05| zLXkIIo5}HV^U#1?513WVukiwHWYtotk85H2Cgffpx{@8;7~bJudPUZ^pCqZx=}}8Y z`|bLxRXem_0ubVL9=`;b05`#4*diOdJ-n`-45pVDE4A!a8ZmGW+gC=u9-#n1$9@89 zL(Wg2+R~ZAKeMF#uX&if+;$Hw9>D3w?K_6N!WG54s&v%XI63sa&(3q~TR1YAv^lMO z0%t>n3)C%`OS|#Mc~>YdQ>59EVsI!n!z?j7f0T&p9FNTu064!RebVnshG z(TI0{<1EEd(a50G_T1~~kF%ABcDYY4)vF!Dz`_9Vo-}Id009)o7`+B%yZul3i zNx)XaPf;OIHMDfC$?3i0${cU|vm0Ut;2o9G%e2jnDJTW~dJDrxGr6x^2TB|(xLDJ3 zr+wo$#9&@}@M$ZDn3_q#DYo07NAYlaejSAgAz{}oKvdJe;}QXai@N(lzx75G`wFo> z@-L=>1og~0lBmys^r_@P5xhFId@(5L#xd#c57JV{h0mq$jOQd-tXiU_6VP@U^1_QB zbV)i+1D1CJ7<@!QM+o;Yw9UYOLCL*>!zMCNJt7d#UR&qi9r(c3Ui}nO6G(V}E$=zC zt%qnlCi2a@_1x)%I4AZ!X$e@Hx9Y5bA^8!>08Si2($hd0%9{`oAn3o6AiyOj#UQWm z8V@t1*KAd-BL@R_7RMnkBV{{Z9aMYxX5Mz-ium|G%0$s8z%k)v=DFryq_n`&cbo() zOC4?%Ks8lA%;2V(oXq0Z0gmnkl%b@YrJHU2DgN^9i2n~9IfbQrHYsw#63B8QPHyEy zCAVtiekR^P65#F$PIP-GMkXn|?r3^?{D4=tpIQ;8sC|!4Fg!q{Xp#VB8cvS5L3PS}#SM=Dx0 zKU*=l>quNEHjia>uw_|8pPQ<6Nezy#iu>)tH|c8w(ELK&4?$zqOuv(Sn|RHi2!mTn zzS+lBkb-3SAA0Y>S5t?eoueR3LapHR=1=bA)A%3W^3KF5NUI#=!OZzKmv3eYz=Y6= zO6?lJ0A(!YEU5;-w;T)7H|aAmb7107FaH-msX*uJ$`8Cll05=wi4LQ3O4`Xb)>g9H zO_5T4jZ(_3x8eeQ9KDmkaTs{{V|!EGThgwuBSd^tw5V{M8K_6xf@iR!$)8sfYUy$< z;aHJ|fh7Ky(959s4d9DT9TT-54dk%%0u3_m>WQ@QTxUb$wBz9rSw1eH%vHfJ-TjiP zh%_xw7rmGt0hm+x14R7F4WA44*13VW1OUbMzcCZZznMu3Qho4NE(x`Zhp(N=N#jsz za(XZ?UEWTco1*!{(>#~3j!B}t(c}<_EpO5*T^O~u9Ajpj!1?{^@s6Tid>5^V*DT_%7q$e=u znYX)PyF2y+mgR`irDH>qIR~K!=WHkF5V%+P*QYJbq8z+UD=4Y}#FPOMCVnR-RS&tQ zM!dc4d(4$>*)2X;GCS}Uuy%yYgrq^qM{$&NI#723iP zhu!CG+*q&M$|RF%;&I03lluiB@BV-g%^tt6kB1IN?w6|Z20*3yyF3R1*Z!VQ%m_6z z#FQ}9aKFvL@7Bdz6dN(z3BN9Ze zM+wD*Es{p#z zph9Wjt=Q;rB^b2mQNZG~OVMKKKMF#xq4-Q@a}&*B&2#x0+@a9^b#|Cz`D`hO|1v`~$1ot!sro42(Z1yV!G>5@8*C@L*b z6ra|do@X_Cv6t1?8BiB~OeaJ&3?z!2A*Py0B!?EA3uvPgB0dcN7ymfu`*$^Z3!MZG zGOL}_urz=m<2l>o7M>RpFA{A5bM^Y9ajZZBuDWIZ7BmGvrSS)l;W<(zfu{f zX!dsv23}eeec66FA@O88|7{ z(&F6QlY_!pU!B3Os!$WwGyIhUp*jYVCL zQ6Zt2Gd)}DbqZGvI>7VdUzMKbdCgd8{G0Oq6DVj;tU7*i4NKj;ZW(?QsU^CRXbS2R zU#n7%ORaG-kUMBMJ}Ff;-3U<96>TQux<;JK_^YZ+j}NLtnls3>|JFeuHKFPW^wIE% z%`a5COIOE`(NRIl;sb6sAk|6QPR*2w*Vaem8PWrMlPt+O5$Y-%c1kh z9@5|D;G5k8&SyX$Dq!SVzx_=zUoZGLo0}Y{_x!>4y=R#jT&T#(UHR6Um*5d6-028w zAA9tn+S#JF@`U{vY;!OrbomGBx(o*wQKasPNVrK=vCjxW)@ZrGpR0tRRTY=ZzW^VjlW99jcPC-MC;%!$u2Em)-rLL z<(Uqt7Y}@t&^sS%?UoH3>|(KbzfqGY+R8h+c?`^@gYpLX6mq)fOMGc?n+HH_An=&N zX}|l~hBCzox7#5lG{M9dCEJ>T?OTx52sB5#!n*!Y9>}}##SEzEpmCK%ZbnklrOA#==<$DlZ{jI^SI%F}c=U#yOYFTRd(8fq(IQ3+aua^!! zcKu?Kug5b9Y@Jv3zMd#-V=5t%;h9=xW63Ox6yy?sFlk7XR_6G4ch}B)v#gBhtWYJ9 zH~SrIC>S->6pGG}dm>|d-vqDfHC0BkXI*!>oh@FqKQ7P}olXzPySNp9?I7sddpb_z za_Mp!yBixaIR0v;eY6YF`cTr$Y({f$r*q}AyoN3^AcK7yqWr}wI%L_E4A@e-FMRvs zgRZ~~8_xK)HlQgnc7HD|>Ct#W)u25k#<-1qLXGv2{G<_J*J-r=ly`=_O7rG2yu*L` z*;ByyMd|hq?S+R#GG<|{6sXCv*pWx;ZZ30|4Q7nFfq&PBp71(Q9l%3A9&;bmhvau! zRvB_)B$|8JuB+-*a8(;wM|tT#ku+5wnX#FacYh>on!2cl#{h{o&IknF)U!@6XpCFJjeQbTG`a$WdqS#vT~ER-OISbMjE&~06#1rZMoSwJz! zu_*KMm#aOc+sssGO5(%>&DS+3&M{@kA(SD>j^6OfSq4(s^z-kic5l-bNQJoQ?6dF zjEk=ac3fp-oN6>jg$hxF(+oN<>}EdAcwf%HnQMeOflouIpsK_x(v)h zZGu-nVIKoNm~Rg23_jC--1Up9g@NHaiX)_LYerjDQ~1-pG>x|0F`ifN=HwW>9Y z%wzr`c$c{+YM)J72q#a&&ozf1Wx_&emTuH9uPg$Q1090kE`64ZY)iHa zbU=S6Y1Ln_7ASDs)~-yfmY?B?D~&^XTP|mvnGv*@%v~(WUV0*EaCl4cp}Ns9k0KBo`_RpSapqp zOK7(Gb$MWB!Vqj*7demXz6MW35c9Hi~9f&E46KV$EZUJmgbBPH3TwpY(4^mY}Mrrc#35xF) zkV>5gvoC>7k1JeOWEQXHEs!DCTITF7jMZ}KizpM)eG810J_PGH`)%K9tQgEVQNcX5 z;L)5oKS`06UHY~hWzlLDkK^)MHaHg>(NDVeue|mQrHcKcuCAKk2@Xxf4u)@fWT`Le|iF($=P4G{V6n2`@xC1|JY2}r( zS^B%ezu+QK=6}J(3^10g%<+j`6Vyr`NT47X$HWZuN=Y#5cAl!DJNk;)RT zVdP~cY^Bw^3404f{#Yt=Hb)AOr6X)JdOAE}#)Se|r~b0y-ix5IGlSPTDFp{$`VKC_ zv!4yh7A+5?mC0td#do`chv#+5F+?8v;bZKJ2`#ROxi3!#%vOTnOX3eKO1-=y}$>OjdjVOUprvB66RZQcu4$SCL$+(nW z&rg-9og1FY+x>)b=*Y8NquRzewJ$;|HEEoUROr$rc~7to^B9k6r~uu;^|~-zrdylG zK7!53lS-J1_ZR&9x2m)&K?KI!kLhAyBJ~R)l9XIG)3z|gi9YKw;AEVqA?#d}sCAS@`=><9CNK1> zi6Kxut-ef|z1sDPkP_qAoq(=cjzmLPx|^+xy@mG)x6bbH-HOGoq@L}kuKoPd&sG&_ zW>$SO)BFAQyw;rw*D!oV4TcY?l6LsH1l80nOnp|Tf?XTg4+^lSzANrv+$?wdzywBP zyUq}6C5`GDYuhe+Na0Yqov!R3k^s7}9s-B_f%C$ENdFXV$z3hx@m+`QarxA29;+=h<8~80h{RKw zv}zoEAHd^w8raWQOqY)Ys5e}5=DIFg#V!T6+vfl|>k>@uBb_PkNUc!9z}LOyzN5H= z48UzVFMWKW5ixJu4|efdMoQBE9?EK&8;i61-idz7M|~}I4B+a`N=VD+jDmgslHOo= z%ug{a$6_@Ng>gcHJ$Ep$I=xN<6lii^A5>ef_V}c7Vob}%Mt^di^}};sj^Sm~24iks zSPYE+SIO9J!o?*lavnXVdaCXiSiZ^n+Fo%AgDVT0^fYlf{^E5y;QRbbGFFXo6EGOK zUhY{@I6}*~r3)9zwa#F1vuydzWTxCw_)XZsT*I?{mz`%2>a1skU8tN*y?&9XavjX& zuGX{hN4%&zAPDHMNW#=p=+zmz?Yk?kd))-<5O3uDs8D%tTRJ9{@;q;~v$1!u9S1O` zo^rC=w98Iw@Y=EO(TnT0?yhRK-eW!#4uXkPb~HDv0v@(d=-zUH>$dl5qou)L!2C+5 zW$}xA{0Q2h77*L|#_;CUbT4iDM_~;}of3Cq|Dp;)&f=?opg^oZ`dI`1yK49pD_ge( zhEi9$w7PPODZ@mZNGy1WT-A|$@2PKu)r*81;c{gZs(Y`nN=0rb))Ia;^n+&A%il}j z0|uJIiDv894%s!X946qz`cu4XCrcLgk3wCnrd+Q&McA!1Wa&Ha_JM_HbZpTRrcSNX zPp~3sJ{zlcl&?hO3q_6VXiF;Zfm;5?$e{&VL;$?%;GjN8laMVusxL2>Zd%>-p)1DT zuD1|Ch^}&i=a=HM-V46NALLKqppkTFv={&vC-Cq&*XAP#^S+Rh3d0ew!QC5-tkb%n1+ihSZeRpg95gB_+*-Z6Coel)p!;p z263Lpun+~?+lixok$ThKT#;rwx1Xj-?{7{}b-FhH#JaT}SF|bDJua^JZ}0zJ z1d%M13#j;t3_Pm~tfT!fZqC)mlyl>kIg}VO#|323t z%gaGg%_?{~Q*^q)g9JeIveML23zbrJ%NmLk63)2O1dP-^znGIPPzFTIjxA1GkXnck zrFgCbPQbXeL8CGJEaFJ0?x8UFVpt?^?QvsD5G|0S5+B-mF|iz$qEjXdzIOchMWx(T zaUC6AOE)W7`SvAAP{XY`OW#lqNXY4JgsB%Ynu3+Tz|i^q69xb`3e$UM1AX626{n3j z!@RdDv!vD8FS53oAXO`*)y=$kJZtnUe9}4zq)67{w_=Wa zbAcatPI2ooF$f8E@5$=US~jlA>@dnm!$VHuPF>`%23lBGIL)TP;}PofOlWt)G1RER z%<0?a`N7_ytsw&BoN_ApPwzji{mc7H2cb(AE+YkQG^4sXs|G{&&!!^(?Nb-sBWI24 z%6`68O#^tohC1mI3oeO@FK`ewWbjbJ;)aOA)0QqmWHn@SZP zQ(%mWMZOf=jh~xd?LxSqdj${hCd`;~d^HyP=KTV+Q98dcALUf{?dQ;-0(yhyjq_Ti z4ro!P>eY%gYvy6)(gtQAyP_VR!t5eb5ya}gamWxK$MZ#qeAA5#Y>%Rw52X3-H`d2J z1-A@N{@?5X#H@cgf7CynKWzaO9mg-pXT8VY?DVE*?R3|<-!Kt9!x4sW^XkX~dCNyuGKHhNyrUo@ z*5SmA{(|hSCnD_A#zDZG32Uj*SRL3yj+$jA;4iiJZptCB1UIVLG+G;3n3aHWrU+hv z(0QH!42XdKT7Tnc?rZ1#yPOWQhe8qy z%$r&I3+*g7*9I@+S#Z}}jgSE$IE z^77a`^8319bCrNdi(CxMVGSxo`_GeNBHsGnC2*MF4pLe|oFG=I@6c2wGVQNqpoHlD z_HPcK*5SI0>BVc+VTi95SutSb2B2~xRG==hB2*>qU>0>(b0T^?A}m-aXiU-uJ&tC5yO0@}?k zc}UEY5IS$GB|QN;zh6Gyf__2QaqQxF=Ey+{$2a7mQfdCfyp)Np-<7Q-r&uXZsaz4Q z)_ww{J=2uDx-6FKtty?$?njV8`Ma+M=wOsq3 zZvA9hK6yUZ?zfzu8iU95ZlGmpHgmPozW5cVN+DXlSO6F8so)@ehxlzw@{e6`rGL-$ z1({vL0nOKrOMO8-PTCCbI?eo#cc5X5W6c_?YYBIkE|O zfI^Qo1`V|C7&I77+&d=!e$kc3uLD!naSOf?RUH7B{|@CQ_Gj|LWHETUmlt{mag9uw z@TL!9U^a^NK^3h_-Gl`)56ia^;-Hc1Q~5rG{*9E%(J2AkyRvHDi|*U_59_I^hj}3B z0_4Mg%kCAne`WXYs0u}(5f`_Sc4cBBpJQV8gkv!L~M(sk2Qm_!3mEa#$#I4>0+>JjR-{wbX0R@ZSC4W4& zu!NE`#zlC?mEluU5N_zU)+1)aI33hUrzsZGW$^}|PT5#YjlG(^YIro63D~WVPWDdM zG`v)ndv@tD*G&|IJ*^1CSKYiR>398#KKvGL`oCzq z8U$4f&dL4gOFwp%95x+uSr9B_f+te!=|HE1?=_y)+6}s*&35y2QF3-O$XTqoH3;3} z{X2lSv_Gje{-?4>lWB=uwGPWiKb>919oRQ}t3BLHz$62RRL#^KmKq#cydUnP%A(L> zxCb$!`jxrI&)_juenAH468@&_zpHx-P-lLKwT;;Yzt0^uv{(+mds8;Sk4FI*vX)Oa zRqV2kU-MQCs}Ohm^6P$$kBuN(f9p=@beCbpjM9W7SE(#-59(J3!Lebl?T&OQaWZ^ZiT7_es^a#xd}q@(p-M-uCJC)AByWZL3-7=4gRtS#o|L^3CrNIx+f2^#7Zmb7rwe z`f&KoQ%$RakXWdrY1z5<(Y063W-JQ}n9|;veec|bE|VLVbAw1VUa3`CQjVLuj}t*% zaWIDbHNp%ASjiPePYC2h7!i4HzQsqi7~G9osojb2Y@yQc|j zx^`h9_BIOgV4IX!pqg6vZ?6vjJw6-#5uX=IqG^FOnfb+G!s0A=h`%(dddA`UiLw8= zmRM{!TJbY|;^C$Ci#$U+^wC;8n*M?~gy*J42HBxK_(4Pog>j;K>TdhgmE_vD*RVj= zX6voB$OsGiBxt;>YLP*wLPiMRE)Ev^S)%r~359civS(WV6b&!Lu8Le&t~sPth;>}( zl;?CP$btvdsBVmyTR9^RmS(|&T5Z%bg)~@B_adk_B;UIogd~hfC2M1OG7DUSpGbqq zpTk>8Um6-85GBT6xt!%lWMJ5bSmFvWzYtt)>1yt)eTqCzdvCW^G51-v3h)x6Ou?qc z=G}wZQt%690N;-R^VcOk-;Bi+yGf=H=Ax*8FJjGjx;&UbD6Z{e1-#zRXN%0jFyV_htNA9 zj#AZ*{T?M5A7Xxx;zkRC`H~pB4SkJvj)~^1e=#CLLRO3AunNo^Ca=kbh?(ckE%Ywn zfdWiykRq2VyymX&*?|$DgMbXcjJ|T?`4FW64{T$y$eZM3W{l7bKD)d8QR0u}wW}`~ z`p$85FOY#4q-0W* zkK!FQLGqvhILGl~%hQ&4^}KQ%a&~3F2M^wi4z|I!U@(RLh!Tq%pU)dx=^0=^1_z$S zw}a9gGC{Ro?Nh*(!dZ#AB`W&y@RSzIJ?O>6)+M{%33#Pt#;T=5#O4&Ilf&5G7hw4= zN1S=Grd3UtgQL8SjUNs788ZC3KKW{Eyxk1wSZhC8O~s8C_{5(5v^x%A4y(A`AFsB| z>1e;&lM*L=0Tx1gv#ou0RTnKM2YnFGpUS;&Ljv0Twj^(uB_7100C;!>+uXfujy&U% z8T^hC{4}YIRsG(ThFo^qSMXDi;IxVC6_YG{QE81+?AG!01N631$FbFoJjZB2w>cpR z^QY$~qwLvtzq{7R(7ot>Us=UUQrt>tBsUiA*)m2kmOO`$AUtFV46}LDZ|tNVM}9IE z^(uPX00X^8pmT`@Vu=CiH`?%o-d+E;D{sm)A0V?^>2~|4ZaGdIT_>1 zGpCc|J-k?{f?1QXmn0kQtpxfi?JQj@5R-!ER%P=NzcJvzLhmW4Kl6C-PCX(+QC4!1 zqkDV7pf?)%EoD>4icFYvg@%h6A;k$a##B*E)yB9LQYog&He;vXnI{KW*VzVmi0 z5@0TR8?;ub%5L+=^zwOJb>Vo~<>V-F4aYvER|H<3vcAmfg||R3a9#$l_g4VFDB0;z zoTv<*;|%>#KFI^_E5K%apTMWjk2dK;M|>38RgM%_Lz;|W-g`$ zLaoIOoV!ignAaljEH8t1g4Qd6=t+87qiJG6{X;^;NIXWY#%|h}ZL(rYpadPo{AoUR zj9H-4{MnroK%Q|pvqZ+0$7sMmY}!M?1WHs4*QPF(k4dC&mjeu(x^s|#2|I^gp4@S( zpUc>HGlZS!s&F-x!Im2*w3vb0WhSm{{y@F!DIkEw!!!9sU-0^%OW^K8l>K6Z<_CDk z6s?NB))v*4K_6K#-{ANDuxCj~m_~xg%qNehF>+=VGM`~|RZ-s!8T|4o_dW;~q?l1Y zkC0c&{HUKd#}+=Ec$E{=y=uTU`91;L)ZFG!h;=Pn{|{{KI`aF%yxcK@6bC) z?VrV|an&VHNH|9V$}0xvMm*ZVclPgAYe>WqgU`gXFn29${EFY4tQjx$0vh1IqhFC=(oX(QU1+X-BJV+V|;dR29Q{W{{69elH(3VT!QT9 zH1NaZ;O~l@nuC#wa#%F2vF{1f5j?ZP26BK%h4p8{Mgm|AJZlI1 z71Y!E`dD)cGB;)Olnur{bdx%}>ZZ5uxqR)!5QMxeCd>cyyda5qYTJjR8i$2pQwPey7=z z>eF5oV9hij40#HE%T{K6abcL~K5=3{v~3B4+G$Zn>;*~Y}&bn&3;Rt-GROYK@@ zEGpS>W&!RD1AmN((=Lu=kgS!@8@OCYXe&GOqCglpR*eb8Qs16tqnE5OcV?i;6R8US z_J?S-u`i;{tm0W}t+9^VHyU$}S>YZHkRy%Cy@;`inYy*G_x!_})22VI{S=_n$Q`jd z&f+>9uH2{eJJovKW72yXbqF$8RbjgU_VO&6?7My>B3*SAG<8f4XCKyAxjcr9!`3Gs zy6R8B@~!&Q=3~v;Wkn2l{xOGiv;U8)?~bSXi~m3Oy7tHxqHBfB$VlW`CB!w$42dFJ z_P9n!DV0^$B{H(N5M@-ditH^jD?;Y|9rgKqzTfZf@$jenKJRnR>%3mi*Yo*$z0a*8 z0XapkymN+eKOZXYZ)s>RKHD}sd#H0gARzCtmMK`1uc+8HJ~(Cc=hd3!WnE zjj}CGV!5jh#x7-Ywd&qKn#wGH|He$ig+sB7ik)lIKB1cP*%Nk`PE{ccswo6_VqR9%LEldoWPE-<3uX8@`>$ zP>B4P%EVt%UFyn4-NjY^wC93L|BDi$pv}ITK>3@9M!Id^E;Ey7+;vENe7JU&;L#&M zV%1onSFa~UYg`oq%F4+LrVCfHPaS)AS6IHo*^?N!)?azGE=U>JW03#pR^+{@w48WB(%x) zY4)ntYQQzj*o7;9Y_f5Gb3;xLpn86Mx`BA6IVZ1NP2FgNz|_5u$=66zMAP3Lmr)gWtNls zU(QhilU$v|4uO1lfk$Gr3p@A=ST;JkKivyLHj*y954%+bRXP8@ez~8_X9A`ya_7z1 z>-MKf2?Td%#9AHo#WLMan{Ac$f$oKN!i`mP9M9)Yxh{9-3w&7`k9`HR@(S&$mRCrs z9JRVzUyY(9X&*l4u;y-WC8^bHZ+_1vU-_KFGxXkbli?=%TFFP|w(_)%#l_9qOA{Ox zBvqr8CD9SVBuTH5N@`1L^LXzXY8d(o#kF~jmF<|vz1eJQPtpsV+t-=h4$X5j)b!EL zjonV(P$aApa;q$!7b{RJ(W3tRg#}QllHz#C%)yPG(I9K#g1Xt~*M8u)pAB&+OTE3K z2AP|K=sS|Swe`och%hqknnIX=e+r)0%XrfO<*Sq${TieFzj|~NFJ!kRY%-&wd1`k# zL;xx}J~z0&@!2k+@Co|ApV6|$GUG1M-6_f$_}x;dD7J)Z6ad~z2VZrA#xhWN-+0GU zs@xsB>jxk6%aM$K-x7t0QMwCgzk}{?*8K@1oEy)t$=J_5+TGwG#^Eh))@N)_aRZOf zDRCKjq$Vu^f+_#Z4uuHy<-vNzOFQZ`old7j4`$s@-O-5mjwza;IX`bVo5}Fsz!)mGqk)HOMRB)k94)xB zJnrd$wb0!gq=cnnB22%Ss~k`TvKPLRWBy$%UR#zHMDYVB14C@5kfH+fGJ^nF@q6#q zo@k+naQXc+n;ZU;w1^4bNbv9Mkn~Rx#V70Q^9&XZHYSD#i6{8N8Ruqd3;VNa4hO9e z_&|?ZTq+j_c+{csHiKg3ObNZ!5! zcei@`;H3J3-J#*l?XE3y@Umjal&FsxT!HhY;|BjOEeqleHr9Ub?c9ghOUpE2HzaF$nc4q+`6V6%u7Eu1N83p@=O4&5 z>)aGVA<U_ za?PU-sZXS`0iL}d{;UDuLn-}vR`+MZo}H=EGYIZ$d)#fL{O{HV6OGD0YaeGJ#h7{& zPa{7jJM3_!gT`~j1=}e9aaTa8;wS`ghtZQsI8hVpZAUCH(TJ$vtH9ykyi=Jh%1 z5T)YFbL-OY#~XWF(SRSQ#l7B$0~*}LXekSe6QJJ8)5jDA{#~Jbt}Q~&t*i&H+t^d& zb`>Slp48)|-#S+Z5Gr(Ua*V#j5luF?i#WdKKY78?kL{oJK~o8o(Szg9@pV~slb2^& z9?2f#_wM?rRDYp-d%K7nj2#Q~_UFA-zM|VrG_Xufgq-xdWylQag zjxFKjZb?d+TO&)({D%;k*Dx4r{idq)c)O-ve?&mE2>SP zJD%(Q=9uNcH^a9THxprZvtv+~tJ`_xAgzcJD7j32JhnoYIzaHdh_CRyTam+=+E)DN znV3;;THpcAkK?*)F9_T9&JDJHZ07EExAg-80tdIw_U2B;`hK{<;;8e|;c#OqAkK8K zRDt^Lp=2yEUu`({?ZD?tBX*Ukbi(q`(aw`#yrz_}!P zMzZhZEG){$D(*FnXC3}%*tCT&MKL$KYqA&>>NMl%PZQMAKNkwKLclcQkQRg zw6I)H)K}bIeS61`ZBgWyT?!*OEYcwuRtFBup7b9#O=bjvv;BwaBKbosK#TsE? zg2JUrRJD(jPb>|%qVv;5L;9w-_I_ zU?s+OLaDH`~+9{4h;EKR>Va@Rg%Zx&xaMK3-bf?Nw>Ek64Xt zbw#nQ9|hOTrptHx8dHrI2|5=C=qw+D#z13ERMBQk(DFiID9P*g*%ta_F-4blwndZ+ z-}!Wlx|;;%C!BdY7urm+zPiuPavBbwn<<^Cm$<7jdB+1O=459%o3;`m}yds`}#sPR+xX6e_s zkafLdTXSc|>{iCg4u2pqFW>EDS|4gsv%y=55oSrPbinL}n}t<^hDk_Z3>+3s-DL_I96`G9mPljUseF zTPu-x4FlG!+k02? z4woDYl8=w(oHp+i5(~)lF|r-2T7X7A*)!_5>UV?Z-EoKD;#lwtep=4FfGN*jqDd$} z(Kpg#s`8~0PY)W|$c@44RN-?7-+WaZ6Y}hBK8nyWWCd0kypwGw3lW;I0o7H`LTA&y z{c68x`5xXqbF)aC`e}NvNEKqsuX%HUeCv$ShFXPTe(7ULvLkGv`M5MK?(R#vjk;rd zCgWu9Ii}{@sw|HEI`ISFJB*zdF(7Fa18a(^8O3!a9N~0t`e-O`(tQpVUL3`h`(#J} z=o-&{Tu!k8WXfLnNLx``fJXs(?RbFu<&j463A;!lM^$vk+J?luV|{fL0>Rbp=ob_k zJ~P>gns@KwTLaOaxjPNEUa2c3L+s~1Y{)n4JToQ#E-GGIS1{&#Z~Mvx_br2Ja?C*U zxW%=rI%a953eklaa-^#6X06p7UM5db3>mM9gVSlT zgUSy5IX76CQ5qz;2MC;u`|HYV+NT=L56J|+BJfr7)*E{fZD77Ge`l*ckWYR?krv1Y zL_6|wKPsVHmYJn4NB&aKF_%+(_15*nVQ94dYk2b*)&#-*>(?@K9)X?xa)h+xaP@Ii zq&^Z2!J7wBn;!|^rA+od%n304+@m_kjXJjeee8|&7L*2#kB3?XnX3tY6k9U;Slv4zeGCIYr27=8~iLd2P9|{q0lhRb;9J1 ztJQQcqOM|my72NUZxAg7Gu8mDaZP;rd8f`pk3)>OQ|O7vD@%idNei7{PwmMPk#G1Y z2?eAEj=F-JR@phrR52tV_4wUY5Z9X}*_1zxmj!O0ch;o8WL+UAMx?NxG`!0?6GxBl|Yj+6ibP^v7a0noJaq+Mf8M2rx@!i>Pj)DL2~K zmifjmnp!FM*eM;2p+bNgu8Sm$q#&xGoZUqNh|@@hOi;+ufbA_O2cL&_6%S}YtO8QQ z+f4?`{dQSFLdkDabIy3xLnV_4@U)w6$TNjG7juwex+gY=ejjK55@_R8lauPpuzI{! zM2&Xog29cM7XY(-CpGBim#wpwy$ep5LDiahfFWO_CxwQ2iIrEjr-cf{J`!PIrTY1X z9Xmw)(uV(TQ^ARg2Z{m9x4Jr`dkGuq&yynNG54xk&+B*<_;?L+gW@xG`3#MyhhT#3 z)NaW|#JhXlBJ@aaf2`B$$5YoF4%KCC7Z_3O20y4HlT_blxz(CuPk?9H;(diq7*|lu z3L;&3obqh0%7L{>p9}6(mOTEl%bp0!<(|2g-`{eST5R}nV)f#7Hu;`-d7D~9785>+ z20XkH`+y7AgsJlKc=`Nzyk~JpH#zSIs;CD!?AQ?#fgPzM8~>>Nh6O~roxAJUiY3LV zxq`KK$%yV-ne+Xm=76nE$Hx^ETWNr58hTXZddzb8l1=Ltqq3Wj&#?YH8zU*^?KN`e zQgez^8brk2OhQspr;ko>=C#&O?JgY%OxJvY-ZvPyPwCXKAS1sLTkbyegPSC3_-bqM zDWZ|giv;HsmeiC&+lc49QNbPw8e9L(ReTy+U+qSDTCa?SyOWl%#04DnQR~rKNr&tDXh;iOY=JVGgXopj47n zkHHycxY)eBxDM_;+0dxj6=e6VFw&gr?Ozd+JTI!o+8N-z7>lU2-z{hQ&Ora97r^^1 zSHa`a_Uf=ERs)c=A;iD%R9=OLf^6tS4KF~Cj-_Y5phU{4uQFxYsWW1cfSmEC+-XV- z&ATPu&Qw8)Ui!ydugDSy#?z}gcA2)Q0Ec%+S&&@n<(-7H+4Gl_!}(c3aw08|P`P}! z(&x7^3HBg|s*w+2DVu`5!E?K!#xclUdFs9<5@Zd2?LYR8`9XQjLu8H3JgIV#MXZ6l z5+!Kj)SN7dABS==z(nNmXh>W~h3N&`+MUO&@MK2ejf%EtPdLq>@cdcp#5{l)c41?uB*4eU8ofUA-A zru!hZ$|qD9z!~%llYPY3T@A;*iBu)d3g^i65IHU2Mab=tc*x*;*Wxiw zQp5<3SSp;yR|V2Wwn#9ML1gJ#VF{s}fM1qVHMt%V28_fwDnNwYVR}i_Ncn0?xO zp0JmecQAX;YvM8}%AF2F*ZWNHD1;s$=R5FSx+_snr1q^dcwqkx;-=&b^g7>}kIfkA z({?L;`ixoRre}(k5a~yP`y+V)2^?pZEy+P!@IW(X%GTJ%b_=5M(W+}IA?a*qOPo>u zsMaPo+-)9z~a+fb%2IxLu^qcU~a5`}FB%@=2XDUdUVC*;A?6 zKI4w5rh=t~618<5q5#W+({B=t6EnK@;XX2}@C`4pQDT-d$roT6%kr?JK&XNiiy`VJ zbdt9qf;Q~d(H3z~Ayj=XzKrbCO~0_E$!@E0`TP^&8sYmC8kZO6UG!3Wgl{mO zhVVTVI;pac83Tg4P6;rsA<%pvgqGUv7Z>j7$*s+qz=tA`)>!5AkF`R4E>lm#bQ=Et3B|g&ts+Vg;%+ zM{!RPxU~Q=GEppvAi|}D8r>$zcC#ajBI+Pbl|QyUEoX$S7+@BFC5h2q14Y@1@aa^F z@N0(fpT*xNr)z_LC5UzzfIzX!;xB=)fT$2Kz7@G_tV-IVec!DXLV_x9fl6C=aLMSA zk?TwI;nB#8+7BFPKq6?I<@}W8Vu!pbcA5k1Qu>}OPVK1RjB+TrmS$jb0$jvX0S0Jm zV-_Ad_mW8cw?2#{LrZb1b!{Gnm*-ykADG>^!%O_L;-y`LW{gY7+FkaO(D%k` z3ggTu;8h^nTKEBim`-%Wdj=VLaEoS38Yf3~ke+{46?&LQ=R(f`NLXs(V*y@xYjo}8 zVZ!!MYRI$w?w-dHieW2wklICfK!CY#^2`&;?3o{4T8Ax<4;+W}U7k7zO+WPS;$VnX zKtyRuoR)Dv?$`Z8a$ls8JeMFt>cx&>5?J?M;GH{e(h_TGl2dz>dgAC&-ju2V(G+b{ z7w<3GB%JWdAAR(P(W?)AGmQ7R{rtkR5%fx&y{ZR_!L-&20=GO_bYmj@;>6uXWEUJ|TBBiEa!OIUk4khm{Pa)DRF~j)rh^Aob!^IH^R6xr=o2BnTo$ z!0;18ntxerXrl#T8L8wBzQ=D^U8xkZQe(97a`L|>QaGriYksZc^#{?kihn3_;b3~8 z9uYLeQ-iEXR^1tTKJ={XGC5`(V@Ig|S~utJ3cuz0+U%;sy}TFg#YT7Qm}RZ^P9=R+ z7mWKw&C=1UxQV1dHq!!eX3;;q*b=Uk1w(%M5yiKr;V~kHa+U^@Ax4^^#yk=l94?6HPD!Pt!*u#zQt7{1l9+`KJKm==2XRjCJ_uabKB_^YI9tuEHR} z!jFr7Zcer=Fg?4T9>=mRKT~pwT7w<)vR%~qb(O_r5oyK?9+-ykY5lT~Mut%SCF=Yj zm`J7ss84u_n}h@!aBz=B4j43=!Va;i_gu3H4=%Q*M|37wBuYvcoyT&%*A2c+EI{*z zqG^R4#}|Q%4s;TeD@Y6t=o=0SsgDaTX3a+P09+ z;H`REr9k{=bm5Rcc+3>yF&gk{Yw9bqxN8k5R)`#<0`$jKk>Vfn(~WSih8}qwVX!4P5gmSK%GEPP2|5tv2*QZTWpg>nb~$ZZf!xkV)URi* zNIoZ8#!G;!DBPrna&&a&w^`4@Ed%9A)xQMkad`;UK1eROIDe-Q7}SUC*ZX=|8D8%g zGIV0t-jWs{7?}%l1;-;y5N>dD{tq;wV=aAi1c)XT|B$AM#5a#kJUvLmd`gutj1uAi z!i}8W*#^lbh_y#NNZjq&_y>!*GCv=yARFDq#%E6E5JBA2steautV3)#mE_^B*dG?u z7`p{lDnRpqyT(D#$s2fC#X_lCVvKnEQA~L?^w;9{`dJ&@{M16@4;%wyYWu5d^KQXAux7ha009Bd3r(*^)5dF9oH)DUW_^$s9`s z5>9~a{;DPge&p4%>5HvTr~qa0$z&A-W?sf!nShWtXP)2MWwU zRkz=OCXg3AQ;a;4Ah?4Z>VyW#H>V2xmZm*IINNkC_`cgZ%N_jGTQefaP1}Zl)Y$)z zfy=VivVcF3;K4&AgamEDe(aeeRuh(ra(?>|L2zi1gWhnI8gRMy=?j-s?8Dc36;6Jq z?XCF4{z^zxv;tcM4|lP%Pc9FqUbJzdHUZF=?=kAM2+BrRFyL-c8bP3WW3YziDbWOU z5UVx0JuhjMBp6Y@D=*#Y`pf_8H==;_wsIj#mO;Sp3glqD5=VDZv!_jb&QeU*>M#QK z_97}H+6l)GoO+O*!u^%q!rmcoF2j#e#b8RBuct}(g!`?en)>~C8@w~GC3bSI5OiCe z1nM)0XK9KP5@g!HJ8=^$^G|d&M98V7+ZJggR8XhylA9c;a-fh zpN&ZhD|;nmg79`fA(j1T`F5E9_;3*<6>Sa|^N_lNe{`|_TbWxr=Dl)xzLE#JGl z*}N$@+!Kk4T8wt1q`jB8noF2WNWDicO8;hhRL9JyVgH$;r61c9d};L&DGj6kx{8is z;e~Y`9k}XO>)w=;Z*1-*je9ppGEZOM4K2!340P?>IvaKaLrN$*7&X>?iGPuy)yG3;~A zz*HC)k^$(GSWdtI&7hcixk+G6*(+9POHG+&XIZQvGw|1H-4%1$ADtJCWjSZ;JGL0Z zZb+Pw`~I+76`y~gPjip4In8$Ko<21%dL1BZWvoQ?~Ra!oR|@tI{85jVdG z8QR;w#L_tTnKxEkiC>fZRe$QlF;@f?30aoM`=5!&@7g(gm+yvlm^6=N0yh*A)uIHH~I9nns9kam)UGe{D)QiOEzg(>85 zs_zO@q72WuhV>(&M&-eXQ!14!;+LX8<(+iDQ|9yl)8`*6{#~Gb%(Uw52fkZH0So)p zPfF%jg?|a1=fdTWe|fVL4j22paAAUB7ITh4$W^OR$IEVZx1Zfj7QoWrgpi=3!RIhe zZMX-gTk&$@X@}mxV>rqQIEu_Vrz=ZB^X=HJ1_5JrUCeES`gO@6cXySpj26Q^7K2dA zjnTR}QrGc~Yqj=%5EoLvp$qz>HBC8}DN9|32vI0;ewvLK#iDFrHe^G-m(G4?cQR^* zfet=htb%m)*t;vqrx5@q1r$K_QzAqY{4$Pcu9brabKj;-cJiN=$$}+`S_5%jpp^%i zq7N6e`LUc|;j0kOKP779OUiONZtpHFmkjmbY&sT95cgJ4mFsOsW#f&qXDcX>VJ2#x z^aM02Vag&vo^RcbX53xcZxjAL=|t|IZK0Sz3i)Io^-EmmKZ&)gavgz;dmpPkK69UV zWl(S*xF|Ohcc;b3o~nMJ>A;}Df?JSWiA)sW09wlxS%>4IoLBA&3#jiE(xhcC^TNO7O5OQm&>|L}G1 zxYP*qbqaz?4IRW%p}|IVGnPXeuU)&gh3Za+_LdLYbYl5ItP$>;FHgR+-~348a;^s| z3x&g;D!E?C3>-vwd~!+p`H+3*EG6bq1LSl#b2z*bHYUgD z5&C=OrrhA#z1@wU%!qk=Gr@-U=flZ>^qCp(k&5rzV2M>l-R)Q3@f-#u6Cpr6Sv#lX zN%_!-=y0lrz>8`$;GHg6`(Y&f+41=U^%VD2TDau8PwifmJv_Uucb-jNuU3xa}c`GEFcUXs;fGRt}W2p zD>2KGApkF<0EJBj#GY5a$Cr7*bJP&C9bQ{~l(F^sUR@%fG%90r^@hLs>pC(SPfv!? zU>D?zP!kE$so5IIq26pw(vlystT;i$5p`4gxaWQn`q&QvtWaaZYyy;}XN}Ml<%8Us zsS})fb0em3qZQRJ{P+AS6G+wwc6=k;_|8Ffw%r_*f4yl>^zj8rMi#134tm7Jf~&vd zRP>iG%LT6&KSFBIG;)7@g{EMjajXnGP$$7SLu(|UXU?olJ^deoCQV=j1vBnbAo5^b zZpjhEU4Q78di6Usf{_&GI7?lDR3%4ddW!s-y&dQbSNsyzVC_Vth&Y94g(>|OPek$< z4>TT3^BJ$_C+=Q~?JTgao_ob{8iBdoEW-~Xi5jIx_&{nE4_JHEe3=Ayx4q&hjiAV~ zPlViy;Jj8^CrolbB9GovbhMIe?}^;ppC{sZXU=p^eSHxIbI>TFiNjsb>TJ~sd(V-N zvH~F=&`skc-NTO@mVaKL&ODlYIOG`rp<33Z<0Fw-m2c2TREv_y_jxqkx)Lu{J(7_7M&LH)9n)6IU=0QA>@_ zt}Ccszmb16=ndC{7mh3WjD`x`r&l&ir;2R&dmmJ-lsxVs_r0aKGfxaPTQUuLQI5k; zQcqHvugAh&G5;R_jPz)*SWx}>`+V`TpsMxN`Ae3w5818xj&PKf=J-ii))W1ZuRMGh zfww-iHS<9@qiW*SI;8(q5B480RtPFVe}u~qRrw?vCgp3zw;Bc}o{s7b9DBd*)4(kX zs-DoWu1rM~14XiS#BOTT=zY?*h9)@;>^Pmo2<_f({J9$` zpj|#wuH=v2rzgNAC!mC*L??x6S6f#x((pu_uxKWp5dF&CV-9(7E+Cw54VRi8R2$~! z#a)qfEI;om<)97#ojl5d6eC=?+FGTzXxL|VdG~w_8SMl2N8BEb2K=}ql(j1wraJu} zU-E@67Tu^8)1kz#-ka`3td~8@IRz#znE@wmKH#M6@MRwR^$%43W1hB7-yoB(cR%rk zbh%FQ-H!^xRkvn$38#{t|4yks{2o0ue?Cxa0as*{)&}JHkhm)lYyL03#6@p8o)QU; z1YGxS@;r{rN=<>bI$DlT|BT3mgCjl>+FTNF*pDT$YWh#R>nOh!PX)l)jhXm4hlBg< z-_{HY>#uG68jmcYzNmzAJFIH^R|D7~a0!qCW#H1>c9xnOe8)JEW?-ZexIuNqh}#S3 zqF1%d z>Zx)sDOmCF5+e#&q|ef$=1)PK6#*ZuJjU)c6-9(5b=%YNOW9z^|8zrvXa;lVw3+D= z0bOhdybX7Ef{D;ZPKWJPnwIS>v>B4MHt^OKxC-$blLZv_=($z6l;>I_zD>P2U<|Y; z{yi{L2C4fepT1ZP>(f3`V*O5HPfN>!Gll-_irH;M*~CgRd!F7XEIQ)FxFy|T^Gp56Wo9pmE$&eh&Si}D%&K&X&@a(LM8 z!yQnAJAkw9Vt&)aL<-u59?|=bkiVg>s*m8iCH5CU&92-BI9$JctxM{sin)lYcMwdK z9AAB=gaTx?3GHN{Rz!0}*pZF3h$EJ0A_TH5uK%zsjH}vOHX{Qb{OEZ`i)_3S6XDITwduW#Y7?G?Rp-ina;nZND6LYX=6z<*f9<0QE}M4hEqj^23{_98M5fjt;qH7Q zTmn=(5;q5{=I&(6%FT}3aTJL5Nuyv@*P8}oBmL?9sLgK+RW{Iy^le;qN&rzD4E+srdEzcGJG`7QsDl^ zs$fOu>=R*d2a0(LUuk2m3H%~?GidHyxJ*`!jZ&Qq5(xHgl>@l_0AjVO*?h58zcI&M zDgUn@tPihPATZMYM<|>euBg$E=;EzqE*DLnBVNg<7(zQlHj@A=Ksn}55aSp-UvVx} zy2sG608#ZmQ{JkWZgyr|a=_r_fpqQ2$G2K4I~fF`@?|%ZL$MmSlr-!ilcCN9_BZx>?hAKO9=A; zwD>UL{y+>t;((0;>~ys_NBc*7I4^!gxmt3x0deC0Lr;C7D{VcZr>vAxAOS{(u>5@3 zV9Ypgdn}y+e07||!|14m9b-_}=1TX%=P!s3K;>>p;8|9A*|sV?r+ZrspLS2?h;KXd zqp;&-65~75)ZcPSQ@RDox-~6%y^cxzTSzx?b>}khUb)%l|4DrW<&)?YVuE;kwgJ|4 ziB}P)pb@xy-%8`*QZY9*D>7Ap$@Aho+f0lj*AOMqGm7j!kL~-l(Bnk*SQd$Uu4m$V zSp5}|w`#Ql@cY+7JNJJnUQh75QIcmbQ2E|uG)Hhj*x}?N>EWWiu7Z3^nw)c9z-5@d z%%)&IA+DhYg*}i^@0O$iF_xD;f#L_%U=1Vq;K?rG5H;fxQTkz_`AQ5ufQ3UxI=~$? zy3w3)(r=l0z9PGR?n6{ZP@oY4(`f0LYYBV4j$or`Y~PB{06k-rTq;osr6+v&gfD`} zyoR9(y=4*G)QN}CMINhq1{N*qxV_#=aceGzSV3TO?bTK{J-pDkQKAJSPl`h{JfM*089LQp=Uosi;)>4O_>67u6^fkZe3QIH+3fBJg<@guLg7$tfHDleIUg?L&8YF}%{OjKjAC_rfhtx9}!oI~@7 z0^y@-ic~t~ReUN`?`Gep4MX+r`z=z9PxF7&yK*}{B|`H&;_f5_V;I>IJ-T6P1xN~f`jK6lb)M*99?6>cii>GPa{|WROZcG0To<3y0;AwBcp@AvZ_dc-D8YJ{&Qich^JW zh`d;EiG(5JARQ7MK_>Zzy&wW-^{;@yJNV(v5s?RD5Z68Z>`Por*Zv{$G8ABq$yK;Q z(%bMM5EzJK=vsJ*@B|z=xU=He9hwLMW`-cbQtG;asoJ@;ca6fp`)6~%Ct({F-3cFZ z|Hz4+MY5dDA?5lZu6!0s{9)ioi1GUp9oxf7i)g$DRW4FY#Ta%tE02wJDo8N}70WsP z?^uF}7%JQ$Q5G?taw}*`y7BNq^##XQ(OdaEe$&C2p2;*BB8=Z+5gg4yXRkwRSL{-s zeBZlI#1lKmleU!XU|n$iCIx|L_CUlDQykdb(+1X)z&fpqm&Z zQh}JJN5yb{OQB!c7-m?xem%Np_>dm3KzZYo|4jy-o;mxz7=YdiI&rq_puwkkJTH@m z66`V%dTeJoRw)gz(+>_`oxs8RUb1#}dt%w15re0j$GK*HZ@quxJGC3Td>h&YnG4;~ zu=MUZ`UvI5FS|zMhv42b1kQDU&J)6wfTKDsGiBvf43w?kAzUP@?4iz`tEzQ{eTcGi zjDZwTyr@0Az7u>n72WT&z4fWyLfE2D$uZI478HAm02`GSF+}CrqA4f!$E$A;-f2{r z&;Ny~aMV2h6J42HjC)d~A)tr+;jqFd(5PYtJcG#*vGlmNL^nm!kjI!#L4BY|>q<_d z^DAme4szY1{fpvq} zhy$T#?6H_kP-iK%XbP~bF4HsE#JsNVTKxna9pIZC z0S=mp+pypgJX2d3fhRnfD0~C{>)BZU`wKn4yPz~c1N0{cdH2VRht5jGce6qPwrl(9 z)?r`}IgX|Fb=2>bd zlXPBroX>cX0%2urd=)l65}1F?>mdPg1@Z(h0^RRF@Z}2S`l$%z<<971uUn+{1owL> z)=ECx!QyFHX7v!O`{uTi9a;03DM`%}n3jox^H4RzLKAWRr?$*7CbySO{JNOFpX~y? zLM)p-A7<}q{x?@wk5K?I$wvox6z;dJr~xViMh~d2c3iAODud;%nzFg@q%Sl7P)c(-3)-Z zpjUKm=PENKP%ctCN63NlStTDGbr#$qGAl()qf+<0(~P)8#=L`? zpDlwrDd0^!56)ipU1%8C+Y8XyEBMk*$@9bGeAg}IoVYmXKatN;K+Y>zErR)AK`qDe;o{>J(>pYZ%QrrW7#6KF;d_5Nw~^e7^H*bPyBl|TLu~i2nz_FG@n1D_ zbzdp|IV3*UTPXGmr1gH^%r#*^fa9)+#FwaECLR$kTmbPO!tu8;f;Mb=kI7uQr!z_eLdXrH}07C;1q<`zcwp_I;q!yY->ZyN+LiB1~vxSdX zqg{JN+k(JX82v%7t>cE%)o4Edm%Z|o1#~Pp);7Zvq&OS!>lkBY)YB`WseeV$VDDEN z0E;?iMY;koU5`aL_RCas{5T$TNd@_YInZ+hODk>A=mHENcokhqci#`1n-0-KVz4xg z--N@x-5DY7CL6lLMG3Gp0B@=@c?&KoNoL`3^)9kW8)0zncj+@(zZWn6=%wLgi9^o! z4^C2bj3641b#3j*E&(k3vaw!J(x0Kuz)TVu%c_xA*3tAu0yh)c28Fr*w9?9hZHoJR zACVXdPRa(0meK>$^39Ngpd!zhANK;$s7GAi6pm&J6!~y=EG2vXw7W#Hpz)`coY~7K zN}s~zWG>LJ#9e_9(DG~|u|QA|C1xrH(Ek3}V3VSX9p9OJ@bzKie$*fuLxwpd<-aFCslm*xo$cjn8N;!g*a?g(}4+Zk^)Vu}g|Sr|;i1H1uB`k~_TU6H{GZt^i}B zF+M>$YH`0gayhr$X7_BkiY>y1;mf1@x>Tf%CY*$tceY1ZT|h7}mt z-tToDO1-EVIMwjmb2D_+|K;*+St7`QoWEa^aJ%JT(=oDCb}BEO3NXG?83?W=#_Js} z>IV6igNc@vvq5j$q?pWGisCqUXA`Qvo##B)ae?M8LRKnSZ^!yxK)!YiB`^jU-HzL? znH`F5a=&;V5`po-u&;BqRBk^6Rbh0L$5&hBP!FYKT^a7Vb(#B7ElIjk!1C?oivyWkmqgQBZns?34XMMA0gLFXPCvAU-f;vnz1q=T& zsjTcpOuxE=*1tf3^b39Ln{#se`g0^UOeeEYuuntm&U+i6PKI}nq{NZN(gP1{sfC&4 z)oMtlQdL?;9wFY3&?%wk1=>fD-P;Ue9Gi2O;AhBZ6}sfuIRwm$PK%{lb6kvUP5z<{ zWRXC^iizITV)|2pL;B(%qPIL>68@o8&czNLu!ii`>2`*JVI zl!zIqtCIs-s{=)6%EoXO!p6(P{ad7%(}!w(g8~#t;V1y!FO{A+1g&bK|AL$(Y0zn75LxJuIV4zZK zo|pF|J@d%2$WEcKP73CbWU5!w02#sDzuq)XoxZqd;jyRa%5M2s%}fT~OjFor^;Qwp zGLGziEM=5-Fz5AXS4X5Mv`*Dt|Em3+@h9H_tvFe^QBfiDw7%+fxBv8VS|-St z60fx&vtX~+P0)?Rur(pj5u9F7b#PXKq;q&`Zmw!O^c7Z!EFz#T^U~-J(`);i4Aa7H zQVzDx@$jjt<#! ze(7%_N=Wd|k{K8XdwyS5{Gtce4t{^`;2Ek~YtPy7DvUSKl0!6#SKYZ7^Yc&FMd4eY z{=?9O{Oce8qF~7{6nSS(uwQ;{h+{mIT0=K_AmNl*fzy!*adF{N==OpjH!!H*IQb40 zbwF6}t&ZBU9Wv86P(0qw0SsV~z3Puq{7JvUoejTpvkdgTaZUztEKL=b$LPy0o=0dY zlK~l}_t#C%{AFwzhR*odlPLo z+RbrqG)}$}0D4sQ+k56n@!0n+fN`czQsQ}f=IPkH%4}EOhK-qo-pBQG!0=nDce4@5_^6A^!uJ;c5Ln;|_h$)B9Ad z)O5bEuxHzs^?P_5ao~5qH0()2eM7NAG*7M+a`SW0Z$no^GJuOulJ)I1X80?Xn{~TChPNGcX4H8pCv5No z6;GbfHqPVoVM|PF0bX2w*bf`B^`7yeW5}Rd&A}yQ$@8F`rK@6Zb-5^XA6j_Y$>o`_ zEoD9swX5shvtIco63A_{T@5LjRQ7g!5A--E#VOxP5lMc{?T zw!Ov+$F_qG)0c0bxNn0-<9uNfXA| z4Wl|I8TE+ z3+q!k*cM1j)fn%u27YGREV$bBfD+%8qu>p{nF=Gl2gKa-2%G>b_TqT}866sr-~I4( zO%I#f8|~a0;q=85@Cct1|7D_3DcHHw8HrWQwLtD%K_D``KTr7$b9- z<&^u-w=|^+i7DDxA{VI#Tq7q?M`3|o+yIu~P@}o3(nhDFC^3=Y9!>L9qlbI+j2!og z(b*QB^meOmF}0s}Tvj7+xe81NDSXZ-vRT+k^ugJ4H}O%e5{J&A&ql)P{HKSHGIX!L zF*3AJX0$-%FyYA&XvtUuyQGNBnJez^LJJ^iYw*9?KN>2N!{`m5cYb{D`fKaK!{{O3 zcZUszLLV2D6=|iBdIW!YGZ#eN_UPlm)F_5nka~3ou9bkll>m;lkl^#k-5Jm?`B;XND{2Tn_xAdBJ;Og@j2@Q_z`R*#>rgapqUAx zC352hGz!GHq#Hqw8+OleqSQrk%DMJ_Y;Jo#TJR10=Z<=vo5;T_bU(lUu$OR&_-6FQ zN&jy~hpKD41 zseU_!B|lAE8Enqnf&{@|oIVi>F2fd-B*#9=<5GzQ$F=$3+vEmaxG*n@yMEBSQJFo7 zii1X(Li_hz8RNgUyo7yIW*skt?x}r}r)BgzXju0*|Lwp3IpspWJ9#6E^Z%pjtHY{n z)~{!8x>E#^ZcrK#BsM7_EvO)f0us`qG;A8_?vzGp15gB&?owKm?vRq)-{AY6^E)5^ zcwNHY^UORmbFW$VTK5d!Y+Ma6s;}=!QdTYlIK;P}BL&CKAX2w+-dTK-}5)hGMq zBz4(*6%I(a3_76D2{wn33YQQNCBLi=Ir@+1Xr%R$H-i0R?FH^+nGwrw0`Oi=ku2AJ zVg5Pzv+e&~T=F}u;sgPw?oMg_=~b?*+eG}&>G=LmGLu9{prkH8w-_rDAcqNlZikWbj zVKEYfrD+mzeLK(%lVar-S86u~p%39pyJs(}6#ObjoF3+lsOn{NFWh|(-92MO}?1&4( zAjgUMtTeXou01dztReM`Nin|EtO-WR+959uB=E`Szvmh{1gmHs3kveK1$IN->)=Z3P>_QhD) zH{lmg&36_tE7x~k5dO_tW&ia~8GJ%qI4J!bVtV7hlr#jykdlsfqK+?eycTvF7tIUu zp~jmXltI-JR4+;QGkOFUQl6VI{QnZubD*h=RrAu>x7Vo+0&i=x8l$~GiwTMn-}hjT zYoyv!VB5qdGCSLhn)5DmX?o5(*?~xz@o;Bh{jaAA6UmD+Ie>gnvOWIjC5m@Bz2cz{ zCKnsQ?{6y{<=;%dqKzgGR75rf)uf2CC@{02Tf(jbj~8&ND*V7&hd|i{3QuDg0QbJ{ z_>Lz1_|Vnz3;DzN*bI)co6^R#>fXXDH*X3c{xnCfEa@?IuB!Q6Wi&|^VlP?S9du53tUhIl@p3O!}QU!Xxl4ok^$ub652n`VD_(WhL#AcsvK!-4*{ zzk4ro2Up24m@g!~`xZ}@Zr$bP{g_f7)TY+Rh8RFX72;Fk^Y8-&W3^OG#DhxARpGJE^T;Edd zHvF8%Q#-xwDzXxlb6;DC0=yOxM`r@NtPH>?O$$CVS=%acJ@Jvx6>D3HHj_5<3i;KM!XO6xxaCBVfKT^ zii6j}ViuG4;_;<=6SHuOZ}UA1eHUv@OhWN3KnhX`v|nBPN>7)7HE6;;xiR_2k#^}3 z%!T};&TwLfzTqxzX9A!`-vni?`i(67z!iq7oH>8|HY{i=C&j$EBNymjsPjovnE}A0 zEGoy{eu1GWTI_q{R_w(OhY1_mM=ySPmVS~L+FMjoOy0TimJ-*npP=j>^lmYw_^EOH zVOsd$$NkRXeL$sg=ehb-WDIXg{vY)#s|Pg{I_Ihbl>M=`z3eg6kJci>?C3czDqd&g zej==PcUz}l4szS^qa>fMAqXPEo66Ghf-BFm-5aUYCs+6N>VFV;R5cUzG!mvmolB0( zGb4ANN%jFbH0jrWkJuQ}4_9@drlUIg8v)@9xeK7Up?9a^$~bg8g!xdfTFa+N&YKMTA3u{?9#I-Mh$^67QLMq8#g zo@Cm~RzRyL3L6}E^IwR-2iV^fbK&lrvO+&W0QIqaaN^`J0M&?zPabUezBz`<#*q9O z9cJ{xu*E>3wKW9Z?dQN-3j*)Sc!0tlUB`$j^Pb{O`Dl)4oi03If1lQP^6I>qFPG6m zGVy-ok#!bNGr>~spZ~DkN-!!(BA6izA6I4x0i*#CGY;cINDB2D-f(-Ul&iu}%>YOG z1Tl#lFX*Aay6&l6t0~AC#+WrtA)0n>KV;uCn({G(4VGCtT**8tC$q=JmS$^Sm)fDuVWle3kDftaCi3b>DI#0ox3+ zsQ`Nz2TSOWK`7~8y1VwTt%viV9!3}J#|Ts#<;0PzgNxn4^&fh&Sts=RQ$7<_GU9}C z3d``st9oC|i9AJQoS-R#cbv5PRxab@V-(HETRiCyih#WT@mqg=SLBSJKOvKFX~_o? zGqnk?AU%}O%PfDOox-cOKx~5xf-t$Gzck=7g`+J)GCsTY9n9Oj$n=sUVP`5b*agfu1cJUuQv*U6H-KW%)Gtm1QYJ=^tlk&jfl zPuWIE_5!sS%)ZKs^@yYUWB;q0b%55Qt+9oN*6u_1H&A?#fYt%Dnq0%9Du#CU6BPnn zvDi9rt{Wdop368!&Se~#QT~%xcd=N|#3iKl4XUwXv z=L~EWEC44q@PDoIKPdb(tbOq$Zw=xd6sG1%$OsqePZIgbitU7uC zvTSpZ0+GkvoP3a^KdOPUJf_s@N;Vi@KR)}53lt2kl*hbm`a#DOAEDD+4@`CqUr`1N+IFTpB z^;Qlg=1Oy{_xx4usaqk&FsZAU#Ow^|j-u?f4koQLryWaJ08)pvDLCu}FeQ;ZS^TcH zGDs(K+WoKkm=47A97KH!N!4;!<$;Wml*n6 zND5lFNgoAZzeS320PS>Y2w5nq-w#ES_&GNmDq9 zjL-2oZ#d;A&ln>tSb1an?~Cqp6_Eb@gzNBxO8Rgo`>e?K+EH(I@v29V9nL^v83TP# zh@}`K^?%OKtLIp~6reu;#p+0t|6uipoLYYPz}*}HX1{Bxfi-4+aGVqRz?xi08!lTY zlfv92)_`of^B}?$-EU~UK?}K`EKY7F@U*C?ORwtew-s_~-I+DC<&3IPAkRuy0 zz-mvPDl$s&b49eZamSAQ+aK=7Fggx1qY~0XZ5ndJ=F=`|nq7W(;P1T3#R2}SvFP** z+_-nY#i}jb2BLS;uOrn9`%ugNRZf|{67$OK_xBeMUgE|7aryf;rLFKF*b~F8q5|LE z>(R0VQNHwp3@E5RypA7+g@(9M5dr4ElX2kNk;5dYvG%8fA?8Op{nBtN-~h!4v{6f` zAufUH$H!aFPo7gK?9$#P9>wTOdC#;QH*5LGitIZ0U)|(#9pBp~Cj|atw+I2XbFy0V z?E;uFd(5Yz5#5c?TBARG9YT$So(56QRXkVRyF`{fC z{9Vz@??e_8de+PhU*cG<&fvB0|Xm;GfG_TV|P| zT@X6R_J48zO__pq>~k#$W#F}9h@Tm+(*fE(WUeP9C#mnu$iaW&3(8={#%bPh^y#z~ zJEs0(#ZWqz@0C3!xDgYA+qlqtCta*`KrU*k(0)J6d6W zGTJ7Zx6Z;{UXt>CZqtHZ!K!C1u5RKs{Mv-GD!g+q`MNn|*CTI0IU^2QCqkmk!4Foz zx(>q5cci}!&iKfk??|y&b*DuQ?T0TY;C!G=m~bQjm&unRI{ATHy`b>!lLohfEUCl2 ziw@Mv*+(50^v5KJ!bfhz<>b0>RD67sYGn0Lc84!ugy1iaZr!gN$MX}y^h(3~HQ8UZ z$^g>`FKCn`6^i}5gpD>tf>{9SK3{Ty*>*-+JTQ91sfhItOy`md@Xy!zq|ABn<|(rs z8D1Rjy5%3_Hi1Ca-EY|+2jc0+vZN0i6j%COELQP6_B?J

-BPI=*iHR4VWsOV4)N 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

S)0i1tnU&yS* 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 diff --git a/grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png deleted file mode 100644 index 7035bfa43f2a1bad83848f5dd440def985653cae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9831 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 WTXizz3m9Sm0000`Irn_$ z-h0lu-<6zBC#EAm^_jHiuT;Kzxvci*RdubIzfW;QbI)5K!UsRB~X?|Qp#fn9S zORv0;baqC7x@S6mr6(EOsc%X6=*x5O7nR)GIN}|slKT**G7>Va43gGmV*#|aBTj8? zmF4+UrI)u#9~WA)mp}LQds|*PG*=&4^GpE@n5}*veEQ9yFD~BtwJdO!BnwG|g2pvI z68bG8lk8FvHye5&^HxI^YLLG8q3xYZ zHxIt_)uA0ZiTcReCkAl6sy=1?-uw$@b&O7~R*lo;rA48ue+c*6O%tbyG1jpS2Qa!X zkgJ1Ww5j7)?>bssaCm#x()s$*#|A*>Z4lrZy-ud^8V3-p@y4ooAvk*eKBmfB9y@jQ z0d{B25w@Kaj9X+%70jAg-TJ+MI{)1#yVJ(*geL$#^Spieg}m~K;4H5#oe77-iGtFW z$>^iPx?P!Z!uGT8>c{EWr&&E)_c~z|pV+_1ofDn_IN_SDbmkMbokby+AvbjyOo zchL6O09eO1Y@7ej2G||rw~BY7+2kM3SV#8$YPTlB%xhfdQ;9y*4=H*rJ~(~*iQsNISz^S2jq}9Z`i{xv&m~$^ zQoWI|-<8f?sa(SyZnobr!hI( zM-yREYhNRMUsjvJ?KMs_jMPxeWN(9Jl$RTk7BVetkCc~}!|8y1rzIZnfEbv2Vt7;I9j4BHNbtVHFlbzwDw?N za0qLc#pAEvR*C>3gEa7x6!7&{B1Eeewqf+w$4l~jv#^eBxMA@e7WT3JX9*~|V?&j}YcV?`n|(MzePa|JL6eMSVn zxqJsoS}}vQ{xl$>jt$ph)xsDY{M!{V(fF{BR`meC+q_bIvs5>CV*eX22*5C{znIHD z*jGI*A~!t|jcvUiaE-5buS86ynaG5W@AGccFir4BV|%aI#)ug%Cpv!>I=UsK7$RXE zdQ__Yw8E4Bs`C8Lx}xH{*qO5gQK11MH`oXJVxK_)z9JXI0nqI=D@@xgF^ys-1212p zFjK2nD&ztcJ?6a|b3{AA#kWSbV6G-N8wBagG9z^Iw((vRPcUuq_ zsY4Ex5(}3bAJ;m{?5L0c{B~11YK)y?jCF4DRw_gQDe;lQ7yE2#e{}vzj99Z6o7pQ7 z$kW8(Hgk_|d}zizO1Or$ZoIfikJjP=c#$)%;S+mvuPg){zsabYZO zH$BAh-(+L!;X-UtCb^Cv%^&|LtB0O^-WuI4C#^mwJ?S)Ki!vnk`XLd>H)J6R5+A|) zYm?C4V?s<=Al}VQJ*zk=^J9a3?=qHq%o6}} zG@{PyR_{7eEJ!KckWNeQ)SjLR+yRZk*8SCodveCU5yrJ*W~&8wnI`$GKKQ#u&LBI+d1J5?A$<4GoR@{%~<%Hh&u1tz9HjtCXj`f zD>vF8slb8A6{7Ks1LQVHTg@Ggn@mpng0J7({OX~(anJZTbqkjZv)7M^Kzg3%_kT<_ scJxHkWhCem)qEdaEKS_opZ0nFUrDm2X&bxcBLDyZ07*qoM6N<$g7@wTbN~PV diff --git a/grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/grocery_helper/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png deleted file mode 100644 index 7f5955ec93b9e4e1cd03bea8076da929ba958720..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40828 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 Ef-2C2=>Px# diff --git a/grocery_helper/macos/Runner/Base.lproj/MainMenu.xib b/grocery_helper/macos/Runner/Base.lproj/MainMenu.xib deleted file mode 100644 index 80e867a..0000000 --- a/grocery_helper/macos/Runner/Base.lproj/MainMenu.xib +++ /dev/null @@ -1,343 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/grocery_helper/macos/Runner/Configs/AppInfo.xcconfig b/grocery_helper/macos/Runner/Configs/AppInfo.xcconfig deleted file mode 100644 index a00887d..0000000 --- a/grocery_helper/macos/Runner/Configs/AppInfo.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -// Application-level settings for the Runner target. -// -// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the -// future. If not, the values below would default to using the project name when this becomes a -// 'flutter create' template. - -// The application's name. By default this is also the title of the Flutter window. -PRODUCT_NAME = grocery_helper - -// The application's bundle identifier -PRODUCT_BUNDLE_IDENTIFIER = com.example.groceryHelper - -// The copyright displayed in application information -PRODUCT_COPYRIGHT = Copyright © 2022 com.example. All rights reserved. diff --git a/grocery_helper/macos/Runner/Configs/Debug.xcconfig b/grocery_helper/macos/Runner/Configs/Debug.xcconfig deleted file mode 100644 index 36b0fd9..0000000 --- a/grocery_helper/macos/Runner/Configs/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Debug.xcconfig" -#include "Warnings.xcconfig" diff --git a/grocery_helper/macos/Runner/Configs/Release.xcconfig b/grocery_helper/macos/Runner/Configs/Release.xcconfig deleted file mode 100644 index dff4f49..0000000 --- a/grocery_helper/macos/Runner/Configs/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Release.xcconfig" -#include "Warnings.xcconfig" diff --git a/grocery_helper/macos/Runner/Configs/Warnings.xcconfig b/grocery_helper/macos/Runner/Configs/Warnings.xcconfig deleted file mode 100644 index 42bcbf4..0000000 --- a/grocery_helper/macos/Runner/Configs/Warnings.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings -GCC_WARN_UNDECLARED_SELECTOR = YES -CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES -CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE -CLANG_WARN__DUPLICATE_METHOD_MATCH = YES -CLANG_WARN_PRAGMA_PACK = YES -CLANG_WARN_STRICT_PROTOTYPES = YES -CLANG_WARN_COMMA = YES -GCC_WARN_STRICT_SELECTOR_MATCH = YES -CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES -CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES -GCC_WARN_SHADOW = YES -CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/grocery_helper/macos/Runner/DebugProfile.entitlements b/grocery_helper/macos/Runner/DebugProfile.entitlements deleted file mode 100644 index dddb8a3..0000000 --- a/grocery_helper/macos/Runner/DebugProfile.entitlements +++ /dev/null @@ -1,12 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.cs.allow-jit - - com.apple.security.network.server - - - diff --git a/grocery_helper/macos/Runner/Info.plist b/grocery_helper/macos/Runner/Info.plist deleted file mode 100644 index 4789daa..0000000 --- a/grocery_helper/macos/Runner/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSHumanReadableCopyright - $(PRODUCT_COPYRIGHT) - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/grocery_helper/macos/Runner/MainFlutterWindow.swift b/grocery_helper/macos/Runner/MainFlutterWindow.swift deleted file mode 100644 index 2722837..0000000 --- a/grocery_helper/macos/Runner/MainFlutterWindow.swift +++ /dev/null @@ -1,15 +0,0 @@ -import Cocoa -import FlutterMacOS - -class MainFlutterWindow: NSWindow { - override func awakeFromNib() { - let flutterViewController = FlutterViewController.init() - let windowFrame = self.frame - self.contentViewController = flutterViewController - self.setFrame(windowFrame, display: true) - - RegisterGeneratedPlugins(registry: flutterViewController) - - super.awakeFromNib() - } -} diff --git a/grocery_helper/macos/Runner/Release.entitlements b/grocery_helper/macos/Runner/Release.entitlements deleted file mode 100644 index 852fa1a..0000000 --- a/grocery_helper/macos/Runner/Release.entitlements +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.security.app-sandbox - - - diff --git a/grocery_helper/pubspec.lock b/grocery_helper/pubspec.lock deleted file mode 100644 index f441ad2..0000000 --- a/grocery_helper/pubspec.lock +++ /dev/null @@ -1,411 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - archive: - dependency: transitive - description: - name: archive - url: "https://pub.dartlang.org" - source: hosted - version: "3.3.5" - args: - dependency: transitive - description: - name: args - url: "https://pub.dartlang.org" - source: hosted - version: "2.3.1" - async: - dependency: transitive - description: - name: async - url: "https://pub.dartlang.org" - source: hosted - version: "2.9.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - characters: - dependency: transitive - description: - name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - checked_yaml: - dependency: transitive - description: - name: checked_yaml - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - cli_util: - dependency: transitive - description: - name: cli_util - url: "https://pub.dartlang.org" - source: hosted - version: "0.3.5" - clock: - dependency: transitive - description: - name: clock - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - collection: - dependency: transitive - description: - name: collection - url: "https://pub.dartlang.org" - source: hosted - version: "1.16.0" - convert: - dependency: transitive - description: - name: convert - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.1" - cross_file: - dependency: transitive - description: - name: cross_file - url: "https://pub.dartlang.org" - source: hosted - version: "0.3.3+2" - crypto: - dependency: transitive - description: - name: crypto - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.2" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.5" - fake_async: - dependency: transitive - description: - name: fake_async - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_launcher_icons: - dependency: "direct main" - description: - name: flutter_launcher_icons - url: "https://pub.dartlang.org" - source: hosted - version: "0.11.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - flutter_plugin_android_lifecycle: - dependency: transitive - description: - name: flutter_plugin_android_lifecycle - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.7" - flutter_secure_storage: - dependency: "direct main" - description: - name: flutter_secure_storage - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.0" - flutter_secure_storage_linux: - dependency: transitive - description: - name: flutter_secure_storage_linux - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.2" - flutter_secure_storage_macos: - dependency: transitive - description: - name: flutter_secure_storage_macos - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.2" - flutter_secure_storage_platform_interface: - dependency: transitive - description: - name: flutter_secure_storage_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.1" - flutter_secure_storage_web: - dependency: transitive - description: - name: flutter_secure_storage_web - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - flutter_secure_storage_windows: - dependency: transitive - description: - name: flutter_secure_storage_windows - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.3" - flutter_svg: - dependency: "direct main" - description: - name: flutter_svg - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.6" - flutter_svg_provider: - dependency: "direct main" - description: - name: flutter_svg_provider - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.3" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - http: - dependency: "direct main" - description: - name: http - url: "https://pub.dartlang.org" - source: hosted - version: "0.13.5" - http_parser: - dependency: transitive - description: - name: http_parser - url: "https://pub.dartlang.org" - source: hosted - version: "4.0.2" - image: - dependency: transitive - description: - name: image - url: "https://pub.dartlang.org" - source: hosted - version: "3.2.2" - image_picker: - dependency: "direct main" - description: - name: image_picker - url: "https://pub.dartlang.org" - source: hosted - version: "0.8.6" - image_picker_android: - dependency: transitive - description: - name: image_picker_android - url: "https://pub.dartlang.org" - source: hosted - version: "0.8.5+3" - image_picker_for_web: - dependency: transitive - description: - name: image_picker_for_web - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.10" - image_picker_ios: - dependency: transitive - description: - name: image_picker_ios - url: "https://pub.dartlang.org" - source: hosted - version: "0.8.6+1" - image_picker_platform_interface: - dependency: transitive - description: - name: image_picker_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.6.2" - js: - dependency: transitive - description: - name: js - url: "https://pub.dartlang.org" - source: hosted - version: "0.6.4" - json_annotation: - dependency: transitive - description: - name: json_annotation - url: "https://pub.dartlang.org" - source: hosted - version: "4.7.0" - lints: - dependency: transitive - description: - name: lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - matcher: - dependency: transitive - description: - name: matcher - url: "https://pub.dartlang.org" - source: hosted - version: "0.12.12" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.5" - meta: - dependency: transitive - description: - name: meta - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0" - path: - dependency: transitive - description: - name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.2" - path_drawing: - dependency: transitive - description: - name: path_drawing - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.1" - path_parsing: - dependency: transitive - description: - name: path_parsing - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.1" - petitparser: - dependency: transitive - description: - name: petitparser - url: "https://pub.dartlang.org" - source: hosted - version: "5.1.0" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.3" - pointycastle: - dependency: transitive - description: - name: pointycastle - url: "https://pub.dartlang.org" - source: hosted - version: "3.6.2" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - url: "https://pub.dartlang.org" - source: hosted - version: "1.9.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - url: "https://pub.dartlang.org" - source: hosted - version: "1.10.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - term_glyph: - dependency: transitive - description: - name: term_glyph - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.12" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - vector_math: - dependency: transitive - description: - name: vector_math - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - xml: - dependency: transitive - description: - name: xml - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.0" - yaml: - dependency: transitive - description: - name: yaml - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.1" -sdks: - dart: ">=2.18.4 <3.0.0" - flutter: ">=2.11.0-0.1.pre" diff --git a/grocery_helper/pubspec.yaml b/grocery_helper/pubspec.yaml deleted file mode 100644 index dd6fa32..0000000 --- a/grocery_helper/pubspec.yaml +++ /dev/null @@ -1,110 +0,0 @@ -name: grocery_helper -description: A new Flutter project. -# The following line prevents the package from being accidentally published to -# pub.dev using `flutter pub publish`. This is preferred for private packages. -publish_to: 'none' # Remove this line if you wish to publish to pub.dev - -# The following defines the version and build number for your application. -# A version number is three numbers separated by dots, like 1.2.43 -# followed by an optional build number separated by a +. -# Both the version and the builder number may be overridden in flutter -# build by specifying --build-name and --build-number, respectively. -# In Android, build-name is used as versionName while build-number used as versionCode. -# Read more about Android versioning at https://developer.android.com/studio/publish/versioning -# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. -# Read more about iOS versioning at -# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -# In Windows, build-name is used as the major, minor, and patch parts -# of the product and file versions while build-number is used as the build suffix. -version: 1.0.0+1 - -environment: - sdk: '>=2.18.4 <3.0.0' - -# Dependencies specify other packages that your package needs in order to work. -# To automatically upgrade your package dependencies to the latest versions -# consider running `flutter pub upgrade --major-versions`. Alternatively, -# dependencies can be manually updated by changing the version numbers below to -# the latest version available on pub.dev. To see which dependencies have newer -# versions available, run `flutter pub outdated`. -dependencies: - flutter: - sdk: flutter - - http: ^0.13.5 - flutter_secure_storage: ^6.0.0 - flutter_svg: ^1.1.6 - flutter_svg_provider: ^1.0.3 - image_picker: ^0.8.6 - flutter_launcher_icons: ^0.11.0 - - # The following adds the Cupertino Icons font to your application. - # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^1.0.2 - -dev_dependencies: - flutter_test: - sdk: flutter - - # The "flutter_lints" package below contains a set of recommended lints to - # encourage good coding practices. The lint set provided by the package is - # activated in the `analysis_options.yaml` file located at the root of your - # package. See that file for information about deactivating specific lint - # rules and activating additional ones. - flutter_lints: ^2.0.0 - -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec - -flutter_icons: - android: true - ios: true - image_path: "assets/icons/icon.png" - windows: - generate: true - image_path: "assets/icons/desktop.png" - icon_size: 256 - macos: - generate: true - image_path: "assets/icons/desktop.png" - -# The following section is specific to Flutter packages. -flutter: - - # The following line ensures that the Material Icons font is - # included with your application, so that you can use the icons in - # the material Icons class. - uses-material-design: true - - # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg - assets: - - assets/images/ - - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/assets-and-images/#resolution-aware - - # For details regarding adding assets from package dependencies, see - # https://flutter.dev/assets-and-images/#from-packages - - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts from package dependencies, - # see https://flutter.dev/custom-fonts/#from-packages diff --git a/grocery_helper/test/widget_test.dart b/grocery_helper/test/widget_test.dart deleted file mode 100644 index d5e205e..0000000 --- a/grocery_helper/test/widget_test.dart +++ /dev/null @@ -1,30 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility in the flutter_test package. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:grocery_helper/main.dart'; - -void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const MyApp()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); - }); -} diff --git a/grocery_helper/web/favicon.png b/grocery_helper/web/favicon.png deleted file mode 100644 index 8aaa46ac1ae21512746f852a42ba87e4165dfdd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/grocery_helper/web/icons/Icon-192.png b/grocery_helper/web/icons/Icon-192.png deleted file mode 100644 index b749bfef07473333cf1dd31e9eed89862a5d52aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5292 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 diff --git a/grocery_helper/web/icons/Icon-512.png b/grocery_helper/web/icons/Icon-512.png deleted file mode 100644 index 88cfd48dff1169879ba46840804b412fe02fefd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8252 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 diff --git a/grocery_helper/web/icons/Icon-maskable-192.png b/grocery_helper/web/icons/Icon-maskable-192.png deleted file mode 100644 index eb9b4d76e525556d5d89141648c724331630325d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5594 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! diff --git a/grocery_helper/web/icons/Icon-maskable-512.png b/grocery_helper/web/icons/Icon-maskable-512.png deleted file mode 100644 index d69c56691fbdb0b7efa65097c7cc1edac12a6d3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20998 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 MPgg&ebxsLQ025IeI{*Lx diff --git a/grocery_helper/web/index.html b/grocery_helper/web/index.html deleted file mode 100644 index 5adc211..0000000 --- a/grocery_helper/web/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - grocery_helper - - - - - - - - - - diff --git a/grocery_helper/web/manifest.json b/grocery_helper/web/manifest.json deleted file mode 100644 index bca451a..0000000 --- a/grocery_helper/web/manifest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "grocery_helper", - "short_name": "grocery_helper", - "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/grocery_helper/windows/.gitignore b/grocery_helper/windows/.gitignore deleted file mode 100644 index d492d0d..0000000 --- a/grocery_helper/windows/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -flutter/ephemeral/ - -# Visual Studio user-specific files. -*.suo -*.user -*.userosscache -*.sln.docstates - -# Visual Studio build-related files. -x64/ -x86/ - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ diff --git a/grocery_helper/windows/CMakeLists.txt b/grocery_helper/windows/CMakeLists.txt deleted file mode 100644 index ed6319e..0000000 --- a/grocery_helper/windows/CMakeLists.txt +++ /dev/null @@ -1,101 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.14) -project(grocery_helper 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 "grocery_helper") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(SET CMP0063 NEW) - -# Define build configuration option. -get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) -if(IS_MULTICONFIG) - set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" - CACHE STRING "" FORCE) -else() - if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") - endif() -endif() -# Define settings for the Profile build mode. -set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") -set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") -set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") -set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") - -# Use Unicode for all projects. -add_definitions(-DUNICODE -D_UNICODE) - -# Compilation settings that should be applied to most targets. -# -# Be cautious about adding new options here, as plugins use this function by -# default. In most cases, you should add new options to specific targets instead -# of modifying this function. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_17) - target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") - target_compile_options(${TARGET} PRIVATE /EHsc) - target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") - target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# Application build; see runner/CMakeLists.txt. -add_subdirectory("runner") - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# Support files are copied into place next to the executable, so that it can -# run in place. This is done instead of making a separate bundle (as on Linux) -# so that building and running from within Visual Studio will work. -set(BUILD_BUNDLE_DIR "$") -# Make the "install" step default, as it's required to run. -set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -if(PLUGIN_BUNDLED_LIBRARIES) - install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - CONFIGURATIONS Profile;Release - COMPONENT Runtime) diff --git a/grocery_helper/windows/flutter/CMakeLists.txt b/grocery_helper/windows/flutter/CMakeLists.txt deleted file mode 100644 index 930d207..0000000 --- a/grocery_helper/windows/flutter/CMakeLists.txt +++ /dev/null @@ -1,104 +0,0 @@ -# This file controls Flutter-level build steps. It should not be edited. -cmake_minimum_required(VERSION 3.14) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. -set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") - -# === Flutter Library === -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "flutter_export.h" - "flutter_windows.h" - "flutter_messenger.h" - "flutter_plugin_registrar.h" - "flutter_texture_registrar.h" -) -list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") -add_dependencies(flutter flutter_assemble) - -# === Wrapper === -list(APPEND CPP_WRAPPER_SOURCES_CORE - "core_implementations.cc" - "standard_codec.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_PLUGIN - "plugin_registrar.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_APP - "flutter_engine.cc" - "flutter_view_controller.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") - -# Wrapper sources needed for a plugin. -add_library(flutter_wrapper_plugin STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} -) -apply_standard_settings(flutter_wrapper_plugin) -set_target_properties(flutter_wrapper_plugin PROPERTIES - POSITION_INDEPENDENT_CODE ON) -set_target_properties(flutter_wrapper_plugin PROPERTIES - CXX_VISIBILITY_PRESET hidden) -target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) -target_include_directories(flutter_wrapper_plugin PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_plugin flutter_assemble) - -# Wrapper sources needed for the runner. -add_library(flutter_wrapper_app STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_APP} -) -apply_standard_settings(flutter_wrapper_app) -target_link_libraries(flutter_wrapper_app PUBLIC flutter) -target_include_directories(flutter_wrapper_app PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_app flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") -set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} - ${PHONY_OUTPUT} - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" - windows-x64 $ - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} -) diff --git a/grocery_helper/windows/flutter/generated_plugin_registrant.cc b/grocery_helper/windows/flutter/generated_plugin_registrant.cc deleted file mode 100644 index 0c50753..0000000 --- a/grocery_helper/windows/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,14 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - -#include - -void RegisterPlugins(flutter::PluginRegistry* registry) { - FlutterSecureStorageWindowsPluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); -} diff --git a/grocery_helper/windows/flutter/generated_plugin_registrant.h b/grocery_helper/windows/flutter/generated_plugin_registrant.h deleted file mode 100644 index dc139d8..0000000 --- a/grocery_helper/windows/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void RegisterPlugins(flutter::PluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/grocery_helper/windows/flutter/generated_plugins.cmake b/grocery_helper/windows/flutter/generated_plugins.cmake deleted file mode 100644 index 4fc759c..0000000 --- a/grocery_helper/windows/flutter/generated_plugins.cmake +++ /dev/null @@ -1,24 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST - flutter_secure_storage_windows -) - -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/grocery_helper/windows/runner/CMakeLists.txt b/grocery_helper/windows/runner/CMakeLists.txt deleted file mode 100644 index 394917c..0000000 --- a/grocery_helper/windows/runner/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -cmake_minimum_required(VERSION 3.14) -project(runner LANGUAGES CXX) - -# Define the application target. To change its name, change BINARY_NAME in the -# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer -# work. -# -# Any new source files that you add to the application should be added here. -add_executable(${BINARY_NAME} WIN32 - "flutter_window.cpp" - "main.cpp" - "utils.cpp" - "win32_window.cpp" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" - "Runner.rc" - "runner.exe.manifest" -) - -# Apply the standard set of build settings. This can be removed for applications -# that need different build settings. -apply_standard_settings(${BINARY_NAME}) - -# Add preprocessor definitions for the build version. -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") - -# Disable Windows macros that collide with C++ standard library functions. -target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") - -# Add dependency libraries and include directories. Add any application-specific -# dependencies here. -target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) -target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") -target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") - -# Run the Flutter tool portions of the build. This must not be removed. -add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/grocery_helper/windows/runner/Runner.rc b/grocery_helper/windows/runner/Runner.rc deleted file mode 100644 index b7cdf80..0000000 --- a/grocery_helper/windows/runner/Runner.rc +++ /dev/null @@ -1,121 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#pragma code_page(65001) -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (United States) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""winres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_APP_ICON ICON "resources\\app_icon.ico" - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) -#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD -#else -#define VERSION_AS_NUMBER 1,0,0,0 -#endif - -#if defined(FLUTTER_VERSION) -#define VERSION_AS_STRING FLUTTER_VERSION -#else -#define VERSION_AS_STRING "1.0.0" -#endif - -VS_VERSION_INFO VERSIONINFO - FILEVERSION VERSION_AS_NUMBER - PRODUCTVERSION VERSION_AS_NUMBER - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK -#ifdef _DEBUG - FILEFLAGS VS_FF_DEBUG -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_APP - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "CompanyName", "com.example" "\0" - VALUE "FileDescription", "grocery_helper" "\0" - VALUE "FileVersion", VERSION_AS_STRING "\0" - VALUE "InternalName", "grocery_helper" "\0" - VALUE "LegalCopyright", "Copyright (C) 2022 com.example. All rights reserved." "\0" - VALUE "OriginalFilename", "grocery_helper.exe" "\0" - VALUE "ProductName", "grocery_helper" "\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/grocery_helper/windows/runner/flutter_window.cpp b/grocery_helper/windows/runner/flutter_window.cpp deleted file mode 100644 index b25e363..0000000 --- a/grocery_helper/windows/runner/flutter_window.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "flutter_window.h" - -#include - -#include "flutter/generated_plugin_registrant.h" - -FlutterWindow::FlutterWindow(const flutter::DartProject& project) - : project_(project) {} - -FlutterWindow::~FlutterWindow() {} - -bool FlutterWindow::OnCreate() { - if (!Win32Window::OnCreate()) { - return false; - } - - RECT frame = GetClientArea(); - - // The size here must match the window dimensions to avoid unnecessary surface - // creation / destruction in the startup path. - flutter_controller_ = std::make_unique( - frame.right - frame.left, frame.bottom - frame.top, project_); - // Ensure that basic setup of the controller was successful. - if (!flutter_controller_->engine() || !flutter_controller_->view()) { - return false; - } - RegisterPlugins(flutter_controller_->engine()); - SetChildContent(flutter_controller_->view()->GetNativeWindow()); - - flutter_controller_->engine()->SetNextFrameCallback([&]() { - this->Show(); - }); - - 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/grocery_helper/windows/runner/flutter_window.h b/grocery_helper/windows/runner/flutter_window.h deleted file mode 100644 index 6da0652..0000000 --- a/grocery_helper/windows/runner/flutter_window.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef RUNNER_FLUTTER_WINDOW_H_ -#define RUNNER_FLUTTER_WINDOW_H_ - -#include -#include - -#include - -#include "win32_window.h" - -// A window that does nothing but host a Flutter view. -class FlutterWindow : public Win32Window { - public: - // Creates a new FlutterWindow hosting a Flutter view running |project|. - explicit FlutterWindow(const flutter::DartProject& project); - virtual ~FlutterWindow(); - - protected: - // Win32Window: - bool OnCreate() override; - void OnDestroy() override; - LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, - LPARAM const lparam) noexcept override; - - private: - // The project to run. - flutter::DartProject project_; - - // The Flutter instance hosted by this window. - std::unique_ptr flutter_controller_; -}; - -#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/grocery_helper/windows/runner/main.cpp b/grocery_helper/windows/runner/main.cpp deleted file mode 100644 index 62fe021..0000000 --- a/grocery_helper/windows/runner/main.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include - -#include "flutter_window.h" -#include "utils.h" - -int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, - _In_ wchar_t *command_line, _In_ int show_command) { - // Attach to console when present (e.g., 'flutter run') or create a - // new console when running with a debugger. - if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { - CreateAndAttachConsole(); - } - - // Initialize COM, so that it is available for use in the library and/or - // plugins. - ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); - - flutter::DartProject project(L"data"); - - std::vector command_line_arguments = - GetCommandLineArguments(); - - project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); - - FlutterWindow window(project); - Win32Window::Point origin(10, 10); - Win32Window::Size size(1280, 720); - if (!window.Create(L"grocery_helper", 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/grocery_helper/windows/runner/resource.h b/grocery_helper/windows/runner/resource.h deleted file mode 100644 index 66a65d1..0000000 --- a/grocery_helper/windows/runner/resource.h +++ /dev/null @@ -1,16 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by Runner.rc -// -#define IDI_APP_ICON 101 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 102 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/grocery_helper/windows/runner/resources/app_icon.ico b/grocery_helper/windows/runner/resources/app_icon.ico deleted file mode 100644 index aaa3e0f1a3984b7c0743974118cb491a29c2407f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19048 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 diff --git a/grocery_helper/windows/runner/runner.exe.manifest b/grocery_helper/windows/runner/runner.exe.manifest deleted file mode 100644 index a42ea76..0000000 --- a/grocery_helper/windows/runner/runner.exe.manifest +++ /dev/null @@ -1,20 +0,0 @@ - - - - - PerMonitorV2 - - - - - - - - - - - - - - - diff --git a/grocery_helper/windows/runner/utils.cpp b/grocery_helper/windows/runner/utils.cpp deleted file mode 100644 index f5bf9fa..0000000 --- a/grocery_helper/windows/runner/utils.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "utils.h" - -#include -#include -#include -#include - -#include - -void CreateAndAttachConsole() { - if (::AllocConsole()) { - FILE *unused; - if (freopen_s(&unused, "CONOUT$", "w", stdout)) { - _dup2(_fileno(stdout), 1); - } - if (freopen_s(&unused, "CONOUT$", "w", stderr)) { - _dup2(_fileno(stdout), 2); - } - std::ios::sync_with_stdio(); - FlutterDesktopResyncOutputStreams(); - } -} - -std::vector GetCommandLineArguments() { - // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. - int argc; - wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); - if (argv == nullptr) { - return std::vector(); - } - - std::vector command_line_arguments; - - // Skip the first argument as it's the binary name. - for (int i = 1; i < argc; i++) { - command_line_arguments.push_back(Utf8FromUtf16(argv[i])); - } - - ::LocalFree(argv); - - return command_line_arguments; -} - -std::string Utf8FromUtf16(const wchar_t* utf16_string) { - if (utf16_string == nullptr) { - return std::string(); - } - int target_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, nullptr, 0, nullptr, nullptr); - 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, - -1, utf8_string.data(), - target_length, nullptr, nullptr); - if (converted_length == 0) { - return std::string(); - } - return utf8_string; -} diff --git a/grocery_helper/windows/runner/utils.h b/grocery_helper/windows/runner/utils.h deleted file mode 100644 index 3879d54..0000000 --- a/grocery_helper/windows/runner/utils.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef RUNNER_UTILS_H_ -#define RUNNER_UTILS_H_ - -#include -#include - -// Creates a console for the process, and redirects stdout and stderr to -// it for both the runner and the Flutter library. -void CreateAndAttachConsole(); - -// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string -// encoded in UTF-8. Returns an empty std::string on failure. -std::string Utf8FromUtf16(const wchar_t* utf16_string); - -// Gets the command line arguments passed in as a std::vector, -// encoded in UTF-8. Returns an empty std::vector on failure. -std::vector GetCommandLineArguments(); - -#endif // RUNNER_UTILS_H_ diff --git a/grocery_helper/windows/runner/win32_window.cpp b/grocery_helper/windows/runner/win32_window.cpp deleted file mode 100644 index 041a385..0000000 --- a/grocery_helper/windows/runner/win32_window.cpp +++ /dev/null @@ -1,288 +0,0 @@ -#include "win32_window.h" - -#include -#include - -#include "resource.h" - -namespace { - -/// Window attribute that enables dark mode window decorations. -/// -/// Redefined in case the developer's machine has a Windows SDK older than -/// version 10.0.22000.0. -/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute -#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE -#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 -#endif - -constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; - -/// Registry key for app theme preference. -/// -/// A value of 0 indicates apps should use dark mode. A non-zero or missing -/// value indicates apps should use light mode. -constexpr const wchar_t kGetPreferredBrightnessRegKey[] = - L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; -constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; - -// The number of Win32Window objects that currently exist. -static int g_active_window_count = 0; - -using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); - -// Scale helper to convert logical scaler values to physical using passed in -// scale factor -int Scale(int source, double scale_factor) { - return static_cast(source * scale_factor); -} - -// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. -// This API is only needed for PerMonitor V1 awareness mode. -void EnableFullDpiSupportIfAvailable(HWND hwnd) { - HMODULE user32_module = LoadLibraryA("User32.dll"); - if (!user32_module) { - return; - } - auto enable_non_client_dpi_scaling = - reinterpret_cast( - GetProcAddress(user32_module, "EnableNonClientDpiScaling")); - if (enable_non_client_dpi_scaling != nullptr) { - enable_non_client_dpi_scaling(hwnd); - } - FreeLibrary(user32_module); -} - -} // namespace - -// Manages the Win32Window's window class registration. -class WindowClassRegistrar { - public: - ~WindowClassRegistrar() = default; - - // Returns the singleton registar 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/grocery_helper/windows/runner/win32_window.h b/grocery_helper/windows/runner/win32_window.h deleted file mode 100644 index c86632d..0000000 --- a/grocery_helper/windows/runner/win32_window.h +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef RUNNER_WIN32_WINDOW_H_ -#define RUNNER_WIN32_WINDOW_H_ - -#include - -#include -#include -#include - -// A class abstraction for a high DPI-aware Win32 Window. Intended to be -// inherited from by classes that wish to specialize with custom -// rendering and input handling -class Win32Window { - public: - struct Point { - unsigned int x; - unsigned int y; - Point(unsigned int x, unsigned int y) : x(x), y(y) {} - }; - - struct Size { - unsigned int width; - unsigned int height; - Size(unsigned int width, unsigned int height) - : width(width), height(height) {} - }; - - Win32Window(); - virtual ~Win32Window(); - - // Creates a win32 window with |title| that is positioned and sized using - // |origin| and |size|. New windows are created on the default monitor. Window - // sizes are specified to the OS in physical pixels, hence to ensure a - // consistent size this function will scale the inputted width and height as - // as appropriate for the default monitor. The window is invisible until - // |Show| is called. Returns true if the window was created successfully. - bool Create(const std::wstring& title, const Point& origin, const Size& size); - - // Show the current window. Returns true if the window was successfully shown. - bool Show(); - - // Release OS resources associated with window. - void Destroy(); - - // Inserts |content| into the window tree. - void SetChildContent(HWND content); - - // Returns the backing Window handle to enable clients to set icon and other - // window properties. Returns nullptr if the window has been destroyed. - HWND GetHandle(); - - // If true, closing this window will quit the application. - void SetQuitOnClose(bool quit_on_close); - - // Return a RECT representing the bounds of the current client area. - RECT GetClientArea(); - - protected: - // Processes and route salient window messages for mouse handling, - // size change and DPI. Delegates handling of these to member overloads that - // inheriting classes can handle. - virtual LRESULT MessageHandler(HWND window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Called when CreateAndShow is called, allowing subclass window-related - // setup. Subclasses should return false if setup fails. - virtual bool OnCreate(); - - // Called when Destroy is called. - virtual void OnDestroy(); - - private: - friend class WindowClassRegistrar; - - // OS callback called by message pump. Handles the WM_NCCREATE message which - // is passed when the non-client area is being created and enables automatic - // non-client DPI scaling so that the non-client area automatically - // responsponds 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_