From 7f936200032923a635529b21c70913ed3c6c65a2 Mon Sep 17 00:00:00 2001 From: Bassam A Date: Mon, 29 Jan 2024 22:49:06 +0300 Subject: [PATCH 01/24] feat: min application version handling. --- lib/providers/auth.dart | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/providers/auth.dart b/lib/providers/auth.dart index 04957f7a..502828bf 100644 --- a/lib/providers/auth.dart +++ b/lib/providers/auth.dart @@ -140,7 +140,6 @@ class AuthProvider with ChangeNotifier { if (response.statusCode >= 400) { throw WgerHttpException(response.body); } - // If update is required don't log in user if (await applicationUpdateRequired()) { return {'action': LoginActions.update}; @@ -174,7 +173,10 @@ class AuthProvider with ChangeNotifier { await initData(serverUrl); // If update is required don't log in user - if (await applicationUpdateRequired()) { + if (await applicationUpdateRequired( + applicationVersion!.version, + {MANIFEST_KEY_CHECK_UPDATE: 'true'}, + )) { return {'action': LoginActions.update}; } From 5010eca2d8229c9b79fc066a000621be8a1ff017 Mon Sep 17 00:00:00 2001 From: Bassam A Date: Mon, 29 Jan 2024 22:54:11 +0300 Subject: [PATCH 02/24] chore: added myself in authors file --- AUTHORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.md b/AUTHORS.md index 5372b1bc..67b47fdc 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -26,6 +26,7 @@ - Hanaa Allohibi - - Shey Alnasrawi - - Costas Korai - +- Bassam Mutairi - ## Translators From 6b23f5853b304b4ee723e3fe9f11f514b48b2c7c Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Sun, 23 Mar 2025 22:22:14 +0100 Subject: [PATCH 03/24] Update bug report and feature request templates --- .github/ISSUE_TEMPLATE/1_bug.md | 34 ------------- .github/ISSUE_TEMPLATE/1_bug.yml | 53 ++++++++++++++++++++ .github/ISSUE_TEMPLATE/2_feature_request.md | 26 ---------- .github/ISSUE_TEMPLATE/2_feature_request.yml | 33 ++++++++++++ 4 files changed, 86 insertions(+), 60 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/1_bug.md create mode 100644 .github/ISSUE_TEMPLATE/1_bug.yml delete mode 100644 .github/ISSUE_TEMPLATE/2_feature_request.md create mode 100644 .github/ISSUE_TEMPLATE/2_feature_request.yml diff --git a/.github/ISSUE_TEMPLATE/1_bug.md b/.github/ISSUE_TEMPLATE/1_bug.md deleted file mode 100644 index e12f7506..00000000 --- a/.github/ISSUE_TEMPLATE/1_bug.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -name: I found a problem with wger -about: While using wger the application crashes or throws an exception, a - widget is buggy, or something looks wrong. -title: '' -labels: '' -assignees: '' - ---- - -## Steps to Reproduce - - - -1. ... -2. ... -3. ... - -**Expected results:** - -**Actual results:** - -
- Logs - - - -``` -``` - - -
diff --git a/.github/ISSUE_TEMPLATE/1_bug.yml b/.github/ISSUE_TEMPLATE/1_bug.yml new file mode 100644 index 00000000..385e5cc8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1_bug.yml @@ -0,0 +1,53 @@ +# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms +# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema + +name: Bug report +description: Report an error or unexpected behavior +type: bug +body: + - type: dropdown + id: priority + attributes: + label: Priority/Impact + description: How severe is the issue? + options: + - Low (minor inconvenience) + - Medium (affects some functionality) + - High (critical issue, blocks workflow) + + - type: textarea + id: description + attributes: + label: Description + description: | + A clear and concise description of the bug. + placeholder: | + Please include any information you think is relevant to the issue you are experiencing. + This could include any steps to reproduce it (if it happens consistently), expected vs. + actual behavior, logs, screenshots, links to related issues, etc. + validations: + required: true + + - type: input + id: server-version + attributes: + label: Server version + description: | + What version of wger are you using and how did you install it (you use our server, + docker compose, manual installation, etc)? + placeholder: | + Check https:///software/about-us or the git sha1 of the last commit you pulled + validations: + required: false + + - type: input + id: app-version + attributes: + label: Mobile app version + description: | + What version of the mobile app are you using and how did you install it + (Play Store, App Store, Flathub, self compiled, etc.)? + placeholder: | + Check the "about wger" dialog + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/2_feature_request.md b/.github/ISSUE_TEMPLATE/2_feature_request.md deleted file mode 100644 index 924b1e42..00000000 --- a/.github/ISSUE_TEMPLATE/2_feature_request.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -name: Feature request -about: Suggest a new idea for wger. -title: '' -labels: '' -assignees: '' - ---- - -## Use case - - - -## Proposal - - diff --git a/.github/ISSUE_TEMPLATE/2_feature_request.yml b/.github/ISSUE_TEMPLATE/2_feature_request.yml new file mode 100644 index 00000000..5ea0dff8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2_feature_request.yml @@ -0,0 +1,33 @@ +name: Feature request +description: Suggest a new idea for wger +type: enhancement +body: + - type: textarea + id: description + attributes: + label: Use case + description: | + A description of what new feature or behavior you would like to see. + validations: + required: true + + - type: textarea + id: proposal + attributes: + label: Proposal + description: | + Why is this feature needed? What problems does it solve? + validations: + required: false + + - type: textarea + id: additional-context + attributes: + label: Additional Context + description: | + Any extra details, related issues, or mockups + placeholder: | + Screenshots or mockups, links to similar features in other applications, or other relevant + information. + validations: + required: false From b2802e3a989c74b94d8220b9d437a2386be821c3 Mon Sep 17 00:00:00 2001 From: Yashas H Majmudar Date: Tue, 25 Mar 2025 23:10:05 -0400 Subject: [PATCH 04/24] fix: isExpanded variable bool flip --- lib/widgets/exercises/filter_modal.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/widgets/exercises/filter_modal.dart b/lib/widgets/exercises/filter_modal.dart index 9ac88ad0..eb6758c7 100644 --- a/lib/widgets/exercises/filter_modal.dart +++ b/lib/widgets/exercises/filter_modal.dart @@ -48,7 +48,7 @@ class _ExerciseFilterModalBodyState extends State { dividerColor: Colors.transparent, expansionCallback: (panelIndex, isExpanded) { setState(() { - filters.filterCategories[panelIndex].isExpanded = !isExpanded; + filters.filterCategories[panelIndex].isExpanded = isExpanded; }); }, elevation: 0, From e0e524d2b1eabd02919f24e0afd9477c710bea85 Mon Sep 17 00:00:00 2001 From: Yashas H Majmudar Date: Tue, 25 Mar 2025 23:10:46 -0400 Subject: [PATCH 05/24] update: podfile.lock and pubspec.lock --- ios/Podfile.lock | 29 ++++----- ios/Runner.xcodeproj/project.pbxproj | 64 +++++++++---------- .../xcshareddata/xcschemes/Runner.xcscheme | 1 + ios/build/.last_build_id | 1 + 4 files changed, 47 insertions(+), 48 deletions(-) create mode 100644 ios/build/.last_build_id diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 364cb767..065b1a2a 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -2,8 +2,6 @@ PODS: - camera_avfoundation (0.0.1): - Flutter - Flutter (1.0.0) - - flutter_barcode_scanner (2.0.0): - - Flutter - flutter_keyboard_visibility (0.0.1): - Flutter - flutter_zxing (0.0.1): @@ -24,23 +22,26 @@ PODS: - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS - - sqlite3 (3.48.0): - - sqlite3/common (= 3.48.0) - - sqlite3/common (3.48.0) - - sqlite3/dbstatvtab (3.48.0): + - sqlite3 (3.49.1): + - sqlite3/common (= 3.49.1) + - sqlite3/common (3.49.1) + - sqlite3/dbstatvtab (3.49.1): - sqlite3/common - - sqlite3/fts5 (3.48.0): + - sqlite3/fts5 (3.49.1): - sqlite3/common - - sqlite3/perf-threadsafe (3.48.0): + - sqlite3/math (3.49.1): - sqlite3/common - - sqlite3/rtree (3.48.0): + - sqlite3/perf-threadsafe (3.49.1): + - sqlite3/common + - sqlite3/rtree (3.49.1): - sqlite3/common - sqlite3_flutter_libs (0.0.1): - Flutter - FlutterMacOS - - sqlite3 (~> 3.48.0) + - sqlite3 (~> 3.49.1) - sqlite3/dbstatvtab - sqlite3/fts5 + - sqlite3/math - sqlite3/perf-threadsafe - sqlite3/rtree - url_launcher_ios (0.0.1): @@ -52,7 +53,6 @@ PODS: DEPENDENCIES: - camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`) - Flutter (from `Flutter`) - - flutter_barcode_scanner (from `.symlinks/plugins/flutter_barcode_scanner/ios`) - flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`) - flutter_zxing (from `.symlinks/plugins/flutter_zxing/ios`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) @@ -75,8 +75,6 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/camera_avfoundation/ios" Flutter: :path: Flutter - flutter_barcode_scanner: - :path: ".symlinks/plugins/flutter_barcode_scanner/ios" flutter_keyboard_visibility: :path: ".symlinks/plugins/flutter_keyboard_visibility/ios" flutter_zxing: @@ -105,7 +103,6 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: camera_avfoundation: 04b44aeb14070126c6529e5ab82cc7c9fca107cf Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 - flutter_barcode_scanner: c5aa9f51c150a6242fa392386bd52b64bb27fcb5 flutter_keyboard_visibility: 4625131e43015dbbe759d9b20daaf77e0e3f6619 flutter_zxing: e741c4f3335db8910e5c396c4291cdfb320859dc image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a @@ -115,8 +112,8 @@ SPEC CHECKSUMS: pointer_interceptor_ios: ec847ef8b0915778bed2b2cef636f4d177fa8eed rive_common: dd421daaf9ae69f0125aa761dd96abd278399952 shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 - sqlite3: 3da10a59910c809fb584a93aa46a3f05b785e12e - sqlite3_flutter_libs: c26d86af4ad88f1465dc4e07e6dc6931eef228e4 + sqlite3: fc1400008a9b3525f5914ed715a5d1af0b8f4983 + sqlite3_flutter_libs: f6acaa2172e6bb3e2e70c771661905080e8ebcf2 url_launcher_ios: 694010445543906933d732453a59da0a173ae33d video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 3209bb17..08cbbe00 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -8,9 +8,9 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3845DFE0762714C6680D5DFA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFA44D9DB464FB85F130C5B5 /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 78C727F12E8C2C2BF5ED5703 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC1C25406C5CD78CE59E547 /* Pods_Runner.framework */; }; 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 */; }; @@ -30,14 +30,14 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0661B42137D743038BB7032F /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 0AA56188CB2769B47E250516 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 0ED96167FF623FAB319C6E99 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 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 = ""; }; + 89F44165E15E0A7B109A05EB /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 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; }; @@ -45,8 +45,8 @@ 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 = ""; }; - C19FA8F529BB2B899AB0C23A /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - DAC1C25406C5CD78CE59E547 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AFA44D9DB464FB85F130C5B5 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C71BAD15819A771165D784B0 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -54,17 +54,17 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 78C727F12E8C2C2BF5ED5703 /* Pods_Runner.framework in Frameworks */, + 3845DFE0762714C6680D5DFA /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 631B4307BD65C9D08E514EBB /* Frameworks */ = { + 23E168F95D2790D29E207E68 /* Frameworks */ = { isa = PBXGroup; children = ( - DAC1C25406C5CD78CE59E547 /* Pods_Runner.framework */, + AFA44D9DB464FB85F130C5B5 /* Pods_Runner.framework */, ); name = Frameworks; sourceTree = ""; @@ -87,7 +87,7 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, BB0286322FD60C00014F981C /* Pods */, - 631B4307BD65C9D08E514EBB /* Frameworks */, + 23E168F95D2790D29E207E68 /* Frameworks */, ); sourceTree = ""; }; @@ -117,9 +117,9 @@ BB0286322FD60C00014F981C /* Pods */ = { isa = PBXGroup; children = ( - 0661B42137D743038BB7032F /* Pods-Runner.debug.xcconfig */, - C19FA8F529BB2B899AB0C23A /* Pods-Runner.release.xcconfig */, - 0AA56188CB2769B47E250516 /* Pods-Runner.profile.xcconfig */, + C71BAD15819A771165D784B0 /* Pods-Runner.debug.xcconfig */, + 0ED96167FF623FAB319C6E99 /* Pods-Runner.release.xcconfig */, + 89F44165E15E0A7B109A05EB /* Pods-Runner.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -131,14 +131,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 55A9F1D1670043D7444258F2 /* [CP] Check Pods Manifest.lock */, + 49A79EC3F389C902853B9186 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 8D4C3EABCD024FF4FF37C7E4 /* [CP] Embed Pods Frameworks */, + 0A9E38C31DF3DC192213822E /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -197,6 +197,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 0A9E38C31DF3DC192213822E /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -213,7 +230,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 55A9F1D1670043D7444258F2 /* [CP] Check Pods Manifest.lock */ = { + 49A79EC3F389C902853B9186 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -235,23 +252,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 8D4C3EABCD024FF4FF37C7E4 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index e67b2808..4f746537 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -50,6 +50,7 @@ ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" debugServiceExtension = "internal" + enableGPUValidationMode = "1" allowLocationSimulation = "YES"> diff --git a/ios/build/.last_build_id b/ios/build/.last_build_id new file mode 100644 index 00000000..7769d20e --- /dev/null +++ b/ios/build/.last_build_id @@ -0,0 +1 @@ +ce49e7d90cd902197f9a9cbc84219d23 \ No newline at end of file From 0d147e609e43ca95f5c9071b5296c738de3ae48d Mon Sep 17 00:00:00 2001 From: Yashas H Majmudar Date: Tue, 25 Mar 2025 23:11:02 -0400 Subject: [PATCH 06/24] update: podfile.lock and pubspec.lock --- pubspec.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 07910e32..0e19b69f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -21,10 +21,10 @@ packages: dependency: transitive description: name: archive - sha256: "0c64e928dcbefddecd234205422bcfc2b5e6d31be0b86fef0d0dd48d7b4c9742" + sha256: "7dcbd0f87fe5f61cb28da39a1a8b70dbc106e2fe0516f7836eb7bb2948481a12" url: "https://pub.dev" source: hosted - version: "4.0.4" + version: "4.0.5" args: dependency: transitive description: @@ -133,18 +133,18 @@ packages: dependency: transitive description: name: camera_avfoundation - sha256: "3057ada0b30402e3a9b6dffec365c9736a36edbf04abaecc67c4309eadc86b49" + sha256: ba48b65a3a97004276ede882e6b838d9667642ff462c95a8bb57ca8a82b6bd25 url: "https://pub.dev" source: hosted - version: "0.9.18+9" + version: "0.9.18+11" camera_platform_interface: dependency: transitive description: name: camera_platform_interface - sha256: "953e7baed3a7c8fae92f7200afeb2be503ff1a17c3b4e4ed7b76f008c2810a31" + sha256: "2f757024a48696ff4814a789b0bd90f5660c0fb25f393ab4564fb483327930e2" url: "https://pub.dev" source: hosted - version: "2.9.0" + version: "2.10.0" camera_web: dependency: transitive description: @@ -317,10 +317,10 @@ packages: dependency: transitive description: name: ffi - sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" + sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.4" file: dependency: transitive description: @@ -381,10 +381,10 @@ packages: dependency: "direct main" description: name: flex_color_scheme - sha256: ae638050fceb35b6040a43cf67892f9b956022068e736284919d93322fdd4ba2 + sha256: "3344f8f6536c6ce0473b98e9f084ef80ca89024ad3b454f9c32cf840206f4387" url: "https://pub.dev" source: hosted - version: "8.1.1" + version: "8.2.0" flex_seed_scheme: dependency: "direct main" description: @@ -402,10 +402,10 @@ packages: dependency: "direct main" description: name: flutter_calendar_carousel - sha256: "675a2331da6ecd7ba180ba7cd6551a18d41861187bb7537c11859a2df72d1646" + sha256: "2fd1b58cefbefe0504ca7d0080a9e63be96041acc93b0c7f340ef0a55b9808fe" url: "https://pub.dev" source: hosted - version: "2.4.4" + version: "2.5.3" flutter_driver: dependency: transitive description: flutter @@ -651,10 +651,10 @@ packages: dependency: transitive description: name: image - sha256: "13d3349ace88f12f4a0d175eb5c12dcdd39d35c4c109a8a13dfeb6d0bd9e31c3" + sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" url: "https://pub.dev" source: hosted - version: "4.5.3" + version: "4.5.4" image_picker: dependency: "direct main" description: @@ -744,10 +744,10 @@ packages: dependency: transitive description: name: js - sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf + sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" url: "https://pub.dev" source: hosted - version: "0.7.1" + version: "0.7.2" json_annotation: dependency: "direct main" description: @@ -984,10 +984,10 @@ packages: dependency: transitive description: name: petitparser - sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646" url: "https://pub.dev" source: hosted - version: "6.0.2" + version: "6.1.0" platform: dependency: transitive description: @@ -1245,10 +1245,10 @@ packages: dependency: "direct main" description: name: sqlite3_flutter_libs - sha256: "7adb4cc96dc08648a5eb1d80a7619070796ca6db03901ff2b6dcb15ee30468f3" + sha256: "1a96b59227828d9eb1463191d684b37a27d66ee5ed7597fcf42eee6452c88a14" url: "https://pub.dev" source: hosted - version: "0.5.31" + version: "0.5.32" sqlparser: dependency: transitive description: @@ -1549,10 +1549,10 @@ packages: dependency: transitive description: name: win32 - sha256: daf97c9d80197ed7b619040e86c8ab9a9dad285e7671ee7390f9180cc828a51e + sha256: dc6ecaa00a7c708e5b4d10ee7bec8c270e9276dfcab1783f57e9962d7884305f url: "https://pub.dev" source: hosted - version: "5.10.1" + version: "5.12.0" xdg_directories: dependency: transitive description: @@ -1578,5 +1578,5 @@ packages: source: hosted version: "3.1.3" sdks: - dart: ">=3.7.0-0 <4.0.0" - flutter: ">=3.27.0" + dart: ">=3.7.0 <4.0.0" + flutter: ">=3.29.0" From d4ee3ed8d44cf8b54825875c131d6e610a0156aa Mon Sep 17 00:00:00 2001 From: Yashas H Majmudar Date: Tue, 25 Mar 2025 23:19:08 -0400 Subject: [PATCH 07/24] add: name to Authors.md --- AUTHORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.md b/AUTHORS.md index d886c6d7..f4bf87d3 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -33,6 +33,7 @@ - Arya Singh - - Xianglin Zeng - - Sangharsh Sulke - +- Yashas H Majmudar - ## Translators From 74752505eba55e93a561e849d0b23df64ada2af9 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Wed, 26 Mar 2025 15:03:15 +0100 Subject: [PATCH 08/24] Change rir and rirTarget types from String to num This is more consistent with the other fields and is now the same as the backend --- lib/helpers/misc.dart | 2 +- lib/models/workouts/log.dart | 12 ++--- lib/models/workouts/log.g.dart | 4 +- lib/models/workouts/set_config_data.dart | 10 ++-- lib/models/workouts/set_config_data.g.dart | 6 +-- lib/widgets/routines/gym_mode/log_page.dart | 2 +- test/fixtures/routines/routine_logs.json | 2 +- test/workout/workout_log_model_test.dart | 4 +- test_data/routines.dart | 54 ++++++++++----------- 9 files changed, 46 insertions(+), 50 deletions(-) diff --git a/lib/helpers/misc.dart b/lib/helpers/misc.dart index 97027392..8db74a85 100644 --- a/lib/helpers/misc.dart +++ b/lib/helpers/misc.dart @@ -28,7 +28,7 @@ String repText( RepetitionUnit? repetitionUnitObj, num? weight, WeightUnit? weightUnitObj, - String? rir, + num? rir, ) { // TODO(x): how to (easily?) translate strings like the units or 'RiR' diff --git a/lib/models/workouts/log.dart b/lib/models/workouts/log.dart index 7744b280..c3082bf4 100644 --- a/lib/models/workouts/log.dart +++ b/lib/models/workouts/log.dart @@ -49,11 +49,11 @@ class Log { @JsonKey(required: true, name: 'slot_entry') int? slotEntryId; - @JsonKey(required: false) - String? rir; + @JsonKey(required: false, fromJson: stringToNum) + num? rir; - @JsonKey(required: false, name: 'rir_target') - String? rirTarget; + @JsonKey(required: false, fromJson: stringToNum, name: 'rir_target') + num? rirTarget; @JsonKey(required: true, fromJson: stringToNum, name: 'repetitions') num? repetitions; @@ -121,10 +121,6 @@ class Log { repetitionsUnitId = repetitionUnit?.id; } - void setRir(String rir) { - this.rir = rir; - } - /// Returns the text representation for a single setting, used in the gym mode String get singleLogRepTextNoNl { return repText(repetitions, repetitionsUnitObj, weight, weightUnitObj, rir) diff --git a/lib/models/workouts/log.g.dart b/lib/models/workouts/log.g.dart index d26477a0..397df1b5 100644 --- a/lib/models/workouts/log.g.dart +++ b/lib/models/workouts/log.g.dart @@ -34,8 +34,8 @@ Log _$LogFromJson(Map json) { repetitions: stringToNum(json['repetitions'] as String?), repetitionsTarget: stringToNum(json['repetitions_target'] as String?), repetitionsUnitId: (json['repetitions_unit'] as num?)?.toInt() ?? REP_UNIT_REPETITIONS_ID, - rir: json['rir'] as String?, - rirTarget: json['rir_target'] as String?, + rir: stringToNum(json['rir'] as String?), + rirTarget: stringToNum(json['rir_target'] as String?), weight: stringToNum(json['weight'] as String?), weightTarget: stringToNum(json['weight_target'] as String?), weightUnitId: (json['weight_unit'] as num?)?.toInt() ?? WEIGHT_UNIT_KG, diff --git a/lib/models/workouts/set_config_data.dart b/lib/models/workouts/set_config_data.dart index 97d2f711..3bc0f85a 100644 --- a/lib/models/workouts/set_config_data.dart +++ b/lib/models/workouts/set_config_data.dart @@ -78,14 +78,14 @@ class SetConfigData { @JsonKey(required: true, name: 'repetitions_rounding', fromJson: stringToNumNull) late num? repetitionsRounding; - @JsonKey(required: true) - late String? rir; + @JsonKey(required: true, fromJson: stringToNumNull) + late num? rir; - @JsonKey(required: true, name: 'max_rir') - late String? maxRir; + @JsonKey(required: true, name: 'max_rir', fromJson: stringToNumNull) + late num? maxRir; @JsonKey(required: true) - late String? rpe; + late num? rpe; @JsonKey(required: true, name: 'rest', fromJson: stringToNumNull) late num? restTime; diff --git a/lib/models/workouts/set_config_data.g.dart b/lib/models/workouts/set_config_data.g.dart index f1239905..561fd77b 100644 --- a/lib/models/workouts/set_config_data.g.dart +++ b/lib/models/workouts/set_config_data.g.dart @@ -50,9 +50,9 @@ SetConfigData _$SetConfigDataFromJson(Map json) { repetitionsRounding: json['repetitions_rounding'] == null ? 1 : stringToNumNull(json['repetitions_rounding'] as String?), - rir: json['rir'] as String?, - maxRir: json['max_rir'] as String?, - rpe: json['rpe'] as String?, + rir: stringToNumNull(json['rir'] as String?), + maxRir: stringToNumNull(json['max_rir'] as String?), + rpe: json['rpe'] as num?, restTime: stringToNumNull(json['rest'] as String?), maxRestTime: stringToNumNull(json['max_rest'] as String?), comment: json['comment'] as String? ?? '', diff --git a/lib/widgets/routines/gym_mode/log_page.dart b/lib/widgets/routines/gym_mode/log_page.dart index 0471eb90..1c9b966e 100644 --- a/lib/widgets/routines/gym_mode/log_page.dart +++ b/lib/widgets/routines/gym_mode/log_page.dart @@ -274,7 +274,7 @@ class _LogPageState extends State { ), if (_detailed) RiRInputWidget( - widget._log.rir == null ? null : num.parse(widget._log.rir!), + widget._log.rir, onChanged: (v) => {}, ), SwitchListTile( diff --git a/test/fixtures/routines/routine_logs.json b/test/fixtures/routines/routine_logs.json index cca04829..1835cc3d 100644 --- a/test/fixtures/routines/routine_logs.json +++ b/test/fixtures/routines/routine_logs.json @@ -161,7 +161,7 @@ "weight": "90.00", "weight_target": "80.00", "rir": "0.5", - "rir_target": null, + "rir_target": "0.5", "rest": 121, "rest_target": 120 }, diff --git a/test/workout/workout_log_model_test.dart b/test/workout/workout_log_model_test.dart index 9bfdfe93..1d993b2d 100644 --- a/test/workout/workout_log_model_test.dart +++ b/test/workout/workout_log_model_test.dart @@ -32,7 +32,7 @@ void main() { routineId: 100, exerciseId: 1, repetitions: 10, - rir: '1.5', + rir: 1.5, repetitionsUnitId: 1, weight: 20, weightUnitId: 1, @@ -45,7 +45,7 @@ void main() { routineId: 42, exerciseId: 1, repetitions: 10, - rir: '1.5', + rir: 1.5, repetitionsUnitId: 1, weight: 20, weightUnitId: 1, diff --git a/test_data/routines.dart b/test_data/routines.dart index 6885ce64..eb3efb75 100644 --- a/test_data/routines.dart +++ b/test_data/routines.dart @@ -50,7 +50,7 @@ Routine getTestRoutine({List? exercises}) { ..iteration = 2 ..slotEntryId = 3 ..weight = 10 - ..rir = '1.5' + ..rir = 1.5 ..date = DateTime(2021, 5, 1) ..repetitions = 10 ..routineId = 1; @@ -63,7 +63,7 @@ Routine getTestRoutine({List? exercises}) { ..iteration = 4 ..slotEntryId = 1 ..weight = 10 - ..rir = '2' + ..rir = 2 ..date = DateTime(2021, 5, 1) ..repetitions = 12 ..routineId = 1; @@ -76,7 +76,7 @@ Routine getTestRoutine({List? exercises}) { ..iteration = 5 ..slotEntryId = 1 ..weight = 50 - ..rir = '' + ..rir = null ..date = DateTime(2021, 5, 2) ..repetitions = 8 ..routineId = 1; @@ -248,8 +248,8 @@ Routine getTestRoutine({List? exercises}) { weight: 100, weightUnit: testWeightUnit1, restTime: 120, - rir: '1.5', - rpe: '8', + rir: 1.5, + rpe: 8, textRepr: '3x100kg', ), SetConfigData( @@ -262,8 +262,8 @@ Routine getTestRoutine({List? exercises}) { weight: 100, weightUnit: testWeightUnit1, restTime: 120, - rir: '1.5', - rpe: '8', + rir: 1.5, + rpe: 8, textRepr: '3x100kg', ), SetConfigData( @@ -276,8 +276,8 @@ Routine getTestRoutine({List? exercises}) { weight: 100, weightUnit: testWeightUnit1, restTime: 120, - rir: '1.5', - rpe: '8', + rir: 1.5, + rpe: 8, textRepr: '3x100kg', ), ], @@ -297,8 +297,8 @@ Routine getTestRoutine({List? exercises}) { weight: 10, weightUnit: testWeightUnit1, restTime: null, - rir: '', - rpe: '', + rir: null, + rpe: null, textRepr: '12x10kg', ), SetConfigData( @@ -311,8 +311,8 @@ Routine getTestRoutine({List? exercises}) { weight: 10, weightUnit: testWeightUnit1, restTime: null, - rir: '', - rpe: '', + rir: null, + rpe: null, textRepr: '12x10kg', ), SetConfigData( @@ -325,8 +325,8 @@ Routine getTestRoutine({List? exercises}) { weight: 10, weightUnit: testWeightUnit1, restTime: null, - rir: '', - rpe: '', + rir: null, + rpe: null, textRepr: '12x10kg', ), ], @@ -354,8 +354,8 @@ Routine getTestRoutine({List? exercises}) { weight: 100, weightUnit: testWeightUnit1, restTime: 120, - rir: '1.5', - rpe: '8', + rir: 1.5, + rpe: 8, textRepr: '3x100kg', ), SetConfigData( @@ -368,8 +368,8 @@ Routine getTestRoutine({List? exercises}) { weight: 100, weightUnit: testWeightUnit1, restTime: 120, - rir: '1.5', - rpe: '8', + rir: 1.5, + rpe: 8, textRepr: '3x100kg', ), SetConfigData( @@ -382,8 +382,8 @@ Routine getTestRoutine({List? exercises}) { weight: 100, weightUnit: testWeightUnit1, restTime: 120, - rir: '1.5', - rpe: '8', + rir: 1.5, + rpe: 8, textRepr: '3x100kg', ), ], @@ -414,8 +414,8 @@ Routine getTestRoutine({List? exercises}) { weight: 100, weightUnit: testWeightUnit1, restTime: 120, - rir: '1.5', - rpe: '8', + rir: 1.5, + rpe: 8, textRepr: '4 sets 3x100kg', ), ], @@ -435,8 +435,8 @@ Routine getTestRoutine({List? exercises}) { weight: 10, weightUnit: testWeightUnit1, restTime: 60, - rir: '', - rpe: '', + rir: null, + rpe: null, textRepr: '4 sets 12x10kg', ), ], @@ -464,8 +464,8 @@ Routine getTestRoutine({List? exercises}) { weight: 100, weightUnit: testWeightUnit1, restTime: 120, - rir: '1.5', - rpe: '8', + rir: 1.5, + rpe: 8, textRepr: '4 sets 3x100kg', ), ], From c8de1c3726c5dd8cc4fad0efd0eaceb7f5dab601 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Wed, 26 Mar 2025 15:50:24 +0100 Subject: [PATCH 09/24] Show command to format lines to 100 characters --- .github/pull_request_template.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 4cf8375a..75aef5cc 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,10 +1,11 @@ ## Description (Proposed Changes) + (Please try to mention in bullet points.) - - -## Link to the issue : +## Link to the issue : (Add link of the issue you have proposed changes to) @@ -16,9 +17,11 @@ Please make sure to add tests when implementing new features. ## Checklist -Please check that the PR fulfills all requirements listed below by checking the relevant checkboxes (`[x]`). This will ensure a smooth and quick review process. +Please check that the PR fulfills all requirements listed below by checking the relevant +checkboxes (`[x]`). This will ensure a smooth and quick review process. - [ ] Set a 100 character limit in your editor/IDE to avoid white space diffs in the PR + (run `dart format --line-length=100 .`) - [ ] Tests for the changes have been added (for bug fixes / features) - [ ] Added yourself to AUTHORS.md - [ ] Updated/added relevant documentation (doc comments with `///`). From 3ca0c1781fafa287e1fad7aaed1367a5bc5c28a6 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Wed, 26 Mar 2025 16:21:41 +0100 Subject: [PATCH 10/24] Add a maximum height for exercise images --- lib/widgets/exercises/exercises.dart | 5 ++++- lib/widgets/exercises/images.dart | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/widgets/exercises/exercises.dart b/lib/widgets/exercises/exercises.dart index f07d162a..74b6beed 100644 --- a/lib/widgets/exercises/exercises.dart +++ b/lib/widgets/exercises/exercises.dart @@ -193,7 +193,10 @@ class ExerciseDetail extends StatelessWidget { // TODO: add carousel for the other images final List out = []; if (_exercise.getMainImage != null) { - out.add(ExerciseImageWidget(image: _exercise.getMainImage)); + out.add(ExerciseImageWidget( + image: _exercise.getMainImage, + height: 250, + )); out.add(const SizedBox(height: PADDING)); } diff --git a/lib/widgets/exercises/images.dart b/lib/widgets/exercises/images.dart index eb7f3e0f..ff590814 100644 --- a/lib/widgets/exercises/images.dart +++ b/lib/widgets/exercises/images.dart @@ -20,9 +20,10 @@ import 'package:flutter/widgets.dart'; import 'package:wger/models/exercises/image.dart'; class ExerciseImageWidget extends StatelessWidget { - const ExerciseImageWidget({this.image}); + const ExerciseImageWidget({this.image, this.height}); final ExerciseImage? image; + final double? height; @override Widget build(BuildContext context) { @@ -32,6 +33,7 @@ class ExerciseImageWidget extends StatelessWidget { image: NetworkImage(image!.url), fit: BoxFit.cover, imageSemanticLabel: 'Exercise image', + height: height, ) : const Image( image: AssetImage('assets/images/placeholder.png'), From d2097bf319e1f02c918de66da7104e42fa38929f Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Wed, 26 Mar 2025 16:27:51 +0100 Subject: [PATCH 11/24] Show full exercise info in gym mode This makes the ExerciseOverview smaller and more consistent See #301 --- .../routines/gym_mode/exercise_overview.dart | 46 ++++--------------- test/workout/gym_mode_screen_test.dart | 4 ++ 2 files changed, 13 insertions(+), 37 deletions(-) diff --git a/lib/widgets/routines/gym_mode/exercise_overview.dart b/lib/widgets/routines/gym_mode/exercise_overview.dart index 1d71102f..c4c25615 100644 --- a/lib/widgets/routines/gym_mode/exercise_overview.dart +++ b/lib/widgets/routines/gym_mode/exercise_overview.dart @@ -16,21 +16,19 @@ * along with this program. If not, see . */ import 'package:flutter/material.dart'; -import 'package:flutter_html/flutter_html.dart'; -import 'package:wger/helpers/i18n.dart'; import 'package:wger/models/exercises/exercise.dart'; -import 'package:wger/widgets/exercises/images.dart'; +import 'package:wger/widgets/exercises/exercises.dart'; import 'package:wger/widgets/routines/gym_mode/navigation.dart'; class ExerciseOverview extends StatelessWidget { final PageController _controller; - final Exercise _exerciseBase; + final Exercise _exercise; final double _ratioCompleted; final Map _exercisePages; const ExerciseOverview( this._controller, - this._exerciseBase, + this._exercise, this._ratioCompleted, this._exercisePages, ); @@ -40,43 +38,17 @@ class ExerciseOverview extends StatelessWidget { return Column( children: [ NavigationHeader( - _exerciseBase.getTranslation(Localizations.localeOf(context).languageCode).name, + _exercise.getTranslation(Localizations.localeOf(context).languageCode).name, _controller, exercisePages: _exercisePages, ), const Divider(), Expanded( - child: ListView( - padding: const EdgeInsets.symmetric(horizontal: 15), - children: [ - Text( - getTranslation(_exerciseBase.category!.name, context), - semanticsLabel: getTranslation(_exerciseBase.category!.name, context), - style: Theme.of(context).textTheme.titleLarge, - textAlign: TextAlign.center, - ), - ..._exerciseBase.equipment.map((e) => Text( - getTranslation(e.name, context), - style: Theme.of(context).textTheme.titleLarge, - textAlign: TextAlign.center, - )), - if (_exerciseBase.images.isNotEmpty) - SizedBox( - width: double.infinity, - height: 200, - child: ListView( - scrollDirection: Axis.horizontal, - children: [ - ..._exerciseBase.images.map((e) => ExerciseImageWidget(image: e)), - ], - ), - ), - Html( - data: _exerciseBase - .getTranslation(Localizations.localeOf(context).languageCode) - .description, - ), - ], + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: ExerciseDetail(_exercise), + ), ), ), NavigationFooter(_controller, _ratioCompleted), diff --git a/test/workout/gym_mode_screen_test.dart b/test/workout/gym_mode_screen_test.dart index f20df62c..6c420890 100644 --- a/test/workout/gym_mode_screen_test.dart +++ b/test/workout/gym_mode_screen_test.dart @@ -86,6 +86,10 @@ void main() { testWidgets('Test the widgets on the gym mode screen', (WidgetTester tester) async { when(mockExerciseProvider.findExerciseById(1)).thenReturn(testExercises[0]); when(mockExerciseProvider.findExerciseById(6)).thenReturn(testExercises[5]); + when(mockExerciseProvider.findExercisesByVariationId( + null, + exerciseIdToExclude: anyNamed('exerciseIdToExclude'), + )).thenReturn([]); await tester.pumpWidget(renderGymMode()); await tester.tap(find.byType(TextButton)); From 59799669c78799555c8957d17f79828fc56131df Mon Sep 17 00:00:00 2001 From: Yashas H Majmudar Date: Wed, 26 Mar 2025 12:16:27 -0400 Subject: [PATCH 12/24] update: ingredient image look --- ios/Podfile.lock | 125 ------------------ lib/widgets/nutrition/ingredient_dialogs.dart | 81 ++++++++++-- 2 files changed, 70 insertions(+), 136 deletions(-) delete mode 100644 ios/Podfile.lock diff --git a/ios/Podfile.lock b/ios/Podfile.lock deleted file mode 100644 index 364cb767..00000000 --- a/ios/Podfile.lock +++ /dev/null @@ -1,125 +0,0 @@ -PODS: - - camera_avfoundation (0.0.1): - - Flutter - - Flutter (1.0.0) - - flutter_barcode_scanner (2.0.0): - - Flutter - - flutter_keyboard_visibility (0.0.1): - - Flutter - - flutter_zxing (0.0.1): - - Flutter - - image_picker_ios (0.0.1): - - Flutter - - integration_test (0.0.1): - - Flutter - - package_info_plus (0.4.5): - - Flutter - - path_provider_foundation (0.0.1): - - Flutter - - FlutterMacOS - - pointer_interceptor_ios (0.0.1): - - Flutter - - rive_common (0.0.1): - - Flutter - - shared_preferences_foundation (0.0.1): - - Flutter - - FlutterMacOS - - sqlite3 (3.48.0): - - sqlite3/common (= 3.48.0) - - sqlite3/common (3.48.0) - - sqlite3/dbstatvtab (3.48.0): - - sqlite3/common - - sqlite3/fts5 (3.48.0): - - sqlite3/common - - sqlite3/perf-threadsafe (3.48.0): - - sqlite3/common - - sqlite3/rtree (3.48.0): - - sqlite3/common - - sqlite3_flutter_libs (0.0.1): - - Flutter - - FlutterMacOS - - sqlite3 (~> 3.48.0) - - sqlite3/dbstatvtab - - sqlite3/fts5 - - sqlite3/perf-threadsafe - - sqlite3/rtree - - url_launcher_ios (0.0.1): - - Flutter - - video_player_avfoundation (0.0.1): - - Flutter - - FlutterMacOS - -DEPENDENCIES: - - camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`) - - Flutter (from `Flutter`) - - flutter_barcode_scanner (from `.symlinks/plugins/flutter_barcode_scanner/ios`) - - flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`) - - flutter_zxing (from `.symlinks/plugins/flutter_zxing/ios`) - - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - - integration_test (from `.symlinks/plugins/integration_test/ios`) - - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - - pointer_interceptor_ios (from `.symlinks/plugins/pointer_interceptor_ios/ios`) - - rive_common (from `.symlinks/plugins/rive_common/ios`) - - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - - sqlite3_flutter_libs (from `.symlinks/plugins/sqlite3_flutter_libs/darwin`) - - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`) - -SPEC REPOS: - trunk: - - sqlite3 - -EXTERNAL SOURCES: - camera_avfoundation: - :path: ".symlinks/plugins/camera_avfoundation/ios" - Flutter: - :path: Flutter - flutter_barcode_scanner: - :path: ".symlinks/plugins/flutter_barcode_scanner/ios" - flutter_keyboard_visibility: - :path: ".symlinks/plugins/flutter_keyboard_visibility/ios" - flutter_zxing: - :path: ".symlinks/plugins/flutter_zxing/ios" - image_picker_ios: - :path: ".symlinks/plugins/image_picker_ios/ios" - integration_test: - :path: ".symlinks/plugins/integration_test/ios" - package_info_plus: - :path: ".symlinks/plugins/package_info_plus/ios" - path_provider_foundation: - :path: ".symlinks/plugins/path_provider_foundation/darwin" - pointer_interceptor_ios: - :path: ".symlinks/plugins/pointer_interceptor_ios/ios" - rive_common: - :path: ".symlinks/plugins/rive_common/ios" - shared_preferences_foundation: - :path: ".symlinks/plugins/shared_preferences_foundation/darwin" - sqlite3_flutter_libs: - :path: ".symlinks/plugins/sqlite3_flutter_libs/darwin" - url_launcher_ios: - :path: ".symlinks/plugins/url_launcher_ios/ios" - video_player_avfoundation: - :path: ".symlinks/plugins/video_player_avfoundation/darwin" - -SPEC CHECKSUMS: - camera_avfoundation: 04b44aeb14070126c6529e5ab82cc7c9fca107cf - Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 - flutter_barcode_scanner: c5aa9f51c150a6242fa392386bd52b64bb27fcb5 - flutter_keyboard_visibility: 4625131e43015dbbe759d9b20daaf77e0e3f6619 - flutter_zxing: e741c4f3335db8910e5c396c4291cdfb320859dc - image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a - integration_test: 4a889634ef21a45d28d50d622cf412dc6d9f586e - package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499 - path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 - pointer_interceptor_ios: ec847ef8b0915778bed2b2cef636f4d177fa8eed - rive_common: dd421daaf9ae69f0125aa761dd96abd278399952 - shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 - sqlite3: 3da10a59910c809fb584a93aa46a3f05b785e12e - sqlite3_flutter_libs: c26d86af4ad88f1465dc4e07e6dc6931eef228e4 - url_launcher_ios: 694010445543906933d732453a59da0a173ae33d - video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b - -PODFILE CHECKSUM: 4e8f8b2be68aeea4c0d5beb6ff1e79fface1d048 - -COCOAPODS: 1.16.2 diff --git a/lib/widgets/nutrition/ingredient_dialogs.dart b/lib/widgets/nutrition/ingredient_dialogs.dart index ca48d4df..e4071017 100644 --- a/lib/widgets/nutrition/ingredient_dialogs.dart +++ b/lib/widgets/nutrition/ingredient_dialogs.dart @@ -1,3 +1,5 @@ +import 'dart:ui'; + import 'package:flutter/material.dart'; import 'package:wger/helpers/misc.dart'; import 'package:wger/l10n/generated/app_localizations.dart'; @@ -10,13 +12,64 @@ Widget ingredientImage(String url, BuildContext context) { final height = MediaQuery.sizeOf(context).height; final width = MediaQuery.sizeOf(context).width; final smallest = height < width ? height : width; - if (smallest < 400) { - radius = smallest / 4; + if (smallest > 400) { + radius = smallest / 2.5; } + + final imageProvider = NetworkImage(url); + return Padding( padding: const EdgeInsets.only(bottom: 12), - child: CircleAvatar(backgroundImage: NetworkImage(url), radius: radius), + child: ClipRRect( + borderRadius: BorderRadius.circular(15), + child: Container( + height: radius, + width: width, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(15), + ), + child: Stack( + children: [ + Image( + image: imageProvider, + height: radius, + width: width, + fit: BoxFit.cover, + ), + BackdropFilter( + filter: ImageFilter.blur( + sigmaY: 5, + sigmaX: 5, + ), + child: Container( + height: radius, + width: width, + color: Colors.transparent, + ), + ), + Center( + child: Padding( + padding: const EdgeInsets.all(10), + child: Container( + clipBehavior: Clip.hardEdge, + decoration: const BoxDecoration( + shape: BoxShape.circle + ), + child: Image( + image: imageProvider, + height: radius, + width: width, + fit: BoxFit.contain, + ), + ), + ), + ) + ], + ), + ), + ), ); + // CircleAvatar(backgroundImage: NetworkImage(url), radius: radius) } class IngredientDetails extends StatelessWidget { @@ -52,7 +105,8 @@ class IngredientDetails extends StatelessWidget { ), if (ingredient?.image?.image != null) ingredientImage(ingredient!.image!.image, context), - if (!snapshot.hasData && !snapshot.hasError) const CircularProgressIndicator(), + if (!snapshot.hasData && !snapshot.hasError) + const CircularProgressIndicator(), if (snapshot.hasData) ConstrainedBox( constraints: const BoxConstraints(minWidth: 400), @@ -69,7 +123,8 @@ class IngredientDetails extends StatelessWidget { padding: const EdgeInsets.only(top: 12), child: InkWell( child: Text('Source: ${source!}'), - onTap: () => launchURL(ingredient!.licenseObjectURl!, context), + onTap: () => + launchURL(ingredient!.licenseObjectURl!, context), ), ), ], @@ -141,22 +196,25 @@ class IngredientScanResultDialog extends StatelessWidget { 'Ingredient lookup error: ${snapshot.error ?? 'unknown error'}', style: const TextStyle(color: Colors.red), ), - if (snapshot.connectionState == ConnectionState.done && ingredient == null) + if (snapshot.connectionState == ConnectionState.done && + ingredient == null) Padding( padding: const EdgeInsets.only(bottom: 8.0), child: Text( - AppLocalizations.of(context).productNotFoundDescription(barcode), + AppLocalizations.of(context) + .productNotFoundDescription(barcode), ), ), if (ingredient != null) Padding( padding: const EdgeInsets.only(bottom: 8.0), - child: - Text(AppLocalizations.of(context).productFoundDescription(ingredient.name)), + child: Text(AppLocalizations.of(context) + .productFoundDescription(ingredient.name)), ), if (ingredient?.image?.image != null) ingredientImage(ingredient!.image!.image, context), - if (snapshot.connectionState != ConnectionState.done && !snapshot.hasError) + if (snapshot.connectionState != ConnectionState.done && + !snapshot.hasError) const CircularProgressIndicator(), if (goals != null) ConstrainedBox( @@ -174,7 +232,8 @@ class IngredientScanResultDialog extends StatelessWidget { padding: const EdgeInsets.only(top: 12), child: InkWell( child: Text('Source: ${source!}'), - onTap: () => launchURL(ingredient!.licenseObjectURl!, context), + onTap: () => + launchURL(ingredient!.licenseObjectURl!, context), ), ), ], From cec9a1e2871d615e9d9982e3ede1db98636b1599 Mon Sep 17 00:00:00 2001 From: Yashas H Majmudar Date: Wed, 26 Mar 2025 12:18:56 -0400 Subject: [PATCH 13/24] update: podfile.lock --- ios/Podfile.lock | 122 ++++++++++++++++++ ios/Runner.xcodeproj/project.pbxproj | 64 ++++----- .../xcshareddata/xcschemes/Runner.xcscheme | 1 + ios/build/.last_build_id | 1 + 4 files changed, 156 insertions(+), 32 deletions(-) create mode 100644 ios/Podfile.lock create mode 100644 ios/build/.last_build_id diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 00000000..065b1a2a --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,122 @@ +PODS: + - camera_avfoundation (0.0.1): + - Flutter + - Flutter (1.0.0) + - flutter_keyboard_visibility (0.0.1): + - Flutter + - flutter_zxing (0.0.1): + - Flutter + - image_picker_ios (0.0.1): + - Flutter + - integration_test (0.0.1): + - Flutter + - package_info_plus (0.4.5): + - Flutter + - path_provider_foundation (0.0.1): + - Flutter + - FlutterMacOS + - pointer_interceptor_ios (0.0.1): + - Flutter + - rive_common (0.0.1): + - Flutter + - shared_preferences_foundation (0.0.1): + - Flutter + - FlutterMacOS + - sqlite3 (3.49.1): + - sqlite3/common (= 3.49.1) + - sqlite3/common (3.49.1) + - sqlite3/dbstatvtab (3.49.1): + - sqlite3/common + - sqlite3/fts5 (3.49.1): + - sqlite3/common + - sqlite3/math (3.49.1): + - sqlite3/common + - sqlite3/perf-threadsafe (3.49.1): + - sqlite3/common + - sqlite3/rtree (3.49.1): + - sqlite3/common + - sqlite3_flutter_libs (0.0.1): + - Flutter + - FlutterMacOS + - sqlite3 (~> 3.49.1) + - sqlite3/dbstatvtab + - sqlite3/fts5 + - sqlite3/math + - sqlite3/perf-threadsafe + - sqlite3/rtree + - url_launcher_ios (0.0.1): + - Flutter + - video_player_avfoundation (0.0.1): + - Flutter + - FlutterMacOS + +DEPENDENCIES: + - camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`) + - Flutter (from `Flutter`) + - flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`) + - flutter_zxing (from `.symlinks/plugins/flutter_zxing/ios`) + - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) + - integration_test (from `.symlinks/plugins/integration_test/ios`) + - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) + - pointer_interceptor_ios (from `.symlinks/plugins/pointer_interceptor_ios/ios`) + - rive_common (from `.symlinks/plugins/rive_common/ios`) + - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) + - sqlite3_flutter_libs (from `.symlinks/plugins/sqlite3_flutter_libs/darwin`) + - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) + - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`) + +SPEC REPOS: + trunk: + - sqlite3 + +EXTERNAL SOURCES: + camera_avfoundation: + :path: ".symlinks/plugins/camera_avfoundation/ios" + Flutter: + :path: Flutter + flutter_keyboard_visibility: + :path: ".symlinks/plugins/flutter_keyboard_visibility/ios" + flutter_zxing: + :path: ".symlinks/plugins/flutter_zxing/ios" + image_picker_ios: + :path: ".symlinks/plugins/image_picker_ios/ios" + integration_test: + :path: ".symlinks/plugins/integration_test/ios" + package_info_plus: + :path: ".symlinks/plugins/package_info_plus/ios" + path_provider_foundation: + :path: ".symlinks/plugins/path_provider_foundation/darwin" + pointer_interceptor_ios: + :path: ".symlinks/plugins/pointer_interceptor_ios/ios" + rive_common: + :path: ".symlinks/plugins/rive_common/ios" + shared_preferences_foundation: + :path: ".symlinks/plugins/shared_preferences_foundation/darwin" + sqlite3_flutter_libs: + :path: ".symlinks/plugins/sqlite3_flutter_libs/darwin" + url_launcher_ios: + :path: ".symlinks/plugins/url_launcher_ios/ios" + video_player_avfoundation: + :path: ".symlinks/plugins/video_player_avfoundation/darwin" + +SPEC CHECKSUMS: + camera_avfoundation: 04b44aeb14070126c6529e5ab82cc7c9fca107cf + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + flutter_keyboard_visibility: 4625131e43015dbbe759d9b20daaf77e0e3f6619 + flutter_zxing: e741c4f3335db8910e5c396c4291cdfb320859dc + image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a + integration_test: 4a889634ef21a45d28d50d622cf412dc6d9f586e + package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499 + path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 + pointer_interceptor_ios: ec847ef8b0915778bed2b2cef636f4d177fa8eed + rive_common: dd421daaf9ae69f0125aa761dd96abd278399952 + shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 + sqlite3: fc1400008a9b3525f5914ed715a5d1af0b8f4983 + sqlite3_flutter_libs: f6acaa2172e6bb3e2e70c771661905080e8ebcf2 + url_launcher_ios: 694010445543906933d732453a59da0a173ae33d + video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b + +PODFILE CHECKSUM: 4e8f8b2be68aeea4c0d5beb6ff1e79fface1d048 + +COCOAPODS: 1.16.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 3209bb17..ebcd78b2 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -10,10 +10,10 @@ 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 */; }; - 78C727F12E8C2C2BF5ED5703 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC1C25406C5CD78CE59E547 /* Pods_Runner.framework */; }; 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 */; }; + C93895870C960E6C15E51713 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3017A465008DCA640E88319 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -30,10 +30,11 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0661B42137D743038BB7032F /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 0AA56188CB2769B47E250516 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 0626AA66A7D8D715E41F96DC /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 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 = ""; }; + 35EB2C4FBDA8631D02C34891 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 365AFD67D3A9053C371FE7D7 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 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 = ""; }; @@ -45,8 +46,7 @@ 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 = ""; }; - C19FA8F529BB2B899AB0C23A /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - DAC1C25406C5CD78CE59E547 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D3017A465008DCA640E88319 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -54,17 +54,17 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 78C727F12E8C2C2BF5ED5703 /* Pods_Runner.framework in Frameworks */, + C93895870C960E6C15E51713 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 631B4307BD65C9D08E514EBB /* Frameworks */ = { + 112D28FCA6DA9782BC706532 /* Frameworks */ = { isa = PBXGroup; children = ( - DAC1C25406C5CD78CE59E547 /* Pods_Runner.framework */, + D3017A465008DCA640E88319 /* Pods_Runner.framework */, ); name = Frameworks; sourceTree = ""; @@ -87,7 +87,7 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, BB0286322FD60C00014F981C /* Pods */, - 631B4307BD65C9D08E514EBB /* Frameworks */, + 112D28FCA6DA9782BC706532 /* Frameworks */, ); sourceTree = ""; }; @@ -117,9 +117,9 @@ BB0286322FD60C00014F981C /* Pods */ = { isa = PBXGroup; children = ( - 0661B42137D743038BB7032F /* Pods-Runner.debug.xcconfig */, - C19FA8F529BB2B899AB0C23A /* Pods-Runner.release.xcconfig */, - 0AA56188CB2769B47E250516 /* Pods-Runner.profile.xcconfig */, + 35EB2C4FBDA8631D02C34891 /* Pods-Runner.debug.xcconfig */, + 365AFD67D3A9053C371FE7D7 /* Pods-Runner.release.xcconfig */, + 0626AA66A7D8D715E41F96DC /* Pods-Runner.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -131,14 +131,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 55A9F1D1670043D7444258F2 /* [CP] Check Pods Manifest.lock */, + 67856A6BBEDCADB77EED5ED0 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 8D4C3EABCD024FF4FF37C7E4 /* [CP] Embed Pods Frameworks */, + 2D55FD71E7AF35D39D861B93 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -197,6 +197,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 2D55FD71E7AF35D39D861B93 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -213,7 +230,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 55A9F1D1670043D7444258F2 /* [CP] Check Pods Manifest.lock */ = { + 67856A6BBEDCADB77EED5ED0 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -235,23 +252,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 8D4C3EABCD024FF4FF37C7E4 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index e67b2808..4f746537 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -50,6 +50,7 @@ ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" debugServiceExtension = "internal" + enableGPUValidationMode = "1" allowLocationSimulation = "YES"> diff --git a/ios/build/.last_build_id b/ios/build/.last_build_id new file mode 100644 index 00000000..7769d20e --- /dev/null +++ b/ios/build/.last_build_id @@ -0,0 +1 @@ +ce49e7d90cd902197f9a9cbc84219d23 \ No newline at end of file From 41dd7e67fe49a727245febffcaa0bebb916b6150 Mon Sep 17 00:00:00 2001 From: Yashas H Majmudar Date: Wed, 26 Mar 2025 12:22:19 -0400 Subject: [PATCH 14/24] add: author, update: podfile.lock --- AUTHORS.md | 2 +- pubspec.lock | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index d886c6d7..18099e9a 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -33,7 +33,7 @@ - Arya Singh - - Xianglin Zeng - - Sangharsh Sulke - - +- Yashas H Majmudar - ## Translators - Saudi Arabian diff --git a/pubspec.lock b/pubspec.lock index 07910e32..0e19b69f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -21,10 +21,10 @@ packages: dependency: transitive description: name: archive - sha256: "0c64e928dcbefddecd234205422bcfc2b5e6d31be0b86fef0d0dd48d7b4c9742" + sha256: "7dcbd0f87fe5f61cb28da39a1a8b70dbc106e2fe0516f7836eb7bb2948481a12" url: "https://pub.dev" source: hosted - version: "4.0.4" + version: "4.0.5" args: dependency: transitive description: @@ -133,18 +133,18 @@ packages: dependency: transitive description: name: camera_avfoundation - sha256: "3057ada0b30402e3a9b6dffec365c9736a36edbf04abaecc67c4309eadc86b49" + sha256: ba48b65a3a97004276ede882e6b838d9667642ff462c95a8bb57ca8a82b6bd25 url: "https://pub.dev" source: hosted - version: "0.9.18+9" + version: "0.9.18+11" camera_platform_interface: dependency: transitive description: name: camera_platform_interface - sha256: "953e7baed3a7c8fae92f7200afeb2be503ff1a17c3b4e4ed7b76f008c2810a31" + sha256: "2f757024a48696ff4814a789b0bd90f5660c0fb25f393ab4564fb483327930e2" url: "https://pub.dev" source: hosted - version: "2.9.0" + version: "2.10.0" camera_web: dependency: transitive description: @@ -317,10 +317,10 @@ packages: dependency: transitive description: name: ffi - sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" + sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.4" file: dependency: transitive description: @@ -381,10 +381,10 @@ packages: dependency: "direct main" description: name: flex_color_scheme - sha256: ae638050fceb35b6040a43cf67892f9b956022068e736284919d93322fdd4ba2 + sha256: "3344f8f6536c6ce0473b98e9f084ef80ca89024ad3b454f9c32cf840206f4387" url: "https://pub.dev" source: hosted - version: "8.1.1" + version: "8.2.0" flex_seed_scheme: dependency: "direct main" description: @@ -402,10 +402,10 @@ packages: dependency: "direct main" description: name: flutter_calendar_carousel - sha256: "675a2331da6ecd7ba180ba7cd6551a18d41861187bb7537c11859a2df72d1646" + sha256: "2fd1b58cefbefe0504ca7d0080a9e63be96041acc93b0c7f340ef0a55b9808fe" url: "https://pub.dev" source: hosted - version: "2.4.4" + version: "2.5.3" flutter_driver: dependency: transitive description: flutter @@ -651,10 +651,10 @@ packages: dependency: transitive description: name: image - sha256: "13d3349ace88f12f4a0d175eb5c12dcdd39d35c4c109a8a13dfeb6d0bd9e31c3" + sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" url: "https://pub.dev" source: hosted - version: "4.5.3" + version: "4.5.4" image_picker: dependency: "direct main" description: @@ -744,10 +744,10 @@ packages: dependency: transitive description: name: js - sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf + sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" url: "https://pub.dev" source: hosted - version: "0.7.1" + version: "0.7.2" json_annotation: dependency: "direct main" description: @@ -984,10 +984,10 @@ packages: dependency: transitive description: name: petitparser - sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646" url: "https://pub.dev" source: hosted - version: "6.0.2" + version: "6.1.0" platform: dependency: transitive description: @@ -1245,10 +1245,10 @@ packages: dependency: "direct main" description: name: sqlite3_flutter_libs - sha256: "7adb4cc96dc08648a5eb1d80a7619070796ca6db03901ff2b6dcb15ee30468f3" + sha256: "1a96b59227828d9eb1463191d684b37a27d66ee5ed7597fcf42eee6452c88a14" url: "https://pub.dev" source: hosted - version: "0.5.31" + version: "0.5.32" sqlparser: dependency: transitive description: @@ -1549,10 +1549,10 @@ packages: dependency: transitive description: name: win32 - sha256: daf97c9d80197ed7b619040e86c8ab9a9dad285e7671ee7390f9180cc828a51e + sha256: dc6ecaa00a7c708e5b4d10ee7bec8c270e9276dfcab1783f57e9962d7884305f url: "https://pub.dev" source: hosted - version: "5.10.1" + version: "5.12.0" xdg_directories: dependency: transitive description: @@ -1578,5 +1578,5 @@ packages: source: hosted version: "3.1.3" sdks: - dart: ">=3.7.0-0 <4.0.0" - flutter: ">=3.27.0" + dart: ">=3.7.0 <4.0.0" + flutter: ">=3.29.0" From ce07a9cf00ffd7f3592ac5e629c50fab3423419e Mon Sep 17 00:00:00 2001 From: Yashas H Majmudar Date: Wed, 26 Mar 2025 12:25:50 -0400 Subject: [PATCH 15/24] format dart convention --- lib/widgets/nutrition/ingredient_dialogs.dart | 26 +++++++------------ 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/lib/widgets/nutrition/ingredient_dialogs.dart b/lib/widgets/nutrition/ingredient_dialogs.dart index e4071017..faf0f245 100644 --- a/lib/widgets/nutrition/ingredient_dialogs.dart +++ b/lib/widgets/nutrition/ingredient_dialogs.dart @@ -52,9 +52,7 @@ Widget ingredientImage(String url, BuildContext context) { padding: const EdgeInsets.all(10), child: Container( clipBehavior: Clip.hardEdge, - decoration: const BoxDecoration( - shape: BoxShape.circle - ), + decoration: const BoxDecoration(shape: BoxShape.circle), child: Image( image: imageProvider, height: radius, @@ -105,8 +103,7 @@ class IngredientDetails extends StatelessWidget { ), if (ingredient?.image?.image != null) ingredientImage(ingredient!.image!.image, context), - if (!snapshot.hasData && !snapshot.hasError) - const CircularProgressIndicator(), + if (!snapshot.hasData && !snapshot.hasError) const CircularProgressIndicator(), if (snapshot.hasData) ConstrainedBox( constraints: const BoxConstraints(minWidth: 400), @@ -123,8 +120,7 @@ class IngredientDetails extends StatelessWidget { padding: const EdgeInsets.only(top: 12), child: InkWell( child: Text('Source: ${source!}'), - onTap: () => - launchURL(ingredient!.licenseObjectURl!, context), + onTap: () => launchURL(ingredient!.licenseObjectURl!, context), ), ), ], @@ -196,25 +192,22 @@ class IngredientScanResultDialog extends StatelessWidget { 'Ingredient lookup error: ${snapshot.error ?? 'unknown error'}', style: const TextStyle(color: Colors.red), ), - if (snapshot.connectionState == ConnectionState.done && - ingredient == null) + if (snapshot.connectionState == ConnectionState.done && ingredient == null) Padding( padding: const EdgeInsets.only(bottom: 8.0), child: Text( - AppLocalizations.of(context) - .productNotFoundDescription(barcode), + AppLocalizations.of(context).productNotFoundDescription(barcode), ), ), if (ingredient != null) Padding( padding: const EdgeInsets.only(bottom: 8.0), - child: Text(AppLocalizations.of(context) - .productFoundDescription(ingredient.name)), + child: + Text(AppLocalizations.of(context).productFoundDescription(ingredient.name)), ), if (ingredient?.image?.image != null) ingredientImage(ingredient!.image!.image, context), - if (snapshot.connectionState != ConnectionState.done && - !snapshot.hasError) + if (snapshot.connectionState != ConnectionState.done && !snapshot.hasError) const CircularProgressIndicator(), if (goals != null) ConstrainedBox( @@ -232,8 +225,7 @@ class IngredientScanResultDialog extends StatelessWidget { padding: const EdgeInsets.only(top: 12), child: InkWell( child: Text('Source: ${source!}'), - onTap: () => - launchURL(ingredient!.licenseObjectURl!, context), + onTap: () => launchURL(ingredient!.licenseObjectURl!, context), ), ), ], From ae64c2377de6fa6d213c6785bba5eb09957c8991 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Wed, 26 Mar 2025 18:28:55 +0100 Subject: [PATCH 16/24] update goldens --- .../goldens/routine_logs_screen_detail.png | Bin 176768 -> 179200 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/workout/goldens/routine_logs_screen_detail.png b/test/workout/goldens/routine_logs_screen_detail.png index 0af52b65a969d777b0b30072bf1b7fa51888c57c..f98c391246fd51dd00e98737cc16caab4424781e 100644 GIT binary patch delta 33489 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Ǚw}<4hDKe!J=B3n;wkR8NUH7VJk0UxKwRyY${OCh_q}~TtV~bES)UNq0mk~ z^fB?Ub3756*AKeD9XoMrUlfOITUUK4|9w_2Fe$0FxYJDBoLNGHw#^qn^(Gh0+I=1&s81i_ zH&_(d^Jt|WLj!Su4LdM$O6TE2FnFNxn;b}UPtBsL5p{>bsjSY%)Zh5;zh{L4yP8EH z8$^R$W;5JX04JC#n=^Of)}4ZAa+x7RNLtNYih{>^k{J_V=#PlV33%YCBiOtzk(=&* zTiF0?j*v+e&Lxdf6^1q7@&8eIA(6*?J`Fzy13;2)ru`ShT7O~;{iv3#bY|`qZf-ZE znauR8kMoA<$NanGJ`>1tQZJ=8{kHh<^kJE50uxCpTs;)tDO5-|W{{NPhyY zZK2!a`=!kOq*5|L3#`b>teZeQYC;2m2>sc444!WwD=q6RNPY+C7$KSycmU+Zf{Yvi z#KB%-F%e!oCGr$(B^ukr&)4qiV?FhvZ8^44A$(Efnhk6$-88{tXT)Sdv`_N^thg8= zRI&5;vsFj6%+E7@985G-0|Qh0pu{=6I5EPVTio9ZT>W(?W^nbw6^7)Dt~3@vF;%Af zUp8UctN`?+loraq^Y?XyU=AkwK{`FR&ULuqokGNYB0>nxOy_!A_O~+QrxC~di$3c~ zd2zVQ)ST=puU`GI>=C=gF&?vE#Y21Em9*fd8+W)kl6AoumJaxzFs29Lon6=Iq&)r~ zX1oWWN^bj8-bIdm)LVQjsTD4s9u*n_gpiZkewkTTu#-WYb9X5_J`~uUg<+dBv$L(s ztx)WHhK;+Ma@~F{dnYi{r=@P<>T4*A@RqZYznEB6uErN9>X4+LVW(F9yMSZ3ar z+kKy(1b2E29_Uqwqu4Hs(P>)YW_2!3ww!4B?&yMGMumg6n7eU`kbhlN8Bb**gGEL(JW@ikHf8DopatD zAXl7A+P&7@`~heeYFvPD34Hr-sTwz7E><(`SZFgM*0N&>T88U^fl-@ICudw^0yx-e zDokr>c^QzlcY&;31)s#I98i#Z-Mrf?eu7L=G;?X-o7k-OO6^NeNx2xz=>c**F_nW0 z1x_VV6;n1eO#nHk?9RCp>#3s?6C^aWG=`r(UB-R5Y}~TTBaSz2Dcak}#KkA7*rF#q zC4QvApfl)`wid-$Dk`&ZZ)kYzIGkjFvZG|;ERD|2AUxL7f`k~}`L4%ZQ3>E@sZP{{ zcfDtE6{sghz1y9>7|!|TuJYPYr`4WDDX-Xa(YU0We<>dB|NPYfk<^<(&#LtJj~^7s z!*4uMVIb5ZW3LU-)b#T5dM~m6cK^{*u#PNV7_%$dcnMsl76yTSTE3DDIH^9q{kRW& z>V*vWYAX`;$vr{Mq{X7q!H`x;I31<%{V7bvzTW~;+B!(mT&IzZwVhgcTvYU3-ps?idm7S4AV=1^#yQSSM8|@&o#i0|2rVWxP8Z`@UUU7!4ydu8PoSZ z57k3x)cWSPY^$brN051rprd-+Qcg>&SbXVeEi3|LbYKPq%04 z$h}5SBj`ntrFI~(&iG;NU~dL%*&-?@x|asF*Q0uaA2Nd}%76r#=7XpLX@O>Y65!OX z_c}DO%T<`K6HgcOkZH+mZLM1=C|vAn=HLL^CEz0mGAKVuln=VUeZc$6F?HK*0@ph) zB?#?f6LR#5jRoX3!;;r_DJj4b=3U@~uS0)4eE9Y7O0tk{Nq^wpLH@q|mq?JNUwBho9c&GXn@`z(V+)OUH#MrIO^4^z-81fn#V6gSd&9M@<_ zCa-cG4_L1DcJ+c!3BA7vG6u89>Be5$b7`WoyMZ`z*_B#^2k8#OmBFvhUot0`t7nLK z9`Q#6ifRN&=?+)4xi=~Y1%@;WPqRw1hyLTz+gmT_PC+R&O~+>!%@STcb@B>_AG_LN z5Hp(~LJi{C19GdgH}FO7WE3drJM{yjgk{h@GwQvmBPo@rFPcNW>3Ap^I4*8t`Q_6t~zKO3GCqdXG!H4uRVhf=7i9b45qF zG!sNY5SyW}xW><8ZIo=f^dc%=7!-l%M|=UJ&q~ zu^9J(y-hj!s2vLusR?FOD5@bUn6PXiPJP~w^5wI;2UjwF`&~MNJ@!`6xl3aZfw8!g z8N6R#o>#vV$;*H0;5NhEjCTxSvj3Oyr0B{|yCnKlS<%nBSbr zbap;HzVX0^q!go|8Ae4JhQqa!LJ$3T?bil@$cUr52y>}7!0J@b-kaE49`Lc~ z=FQx(zhyJrAv4|~EffOGX9`I1M&tO}RbagNSh~ISais=ZN4a(REZ0GqJU_dblSSIp z@-H_FqCfY85dZ8;NIPQy+8K9@^TiQ&RoW>jDuvV|`mZ1x?kpX2ZM$*!z7&31JH_;C zu0h1#e{kV%TzYxkpm4Q3y^u7H>=U)o#V{@Jr1>_0k^r%(4ckQW0YJW5D58Iy0znsw z!TBu%J1nOWgtV!g?6<`}360=`#Dkqm>S}*;?eBwt75P&UjHnuO^LgU)KgOkP6D4w< z@U{0GjIb;ne;Kw-{I&cRik~M;&;`Er-H)qZ)fo2|B}V{?@2gR}U#feWj&!G1joz7` z{xK2o7d7M0M*?hL8{dDfq?nZ!%%wB7DhX$EpM0{Dw&P%v4nzr?nAjTq$K;>?oO}e! z#{XmGf)(Ym4+`r2>#Q!-wd$k zdBNR|(SP`AE0|Om_m!Od>jOa-z!nntI;f8^vIifR-b3nzY8;tJ3WCai>rIrdU}pTs z2K-;JLSHdw#i+LNt@ z!csF+Q*9GtO`cp|hHW_dYTZC#)c=|WKj)C$bZlf{ zuv$E?FU%+be|zCGVM_9?`!Wx zHD&W_rf;@?&h)O?R}Q)H?dpq6G$;E-ZB%!NOL^vr^;cCFA#6 zOo624W#gJLjP9>bblvdy;XZFHEX6%hha#;;qgO!(T+B6NbjAYL;Eca+lmH2r4 ztHYg40R)c9-Wy+(XXM6w3FZu%vA@>;?%Yqq98tC3WyZ-LzMQgQFZML>NyTLncye|Bb30R-`YqUR*=A`1gqZXCDw}f*CX0WjD!gn~#g9Y#uRYtg}%a zf4BRG#Nr=r1bM_ZPoxuIKAmKKvSVnsYmkxVd$Rd2-+?&%^c{#EIS!Fwisy`IGl`!RaZ`#O^*vuzdTI>aS5+2pC%y^6M`xL->(i+r(>v zSibZ)0M;%srM}t~8_yTsD_~L_M)e|$%8$v}(a;Bdor?3IK9eI=K&cshN3HuHgU3cl zEUx+*l)2Q1IoP~nYK)Y~vP9VP)(afy{swH@EI$m$_{Wr(|DICqyg2;j<3{MQSbda| z>O||G^ni;i+y?vsM1ExX>u zV_;#Jw&RX*rIfnOG#%>g=WlinHE%RoNV)M$enl`bhX#QAZctn7YJ`> zoZTv!RpWB-;)6)sT12T` z<=o|st(Z>G7a5+7^%Y2=gXC%mmKO7DQ~OoHKi*bQP{dIY7(C;nXC;9T20e5C zHwxkVAD{7N=A|D;a_$emD3~d?n#5kjV}=ir7UP5Ie!8*WbHoC4pmqDP*{zg3q3xCp zq)*gmz6wFQJm%)+{Ptr=!zbtz@*iB4!r(zn3aJD=O62_rvTBUXx0zroW24r!{Kx6U ziHV7~6Y?JKuc1&QFPZS#q!uffH_XOQ^;vs zxZ6=0V+(CCuEz)5F;BFR{OS(ZK6u&4@}5Uy;3^$+rg*!bA0rxTRHT$|??iYxD9-UG z_Q|Cnsz>)loJFQBnl)iW*ylhNaK9r?GM%9sUqAe8dR}&m=A5iK!QU%=?A4g8y zkyI{EJ( zK)Rpi9G>WJpc}j2kG4PFE(O-@q7`JvC%5ty!0 z@8sj7$d2ZKuj|hnmm2^1b>^;A=Hctq)87xP-MZTv&R-eib}`&>nWAj*NLhDsy2?H> zgKd(wy!FUhyxOyB4QzRhO~*SeyEQP#pM{L5+`s6AGVr%EYgPO01#!Bn+SGtZ6ik;n zE)Xr=C@%O|Y{)Ac$buxx=k?gtkm;H zxf`h~(m}FcL=BuZ_a}P3-WuOo?)4n78=NSJFVuhVru6QO%-0>N#I->{;^7M}{{`3h z0ikggv4cPUSe z|Hdev-KFM<7yQppfu0_o`AwAyfm{OZ`n68*MiW8;AG@XtwDh`5srbv%B11I7$y+N8 z;{~T|qNuK^EdXj=z8ucXHW-QKX&894QoeZ%f;iVFo?LrbD$HDXdgrwMn?$kN-YjF` z0u;gm9KN6zd4Y7XxmN6hrrGti4@}gN{%Pye$&bGl9?eoRF*Eiox(Ts|=67QCocs$j z5>nybf@1vIRK8RK#Mu_Y?~fjRZ=bpSt!MoeB~$YmVsOt{%rxsrKTgyuo|xC&}d=N zeL&U>X}&AHytKr+2a<_K#MQWp?;tq}3QG@2-!Zd8ib9 zx=2={TXG1mXKf`ekS3tkc-1Z<;KRWCAJJZ?t|bTlX5j zKuP)PK*hA)`c;u(%H#Q)?e6*}h+7v6W%Bul&I9wPvRWOR-5#|7w5J5!J+#+2?cvCM z!Bq3)?++o@QgaWd1@Cc~bF6<`XRT__q*{(IxXQ6}CZo)Fw^z_$zD&;(?$zeBgY$55 z(TKBU8NAmYd@@L20yR~#GV!SpVyv%YD!x!rylb0SPzcwW?J_b)MrJ9L&bh@UX7 zmIG?o5~Mxgv!>M^)r}?=p92k;X!I+cEB9)o+H0kyr0u=7pZF?tz$h-Ij&Bx83&(GG z+^DwfR$pFTqMfPD^gx(So9b5<%O2PI*?9*~%TDX-Kag6#DGQeypAbKnR&6Y7s#~q^ z{u&j`JUIO4j-c~wqmKDpDnX{Bswpt#tO?Ncbcc(Xm7-LTXBqU3!0%hy3s$AbLOFyd z;T?3p)TGI@cFry3@k}M)E4s!8K5j`%-1_U?s8N(Uyboxv7_TGtoj+^e6QIur&xTg$;*%K5$1Vs0NTbc01JZon2Y(mC*& z<8_J9O%!{vMUA8JtuHXGV7z^r)mi%W zx$K2Zlh2=xUg*CaKw?bzUOS5b8zQG*oRGWJI9fT{Mc>NRC{~0Y6iiGKgpD01S9bBN zf1Z3n<#*!sqr!g2i{b&*(JH;nqLMG`GlxUGFa;?s{FIQ&_OWTjtuvFB<@QsV%RH}3 zQAQ8-i|YAy&&=$dtrz1c$Z)9r+WykFQX@FHbgy#iiD{EZ{QI+Z0cO$7fZCkG+$k9M zqs-qQU0(LWOg=W|L}${7j{VuQjnq{*u3M~jYwy|LmuZHXetPt*brnxd*+7u<_%0Nwg%oQf91Tg z7g&BglKO7p7U-M9+xxEb28R|C3tQ>n9AZrIjI+JtHDS4H)1OTschx{8Z)~8YBUTv) zIciHP>N~XZn_xV_=OCBnK)%Um-2$%^bI`s!6`mS?6}IuOq;?JkE;N*#nW(EBF7xo} zE{fG@H9Em8X3RbF;hD3VQE=vq1hLXDRduR%)!DW8v!7k(dS9B;TM}O4r|YO|bMwoAM4Q6FqEB9nj4yF! z{fkDE6gtYdET1`w0pPVgva?>&s^1}9fQNQCxW+2WGdrX{)px^xVJU@g?-+Y5ZS}K3 zib(C;zL|F7$lo*Iyf8s$#ol7;Mg*yTIQLAuww$}1*GNy1`H1n*u*8{3uzFIKDPV72 zrz%FVDn-iEWwhk+4c%OS)z$g8Xg}5Xt=Sjz3N{MeMWqAt zKfQV4yR^h2741|=wN0(zZrQHCgGGldG^_!3GK)-W3k#5mKIr^dzy9pxh5bg~&tD6w z1`Bk^UK)leJa0W9xoogVAwpTn8M%au#ECd+e@-f>YNRE9nFLZAHz?;&H~C*op+~Qm ztZ$H^M#B{Ddg{kwCCPv}0<1zUr0}6?->sx>y!(i*e;evmlpPb;M@&mIaM1SjSF^$p z&)}pM6a1Oe6UVZI4r|`k9#>9xy03y+qxKAPF}n0wxi{ANh-!fCf8zaaeZ6r-0S22x zrMY}l@&LLbIr$4SMvs?{_QD0Ek9HMnlNk$9`hbaP$=@LvxL2Kjcc&_a3rnjWKu~8M z-)36{O-%ibI>%R?)A>=5oYs&+ZEJ{LYNBc3678{!7wZd4JbmslT8b ze4FnOEBHK`cc~^sIU*86cf#Xj9Yup&LxIYwJ1Oj=X*nu)`^x86)z$F&M|{`F$q1CA z28-m9PGCX>N(Hl7%ls>Igd>ysm0CEN$O&Ze^>!s3=WQZV>-Migvf6wI)spGRx8o6i z!CFN!o~v|?rk_M88q*(`Y9m5!+=_@d{Mxdx*8J4%OTE7LZSfK#tJMoJPDl!#wlgN3%C%I1;f>n%}Ag!-&E zK39%x>8F#m1<vD|@$chLT zwcbzri-d6?Syp@@nyqVqb==lX*@}wLCD%xql(&~i>>t4Lin`XE?(b6!&pEOC%O2)^ z@1pVspu)UV6-EcQ8}@zV=I48fXzd<6!JJ)l1JVc->O?Wr!eVjhy)9%fvxCXK&W`un zKi+Gea?Hp1`di$V3DmS2W{ z5KQGc14~7IuhU&Gm0DZ-mWb_UIYZy5n-EsB&oV;Wks#w1iKkq8a%)HK80_O4;5S}< z1x4z+NXXZiGkGX)meLS?n&+GwNp+GQDoi~4c;Qs2<35AmhZaEh&tA|#AQF!fp?7vt zX^4Uok?8PEoX8l+T(Hm$xw;tW_vXV8O6>7{hg*-U3^`EKPL@|FQ4( zD27f$Yu=5B_mtWS$|yQ4)(%*TO@tEBf~wN8fDMDXuY|Qvq5M{RerXP%6(1a!3;G18 zR&umWwCg`&2d3%A_X8IPvT`We!U*p11F9ADC#k3yodUX6cJ;~*6Ny13sTH*{Y z9$8N<;Wc6$qaQOVU9;1rRKAWxT)N@KrWhX|?=g#&?!v;i$PW$@i3)1HFteC}&=Og} z2*M;svq(*AUM|ruzXG9KAXz|n5uuXTc3rKnEF#Osp^G0cw@& zeC+KBao99Snz348)G=$Aa<%4CYJPco&@uHhc=63r$9Y_=wv= z^u6hPu^I;YxtKN)zj{LXac5^2iwz9DZO-5)1rtQZv7m_Bc)_t{WNLo@3Y8&PLO zQ#(&+FC^}Gjb!-K5)HYUE^p*cu}=8au-T6UQkm&MOQlh|V%IZ5CssWwxf8YF^Jl{{ z*J3PUWdd#^doRAbG*SsupuOs?KyfG|Lw&fDw6jC>-lx&?>=?Qc;*J3B7~W@9YWKiL zu`5G*%hG#OS~aFXkL0p?j~%j?nx#@2Uj5^{5_E3<;Xud0t!22Zi>vGWJ_S4@QF^a5 zSbRN`oQ2xZKbFKGoL86Gy-m!3elx%$)u+URh1mNMTLyRjAe4$k0yOEJgxu9Yj0-2- zDTV7%IdUfoZpHf>op#wA3B zL++l0WAn50I%J}v9P(v@#{7UhE+}`izYo~S=YtxKtVCc&8|7!l=;O1?Tvjr%12!U> zk$ey5;tJI8B)-vC(wDYKm5=k%1x-i2t1jC5mWBcqJocrUx6M>{aypNI&1l^Cf;M=5 zi)thcIT=5oGvt>HmgZMhf>xjz*Ro=dK`X@+^fOwfbG0#Ft#oAZOkU_SsQ^Du^*ae| zetP10u(h+(#m`#p^^JwNDSvQCP2^Bq_oxE;RQrL&+#R4yfIH>A5Ij6de%OoDS}0Oi zQJx(b8q%xZ0hhg&8FATcN|D_B{HhZV6+B~NHoq(J&w~tnbth;;2AiW_vr8$pJ3s>% zzQRltu+}qzPs!`z&Q|{s<#seGuPtHL zADJ3F3y#AwUT^s%G6W#Y2&dt#^-)Kx2^=J%)*chMbcFv%%my9ssz!3(mnUAezUsO- zmNoE+Kj*$VRA?gNOImM&%5_qj=9U&k*xP&Pe>Nn3B$UTp&oyw*8@Y~8wI=g*E-6O! z8QZ_J%vO7dqjo>ZNSHcOHW&s8-O=Q{vO>bu~UB zJ~dE8eidH!Hg#;NP&s&93qPJ`ST4Ok7gD}*$kK>~L=7NdWFZnd@_}5OXQbR3u%b`g zUIAUHq8JYgFb;zKVuk&F1uu*htIUT>b$6!DEN}eU9 zJ;5P8NfB%C44{5?#*k+YghVzE@FB`+WB7mefYn)0&_~t59H$esDRAZWhNs zXu7d#9=oyXQlP2DS&-s0;E*0o!qf))c&&q>BeI+?uwh$jvq&dLPowM>n^QpDm10W0 z#@fm4Oq0IF53Q82Ih%t1K43=lE)Qfwh8Fv#UkCuG(J8!5F~k4psn0~}Jdk%^PgiPV z6)BReH10Yd^URRmBMqb3%L5}AZ2-gma0sb>Y#oJGs@Pr>v58f1y8!!ockl@sfSEM& z*tdqthAf87m1`@an-NHKV2HG9m%PjJ;0(L74KH1{H-0>$QOc855$m%m3+=ULWhm?B z0!cFiMCD+XLpnGFUA0Hg&-{Sw@MU+71_W>-!p*bF#DVk5?`+ z_}hj^uRX7f=Y^Sww_oCDaa!j{y-h87t%APCdt-^5$=-n)diK}C!h7OL>UTih@~#$U z^bouDu56Tja1p^*!l0W7fM+$vygMCm@=lzoQwxAILc@36mdCObSkJMvb1_$4y8>%H z|Go+%BD|vJVq1L0D`FDYxnFQUSEuq04;{J#T*_jjWb9=CK%#9MZ_9Nk1Pf&b9;l{% ziSQU#gHgWK+Do>AVeGPln#RLa-VjlE@ZGCJIvc2`Wx3Gj82#Ade6y6RXD7pTKnSwc zS?ZA4HggQX8)FQZFPB3tXMIm}_t=c(fR%K!TC(p5lxo2tqCEfR&$_o>av`CgM)gn< zUOkP}ZfWY`fKfezcDh-%wubHAgs4jGo;UFNET`_#_KI2$St#wPwIB1i#5e%cZ`&U@ z#go1XRl;rtu)U!2n)`atN%LW=tnds|rqL*T%M1VF3&*927dERa{8>bM;)B^|L_ACQ zMh7vpL1NWE$9paLOS?2vT<~$%W4z5zyR<8eCc~%AeTF@u?VhO9smM6NrTAGliMwX3T^wSz6#R$`gp(^u|c~@I)A$m>l zrEFVFrB|&rIM!MTJm#<+QmLV$DJi*R($9yxX|&wjocCvUPE1i0SuS|4q5iJ&CaKDw zpu}-=YdvvA*@#pe^CkhIgskEIDk5jlQ(fMQcW6fv6O3t4r1fC3Hxkic1QMWMLtw$oL38Dt~Tu^2sHjmdHD2NjW#blzJ-NXD}!eURNrF7gz9iqUI0~u5Mnh_Ld zCWC{6EyehK&xAc?3TL#|<{@PBH-!sw-l98=#J@pgt>B@AZ#MZ?>OUs)<n>s;W|$C-DTzNdRCM7ZrWMiiwGl^Lw9y&6&0I@s)1|@*@kK z#_PM-f}& z+#8ik;<}zO_%r%GEpyIkHa;)~(X3Jo22;`)#rz?)GOqIPC~vN>P>Z(xI3Wq?t%NrR+j5b`Ykh>nW>p~x87~dFD`39P|elO%thDO$0|{Qrvo+M zC68SzWGl8WBI=sk)`P|QVXepgcKw>SJ$ffs!oKsLbmo$Fd;W?f7Pn&~e2$#ME8%Ns zUSxfOExTv zb4h=?ze9wl8wbNZ>Na4$gRU!Mxj!{>sI7dgK$5v}GpgQ_yp>}bHr&vnrvTUzAL%BZ>6DDSWcUyW z;|(RF-q`rP9eHVyB=_?2ip{=Zd*$1HuuykBef_OoYqXY&OED{#v^0Wx#Iq)n&mgA9 z3si^pyICeDff;Jiuuepwx=m)DNsc&>shcfrOsWFE_8(LFR1`y|$B8YBz z5tCA9-nzO{4NvP-dEFu5Z8>!%!@^p>OE~QuQyz@f2%lh(ZGZ9k`*FKMpanJ8&C<5% zyZQ#ro*Tx-zDJHMj(kWU1qcub49i9tM=N}-wGv)th^@UT01LGfu^mipTMmYHZneBm zdliYkg!$2{@#bF2{I&~2Tl=}cVK?REwXvVtG6|7(%0dIuMTMF|BI{D7k=UI$p$^f# z)4H-JWJ#a$Wz^rW?RRC=0g;7f5I6KDjv~S&|H%Wm5XKcA((+y1PwKi@oq^44Kq)O9GZg`EVK{aY;;K;JpYWj$U z$*{)+T3ZMA4>SykW)hm8m!CB7WJ{~8xB`0+0K%(9=Jv*3iy(eswo5M--(4aZ(Y^w8 zFQ>nlD$3PDa^KfgVUU@=Se}~L-p|LjgQ}MPCi>Q?K>mp-+i)ycXIbA4FOcn%)a>mM z8YwlFYzM6`&P;dkF{sza)WT)De0GtDdHoVd0)B`N0x&V6+_}rzl(hB*HzUjL}i{$7z044(Wej$~NbQ}+Z(W8#ua_|K`EGuCq z#}NBSYuIG)=BJ8FFehh1xu&{)?(AV&Ch(H!+7LpfNtqzP?9Wy-4V`a~4hQ-)I(>df z?<0Z}`{_FA;ggze%v-2^u&*;6b^9qFfZxKCzbp10gLUVEP=c#S4;D*RA&ZOzIx$|@ zRv5IuH8$-=`{s^!W`Yx^yzY!-zH~uE(Lu4z1VL#LVM!tx@HAt_%xV z$7F5-Z*aMa2tQa!kq)x2IEWqZ%Yg4@eTbi2rDjYA0Ffm8aL=}6HZ2N4??MFm#dH4X zagzbp={fUrMJEgmacz;spDw?U%Fx~xMno=@rcgq|K>Ht&W4NSL$5#@=u7nTD-n^L1r2n z7%tZycBRtm>NV>RWa9~NA&cYw{P1D11ZF;dzND9hQKw57Xh^>ejy@>{SSx_vwd}TK z%(FoJ{+%#GfJ+H|P6|?1e*r^}d56EFIXH4tmzVTLR3yf%S9FolVH}`Olt~@6=K|ct z+}F+AY4#q}-pxOLCH>2h0n^n2@dt&3h_7=R?CetXj&;JP9j*bJmPaDCuNSu3ohX&e zGU8_MwZFR|odGQ9C(522W8`UhpB}2rtcqri*p(c?%HmsZ+ZDq1eQMgoR~QX8cPU)< z9k5wBIS)jT%3yo+*ecd`A<9x`7CIST$_au)Nx|^>%v9-XzR@jDAT^Ysd;nm+xYs;? zF~UN4EyO86kIGf=*S1&LEqjTsM0KR&{7tEBH(DY*@wxNW+kI*w8(!1uj?C6)Udu^{ zPeH30T<9BITFAvTb((ZoXxYo8PauH(n*Zcw#Rk8^Bj%BO{}-afLlDTeTzp0h_K#n) z6A0IMtYP&0A_WACwi8F?f~Zi>*kC#caVtK$b*?X+Z-tAW1L3!OV*Po6Nthh)ZH^-A zDaiT`_l_y&EUUx1ry#Q6+zaBYe8VN2AmJ6>l?))%zy>3lYRr(W$dpM)Rh%XWf$zQY zKJ8b3nvBp(GaCjp$_Vy;I5s{_Q%SqUYRZQWl9|@kDN|q&sY+3B9&Z8hsw$6-Q3wf~ zxZSc7juj(;Tc=dfB+e7E3*cgCK3v( zpASZ{3(asP!ga?>r$nZHJZNVyg56ZY10LpT?0AfUKP%V5zF>sQa&)-yH}4M$2X-z7 zF7K21Qfj88FKyGdd~n0()98iF_#xY#@c_}@Ong+$`af*fSK6Mipf9Eq&VU&1JnM0dfv3b?9$2to0TU(N<|;ksVGP&`Q8EmwK_G z_aQMBJrxw`uyi8SA)Qd|!V5f2+6``@3=3UZ86!>`LJq7HyfqzpJQeFzU>y zGvd=P6`GjJ0sCnmue3sJNpEIxipz*~dHuvgQ(XZ0URU06f;9nJ8Vq*Nxg$mx+8b1b z(nZIf8=#2VkB9C!Lh+X=d zGh=1rfad-19J;|MzJ!r46RV{a#{nCwK<9@T-dXmPk`@ve{U-5Jd-+KvqRObZ81N(O&8-->u2k4%1fmG%eiM+16Tss=_>pP0Y* z7l1R6S!s%gG9fQNe>+6!&<)y(ls&#aWj2!y;1tbC z0WFXA&0Ujx9nkcYYlUX0{-=U6(}He;zq)xE1D$-J)HAZDCNEW7YSY(YqjTH-DMmvsvYOdQJ2Qv{?|`^d%U(~ebY zR@LmsUzM20U3b6e*?X)``!~ZEwkUt{Cx5;BYEhP+ZIprK5eIm2qg`!#cjljTW za%rf}1W!RNCOq-xpdbm}0UKlRCvyO1`RW&EdG2ZcSEsr)Gwm0O1^hYTRmmfZH~-vE zf#Fxmzyk(x4pVr$BF8`L|KU6vqdB9zpGFLtUe=`xl4OCmEpq>>KF{&IpW}bP)4t~X zxmlx47-@=Y{|AS@>obGc|qx8z?^0^Ij9MV{YOXt(6deXxWi|@&>V5SO?Y@B z2(s9Z{{s?t)K;`QYb*{>y-5bm&Su(g)ioA^`Wk!eF;#j5nyo z6!4gTe@u@5&TV+vu%vaU+}~nU5^K;*!Uu+Il86A=Cx7xkVE@X3@b|u*R={8Ob@3*Z z4k{%$6yNh6_iuT;z4JRwWG%s?V1z|-2o$@85i5+q7bE{!>{p_d%urLsw$|`?w1uF+qA;3==|x`rmAzb^CK1VoY}h$-cj|O@44H$ugV!V#V!K zYuXB@H1dN!XWv%yD>d#ay(3#8Gh8Z1BPvk3__8l7Rk=$@NY9d<12hZY7NfqfH1hF! zKB2{ddDy**RmpvErfEYg%>HWCmL&ha`+4i)%8Z|KsYP8o%13dHyJIeY2HIazQe$Ln z^=ux~=9VJ{A%ZYrlkUG>nc{1pc%-Kn6&gN&cDt67kWiViXjz5ufe*DOGhk!(((KNNpnLnzd-@tE|7^;__8K;2#SeY={AqX9 zL3Qy&$Wx@edb6R@{CC&1Ev}pDj$H%4iKr7-C~h3oA>^EV;454ePw*@Ux1FW%He-T6 z%NnZwb(CCI(Kr+{VX{kcpPL})S|jd1?k?m zLt^xz<4vB;s7IL^$tw_l4Shu7fyS8n??$<%rNGsv_f;Ev|vBnD^>84!$d?)jYeg!XD zZ(;p$u_03{MERWkZ(cq8j{|Kixk~tKRTEz~XZWyZw|j{+2T;#oepMQvKN3;xC_NC) zfgU(gIVF?0DxbeMG-c~8uC+Tm+3B-vqtO=sZrjN`xuY}R7XNE@^;C}@fV?-2x%!=@ z!u0R-Q}RVTBz#9l>7vJ8I7e3vKuL-QGQWF`k!9^%K!Oa6#Cz3 z=>M_|^q=Oem%Q9Z`U;QQ{jLXeJjZG z21J6Cf*jVG{dBU>Hfw>rjTw!`6TRBs7qRX4^vi5p@G%MT!TN4vZ?fjHbPV*B$Nu;m zFcyDUkZq@h(D$z1AcpVAJ4qK0s-T0;@!<=-_vKA=1tTM)jI7MW&8E|@wTyY+>FZiI zdR*-)rXuaVR}EZj+E?Jl!-vs-hWCv~W0=o}BJOzbqIto&J|)H2Zq@j=W6NXIafF?u zlp7*9=(LG5_l06ts&78?aOGxCXE(}&Ruk~0&!+06>XD9RjMk8~HQ(+}ujQ!OXZ#J7 zC-W|t-hhi$`)F{UH~KN~CXpU-@TKG1L&gEOXZ3iyknzKZZhUk~H#$WB;s}m^-ObU) zy7lBTEX%B3`v!MD02aD4d#Ixhocq75wfp>@Oo&Nla zKz$Edk#Tl)hJQ2qQ%~VqZSs_VfWPr`i(7L;bp}w|)rys}0Do$Z(LWYFOfRj}&*@vz zNBxgMjh?DCfzazrjJDIi{~vqSFy9!2e?vqWsVS+ZFksL6^}*EfoEju4D0Q8DcM*t$ zsG=>e%_#PqwO{j3iM&fBbkw-It~P!<$52?2s#NmOy)9_+5OA|2UUD=r}75QdX#&9-+6zHA>p~OxCs4O zT~x)N*1q{1*IB$s>P@P)Fs~<#LiZVaxU%;v|JHwC=}8~s1!w67qbRW(6dPr>|9a$b zA2yh4#{`81X_Z=n7O?vP)DA0>9QcsX+E&(!#8 z(HM3*%90X97*$nN?VhtuRJ~OmdDD=FZ%1lnclPQIN51=W=Z@3Ic=b?ynn4MA?RyR> zgRhme`Mtl*X}QJ5LIz^oy*Lb9l=>I41Id0gprg&qgqzst+V z-@t=D6d>CpOGal%gXLlp*08?*=mG9QLr<%-iLTSZo}M{hFf%-6lH*THzBr(g=%k7h zZu!`-0!`;4Rc9p<3m#zR$@i1^Doo1Ir3@9Xt5;7`Tk`#>lL{8Otv{K6@}vnQ|JZY5 z3p@_PoBMZ?{tBTy)A02@7Nk2#efZbtRxcmdu|eu-^Bw6|uxc7-2P}Ab+vKaBKr2}~ zewP18<$puM0#=&>!n6tw7oq|PQq-QFhFq&4nT>=t&-Lx@o{~e;U zZu)`1LAE$AFA?P1!)DH%p1O_2)N(Z+TbA`n*_ zwx{bn=a87oy~2mzBAusrM-X4}^dNoN#f^vhM40W3FPknp(CmsK9*u`M67^g58ckPY zS6X5jIG5njKH#sb?2U#ikG zgVX|wVwe!d{*v{XZP__7kV*-jlNl(cZv^FiixTSC-x75ZLQ6p7yOYWeKSGGXVUdyP zEWS=P%A#|(6)r+bsMuo_-B4aCFTFdYNvt;-_PDWDP%h!)(>|)r^O(#sr6|MDvR#N3 zTBd&|$3AS~_|PhGyW%8q`Sn7rk+&Wo@3o#f8{gFop_RwU*6^kfkJ68zpO+7umFU97@j_$j{xuFtJ69eEXLRqz2%1O~ z3`z|0<8Ck?Uh8>QBoevnp(Ja$ILtvsMRj+IBE3w}8_AE-3PX4Mu zvIQfqUz{=f+U`9Fgcc$%^+;1m5uc1=jmjsbj!jWUrd^w7l#^Brx?Uy9g_mf&<=0U6oJYG^R5K0W30`Ss)d7gGSU(kx_*x$va> z5=3$;s*LIG%=maPxG&JxS5NyY7B_5qz7*N$^cdf7JKkNP?rr#0pW^l7@cV&mx#dbc zBP_&986qbzRRxSKH@7-t3ry_i2^$s&K zN^zVf??;gQL;0x_j<09hf@#9Mv5L0$7K5$Vuk@Zp?9eH6w)jd8T?h{^3FKSgcyQ%i zU?h}+-)Lz<1ZN_4C@LzfbY$g&rx+xFKRPL{~kas6J zLSN-^U7LTlRu#<$(q{1JRY83G)ru;Gi2BZ$_dd3tY8cFH%(GbuAXw?Ow4{1f6g{ov zF2L26mX>aJ?~3D6>%EK>+WqTS7QetnG6Yq6|DvutbmLzdid5mn(iZ6f_044|0vfpm zPB#=W{p)pW)Wel*Y^nBD78VxLqBP*+C0Yw^sC;yHbtW4_UKAQ&)nf%!Q{AX9Q+=mo z)%1`RACl2+P;q~)G*L+GP%~oIuu}gtIMIy4=yS88kM;1|Alq~qLft3y>{v3*88RIO zD7QQtA~HfT`yU9!SAS6%0sI^J9FnbrS;`b8L0ECRVSImbp?5a`{E*_>6NO~Abq*!a z4K}lkbsx36&*ep%kdzR!8{Oun=1N+_!}-o1`!o;r)bRzp$f3H9*W7dDIBy}vC&Ugu zSA`>o2iffA@`xC(_NIC%G-ufOIE2YuxV~sR&?9v}p3lYaCN3axB7eBKYK)^8F^=-p zAzMhQK?f2@u5C1;c&qg1;&>b&8u!%nx(Ojt_ZS&vvy(mbUyAG>E>xH;MXVWVXc*+n zo}!<>^q&18oAdlz08aN`AQN%}_#BO&gx60@UwZ#IBw36IF2`rTnYk4z{%CA$>_W^f>>4S&56vd`cAj={R(UCXN>wXb zFd_(HbFGWmC)jv(0U~#?qkKP-H{V*?dgP(goPj~*lr>ff(^~m&W`>#x!x?y8B%JPX zsWm;G6k3lnecW1&{^5!o8s77?Q&bFG|GZ6D^R(zYP^zIUc5MW& z%`(N;zo=oEe9V?l!wE-11kusa&j4=}5HKovnd*ya6CRqJoLu0oq_B25rh*d*x*|HV z37#v1Yc%ma`>akROfRsWw4bSuLBE~d-}m(WRHN53v7!2@lGmMecQoC+yPGPi9&(+C zwFBrtoFEUsl>XSxU1~L$HK=YJ*%l3q%{fdtmJG?H0#^MNq@F#)fBdabbbnL>F0k-a z^mO)CL`E_EP$oOsBY|CD19z=-VjY1%M0BnV3}hrOWJh#&MBkO%y>=}@9B2f?wk)W-FDo1%4c+5j^R7nNh#L?R z1Wiis;ecx!cV4(qWC@F0sN0BkUF|PZNqAtb@DbP6c8gV?b!3v{_Di8Rz{vQ=k5LYL zWcRc1{6?cZ4^o#8yp3LVY6D8ajoPM~k{MZ{; z)jb-fznAvH51!&tJE}?n`*kZl;wuZ;N#reWA=hDB+gm%|(L~E-EF6Qc-{CXJE5@+* zU*n(p+-%(|u;y&&G^b^Q17@>+k4#utRo7t~sx!Rs=u-1o;*F2dR*lDvYetscy*ld~ z_Tjt_ox&n;B`8aEqnu`Tt!j5&JsJ}^8nzD^yPCP{3`PQznIoo|S8OG;igm4mXSEhY0$_4mJAZVG7%<0<;A>qPCP z9{beUfz(pbv@HnP;5L;mKDp)@E6@8V%Vs()LmfQs0-b~9Qm!@ zVkB_qg9PZrQ~;WDr$6{IVGaouZ{8Px`z+#Q_Z^~fk6CZEK<(|TX1HO17wD6<^N4(x z6Rx(U&SLmLHOeP{7rCNU<60;aOqt1*E^EC%q`*72koHKxQsl_ zf2blZ3F|$6j8DQogh1w3*rA0O7#Xd*a{3d5T!1`Rlna0Nv_0R%XYjcuo~j$o(O&z> zTkHl!AsmfSZeJcB^4Wy-4=`IB71=buXL(U=7%gILFPNpwCCm=_c1cm;BX_T`&Wra{ zX(7F0Itx0ecBn?Wgi~OFheuf`MgDBO7t36mcmyxU$m(Y~NQ{J6^)(Kxot|F+_QS*! z|MBnd=N|#r&y&HwZ~n(_oZAPe`}^0O-+=$68^C|f)Bbk>{Neu}BKfZh0QfJ-`Tr90 z-~9iF1Q0g0dM3~7M7Y=bz;bE>ik(k`@s!jRKAB=uRs!iCvFie0zGUZS_2aP5|Zo+%bK2KRNUJdQenr+zA z1eWjOF?qm!%;n{|gm3(La`g3YQokG4KCx91&F?90f=^a$!!d{@dyUHFFlytQ`$y^<_2Ll6zR@&#wDvXWSUeZ51*BI@@TX zjyju~F}2H4g(VX4B+!f~*h%~9gFn#p^jCGUfBQ#CSm%#Z`#fDAK}FqM>`l&?a?=<# zk8L*+8U6?K?cdOso5PNG`H_2zGhp48klaeimpGszpbQomOp5vmV=sO$4?yIuoOLrH z-x?$|A`>vqp+azU&*}rNFWS1Fl29mS*$%Vv^gqOK&Z?b>^!f-0rQ8kF%D&3FU!MMr zxXv)1Bqe+2R%k3Marxli;AX$UVYoPzVq0-fIqK;*EtOyq`{Np8{7+e|?SP^&wLj3L z5$9425I$9Mu{xcB&FNK)u0C-1l8~66G-0O>HgdZ{&XODOiKZ|~Y#s=ac)A&_le3wC zV*c)&K*i8FYJ+GzCC{Yx4jYsIdtvq83sX$bu?#s+1z)YGjHhA{(_=*dwI}MCRND{B zBmV$%nw?wCbrKPAR@K4a>h{G&PGN<~&ie1M3gT;;VDk6-;-vo#xsBEOf-MmCV>f}y zyj>22GB^6A_%F!o`vn%*BpBkiwppahw6Nx;+W3(hYbQX$as3$ApA`eVe(Qo2I;YQT zh!FDO?Gl`=*lUpr5*z5f<0(zW=scY0*V|fKYefrHlLQUJs_4XekeiE{rH8TU){O>N< zf|Qa=`M0HKCE96yD((1}rG2A1x3p&p6G_=~hbFJaxNa(cDwXdM-iXkpC;LOF?{C+& zaMvl&oJg|l3JEU}LG|i@4|Rv&Kz_$RiKoB8?q3`qpRGp|Y8!LwfzY#uzK#Fjh2pn( z-p<#pN5fsy$GD719j85F!J5W`@lUj%Wj|Moacu~Zxc0)rc2~$NHr!w(E1v_HMcW@P ze?tKfW9H_mqG62J&?@Pu%(3vsnKS-NBOd1{<0NFkGB}sCV$( zzBq%6t&%4>8lHhbUqGLpw68aJCHRB!8Tomxk@W&3guC9T+|*cj9H0i&{p+SyN&i57 zV?7t^lOJH{Nk(~FyArHQG>x&21aidxOZ{=uXX^K38lM-lcfI(w0}aC<7FT(Mv0az5 zi|fOA2z#_(05?j8dcSZbc+1o`p0($O;{OK}@Hd#}ykG|>C@SBV@Ew|tjei2Y|Gm_m z=g(D-k7*L9E}+3m*@z0}ZS@cK2+!GjlZT$#*OO;bu7P?ruVPzgXV*8%bG|NX9lxhZ zq{6we#rl*U*afh~)bH!M#_uS~GmW&KHPEngC6GdJ4sD88-96iNK(J53zgJNLH5E^V zBmCh`*Pq9)oXe!?J12pQ_pj73rjkf+Ys8#kL+d}JOYr;oca~r7T}tY<0NNyOJ9~d) zJ`1tfm2AxUg|VN0-}*KWNi1X+N!siNqaC|`I6i^hS5zn?4-sQy-meU%$RE-OiS$wU zVAH&1F0T}A!$+2!%spv$m~TCcwtF?HB0>>8LUAP-=9Aim-}CSvB7gN;nm@2U1KeXmXs@ts2EtsGYycS2v(O7#$m#twtx)@vKy8huorT z3SxZUt%@D&Z@XQO4fU>NtPk6CG$&89|cY`C^=oCE@z`{JDav~AOwQj)I z7f74kMWAP$E+mw~MevE$n{Z1EU9Pz>7we~o^n_5O9)hWppDcB;YgPQ*vIPd@b1! zA9dn~#C31%TT350BKi5+IdMfBH@1&wx9v~88j4Dl$(G`o6Lqt8Dt1bs=~YGAceLgj z8fp4W*QZr8KeXJ^60kW?#@ICNsWyH6q}yOoDRwk#+OV^wsNeYP-I&8;Ac$OW0E|+7 z_MnZ4vmQL6@!m;I@v$pPQnnmg7X`i$32l7cM)vhxA3oe@#H5J9_TQbNi)AY|#Exay z@cdF+%8gUUZoG~l5|w+A4WpkJRr|tr8BhI)VWE@D$EuyHc_w_Jym;2vvFIdP%W#bF zAY8pyNP18HR;{w@XtXCVP`Z3F8yM!)O-y8EF=EuBvY?<8}L|NXvjc2_MT=vuL?;lHj*GZhy zkS@AvJ^r-t$fU!2O}#d-tlZJn{d5_jl~+_qczg;PL8mr{PIk72sZ7YVW1&xQ(4w21 zQO|yX-Oj*qpI*UZn`Fm zX0KTt2-`veV&!}NFS3*J1_rpzEzEMd=LSCB>D*m)a@w66fyzfbWshaA-FeoqhsY-v z_JoxB)ag{`nV&$=MCci~!!4obK9W1eF$jc{sco&E5#6*8gH z`mtEMf+PJ4U87gr54p{&$B_MFMKYF=2?>d>^~QzAE4_EQ*MwZE*CweT&w7o!3a6?` zckoVt3rE}F;iGPqr$^|PmcCVjWBGPee9GO#DfZB84W(`+D`!6D>!YSwHm5q51APRr4MVGUvJ>KHvrU?pY@S_L$oR{@90S0Sz(R}PsyEJoy@_k z`hn{GbP*S)JE1}4W#AWEut``YhWWW2u%4V4nLnA-e!u1D$g^PwRzy_WBZ4Lv!!to% zfCTv8VbNLcqa#|`^#YF&H8pwEQ9hU{<%U)#4w2&J7|CaiG?i;dLVp% z_2k?x8Sr)RFBsFi+a`p; zZBseHm7@e59pv+|m>Ht8V+5#($Su>C#GF#AaXy}D4H`)^$4AcF;Zqk+e}0rM8xr2U zzPRmz7%BQ|td*99PI0g^tFy72H$AX5r^qBSrdW^qq^WD{r>0?Zmai?v1&9TCP)(() zMzD6&exuW?mS^Eet7w!86Mj=)|Dw%M)=}_Oh%S%o(5O-MDTSbSR03d-q+ezw|I3M^ znNzc-D6JQF*cfd@04dF=&wI*V%_2}WvBn&)n)kZ?HT6OWm7q4Vaz&E5XvlD%$LUBj_qb2!nlhEL__*8L}aua0Sq6$rtT!I4|qhRVXb z3!Xpw+jdTcH&)u|LPm3skG;XubfnJf8Su=#b}!G`Gpe{sK}B(JcjRfdp=H+#KR< z%Bfvd-H|GB%*P>Ha}q_z2z3=f_Pj&a7!H4Jz6;kWhP8G4MQUL2DY;ALbvp-PFY@VS zBeGQDZ>T429s7*y>P#$HSGZMljt%Ta6-=%7v4hhFRm|-iLyKvBWzV~_5`6z`Nx?={ zWKWdj0pwy@e?rX!tGT(^#!fE|DEK^2+jjTaUuj02ItJ#Jb2(<-FWO7BbrOYyggr$8 z&UrgX0E7RHMJ~(eAdaOQ%S*xEUN^E{;Ac=BhMpvJH$%)!LO z-JmRpl)6?rc4BRL`zho@2aRbyy-WS(`ltF3pPvGH+>h}wr(2aiDJTle@>UpbjEk=C z(3bQCu)rRTscWV>83#<<9*8s6d$2IFFwVZYU)(#fP{UTpc6a9GbYG=z0ivs2J>6-W zqUe<$6x@D5E2(jN(xit=;2V(_XC{;C@E6Q6k^OdyD-Nj&SBrQ z4hxUJ!EI+}x4u2OuCM=C9Maj|zIY~+*iZTNWA~NAs+hVi^X=NR$Ur?ZBYexCFKs%y z!T_-9nM1q!4mqw90BbVkbdZ3%Vle*MH>~gJm{zT;r^H@*5m7p$=3A^P-!(i|l<|}) z@nev;Ez$-Hxo6YH-GzE&dI&`OM@|OFx7Z$AF?SVZ1;S(fV?Jp%MUG75mxMYT+8FnS z)OY4KdmIk;@8T*7?ZFBVJqYivp-;3ml zT_MI-74@w`O~L+Z@xopUw6d{{>-gANFT5FaTK=xPH23rMk{N@s^kHb)mp^a7x^E26(Q0Vg%#kB#^|8u1x!2 z8orm}_ri_q-myVGF!c=+x9UlT{#ZZ!(#TK;N+V--WQDVMQcVW+W z0YRpCWC@osn6R`TgHuGi(|8+rZP`iAWw{<;ZcOFbo?5#z61!-Rao3I5X%k1~A}XVW zz}ZHg7r;;Y%*@Q(^mIvUMCUFdzj(2fk($WJYnsD1cP3P{2Ryoe7G2ssnEK&swPU3j z>D`IzwV9F)I+MSkwm582L*tdw;vS%vVTqUmP$~KwLPr zoA?T8QXPcV+<{zAk+C#wXJ!^0t3e<6ILpS>0XXz&dDm7RQ&)hyRM2>Xfqr78Gjbrz z)+A6iG;kdK%2o~3+WuEXj*IYVa0m*UOeZGbL7v5TTY%*$G_|Yi33_Q=Trnag{xLAFJrm6bR&I_>|p+kMT~-FpoMe(~2=H6TgiBhrL+5s&Qj%zX}MtCbDl31%9m+TO-Nd7a=uesRFxz zB@dU$mn%wrO z6$3rjR>r#$i^F{e-cq++D=r?{R*L+@l7utrvF=)}tz8ghV#BVb$EvMF&Of%Q3%Ndm z^_C;66{|{<8UHg;N2Uu@bGu!TlVU;Wne|+WC+;QVP5G;Jg#pA`&k8E zzQwa|h!)WoLm9`paE$vre2m!i8|B2HIv<>z`=8HQEF^#$3xr>NjLF3cJIUzA1WfcY#R}dmuV3Nl z>+6zW`xagKeT4A6`(;VMzs553w6ddD{AreV{UBuP@Y?CS^H1Vcw%W;dx z#HLpZ1A+W7vAg8A=u|UN;XHTq@WSc$(w}Ok(Eu!wCi?gxR(+L;R+=^7I9!!}A#);+ zw0uZLz(x&5%#f(ev%#ol!qCdfZXnBF$!cR%q|LLQn$4g=(>yXOhql<55xDxv?RE(# zJ+ENm&IThjehA=l`i|U4U=keWy}q)%vf|Q<-ajAvHuP!H0<$EHu_yzBw2mR*kZHv~ zyga9KN+(~tMpSJL(>ulvl70Djjh0aNR=wYx=dApg!uGJ{FXFg+INAVY35!Xl!C$Z z)6u(N6N<)%d4qpjGStgw%Uj4^f?MY6&zE2<>Elq;W)CmVw6-1|iqcf#NW7cRTVI_+ zxz~ruBK^^mZ!rCQjeTo6XJ?1b(zmjlhRbJha&o+2 z&N}A(iLH?c;F!3-Em@c1uF=JP9EFkith)39#8@~G00}%>mCcXk*WLp zNeg#IHBtNWIFhG%yH;L{P^*SDc0K&Z)x1|Ks`fm9T(X-!Uh)uhd71aSWs17_rr8WL zkh%V1+shHvhxUl7%)GTt&xX6E`AFiuO33y6G_Gn~NUhBjao^NBA$4aDqMtpp-yr^D z4TVISLye(+nPcgRFZ9>wVj34SwU)?(VsWc)Ibo&cH7`_+NItxGL2}M|?`*b#{Ws~C z-dn&2#&~c$``MDfYyBFklE|$kZ$f;(Ks!H6IX;a+F;*_3aZP&`7gBo3~YGkl1u{-i=ebc?#~{r#Z*5r?v~>h#`P0WD=m7; zYY=lX62pd*6|1CUrCm_P5| zlD4`wM$D=45RoNodu#=keIK&GN?V$R_?^gY-n0_ATY-#(`u-=ACZgOp7hbs~aAq8w z_=@g!4Sv~NMO$FsMc@Mi?6*K=l@UDkJt`Z~&um`RM8#l?C1?&9PrM2F3FGAeMpmzI zWzQh_k(->x z1rIEln6~G;2kSXN2eM3Zt+nB+x()Grc{`Xi_0XWPDCYq-`|%<)tZrNhep5EUjnIKS z9&HQyYlhW^WjAWZth;+j=sM@n;g4(!ndL8HF&KLs8&qqpJ`k-FtvG%%pVe)pF*eJD z=;;bMNMY*8{elaIdQFsO@#}gj_|o{i6+W3|#`Yr;zXP7@pm)*NM&Du48qp=8%%;zN zKEhOou-ibr$@4K;zZ~|QfbP?~PLj7aO9_d|*|`jZ_iAA+_X_iL?@%%_X1_IT+B&NL zvK38#bb*vp8z{d3>3>G*4-RM7e0Tr)_OJ7yZgAiid_{@=z(v|Tb2zGaZ2iyx99>;5 z?-eHs$=)dI^qakK9c~lld@sWL+n2kh7=Ln)#-rg1kp}P>)7XnV>6*S?DffX{F49V? zQnR+p-}x})ZLFE+~ugXV+Tjb8;_HlTx2Z=zX=^C_nkN~u*W+Y$N`8Yt4E z#z$cF_D#@lE!FScUDF?F(%7Sf*E3GNLb6LQY#6~!Xxyu}kIew;zS&X|W8(9p1t59c zdfb(CXV(VuGZB2#q@3lcPA(ii_$yvr#-dmt|)Dh}SNh!WHnvR`k zer-=^)5%HDaImFVi%G?M-Ile%ZFsx^$9$T-bX~lFjI3;aOV$?nJkTQ|-62a;|m?5=cZ_xLcIxF1BpaK4aF=bFvWa7;{OH=mG|_u zN}0_vmjUoCs_wX2Yt1S&*bmffch^A6MC;hv^OHz+YO`r2=CireGcnb)`S?9AO{4<5 zt6Lwhp2wKt9=K{V{vqcT$WgOh^~y3!@vz%AJhpQ#f_}<-q7W=uW3hABybeF5GBdNV z70z7r9Z&4*Nhlo*g<~j1QJv9?T%bVg$|uI-QLZf>-ggcbKg;IlAI#(hM)P>Z456?6 z1yfn$Xtc7ZnAR&S3;n5N3P}|)3I*-pLFmXW5$!PkCt#!Dt_s|rg%@d`**Q+i01xxUrbk7V7Jqy}(-C12h1!1Px>_BbqNWpe-4-y5I2A}(99$!`c zp&+lkUP^A_YuD&Mcjv7Q(`UP8AzmI{u%!ZxCyOr|TLpa`dsZi@@kXdtw7|Snm&bQU zK(DYshD+D&S0nEuu!lcf&q5g3w3uY6nA@o95Tz?TdIN)!D&Qe>{l3E! z;*!;wwvLDd>_ItKR(+nxY`2m;c#fc9Sj{hcY>EOz_cbEua@#heW^XG|i|et}`aGZC z_RuQNmEldaI;w|)M*>+-Qf{gdgD03^w*wL;hsYm(P?FgNk55H#R+o)yD>&v^tch7C zo@J4&{x|x@cdaEu4!y$Z~>YG8U_`uzYrG1hz`{{ei1jWz{a+j#yMTX4Zhf~A4m zG~vogK093fVU`L_lsDw3#z4`-S>MBG&K}C~fgW+ij^o}_%<7b0Q1S~;n!N>^$_BXjQo;(ieLAWCo{ zm+WVY4r(8OG2V;(AZ4pWpFmEhww*wcbLd@w9>g#bV}?;;i`<>++e?f{fE`ER?bUbS zi-K#xrc({!PwvmGzo{#&YOI<$Tq~q-tYhHIGAala};jOE~;Wzh6&s_0Z#+>tX^3834jSrf3R$=_Px5RIIBqLF5kKk0Q`cdz z5mE{r@rs`zr4DX&xQ*D=Jj{f*W=vH?y(A_`i!YVW&oNveu zPCb<1`M>u!&9Q$V0}E-L{Q9(@fK`?+HrTuIdafq-z|s?*VSX7)FUuXOm3-Hldd8cF z(fcQVfioU2X|sHHi(6Vr`11^9^z<=%8`ASE1~}c(dp2`K!nJD+ zH(KK!y`TgvaYzk9kNEQq&j(~EuXb3GfY9{-4L3=TY#zLL+`I&D`E*D{v+jJ>M1bca z7WtcSIVp6tZ`rukub6@C_jIB>x@+86Jdp2w*Ri8;gh4&>vQRYqg-&+u|x6!~IkEe$3T z$$mZ{Mo4u|0`JKQEKn{J3(~h!j7h`vo-OhH&N%_G)TBT_EzNPiRqUhqh-4}?%%Hf| zANEvlV%f_}+a&R2zZah4N*0y6Ndi3DXE|HK{Tdd-CuZ)29vO76cRnb-H<~JLJSX`W zg})h5#4?hTFb_TK41b`GSuXuB9)7v63LQgpTqC7_QBj^0Qh!57KXmrw_pRE zKf!Y{S^Yosb?c0wqCE;|=#e;j5Xt_AWB_3FPg~+ReP3286UNBXCnn?>o?8~BAXb`9sgcifLPIcH`}fAi z^w!j;eR4G`Fx{x&u0tne(Ybkt(4Sd|Dxl!%Dn?{dS)o}M<)*)4e=0NNJvaEbG-A%A z@jO!{IcN{Q3zbUC$^tnB$3(Z_RJ-D6jXwq#!gIb{XOcLHEqt5*-pvnIv0KV74tlE7 zH)Bt||Cj_FM>v$}cAg1h6*&#t@o3SEe&*{!*6Lt^@z_o08iFoMjhK$HK3r>cT)D>VY3a4^aeXP83ck>OETr$-A57q#-gwsO!^I6(6aLVgv zdPt6d!9rW$7@}u~G?+)lOY0u{+f7bSrh5(?4x-;5NHs0C>7B*U2 zD_4;0=Fm*f+VsQXQ(?9J8FB4DR5#FL&AEPXxbe6__Xu{XRscoUk7ustYP#w0oSe9& z{jkK?&|6vO8xo$;QeS-*W%j=wA$v`iXij|#&_CSr4G{+NM6i#o(35vLm=82Spj`If z5A2^mps+VB$BItJFle8SVW`4;b?TDJklxN*>3eJ{+oV?^f|n`iI3>;>94xd zBNa@q?s4;m%-zI7S9y+(BsA@^?@@Nzsew3I$MCRK?0IyoKlAZl)14fwt-!MQG5pyY z)SG{p1B%^RkX9Yu?su(##TB)E4e=XGuU_RL&qG6$EH=b^(q$*1;J0rXr@_z;V;1pB z9oCK-UE363q#qNCeHpCaN6|Tl%h};M#i;6yv!PqaUJBNWng|_LU^44Vy0a-E(ylfl z*l)g8fY8;>PBmS_sgp>kZcspgl%yp6^2$B6>RraMaq`@mhVXS!V(iEATJX@O(W~?5 zEASJ``R|K4s=)P}LhKFMXe_exOXA%>!Oqlo{)6gWteIdhaQ@cs>R)H`zGvSx<*-bi zU!NXhP5SqB=WIJT|B@5-{|m>zLjn93aQr(If4_h6|3Oy&j*owbX|9@NM|3g&3f5xo-2abP-;&1&k|F7=xpHhe2;VAvtECB%ip9vuUhi?9z zY7}(pAk#!(KELU{>cGm{)3$tMHS1XO;P%yUg{*s#9a0*S8avK3fkk^oqL}ru!?Dj> zEpyO4W4rAO z+u_RDGqR0)jC-@fki4~ygUGm)^gPEtD5NT6abqo1 z>YiG^8ebdj49_yV=-p&{R9Hrv9x zE!;$^v$FVlk_4!xl10sd)03}HC+pp|GcC0yG9z-a^3{-RHV62cOe#QeB)Zvs8(MYN z8;LSpOLkb_Ih4!pgpbsgmfqmsm&d$R^`+~Oe4$J=W$(t^fF7}4aQ+WH&tSpu@N9u%Xrj)c3q%bYe^$Ex1EmcBQ!EnO8*9Rb)-+>eSSNmz-OrSzl&Q4vimWdJ%236owlB zrAPi7iVPZDqx=>5y_W=@V0oRwb3=Fr+_?eT#WOn-_Lvxw^o46g<h%_G|`>>@T5oS z;!o+BS09!-5Xoq6n*v?kV5pkB|T3%RhTi2wsloV*V(S{_eF{pr160r3n2KV6A z)()g$W=N~7VHnq+NKY-g3;F_UF?-uimuAP$xNh^AqqUVyAXo*i<{qoY^&q!;l_5pKb?uTK+pxZf{pjkd9bhHf)`0TI{ND89_mUe5$YoA-$eDtsNm$T$n zOUxa610w`J38e&yf4~c+iLq%#m~r=y4U@4cv4wXGNr8Qb!*?}taVbGIYQF$SPi`6N zX|J^+OrWKBo`7F;@4`%=@CZLmQ6&$*Y+%1$(~VM?^-65xXCHLtI%{`ucmLQl*|pu^ z8y^DZ<}%|F;+Z`@Rn=DA9I-PDEcV?&ilXCj_9g%l&_;J`mhPYWANfDGUkjLT&63L; zENyHg#=5qsu;J|i=5Otb4bN@d#bSQBXlv{IoNu5A@3eP$sdPWGcVvBjST1|8m)~7U zr4_L}d~|H%C}L%8Wva`_`aPfn^!MG?Xk7#7gg0BboQ#*XS4DM|w4trf?W>2ndWIk3 zfts;6gSe>^D!|-Dun1L44f8(e2tjSPBvX`D)N5|(8z_1?SGY;}*czHS)#yIe59nCx zh|s4N@w{HxUD!W8-k2@U?=24r^Z{MGAwrrXS-EZOhg0#BRifQ%*tUGf#=L3idNUk3)_SQ36HAaY87`3Sg77wPMf zgq)b9ry`?bs!{0!3gAC`aRua#8>(cay1Kf*bxl6$XZaw&>&^|Lh)Nmlr((RU+}hkm z^vrDM)IteAaGOhvi@2@UYk&Uzod0sk`Xt=Yu{X7-3Sbu#a$_Q=AXn_6pccBrzdjwb`JuFXggR6-#B{1Ht+a9H zsbBMI&l_Qe^fGI1-pwClfyJw&0z<&P`&svYwoY;I0Xnc`7}zAu1%sydnp;;-Z_JY> z1^Sx~t_M$d?BIlJ>%kgtnjLoMk#UJIpUr1?K}AqN>vndlF(yBNI}u2BKR1=sFpe6z zpa21{ba! z#gB#pPInU$6BLcS_C6M|Ot2NQ#ya2W>%Z!*L$x|ydpk5mjM<|Q?nc|_xn%uSr%8D3 z%gix@p-uut;>^Gy5Nae`RC!^hf*4onIrKnnBH`57PrD{*bHYjakUlJtT`k1zgFr_GpmZFNJXl${yC8`EP z35m6KVy%6Due=>I-}n38=b7*K{(kd5`OB8;&UIebb)Ls@oX36h73v{MSFDQ1e z&YGT?3RESUJAwQs$d(eqs>o{^Gg^2&PiYW0pADDJcFkMfr&P7G+W1_IQltaie!5d| z?)DAWfLmqfx{~y>Y)@AO${rmvN|XE6XJnzQR9meOib(tB8S8+&s%BZh<16O|Hxqe1 z1Up&1%qR zM93={x2Xav*ZFdFLf>j?SlH+1pRb6QY+ogl^W!6Hq&g>A7!Bg3@};dNnbw}JP5KH< z5Z4WPI0&=V_&{b;ukx5%wQrbTj?beM78aU#TZ8ggkpXg8Wzej}aD?vRMX)M~u`W1s zxfIk$q(P7RBc@A7G$-vOpgExb3zthUQp@RDJj{9x#K70cg)xxM$|8^V_>9H~| z#OCk9*;Ev+PkzT;^HXf&h`#cCwkb4mN?5IOXro-MJUyo%XFTrmRd~FE5k2j(tM~N8 zWPsr+rg49Ev+gTNYjp*Lska>0z{TXmWErO7Z|%RCS-{!beQhv?i7~v>GBG)=dy@c! zUDHsBe*a*pIIw{;1zyurr^&;_hcRw8 zC@aY_U3YiP(JJn~n~gfv^)79Rq96F#3lqwWRH@CU;zK)Z0W3ws<0mve zuIduquCs#?r(p_!l)TnjUS2uum780TOiaV@Xxe?D%h`6XC|Jpfsr4*Ez7Ma@`OY_n zq$YqB@taZ8j)m}u%cZXqaNC{V(B4#H&4YT`dZmzSLJ#gPdXtx^%Be%lwfuPUR^^uZ zj3i9uKw-DLgEE5pc&Q30dbGjmlDA#o6&c5yGBXFiJIXK~Nb$RYWpkFh{{4^dX?Z6G zZhvq_=nFgD3b)#vec^9lVdkklUnwp%%G`xi3 zEpOV{Nl(ngTqpFv1P^u3LW~&)?waMLOY=#|+_^ga082L>0IAUTjbFTPhZX8+^pK`H z{`{Vo#UP`G(+uI17x&WV|IsaTA%0(W(nn%&2de*6qOY?;1+|>)Bfat7136W8oJS&~ zWZdC(X3pk3Bp|>}hK$5xTf1)bL3{61d=uOYy-_+sdtP<+{sUWWiok%RDt>))G;|w) z-6Tm0B%E=_NOQ)5TsI48X=8RI= zkoV)y7>q>bL{l}Q9TD#<`eCH70N@#{02|c(hxga%h4@}>LFF7XNJ=(k$A3YkC}RJ7 zH|;fJ=CjghMnP*+wM1-#N-N~hq9tHoEd*{Q=xH};qxuoOFIXk@SN!nV%NYMQ3>51x zvphUzrg%NetDQT&1~8O#Ii6oGxCM$EB!^5~Dla15A*{R`B<+FCrr*oF_u(W7ou3=9 zrNmxV@v}uyCHmv~x>X+8ZTg$rc^*9-QSImz zcXwPrNbB=&bBac&fm|xwR>^4T!2a4rWW)S*gprsiBSP(TmPrl(Jh}!=29@pqAuc)y znn|tgU8f}W8^vjIa}B&!38VT2+)`ykD4%{)ed_!iG(K^gL%`a;m|X1)L5iL>BpJ3s zd9#^}F4zMb(MKHG65gj?azics7KJP`#y9FvHD097QcHJ+3mpdJ3d9)@s8fVx-v#_m z!NY>v9_%nc`Ycnm0TGC<7j_c{kvuge@apCDkWdR#Qvsoqw#Q{<%6!F%tMB{~5lu1N#M!esaMGEJ8W5?QHr!@mxX&KJz|CE&h=RYcRp>B>8)fU|(S9W~4R;J$Y+c#12S zX!Yl*%NJy2=wk@2=(j^W@(^)w5#4#vvuoPfO-49c=%}$JS_JZ4+9)V}v-)v?_a2c$ zZb@}({>n=iv_R@VcZ}}DHCqhW-KQe7qXov!*Q%HIh=}$DHT`e)!)8gnzwO!wYMr!R$a^JWkKZ(&&vc6^Rt(i{~3;4*P2)2SUZF{PK^ka1f7TdqV$R z*nnhGYKrVcRU3mP+%TL=LuJS0H2HZW&b}HGDvwQWY4k4JjGEz{C3$MZ;m~e@YFAfR*Rj9sw)fTv6o9 zJp_M`1xXN>hj%-pi)DrV;sBxpq#%hu8Ml?c1_V^kHvnkVfgDyFF%tq%D4+u>n^L_<|JHKNjVlkCzIg}L-6B(Ealeui56`XTrI>&&34rD*A^Sf5G9fG* zoxy9Arn0~i0&5rnZm^B<#9T@YSCD9AU#AA?S=hMQ2!b-5GMxf2>ZvkoWx#zMiQXCj zAL+C1Xa}nCr??5VntVpdg}l#;q59?DuEil;?^6Kf@%8hqFCaU%wzVGv@5^$|9s-S8 zl$9+@0|LMh0;D1Wa8|`+etba0f z$-ia(Hug?L3mM{Lv#}l;C16#xDp%uxVnSdiaUG_0i{bU@M{xLMq>tkQw#CEsw$$3z zHjqG6)QPzI*?_t6;07hvwN~zs_jeZO-$O#;`RCFz@-?+o{FE{H3UZ!n1$!G9*<9lH zn&TJxnoy_f=vfjP2vVE*n)inPm# z@6YbrxSw806~kOo0?GJf|LUTEm-n2RB7%wp&>$&^H9j*H72O}9(|&Y?o){}K)!^dcgm8FuJMxF$(PM1OK9yhlaBeA2lEQ#!VP8K7J}uBv ztSi0FgVlrjUpa@ocXxHT0Lm{@BUlSOjT^AE zi5YIs6G}?T^qTn}o(J~P#iQPtTzQ~V4rtjO#rA5gQos4By4Ajs*}9LDA4gpxwS<%gPx@!OIw1xpNx6?? z4iq026bV~qENiZ9?vECJocFe}w-TI3*aK!aIp47*m7f2o`+N!qeP?7;D)2*g*4484 z7dWIG6jEfxH$)rSQUK9^*}=EiuWGr7E9wJ%RQz?t zmkM4BpxNbuWNIW!-28Z0u0=eJBWs-hwkokYUAX{NKhc3YWtjxxvKfIO8K7G zFOxvLz~nF*YrC9k;C+o#$`y}%K))*yJ< zRr?IA+H0JK%FD#z2iBfEO$@KPL_5tbi1R2a9{sWwGql~ejkr%4tZV84UzPgoG>>9^ z7K&(Ofq~Z_#}>RsBBX&(Sh!}Tht@kd3$>PZTs|w(l2u%O3m`|3NqaauCJ*cw8!OvL z^_5w0ijO^XI(Xzzea-ycn1yn&!Qq+)|HVb)$jH73qLv6yJKTHLM77H1?kFlLPtP0e zyP-3amij}>86RG(Xg_7OGK{^gHLUmsBnjQrrABtIT$}(596HOwZfw9vlj8wc zRMch8q2aUhz5XzaBcuQ!gjM9>zv`r@tXy1P?F({_=x4rDbFzdD>e5Uo;XGI9^QyNA z?=0&;-Kl-JeLT6I>8d=VQM$ld;EGBDS++C~8p61q@H;sLNa}Ig6XD-L$_TB$Hp}DW z!vvT@5r{yiJ3Z_oHZsJ{f6jed)kd`(;u^4txpFR}imVmow?eNgf)B;=ro}6|B%+^0 zJbECu--35aY3G%SCpffTLo+1!9md%8gHI!eH0v9;BRMdtN;^)!uIzKshKY0yWXvgZ zx@nQ_!r1^i&AolFzj)zIW=`2~>FQm0jWHFD#b(BGgB{S$NAm9d;Cu~N!!2me5pkI5 zsG1Oa_cKQEu+R>c5P#n|<<{w0?be*P#9c|33Gp&VvonYcOG9bdsi)WxE%mGYjBbq4zlkK zg`THn;=FfSw*Y7D(U_SWk6I#;Q2kE`(*!6S@1cXt%g+aH8^+oa)z8>;F@$$O@^tbk z5X=>2xhtG03252jEZdzvtF%I!=CmbqvjqfieRSQ$VR7Pi10k88zkhO!OJzz8;MAM~uZ6Xpg(fbaRz}-$TUqxk zmCxlcE~cB0p%yj)$yY#oUaMThvauY6B!(yqRs}y zZA8!LX_Qw7XmlY?a0u7>!I1a%7-uQ>=pL!l6YFmqj-=CyHoj+fRW+Wud8ZK`@}s?6 zC&TR3q9r-5BkrZN&kE+J?(3B4w7s5>Ik_XdPRvFDN-Xu=HsR>~6DuI8S^GW?d#lw; z3Bh;T=I2Z2N}sPEv8CuDukO$DmoMZU7?-N;5U_N7?(_odLnLmSoa_4%>;fLRPxQo$ z-I4Xt5&Bk4RIOXBf0Doz^$$REV)k8#xE4V$NV|Qq|HKvXSh?vrZWSqE zO(D{Q=n`eqOw)-{|K*I^u3g<;OjD@H^gO~9orF%$%(-P$%`@=2tC8xrp%UNw^TC*g zHXmNvDIOlrF6(MPP3JKeuD~es*apEaR`W*PC*x(C=f6ZtBOuv?H&{2I zyB=w=&BNHh^q6fQ!NKv9Db$%ZH(ESWS2O=MTw5VdAGDu_N4pq6axUaS)zRKLB+zbg z9gf%nfHN6=t^C-pzqaVA^4tW`Y&cA|8Y&7A!w?-V%$y|o8lE@x+79KFqob$u^^Ek@ zomWKI{R^`&m4nNHZcvkxemy16EiYlKuY=ll=w`Pz@4(AaC2wgUdMZb=F>Em1G~_x= z&rFlJc}BSqZR*5As~?`CarH5}YEc@=g8dr8T92aNUYgByj$l-Ug(Y?7Rd!SG5s05E z8$kMRaJFoD-6hA3nxf?*$n7;c)eJo+^ZMm&laz7q4FyvJg$^wX> zQ!+k1lmBvG2nG${NQ;LxiIgsozE#NspjmJvUc!`38!yonB`o*V%XCB zSTLcxcQ05&3YAJLk^rf`XpI*%X@~#^=$Z~Cs~^_@a$4KNXLq7$wJ^b-bC^(0skvgC zQlbGJsKy(YbZ`B1=Pbb1VCL+}jO<*Omg@b_SfE4X=I$!1YAZQeRT#ULPDO|=SJ2MZ z`~VcZV@CC9uEL#8n86`l5xpiZ_xn~Tt1vxB^w1lSxehJ~WFHa~>egGAx$vvrV^y<( z#xWB+j5{WHBmgj7<5(!?;SzksGa){~!OzXF{`-#ATK@*GYenwNsc0uE??5kZYnl2a zu{%(*zx}rpB56CT`7XD3Dkz*&vpuMv$4BzjWb_KSTu)`jw#-Vh%*`c-frC?By~<^= z;XTTx8?yjXrGStdH>#!;Gzb8jjci^fHw^*MQKIMW2H~Xr{WJyUUyRc|kVvDIf)euH zfiq2Vza~Wb8UhV>y*4q3R|hQpvvZ}GPbcSOSs=6-`C^xJZ1%-l#Dm=A3L@WRP-kt7 zl1?em~5cb`hy;1i=QD~z>sZytJUaVFTN$cMvF1)>2 zKq8Sq?>Mf>#(Li2_>Y#xVY~yc(V)MIEzy$0%%+8zhGu^h_NYW-vALjKQW@~{s*A&G z%9r^9*n`$!O1`E|=G`3t;~pEF=yG><7YB&KxUk?EEkix#>PqlkD1$@eX0#;vCzAB* zAGpX>wV(E^279_bWus*13p}lkwa&QG37Ru1K@J|uJ=}tiv*=m3@31B>#5Im_Ft?mv ziIlPe;y75%go@%%_g~!|;(2t%wa!``s1l${U>o2ryHatVM9M$#V7l+ zB>p7P*noihI6#v2ZS1>t*^j?Tpt6qXQj?Ps!)I-`-67EK(*eEuVcs>spgGN*t`F|L-+{C}|8|ZU9;_UK z0nNeaT!en;i(Vlcpe0$ivRHkrV#m^*ZO|5Y&X{Sw*F7l;gB_LS{Fj5&nB)SOUhfZi z`R{+s=3rF|i!^*`^JpOl58rlkkBBN>eo65NL!NU0FxYt%a^@uN7Yp_PBppms*|N}< zsQCdXAW;CQ={%ns@pBRd(*&BqRG^z-wn=Nx;;5Ge=(YlfH0bra=20khgI^p#GOB!| znp;Ia%ju@XTfpUl$2YMBBMC{V_zy>=f|KQhZoA8*gcJYnDa0u1S|T8 zqwfc;G0%#Mg64Wf@bX@>XJG5^Y{+e|3Dm!u(#7lH0gW0&2hpj?X$ezZYWVdEuRS%7 zE`eqdX!CRxwW#}iF@S)mU$I=>UyfG*0I58;B`-HW0zjsy`+?7I4%}85r!H-eU(xVy za?i88Djw@KTAQd+WhCSXTYgWXAwKe>&B-F$tmq1_MSa->lJ@41cH~rqmkc0PRcjN7 zjI1nN3kLSGIMfPlX^}AWWvTJ}k(`gl08~ad+o`>dl80b~&l{FiD|GS&8b|u--~5Q^ z_itX2g(xpJmUG`IQfu|b}Xr)Crf?hBa zMJqxcOgk0zc1X>+2=c9QXwi&bY*^x&$|QaskvHF%n3^l&_#pO2&%#Lv|H|U{WdOIK zdxf%*ppJ&xqKyuxa`b`Ho!c*7OfTiOcQEQEj=QAiz90W#;P!tA&S_P1654%=s3?GS zKLd!={6l{JlHZ~ErRZv5yPmS63O=815j{k~`VPKJTwvG^d{7-{GY~nH-00_3&&Q`# zZGn}r&k8I|yIo#1*kJT`ZP2@@F$rM(2AFsuyCqJuSq+q;dbrj@(2}SHnqm|-P(1b_ zIGP!=D2S=O-we=Nn13cX<6aeG{(ydym}QBa-Q_APaPRV2(AIEjQ)=yL7X-8$bVqHc zft>X-ki=R)F@-=UEFARDP&RfXS7l(-5N*rxg%sNnNIinfL1B?DuVFsey_iQlE%o$+ z<^{qb8FDGjwV4YE4xlD-ngexp_c-shmK8bLGP}Rs8IzHdqq-g#rFYE-OTD&Fl` zJYVs~b5JgKon|nVSAXgJ`)X~1{%{Wddu(98`>*~cci~^#z`*tYJ6qnrvdsM}Th_m_ zn(Z#m|K&7;{%~UcT~@Py?JoPn|MtIO_WW;_r*)c-3wBj%wO`picl6PTezvCWeMil4dnU3E&Q@la6^^$05^3fa{ z9$D!*0{cGZPmAjr=qkt5{Pp$AIgS(m>+8y~KRvPMzWvi|8?)z6OYBwd-%Ye&>CSQe z>AL+t$N#J0IrINJ$N#J0e_#Lq@#p`m@xMm%pAQfHd&AH1KmR+!&$&K${qy+z-QfZM z|LOPFFN*RrT&p|3P2dJ;aq!j&oCBpA{@}p_W2v}wYcew5iliH)Mz*dvMhbLvTA5l| z8SIXO7cks)GC>z=mZ)5~b7*&{vo(WnrbVXeEn9@^S@b~U3B4-maM69CKe&P);_&Jg zw)wUDeR#dtbQ8$HU^qBQ$GG-m?(EPAE4ORXRmb?CsHj7^mS)V@ZgC3f{Pwkqk~&R& zexP-$i#?m-sdqFVCtYqAES$Ev6sv;pnyFo3b+N)`?SkObB;1t9RJP04JB&bZ?S2fY z%TdwLh?Eo7Ryk%Dr$6$9b`kCach0a#fg;mS)w+8iSjhqfOlDa6>gS*Hdi$81xz5x&8U$63PZm zs^1}=2z`5ma-tw*4d~&SBbXtv zl}gre`kAQmvQ6!w+%!dalGnuhMm;S8GjJ_;#!A-GAsD9>?;%^?J3@F^wi}*-PA_gg zvCh68Fz(jpa`}$1GG3qh8Cs#gs%;)o-5QTCHu5YnG3XSSe|uR0tf64s$0OPk(=%6> zq1}vELpy3O?@idMluUrMtlcoLg42UysX3Af((l7kHk*{zt8`)TbGY_I7r)Pn1O zY})#x_Fm5AwBGThz@tZvPv}gEEM^o{3bB*f1tpyVwwAe!!REG0DYa1DjC6Kjo_!_fpwJ}XA97Dz3kKLWu_t(La)EMzE1zK17%3ubici$f@wg**# zD5iCTy%_4hIxHf8>L6Y7>n$&w$uvrTqpENXk>EHn>WxI6s5=u#AQW^kBP|Fr3QAmGCSYUVPz7OA`B6V`iq8eCE)~>Sj>1cP(LVIoZtbJZdPHFPr zZdxd4{sZ!X$fd9)5Sw!5MsCE)jcPtsDNbt|>3S5`I(3aF}# z#NCSxxPf_CLRsQ$Jw|u$bV1YZ`(X8nr&eH_+iwuv1>N1J$zv|?bc_6y+a8%Fs)fQQ zLLasK*Q4w?<79}|I1F>0X&#f_bXen-j^>A5Oa7yH6TAB*t%i8YM?9D3v@ynxJ z^ISbfN;Bi(3Jzbc$M{5=fF6N=p!fSLLmZ5jv>+mUlj4yl5^(-=avr%dJf$~{l537N zPQyI?7`gkW7Y}e>&?Ost)EYQCmud+L(&5q7t926=6s$+_(8NNvo)+3wHg)pp?%&Um z#p#-`Y9qw9zk;wvg~)@@_hDgO)6;Zl%x+tA)Md;O=PZlqusUIkq?8CuH{sqO5b2Wp z-fxj|bgiocgCdP~M}pNKxA&5A=2!4ykD3sdrsglc<3G5s)yhK$Te-xj1V^T{XtN|t zGNtv+?puBls~K!p97~oDAY4k_Wap0is@L1vNyQC@t~o;&dP`4^c#jx3f4wgcq$@l~ zpJqyvq}9b{mx8JSVW2{{_A;Y_t9OQSP?=9&nx$Li(+wQO$+qSE;BsEk2X`+dVZlGe zS6BLA_j}l?j8rt?kMBbIrT!n3@-_dQ`74+L#`t^6xD^6iQbT&n+a From 3312da1f61706b646fa72726cb289037ace21f4a Mon Sep 17 00:00:00 2001 From: thisisyoussef Date: Sat, 19 Aug 2023 06:02:46 +0300 Subject: [PATCH 17/24] Fix rendering of muscles in MuscleWidget Ensure that when a muscle is both main and secondary, only the main muscle background is drawn. This addresses potential overlaps and redundant rendering in the MuscleWidget. --- lib/widgets/exercises/exercises.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/widgets/exercises/exercises.dart b/lib/widgets/exercises/exercises.dart index 74b6beed..60af3b76 100644 --- a/lib/widgets/exercises/exercises.dart +++ b/lib/widgets/exercises/exercises.dart @@ -338,7 +338,8 @@ class MuscleWidget extends StatelessWidget { this.isFront = true, }) { this.muscles = muscles.where((m) => m.isFront == isFront).toList(); - this.musclesSecondary = musclesSecondary.where((m) => m.isFront == isFront).toList(); + this.musclesSecondary = + musclesSecondary.where((m) => m.isFront == isFront).toList(); } @override @@ -349,7 +350,7 @@ class MuscleWidget extends StatelessWidget { children: [ SvgPicture.asset('assets/images/muscles/$background.svg'), ...muscles.map((m) => SvgPicture.asset('assets/images/muscles/main/muscle-${m.id}.svg')), - ...musclesSecondary.map((m) => SvgPicture.asset( + ...musclesSecondary.where((m) => !muscles.contains(m)).map((m) => SvgPicture.asset( 'assets/images/muscles/secondary/muscle-${m.id}.svg', )), ], From b1328fa048b2d385f01fbe91323be661b0a537e7 Mon Sep 17 00:00:00 2001 From: thisisyoussef Date: Wed, 26 Mar 2025 20:57:17 +0100 Subject: [PATCH 18/24] Added to AUTHORS.md --- AUTHORS.md | 1 + lib/widgets/exercises/exercises.dart | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index f4bf87d3..ff5b442f 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -22,6 +22,7 @@ - Miroslav Mazel - - artchiee - - Tejas Bir Singh - +- Youssef Ahmed - - Abhishek Saini - - Hanaa Allohibi - - Shey Alnasrawi - diff --git a/lib/widgets/exercises/exercises.dart b/lib/widgets/exercises/exercises.dart index 60af3b76..25e58bf2 100644 --- a/lib/widgets/exercises/exercises.dart +++ b/lib/widgets/exercises/exercises.dart @@ -338,8 +338,7 @@ class MuscleWidget extends StatelessWidget { this.isFront = true, }) { this.muscles = muscles.where((m) => m.isFront == isFront).toList(); - this.musclesSecondary = - musclesSecondary.where((m) => m.isFront == isFront).toList(); + this.musclesSecondary = musclesSecondary.where((m) => m.isFront == isFront).toList(); } @override From 276f6dd480326f3a43f7a728934b1a38d396c57c Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Wed, 26 Mar 2025 22:06:41 +0100 Subject: [PATCH 19/24] Let's not be that much up-to-date... --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8eb14605..57d410b4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,6 +35,6 @@ jobs: run: flutter test --coverage - name: Coveralls - uses: coverallsapp/github-action@master + uses: coverallsapp/github-action@v2 with: github-token: ${{ secrets.GITHUB_TOKEN }} From 865d3e7ec578737d2644c5c66deffea06b9ac1cd Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Thu, 27 Mar 2025 14:09:20 +0100 Subject: [PATCH 20/24] Update AUTHORS.md This file is now automatically generated, so there's no need to manually add the contributors to it. Also, use a similar format for the pull request template as used in the backend --- .github/pull_request_template.md | 22 +- AUTHORS.md | 390 ++++++++++++++++++++++++++----- README.md | 29 ++- 3 files changed, 353 insertions(+), 88 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 75aef5cc..9025fae5 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,28 +1,16 @@ -## Description (Proposed Changes) - -(Please try to mention in bullet points.) +# Proposed Changes - - -## Link to the issue : +## Related Issue(s) -(Add link of the issue you have proposed changes to) +If applicable, please link to any related issues -- Link : - -## Tests - -Please make sure to add tests when implementing new features. - -## Checklist - -Please check that the PR fulfills all requirements listed below by checking the relevant -checkboxes (`[x]`). This will ensure a smooth and quick review process. +## Please check that the PR fulfills these requirements +- [ ] Tests for the changes have been added (for bug fixes / features) - [ ] Set a 100 character limit in your editor/IDE to avoid white space diffs in the PR (run `dart format --line-length=100 .`) -- [ ] Tests for the changes have been added (for bug fixes / features) -- [ ] Added yourself to AUTHORS.md - [ ] Updated/added relevant documentation (doc comments with `///`). - [ ] Added relevant reviewers. diff --git a/AUTHORS.md b/AUTHORS.md index ff5b442f..3928f121 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -1,86 +1,350 @@ -# Authors +# Contributors and translators to this repository -## Developers +Thank you all for contributing to the project, you are true heroes! 🫶 -- Jigar Prajapati - -- Roland Geider – -- Dylan Aird - -- Jannik Norden - -- Arun Muralidharan - -- Khushbu Bora - -- Patrick Witter - -- Tomer Ben-Rachel - -- Thilina Herath - -- Marko Milosevic - -- Karthik Reddy (Axel) - -- Ogundoyin Toluwani - -- Nenza Nurfirmansyah - -- Florian Schmitz - -- Adam Bujdoš - -- Aman Negi - -- Sandi Milohanic - -- Miroslav Mazel - -- artchiee - -- Tejas Bir Singh - -- Youssef Ahmed - -- Abhishek Saini - -- Hanaa Allohibi - -- Shey Alnasrawi - -- Costas Korai - -- Bassam Mutairi - -- Dieter Plaetinck - -- Dennis van Peer - -- sizzlesloth - -- Arya Singh - -- Xianglin Zeng - -- Sangharsh Sulke - -- Yashas H Majmudar - +## Contributors + +- [thisisyoussef](https://github.com/thisisyoussef) - (youssefahmed@ufl.edu) +- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) +- [Yashas H Majmudar](https://github.com/yashas-hm) - (yashashm.dev@gmail.com) +- [Github-actions](https://github.com/invalid-email-address) - (github-actions@github.com) +- [Christijan](https://github.com/ChrispyM) - (c.mulder@concepts.nl) +- [Jackpkn](https://github.com/Jackpkn) - (pawankumarbairwa879@gmail.com) +- [sangharshdeveloper](https://github.com/Sangharshdeveloper) - (sangharshdeveloper@gmail.com) +- [ImgBotApp](https://github.com/ImgBotApp) - (ImgBotHelp@gmail.com) +- [தமிழ்நேரம்](https://github.com/TamilNeram) - (anishprabu.t@gmail.com) +- [Xianglin Zeng](https://github.com/FutureYL3) - (Future_YL@outlook.com) +- [Arya Pratap Singh](https://github.com/ARYPROGRAMMER) - (75311742+ARYPROGRAMMER@users.noreply.github.com) +- [ARYPROGRAMMER](https://github.com/ARYPROGRAMMER) - (arya.2023ug1104@iiitranchi.ac.in) +- [Dieter Plaetinck](https://github.com/Dieterbe) - (dieter@plaetinck.be) +- [szalas](https://github.com/szalas) - (szalac@gmail.com) +- [dan](https://github.com/sizzlesloth) - (64416644+brittle-bones@users.noreply.github.com) +- [DVPeer](https://github.com/Denpeer) - (den.vanpeer@gmail.com) +- [Marco Rimoldi](https://github.com/marcor) - (marcor@users.noreply.github.com) +- [Licaon_Kter](https://github.com/licaon-kter) - (licaon-kter@users.noreply.github.com) +- [Bassam A](https://github.com/mutairibassam) - (mutairibassam@gmail.com) +- Costas Korai - (costaskorai@Costass-MacBook-Pro.local) +- [null](https://github.com/hn-n) - (43781514+hn-n@users.noreply.github.com) +- Miroslav Mazel - (contact.mirek+git@protonmail.com) +- [Milksheyke](https://github.com/sheyaln) - (amilksheyke@gmail.com) +- [Abhishek Saini](https://github.com/Abhisheksainii) - (78199221+Abhisheksainii@users.noreply.github.com) +- [dimii27](https://github.com/dimii27) - (dimitrieietcu@gmail.com) +- [Antonis-geo](https://github.com/Antonis-geo) - (antgeoath@csd.auth.gr) +- [artchiee](https://github.com/artchiee) - (noman4work@outlook.com) +- [artchiee](https://github.com/artchiee) - (53340008+artchiee@users.noreply.github.com) +- [Jigar Prajapati](https://github.com/Jiggy9) - (112299754+Jiggy9@users.noreply.github.com) +- Dalton Scavassa - (daltux@users.noreply.hosted.weblate.org) +- [Jigar](https://github.com/Jiggy9) - (prajapatijigar791@gmail.com) +- [Deepanshu](https://github.com/Deepanshu-Sharma-18) - (deepanshu.r.sharma@gmail.com) +- [tejasbirsingh](https://github.com/tejasbirsingh) - (tejasbir.rekhi@gmail.com) +- [Freddy Cunningham](https://github.com/freddy-c) - (freddy@fcunningham.co.uk) +- [Freddy Cunningham](https://github.com/freddy-c) - (36166975+freddyc2003@users.noreply.github.com) +- [Malay Pandit](https://github.com/DeveloperMalay) - (94185006+DeveloperMalay@users.noreply.github.com) +- [Mirek Mazel](https://github.com/12people) - (12people@users.noreply.github.com) +- Miroslav Mazel - (contact.mirek@protonmail.com) +- [Roman Kalivoda](https://github.com/RKCZ) - (kalivodaroman@gmail.com) +- [Tiisetso Dinoko](https://github.com/Dinokojt7) - (dinokovonteese@gmail.com) +- [Harshit](https://github.com/Harshit933) - (harshitverma933@gmail.com) +- [Harshit](https://github.com/Harshit933) - (90508384+Harshit933@users.noreply.github.com) +- [Raman Tank](https://github.com/raman04-byte) - (ramantank04022002@gmail.com) +- [Mohammad Rafigh](https://github.com/mohammadrafigh) - (mohammad.rafigh@gmail.com) +- [Edmundo Meyer](https://github.com/e-meyer) - (80543721+e-meyer@users.noreply.github.com) +- [Bujdy](https://github.com/bujdy) - (adam357bujdos@gmail.com) +- [amannegi](https://github.com/AmanNegi) - (akuro787898@gmail.com) +- [Aman Negi](https://github.com/AmanNegi) - (37607224+AmanNegi@users.noreply.github.com) +- [Aaliya Ali](https://github.com/Aaliya-Ali) - (63385197+Aaliya-Ali@users.noreply.github.com) +- [Aaliya Ali](https://github.com/Aaliya-Ali) - (aaliya01ali@gmail.com) +- Sandi Milohanic - (sandi.milohanic@cenosco.com) +- [Hissabat Manager](https://github.com/Chinguetti-Quizz) - (hissabatmanager@gmail.com) +- [Nenza Nurfirmansyah](https://github.com/nenzan) - (nnurfirmansyah@gmail.com) +- [Vinod](https://github.com/skdotv) - (vinod.sk.3761@gmail.com) +- [Aditya](https://github.com/adeeteya) - (62930521+adityar224@users.noreply.github.com) +- [JustinBenito](https://github.com/JustinBenito) - (83128918+JustinBenito@users.noreply.github.com) +- [Florian Schmitz](https://github.com/floodoo) - (schmitz.florian.daniel+github@gmail.com) +- [avinash](https://github.com/HeyAvi) - (avinashjhaaaa@gmail.com) +- [Tolu ogundoyin](https://github.com/Tolu007) - (toluogundoyin007@gmail.com) +- [Daniil Kovalev](https://github.com/kovdan01) - (daniil@kovalev.website) +- [Saint Gabriel](https://github.com/saintgabriel0) - (53136855+chineduG@users.noreply.github.com) +- [Artem](https://github.com/defaultpage) - (artem@molotov.work) +- [WMs784](https://github.com/WMs784) - (kosei.t12@gmail.com) +- [KenXRan](https://github.com/kenxran) - (it4u.mm@gmail.com) +- [João Goulart](https://github.com/usehalter) - (joaofgoulart1@gmail.com) +- [yaseenagwan](https://github.com/agwanyaseen) - (yaseen04071998@gmail.com) +- [G. Buendía](https://github.com/gbuendia) - (gbuendia@gmx.net) +- [Sylvia van Os](https://github.com/TheLastProject) - (sylvia@hackerchick.me) +- [Debayan Sutradhar](https://github.com/rnayabed) - (debayansutradhar3@gmail.com) +- [Poussinou](https://github.com/Poussinou) - (fravincent77@yahoo.fr) +- Nikita Epifanov - (nikgreens@protonmail.com) +- [Ady](https://github.com/adyhnat) - (adyhnat@gmail.com) +- Adrian Halko - (adriankohalgmail.com) +- [Tomáš Konkoľ](https://github.com/TomasKonkol) - (tomas.konkol@student.tuke.sk) +- [Marko Milosevic](https://github.com/TaarnStar) - (milosevic.marko86@gmail.com) +- [Sandi Milohanić](https://github.com/sandimilohanic) - (sandi.milohanic@gmail.com) +- [AxelBlaz3](https://github.com/AxelBlaz3) - (karthikgaddam4@gmail.com) +- [Marvin M](https://github.com/M123-dev) - (39344769+M123-dev@users.noreply.github.com) +- [himikat89](https://github.com/himikat89) - (91132672+himikat89@users.noreply.github.com) +- [infiniteoverflow](https://github.com/infiniteoverflow) - (aswingopinathan1871@gmail.com) +- [Tomer Ben Rachel](https://github.com/TomerPacific) - (tomerpacific@gmail.com) +- [Thilina TCH](https://github.com/ThilinaTCH) - (thilinach87@gmail.com) +- [Thilina Herath](https://github.com/thilinatnt) - (thilinatnt.p@gmail.com) +- ToldYouThat - (itoldyouthat@protonmail.com) +- [Yair Chen](https://github.com/chenyair) - (yair.chen2000@gmail.com) +- [henok3878](https://github.com/henok3878) - (henokwondimu3878@gmail.com) +- [Patrick Witter](https://github.com/patrickwitter) - (pwitterop123@gmail.com) +- [ton-An](https://github.com/ton-An) - (ton-An@outlook.de) +- [Prakash Shekhar](https://github.com/prakash-shekhar) - (prakashshkhr@gmail.com) +- [Khushbu Bora](https://github.com/KhushbuBora) - (72873874+KhushbuBora@users.noreply.github.com) +- [Arun Muralidharan](https://github.com/arun-muralidharan) - (arun.muralidharan92@pm.me) +- yiter - (fupingren@gmail.com) +- [Henio Szewczyk](https://github.com/hszewczyk) - (henryk.szewczyk09@gmail.com) +- Jannik Norden - (dev.janniknorden@gmail.com) +- [Allan Nordhøy](https://github.com/comradekingu) - (epost@anotheragency.no) +- [Stefano Rossi](https://github.com/stefanorossiti) - (stefanorossi.ti@gmail.com) +- [Dylan Aird](https://github.com/Dolaned) - (dylan.aird595@gmail.com) ## Translators -- Saudi Arabian - - Hanaa Allohibi -- German +### Chinese (Traditional Han script) - - mondstern (2) - - J. Lavoie (19) - - Roland Geider (142) +- [Peter Dave Hello](https://github.com/PeterDaveHello) - (hsu@peterdavehello.org) -- English +### Polish - - Roland Geider (3) - - Allan Nordhøy (8) +- [Karol Solecki](https://github.com/karolsol) - (karolsol203@gmail.com) +- [Piotr Strebski](https://github.com/strebski) - (strebski@gmail.com) +- Dawid Panyło - (wampir5000@o2.pl) +- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) +- Marcin Schoenknecht - (marcinschoenknecht@gmail.com) +- [Patryk](https://github.com/byakurau) - (byakurau1@gmail.com) +- [Michał Homza](https://github.com/HagiaHaya) - (minefach@gmail.com) +- [Jacob](https://github.com/devzom) - (dev.zomerfeld@gmail.com) -- Italian +### Serbian - - mondstern (2) - - DT (4) - - J. Lavoie (24) - - Stefano Rossi (120) +- [Mladen Trišić](https://github.com/mtrisic) - (mtrisic@gmail.com) -- Spanish +### Dutch - - Roland Geider (1) - - martingetzel (119) +- [Joey Haalboom](https://github.com/JoeyHaalboom) - (jhaalboom13@gmail.com) -- French +### Russian - - J. Lavoie (92) - - Stefano Rossi (94) +- [Алексей Курышко](https://github.com/alexkuryshko) - (alexkuryshko@gmail.com) +- [lightningcpu](https://github.com/lightningcpu) - (lightningprogramming@proton.me) +- [Кирилл Александрович Злобин](https://github.com/gungstarbeiter) - (gungstarbeiter@gmail.com) +- [Ivan Katkov](https://github.com/Porphyrion) - (lubovdobro@gmail.com) +- Nikita Epifanov - (nikgreens@protonmail.com) -- Norwegian Bokmål +### Croatian - - Allan Nordhøy (98) +- [Milo Ivir](https://github.com/milotype) - (mail@milotype.de) +- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) +- [SMilohanic](https://github.com/sandimilohanic) - (sandi.milohanic@gmail.com) -- Japanese +### Portuguese - - Kosei TANAKA (97) +- [Edson Wolf](https://github.com/edsonblwolf) - (edsonwolf@vivaldi.net) +- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) +- Wilton Rodrigues - (wiltonf.rodrigues@gmail.com) +- [Guilherme Salomão](https://github.com/salomaoparkour) - (gmsalomao2@gmail.com) +- [Bruno de Moura](https://github.com/bruunomooura) - (brunomoura0509@hotmail.com) +- Dalton Scavassa - (daltux@users.noreply.hosted.weblate.org) +- [Stefan Taiguara](https://github.com/Teitei011) - (stefantleal14@gmail.com) +- [Eduardo Menges Mattje](https://github.com/EduMenges) - (eduardomattje@gmail.com) +- [Edu Cavalheiro](https://github.com/EduCavalheiro) - (dev@educavalheiro.com) +- [João Goulart](https://github.com/usehalter) - (joaofgoulart1@gmail.com) -- Bahasa Indonesia +### Italian - - Nenza Nurfirmansyah (73) +- [Antenore Gatta](https://github.com/antenore) - (antenore@simbiosi.org) +- Gab Gat - (draconixdust@gmail.com) +- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) +- [Federico Pierantoni](https://github.com/F3FFO) - (federico.pieranton@gmail.com) +- [oarion](https://github.com/oarion) - (michaelgalati@protonmail.com) +- [Alessandro Faucci](https://github.com/Dhy19971) - (silenzio.canguro@gmail.com) +- Sfizio Purea - (sfizio.purea-0h@icloud.com) +- [Mirko Ferrati](https://github.com/MirkoFerrati) - (mirko8787@gmail.com) +- [Stefano Camillo](https://github.com/djste) - (camilloste@gmail.com) +- [MARCO ACORTE](https://github.com/marco-acorte) - (macorte@gmail.com) +- J. Lavoie - (j.lavoie@net-c.ca) +- DT - (semperpeppe@tracciabi.li) +- mondstern - (mondstern@snopyta.org) +- [Stefano Rossi](https://github.com/stefanorossiti) - (stefanorossi.ti@gmail.com) -- Croatian +### French - - Sandi Milohaic +- [William](https://github.com/WilliamR312) - (willouxr312@gmail.com) +- [florent4014](https://github.com/florent4014) - (florent.touzet@gmail.com) +- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) +- Xav Basco - (beckscc2010@hotmail.fr) +- [David Olewski](https://github.com/Arigowin) - (david63210@gmail.com) +- [yoyomax80400](https://github.com/yoyomax80400) - (archie.maxime80@gmail.com) +- [loued](https://github.com/Loued) - (loued2@gmail.com) +- Célian - (gallcelian@gmail.com) +- [MrSniikyz](https://github.com/BabyGeek) - (babygeek83bis@gmail.com) +- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) +- J. Lavoie - (j.lavoie@net-c.ca) +- [Antoine Vibien](https://github.com/r1llettes) - (avibien@protonmail.ch) +- [Stefano Rossi](https://github.com/stefanorossiti) - (stefanorossi.ti@gmail.com) + +### Ukrainian + +- [Максим Горпиніч](https://github.com/Maksim2005UA) - (maksimgorpinic2005a@gmail.com) +- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) +- Максим Горпиніч - (mgorpinic2005@gmail.com) +- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) +- [Dan](https://github.com/Kefir2105) - (jonweblin2205@protonmail.com) +- Dan - (denqwerta@gmail.com) +- Tymofii Lytvynenko - (till.svit@gmail.com) +- [Artem](https://github.com/defaultpage) - (artem@molotov.work) + +### Portuguese (Brazil) + +- [Ricardo Lima](https://github.com/rhrlima) - (ricardo.hrlima@gmail.com) +- [Clerton Araujo](https://github.com/clertonraf) - (clertonfilho@gmail.com) +- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) +- Wilton Rodrigues - (wiltonf.rodrigues@gmail.com) +- Nao interessa - (weblate.crafter447@simplelogin.com) +- [Lucas Mezêncio](https://github.com/lucasmezencio) - (lucas.mezencio@gmail.com) +- Felipe Antônio Rodrigues Cardoso - (lipecgk@gmail.com) +- [Luigi Henrick Feitoza Silva](https://github.com/luigihenrick) - (luigihenrick@gmail.com) +- [João Hortêncio Moraes](https://github.com/joaohortencio) - (joaohortencio@gmail.com) + +### Tamil + +- [தமிழ்நேரம்](https://github.com/TamilNeram) - (anishprabu.t@gmail.com) + +### Chinese (Simplified Han script) + +- Herb Huang - (Ranger0801@live.com) + +### Hindi + +- [pavan arun bagwe](https://github.com/pavanb0) - (pavanbagwe16@gmail.com) +- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) +- [Debayan Sutradhar](https://github.com/rnayabed) - (debayansutradhar3@gmail.com) + +### Turkish + +- [Oğuz Ersen](https://github.com/oersen) - (oguz@ersen.moe) +- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) +- [Cem Avcı](https://github.com/cem256) - (cemo99@gmail.com) +- Oğuz Ersen - (oguzersen@protonmail.com) +- [Cenk Cidecio](https://github.com/ccidecio) - (ccidecio@icloud.com) +- ToldYouThat - (itoldyouthat@protonmail.com) + +### German + +- [kvnrmnn](https://github.com/rmnn92) - (kvnrmnn@proton.me) +- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) +- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) +- [Victor Jouhoff](https://github.com/jouhoffv) - (jouhoff@pm.me) +- m4skedbyte - (weblate@m4skedbyte.xyz) +- Axel Steinbrecher - (mail@axelsteinbrecher.de) +- [Christoph Suesser](https://github.com/TheFitzZZ) - (fitzzz@fitzzz.de) +- [Luis Lüscher](https://github.com/lslschr) - (luisricardoluescher@gmail.com) +- mondstern - (mondstern@snopyta.org) +- J. Lavoie - (j.lavoie@net-c.ca) +- [Marvin M](https://github.com/M123-dev) - (marvinmoel05@gmail.com) +- Lydia - (lydia.glaser@gmx.net) +- [Allan Nordhøy](https://github.com/comradekingu) - (epost@anotheragency.no) + +### Indonesian + +- [aryakdaniswara](https://github.com/aryakdaniswara) - (arya.kdaniswara@gmail.com) +- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) +- Debi Maulana Ahsan Halla - (adeebmawlanaahsan@gmail.com) +- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) + +### Catalan + +- [Zixu Sun](https://github.com/ziixu) - (zixu233@gmail.com) +- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) +- [guillem](https://github.com/gbuendia) - (gbuendia@gmx.net) + +### Chinese (Simplified) + +- [纪颖志](https://github.com/jiyingzhi) - (jiyingzhi0808@gmail.com) +- [Yi-Han Hsiung](https://github.com/AaronHsiung) - (hsiungyi@oregonstate.edu) +- [Tsz Hong CHAN](https://github.com/tomyan112) - (tomyan112@yahoo.com.hk) +- [Eddie Tang](https://github.com/EDED2314) - (eddietang2314@gmail.com) +- [Jing](https://github.com/jingcheng16) - (cynthiacheng-jing@outlook.com) +- [sr-c](https://github.com/sr-c) - (shuruihao@outlook.com) +- [tony](https://github.com/tonyxxliu) - (tony198586@hotmail.com) +- yiter - (fupingren@gmail.com) + +### Greek + +- Dimitrys Meliates - (demetresmeliates@gmail.com) +- [Antonis-geo](https://github.com/Antonis-geo) - (antgeoath@csd.auth.gr) + +### Czech + +- [Fjuro](https://github.com/Fjuro) - (fjuro@alius.cz) +- Fjuro - (ifjuro@proton.me) +- [CaptainDolphy](https://github.com/CaptainDolphy) - (captain.x.dolphy@gmail.com) +- [Roman Kalivoda](https://github.com/RKCZ) - (kalivodaroman@gmail.com) + +### Arabic + +- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) +- [Hanaa](https://github.com/hn-n) - (hanaa_yl@hotmail.com) +- [Ahmed zein](https://github.com/Ahmed-Zein) - (ahmedzein3652@gmail.com) + +### Hebrew + +- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) +- n,rdo - (ifhiwy0kjc@gonetor.com) +- [Tomer Ben Rachel](https://github.com/TomerPacific) - (tomerpacific@gmail.com) + +### Japanese + +- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) +- [Tsz Hong CHAN](https://github.com/tomyan112) - (tomyan112@yahoo.com.hk) +- [sasukeiscool](https://github.com/sasukeiscool) - (jaflagasd@gmail.com) +- yiter - (fupingren@gmail.com) + +### Spanish + +- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) +- [Roberto Iglesias](https://github.com/iglesiasroberto14) - (iglesiasroberto14@gmail.com) +- c06c3abb8f - (c06c3abb8f@mymaily.lol) +- [Javier](https://github.com/dysk0zero) - (javiroldan98@gmail.com) +- [facu-d](https://github.com/facu-d) - (facundo@durigon.com.ar) +- [Biologia Libros](https://github.com/bio201922) - (biologialibros2019@gmail.com) +- [guillem](https://github.com/gbuendia) - (gbuendia@gmx.net) +- [Chris Klempau](https://github.com/yoinkers1337) - (piroflam2@gmail.com) +- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) +- [martingetzel](https://github.com/martingetzel) - (martingetzel@gmail.com) + +### Chinese (Traditional) + +- hugoalh - (hugoalh@users.noreply.hosted.weblate.org) +- [Tsz Hong CHAN](https://github.com/tomyan112) - (tomyan112@yahoo.com.hk) +- [Chung-Wei Chung](https://github.com/webb790709) - (webb790709@proton.me) +- HY Cheng - (corum_apfil@simplelogin.com) + +### Portuguese (Portugal) + +- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) + +### Romanian + +- [Bogdan Bujor](https://github.com/qSharpy) - (bogdan.bujor08@gmail.com) +- [dimii27](https://github.com/dimii27) - (dimitrieietcu@gmail.com) + +### English + +- [guillem](https://github.com/gbuendia) - (gbuendia@gmx.net) +- [Allan Nordhøy](https://github.com/comradekingu) - (epost@anotheragency.no) +- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) + +### Norwegian Bokmål + +- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) +- [Allan Nordhøy](https://github.com/comradekingu) - (epost@anotheragency.no) + +### Amharic + +- [henok3878](https://github.com/henok3878) - (henokwondimu3878@gmail.com) diff --git a/README.md b/README.md index 2e0d16b9..cb728a73 100644 --- a/README.md +++ b/README.md @@ -24,20 +24,33 @@ height="80">](https://play.google.com/store/apps/details?id=de.wger.flutter) alt="Get it on F-Droid" height="80">](https://f-droid.org/packages/de.wger.flutter/) -## Development +## Developing and contributing -This is a regular flutter application, so you basically just run `flutter run` in -the root directory of the project, and optionally use the test server to login -(the db is reset daily): +Our goal is to build an awesome and flexible fitness and nutrition manager, +along with a comprehensive list of exercises and ingredients, all released +under a free license. + +For this, we’d love your help! Whether it’s code, translations, exercises or +reporting issues and ideas, check out our +[contribution guide](https://wger.readthedocs.io/en/latest/contributing.html) +to get started. + +A huge thank you to everyone who has contributed so far! ❤️ See the full list +in [AUTHORS.md](AUTHORS.md). + +**TLDR** + +```bash +flutter run +``` + +This is a regular flutter application, so there's no magic. You will need a backend +for this, so feel free to use the test server for this (the db is reset daily): * URL: `https://wger-master.rge.uber.space` * username: `user` * password: `flutteruser` -For more information consult the development documentation: - - - ## Translation Translate the app to your language on [Weblate](https://hosted.weblate.org/engage/wger/). From 73ac0225fb7e0bd43b3e64e1c00e3bc670c9eb97 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Thu, 27 Mar 2025 16:12:48 +0100 Subject: [PATCH 21/24] Update pull_request_template.md --- .github/pull_request_template.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 9025fae5..073681dc 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -5,7 +5,8 @@ ## Related Issue(s) -If applicable, please link to any related issues +If applicable, please link to any related issues (`Closes #123`, +`Closes wger-project/other-repo#123`, `See also #123`, etc.) ## Please check that the PR fulfills these requirements From 527c6459683fdc3de0a6231de6bbea8a83f0cef4 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Thu, 27 Mar 2025 17:53:56 +0100 Subject: [PATCH 22/24] Don't add the emails to the contributors These are not a secret and can be extracted from the logs, but we probably shouldn't expose them to harvesters too much --- AUTHORS.md | 496 ++++++++++++++++++++++++++--------------------------- 1 file changed, 248 insertions(+), 248 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 3928f121..f39c304f 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -4,347 +4,347 @@ Thank you all for contributing to the project, you are true heroes! 🫶 ## Contributors -- [thisisyoussef](https://github.com/thisisyoussef) - (youssefahmed@ufl.edu) -- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) -- [Yashas H Majmudar](https://github.com/yashas-hm) - (yashashm.dev@gmail.com) -- [Github-actions](https://github.com/invalid-email-address) - (github-actions@github.com) -- [Christijan](https://github.com/ChrispyM) - (c.mulder@concepts.nl) -- [Jackpkn](https://github.com/Jackpkn) - (pawankumarbairwa879@gmail.com) -- [sangharshdeveloper](https://github.com/Sangharshdeveloper) - (sangharshdeveloper@gmail.com) -- [ImgBotApp](https://github.com/ImgBotApp) - (ImgBotHelp@gmail.com) -- [தமிழ்நேரம்](https://github.com/TamilNeram) - (anishprabu.t@gmail.com) -- [Xianglin Zeng](https://github.com/FutureYL3) - (Future_YL@outlook.com) -- [Arya Pratap Singh](https://github.com/ARYPROGRAMMER) - (75311742+ARYPROGRAMMER@users.noreply.github.com) -- [ARYPROGRAMMER](https://github.com/ARYPROGRAMMER) - (arya.2023ug1104@iiitranchi.ac.in) -- [Dieter Plaetinck](https://github.com/Dieterbe) - (dieter@plaetinck.be) -- [szalas](https://github.com/szalas) - (szalac@gmail.com) -- [dan](https://github.com/sizzlesloth) - (64416644+brittle-bones@users.noreply.github.com) -- [DVPeer](https://github.com/Denpeer) - (den.vanpeer@gmail.com) -- [Marco Rimoldi](https://github.com/marcor) - (marcor@users.noreply.github.com) -- [Licaon_Kter](https://github.com/licaon-kter) - (licaon-kter@users.noreply.github.com) -- [Bassam A](https://github.com/mutairibassam) - (mutairibassam@gmail.com) -- Costas Korai - (costaskorai@Costass-MacBook-Pro.local) -- [null](https://github.com/hn-n) - (43781514+hn-n@users.noreply.github.com) -- Miroslav Mazel - (contact.mirek+git@protonmail.com) -- [Milksheyke](https://github.com/sheyaln) - (amilksheyke@gmail.com) -- [Abhishek Saini](https://github.com/Abhisheksainii) - (78199221+Abhisheksainii@users.noreply.github.com) -- [dimii27](https://github.com/dimii27) - (dimitrieietcu@gmail.com) -- [Antonis-geo](https://github.com/Antonis-geo) - (antgeoath@csd.auth.gr) -- [artchiee](https://github.com/artchiee) - (noman4work@outlook.com) -- [artchiee](https://github.com/artchiee) - (53340008+artchiee@users.noreply.github.com) -- [Jigar Prajapati](https://github.com/Jiggy9) - (112299754+Jiggy9@users.noreply.github.com) -- Dalton Scavassa - (daltux@users.noreply.hosted.weblate.org) -- [Jigar](https://github.com/Jiggy9) - (prajapatijigar791@gmail.com) -- [Deepanshu](https://github.com/Deepanshu-Sharma-18) - (deepanshu.r.sharma@gmail.com) -- [tejasbirsingh](https://github.com/tejasbirsingh) - (tejasbir.rekhi@gmail.com) -- [Freddy Cunningham](https://github.com/freddy-c) - (freddy@fcunningham.co.uk) -- [Freddy Cunningham](https://github.com/freddy-c) - (36166975+freddyc2003@users.noreply.github.com) -- [Malay Pandit](https://github.com/DeveloperMalay) - (94185006+DeveloperMalay@users.noreply.github.com) -- [Mirek Mazel](https://github.com/12people) - (12people@users.noreply.github.com) -- Miroslav Mazel - (contact.mirek@protonmail.com) -- [Roman Kalivoda](https://github.com/RKCZ) - (kalivodaroman@gmail.com) -- [Tiisetso Dinoko](https://github.com/Dinokojt7) - (dinokovonteese@gmail.com) -- [Harshit](https://github.com/Harshit933) - (harshitverma933@gmail.com) -- [Harshit](https://github.com/Harshit933) - (90508384+Harshit933@users.noreply.github.com) -- [Raman Tank](https://github.com/raman04-byte) - (ramantank04022002@gmail.com) -- [Mohammad Rafigh](https://github.com/mohammadrafigh) - (mohammad.rafigh@gmail.com) -- [Edmundo Meyer](https://github.com/e-meyer) - (80543721+e-meyer@users.noreply.github.com) -- [Bujdy](https://github.com/bujdy) - (adam357bujdos@gmail.com) -- [amannegi](https://github.com/AmanNegi) - (akuro787898@gmail.com) -- [Aman Negi](https://github.com/AmanNegi) - (37607224+AmanNegi@users.noreply.github.com) -- [Aaliya Ali](https://github.com/Aaliya-Ali) - (63385197+Aaliya-Ali@users.noreply.github.com) -- [Aaliya Ali](https://github.com/Aaliya-Ali) - (aaliya01ali@gmail.com) -- Sandi Milohanic - (sandi.milohanic@cenosco.com) -- [Hissabat Manager](https://github.com/Chinguetti-Quizz) - (hissabatmanager@gmail.com) -- [Nenza Nurfirmansyah](https://github.com/nenzan) - (nnurfirmansyah@gmail.com) -- [Vinod](https://github.com/skdotv) - (vinod.sk.3761@gmail.com) -- [Aditya](https://github.com/adeeteya) - (62930521+adityar224@users.noreply.github.com) -- [JustinBenito](https://github.com/JustinBenito) - (83128918+JustinBenito@users.noreply.github.com) -- [Florian Schmitz](https://github.com/floodoo) - (schmitz.florian.daniel+github@gmail.com) -- [avinash](https://github.com/HeyAvi) - (avinashjhaaaa@gmail.com) -- [Tolu ogundoyin](https://github.com/Tolu007) - (toluogundoyin007@gmail.com) -- [Daniil Kovalev](https://github.com/kovdan01) - (daniil@kovalev.website) -- [Saint Gabriel](https://github.com/saintgabriel0) - (53136855+chineduG@users.noreply.github.com) -- [Artem](https://github.com/defaultpage) - (artem@molotov.work) -- [WMs784](https://github.com/WMs784) - (kosei.t12@gmail.com) -- [KenXRan](https://github.com/kenxran) - (it4u.mm@gmail.com) -- [João Goulart](https://github.com/usehalter) - (joaofgoulart1@gmail.com) -- [yaseenagwan](https://github.com/agwanyaseen) - (yaseen04071998@gmail.com) -- [G. Buendía](https://github.com/gbuendia) - (gbuendia@gmx.net) -- [Sylvia van Os](https://github.com/TheLastProject) - (sylvia@hackerchick.me) -- [Debayan Sutradhar](https://github.com/rnayabed) - (debayansutradhar3@gmail.com) -- [Poussinou](https://github.com/Poussinou) - (fravincent77@yahoo.fr) -- Nikita Epifanov - (nikgreens@protonmail.com) -- [Ady](https://github.com/adyhnat) - (adyhnat@gmail.com) -- Adrian Halko - (adriankohalgmail.com) -- [Tomáš Konkoľ](https://github.com/TomasKonkol) - (tomas.konkol@student.tuke.sk) -- [Marko Milosevic](https://github.com/TaarnStar) - (milosevic.marko86@gmail.com) -- [Sandi Milohanić](https://github.com/sandimilohanic) - (sandi.milohanic@gmail.com) -- [AxelBlaz3](https://github.com/AxelBlaz3) - (karthikgaddam4@gmail.com) -- [Marvin M](https://github.com/M123-dev) - (39344769+M123-dev@users.noreply.github.com) -- [himikat89](https://github.com/himikat89) - (91132672+himikat89@users.noreply.github.com) -- [infiniteoverflow](https://github.com/infiniteoverflow) - (aswingopinathan1871@gmail.com) -- [Tomer Ben Rachel](https://github.com/TomerPacific) - (tomerpacific@gmail.com) -- [Thilina TCH](https://github.com/ThilinaTCH) - (thilinach87@gmail.com) -- [Thilina Herath](https://github.com/thilinatnt) - (thilinatnt.p@gmail.com) -- ToldYouThat - (itoldyouthat@protonmail.com) -- [Yair Chen](https://github.com/chenyair) - (yair.chen2000@gmail.com) -- [henok3878](https://github.com/henok3878) - (henokwondimu3878@gmail.com) -- [Patrick Witter](https://github.com/patrickwitter) - (pwitterop123@gmail.com) -- [ton-An](https://github.com/ton-An) - (ton-An@outlook.de) -- [Prakash Shekhar](https://github.com/prakash-shekhar) - (prakashshkhr@gmail.com) -- [Khushbu Bora](https://github.com/KhushbuBora) - (72873874+KhushbuBora@users.noreply.github.com) -- [Arun Muralidharan](https://github.com/arun-muralidharan) - (arun.muralidharan92@pm.me) -- yiter - (fupingren@gmail.com) -- [Henio Szewczyk](https://github.com/hszewczyk) - (henryk.szewczyk09@gmail.com) -- Jannik Norden - (dev.janniknorden@gmail.com) -- [Allan Nordhøy](https://github.com/comradekingu) - (epost@anotheragency.no) -- [Stefano Rossi](https://github.com/stefanorossiti) - (stefanorossi.ti@gmail.com) -- [Dylan Aird](https://github.com/Dolaned) - (dylan.aird595@gmail.com) +- thisisyoussef - [https://github.com/thisisyoussef](https://github.com/thisisyoussef) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) +- Yashas H Majmudar - [https://github.com/yashas-hm](https://github.com/yashas-hm) +- Github-actions - [https://github.com/invalid-email-address](https://github.com/invalid-email-address) +- Christijan - [https://github.com/ChrispyM](https://github.com/ChrispyM) +- Jackpkn - [https://github.com/Jackpkn](https://github.com/Jackpkn) +- sangharshdeveloper - [https://github.com/Sangharshdeveloper](https://github.com/Sangharshdeveloper) +- ImgBotApp - [https://github.com/ImgBotApp](https://github.com/ImgBotApp) +- தமிழ்நேரம் - [https://github.com/TamilNeram](https://github.com/TamilNeram) +- Xianglin Zeng - [https://github.com/FutureYL3](https://github.com/FutureYL3) +- Arya Pratap Singh - [https://github.com/ARYPROGRAMMER](https://github.com/ARYPROGRAMMER) +- ARYPROGRAMMER - [https://github.com/ARYPROGRAMMER](https://github.com/ARYPROGRAMMER) +- Dieter Plaetinck - [https://github.com/Dieterbe](https://github.com/Dieterbe) +- szalas - [https://github.com/szalas](https://github.com/szalas) +- dan - [https://github.com/sizzlesloth](https://github.com/sizzlesloth) +- DVPeer - [https://github.com/Denpeer](https://github.com/Denpeer) +- Marco Rimoldi - [https://github.com/marcor](https://github.com/marcor) +- Licaon_Kter - [https://github.com/licaon-kter](https://github.com/licaon-kter) +- Bassam A - [https://github.com/mutairibassam](https://github.com/mutairibassam) +- Costas Korai +- null - [https://github.com/hn-n](https://github.com/hn-n) +- Miroslav Mazel +- Milksheyke - [https://github.com/sheyaln](https://github.com/sheyaln) +- Abhishek Saini - [https://github.com/Abhisheksainii](https://github.com/Abhisheksainii) +- dimii27 - [https://github.com/dimii27](https://github.com/dimii27) +- Antonis-geo - [https://github.com/Antonis-geo](https://github.com/Antonis-geo) +- artchiee - [https://github.com/artchiee](https://github.com/artchiee) +- artchiee - [https://github.com/artchiee](https://github.com/artchiee) +- Jigar Prajapati - [https://github.com/Jiggy9](https://github.com/Jiggy9) +- Dalton Scavassa +- Jigar - [https://github.com/Jiggy9](https://github.com/Jiggy9) +- Deepanshu - [https://github.com/Deepanshu-Sharma-18](https://github.com/Deepanshu-Sharma-18) +- tejasbirsingh - [https://github.com/tejasbirsingh](https://github.com/tejasbirsingh) +- Freddy Cunningham - [https://github.com/freddy-c](https://github.com/freddy-c) +- Freddy Cunningham - [https://github.com/freddy-c](https://github.com/freddy-c) +- Malay Pandit - [https://github.com/DeveloperMalay](https://github.com/DeveloperMalay) +- Mirek Mazel - [https://github.com/12people](https://github.com/12people) +- Miroslav Mazel +- Roman Kalivoda - [https://github.com/RKCZ](https://github.com/RKCZ) +- Tiisetso Dinoko - [https://github.com/Dinokojt7](https://github.com/Dinokojt7) +- Harshit - [https://github.com/Harshit933](https://github.com/Harshit933) +- Harshit - [https://github.com/Harshit933](https://github.com/Harshit933) +- Raman Tank - [https://github.com/raman04-byte](https://github.com/raman04-byte) +- Mohammad Rafigh - [https://github.com/mohammadrafigh](https://github.com/mohammadrafigh) +- Edmundo Meyer - [https://github.com/e-meyer](https://github.com/e-meyer) +- Bujdy - [https://github.com/bujdy](https://github.com/bujdy) +- amannegi - [https://github.com/AmanNegi](https://github.com/AmanNegi) +- Aman Negi - [https://github.com/AmanNegi](https://github.com/AmanNegi) +- Aaliya Ali - [https://github.com/Aaliya-Ali](https://github.com/Aaliya-Ali) +- Aaliya Ali - [https://github.com/Aaliya-Ali](https://github.com/Aaliya-Ali) +- Sandi Milohanic +- Hissabat Manager - [https://github.com/Chinguetti-Quizz](https://github.com/Chinguetti-Quizz) +- Nenza Nurfirmansyah - [https://github.com/nenzan](https://github.com/nenzan) +- Vinod - [https://github.com/skdotv](https://github.com/skdotv) +- Aditya - [https://github.com/adeeteya](https://github.com/adeeteya) +- JustinBenito - [https://github.com/JustinBenito](https://github.com/JustinBenito) +- Florian Schmitz - [https://github.com/floodoo](https://github.com/floodoo) +- avinash - [https://github.com/HeyAvi](https://github.com/HeyAvi) +- Tolu ogundoyin - [https://github.com/Tolu007](https://github.com/Tolu007) +- Daniil Kovalev - [https://github.com/kovdan01](https://github.com/kovdan01) +- Saint Gabriel - [https://github.com/saintgabriel0](https://github.com/saintgabriel0) +- Artem - [https://github.com/defaultpage](https://github.com/defaultpage) +- WMs784 - [https://github.com/WMs784](https://github.com/WMs784) +- KenXRan - [https://github.com/kenxran](https://github.com/kenxran) +- João Goulart - [https://github.com/usehalter](https://github.com/usehalter) +- yaseenagwan - [https://github.com/agwanyaseen](https://github.com/agwanyaseen) +- G. Buendía - [https://github.com/gbuendia](https://github.com/gbuendia) +- Sylvia van Os - [https://github.com/TheLastProject](https://github.com/TheLastProject) +- Debayan Sutradhar - [https://github.com/rnayabed](https://github.com/rnayabed) +- Poussinou - [https://github.com/Poussinou](https://github.com/Poussinou) +- Nikita Epifanov +- Ady - [https://github.com/adyhnat](https://github.com/adyhnat) +- Adrian Halko +- Tomáš Konkoľ - [https://github.com/TomasKonkol](https://github.com/TomasKonkol) +- Marko Milosevic - [https://github.com/TaarnStar](https://github.com/TaarnStar) +- Sandi Milohanić - [https://github.com/sandimilohanic](https://github.com/sandimilohanic) +- AxelBlaz3 - [https://github.com/AxelBlaz3](https://github.com/AxelBlaz3) +- Marvin M - [https://github.com/M123-dev](https://github.com/M123-dev) +- himikat89 - [https://github.com/himikat89](https://github.com/himikat89) +- infiniteoverflow - [https://github.com/infiniteoverflow](https://github.com/infiniteoverflow) +- Tomer Ben Rachel - [https://github.com/TomerPacific](https://github.com/TomerPacific) +- Thilina TCH - [https://github.com/ThilinaTCH](https://github.com/ThilinaTCH) +- Thilina Herath - [https://github.com/thilinatnt](https://github.com/thilinatnt) +- ToldYouThat +- Yair Chen - [https://github.com/chenyair](https://github.com/chenyair) +- henok3878 - [https://github.com/henok3878](https://github.com/henok3878) +- Patrick Witter - [https://github.com/patrickwitter](https://github.com/patrickwitter) +- ton-An - [https://github.com/ton-An](https://github.com/ton-An) +- Prakash Shekhar - [https://github.com/prakash-shekhar](https://github.com/prakash-shekhar) +- Khushbu Bora - [https://github.com/KhushbuBora](https://github.com/KhushbuBora) +- Arun Muralidharan - [https://github.com/arun-muralidharan](https://github.com/arun-muralidharan) +- yiter +- Henio Szewczyk - [https://github.com/hszewczyk](https://github.com/hszewczyk) +- Jannik Norden +- Allan Nordhøy - [https://github.com/comradekingu](https://github.com/comradekingu) +- Stefano Rossi - [https://github.com/stefanorossiti](https://github.com/stefanorossiti) +- Dylan Aird - [https://github.com/Dolaned](https://github.com/Dolaned) ## Translators ### Chinese (Traditional Han script) -- [Peter Dave Hello](https://github.com/PeterDaveHello) - (hsu@peterdavehello.org) +- Peter Dave Hello - [https://github.com/PeterDaveHello](https://github.com/PeterDaveHello) ### Polish -- [Karol Solecki](https://github.com/karolsol) - (karolsol203@gmail.com) -- [Piotr Strebski](https://github.com/strebski) - (strebski@gmail.com) -- Dawid Panyło - (wampir5000@o2.pl) -- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) -- Marcin Schoenknecht - (marcinschoenknecht@gmail.com) -- [Patryk](https://github.com/byakurau) - (byakurau1@gmail.com) -- [Michał Homza](https://github.com/HagiaHaya) - (minefach@gmail.com) -- [Jacob](https://github.com/devzom) - (dev.zomerfeld@gmail.com) +- Karol Solecki - [https://github.com/karolsol](https://github.com/karolsol) +- Piotr Strebski - [https://github.com/strebski](https://github.com/strebski) +- Dawid Panyło +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Marcin Schoenknecht +- Patryk - [https://github.com/byakurau](https://github.com/byakurau) +- Michał Homza - [https://github.com/HagiaHaya](https://github.com/HagiaHaya) +- Jacob - [https://github.com/devzom](https://github.com/devzom) ### Serbian -- [Mladen Trišić](https://github.com/mtrisic) - (mtrisic@gmail.com) +- Mladen Trišić - [https://github.com/mtrisic](https://github.com/mtrisic) ### Dutch -- [Joey Haalboom](https://github.com/JoeyHaalboom) - (jhaalboom13@gmail.com) +- Joey Haalboom - [https://github.com/JoeyHaalboom](https://github.com/JoeyHaalboom) ### Russian -- [Алексей Курышко](https://github.com/alexkuryshko) - (alexkuryshko@gmail.com) -- [lightningcpu](https://github.com/lightningcpu) - (lightningprogramming@proton.me) -- [Кирилл Александрович Злобин](https://github.com/gungstarbeiter) - (gungstarbeiter@gmail.com) -- [Ivan Katkov](https://github.com/Porphyrion) - (lubovdobro@gmail.com) -- Nikita Epifanov - (nikgreens@protonmail.com) +- Алексей Курышко - [https://github.com/alexkuryshko](https://github.com/alexkuryshko) +- lightningcpu - [https://github.com/lightningcpu](https://github.com/lightningcpu) +- Кирилл Александрович Злобин - [https://github.com/gungstarbeiter](https://github.com/gungstarbeiter) +- Ivan Katkov - [https://github.com/Porphyrion](https://github.com/Porphyrion) +- Nikita Epifanov ### Croatian -- [Milo Ivir](https://github.com/milotype) - (mail@milotype.de) -- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) -- [SMilohanic](https://github.com/sandimilohanic) - (sandi.milohanic@gmail.com) +- Milo Ivir - [https://github.com/milotype](https://github.com/milotype) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) +- SMilohanic - [https://github.com/sandimilohanic](https://github.com/sandimilohanic) ### Portuguese -- [Edson Wolf](https://github.com/edsonblwolf) - (edsonwolf@vivaldi.net) -- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) -- Wilton Rodrigues - (wiltonf.rodrigues@gmail.com) -- [Guilherme Salomão](https://github.com/salomaoparkour) - (gmsalomao2@gmail.com) -- [Bruno de Moura](https://github.com/bruunomooura) - (brunomoura0509@hotmail.com) -- Dalton Scavassa - (daltux@users.noreply.hosted.weblate.org) -- [Stefan Taiguara](https://github.com/Teitei011) - (stefantleal14@gmail.com) -- [Eduardo Menges Mattje](https://github.com/EduMenges) - (eduardomattje@gmail.com) -- [Edu Cavalheiro](https://github.com/EduCavalheiro) - (dev@educavalheiro.com) -- [João Goulart](https://github.com/usehalter) - (joaofgoulart1@gmail.com) +- Edson Wolf - [https://github.com/edsonblwolf](https://github.com/edsonblwolf) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Wilton Rodrigues +- Guilherme Salomão - [https://github.com/salomaoparkour](https://github.com/salomaoparkour) +- Bruno de Moura - [https://github.com/bruunomooura](https://github.com/bruunomooura) +- Dalton Scavassa +- Stefan Taiguara - [https://github.com/Teitei011](https://github.com/Teitei011) +- Eduardo Menges Mattje - [https://github.com/EduMenges](https://github.com/EduMenges) +- Edu Cavalheiro - [https://github.com/EduCavalheiro](https://github.com/EduCavalheiro) +- João Goulart - [https://github.com/usehalter](https://github.com/usehalter) ### Italian -- [Antenore Gatta](https://github.com/antenore) - (antenore@simbiosi.org) -- Gab Gat - (draconixdust@gmail.com) -- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) -- [Federico Pierantoni](https://github.com/F3FFO) - (federico.pieranton@gmail.com) -- [oarion](https://github.com/oarion) - (michaelgalati@protonmail.com) -- [Alessandro Faucci](https://github.com/Dhy19971) - (silenzio.canguro@gmail.com) -- Sfizio Purea - (sfizio.purea-0h@icloud.com) -- [Mirko Ferrati](https://github.com/MirkoFerrati) - (mirko8787@gmail.com) -- [Stefano Camillo](https://github.com/djste) - (camilloste@gmail.com) -- [MARCO ACORTE](https://github.com/marco-acorte) - (macorte@gmail.com) -- J. Lavoie - (j.lavoie@net-c.ca) -- DT - (semperpeppe@tracciabi.li) -- mondstern - (mondstern@snopyta.org) -- [Stefano Rossi](https://github.com/stefanorossiti) - (stefanorossi.ti@gmail.com) +- Antenore Gatta - [https://github.com/antenore](https://github.com/antenore) +- Gab Gat +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Federico Pierantoni - [https://github.com/F3FFO](https://github.com/F3FFO) +- oarion - [https://github.com/oarion](https://github.com/oarion) +- Alessandro Faucci - [https://github.com/Dhy19971](https://github.com/Dhy19971) +- Sfizio Purea +- Mirko Ferrati - [https://github.com/MirkoFerrati](https://github.com/MirkoFerrati) +- Stefano Camillo - [https://github.com/djste](https://github.com/djste) +- MARCO ACORTE - [https://github.com/marco-acorte](https://github.com/marco-acorte) +- J. Lavoie +- DT +- mondstern +- Stefano Rossi - [https://github.com/stefanorossiti](https://github.com/stefanorossiti) ### French -- [William](https://github.com/WilliamR312) - (willouxr312@gmail.com) -- [florent4014](https://github.com/florent4014) - (florent.touzet@gmail.com) -- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) -- Xav Basco - (beckscc2010@hotmail.fr) -- [David Olewski](https://github.com/Arigowin) - (david63210@gmail.com) -- [yoyomax80400](https://github.com/yoyomax80400) - (archie.maxime80@gmail.com) -- [loued](https://github.com/Loued) - (loued2@gmail.com) -- Célian - (gallcelian@gmail.com) -- [MrSniikyz](https://github.com/BabyGeek) - (babygeek83bis@gmail.com) -- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) -- J. Lavoie - (j.lavoie@net-c.ca) -- [Antoine Vibien](https://github.com/r1llettes) - (avibien@protonmail.ch) -- [Stefano Rossi](https://github.com/stefanorossiti) - (stefanorossi.ti@gmail.com) +- William - [https://github.com/WilliamR312](https://github.com/WilliamR312) +- florent4014 - [https://github.com/florent4014](https://github.com/florent4014) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Xav Basco +- David Olewski - [https://github.com/Arigowin](https://github.com/Arigowin) +- yoyomax80400 - [https://github.com/yoyomax80400](https://github.com/yoyomax80400) +- loued - [https://github.com/Loued](https://github.com/Loued) +- Célian +- MrSniikyz - [https://github.com/BabyGeek](https://github.com/BabyGeek) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) +- J. Lavoie +- Antoine Vibien - [https://github.com/r1llettes](https://github.com/r1llettes) +- Stefano Rossi - [https://github.com/stefanorossiti](https://github.com/stefanorossiti) ### Ukrainian -- [Максим Горпиніч](https://github.com/Maksim2005UA) - (maksimgorpinic2005a@gmail.com) -- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) -- Максим Горпиніч - (mgorpinic2005@gmail.com) -- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) -- [Dan](https://github.com/Kefir2105) - (jonweblin2205@protonmail.com) -- Dan - (denqwerta@gmail.com) -- Tymofii Lytvynenko - (till.svit@gmail.com) -- [Artem](https://github.com/defaultpage) - (artem@molotov.work) +- Максим Горпиніч - [https://github.com/Maksim2005UA](https://github.com/Maksim2005UA) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) +- Максим Горпиніч +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Dan - [https://github.com/Kefir2105](https://github.com/Kefir2105) +- Dan +- Tymofii Lytvynenko +- Artem - [https://github.com/defaultpage](https://github.com/defaultpage) ### Portuguese (Brazil) -- [Ricardo Lima](https://github.com/rhrlima) - (ricardo.hrlima@gmail.com) -- [Clerton Araujo](https://github.com/clertonraf) - (clertonfilho@gmail.com) -- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) -- Wilton Rodrigues - (wiltonf.rodrigues@gmail.com) -- Nao interessa - (weblate.crafter447@simplelogin.com) -- [Lucas Mezêncio](https://github.com/lucasmezencio) - (lucas.mezencio@gmail.com) -- Felipe Antônio Rodrigues Cardoso - (lipecgk@gmail.com) -- [Luigi Henrick Feitoza Silva](https://github.com/luigihenrick) - (luigihenrick@gmail.com) -- [João Hortêncio Moraes](https://github.com/joaohortencio) - (joaohortencio@gmail.com) +- Ricardo Lima - [https://github.com/rhrlima](https://github.com/rhrlima) +- Clerton Araujo - [https://github.com/clertonraf](https://github.com/clertonraf) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Wilton Rodrigues +- Nao interessa +- Lucas Mezêncio - [https://github.com/lucasmezencio](https://github.com/lucasmezencio) +- Felipe Antônio Rodrigues Cardoso +- Luigi Henrick Feitoza Silva - [https://github.com/luigihenrick](https://github.com/luigihenrick) +- João Hortêncio Moraes - [https://github.com/joaohortencio](https://github.com/joaohortencio) ### Tamil -- [தமிழ்நேரம்](https://github.com/TamilNeram) - (anishprabu.t@gmail.com) +- தமிழ்நேரம் - [https://github.com/TamilNeram](https://github.com/TamilNeram) ### Chinese (Simplified Han script) -- Herb Huang - (Ranger0801@live.com) +- Herb Huang ### Hindi -- [pavan arun bagwe](https://github.com/pavanb0) - (pavanbagwe16@gmail.com) -- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) -- [Debayan Sutradhar](https://github.com/rnayabed) - (debayansutradhar3@gmail.com) +- pavan arun bagwe - [https://github.com/pavanb0](https://github.com/pavanb0) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Debayan Sutradhar - [https://github.com/rnayabed](https://github.com/rnayabed) ### Turkish -- [Oğuz Ersen](https://github.com/oersen) - (oguz@ersen.moe) -- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) -- [Cem Avcı](https://github.com/cem256) - (cemo99@gmail.com) -- Oğuz Ersen - (oguzersen@protonmail.com) -- [Cenk Cidecio](https://github.com/ccidecio) - (ccidecio@icloud.com) -- ToldYouThat - (itoldyouthat@protonmail.com) +- Oğuz Ersen - [https://github.com/oersen](https://github.com/oersen) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) +- Cem Avcı - [https://github.com/cem256](https://github.com/cem256) +- Oğuz Ersen +- Cenk Cidecio - [https://github.com/ccidecio](https://github.com/ccidecio) +- ToldYouThat ### German -- [kvnrmnn](https://github.com/rmnn92) - (kvnrmnn@proton.me) -- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) -- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) -- [Victor Jouhoff](https://github.com/jouhoffv) - (jouhoff@pm.me) -- m4skedbyte - (weblate@m4skedbyte.xyz) -- Axel Steinbrecher - (mail@axelsteinbrecher.de) -- [Christoph Suesser](https://github.com/TheFitzZZ) - (fitzzz@fitzzz.de) -- [Luis Lüscher](https://github.com/lslschr) - (luisricardoluescher@gmail.com) -- mondstern - (mondstern@snopyta.org) -- J. Lavoie - (j.lavoie@net-c.ca) -- [Marvin M](https://github.com/M123-dev) - (marvinmoel05@gmail.com) -- Lydia - (lydia.glaser@gmx.net) -- [Allan Nordhøy](https://github.com/comradekingu) - (epost@anotheragency.no) +- kvnrmnn - [https://github.com/rmnn92](https://github.com/rmnn92) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) +- Victor Jouhoff - [https://github.com/jouhoffv](https://github.com/jouhoffv) +- m4skedbyte +- Axel Steinbrecher +- Christoph Suesser - [https://github.com/TheFitzZZ](https://github.com/TheFitzZZ) +- Luis Lüscher - [https://github.com/lslschr](https://github.com/lslschr) +- mondstern +- J. Lavoie +- Marvin M - [https://github.com/M123-dev](https://github.com/M123-dev) +- Lydia +- Allan Nordhøy - [https://github.com/comradekingu](https://github.com/comradekingu) ### Indonesian -- [aryakdaniswara](https://github.com/aryakdaniswara) - (arya.kdaniswara@gmail.com) -- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) -- Debi Maulana Ahsan Halla - (adeebmawlanaahsan@gmail.com) -- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) +- aryakdaniswara - [https://github.com/aryakdaniswara](https://github.com/aryakdaniswara) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Debi Maulana Ahsan Halla +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) ### Catalan -- [Zixu Sun](https://github.com/ziixu) - (zixu233@gmail.com) -- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) -- [guillem](https://github.com/gbuendia) - (gbuendia@gmx.net) +- Zixu Sun - [https://github.com/ziixu](https://github.com/ziixu) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- guillem - [https://github.com/gbuendia](https://github.com/gbuendia) ### Chinese (Simplified) -- [纪颖志](https://github.com/jiyingzhi) - (jiyingzhi0808@gmail.com) -- [Yi-Han Hsiung](https://github.com/AaronHsiung) - (hsiungyi@oregonstate.edu) -- [Tsz Hong CHAN](https://github.com/tomyan112) - (tomyan112@yahoo.com.hk) -- [Eddie Tang](https://github.com/EDED2314) - (eddietang2314@gmail.com) -- [Jing](https://github.com/jingcheng16) - (cynthiacheng-jing@outlook.com) -- [sr-c](https://github.com/sr-c) - (shuruihao@outlook.com) -- [tony](https://github.com/tonyxxliu) - (tony198586@hotmail.com) -- yiter - (fupingren@gmail.com) +- 纪颖志 - [https://github.com/jiyingzhi](https://github.com/jiyingzhi) +- Yi-Han Hsiung - [https://github.com/AaronHsiung](https://github.com/AaronHsiung) +- Tsz Hong CHAN - [https://github.com/tomyan112](https://github.com/tomyan112) +- Eddie Tang - [https://github.com/EDED2314](https://github.com/EDED2314) +- Jing - [https://github.com/jingcheng16](https://github.com/jingcheng16) +- sr-c - [https://github.com/sr-c](https://github.com/sr-c) +- tony - [https://github.com/tonyxxliu](https://github.com/tonyxxliu) +- yiter ### Greek -- Dimitrys Meliates - (demetresmeliates@gmail.com) -- [Antonis-geo](https://github.com/Antonis-geo) - (antgeoath@csd.auth.gr) +- Dimitrys Meliates +- Antonis-geo - [https://github.com/Antonis-geo](https://github.com/Antonis-geo) ### Czech -- [Fjuro](https://github.com/Fjuro) - (fjuro@alius.cz) -- Fjuro - (ifjuro@proton.me) -- [CaptainDolphy](https://github.com/CaptainDolphy) - (captain.x.dolphy@gmail.com) -- [Roman Kalivoda](https://github.com/RKCZ) - (kalivodaroman@gmail.com) +- Fjuro - [https://github.com/Fjuro](https://github.com/Fjuro) +- Fjuro +- CaptainDolphy - [https://github.com/CaptainDolphy](https://github.com/CaptainDolphy) +- Roman Kalivoda - [https://github.com/RKCZ](https://github.com/RKCZ) ### Arabic -- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) -- [Hanaa](https://github.com/hn-n) - (hanaa_yl@hotmail.com) -- [Ahmed zein](https://github.com/Ahmed-Zein) - (ahmedzein3652@gmail.com) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Hanaa - [https://github.com/hn-n](https://github.com/hn-n) +- Ahmed zein - [https://github.com/Ahmed-Zein](https://github.com/Ahmed-Zein) ### Hebrew -- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) -- n,rdo - (ifhiwy0kjc@gonetor.com) -- [Tomer Ben Rachel](https://github.com/TomerPacific) - (tomerpacific@gmail.com) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- n,rdo +- Tomer Ben Rachel - [https://github.com/TomerPacific](https://github.com/TomerPacific) ### Japanese -- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) -- [Tsz Hong CHAN](https://github.com/tomyan112) - (tomyan112@yahoo.com.hk) -- [sasukeiscool](https://github.com/sasukeiscool) - (jaflagasd@gmail.com) -- yiter - (fupingren@gmail.com) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Tsz Hong CHAN - [https://github.com/tomyan112](https://github.com/tomyan112) +- sasukeiscool - [https://github.com/sasukeiscool](https://github.com/sasukeiscool) +- yiter ### Spanish -- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) -- [Roberto Iglesias](https://github.com/iglesiasroberto14) - (iglesiasroberto14@gmail.com) -- c06c3abb8f - (c06c3abb8f@mymaily.lol) -- [Javier](https://github.com/dysk0zero) - (javiroldan98@gmail.com) -- [facu-d](https://github.com/facu-d) - (facundo@durigon.com.ar) -- [Biologia Libros](https://github.com/bio201922) - (biologialibros2019@gmail.com) -- [guillem](https://github.com/gbuendia) - (gbuendia@gmx.net) -- [Chris Klempau](https://github.com/yoinkers1337) - (piroflam2@gmail.com) -- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) -- [martingetzel](https://github.com/martingetzel) - (martingetzel@gmail.com) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Roberto Iglesias - [https://github.com/iglesiasroberto14](https://github.com/iglesiasroberto14) +- c06c3abb8f +- Javier - [https://github.com/dysk0zero](https://github.com/dysk0zero) +- facu-d - [https://github.com/facu-d](https://github.com/facu-d) +- Biologia Libros - [https://github.com/bio201922](https://github.com/bio201922) +- guillem - [https://github.com/gbuendia](https://github.com/gbuendia) +- Chris Klempau - [https://github.com/yoinkers1337](https://github.com/yoinkers1337) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) +- martingetzel - [https://github.com/martingetzel](https://github.com/martingetzel) ### Chinese (Traditional) -- hugoalh - (hugoalh@users.noreply.hosted.weblate.org) -- [Tsz Hong CHAN](https://github.com/tomyan112) - (tomyan112@yahoo.com.hk) -- [Chung-Wei Chung](https://github.com/webb790709) - (webb790709@proton.me) -- HY Cheng - (corum_apfil@simplelogin.com) +- hugoalh +- Tsz Hong CHAN - [https://github.com/tomyan112](https://github.com/tomyan112) +- Chung-Wei Chung - [https://github.com/webb790709](https://github.com/webb790709) +- HY Cheng ### Portuguese (Portugal) -- [Anonymous](https://github.com/weblate) - (noreply@weblate.org) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) ### Romanian -- [Bogdan Bujor](https://github.com/qSharpy) - (bogdan.bujor08@gmail.com) -- [dimii27](https://github.com/dimii27) - (dimitrieietcu@gmail.com) +- Bogdan Bujor - [https://github.com/qSharpy](https://github.com/qSharpy) +- dimii27 - [https://github.com/dimii27](https://github.com/dimii27) ### English -- [guillem](https://github.com/gbuendia) - (gbuendia@gmx.net) -- [Allan Nordhøy](https://github.com/comradekingu) - (epost@anotheragency.no) -- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) +- guillem - [https://github.com/gbuendia](https://github.com/gbuendia) +- Allan Nordhøy - [https://github.com/comradekingu](https://github.com/comradekingu) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) ### Norwegian Bokmål -- [Roland Geider](https://github.com/rolandgeider) - (roland@geider.net) -- [Allan Nordhøy](https://github.com/comradekingu) - (epost@anotheragency.no) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) +- Allan Nordhøy - [https://github.com/comradekingu](https://github.com/comradekingu) ### Amharic -- [henok3878](https://github.com/henok3878) - (henokwondimu3878@gmail.com) +- henok3878 - [https://github.com/henok3878](https://github.com/henok3878) From 94cef0278ced3e19aee23a9873e487314ce388ba Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Fri, 28 Mar 2025 16:08:44 +0100 Subject: [PATCH 23/24] update goldens --- .../goldens/routine_logs_screen_detail.png | Bin 179200 -> 179637 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/workout/goldens/routine_logs_screen_detail.png b/test/workout/goldens/routine_logs_screen_detail.png index f98c391246fd51dd00e98737cc16caab4424781e..d4d99068de368fa0a9137db7a431f2a7e5085d5a 100644 GIT binary patch delta 19243 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 wE=cr_RqkRqw*j}+T`W`0aPFo3;+NC delta 17854 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

FtXrU6^AuAd`^bRIVB_ z7tA^Z5mCA^&<}uiGHqznp_K@l(Pl;2@y58^Dv#A{%%Fp~UJU>J`H#igIFi5*S2CBk zPH3FuqYs^leTy#L`jJrpPVm{6ZQZug+R5uWjBI{rpIC%~=eM*@+LVj=Ju*vq8MeHz zx*EDV>seLiGi0ZlhI~xNa-lx{tDS)Yj>Qjo4oC;%=jks`1Dl^rdb0Uw?4L*pzV|R zFc`9ob{pB+7<0u~$f>o0rjyX6!}yQ%TquE0D~3l+nRwOys^`*p&fq7(JT>bQ3-Q1c zjTQy@Zt62U@)B@oXCLFwro=crQ2kLLALd;+Du7G3Cku41C@bhM+&6X6e(hQ#nYOap z-WntSBRrf5CvKrZlnkZtvimmuty0)P- z2@mV#P8OP0%kR&JSFawhHDe@T0BB>ulfD;$WO1LB^=iUMn0P&>*9G)7RTCi*+@M#0 z23Dyz8z$hdoKfr5i_wX)2Tb}!2KOconkBYYGI5)GOwM!9mD$odlUy=W#1LavJRJX3TZdxwX#G0_rPA;Asc_vt! zi!Dav`XRbwFs|SCt%k+iuLrl ziqirHT{1tAuyjD;u6<|v9#hR9(zGqRS!$4Hq+4~9!!5YsN*Se5bN$qIwnhKa`)`zx zd57YGe$b5QTN%tXwb{4)f(PR?1|_#CW(6NS3Ybh^0Lk4C^meB=*PcL-ReluUXPq53 zdZ24IcX@EM914bEf4PLCAKJ$v)lu6^;tmNaUJQ`0ibEzyFq%oTfO%u8VajIOTC=_? zu^Ej(hJ?#|b}M_V49#A5ci^M%@yAVMHOu<4t6~Dy6!yO5WN8@YgM?-U11f|$PWiBK zWbGa!3*fSI{w#}qk%9Zpqu@iDWwVVDKXn`|88-GevF7FGs!h}^GX*(@%dbDFN#uiA zNOfM~Y;)V-OutPna}CAV>yKSN%i`=p4Lts5aWRT`n))rMZu!)qE zHIN%{Fr3vK|CT)X^qr5EZf#&RBO-FwYh@hBQDMKp*2&FUd+iG38*Nl=xwzP>wufWc z6~E}I_OAV6wS0q`JG}JB@8GKfCia%|Eiga=bxd^RJ`jaOu!0__o^gfPICqm-k=^<; zj^Yu_ii@`H{dB%?3Ar%EtHTD^f=5;PpW}@a%8IPguAZNYGyqeO-`r&nSRJ#+KLHxX z<4omWE=SnT1)l2Zbr{bBCFurQrvES~)z%J=^?f0jb9bYHA!&d{>p(^hJ%fO@wRCer zs2&45J#1TBBTlcwwPbf`VSb;LbbLCVQyU>lBFNsGu3Fz=;2!HiUm(cs3@bJD8Q(v;aEmxgw`J# z|5gKf%g^s+HTAe}4=n&JN%SrFq)b24f(a9kCOv3&O3Lj>-3Jd+SI4lh_791JOgYOeEY*ui zsHrJ?B>FBwzaYNYhvYKNKDG&%FXlxvvjKB))C-Fe<1+k{y;I@R<3a^v<&LeLXD_=M zhzJEv%gmhd7OYi?;nVUn&O^cvg4y)u+Py9$+t@ICRsj^jztwlvY?QMaj4PP3KEgik z>}EZE8G9LWPX!FIii07pQ0JCyEBoolUV;XEqLTNZIF_A`A^NM?Y! zm`KU!u&u!_kz~9H#+jfQJ2eFc)rS+yRQ0GK^B~8xKv+DY*@zz>e@e!~^*^jJmylcM z_yGm$N`YWBF>^+CxW>Ok+|gf48jK}1fXDyMfJyN4*d)j|X8KS))(Yj4&{>=5$Y?2> zT_Z`B6P@%ZKUgjTnNV&Ns5>>ma}O00L+`&ejL<9bE@5w3+*&wb+rQry%dh?HCx-pz}`l5ECzELDQn<0<`TPs#b!qS$Xn+gjHvy~JK zJooMqOC+;Bloy{X*b*tib(5YPfqMkiXZfHAct{m7e-ohXuMCq@}SKkKep`BIw0!<~EmNtmD9;QnL|H^}+Oga)qKKl)tXtfE+3cTh_jE+@8r z7XQ3?{U-H8tmWagH%TCW$+U5E+OV%c8gNppEJx`tDiHO}BmS^vPiL>cZ zpTxWpbu#h0<_q{b`8MMBYpU&+u+;Mq)3UE zuRh(^cheTOJ(xN=FT8*NH3L*Qk5k2Bmb|axs>9%A)#|0t*z3&o!$oNwfKZaOms7U~B+h$jdKxTO zD5zl@=g0qi8RSSHK2eqR3IHBp$>0x>d7X(IhWYD`3Y{XX#_JIkFmvIT_T`$n1-eDh zbRw}F@~x~QLv>`aLVXxFjc&K=DQ;@R2|7m`p_tybmA&r}(AbrPTxLn%8(w&PF%~{g zeM))E3$%Fy%m<#PxRKn-9DGor1jdQii$cMfOA<@aX&9cpMY6TbYmTt;Bet;lCl-H>rSN+9I$hiuP@-Ik z*gE+>f9ic9IrKsZa;~8h7Sa3A&8oAjW4QX{wkY89vn6>kD8cznc=GRJg&P3~C>Ue) z_xG>fN~o9@1n~BLBMLbA>}yo=X5DUVK3`MTA^jqq2ZnI;=8dYcsfkwyTQ6rRr#M3C zwW{eMBEkIa3Q|>G6Fe9@^BeDb^j*J@A70A6{Fuz)A?QHJ11m-WSb{QoTdn#n2J6C&FGM`SD z=IbMP)C@J5Zp~b*PEYO};OE!@3efUDB;L3cE1Otyj3j_^mhB%YHHsxR-Hj$NBNkA!+7tLH*ov?MVb}ZA zda`-Z+(AcSTBu@!os$Sz;S4R7g+7xEti$+VP2Bhh6jUA9udhp5C+6E1R2z9RE#{Ek zx&eBFE44&9!fKj)s56R?FwvhSx0~}macYg4ITH*J$;ch-IabVN#KIXph>j!W^Fhc7 zi$TwsdFuF{d$1GN+QI3Gx|FAZOTUKjgHTm7ucTXwx5yc%+ z{6LDin^UD)4D-~9;O{}W2SyVX>28%&f!?5}Ut2Lfc6*t?Z*(7h3v1Px5Q*Kw;c~#d ztDNT`3s180E!z5TH^5?wNW*4)^)O4B-Legf2QjRG%5mI;22Q3O8A1_iS+=pnaBF68 zq#8QnNoCaCXEhMQ!5i#B_L1lF{rhFoK>0%ALPZ}Nvq85Qs3KotIs0XqAm707yS~%* zE$bXGfB#mDDcGZeF)t0FV7yq)SpF7wM{j8Kh9Tbx;nlUFjo92zj)ZGxfU;Zhr1u$^6szVR-(8JBCINy{sp&=2%M)_Rg< zQ`ttnoc;E9vGQ4<1#P0?%Q=2Fqwv#x&Dk}H>`|wR!?3c{)|*b1$o+u24yjdU*yb*U z$G!_DCok`wI6?!w9(}gTpdLg8>g*CX(@S}wazIL$+(LG`{I$RjZ6?|Urpm!!<%@US zlc%F>_*bG_LW~9ZIs;I^S#!7Q8M3C}duDr(C6yz#E!r2CzkuHE*AB<}&FHwY+Mj!+ zBrP=!tYvW{g}L<+OBp&enUIL8XDOe+4E8I*)0b77UX~nI9w`reAxhr|6WO*)kBMPH ziR(^6k-86c&7NGOfP8S0D#!x{h9o$+<+h_{N?VcjVHwx@038_ z<}kCKhG_im{e9X!$L^rv5tvzU?*sF!{38`y^u9#7?o=>_8q#D&gDxL-6rZ*Tul=Y8 zroi`}`;)(HBqzi7(agOAHOeSPEfSNMp{EXQvzrc}zcpiMP^H2oUYn-kKG6oIt7?6) zV*o;^4!FNtb;=br8p554MvoJ4?-QRFG(PauFQ18RXTvgsna5~aI(z5ETTnzb%)@Tc zVIc3BA((svOAE45S;k<@CnyjBx>$NjeeeA|Z$1!h&2D< z|6YaQi{ zxcHbtb8tCX)4<$2?i`oYB?^S-A}2Li+88LRQ<8r@#S(GBW-Ijn#|jbhQ^flfAi?h^%~bFjvsP#AL!&!rP`; z31emPTzh1`g58rw@_v`z-UVDs+{)~R>>7&;ArZDTqT~WFxxI5x^=c&m`Nv?%0Q*cfG?(ajSga({P>BPL~hhpQIuRR(RUAb zm^@usFblzb~*#+X4K*P zju;&&Q1=-(U{5U&1RQ%Of+hO0aj|t#vo#_XF6U%a$^>EQqt4@>Y}65{vLuEdsSHD{ zTYj>#GM}lf6?SZZM*e!}8vz!LswfoM26Q@GEBMQRk#o>ee}M$czd;IZRhE=GwM&6j zC7_hcKE)aV?~@ad)1fgg%cmk-GVy2+KG4&o!}5q`SrmX(?Dgq%4D@X!-D&(I5^b}% zx2U=%v#z`bGk)Vr(aGsN@Ivk9lUGTo=*uok^BA?SZk)VtX$XdV1vGZtAT3~78U%9J z{d>IF-jEiMDKY*8h9u%C9R~|# zsn3Kfa9#d~J9AC*pq^S}9{o@(f70le$+b$fah%=;@9sxtvXF?~CC^}eL1X@8Ffdm8c42-!M{p3x zQeo%ezMjy2J+?7pX^FX=_XA?|qYUUr1ipDxWMEk`WKl8n%l&3_R3akv*;Tqm%Emue0&#rFn zWps5ynG~3Zs}a6T78-#8)fb)~iBCQjgMs?;-Kh#x*e+oKm{i&tb%T?K+`AI0#8F2q z%NrUxyL4R2UjOax>EEpsJq=q=Ju*)hcHah5#@WOwhF_A4qJSi|v?3T>HY_f-aH*oD z2u?=_D8(Dojo0Ya*6k-=m0oBU@V@BVN7?{Atm-{{mX!a%yIPuKKVAlB*ked*Qv_+H-O`sXLBT1tpB6vA+U}_^gXR^KhG9dJ_IYL*)0fl;R%0XdR(4u$iiTkUx{CHIC)(0K-gm$pjn`Fp3v4!|=k@cIvKSkQsg1k}q=gI(B zn0~>6pXdGTH8%18s`|VCG@!fB3h8;Z4Xxe0FI5Y*xR151^D_eBKS=Iwg7 z%Hd1E{cBfJ!8mbU%6~KT?Qhf}I+lr^Axl_Z5Q2gMGu8CNy;FZx&MzNTk(=^_Hl}eg@zYTIszK{p=OOwt%Rt$je87$-FKdrx>U6O-h(CCkH!1Fx}2!+|`Pc*|W8vY*c! zQ}3NgvCZYVhyre(S%<2e(Jc!7oO@gQWu;+mh4_%cF4uMff%s))DVoc6INi*%qwiJLjvlTQY+C-n8~*HCeyuQeSZGuphw)F~#u6ufLlkCe(%9@%0_o*-l@XAS}=AjEZ=7{$4W>rtuq; zjpH>;+UiTBA}zVM){u@=vafhGdb6p<`VVGM8v#qh@oV5;fVd8El|q=%09SGgkXz+O znc&z6x7}rN4&x%f2b*gBbJ$#lY93CIFk9e-zimz|0uj_~GTW3Ra(1or)_ufX_&st^ znmAKhSLF&{meFcycOskj>7UNf*{(AT+tXY*hPt39{$ z)%U2AY)SPueV_<<<;5OBG;MoJ4u~YzOIOKifasNqt+K`@9cew^_(Rzm+=`FV5hnap z2ej)R3$JoZ-?5!Q&*6vRiX&gwj~ST6dC0)+AimJ1Rf7FDVx#OY6{^>vq)Kn#AIS0moAU@QR8Bua?IiGp0M`{)-qB|9606G_<>BNPT%k1OkI=+ zkd>0d&%bh&T$TLIhqbRXz#-b<@5>~dzchFqNXDRv$>-ax#@)*E2veMCi|X(JAtTFSk{nAk;EcvNZ0=Tl?~{2_(H;is$Nz- zvEH=$#{aEJ&7Xtu?Oj^(mt6Gf+WESv{e3LK+iW35(0of=-T?IHa#w<|uo!EG8FxqG zo<-Y%(-C+G({ zFHE}*BduaAg?)fo{n4aKni98?cb4t1Ud^p6IJM0FMjiwkh&o$1C?2XF>ayPY(jW)v zupYwKoYibT*$4f(gz3C%T;_O;||kFyZdwbZ#?TbnRONh_ zH!wDa$rpI^r`A;fJ&RP7Y;O|MoRMsTd>zh{PA}(Ha+}PbE4bJYKXXNo6QYyggRNyp z`vP_Nn(0Y{(ovA@Ax${8g8reQvW!Kk+(d1@7?5|0iVl0^pP%EwZ1?IdcTab@A7;k{ zQMp#1Ivo@oWd6kF=KOF24CuIuTCEBWqUIbsItSoDqm0UzZa-4ujN?L^eYNUBUS*d< z-TwP`!g;{7$Q;Zig-b9~Q<rgYtj$lsE9686qjJ^qhKo5hMvw6RHelmVClKpm#i? z@Dd3%pWktmp%c5%i@T%S2xQ`#+L`P3=VRNJHJ~B$uoqx$ZaCE-FGdXk8 zKt`14i_Nc;4ZzD;)0zRFkn(cdUv#u{blHCXXEy45^M&jy<|BBi*lu3XTcbyNKU|{>S8RimcHFeuDi-**S4uCF)dk|&GR(YskQn3 zgjo?c5tpfarYfi3J*D83!1gnRgXev!eShvmU1LgmA|@ryc;2u8bqwuCz)6Fpizoa~ zXfG}p$rm8|&3!zt4`>|!`>{MJpXd9IumXS*gQdV$IsSX(+TUYY>&HdJMCjDpLKiV7 z{GWqLpu*iTM|b$~=(l+OiPOh0@~?vYzl*s$)v>d@H5Jb4*!=E2?dmfeiFtdx@^^AlKBIzuz0f41&OMj3p;ziqLH{4~`d$g~A3`LY zYKkU(8xm)t09XU&_+-yLy$J+Lr%#PWpM%BF7-IpwuY~<%ho5E$}pqZ0_Gl`6rz6oOaXK zC=A#-A^ZN{-K||dY2bh`g7P2gS5Ru2=LT)~_&StpO@P%LgO^;fYM`*DX7$qqQ!|H! r*;$WA9n;ygjl4ah0$M|=Mne1W Date: Fri, 28 Mar 2025 12:53:56 +0100 Subject: [PATCH 24/24] Replace WEIGHT_UNIT_KG_ID No need to have two constants for the same thing --- lib/helpers/consts.dart | 3 --- lib/models/workouts/slot_entry.dart | 2 +- lib/providers/routines.dart | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/helpers/consts.dart b/lib/helpers/consts.dart index db66b4f8..bdce093d 100644 --- a/lib/helpers/consts.dart +++ b/lib/helpers/consts.dart @@ -34,9 +34,6 @@ const TESTSERVER_PASSWORD = 'flutteruser'; /// Keys used in the android manifest const MANIFEST_KEY_CHECK_UPDATE = 'wger.check_min_app_version'; -/// Default weight unit is "kg" -const WEIGHT_UNIT_KG_ID = 1; - /// Default impression for a workout session (neutral) const DEFAULT_IMPRESSION = 2; diff --git a/lib/models/workouts/slot_entry.dart b/lib/models/workouts/slot_entry.dart index c613991f..3ae871a2 100644 --- a/lib/models/workouts/slot_entry.dart +++ b/lib/models/workouts/slot_entry.dart @@ -173,7 +173,7 @@ class SlotEntry { this.type = type ?? 'normal'; exerciseObj = exercise; exerciseId = exercise.id!; - this.weightUnitId = weightUnitId ?? WEIGHT_UNIT_KG_ID; + this.weightUnitId = weightUnitId ?? WEIGHT_UNIT_KG; this.weightRounding = weightRounding ?? 2.5; this.repetitionUnitId = repetitionUnitId ?? REP_UNIT_REPETITIONS_ID; diff --git a/lib/providers/routines.dart b/lib/providers/routines.dart index cd0cc06b..4b02f9cb 100644 --- a/lib/providers/routines.dart +++ b/lib/providers/routines.dart @@ -105,7 +105,7 @@ class RoutinesProvider with ChangeNotifier { /// Return the default weight unit (kg) WeightUnit get defaultWeightUnit { - return _weightUnits.firstWhere((element) => element.id == WEIGHT_UNIT_KG_ID); + return _weightUnits.firstWhere((element) => element.id == WEIGHT_UNIT_KG); } WeightUnit findWeightUnitById(int id) => _weightUnits.firstWhere((element) => element.id == id);