From 5e2e44d6d9978a8b569a46c231110e862acda333 Mon Sep 17 00:00:00 2001 From: Robert-Stackflow Date: Sun, 8 Sep 2024 00:29:40 +0800 Subject: [PATCH] Support biometric storage --- devtools_options.yaml | 3 + lib/Database/database_manager.dart | 5 + lib/Screens/Lock/database_decrypt_screen.dart | 128 +++-- lib/Screens/Lock/pin_change_screen.dart | 44 +- lib/Screens/Lock/pin_verify_screen.dart | 99 ++-- lib/Screens/Setting/backup_log_screen.dart | 43 +- lib/Screens/Setting/setting_safe_screen.dart | 412 ++++++++------- lib/Screens/Setting/update_screen.dart | 15 +- lib/Screens/Token/add_token_screen.dart | 2 + lib/Screens/home_screen.dart | 4 +- lib/Screens/main_screen.dart | 85 ++- lib/TokenUtils/export_token_util.dart | 1 - lib/Utils/app_provider.dart | 90 +++- lib/Utils/biometric_util.dart | 75 ++- lib/Utils/constant.dart | 9 +- lib/Utils/file_util.dart | 60 +++ lib/Utils/hive_util.dart | 26 +- lib/Utils/responsive_util.dart | 15 - lib/Utils/utils.dart | 17 +- lib/Widgets/BottomSheet/add_bottom_sheet.dart | 2 +- .../BottomSheet/list_bottom_sheet.dart | 2 +- lib/Widgets/Custom/keyboard_handler.dart | 2 +- lib/Widgets/Dialog/custom_dialog.dart | 28 +- lib/Widgets/Dialog/dialog_builder.dart | 4 +- .../Dialog/widgets/qrcodes_dialog_widget.dart | 8 +- lib/Widgets/Item/item_builder.dart | 7 +- lib/l10n/intl_en.arb | 37 +- lib/l10n/intl_zh_CN.arb | 23 +- lib/main.dart | 7 +- pubspec.lock | 9 +- pubspec.yaml | 5 +- third-party/biometric_storage/CHANGELOG.md | 263 +++++++++ third-party/biometric_storage/LICENSE | 21 + third-party/biometric_storage/README.md | 117 ++++ .../biometric_storage/analysis_options.yaml | 19 + .../biometric_storage/android/build.gradle | 63 +++ .../android/gradle.properties | 1 + .../biometric_storage/android/proguard.pro | 0 .../biometric_storage/android/settings.gradle | 1 + .../android/src/main/AndroidManifest.xml | 7 + .../biometric_storage/BiometricStorageFile.kt | 147 ++++++ .../BiometricStoragePlugin.kt | 450 ++++++++++++++++ .../biometric_storage/CryptographyManager.kt | 183 +++++++ .../biometric_storage/doc/screenshot_ios.png | Bin 0 -> 563005 bytes .../ios/Classes/BiometricStorageImpl.swift | 349 ++++++++++++ .../ios/Classes/BiometricStoragePlugin.h | 4 + .../ios/Classes/BiometricStoragePlugin.m | 8 + .../Classes/SwiftBiometricStoragePlugin.swift | 18 + .../ios/biometric_storage.podspec | 25 + .../lib/biometric_storage.dart | 3 + .../lib/src/biometric_storage.dart | 499 ++++++++++++++++++ .../lib/src/biometric_storage_web.dart | 60 +++ .../lib/src/biometric_storage_win32.dart | 133 +++++ .../lib/src/biometric_storage_win32_fake.dart | 1 + .../biometric_storage/linux/CMakeLists.txt | 29 + .../linux/biometric_storage_plugin.cc | 217 ++++++++ .../biometric_storage_plugin.h | 27 + .../macos/Classes/BiometricStorageImpl.swift | 349 ++++++++++++ .../Classes/BiometricStorageMacOSPlugin.swift | 20 + .../Classes/BiometricStoragePlugin.swift | 19 + .../macos/biometric_storage.podspec | 22 + third-party/biometric_storage/pubspec.yaml | 64 +++ .../test/biometric_storage_test.dart | 29 + tools/CloudOTP.iss | 7 +- 64 files changed, 3921 insertions(+), 501 deletions(-) create mode 100644 devtools_options.yaml create mode 100644 third-party/biometric_storage/CHANGELOG.md create mode 100644 third-party/biometric_storage/LICENSE create mode 100644 third-party/biometric_storage/README.md create mode 100644 third-party/biometric_storage/analysis_options.yaml create mode 100644 third-party/biometric_storage/android/build.gradle create mode 100644 third-party/biometric_storage/android/gradle.properties create mode 100644 third-party/biometric_storage/android/proguard.pro create mode 100644 third-party/biometric_storage/android/settings.gradle create mode 100644 third-party/biometric_storage/android/src/main/AndroidManifest.xml create mode 100644 third-party/biometric_storage/android/src/main/kotlin/design/codeux/biometric_storage/BiometricStorageFile.kt create mode 100644 third-party/biometric_storage/android/src/main/kotlin/design/codeux/biometric_storage/BiometricStoragePlugin.kt create mode 100644 third-party/biometric_storage/android/src/main/kotlin/design/codeux/biometric_storage/CryptographyManager.kt create mode 100644 third-party/biometric_storage/doc/screenshot_ios.png create mode 100644 third-party/biometric_storage/ios/Classes/BiometricStorageImpl.swift create mode 100644 third-party/biometric_storage/ios/Classes/BiometricStoragePlugin.h create mode 100644 third-party/biometric_storage/ios/Classes/BiometricStoragePlugin.m create mode 100644 third-party/biometric_storage/ios/Classes/SwiftBiometricStoragePlugin.swift create mode 100644 third-party/biometric_storage/ios/biometric_storage.podspec create mode 100644 third-party/biometric_storage/lib/biometric_storage.dart create mode 100644 third-party/biometric_storage/lib/src/biometric_storage.dart create mode 100644 third-party/biometric_storage/lib/src/biometric_storage_web.dart create mode 100644 third-party/biometric_storage/lib/src/biometric_storage_win32.dart create mode 100644 third-party/biometric_storage/lib/src/biometric_storage_win32_fake.dart create mode 100644 third-party/biometric_storage/linux/CMakeLists.txt create mode 100644 third-party/biometric_storage/linux/biometric_storage_plugin.cc create mode 100644 third-party/biometric_storage/linux/include/biometric_storage/biometric_storage_plugin.h create mode 100644 third-party/biometric_storage/macos/Classes/BiometricStorageImpl.swift create mode 100644 third-party/biometric_storage/macos/Classes/BiometricStorageMacOSPlugin.swift create mode 100644 third-party/biometric_storage/macos/Classes/BiometricStoragePlugin.swift create mode 100644 third-party/biometric_storage/macos/biometric_storage.podspec create mode 100644 third-party/biometric_storage/pubspec.yaml create mode 100644 third-party/biometric_storage/test/biometric_storage_test.dart diff --git a/devtools_options.yaml b/devtools_options.yaml new file mode 100644 index 00000000..fa0b357c --- /dev/null +++ b/devtools_options.yaml @@ -0,0 +1,3 @@ +description: This file stores settings for Dart & Flutter DevTools. +documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states +extensions: diff --git a/lib/Database/database_manager.dart b/lib/Database/database_manager.dart index abcdff4c..66f6aa95 100644 --- a/lib/Database/database_manager.dart +++ b/lib/Database/database_manager.dart @@ -45,6 +45,11 @@ class DatabaseManager { return _database!; } + static resetDatabase() async { + await _database?.close(); + _database = null; + } + static Future initDataBase(String password) async { if (_database == null) { appProvider.currentDatabasePassword = password; diff --git a/lib/Screens/Lock/database_decrypt_screen.dart b/lib/Screens/Lock/database_decrypt_screen.dart index 9a6fe89e..cbc75a42 100644 --- a/lib/Screens/Lock/database_decrypt_screen.dart +++ b/lib/Screens/Lock/database_decrypt_screen.dart @@ -1,15 +1,17 @@ import 'dart:math'; +import 'package:biometric_storage/biometric_storage.dart'; import 'package:cloudotp/Resources/theme.dart'; +import 'package:cloudotp/Utils/itoast.dart'; import 'package:cloudotp/Utils/route_util.dart'; import 'package:cloudotp/Widgets/Dialog/custom_dialog.dart'; import 'package:cloudotp/Widgets/Item/item_builder.dart'; import 'package:cloudotp/Widgets/Scaffold/my_scaffold.dart'; import 'package:flutter/material.dart'; -import 'package:local_auth/local_auth.dart'; import 'package:window_manager/window_manager.dart'; import '../../Database/database_manager.dart'; +import '../../Utils/app_provider.dart'; import '../../Utils/biometric_util.dart'; import '../../Utils/constant.dart'; import '../../Utils/hive_util.dart'; @@ -34,27 +36,69 @@ class DatabaseDecryptScreenState extends State GlobalKey formKey = GlobalKey(); bool _isMaximized = false; bool _isStayOnTop = false; - bool _biometricAvailable = false; - final bool _enableDatabaseBiometric = HiveUtil.getBool( - HiveUtil.enableDatabaseBiometricKey, - defaultValue: false); + bool _isValidated = true; + final bool _allowDatabaseBiometric = + HiveUtil.getBool(HiveUtil.allowDatabaseBiometricKey, defaultValue: false); + String? canAuthenticateResponseString; + CanAuthenticateResponse? canAuthenticateResponse; + + bool get _biometricAvailable => canAuthenticateResponse?.isSuccess ?? false; auth() async { - String? password = await BiometricUtil.getDatabasePassword(); - if (password != null && password.isNotEmpty) { - validateAsyncController.controller.text = password; - onSubmit(); + try { + canAuthenticateResponse = await BiometricUtil.canAuthenticate(); + canAuthenticateResponseString = + await BiometricUtil.getCanAuthenticateResponseString(); + if (canAuthenticateResponse == CanAuthenticateResponse.success) { + String? password = await BiometricUtil.getDatabasePassword(); + if (password == null) { + setState(() { + _isValidated = false; + HiveUtil.put(HiveUtil.allowDatabaseBiometricKey, false); + }); + IToast.showTop(S.current.biometricChanged); + FocusScope.of(context).requestFocus(_focusNode); + } + if (password != null && password.isNotEmpty) { + validateAsyncController.controller.text = password; + onSubmit(); + } + } else { + IToast.showTop(canAuthenticateResponseString ?? ""); + } + } catch (e, t) { + ILogger.error("Failed to authenticate with biometric", e, t); + if (e is AuthException) { + switch (e.code) { + case AuthExceptionCode.userCanceled: + IToast.showTop(S.current.biometricUserCanceled); + break; + case AuthExceptionCode.timeout: + IToast.showTop(S.current.biometricTimeout); + break; + case AuthExceptionCode.unknown: + IToast.showTop(S.current.biometricLockout); + break; + case AuthExceptionCode.canceled: + default: + IToast.showTop(S.current.biometricError); + break; + } + } else { + IToast.showTop(S.current.biometricError); + } } } initBiometricAuthentication() async { - LocalAuthentication localAuth = LocalAuthentication(); - bool available = await localAuth.canCheckBiometrics; - setState(() { - _biometricAvailable = available; - }); - if (_biometricAvailable && _enableDatabaseBiometric) { + canAuthenticateResponse = await BiometricUtil.canAuthenticate(); + canAuthenticateResponseString = + await BiometricUtil.getCanAuthenticateResponseString(); + setState(() {}); + if (_biometricAvailable && _allowDatabaseBiometric) { auth(); + } else { + FocusScope.of(context).requestFocus(_focusNode); } } @@ -95,9 +139,6 @@ class DatabaseDecryptScreenState extends State super.initState(); initBiometricAuthentication(); windowManager.addListener(this); - Future.delayed(const Duration(milliseconds: 200), () { - FocusScope.of(context).requestFocus(_focusNode); - }); validateAsyncController = InputValidateAsyncController( listen: false, validator: (text) async { @@ -164,7 +205,8 @@ class DatabaseDecryptScreenState extends State if (isValidAsync) { if (DatabaseManager.initialized) { Navigator.of(context).pushReplacement(RouteUtil.getFadeRoute( - ItemBuilder.buildContextMenuOverlay(const MainScreen()))); + ItemBuilder.buildContextMenuOverlay( + MainScreen(key: mainScreenKey)))); } } else { _focusNode.requestFocus(); @@ -215,33 +257,31 @@ class DatabaseDecryptScreenState extends State ), ), const SizedBox(height: 30), - ItemBuilder.buildRoundButton( - context, - text: S.current.confirm, - fontSizeDelta: 2, - background: Theme.of(context).primaryColor, - padding: const EdgeInsets.symmetric(horizontal: 80, vertical: 12), - onTap: onSubmit, - ), - const Spacer(), - ItemBuilder.buildClickItem( - clickable: _biometricAvailable && _enableDatabaseBiometric, - GestureDetector( - onTap: _biometricAvailable && _enableDatabaseBiometric - ? () { - auth(); - } - : null, - child: Text( - _biometricAvailable && _enableDatabaseBiometric - ? S.current.biometric - : "", - style: Theme.of(context).textTheme.bodySmall?.copyWith( - fontSize: Theme.of(context).textTheme.titleSmall!.fontSize, - ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (_biometricAvailable) + ItemBuilder.buildRoundButton( + context, + text: S.current.biometric, + fontSizeDelta: 2, + disabled: !(_allowDatabaseBiometric && _isValidated), + padding: + const EdgeInsets.symmetric(horizontal: 20, vertical: 12), + onTap: () => auth(), + ), + if (_biometricAvailable) const SizedBox(width: 10), + ItemBuilder.buildRoundButton( + context, + text: S.current.confirm, + fontSizeDelta: 2, + background: Theme.of(context).primaryColor, + padding: const EdgeInsets.symmetric(horizontal: 80, vertical: 12), + onTap: onSubmit, ), - ), + ], ), + const Spacer(), ], ); } diff --git a/lib/Screens/Lock/pin_change_screen.dart b/lib/Screens/Lock/pin_change_screen.dart index 91cf1bd3..6dda24db 100644 --- a/lib/Screens/Lock/pin_change_screen.dart +++ b/lib/Screens/Lock/pin_change_screen.dart @@ -1,5 +1,6 @@ import 'dart:math'; +import 'package:biometric_storage/biometric_storage.dart'; import 'package:cloudotp/Utils/itoast.dart'; import 'package:cloudotp/Utils/responsive_util.dart'; import 'package:cloudotp/Widgets/General/Unlock/gesture_notifier.dart'; @@ -8,6 +9,7 @@ import 'package:cloudotp/Widgets/General/Unlock/gesture_unlock_view.dart'; import 'package:cloudotp/Widgets/Item/item_builder.dart'; import 'package:flutter/material.dart'; +import '../../Utils/biometric_util.dart'; import '../../Utils/hive_util.dart'; import '../../Utils/utils.dart'; import '../../generated/l10n.dart'; @@ -26,8 +28,8 @@ class PinChangeScreenState extends State { final String? _oldPassword = HiveUtil.getString(HiveUtil.guesturePasswdKey); bool _isEditMode = HiveUtil.getString(HiveUtil.guesturePasswdKey) != null && HiveUtil.getString(HiveUtil.guesturePasswdKey)!.isNotEmpty; - late final bool _isUseBiometric = - _isEditMode && HiveUtil.getBool(HiveUtil.enableBiometricKey); + late final bool _enableBiometric = + HiveUtil.getBool(HiveUtil.enableBiometricKey); late final GestureNotifier _notifier = _isEditMode ? GestureNotifier( status: GestureStatus.verify, @@ -38,10 +40,22 @@ class PinChangeScreenState extends State { final GlobalKey _gestureUnlockView = GlobalKey(); final GlobalKey _indicator = GlobalKey(); + String? canAuthenticateResponseString; + CanAuthenticateResponse? canAuthenticateResponse; + + bool get _biometricAvailable => canAuthenticateResponse?.isSuccess ?? false; + @override void initState() { super.initState(); - if (_isUseBiometric) { + initBiometricAuthentication(); + } + + initBiometricAuthentication() async { + canAuthenticateResponse = await BiometricUtil.canAuthenticate(); + canAuthenticateResponseString = + await BiometricUtil.getCanAuthenticateResponseString(); + if (_biometricAvailable && _enableBiometric && _isEditMode) { auth(); } } @@ -100,22 +114,16 @@ class PinChangeScreenState extends State { onCompleted: _gestureComplete, ), ), - GestureDetector( - onTap: () { - if (_isEditMode && _isUseBiometric) { + Visibility( + visible: _isEditMode && _biometricAvailable && _enableBiometric, + child: ItemBuilder.buildRoundButton( + context, + text: ResponsiveUtil.isWindows() + ? S.current.biometricVerifyPin + : S.current.biometric, + onTap: () { auth(); - } - }, - child: ItemBuilder.buildClickItem( - clickable: _isEditMode && _isUseBiometric, - Text( - _isEditMode && _isUseBiometric - ? (ResponsiveUtil.isWindows() - ? S.current.biometricVerifyPin - : S.current.biometricVerifyFingerprint) - : "", - style: Theme.of(context).textTheme.titleSmall, - ), + }, ), ), const SizedBox(height: 50), diff --git a/lib/Screens/Lock/pin_verify_screen.dart b/lib/Screens/Lock/pin_verify_screen.dart index 549fb2df..ca2df239 100644 --- a/lib/Screens/Lock/pin_verify_screen.dart +++ b/lib/Screens/Lock/pin_verify_screen.dart @@ -1,5 +1,7 @@ import 'dart:math'; +import 'package:biometric_storage/biometric_storage.dart'; +import 'package:cloudotp/Utils/app_provider.dart'; import 'package:cloudotp/Utils/route_util.dart'; import 'package:cloudotp/Utils/utils.dart'; import 'package:cloudotp/Widgets/General/Unlock/gesture_notifier.dart'; @@ -8,6 +10,7 @@ import 'package:flutter/material.dart'; import 'package:window_manager/window_manager.dart'; import '../../Resources/theme.dart'; +import '../../Utils/biometric_util.dart'; import '../../Utils/hive_util.dart'; import '../../Utils/responsive_util.dart'; import '../../Widgets/Item/item_builder.dart'; @@ -37,13 +40,17 @@ class PinVerifyScreen extends StatefulWidget { class PinVerifyScreenState extends State with WindowListener { final String? _password = HiveUtil.getString(HiveUtil.guesturePasswdKey); - late final bool _isUseBiometric = - HiveUtil.getBool(HiveUtil.enableBiometricKey); + late final bool _enableBiometric = + HiveUtil.getBool(HiveUtil.enableBiometricKey); late final GestureNotifier _notifier = GestureNotifier( status: GestureStatus.verify, gestureText: S.current.verifyGestureLock); final GlobalKey _gestureUnlockView = GlobalKey(); bool _isMaximized = false; bool _isStayOnTop = false; + String? canAuthenticateResponseString; + CanAuthenticateResponse? canAuthenticateResponse; + + bool get _biometricAvailable => canAuthenticateResponse?.isSuccess ?? false; @override void onWindowMaximize() { @@ -81,7 +88,15 @@ class PinVerifyScreenState extends State with WindowListener { void initState() { windowManager.addListener(this); super.initState(); - if (_isUseBiometric && widget.autoAuth) { + initBiometricAuthentication(); + } + + initBiometricAuthentication() async { + canAuthenticateResponse = await BiometricUtil.canAuthenticate(); + canAuthenticateResponseString = + await BiometricUtil.getCanAuthenticateResponseString(); + setState(() {}); + if (_biometricAvailable && _enableBiometric && widget.autoAuth) { auth(); } } @@ -92,7 +107,8 @@ class PinVerifyScreenState extends State with WindowListener { if (widget.onSuccess != null) widget.onSuccess!(); if (widget.jumpToMain) { Navigator.of(context).pushReplacement(RouteUtil.getFadeRoute( - ItemBuilder.buildContextMenuOverlay(const MainScreen()))); + ItemBuilder.buildContextMenuOverlay( + MainScreen(key: mainScreenKey)))); } else { Navigator.of(context).pop(); } @@ -107,26 +123,28 @@ class PinVerifyScreenState extends State with WindowListener { backgroundColor: MyTheme.getBackground(context), appBar: ResponsiveUtil.isDesktop() && widget.showWindowTitle ? PreferredSize( - preferredSize: const Size(0, 86), - child: ItemBuilder.buildWindowTitle( - context, - forceClose: true, - backgroundColor: MyTheme.getBackground(context), - isStayOnTop: _isStayOnTop, - isMaximized: _isMaximized, - onStayOnTopTap: () { - setState(() { - _isStayOnTop = !_isStayOnTop; - windowManager.setAlwaysOnTop(_isStayOnTop); - }); - }, - ), - ) + preferredSize: const Size(0, 86), + child: ItemBuilder.buildWindowTitle( + context, + forceClose: true, + backgroundColor: MyTheme.getBackground(context), + isStayOnTop: _isStayOnTop, + isMaximized: _isMaximized, + onStayOnTopTap: () { + setState(() { + _isStayOnTop = !_isStayOnTop; + windowManager.setAlwaysOnTop(_isStayOnTop); + }); + }, + ), + ) + : null, + bottomNavigationBar: widget.showWindowTitle + ? Container( + height: 86, + color: MyTheme.getBackground(context), + ) : null, - bottomNavigationBar: widget.showWindowTitle ? Container( - height: 86, - color: MyTheme.getBackground(context), - ) : null, body: SafeArea( right: false, child: Center( @@ -140,24 +158,17 @@ class PinVerifyScreenState extends State with WindowListener { const SizedBox(height: 50), Text( _notifier.gestureText, - style: Theme - .of(context) - .textTheme - .titleMedium, + style: Theme.of(context).textTheme.titleMedium, ), const SizedBox(height: 30), Flexible( child: GestureUnlockView( key: _gestureUnlockView, - size: min(MediaQuery - .sizeOf(context) - .width, 400), + size: min(MediaQuery.sizeOf(context).width, 400), padding: 60, roundSpace: 40, defaultColor: Colors.grey.withOpacity(0.5), - selectedColor: Theme - .of(context) - .primaryColor, + selectedColor: Theme.of(context).primaryColor, failedColor: Colors.redAccent, disableColor: Colors.grey, solidRadiusRatio: 0.3, @@ -167,22 +178,15 @@ class PinVerifyScreenState extends State with WindowListener { ), ), Visibility( - visible: _isUseBiometric, - child: GestureDetector( + visible: _biometricAvailable && _enableBiometric, + child: ItemBuilder.buildRoundButton( + context, + text: ResponsiveUtil.isWindows() + ? S.current.biometricVerifyPin + : S.current.biometric, onTap: () { auth(); }, - child: ItemBuilder.buildClickItem( - Text( - ResponsiveUtil.isWindows() - ? S.current.biometricVerifyPin - : S.current.biometricVerifyFingerprint, - style: Theme - .of(context) - .textTheme - .titleSmall, - ), - ), ), ), const SizedBox(height: 50), @@ -203,7 +207,8 @@ class PinVerifyScreenState extends State with WindowListener { if (widget.onSuccess != null) widget.onSuccess!(); if (widget.jumpToMain) { Navigator.of(context).pushReplacement(RouteUtil.getFadeRoute( - ItemBuilder.buildContextMenuOverlay(const MainScreen()))); + ItemBuilder.buildContextMenuOverlay( + MainScreen(key: mainScreenKey)))); } else { Navigator.of(context).pop(); } diff --git a/lib/Screens/Setting/backup_log_screen.dart b/lib/Screens/Setting/backup_log_screen.dart index f5eed5e4..acd4b0c9 100644 --- a/lib/Screens/Setting/backup_log_screen.dart +++ b/lib/Screens/Setting/backup_log_screen.dart @@ -16,7 +16,12 @@ import '../../Utils/utils.dart'; import '../../generated/l10n.dart'; class BackupLogScreen extends StatefulWidget { - const BackupLogScreen({super.key}); + const BackupLogScreen({ + super.key, + this.isOverlay = false, + }); + + final bool isOverlay; @override BackupLogScreenState createState() => BackupLogScreenState(); @@ -44,7 +49,7 @@ class BackupLogScreenState extends State { @override Widget build(BuildContext context) { - return ResponsiveUtil.isLandscape() + return widget.isOverlay ? _buildDesktopBody() : Scaffold( appBar: ItemBuilder.buildAppBar( @@ -57,7 +62,7 @@ class BackupLogScreenState extends State { .titleMedium! .apply(fontWeightDelta: 2), ), - center: true, + center: !ResponsiveUtil.isLandscape(), leading: Icons.arrow_back_rounded, onLeadingTap: () { Navigator.pop(context); @@ -76,6 +81,11 @@ class BackupLogScreenState extends State { ) : ItemBuilder.buildBlankIconButton(context), const SizedBox(width: 5), + if (ResponsiveUtil.isLandscape()) + Container( + margin: const EdgeInsets.only(right: 5), + child: ItemBuilder.buildBlankIconButton(context), + ), ], ), body: _buildBody(), @@ -111,7 +121,7 @@ class BackupLogScreenState extends State { clear() { appProvider.clearAutoBackupLogs(); appProvider.autoBackupLoadingStatus = LoadingStatus.none; - if (ResponsiveUtil.isLandscape()) { + if (widget.isOverlay) { context.contextMenuOverlay.hide(); } } @@ -119,13 +129,13 @@ class BackupLogScreenState extends State { _buildBody() { return ListView( padding: EdgeInsets.symmetric( - horizontal: 10, vertical: ResponsiveUtil.isLandscape() ? 10 : 0), - physics: ResponsiveUtil.isLandscape() + horizontal: 10, vertical: widget.isOverlay ? 10 : 0), + physics: widget.isOverlay ? null : const BouncingScrollPhysics( parent: AlwaysScrollableScrollPhysics()), children: [ - if (ResponsiveUtil.isLandscape()) + if (widget.isOverlay) Row( children: [ const SizedBox(width: 5), @@ -151,12 +161,13 @@ class BackupLogScreenState extends State { ), ], ), - if (ResponsiveUtil.isLandscape()) const SizedBox(height: 10), + if (widget.isOverlay) const SizedBox(height: 10), ...List.generate( appProvider.autoBackupLogs.length, (index) { return BackupLogItem( log: appProvider.autoBackupLogs[index], + isOverlay: widget.isOverlay, ); }, ), @@ -175,7 +186,7 @@ class BackupLogScreenState extends State { text: S.current.goToSetBackupPassword, background: Theme.of(context).primaryColor, onTap: () { - if (ResponsiveUtil.isLandscape()) { + if (widget.isOverlay) { context.contextMenuOverlay.hide(); RouteUtil.pushDialogRoute( context, @@ -208,7 +219,9 @@ class BackupLogScreenState extends State { class BackupLogItem extends StatefulWidget { final AutoBackupLog log; - const BackupLogItem({super.key, required this.log}); + final bool isOverlay; + + const BackupLogItem({super.key, required this.log, required this.isOverlay}); @override BackupLogItemState createState() => BackupLogItemState(); @@ -222,7 +235,7 @@ class BackupLogItemState extends State { return Container( margin: const EdgeInsets.only(bottom: 8), child: Material( - color: ResponsiveUtil.isLandscape() + color: widget.isOverlay ? MyTheme.getCardBackground(context) : Theme.of(context).canvasColor, borderRadius: BorderRadius.circular(10), @@ -236,7 +249,7 @@ class BackupLogItemState extends State { } : null, child: Container( - padding: EdgeInsets.all(ResponsiveUtil.isLandscape() ? 8 : 12), + padding: EdgeInsets.all(widget.isOverlay ? 8 : 12), decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), ), @@ -249,7 +262,7 @@ class BackupLogItemState extends State { Text( widget.log.triggerType.label, style: Theme.of(context).textTheme.bodyMedium?.apply( - fontSizeDelta: ResponsiveUtil.isLandscape() ? 0 : 1, + fontSizeDelta: widget.isOverlay ? 0 : 1, ), ), const Spacer(), @@ -261,7 +274,7 @@ class BackupLogItemState extends State { text: widget.log.lastStatusItem.labelShort, textStyle: Theme.of(context).textTheme.labelSmall?.apply( color: Colors.white, - fontSizeDelta: ResponsiveUtil.isLandscape() ? 0 : 1), + fontSizeDelta: widget.isOverlay ? 0 : 1), background: widget.log.lastStatus.color, ), const SizedBox(width: 5), @@ -298,7 +311,7 @@ class BackupLogItemState extends State { textStyle: Theme.of(context) .textTheme .labelSmall - ?.apply(fontSizeDelta: ResponsiveUtil.isLandscape() ? 0 : 1), + ?.apply(fontSizeDelta: widget.isOverlay ? 0 : 1), List.generate( widget.log.status.length, (i) { diff --git a/lib/Screens/Setting/setting_safe_screen.dart b/lib/Screens/Setting/setting_safe_screen.dart index 7dc551a7..cfaafa01 100644 --- a/lib/Screens/Setting/setting_safe_screen.dart +++ b/lib/Screens/Setting/setting_safe_screen.dart @@ -1,20 +1,20 @@ import 'package:biometric_storage/biometric_storage.dart'; import 'package:cloudotp/Utils/biometric_util.dart'; -import 'package:cloudotp/Utils/ilogger.dart'; import 'package:cloudotp/Widgets/BottomSheet/input_password_bottom_sheet.dart'; import 'package:cloudotp/Widgets/Dialog/dialog_builder.dart'; import 'package:cloudotp/Widgets/General/EasyRefresh/easy_refresh.dart'; import 'package:flutter/material.dart'; import 'package:flutter_windowmanager/flutter_windowmanager.dart'; -import 'package:local_auth/local_auth.dart'; import 'package:provider/provider.dart'; import '../../Database/database_manager.dart'; import '../../Utils/app_provider.dart'; +import '../../Utils/constant.dart'; import '../../Utils/hive_util.dart'; import '../../Utils/itoast.dart'; import '../../Utils/responsive_util.dart'; import '../../Utils/route_util.dart'; +import '../../Utils/utils.dart'; import '../../Widgets/BottomSheet/bottom_sheet_builder.dart'; import '../../Widgets/BottomSheet/list_bottom_sheet.dart'; import '../../Widgets/Item/item_builder.dart'; @@ -34,56 +34,42 @@ class SafeSettingScreen extends StatefulWidget { class _SafeSettingScreenState extends State with TickerProviderStateMixin { bool _enableGuesturePasswd = - HiveUtil.getBool(HiveUtil.enableGuesturePasswdKey); + HiveUtil.getBool(HiveUtil.enableGuesturePasswdKey); bool _hasGuesturePasswd = - HiveUtil.getString(HiveUtil.guesturePasswdKey) != null && - HiveUtil.getString(HiveUtil.guesturePasswdKey)!.isNotEmpty; + Utils.isNotEmpty(HiveUtil.getString(HiveUtil.guesturePasswdKey)); bool _autoLock = HiveUtil.getBool(HiveUtil.autoLockKey); - bool _enableSafeMode = HiveUtil.getBool(HiveUtil.enableSafeModeKey); - bool _enableBiometric = HiveUtil.getBool(HiveUtil.enableBiometricKey); - bool _enableDatabaseBiometric = HiveUtil.getBool( - HiveUtil.enableDatabaseBiometricKey, - defaultValue: false); - bool _biometricHwAvailable = false; + bool _enableSafeMode = HiveUtil.getBool(HiveUtil.enableSafeModeKey, + defaultValue: defaultEnableSafeMode); + bool _allowGuestureBiometric = HiveUtil.getBool(HiveUtil.enableBiometricKey); + bool _allowDatabaseBiometric = + HiveUtil.getBool(HiveUtil.allowDatabaseBiometricKey, defaultValue: false); EncryptDatabaseStatus _encryptDatabaseStatus = - HiveUtil.getEncryptDatabaseStatus(); + HiveUtil.getEncryptDatabaseStatus(); String? canAuthenticateResponseString; CanAuthenticateResponse? canAuthenticateResponse; - bool get _biometricAvailable => - _biometricHwAvailable&& - (canAuthenticateResponse != CanAuthenticateResponse.unsupported && - canAuthenticateResponse != CanAuthenticateResponse.statusUnknown); + bool get _biometricAvailable => canAuthenticateResponse?.isAvailable ?? false; + + bool get _geusturePasswdAvailable => + _enableGuesturePasswd && !_encryptedAndCustomPassword; + + bool get _gesturePasswdAvailableAndSet => + _geusturePasswdAvailable && _hasGuesturePasswd; + + bool get _encryptedAndCustomPassword => + DatabaseManager.isDatabaseEncrypted && + _encryptDatabaseStatus == EncryptDatabaseStatus.customPassword; + + bool get _encryptedAndDefaultPassword => + DatabaseManager.isDatabaseEncrypted && + _encryptDatabaseStatus == EncryptDatabaseStatus.defaultPassword; + + bool get _autoLockAvailable => + _gesturePasswdAvailableAndSet || _encryptedAndCustomPassword; @override void initState() { super.initState(); - BiometricUtil.canAuthenticate().then((value) { - canAuthenticateResponse = value; - switch (value) { - case CanAuthenticateResponse.errorHwUnavailable: - canAuthenticateResponseString = S.current.biometricErrorHwUnavailable; - break; - case CanAuthenticateResponse.errorNoBiometricEnrolled: - canAuthenticateResponseString = - S.current.biometricErrorNoBiometricEnrolled; - break; - case CanAuthenticateResponse.errorNoHardware: - canAuthenticateResponseString = S.current.biometricErrorNoHardware; - break; - case CanAuthenticateResponse.errorPasscodeNotSet: - canAuthenticateResponseString = - S.current.biometricErrorPasscodeNotSet; - break; - case CanAuthenticateResponse.success: - canAuthenticateResponseString = S.current.biometricTip; - break; - default: - canAuthenticateResponseString = S.current.biometricErrorUnkown; - break; - } - setState(() {}); - }); initBiometricAuthentication(); } @@ -95,38 +81,38 @@ class _SafeSettingScreenState extends State child: Scaffold( appBar: ResponsiveUtil.isLandscape() ? ItemBuilder.buildSimpleAppBar( - title: S.current.safeSetting, - context: context, - transparent: true, - ) + title: S.current.safeSetting, + context: context, + transparent: true, + ) : ItemBuilder.buildAppBar( - context: context, - backgroundColor: Theme - .of(context) - .scaffoldBackgroundColor, - leading: Icons.arrow_back_rounded, - onLeadingTap: () { - Navigator.pop(context); - }, - title: Text( - S.current.safeSetting, - style: Theme - .of(context) - .textTheme - .titleMedium - ?.apply(fontWeightDelta: 2), - ), - actions: [ - ItemBuilder.buildBlankIconButton(context), - const SizedBox(width: 5), - ], - ), + context: context, + backgroundColor: Theme.of(context).scaffoldBackgroundColor, + leading: Icons.arrow_back_rounded, + onLeadingTap: () { + Navigator.pop(context); + }, + title: Text( + S.current.safeSetting, + style: Theme.of(context) + .textTheme + .titleMedium + ?.apply(fontWeightDelta: 2), + ), + actions: [ + ItemBuilder.buildBlankIconButton(context), + const SizedBox(width: 5), + ], + ), body: EasyRefresh( child: ListView( physics: const BouncingScrollPhysics(), padding: const EdgeInsets.symmetric(horizontal: 10), children: [ - ..._privacySettings(), + ..._databaseSettings(), + ..._gestureSettings(), + if (_autoLockAvailable) ..._autoLockSettings(), + ..._safeModeSettings(), const SizedBox(height: 30), ], ), @@ -135,101 +121,56 @@ class _SafeSettingScreenState extends State ); } - _privacySettings() { + _gestureSettings() { return [ + const SizedBox(height: 10), ItemBuilder.buildRadioItem( context: context, topRadius: true, + disabled: _encryptedAndCustomPassword, value: _enableGuesturePasswd, title: S.current.enableGestureLock, - bottomRadius: !_enableGuesturePasswd, + bottomRadius: !_geusturePasswdAvailable, description: S.current.enableGestureLockTip, onTap: onEnablePinTapped, ), Visibility( - visible: _enableGuesturePasswd, + visible: _geusturePasswdAvailable, child: ItemBuilder.buildEntryItem( context: context, - bottomRadius: !_hasGuesturePasswd, + bottomRadius: !_gesturePasswdAvailableAndSet || !_biometricAvailable, title: _hasGuesturePasswd ? S.current.changeGestureLock : S.current.setGestureLock, description: - _hasGuesturePasswd ? "" : S.current.haveToSetGestureLockTip, + _hasGuesturePasswd ? "" : S.current.haveToSetGestureLockTip, onTap: onChangePinTapped, ), ), Visibility( - visible: - _enableGuesturePasswd && _hasGuesturePasswd && _biometricAvailable, + visible: _gesturePasswdAvailableAndSet && _biometricAvailable, child: ItemBuilder.buildRadioItem( context: context, - value: _enableBiometric, - title: S.current.biometric, - disabled: canAuthenticateResponse != CanAuthenticateResponse.success, - description: canAuthenticateResponseString ?? "", + value: _allowGuestureBiometric, + title: S.current.biometricUnlock, + bottomRadius: true, + disabled: canAuthenticateResponse?.isSuccess != true, + description: + canAuthenticateResponseString ?? S.current.biometricUnlockTip, onTap: onBiometricTapped, ), ), - Visibility( - visible: _enableGuesturePasswd && _hasGuesturePasswd, - child: ItemBuilder.buildRadioItem( - bottomRadius: - !(_enableGuesturePasswd && _hasGuesturePasswd && _autoLock), - context: context, - value: _autoLock, - title: S.current.autoLock, - description: S.current.autoLockTip, - onTap: onEnableAutoLockTapped, - ), - ), - Visibility( - visible: _enableGuesturePasswd && _hasGuesturePasswd && _autoLock, - child: Selector( - selector: (context, appProvider) => appProvider.autoLockTime, - builder: (context, autoLockTime, child) => - ItemBuilder.buildEntryItem( - context: context, - title: S.current.autoLockDelay, - bottomRadius: true, - tip: AppProvider.getAutoLockOptionLabel(autoLockTime), - onTap: () { - BottomSheetBuilder.showListBottomSheet( - context, - (context) => - TileList.fromOptions( - AppProvider.getAutoLockOptions(), - (item2) { - appProvider.autoLockTime = item2; - Navigator.pop(context); - }, - selected: autoLockTime, - context: context, - title: S.current.chooseAutoLockDelay, - onCloseTap: () => Navigator.pop(context), - ), - ); - }, - ), - ), - ), - const SizedBox(height: 10), - ItemBuilder.buildRadioItem( - context: context, - value: _enableSafeMode, - topRadius: true, - bottomRadius: !DatabaseManager.isDatabaseEncrypted, - title: S.current.safeMode, - disabled: ResponsiveUtil.isDesktop(), - description: S.current.safeModeTip, - onTap: onSafeModeTapped, - ), + ]; + } + + _databaseSettings() { + return [ Visibility( visible: DatabaseManager.isDatabaseEncrypted, child: ItemBuilder.buildEntryItem( context: context, - bottomRadius: - _encryptDatabaseStatus == EncryptDatabaseStatus.defaultPassword, + topRadius: true, + bottomRadius: _encryptedAndDefaultPassword, title: S.current.editEncryptDatabasePassword, description: S.current.encryptDatabaseTip, tip: _encryptDatabaseStatus == EncryptDatabaseStatus.defaultPassword @@ -240,77 +181,44 @@ class _SafeSettingScreenState extends State context, responsive: true, useWideLandscape: true, - (context) => - InputPasswordBottomSheet( - title: S.current.editEncryptDatabasePassword, - message: S.current.editEncryptDatabasePasswordTip, - onConfirm: (passord, confirmPassword) async {}, - onValidConfirm: (passord, confirmPassword) async { - bool res = await DatabaseManager.changePassword(passord); - if (res) { - IToast.showTop(S.current.editSuccess); - HiveUtil.setEncryptDatabaseStatus( - EncryptDatabaseStatus.customPassword); - setState(() { - _encryptDatabaseStatus = - EncryptDatabaseStatus.customPassword; - }); - if (_enableDatabaseBiometric) { - _enableDatabaseBiometric = + (context) => InputPasswordBottomSheet( + title: S.current.editEncryptDatabasePassword, + message: S.current.editEncryptDatabasePasswordTip, + onConfirm: (passord, confirmPassword) async {}, + onValidConfirm: (passord, confirmPassword) async { + bool res = await DatabaseManager.changePassword(passord); + if (res) { + IToast.showTop(S.current.editSuccess); + HiveUtil.setEncryptDatabaseStatus( + EncryptDatabaseStatus.customPassword); + setState(() { + _encryptDatabaseStatus = + EncryptDatabaseStatus.customPassword; + }); + if (_biometricAvailable && _allowDatabaseBiometric) { + _allowDatabaseBiometric = await BiometricUtil.setDatabasePassword( appProvider.currentDatabasePassword); - setState(() {}); - } - HiveUtil.put(HiveUtil.enableDatabaseBiometricKey, - _enableDatabaseBiometric); - } else { - IToast.showTop(S.current.editFailed); - } - }, - ), + setState(() {}); + HiveUtil.put(HiveUtil.allowDatabaseBiometricKey, + _allowDatabaseBiometric); + } + } else { + IToast.showTop(S.current.editFailed); + } + }, + ), ); }, ), ), Visibility( - visible: DatabaseManager.isDatabaseEncrypted && - _encryptDatabaseStatus == EncryptDatabaseStatus.customPassword && - _biometricAvailable, - child: ItemBuilder.buildRadioItem( - context: context, - value: _enableDatabaseBiometric, - disabled: canAuthenticateResponse != CanAuthenticateResponse.success, - description: canAuthenticateResponseString ?? "", - title: S.current.biometric, - onTap: () async { - if (canAuthenticateResponse != CanAuthenticateResponse.success) { - return; - } - if (!_enableDatabaseBiometric) { - _enableDatabaseBiometric = - await BiometricUtil.setDatabasePassword( - appProvider.currentDatabasePassword); - if (_enableDatabaseBiometric) { - IToast.showTop(S.current.enableBiometricSuccess); - } - setState(() {}); - } else { - _enableDatabaseBiometric = false; - setState(() {}); - } - HiveUtil.put( - HiveUtil.enableDatabaseBiometricKey, _enableDatabaseBiometric); - }, - ), - ), - Visibility( - visible: DatabaseManager.isDatabaseEncrypted && - _encryptDatabaseStatus == EncryptDatabaseStatus.customPassword, + visible: _encryptedAndCustomPassword, child: ItemBuilder.buildEntryItem( context: context, title: S.current.clearEncryptDatabasePassword, description: S.current.clearEncryptDatabasePasswordTip, - bottomRadius: true, + bottomRadius: !_biometricAvailable, onTap: () { DialogBuilder.showConfirmDialog( context, @@ -326,6 +234,9 @@ class _SafeSettingScreenState extends State _encryptDatabaseStatus = EncryptDatabaseStatus.defaultPassword; }); + if (_biometricAvailable && _allowDatabaseBiometric) { + await BiometricUtil.clearDatabasePassword(); + } IToast.showTop(S.current.clearEncryptDatabasePasswordSuccess); } else { IToast.showTop(S.current.clearEncryptDatabasePasswordFailed); @@ -336,15 +247,107 @@ class _SafeSettingScreenState extends State }, ), ), + Visibility( + visible: _encryptedAndCustomPassword && _biometricAvailable, + child: ItemBuilder.buildRadioItem( + context: context, + value: _allowDatabaseBiometric, + disabled: canAuthenticateResponse?.isSuccess != true, + bottomRadius: true, + description: canAuthenticateResponseString ?? + S.current.biometricDecryptDatabaseTip, + title: S.current.biometricDecryptDatabase, + onTap: () async { + if (canAuthenticateResponse != CanAuthenticateResponse.success) { + return; + } + if (!_allowDatabaseBiometric) { + _allowDatabaseBiometric = await BiometricUtil.setDatabasePassword( + appProvider.currentDatabasePassword); + if (_allowDatabaseBiometric) { + IToast.showTop(S.current.enableBiometricSuccess); + } + setState(() {}); + } else { + _allowDatabaseBiometric = false; + setState(() {}); + } + HiveUtil.put( + HiveUtil.allowDatabaseBiometricKey, _allowDatabaseBiometric); + }, + ), + ), + ]; + } + + _autoLockSettings() { + return [ + const SizedBox(height: 10), + ItemBuilder.buildRadioItem( + bottomRadius: !_autoLock, + topRadius: true, + context: context, + value: _autoLock, + title: S.current.autoLock, + description: S.current.autoLockTip, + onTap: onEnableAutoLockTapped, + ), + Visibility( + visible: _autoLock, + child: Selector( + selector: (context, appProvider) => appProvider.autoLockTime, + builder: (context, autoLockTime, child) => ItemBuilder.buildEntryItem( + context: context, + title: S.current.autoLockDelay, + bottomRadius: true, + tip: autoLockTime.label, + onTap: () { + BottomSheetBuilder.showListBottomSheet( + context, + (context) => TileList.fromOptions( + AutoLockTime.options(), + (item2) { + appProvider.autoLockTime = item2; + Navigator.pop(context); + }, + selected: autoLockTime, + context: context, + title: S.current.chooseAutoLockDelay, + onCloseTap: () => Navigator.pop(context), + ), + ); + }, + ), + ), + ), + ]; + } + + _safeModeSettings() { + return [ + const SizedBox(height: 10), + ItemBuilder.buildRadioItem( + context: context, + value: _enableSafeMode, + topRadius: true, + bottomRadius: true, + title: S.current.safeMode, + disabled: ResponsiveUtil.isDesktop(), + description: S.current.safeModeTip, + onTap: onSafeModeTapped, + ), ]; } initBiometricAuthentication() async { - LocalAuthentication localAuth = LocalAuthentication(); - bool available = await localAuth.canCheckBiometrics; - setState(() { - _biometricHwAvailable = available; - }); + canAuthenticateResponse = await BiometricUtil.canAuthenticate(); + canAuthenticateResponseString = + await BiometricUtil.getCanAuthenticateResponseString(); + bool exist = await BiometricUtil.exists(); + if (!exist) { + _allowDatabaseBiometric = false; + HiveUtil.put(HiveUtil.allowDatabaseBiometricKey, _allowDatabaseBiometric); + } } onEnablePinTapped() { @@ -373,15 +376,16 @@ class _SafeSettingScreenState extends State } onBiometricTapped() { - if (!_enableBiometric) { + if (!_allowGuestureBiometric) { RouteUtil.pushCupertinoRoute( context, PinVerifyScreen( onSuccess: () { IToast.showTop(S.current.enableBiometricSuccess); setState(() { - _enableBiometric = !_enableBiometric; - HiveUtil.put(HiveUtil.enableBiometricKey, _enableBiometric); + _allowGuestureBiometric = !_allowGuestureBiometric; + HiveUtil.put( + HiveUtil.enableBiometricKey, _allowGuestureBiometric); }); }, isModal: false, @@ -389,8 +393,8 @@ class _SafeSettingScreenState extends State ); } else { setState(() { - _enableBiometric = !_enableBiometric; - HiveUtil.put(HiveUtil.enableBiometricKey, _enableBiometric); + _allowGuestureBiometric = !_allowGuestureBiometric; + HiveUtil.put(HiveUtil.enableBiometricKey, _allowGuestureBiometric); }); } } diff --git a/lib/Screens/Setting/update_screen.dart b/lib/Screens/Setting/update_screen.dart index 346c0576..c5ae2d88 100644 --- a/lib/Screens/Setting/update_screen.dart +++ b/lib/Screens/Setting/update_screen.dart @@ -35,7 +35,13 @@ class UpdateScreen extends StatefulWidget { State createState() => _UpdateScreenState(); } -enum DownloadState { normal, downloading, toInstall, installing } +enum DownloadState { + normal, + downloading, + toInstallPortable, + toInstall, + installing +} class _UpdateScreenState extends State with TickerProviderStateMixin { @@ -144,8 +150,9 @@ class _UpdateScreenState extends State try { late ReleaseAsset asset; if (ResponsiveUtil.isWindows()) { - asset = FileUtil.getWindowsInstallerAsset( + asset = FileUtil.getWindowsAsset( latestVersion, latestReleaseItem); + ILogger.info("Windows asset: $asset"); } String url = asset.pkgsDownloadUrl; var appDocDir = await getDownloadsDirectory(); @@ -153,6 +160,8 @@ class _UpdateScreenState extends State "${appDocDir?.path}/${FileUtil.getFileNameWithExtension(url)}"; if (downloadState == DownloadState.downloading) { return; + } else if (downloadState == DownloadState.toInstallPortable) { + IToast.showTop(S.current.installPortableTip); } else if (downloadState == DownloadState.toInstall) { setState(() { buttonText = S.current.installing; @@ -212,7 +221,7 @@ class _UpdateScreenState extends State IToast.showTop(S.current.downloadSuccess); setState(() { buttonText = S.current.immediatelyInstall; - downloadState = DownloadState.toInstall; + downloadState = DownloadState.toInstallPortable; }); } else { IToast.showTop(S.current.downloadFailed); diff --git a/lib/Screens/Token/add_token_screen.dart b/lib/Screens/Token/add_token_screen.dart index f534abb5..32cf2889 100644 --- a/lib/Screens/Token/add_token_screen.dart +++ b/lib/Screens/Token/add_token_screen.dart @@ -366,6 +366,7 @@ class _AddTokenScreenState extends State leadingType: InputItemLeadingType.text, leadingText: S.current.tokenSecret, tailingType: InputItemTailingType.password, + obscureText: _isEditing, hint: S.current.tokenSecretHint, inputFormatters: [ RegexInputFormatter.onlyNumberAndLetter, @@ -389,6 +390,7 @@ class _AddTokenScreenState extends State leadingText: S.current.tokenPin, leadingType: InputItemLeadingType.text, tailingType: InputItemTailingType.password, + obscureText: _isEditing, hint: S.current.tokenPinHint, maxLength: _otpToken.tokenType.maxPinLength, bottomRadius: true, diff --git a/lib/Screens/home_screen.dart b/lib/Screens/home_screen.dart index b5712e6d..85990078 100644 --- a/lib/Screens/home_screen.dart +++ b/lib/Screens/home_screen.dart @@ -79,6 +79,8 @@ class HomeScreenState extends State with TickerProviderStateMixin { GridItemsNotifier gridItemsNotifier = GridItemsNotifier(); final ValueNotifier _shownSearchbarNotifier = ValueNotifier(false); + bool get hasSearchFocus => _searchFocusNode.hasFocus; + String get currentCategoryUid { if (_currentTabIndex == 0) { return ""; @@ -761,7 +763,7 @@ class HomeScreenState extends State with TickerProviderStateMixin { ], ) : gridView; - return SlidableAutoCloseBehavior(child:body); + return SlidableAutoCloseBehavior(child: body); } _buildTabBar([EdgeInsetsGeometry? padding]) { diff --git a/lib/Screens/main_screen.dart b/lib/Screens/main_screen.dart index 63de3003..65aac166 100644 --- a/lib/Screens/main_screen.dart +++ b/lib/Screens/main_screen.dart @@ -1,9 +1,10 @@ import 'dart:async'; import 'dart:io'; -import 'dart:math'; +import 'package:cloudotp/Database/database_manager.dart'; import 'package:cloudotp/Database/token_dao.dart'; import 'package:cloudotp/Models/opt_token.dart'; +import 'package:cloudotp/Screens/Lock/database_decrypt_screen.dart'; import 'package:cloudotp/Screens/Setting/about_setting_screen.dart'; import 'package:cloudotp/Screens/Setting/setting_navigation_screen.dart'; import 'package:cloudotp/Screens/Token/add_token_screen.dart'; @@ -81,7 +82,6 @@ class MainScreenState extends State Widget? darkModeWidget; bool _isMaximized = false; bool _isStayOnTop = false; - bool _hasJumpedToPinVerify = false; Orientation _oldOrientation = Orientation.portrait; TextEditingController searchController = TextEditingController(); FocusNode searchFocusNode = FocusNode(); @@ -138,6 +138,11 @@ class MainScreenState extends State }); } + void pushRootPage(Widget page) { + Navigator.pushAndRemoveUntil( + context, RouteUtil.getFadeRoute(page), (route) => false); + } + @override void onProtocolUrlReceived(String url) { ILogger.info("Protocol url received", url); @@ -216,7 +221,8 @@ class MainScreenState extends State indicator: LottieUtil.load(LottieUtil.getLoadingPath(context)), ); if (ResponsiveUtil.isMobile()) { - if (HiveUtil.getBool(HiveUtil.enableSafeModeKey)) { + if (HiveUtil.getBool(HiveUtil.enableSafeModeKey, + defaultValue: defaultEnableSafeMode)) { FlutterWindowManager.addFlags(FlutterWindowManager.FLAG_SECURE); } else { FlutterWindowManager.clearFlags(FlutterWindowManager.FLAG_SECURE); @@ -224,20 +230,25 @@ class MainScreenState extends State } } - void jumpToPinVerify({ + Future jumpToLock({ bool autoAuth = false, - }) { - _hasJumpedToPinVerify = true; - RouteUtil.pushCupertinoRoute( - context, + }) async { + if (DatabaseManager.isDatabaseEncrypted && + HiveUtil.getEncryptDatabaseStatus() == + EncryptDatabaseStatus.customPassword) { + await DatabaseManager.resetDatabase(); + pushRootPage(const DatabaseDecryptScreen()); + } else { + pushRootPage( PinVerifyScreen( onSuccess: () {}, showWindowTitle: true, isModal: true, autoAuth: autoAuth, - ), onThen: (_) { - _hasJumpedToPinVerify = false; - }); + jumpToMain: true, + ), + ); + } } @override @@ -304,34 +315,6 @@ class MainScreenState extends State ), ], ); - var rightPosWidget = Column( - children: [ - _titleBar(), - Expanded( - child: Row( - children: [ - Expanded( - child: _desktopMainContent(leftMargin: 5), - ), - _sideBar(leftPadding: 8, rightPadding: 8, topPadding: 8), - ], - ), - ), - ], - ); - var bottomPosWidget = Column( - children: [ - _titleBar(), - Expanded( - child: _desktopMainContent(leftMargin: 5, rightMargin: 5), - ), - RotatedBox( - quarterTurns: 3, - child: _sideBar( - quarterTurns: 1, leftPadding: 8, rightPadding: 8, topPadding: 5), - ), - ], - ); return MyScaffold( resizeToAvoidBottomInset: false, body: leftPosWidget, @@ -836,7 +819,7 @@ class MainScreenState extends State ), onPressed: () { context.contextMenuOverlay - .show(const BackupLogScreen()); + .show(const BackupLogScreen(isOverlay: true)); }, ) : const SizedBox.shrink(), @@ -875,16 +858,14 @@ class MainScreenState extends State } void setTimer() { - if (!_hasJumpedToPinVerify) { - _timer = Timer( - Duration(minutes: appProvider.autoLockTime), - () { - if (HiveUtil.shouldAutoLock()) { - jumpToPinVerify(); - } - }, - ); - } + _timer = Timer( + Duration(seconds: appProvider.autoLockTime.seconds), + () { + if (!appProvider.hasJumpToFilePicker && HiveUtil.shouldAutoLock()) { + jumpToLock(); + } + }, + ); } @override @@ -924,7 +905,7 @@ class MainScreenState extends State @override void onTrayIconRightMouseDown() { - if (!_hasJumpedToPinVerify) trayManager.popUpContextMenu(); + trayManager.popUpContextMenu(); } @override @@ -936,7 +917,7 @@ class MainScreenState extends State Utils.displayApp(); } else if (menuItem.key == TrayKey.lockApp.key) { if (HiveUtil.canLock()) { - jumpToPinVerify(); + jumpToLock(); } else { IToast.showDesktopNotification( S.current.noGestureLock, diff --git a/lib/TokenUtils/export_token_util.dart b/lib/TokenUtils/export_token_util.dart index 31846aa2..4b593417 100644 --- a/lib/TokenUtils/export_token_util.dart +++ b/lib/TokenUtils/export_token_util.dart @@ -98,7 +98,6 @@ class ExportTokenUtil { static Future getUint8List({ String? password, }) async { - if (!await HiveUtil.canBackup()) return null; try { String tmpPassword = password ?? await ConfigDao.getBackupPassword(); List tokens = await TokenDao.listTokens(); diff --git a/lib/Utils/app_provider.dart b/lib/Utils/app_provider.dart index c2ab0da6..a20ca9e6 100644 --- a/lib/Utils/app_provider.dart +++ b/lib/Utils/app_provider.dart @@ -66,11 +66,69 @@ Queue autoBackupQueue = Queue(); AppProvider appProvider = AppProvider(); +enum AutoLockTime { + immediately, + after30Seconds, + after1Minute, + after3Minutes, + after5Minutes, + after10Minutes; + + int get seconds { + switch (this) { + case AutoLockTime.immediately: + return 0; + case AutoLockTime.after30Seconds: + return 30; + case AutoLockTime.after1Minute: + return 60; + case AutoLockTime.after3Minutes: + return 60 * 3; + case AutoLockTime.after5Minutes: + return 60 * 5; + case AutoLockTime.after10Minutes: + return 60 * 10; + } + } + + String get label { + switch (this) { + case AutoLockTime.immediately: + return S.current.immediatelyLock; + case AutoLockTime.after30Seconds: + return S.current.after30SecondsLock; + case AutoLockTime.after1Minute: + return S.current.after1MinuteLock; + case AutoLockTime.after3Minutes: + return S.current.after3MinutesLock; + case AutoLockTime.after5Minutes: + return S.current.after5MinutesLock; + case AutoLockTime.after10Minutes: + return S.current.after10MinutesLock; + default: + return ""; + } + } + + static List> options() { + return [ + Tuple2(S.current.immediatelyLock, AutoLockTime.immediately), + Tuple2(S.current.after30SecondsLock, AutoLockTime.after30Seconds), + Tuple2(S.current.after1MinuteLock, AutoLockTime.after1Minute), + Tuple2(S.current.after3MinutesLock, AutoLockTime.after3Minutes), + Tuple2(S.current.after5MinutesLock, AutoLockTime.after5Minutes), + Tuple2(S.current.after10MinutesLock, AutoLockTime.after10Minutes), + ]; + } +} + class AppProvider with ChangeNotifier { String currentDatabasePassword = ""; String latestVersion = ""; + bool hasJumpToFilePicker = false; + final List _autoBackupLogs = []; List get autoBackupLogs => _autoBackupLogs; @@ -335,42 +393,18 @@ class AppProvider with ChangeNotifier { ]; } - int _autoLockTime = HiveUtil.getInt(HiveUtil.autoLockTimeKey); + AutoLockTime _autoLockTime = HiveUtil.getAutoLockTime(); - int get autoLockTime => _autoLockTime; + AutoLockTime get autoLockTime => _autoLockTime; - set autoLockTime(int value) { + set autoLockTime(AutoLockTime value) { if (value != _autoLockTime) { _autoLockTime = value; notifyListeners(); - HiveUtil.put(HiveUtil.autoLockTimeKey, value); + HiveUtil.setAutoLockTime(value); } } - static String getAutoLockOptionLabel(int time) { - switch (time) { - case 0: - return S.current.immediatelyLock; - case 1: - return S.current.after1MinuteLock; - case 5: - return S.current.after5MinutesLock; - case 10: - return S.current.after10MinutesLock; - default: - return ""; - } - } - - static List> getAutoLockOptions() { - return [ - Tuple2(S.current.immediatelyLock, 0), - Tuple2(S.current.after1MinuteLock, 1), - Tuple2(S.current.after5MinutesLock, 5), - Tuple2(S.current.after10MinutesLock, 10), - ]; - } - Brightness? getBrightness() { if (_themeMode == ActiveThemeMode.system) { return null; diff --git a/lib/Utils/biometric_util.dart b/lib/Utils/biometric_util.dart index e04d565e..dfb768c5 100644 --- a/lib/Utils/biometric_util.dart +++ b/lib/Utils/biometric_util.dart @@ -2,6 +2,15 @@ import 'package:biometric_storage/biometric_storage.dart'; import 'package:cloudotp/Utils/ilogger.dart'; import '../generated/l10n.dart'; +import 'itoast.dart'; + +extension AvailableBiometric on CanAuthenticateResponse { + bool get isAvailable => + this != CanAuthenticateResponse.unsupported && + this != CanAuthenticateResponse.statusUnknown; + + bool get isSuccess => this == CanAuthenticateResponse.success; +} class BiometricUtil { static const String databasePassswordStorageKey = "CloudOTP-DatabasePassword"; @@ -11,6 +20,26 @@ class BiometricUtil { return await BiometricStorage().canAuthenticate(); } + static Future getCanAuthenticateResponseString() async { + CanAuthenticateResponse response = await canAuthenticate(); + switch (response) { + case CanAuthenticateResponse.success: + return null; + case CanAuthenticateResponse.errorHwUnavailable: + return S.current.biometricErrorHwUnavailable; + case CanAuthenticateResponse.errorNoBiometricEnrolled: + return S.current.biometricErrorNoBiometricEnrolled; + case CanAuthenticateResponse.errorNoHardware: + return S.current.biometricErrorNoHardware; + case CanAuthenticateResponse.errorPasscodeNotSet: + return S.current.biometricErrorPasscodeNotSet; + case CanAuthenticateResponse.unsupported: + return S.current.biometricErrorUnsupported; + default: + return S.current.biometricErrorUnkown; + } + } + static Future isBiometricAvailable() async { final response = await BiometricStorage().canAuthenticate(); if (response != CanAuthenticateResponse.success) { @@ -35,16 +64,26 @@ class BiometricUtil { return response == CanAuthenticateResponse.success; } - static Future initStorage() async { + static Future initStorage({ + bool forceInit = false, + }) async { bool isAvailable = await isBiometricAvailable(); - if (!isAvailable) { - return; - } + if (!isAvailable) return; databasePassswordStorage = await BiometricStorage().getStorage( databasePassswordStorageKey, + forceInit: forceInit, ); } + static Future exists() async { + try { + await initStorage(forceInit: true); + return false; + } catch (e) { + return true; + } + } + static Future getDatabasePassword() async { if (databasePassswordStorage == null) { await initStorage(); @@ -84,7 +123,35 @@ class BiometricUtil { return true; } catch (e, t) { ILogger.error("Failed to save database password: $e\n$t"); + if (e is AuthException) { + switch (e.code) { + case AuthExceptionCode.userCanceled: + IToast.showTop(S.current.biometricUserCanceled); + break; + case AuthExceptionCode.timeout: + IToast.showTop(S.current.biometricTimeout); + break; + case AuthExceptionCode.unknown: + IToast.showTop(S.current.biometricLockout); + break; + case AuthExceptionCode.canceled: + default: + IToast.showTop(S.current.biometricError); + break; + } + } return false; } } + + static Future clearDatabasePassword() async { + if (databasePassswordStorage == null) { + return; + } + try { + await databasePassswordStorage!.delete(); + } catch (e, t) { + ILogger.error("Failed to delete database password: $e\n$t"); + } + } } diff --git a/lib/Utils/constant.dart b/lib/Utils/constant.dart index e14ba296..4817d600 100644 --- a/lib/Utils/constant.dart +++ b/lib/Utils/constant.dart @@ -1,3 +1,4 @@ +import 'package:cloudotp/Utils/responsive_util.dart'; import 'package:flutter/cupertino.dart'; import 'package:local_auth_android/local_auth_android.dart'; @@ -26,6 +27,10 @@ const int defaultHOTPPeriod = 15; const String placeholderText = "*"; const String hotpPlaceholderText = "*"; +const bool defaultEnableSafeMode = true; + +const windowsKeyPath = r'SOFTWARE\Cloudchewie\CloudOTP'; + String shareAppText = S.current.shareAppText(officialWebsite); const String feedbackEmail = "2014027378@qq.com"; String feedbackSubject = S.current.feedbackSubject; @@ -48,7 +53,9 @@ AndroidAuthMessages androidAuthMessages = AndroidAuthMessages( goToSettingsButton: S.current.biometricGoToSettingsButton, biometricNotRecognized: S.current.biometricNotRecognized, goToSettingsDescription: S.current.biometricGoToSettingsDescription, - biometricHint: S.current.biometricHint, + biometricHint: ResponsiveUtil.isWindows() + ? S.current.biometricReasonWindows("CloudOTP") + : S.current.biometricReason("CloudOTP"), biometricSuccess: S.current.biometricSuccess, signInTitle: S.current.biometricSignInTitle, deviceCredentialsRequiredTitle: diff --git a/lib/Utils/file_util.dart b/lib/Utils/file_util.dart index aebfe735..9801d775 100644 --- a/lib/Utils/file_util.dart +++ b/lib/Utils/file_util.dart @@ -1,12 +1,16 @@ +import 'dart:ffi'; import 'dart:io'; import 'package:cloudotp/Models/github_response.dart'; +import 'package:cloudotp/Utils/app_provider.dart'; +import 'package:cloudotp/Utils/constant.dart'; import 'package:cloudotp/Utils/responsive_util.dart'; import 'package:cloudotp/Utils/uri_util.dart'; import 'package:cloudotp/Utils/utils.dart'; import 'package:cloudotp/Widgets/Dialog/dialog_builder.dart'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:dio/dio.dart'; +import 'package:ffi/ffi.dart'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; @@ -16,6 +20,7 @@ import 'package:path/path.dart'; import 'package:path_provider/path_provider.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:saf/saf.dart'; +import 'package:win32/win32.dart'; import '../../Utils/ilogger.dart'; import '../Widgets/Dialog/custom_dialog.dart'; @@ -23,6 +28,8 @@ import '../generated/l10n.dart'; import 'itoast.dart'; import 'notification_util.dart'; +enum WindowsVersion { installed, portable } + class FileUtil { static Future getDirectoryBySAF() async { Saf saf = Saf("/Documents"); @@ -57,6 +64,7 @@ class FileUtil { }) async { FilePickerResult? result; try { + appProvider.hasJumpToFilePicker = true; result = await FilePicker.platform.pickFiles( dialogTitle: dialogTitle, initialDirectory: initialDirectory, @@ -74,6 +82,8 @@ class FileUtil { } catch (e, t) { ILogger.error("Failed to pick files", e, t); IToast.showTop(S.current.pleaseGrantFilePermission); + } finally { + appProvider.hasJumpToFilePicker = false; } return result; } @@ -89,6 +99,7 @@ class FileUtil { }) async { String? result; try { + appProvider.hasJumpToFilePicker = true; result = await FilePicker.platform.saveFile( dialogTitle: dialogTitle, initialDirectory: initialDirectory, @@ -101,6 +112,8 @@ class FileUtil { } catch (e, t) { ILogger.error("Failed to save file", e, t); IToast.showTop(S.current.pleaseGrantFilePermission); + } finally { + appProvider.hasJumpToFilePicker = false; } return result; } @@ -112,6 +125,7 @@ class FileUtil { }) async { String? result; try { + appProvider.hasJumpToFilePicker = true; if (Platform.isAndroid) { DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo; @@ -128,6 +142,8 @@ class FileUtil { } catch (e, t) { ILogger.error("Failed to get directory path", e, t); IToast.showTop(S.current.pleaseGrantFilePermission); + } finally { + appProvider.hasJumpToFilePicker = false; } return result; } @@ -409,6 +425,50 @@ class FileUtil { return resAsset; } + WindowsVersion checkWindowsVersion() { + final key = calloc(); + final result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT(windowsKeyPath), 0, + REG_SAM_FLAGS.KEY_READ, key); + if (result == WIN32_ERROR.ERROR_SUCCESS) { + + WindowsVersion tmp = WindowsVersion.installed; + + // final installPathPtr = calloc(260); + // final dataSize = calloc(); + // dataSize.value = 260 * 2; + // final queryResult = RegQueryValueEx(key.value, TEXT('InstallPath'), + // nullptr, nullptr, installPathPtr.cast(), dataSize); + // if (queryResult == WIN32_ERROR.ERROR_SUCCESS) { + // final currentPath = Platform.resolvedExecutable; + // final installPath = installPathPtr.toDartString(); + // print("currentPath: $currentPath installPath: $installPath"); + // tmp = installPath == currentPath + // ? WindowsVersion.installed + // : WindowsVersion.portable; + // } else { + // tmp = WindowsVersion.portable; + // } + + RegCloseKey(key.value); + calloc.free(key); + // calloc.free(installPathPtr); + // calloc.free(dataSize); + return tmp; + } else { + calloc.free(key); + return WindowsVersion.portable; + } + } + + static ReleaseAsset getWindowsAsset(String latestVersion, ReleaseItem item) { + final windowsVersion = FileUtil().checkWindowsVersion(); + if (windowsVersion == WindowsVersion.installed) { + return getWindowsInstallerAsset(latestVersion, item); + } else { + return getWindowsPortableAsset(latestVersion, item); + } + } + static ReleaseAsset getWindowsPortableAsset( String latestVersion, ReleaseItem item) { var asset = item.assets.firstWhere((element) => diff --git a/lib/Utils/hive_util.dart b/lib/Utils/hive_util.dart index 045fcff0..e1902ef5 100644 --- a/lib/Utils/hive_util.dart +++ b/lib/Utils/hive_util.dart @@ -3,6 +3,7 @@ import 'dart:convert'; import 'package:cloudotp/Database/config_dao.dart'; import 'package:cloudotp/Resources/theme_color_data.dart'; import 'package:cloudotp/Screens/home_screen.dart'; +import 'package:cloudotp/Utils/app_provider.dart'; import 'package:cloudotp/Utils/enums.dart'; import 'package:cloudotp/Utils/file_util.dart'; import 'package:cloudotp/Utils/responsive_util.dart'; @@ -98,7 +99,7 @@ class HiveUtil { static const String enableGuesturePasswdKey = "enableGuesturePasswd"; static const String guesturePasswdKey = "guesturePasswd"; static const String enableBiometricKey = "enableBiometric"; - static const String enableDatabaseBiometricKey = "enableDatabaseBiometric"; + static const String allowDatabaseBiometricKey = "allowDatabaseBiometric"; static const String autoLockKey = "autoLock"; static const String autoLockTimeKey = "autoLockTime"; static const String enableSafeModeKey = "enableSafeMode"; @@ -109,7 +110,7 @@ class HiveUtil { static initConfig() async { await HiveUtil.put(HiveUtil.inappWebviewKey, true); await HiveUtil.put(HiveUtil.layoutTypeKey, LayoutType.Compact.index); - await HiveUtil.put(HiveUtil.enableSafeModeKey, true); + await HiveUtil.put(HiveUtil.enableSafeModeKey, defaultEnableSafeMode); await HiveUtil.put(HiveUtil.autoFocusSearchBarKey, false); await HiveUtil.put(HiveUtil.maxBackupsCountKey, defaultMaxBackupCount); await HiveUtil.put(HiveUtil.backupPathKey, await FileUtil.getBackupDir()); @@ -123,6 +124,15 @@ class HiveUtil { return enableCloudBackup && autoBackupPassword.isNotEmpty; } + static AutoLockTime getAutoLockTime() { + return AutoLockTime.values[HiveUtil.getInt(HiveUtil.autoLockTimeKey) + .clamp(0, AutoLockTime.values.length - 1)]; + } + + static Future setAutoLockTime(AutoLockTime time) async { + await HiveUtil.put(HiveUtil.autoLockTimeKey, time.index); + } + static int getMaxBackupsCount() { return getInt(HiveUtil.maxBackupsCountKey, defaultValue: defaultMaxBackupCount); @@ -385,10 +395,16 @@ class HiveUtil { static bool shouldAutoLock() => canLock() && HiveUtil.getBool(HiveUtil.autoLockKey); - static bool canLock() => + static bool canLock() => canGuestureLock() || canDatabaseLock(); + + static bool canGuestureLock() => HiveUtil.getBool(HiveUtil.enableGuesturePasswdKey) && - HiveUtil.getString(HiveUtil.guesturePasswdKey) != null && - HiveUtil.getString(HiveUtil.guesturePasswdKey)!.isNotEmpty; + Utils.isNotEmpty(HiveUtil.getString(HiveUtil.guesturePasswdKey)); + + static bool canDatabaseLock() => + HiveUtil.getEncryptDatabaseStatus() == + EncryptDatabaseStatus.customPassword && + DatabaseManager.isDatabaseEncrypted; static Map getCookie() { Map map = {}; diff --git a/lib/Utils/responsive_util.dart b/lib/Utils/responsive_util.dart index 95b1364a..30d60cb7 100644 --- a/lib/Utils/responsive_util.dart +++ b/lib/Utils/responsive_util.dart @@ -42,21 +42,6 @@ class ResponsiveUtil { } } - static Future returnToMainScreen(BuildContext context) async { - if (ResponsiveUtil.isDesktop()) { - desktopNavigatorKey = GlobalKey(); - globalNavigatorState?.pushAndRemoveUntil( - RouteUtil.getFadeRoute(const MainScreen(), duration: Duration.zero), - (route) => false, - ); - } else { - Navigator.pushAndRemoveUntil( - context, - CupertinoPageRoute(builder: (context) => const MainScreen()), - (route) => false); - } - } - static Future maximizeOrRestore() async { if (await windowManager.isMaximized()) { windowManager.restore(); diff --git a/lib/Utils/utils.dart b/lib/Utils/utils.dart index f833f389..eb34d02a 100644 --- a/lib/Utils/utils.dart +++ b/lib/Utils/utils.dart @@ -361,7 +361,7 @@ class Utils { if (showLoading) { CustomLoadingDialog.showLoading(title: S.current.checkingUpdates); } - String currentVersion = (await PackageInfo.fromPlatform()).version; + String currentVersion ="0.0.0"?? (await PackageInfo.fromPlatform()).version; onGetCurrentVersion?.call(currentVersion); String latestVersion = "0.0.0"; await GithubApi.getReleases("Robert-Stackflow", "CloudOTP") @@ -395,11 +395,11 @@ class Utils { DialogBuilder.showConfirmDialog( context, renderHtml: true, + messageTextAlign: TextAlign.start, title: S.current.getNewVersion(latestVersion), message: S.current.doesImmediateUpdate + S.current.updateLogAsFollow( "
${Utils.replaceLineBreak(latestReleaseItem.body ?? "")}"), - messageTextAlign: TextAlign.start, confirmButtonText: S.current.immediatelyDownload, cancelButtonText: S.current.updateLater, onTapConfirm: () async { @@ -473,14 +473,10 @@ class Utils { } static localAuth({Function()? onAuthed}) async { + if (ResponsiveUtil.isDesktop()) return; LocalAuthentication localAuth = LocalAuthentication(); try { - String appName = (await PackageInfo.fromPlatform()).appName; - await localAuth - .authenticate( - localizedReason: ResponsiveUtil.isWindows() - ? S.current.biometricReasonWindows(appName) - : S.current.biometricReason(appName), + await localAuth.authenticate( authMessages: [ androidAuthMessages, androidAuthMessages, @@ -489,9 +485,10 @@ class Utils { options: const AuthenticationOptions( useErrorDialogs: false, stickyAuth: true, + biometricOnly: true, ), - ) - .then((value) { + localizedReason: ' ', + ).then((value) { if (value) { onAuthed?.call(); } diff --git a/lib/Widgets/BottomSheet/add_bottom_sheet.dart b/lib/Widgets/BottomSheet/add_bottom_sheet.dart index a08aeb76..af1788cf 100644 --- a/lib/Widgets/BottomSheet/add_bottom_sheet.dart +++ b/lib/Widgets/BottomSheet/add_bottom_sheet.dart @@ -137,7 +137,7 @@ class AddBottomSheetState extends State ItemBuilder.buildDivider(context, horizontal: 10, vertical: 0), if (!widget.onlyShowScanner) _buildOptions(), - if (!widget.onlyShowScanner) const SizedBox(height: 20), + // if (!widget.onlyShowScanner) const SizedBox(height: 20), ], ), ), diff --git a/lib/Widgets/BottomSheet/list_bottom_sheet.dart b/lib/Widgets/BottomSheet/list_bottom_sheet.dart index f0a67bce..2efd8b89 100644 --- a/lib/Widgets/BottomSheet/list_bottom_sheet.dart +++ b/lib/Widgets/BottomSheet/list_bottom_sheet.dart @@ -86,7 +86,7 @@ class TileList extends StatelessWidget { if (showCancel) ItemBuilder.buildEntryItem( title: S.current.cancel, - backgroundColor: Theme.of(context).cardColor.withAlpha(127), + backgroundColor: Colors.grey.withOpacity(0.1), showTrailing: false, onTap: onCloseTap, context: context, diff --git a/lib/Widgets/Custom/keyboard_handler.dart b/lib/Widgets/Custom/keyboard_handler.dart index e8a651ef..e5aa8595 100644 --- a/lib/Widgets/Custom/keyboard_handler.dart +++ b/lib/Widgets/Custom/keyboard_handler.dart @@ -66,7 +66,7 @@ class KeyboardHandlerState extends State { onInvoke: (_) { mainScreenState?.goHome(); if (HiveUtil.canLock()) { - mainScreenState?.jumpToPinVerify(); + mainScreenState?.jumpToLock(); } else { IToast.showTop(S.current.noGestureLock); } diff --git a/lib/Widgets/Dialog/custom_dialog.dart b/lib/Widgets/Dialog/custom_dialog.dart index 54cc2c05..73960650 100644 --- a/lib/Widgets/Dialog/custom_dialog.dart +++ b/lib/Widgets/Dialog/custom_dialog.dart @@ -27,7 +27,7 @@ class CustomInfoDialog { EdgeInsets? margin, EdgeInsets? padding, bool barrierDismissible = true, - bool renderHtml = true, + bool renderHtml = false, Alignment align = Alignment.bottomCenter, bool topRadius = true, bool bottomRadius = true, @@ -70,7 +70,7 @@ class CustomInfoDialog { EdgeInsets? margin, EdgeInsets? padding, bool barrierDismissible = true, - bool renderHtml = true, + bool renderHtml = false, Alignment align = Alignment.bottomCenter, }) => showGeneralDialog( @@ -120,7 +120,7 @@ class CustomInfoDialog { EdgeInsets? margin, EdgeInsets? padding, bool barrierDismissible = true, - bool renderHtml = true, + bool renderHtml = false, Alignment align = Alignment.bottomCenter, }) => showGeneralDialog( @@ -170,7 +170,7 @@ class CustomInfoDialog { EdgeInsets? margin, EdgeInsets? padding, bool barrierDismissible = true, - bool renderHtml = true, + bool renderHtml = false, Alignment align = Alignment.bottomCenter, }) => showGeneralDialog( @@ -220,7 +220,7 @@ class CustomInfoDialog { EdgeInsets? margin, EdgeInsets? padding, bool barrierDismissible = true, - bool renderHtml = true, + bool renderHtml = false, Alignment align = Alignment.bottomCenter, bool topRadius = true, bool bottomRadius = true, @@ -274,7 +274,7 @@ class CustomInfoDialog { EdgeInsets? margin, EdgeInsets? padding, bool barrierDismissible = true, - bool renderHtml = true, + bool renderHtml = false, Alignment align = Alignment.bottomCenter, }) => showGeneralDialog( @@ -324,7 +324,7 @@ class CustomInfoDialog { EdgeInsets? margin, EdgeInsets? padding, bool barrierDismissible = true, - bool renderHtml = true, + bool renderHtml = false, Alignment align = Alignment.bottomCenter, }) => showGeneralDialog( @@ -378,7 +378,7 @@ class CustomConfirmDialog { EdgeInsets? margin, EdgeInsets? padding, bool barrierDismissible = true, - bool renderHtml = true, + bool renderHtml = false, Alignment align = Alignment.bottomCenter, }) => showDialog( @@ -421,7 +421,7 @@ class CustomConfirmDialog { EdgeInsets? margin, EdgeInsets? padding, bool barrierDismissible = true, - bool renderHtml = true, + bool renderHtml = false, Alignment align = Alignment.bottomCenter, }) => showGeneralDialog( @@ -475,7 +475,7 @@ class CustomConfirmDialog { EdgeInsets? margin, EdgeInsets? padding, bool barrierDismissible = true, - bool renderHtml = true, + bool renderHtml = false, Alignment align = Alignment.bottomCenter, }) => showGeneralDialog( @@ -529,7 +529,7 @@ class CustomConfirmDialog { EdgeInsets? margin, EdgeInsets? padding, bool barrierDismissible = true, - bool renderHtml = true, + bool renderHtml = false, Alignment align = Alignment.bottomCenter, }) => showGeneralDialog( @@ -583,7 +583,7 @@ class CustomConfirmDialog { EdgeInsets? margin, EdgeInsets? padding, bool barrierDismissible = true, - bool renderHtml = true, + bool renderHtml = false, Alignment align = Alignment.bottomCenter, }) => showGeneralDialog( @@ -637,7 +637,7 @@ class CustomConfirmDialog { EdgeInsets? margin, EdgeInsets? padding, bool barrierDismissible = true, - bool renderHtml = true, + bool renderHtml = false, Alignment align = Alignment.bottomCenter, }) => showGeneralDialog( @@ -691,7 +691,7 @@ class CustomConfirmDialog { EdgeInsets? margin, EdgeInsets? padding, bool barrierDismissible = true, - bool renderHtml = true, + bool renderHtml = false, Alignment align = Alignment.bottomCenter, }) => showGeneralDialog( diff --git a/lib/Widgets/Dialog/dialog_builder.dart b/lib/Widgets/Dialog/dialog_builder.dart index d1a4790c..665844b3 100644 --- a/lib/Widgets/Dialog/dialog_builder.dart +++ b/lib/Widgets/Dialog/dialog_builder.dart @@ -25,7 +25,7 @@ class DialogBuilder { EdgeInsets? margin, EdgeInsets? padding, bool barrierDismissible = true, - bool renderHtml = true, + bool renderHtml = false, Alignment align = Alignment.bottomCenter, bool responsive = true, }) { @@ -89,7 +89,7 @@ class DialogBuilder { EdgeInsets? margin, EdgeInsets? padding, bool barrierDismissible = true, - bool renderHtml = true, + bool renderHtml = false, Alignment align = Alignment.bottomCenter, bool responsive = true, bool topRadius = true, diff --git a/lib/Widgets/Dialog/widgets/qrcodes_dialog_widget.dart b/lib/Widgets/Dialog/widgets/qrcodes_dialog_widget.dart index abf0abd3..4e5c51e8 100644 --- a/lib/Widgets/Dialog/widgets/qrcodes_dialog_widget.dart +++ b/lib/Widgets/Dialog/widgets/qrcodes_dialog_widget.dart @@ -58,8 +58,12 @@ class QrcodesDialogWidgetState extends State { ? const EdgeInsets.all(24) : EdgeInsets.zero, decoration: BoxDecoration( - color: MyTheme.getCardBackground(context), - borderRadius: BorderRadius.circular(15), + color: Theme.of(context).canvasColor, + borderRadius: BorderRadius.vertical( + top: const Radius.circular(20), + bottom: ResponsiveUtil.isWideLandscape() + ? const Radius.circular(20) + : Radius.zero), ), child: ListView( padding: const EdgeInsets.symmetric(vertical: 24), diff --git a/lib/Widgets/Item/item_builder.dart b/lib/Widgets/Item/item_builder.dart index 15471c7d..3a4907cc 100644 --- a/lib/Widgets/Item/item_builder.dart +++ b/lib/Widgets/Item/item_builder.dart @@ -1673,6 +1673,7 @@ class ItemBuilder { TextStyle? textStyle, double? width, bool align = false, + bool disabled = false, bool feedback = false, bool reversePosition = false, }) { @@ -1683,7 +1684,9 @@ class ItemBuilder { color: color ?? (background != null ? Colors.white - : Theme.of(context).textTheme.titleSmall?.color), + : disabled + ? Colors.grey + : Theme.of(context).textTheme.titleSmall?.color), fontWeightDelta: 2, fontSizeDelta: fontSizeDelta, ), @@ -1694,7 +1697,7 @@ class ItemBuilder { color: background ?? Theme.of(context).cardColor, borderRadius: BorderRadius.circular(radius), child: InkWell( - onTap: onTap != null + onTap: onTap != null && !disabled ? () { onTap(); if (feedback) HapticFeedback.lightImpact(); diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 20e2decb..e7d3097c 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -52,6 +52,7 @@ "goToUpdate": "Go to Update", "updateLater": "Do not update for now", "immediatelyInstall": "Install immediately", + "installPortableTip": "You are currently using the portable version, please manually decompress the installation package and overwrite the original files", "installing": "Installing...", "installCanceled": "Installation canceled", "installFileNotFound": "Installation file {filepath} not found", @@ -314,42 +315,52 @@ "setGestureLockSuccess": "Gesture password set successfully", "gestureLockWrong": "Password error, please redraw", "verifyGestureLock": "Verify gesture password", - "biometric": "Biometric recognition", - "biometricErrorHwUnavailable": "The current device does not support biometrics", + "enableBiometricSuccess": "Biometrics enabled successfully", + "biometric": "biometric", + "biometricUnlock": "Unlock using biometrics", + "biometricUnlockTip": "Authentication only through biometrics; only supports Android, IOS, Windows devices; only PIN code verification is supported on Windows devices", + "biometricDecryptDatabase": "Use biometric decrypt database", + "biometricDecryptDatabaseTip": "Use biometric technology to encrypt and store your database password, and use biometrics to decrypt the database when you start the application; when the biometric information of the device is changed (such as adding a fingerprint), you need to re-verify the biometric before you can use it.", + "biometricChanged": "The device biometric information has changed, please re-verify before enabling", + "biometricErrorHwUnavailable": "The current device's biometric hardware is unavailable", "biometricErrorNoBiometricEnrolled": "The current device has not entered biometrics", "biometricErrorNoHardware": "The current device does not support biometrics", "biometricErrorPasscodeNotSet": "The current device does not have a lock screen password set", "biometricErrorUnkown": "Unknown error", - "enableBiometricSuccess": "Biometric recognition is enabled successfully", - "biometricTip": "Only supports Android, IOS, and Windows devices; only PIN is supported on Windows devices", + "biometricErrorUnsupported": "The current platform does not support biometrics", "biometricVerifyPin": "Verify PIN", - "biometricVerifyFingerprint": "Fingerprint recognition", "biometricVerifySuccess": "Verification successful", "biometricToSaveDatabasePassword": "Perform fingerprint verification to save database password", "biometricToDecryptDatabase": "Perform fingerprint verification to decrypt database", - "biometricReason": "Perform fingerprint verification to use {appName}", + "biometricReason": "Fingerprint verification to use {appName}", "biometricReasonWindows": "Verify PIN to use {appName}", "biometricCancelButton": "Cancel", "biometricGoToSettingsButton": "Go to settings", "biometricNotRecognized": "Fingerprint recognition failed", "biometricGoToSettingsDescription": "Please set fingerprint", "biometricHint": "", - "biometricSuccess": "Fingerprint recognition is successful", - "biometricSignInTitle": "Fingerprint verification", - "biometricDeviceCredentialsRequiredTitle": "Please enroll your fingerprint first!", + "biometricUserCanceled": "User canceled operation", + "biometricTimeout": "Operation timeout", + "biometricUnknown": "Verification failed, maybe too many attempts", + "biometricError": "Verification failed", + "biometricSuccess": "Fingerprint recognition successful", + "biometricSignInTitle": "Fingerprint Verification", + "biometricDeviceCredentialsRequiredTitle": "Please enter your fingerprint first!", "biometricNotAvailable": "Your device does not support biometrics", - "biometricNotEnrolled": "Your device has not enrolled your fingerprint", - "biometricLockout": "The biometric function has been locked. Please try again later", - "biometricLockoutPermanent": "The biometric function has been permanently locked. Please use other methods to unlock", + "biometricNotEnrolled": "Your device did not register fingerprints", + "biometricLockout": "The biometric function has been locked, please try again later", + "biometricLockoutPermanent": "The biometric function has been permanently locked, please use other methods to unlock", "biometricOtherReason": "Unknown reason: {reason}", "drawOldGestureLock": "Please draw the old gesture password", "drawNewGestureLock": "Draw a new gesture password", "autoLock": "Auto-lock in the background", - "autoLockTip": "On Windows, Linux, and MacOS devices, when the window is minimized or minimized to the tray, it means it is in the background", + "autoLockTip": "When gesture password or custom database password is enabled, the automatic lock function is supported; On Windows, Linux, and MacOS devices, when the window is minimized or minimized to the tray, it means it is in the background", "autoLockDelay": "Auto-lock timing", "chooseAutoLockDelay": "Choose when to automatically lock", "immediatelyLock": "Lock immediately", + "after30SecondsLock": "Lock after 30 seconds in the background", "after1MinuteLock": "Lock after 1 minute in the background", + "after3MinutesLock": "Lock after 3 minutes in the background", "after5MinutesLock": "Lock after 5 minutes in the background", "after10MinutesLock": "Lock after 10 minutes in the background", "safeMode": "Safe Mode", diff --git a/lib/l10n/intl_zh_CN.arb b/lib/l10n/intl_zh_CN.arb index 3d18ecf3..3566d847 100644 --- a/lib/l10n/intl_zh_CN.arb +++ b/lib/l10n/intl_zh_CN.arb @@ -47,6 +47,7 @@ "goToUpdate": "前往更新", "updateLater": "暂不更新", "immediatelyInstall": "立即安装", + "installPortableTip": "您当前正在使用便携版,请手动解压缩安装包并覆盖原有文件", "installing": "安装中...", "installCanceled": "安装已取消", "installFileNotFound": "安装包{filepath}不存在", @@ -311,16 +312,20 @@ "setGestureLockSuccess": "手势密码设置成功", "gestureLockWrong": "密码错误, 请重新绘制", "verifyGestureLock": "验证手势密码", + "enableBiometricSuccess": "生物识别开启成功", "biometric": "生物识别", - "biometricErrorHwUnavailable": "当前设备不支持生物识别", + "biometricUnlock": "使用生物识别解锁", + "biometricUnlockTip": "仅通过生物识别进行身份验证;仅支持Android、IOS、Windows设备;Windows设备上仅支持PIN码验证", + "biometricDecryptDatabase": "使用生物识别解密数据库", + "biometricChanged": "设备生物识别信息已更改,请重新验证后启用", + "biometricDecryptDatabaseTip": "使用生物识别技术加密存储您的数据库密码,当启动应用时使用生物识别解密数据库;当舍设备的生物识别信息更改(如添加指纹)后,需要重新验证生物识别后才能使用", + "biometricErrorHwUnavailable": "当前设备的生物识别硬件不可用", "biometricErrorNoBiometricEnrolled": "当前设备未录入生物识别", "biometricErrorNoHardware": "当前设备不支持生物识别", "biometricErrorPasscodeNotSet": "当前设备未设置锁屏密码", "biometricErrorUnkown": "未知错误", - "enableBiometricSuccess": "生物识别开启成功", - "biometricTip": "仅支持Android、IOS、Windows设备;Windows设备上仅支持PIN", + "biometricErrorUnsupported": "当前平台不支持生物识别", "biometricVerifyPin": "验证PIN", - "biometricVerifyFingerprint": "指纹识别", "biometricVerifySuccess": "验证成功", "biometricToSaveDatabasePassword": "进行指纹验证以保存数据库密码", "biometricToDecryptDatabase": "进行指纹验证以解密数据库", @@ -331,22 +336,28 @@ "biometricNotRecognized": "指纹识别失败", "biometricGoToSettingsDescription": "请设置指纹", "biometricHint": "", + "biometricUserCanceled": "用户取消操作", + "biometricTimeout": "操作超时", + "biometricUnknown": "验证失败,可能是尝试次数过多", + "biometricError": "验证失败", "biometricSuccess": "指纹识别成功", "biometricSignInTitle": "指纹验证", "biometricDeviceCredentialsRequiredTitle": "请先录入指纹!", "biometricNotAvailable": "您的设备不支持生物识别", - "biometricNotEnrolled": "您的设备未录入指纹", + "biometricNotEnrolled": "您的设备未录入生物识别", "biometricLockout": "生物识别功能已被锁定,请稍后再试", "biometricLockoutPermanent": "生物识别功能已被永久锁定,请使用其他方式解锁", "biometricOtherReason": "未知原因:{reason}", "drawOldGestureLock": "请绘制旧手势密码", "drawNewGestureLock": "绘制新手势密码", "autoLock": "处于后台自动锁定", - "autoLockTip": "在Windows、Linux、MacOS设备中,窗口最小化或最小化至托盘时即表示处于后台", + "autoLockTip": "当启用手势密码或自定义数据库密码后,支持自动锁定功能;在Windows、Linux、MacOS设备中,窗口最小化或最小化至托盘时即表示处于后台", "autoLockDelay": "自动锁定时机", "chooseAutoLockDelay": "选择自动锁定时机", "immediatelyLock": "立即锁定", + "after30SecondsLock": "处于后台30秒后锁定", "after1MinuteLock": "处于后台1分钟后锁定", + "after3MinutesLock": "处于后台3分钟后锁定", "after5MinutesLock": "处于后台5分钟后锁定", "after10MinutesLock": "处于后台10分钟后锁定", "safeMode": "安全模式", diff --git a/lib/main.dart b/lib/main.dart index a2bced91..0ab06717 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -62,7 +62,7 @@ Future runMyApp(List args) async { late Widget home; if (!DatabaseManager.initialized) { home = const DatabaseDecryptScreen(); - } else if (HiveUtil.canLock()) { + } else if (HiveUtil.canGuestureLock()) { home = const PinVerifyScreen( isModal: true, autoAuth: true, @@ -170,7 +170,7 @@ class MyApp extends StatelessWidget { const MyApp({ super.key, - this.home = const MainScreen(), + required this.home, this.title = 'CloudOTP', }); @@ -240,7 +240,8 @@ class MyApp extends StatelessWidget { .copyWith(textScaler: TextScaler.noScaling), child: Listener( onPointerDown: (_) { - if (!ResponsiveUtil.isDesktop()) { + if (!ResponsiveUtil.isDesktop() && + homeScreenState?.hasSearchFocus == true) { FocusManager.instance.primaryFocus?.unfocus(); } }, diff --git a/pubspec.lock b/pubspec.lock index f17a5d6c..baacb2a8 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -84,11 +84,10 @@ packages: biometric_storage: dependency: "direct main" description: - name: biometric_storage - sha256: "2cc569f2dbab39950812a6ae7fefa28c7d1c1eb07d2035c88f5e27da09022f5f" - url: "https://pub.flutter-io.cn" - source: hosted - version: "5.0.1" + path: "third-party/biometric_storage" + relative: true + source: path + version: "5.1.0-rc.5" boolean_selector: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 786ee217..09bf086d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: cloudotp -version: 2.4.0+240 +version: 2.4.1+241 description: An awesome two-factor authenticator which supports cloud storage and multiple platforms. publish_to: none @@ -78,7 +78,8 @@ dependencies: share_plus: ^9.0.0 # 分享 protocol_handler: ^0.2.0 # 协议处理 url_launcher: ^6.3.0 # URL跳转 - biometric_storage: ^5.0.1 # 生物识别 + biometric_storage: + path: third-party/biometric_storage # 平台适配 saf: path: third-party/saf diff --git a/third-party/biometric_storage/CHANGELOG.md b/third-party/biometric_storage/CHANGELOG.md new file mode 100644 index 00000000..3ff45f8f --- /dev/null +++ b/third-party/biometric_storage/CHANGELOG.md @@ -0,0 +1,263 @@ +## 5.1.0-rc.5 + +* upgrade dependency to web 1.0 + +## 5.1.0-rc.4 + +* enable building on jdk 17 and up https://github.com/authpass/biometric_storage/issues/117 thanks @connyduck + +## 5.1.0-rc.3 + +* Split Split authenticationValidityDurationSeconds between android and iOS + * `darwinTouchIDAuthenticationForceReuseContextDuration`: Basically the equivalent to `androidAuthenticationValidityDuration` + * `darwinTouchIDAuthenticationAllowableReuseDuration` +* android: return correct code if no biometric is enrolled #115 @ThomasLamprecht +* web: migrate from dart:html to package:web (for wasm support). + +## 5.0.1 + +* Add option for iOS/MacOS to allow non-biometric authentication (`darwinBiometricOnly`) #101 + * Improve [canAuthenticate] to differentiate between no available biometry and no available + user code. +* Bump dart sdk requirement to `3.2`. + +## 5.0.0+4 + +* Add topics to pubspec.yaml + +## 5.0.0+3 + +* Android: Upgrade AGP, fix building with AGP 8 +* Android: Depend on slf4j-api. + +## 5.0.0+1 + +* MacOS: fix building on MacOS + +## 5.0.0 + +* Allow overriding of `promptInfo` during `read`/`write` thanks @luckyrat +* Android: (POTENTIALLY BREAKING): Completely removed deprecated old file backend + based on `androidx.security`. This was deprecated since version 3.0.0 and users + should have been migrated on every read or write. (this is only internally, does not change + anything of the API). +* Update dependencies. + +## 4.1.3 + +* iOS/MacOS: Reuse LAContext to make `touchIDAuthenticationAllowableReuseDuration` work. + thanks @radvansky-tomas + +## 4.1.2 + +* Android: Move File I/O and encryption to background thread. (Previously used UI Thread) + https://github.com/authpass/biometric_storage/pull/64 + +## 4.1.1 + +* Fix building on all platforms, add github actions to test building. + +## 4.1.0 + +* Android: Remove Moshi dependency altogether. #53 + +## 4.0.1 + +* Update to Moshi 1.13 for Kotlin 1.6.0 compatibility. #53 + +## 4.0.0 + +* Fixed compile errors with Flutter >= 2.8.0 (Compatible with Flutter 2.5). #47 fix #42 + +## 3.0.1 + +* Android: Validate options on `int` + When `authenticationValidityDurationSeconds == -1`, then `androidBiometricOnly` must be `true` +* Android: if `authenticationValidityDurationSeconds` is `> 0` only show authentication prompt when + necessary. (It will simply try to use the key, and show the auth prompt only when a + `UserNotAuthenticatedException` is thrown). +* Android: When biometric key is invalidated (e.g. because biometric security is changed on the + device), we simply delete the old key and data! (KeyPermanentlyInvalidatedException) + +## 3.0.0 + +* Stable Release 🥳 +* **Please check below for breaking changes in the `-rc` releases. + +## 3.0.0-rc.12 + +* Android: Fix a few bugs with `authenticationValidityDurationSeconds` == -1 +* iOS/MacOS: Don't set timeout for `authenticationValidityDurationSeconds` == -1 +* iOS/MacOS: Don't raise an error on `delete` if item was not found. +* Android: Fix user cancel code. + (Previously an `unknown` exception was thrown instead of `userCanceled`) +* Android: Ignore `androidBiometricOnly` prior to Android R (30). +* Introduce `AuthExceptionCode.canceled` + +## 3.0.0-rc.7 + +* **Breaking Change**: `authenticationValidityDurationSeconds` is now `-1` by default, which was + not supported before hand. If you need backward compatibility, make sure to override this value + to the previous value of `10`. +* **Breaking Change**: No more support for Android v1 Plugin registration. +* **Breaking Change**: No longer using androidx.security, but instead handle encryption + directly. Temporarily there is a fallback to read old content. This requires either reencrypting + everything, or old data will no longer be readable. + + 1. This should fix a lot of errors. + 2. This now finally also allows using `authenticationValidityDurationSeconds` = -1. + 3. `BIOMETRIC_WEAK` is no longer used, only `BIOMETRIC_STRONG`. +* Don't ask for authentication for delete. + +## 3.0.0-rc.5 + +* **Breaking Change**: due to the introduction of iOS prompt info there is now a wrapper object + `PromptInfo` which contains `AndroidPromptInfo` and `IosPromptInfo`. +* Android: Add support for local (non-biometric) storage (#28, thanks @killalad) +* Android: Update all gradle dependencies, removed gradle-wrapper from plugin folder. +* iOS: Add support for customizing prompt strings. +* MacOS: Add support for customizing prompt strings. + +## 2.0.3 + +* Android + * compatibility with kotlin 1.5.20 + * Remove jcenter() references. + * androidx.core:core:1.3.2 to 1.6.0 + * moshi from 1.11.0 to 1.12.0 (this is the kotlin 1.5.20 compatibility problem) + +## 2.0.2 + +* Android upgrade dependencies: + * androidx.security:security-crypto from 1.1.0-alpha02 to 1.1.0-alpha03 + * androidx.biometric:biometric from 1.1.0-beta01 to 1.2.0-alpha03 + * Update README to clarify minSdkVersion and kotlin version + +## 2.0.1 + +* Handle android `BIOMETRIC_STATUS_UNKNOWN` response on older devices + (Android 9/API 28(?)) + +## 2.0.0 + +* Null safety stable release. + +## 2.0.0-nullsafety.1 + +* Null safety migration. + +## 1.1.0+1 + +* upgrade android moshi dependency. + +## 1.1.0 + +* Upgrade to latest Android dependencies (gradle plugin, androidx.*, gradle plugin) + * [androidx.security:security-crypto](https://developer.android.com/jetpack/androidx/releases/security) 1.0.0-rc02 to 1.1.0-alpha02 + * [androidx.biometric:biometric](https://developer.android.com/jetpack/androidx/releases/biometric) 1.0.1 to 1.1.0-beta01 + +## 1.0.1+5 + +* Workaround to not load win32 when compiling for web. + +## 1.0.1+4 + +* Fix windows plugin config. + +## 1.0.1+1 + +* Support for web support: **Warning**: Unencrypted - stores into local storage on web! +* Updated README to add details about windows. + +## 1.0.0 + +* Windows: Initial support for windows. only unauthenticated storage in Credential Manager. + +## 0.4.1 + +* Linux: Improve snap compatibility by detecting AppArmor error to prompt users to connect + to password-manager-service. + +## 0.4.0 + +* Linux: Initial support for Linux - only unauthenticated storage in Keyring. + +## 0.3.4+6 + +* Android: androidx.security 1.0.0-rc02 needs another proguard rule. + https://github.com/google/tink/issues/361 + +## 0.3.4+5 + +* Android: Upgrade to androidx.security 1.0.0-rc02 which should fix protobuf incompatibilities + #6 https://developer.android.com/jetpack/androidx/releases/security#security-crypto-1.0.0-rc02 + +## 0.3.4+4 + +* Android: fix PromptInfo deserialization with minification. +* Android: add proguard setting to fix protobuf exceptions. + +## 0.3.4+2 + +* Android: updated dependencies to androidx.security, biometric, gradle tools. + +## 0.3.4+1 + +* Android: on error send stack trace to flutter. also fixed a couple of warnings. + +## 0.3.4 + +* Android: allow customization of the PromptInfo (labels, buttons, etc). + @patrickhammond + +## 0.3.3 + +* ios: added swift 5 dependency to podspec to fix compile errors + https://github.com/authpass/biometric_storage/issues/3 + +## 0.3.2 + +* android: fingerprint failures don't cancel the dialog, so don't trigger error callback. #2 + (fixes crash) + +## 0.3.1 + +* Use android v2 plugin API. + +## 0.3.0-beta.2 + +* Use new plugin format for Mac OS format. Not compatible with flutter 1.9.x + +## 0.2.2+2 + +* Use legacy plugin platforms structure to be compatible with flutter stable. + +## 0.2.2+1 + +* fixed home page link, updated example README. + +## 0.2.2 + +* Android: Use codegen instead of reflection for json serialization. + (Fixes bug that options aren't assed in correctly due to minification) + +## 0.2.1 + +* Android: Fix for having multiple files with different configurations. +* Correctly handle UserCanceled events. +* Define correct default values on dart side (10 seconds validity timeout). + +## 0.2.0 + +* MacOS Support + +## 0.1.0 + +* iOS Support +* Support for non-authenticated storage (ie. secure/encrypted storage, + without extra biometric authenticatiton prompts) +* delete()'ing files. + +## 0.0.1 - Initial release + +* Android Support. diff --git a/third-party/biometric_storage/LICENSE b/third-party/biometric_storage/LICENSE new file mode 100644 index 00000000..c8b048f3 --- /dev/null +++ b/third-party/biometric_storage/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Herbert Poul (@hpoul) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/third-party/biometric_storage/README.md b/third-party/biometric_storage/README.md new file mode 100644 index 00000000..d41886c2 --- /dev/null +++ b/third-party/biometric_storage/README.md @@ -0,0 +1,117 @@ +# biometric_storage + +[![Pub](https://img.shields.io/pub/v/biometric_storage?color=green)](https://pub.dev/packages/biometric_storage/) + +Encrypted file store, **optionally** secured by biometric lock +for Android, iOS, MacOS and partial support for Linux, Windows and Web. + +Meant as a way to store small data in a hardware encrypted fashion. E.g. to +store passwords, secret keys, etc. but not massive amounts +of data. + +* Android: Uses androidx with KeyStore. +* iOS and MacOS: LocalAuthentication with KeyChain. +* Linux: Stores values in Keyring using libsecret. (No biometric authentication support). +* Windows: Uses [wincreds.h to store into read/write into credential store](https://docs.microsoft.com/en-us/windows/win32/api/wincred/). +* Web: **Warning** Uses unauthenticated, **unencrypted** storage in localStorage. + If you have a better idea for secure storage on web platform, [please open an Issue](https://github.com/authpass/biometric_storage/issues). + +Check out [AuthPass Password Manager](https://authpass.app/) for a app which +makes heavy use of this plugin. + +## Getting Started + +### Installation + +#### Android +* Requirements: + * Android: API Level >= 23 (android/app/build.gradle `minSdkVersion 23`) + * Make sure to use the latest kotlin version: + * `android/build.gradle`: `ext.kotlin_version = '1.4.31'` + * MainActivity must extend FlutterFragmentActivity + * Theme for the main activity must use `Theme.AppCompat` thme. + (Otherwise there will be crashes on Android < 29) + For example: + + **android/app/src/main/AndroidManifest.xml**: + ```xml + + [...] + + + ``` + + **android/app/src/main/res/values/styles.xml**: + ```xml + + + + + ``` + +##### Resources + +* https://developer.android.com/topic/security/data +* https://developer.android.com/topic/security/best-practices + +#### iOS + +https://developer.apple.com/documentation/localauthentication/logging_a_user_into_your_app_with_face_id_or_touch_id + +* include the NSFaceIDUsageDescription key in your app’s Info.plist file +* Supports all iOS versions supported by Flutter. (ie. iOS 12) + +**Known Issue**: since iOS 15 the simulator seem to no longer support local authentication: + https://developer.apple.com/forums/thread/685773 + +#### Mac OS + +* include the NSFaceIDUsageDescription key in your app’s Info.plist file +* enable keychain sharing and signing. (not sure why this is required. but without it + You will probably see an error like: + > SecurityError, Error while writing data: -34018: A required entitlement isn't present. +* Supports all MacOS Versions supported by Flutter (ie. >= MacOS 10.14) + +### Usage + +> You basically only need 4 methods. + +1. Check whether biometric authentication is supported by the device + +```dart + final response = await BiometricStorage().canAuthenticate() + if (response != CanAuthenticateResponse.success) { + // panic.. + } +``` + +2. Create the access object + +```dart + final store = BiometricStorage().getStorage('mystorage'); +``` + +3. Read data + +```dart + final data = await storageFile.read(); +``` + +4. Write data + +```dart + final myNewData = 'Hello World'; + await storageFile.write(myNewData); +``` + +See also the API documentation: https://pub.dev/documentation/biometric_storage/latest/biometric_storage/BiometricStorageFile-class.html#instance-methods diff --git a/third-party/biometric_storage/analysis_options.yaml b/third-party/biometric_storage/analysis_options.yaml new file mode 100644 index 00000000..0ba12552 --- /dev/null +++ b/third-party/biometric_storage/analysis_options.yaml @@ -0,0 +1,19 @@ +include: package:flutter_lints/flutter.yaml + +analyzer: + errors: + # treat missing required parameters as a warning (not a hint) + missing_required_param: warning + # treat missing returns as a warning (not a hint) + missing_return: warning + # allow having TODOs in the code + todo: ignore + exclude: + - lib/generated_plugin_registrant.dart + - example/lib/generated_plugin_registrant.dart + language: + strict-casts: true + strict-raw-types: true + +linter: + rules: diff --git a/third-party/biometric_storage/android/build.gradle b/third-party/biometric_storage/android/build.gradle new file mode 100644 index 00000000..761a58ec --- /dev/null +++ b/third-party/biometric_storage/android/build.gradle @@ -0,0 +1,63 @@ +group 'design.codeux.biometric_storage' +version '1.0-SNAPSHOT' + +buildscript { + ext.kotlin_version = '1.8.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:8.1.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +rootProject.allprojects { + repositories { + google() + mavenCentral() + } +} + +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-kapt' + +android { + namespace "design.codeux.biometric_storage" + compileSdk 31 + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = '17' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + defaultConfig { + minSdkVersion 23 + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles 'proguard.pro' + } + lintOptions { + disable 'InvalidPackage' + } +} + +dependencies { + def biometric_version = "1.2.0-alpha05" + + api "androidx.core:core-ktx:1.10.1" + api "androidx.fragment:fragment-ktx:1.6.1" + + implementation "org.slf4j:slf4j-api:2.0.7" + implementation "androidx.biometric:biometric:$biometric_version" + implementation "io.github.oshai:kotlin-logging-jvm:5.0.1" +} diff --git a/third-party/biometric_storage/android/gradle.properties b/third-party/biometric_storage/android/gradle.properties new file mode 100644 index 00000000..8bd86f68 --- /dev/null +++ b/third-party/biometric_storage/android/gradle.properties @@ -0,0 +1 @@ +org.gradle.jvmargs=-Xmx1536M diff --git a/third-party/biometric_storage/android/proguard.pro b/third-party/biometric_storage/android/proguard.pro new file mode 100644 index 00000000..e69de29b diff --git a/third-party/biometric_storage/android/settings.gradle b/third-party/biometric_storage/android/settings.gradle new file mode 100644 index 00000000..7da7f9af --- /dev/null +++ b/third-party/biometric_storage/android/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'biometric_storage' diff --git a/third-party/biometric_storage/android/src/main/AndroidManifest.xml b/third-party/biometric_storage/android/src/main/AndroidManifest.xml new file mode 100644 index 00000000..4f4e4ed6 --- /dev/null +++ b/third-party/biometric_storage/android/src/main/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/third-party/biometric_storage/android/src/main/kotlin/design/codeux/biometric_storage/BiometricStorageFile.kt b/third-party/biometric_storage/android/src/main/kotlin/design/codeux/biometric_storage/BiometricStorageFile.kt new file mode 100644 index 00000000..0ed6e6cb --- /dev/null +++ b/third-party/biometric_storage/android/src/main/kotlin/design/codeux/biometric_storage/BiometricStorageFile.kt @@ -0,0 +1,147 @@ +package design.codeux.biometric_storage + +import android.content.Context +import android.content.pm.PackageManager +import android.os.Build +import android.security.keystore.KeyProperties +import io.github.oshai.kotlinlogging.KotlinLogging +import java.io.File +import java.io.IOException +import javax.crypto.Cipher +import kotlin.time.Duration + +private val logger = KotlinLogging.logger {} + +data class InitOptions( + val androidAuthenticationValidityDuration: Duration? = null, + val authenticationRequired: Boolean = true, + val androidBiometricOnly: Boolean = true +) + +class BiometricStorageFile( + context: Context, + baseName: String, + val options: InitOptions +) { + + companion object { + /** + * Name of directory inside private storage where all encrypted files are stored. + */ + private const val DIRECTORY_NAME = "biometric_storage" + private const val FILE_SUFFIX_V2 = ".v2.txt" + } + + private val masterKeyName = "${baseName}_master_key" + private val fileNameV2 = "$baseName$FILE_SUFFIX_V2" + private val fileV2: File + + private val cryptographyManager = CryptographyManager { + setUserAuthenticationRequired(options.authenticationRequired) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + val useStrongBox = context.packageManager.hasSystemFeature( + PackageManager.FEATURE_STRONGBOX_KEYSTORE + ) + setIsStrongBoxBacked(useStrongBox) + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + if (options.androidAuthenticationValidityDuration == null) { + setUserAuthenticationParameters( + 0, + KeyProperties.AUTH_BIOMETRIC_STRONG + ) + } else { + setUserAuthenticationParameters( + options.androidAuthenticationValidityDuration.inWholeSeconds.toInt(), + KeyProperties.AUTH_DEVICE_CREDENTIAL or KeyProperties.AUTH_BIOMETRIC_STRONG + ) + } + } else { + @Suppress("DEPRECATION") + setUserAuthenticationValidityDurationSeconds( + options.androidAuthenticationValidityDuration?.inWholeSeconds?.toInt() ?: -1 + ) + } + } + + init { + val baseDir = File(context.filesDir, DIRECTORY_NAME) + if (!baseDir.exists()) { + baseDir.mkdirs() + } + fileV2 = File(baseDir, fileNameV2) + + logger.trace { "Initialized $this with $options" } + + validateOptions() + } + + private fun validateOptions() { + if (options.androidAuthenticationValidityDuration == null && !options.androidBiometricOnly) { + throw IllegalArgumentException("when androidAuthenticationValidityDuration is null, androidBiometricOnly must be true") + } + } + + fun cipherForEncrypt() = cryptographyManager.getInitializedCipherForEncryption(masterKeyName) + fun cipherForDecrypt(): Cipher? { + if (fileV2.exists()) { + return cryptographyManager.getInitializedCipherForDecryption(masterKeyName, fileV2) + } + logger.debug { "No file exists, no IV found. null cipher." } + return null + } + + fun exists() = fileV2.exists() + + @Synchronized + fun writeFile(cipher: Cipher?, content: String) { + // cipher will be null if user does not need authentication or valid period is > -1 + val useCipher = cipher ?: cipherForEncrypt() + try { + val encrypted = cryptographyManager.encryptData(content, useCipher) + fileV2.writeBytes(encrypted.encryptedPayload) + logger.debug { "Successfully written ${encrypted.encryptedPayload.size} bytes." } + + return + } catch (ex: IOException) { + // Error occurred opening file for writing. + logger.error(ex) { "Error while writing encrypted file $fileV2" } + throw ex + } + } + + @Synchronized + fun readFile(cipher: Cipher?): String? { + val useCipher = cipher ?: cipherForDecrypt() + // if the file exists, there should *always* be a decryption key. + if (useCipher != null && fileV2.exists()) { + return try { + val bytes = fileV2.readBytes() + logger.debug { "read ${bytes.size}" } + cryptographyManager.decryptData(bytes, useCipher) + } catch (ex: IOException) { + logger.error(ex) { "Error while writing encrypted file $fileV2" } + null + } + } + + logger.debug { "File $fileV2 does not exist. returning null." } + return null + + } + + @Synchronized + fun deleteFile(): Boolean { + cryptographyManager.deleteKey(masterKeyName) + return fileV2.delete() + } + + override fun toString(): String { + return "BiometricStorageFile(masterKeyName='$masterKeyName', fileName='$fileNameV2', file=$fileV2)" + } + + fun dispose() { + logger.trace { "dispose" } + } + +} diff --git a/third-party/biometric_storage/android/src/main/kotlin/design/codeux/biometric_storage/BiometricStoragePlugin.kt b/third-party/biometric_storage/android/src/main/kotlin/design/codeux/biometric_storage/BiometricStoragePlugin.kt new file mode 100644 index 00000000..cae56731 --- /dev/null +++ b/third-party/biometric_storage/android/src/main/kotlin/design/codeux/biometric_storage/BiometricStoragePlugin.kt @@ -0,0 +1,450 @@ +package design.codeux.biometric_storage + +import android.app.Activity +import android.content.Context +import android.os.* +import android.security.keystore.KeyPermanentlyInvalidatedException +import android.security.keystore.UserNotAuthenticatedException +import androidx.annotation.AnyThread +import androidx.annotation.UiThread +import androidx.annotation.WorkerThread +import androidx.biometric.* +import androidx.biometric.BiometricManager.Authenticators.* +import androidx.fragment.app.FragmentActivity +import io.flutter.embedding.engine.plugins.FlutterPlugin +import io.flutter.embedding.engine.plugins.activity.* +import io.flutter.plugin.common.* +import io.flutter.plugin.common.MethodChannel.MethodCallHandler +import io.flutter.plugin.common.MethodChannel.Result +import io.github.oshai.kotlinlogging.KotlinLogging +import java.io.PrintWriter +import java.io.StringWriter +import java.util.concurrent.ExecutorService +import java.util.concurrent.Executors +import javax.crypto.Cipher +import kotlin.time.Duration +import kotlin.time.Duration.Companion.seconds + +private val logger = KotlinLogging.logger {} + +enum class CipherMode { + Encrypt, + Decrypt, +} + +typealias ErrorCallback = (errorInfo: AuthenticationErrorInfo) -> Unit + +class MethodCallException( + val errorCode: String, + val errorMessage: String?, + val errorDetails: Any? = null +) : Exception(errorMessage ?: errorCode) + +@Suppress("unused") +enum class CanAuthenticateResponse(val code: Int) { + Success(BiometricManager.BIOMETRIC_SUCCESS), + ErrorHwUnavailable(BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE), + ErrorNoBiometricEnrolled(BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED), + ErrorNoHardware(BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE), + ErrorStatusUnknown(BiometricManager.BIOMETRIC_STATUS_UNKNOWN), + ErrorPasscodeNotSet(-99), + ; + + override fun toString(): String { + return "CanAuthenticateResponse.${name}: $code" + } +} + +@Suppress("unused") +enum class AuthenticationError(vararg val code: Int) { + Canceled(BiometricPrompt.ERROR_CANCELED), + Timeout(BiometricPrompt.ERROR_TIMEOUT), + UserCanceled(BiometricPrompt.ERROR_USER_CANCELED, BiometricPrompt.ERROR_NEGATIVE_BUTTON), + Unknown(-1), + + /** Authentication valid, but unknown */ + Failed(-2), + ; + + companion object { + fun forCode(code: Int) = + values().firstOrNull { it.code.contains(code) } ?: Unknown + } +} + +data class AuthenticationErrorInfo( + val error: AuthenticationError, + val message: CharSequence, + val errorDetails: String? = null +) { + constructor( + error: AuthenticationError, + message: CharSequence, + e: Throwable + ) : this(error, message, e.toCompleteString()) +} + +private fun Throwable.toCompleteString(): String { + val out = StringWriter().let { out -> + printStackTrace(PrintWriter(out)) + out.toString() + } + return "$this\n$out" +} + +class BiometricStoragePlugin : FlutterPlugin, ActivityAware, MethodCallHandler { + + companion object { + const val PARAM_NAME = "name" + const val PARAM_WRITE_CONTENT = "content" + const val PARAM_ANDROID_PROMPT_INFO = "androidPromptInfo" + + } + + private val executor: ExecutorService by lazy { Executors.newSingleThreadExecutor() } + private val handler: Handler by lazy { Handler(Looper.getMainLooper()) } + + + private var attachedActivity: FragmentActivity? = null + + private val storageFiles = mutableMapOf() + + private val biometricManager by lazy { BiometricManager.from(applicationContext) } + + private lateinit var applicationContext: Context + + override fun onAttachedToEngine(binding: FlutterPlugin.FlutterPluginBinding) { + this.applicationContext = binding.applicationContext + val channel = MethodChannel(binding.binaryMessenger, "biometric_storage") + channel.setMethodCallHandler(this) + } + + override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) { + executor.shutdown() + } + + override fun onMethodCall(call: MethodCall, result: Result) { + logger.trace { "onMethodCall(${call.method})" } + try { + fun requiredArgument(name: String) = + call.argument(name) ?: throw MethodCallException( + "MissingArgument", + "Missing required argument '$name'" + ) + + // every method call requires the name of the stored file. + val getName = { requiredArgument(PARAM_NAME) } + val getAndroidPromptInfo = { + requiredArgument>(PARAM_ANDROID_PROMPT_INFO).let { + AndroidPromptInfo( + title = it["title"] as String, + subtitle = it["subtitle"] as String?, + description = it["description"] as String?, + negativeButton = it["negativeButton"] as String, + confirmationRequired = it["confirmationRequired"] as Boolean, + ) + } + } + + fun withStorage(cb: BiometricStorageFile.() -> Unit) { + val name = getName() + storageFiles[name]?.apply(cb) ?: run { + logger.warn { "User tried to access storage '$name', before initialization" } + result.error("Storage $name was not initialized.", null, null) + return + } + } + + val resultError: ErrorCallback = { errorInfo -> + result.error( + "AuthError:${errorInfo.error}", + errorInfo.message.toString(), + errorInfo.errorDetails + ) + logger.error { "AuthError: $errorInfo" } + + } + + @UiThread + fun BiometricStorageFile.withAuth( + mode: CipherMode, + @WorkerThread cb: BiometricStorageFile.(cipher: Cipher?) -> Unit + ) { + if (!options.authenticationRequired) { + return cb(null) + } + + fun cipherForMode() = when (mode) { + CipherMode.Encrypt -> cipherForEncrypt() + CipherMode.Decrypt -> cipherForDecrypt() + } + + val cipher = if (options.androidAuthenticationValidityDuration != null) { + null + } else try { + cipherForMode() + } catch (e: KeyPermanentlyInvalidatedException) { + // TODO should we communicate this to the caller? + logger.warn(e) { "Key was invalidated. removing previous storage and recreating." } + deleteFile() + // if deleting fails, simply throw the second time around. + cipherForMode() + } + + if (cipher == null) { + // if we have no cipher, just try the callback and see if the + // user requires authentication. + try { + return cb(null) + } catch (e: UserNotAuthenticatedException) { + logger.debug(e) { "User requires (re)authentication. showing prompt ..." } + } + } + + val promptInfo = getAndroidPromptInfo() + authenticate(cipher, promptInfo, options, { + cb(cipher) + }, onError = resultError) + } + + when (call.method) { + "canAuthenticate" -> result.success(canAuthenticate().name) + "init" -> { + val name = getName() + if (storageFiles.containsKey(name)) { + if (call.argument("forceInit") == true) { + throw MethodCallException( + "AlreadyInitialized", + "A storage file with the name '$name' was already initialized." + ) + } else { + result.success(false) + return + } + } + + val options = call.argument>("options")?.let { + InitOptions( + androidAuthenticationValidityDuration = (it["androidAuthenticationValidityDurationSeconds"] as Int?)?.seconds, + authenticationRequired = it["authenticationRequired"] as Boolean, + androidBiometricOnly = it["androidBiometricOnly"] as Boolean, + ) + } ?: InitOptions() +// val options = moshi.adapter(InitOptions::class.java) +// .fromJsonValue(call.argument("options") ?: emptyMap()) +// ?: InitOptions() + storageFiles[name] = BiometricStorageFile(applicationContext, name, options) + result.success(true) + } + "dispose" -> storageFiles.remove(getName())?.apply { + dispose() + result.success(true) + } ?: throw MethodCallException( + "NoSuchStorage", + "Tried to dispose non existing storage.", + null + ) + "read" -> withStorage { + if (exists()) { + withAuth(CipherMode.Decrypt) { + val ret = readFile( + it, + ) + ui(resultError) { result.success(ret) } + } + } else { + result.success(null) + } + } + "delete" -> withStorage { + if (exists()) { + result.success(deleteFile()) + } else { + result.success(false) + } + } + "write" -> withStorage { + withAuth(CipherMode.Encrypt) { + writeFile(it, requiredArgument(PARAM_WRITE_CONTENT)) + ui(resultError) { result.success(true) } + } + } + else -> result.notImplemented() + } + } catch (e: MethodCallException) { + logger.error(e) { "Error while processing method call ${call.method}" } + result.error(e.errorCode, e.errorMessage, e.errorDetails) + } catch (e: Exception) { + logger.error(e) { "Error while processing method call '${call.method}'" } + result.error("Unexpected Error", e.message, e.toCompleteString()) + } + } + + @AnyThread + private inline fun ui( + @UiThread crossinline onError: ErrorCallback, + @UiThread crossinline cb: () -> Unit + ) = handler.post { + try { + cb() + } catch (e: Throwable) { + logger.error(e) { "Error while calling UI callback. This must not happen." } + onError( + AuthenticationErrorInfo( + AuthenticationError.Unknown, + "Unexpected authentication error. ${e.localizedMessage}", + e + ) + ) + } + } + + private inline fun worker( + @UiThread crossinline onError: ErrorCallback, + @WorkerThread crossinline cb: () -> Unit + ) = executor.submit { + try { + cb() + } catch (e: Throwable) { + logger.error(e) { "Error while calling worker callback. This must not happen." } + handler.post { + onError( + AuthenticationErrorInfo( + AuthenticationError.Unknown, + "Unexpected authentication error. ${e.localizedMessage}", + e + ) + ) + } + } + } + + private fun canAuthenticate(): CanAuthenticateResponse { + val credentialsResponse = biometricManager.canAuthenticate(DEVICE_CREDENTIAL) + logger.debug { "canAuthenticate for DEVICE_CREDENTIAL: $credentialsResponse" } + if (credentialsResponse == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED) { + return CanAuthenticateResponse.ErrorNoBiometricEnrolled + } + + val response = biometricManager.canAuthenticate( + BIOMETRIC_STRONG or BIOMETRIC_WEAK + ) + return CanAuthenticateResponse.values().firstOrNull { it.code == response } + ?: throw Exception( + "Unknown response code {$response} (available: ${ + CanAuthenticateResponse + .values() + .contentToString() + }" + ) + } + + @UiThread + private fun authenticate( + cipher: Cipher?, + promptInfo: AndroidPromptInfo, + options: InitOptions, + @WorkerThread onSuccess: (cipher: Cipher?) -> Unit, + onError: ErrorCallback + ) { + logger.trace {"authenticate()" } + val activity = attachedActivity ?: return run { + logger.error { "We are not attached to an activity." } + onError( + AuthenticationErrorInfo( + AuthenticationError.Failed, + "Plugin not attached to any activity." + ) + ) + } + val prompt = + BiometricPrompt(activity, executor, object : BiometricPrompt.AuthenticationCallback() { + override fun onAuthenticationError(errorCode: Int, errString: CharSequence) { + logger.trace { "onAuthenticationError($errorCode, $errString)" } + ui(onError) { + onError( + AuthenticationErrorInfo( + AuthenticationError.forCode( + errorCode + ), errString + ) + ) + } + } + + @WorkerThread + override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) { + logger.trace { "onAuthenticationSucceeded($result)" } + worker(onError) { onSuccess(result.cryptoObject?.cipher) } + } + + override fun onAuthenticationFailed() { + logger.trace { "onAuthenticationFailed()" } + // this just means the user was not recognised, but the O/S will handle feedback so we don't have to + } + }) + + val promptBuilder = BiometricPrompt.PromptInfo.Builder() + .setTitle(promptInfo.title) + .setSubtitle(promptInfo.subtitle) + .setDescription(promptInfo.description) + .setConfirmationRequired(promptInfo.confirmationRequired) + + val biometricOnly = + options.androidBiometricOnly || Build.VERSION.SDK_INT < Build.VERSION_CODES.R + + if (biometricOnly) { + if (!options.androidBiometricOnly) { + logger.debug { + "androidBiometricOnly was false, but prior " + + "to ${Build.VERSION_CODES.R} this was not supported. ignoring." + } + } + promptBuilder + .setAllowedAuthenticators(BIOMETRIC_STRONG) + .setNegativeButtonText(promptInfo.negativeButton) + } else { + promptBuilder.setAllowedAuthenticators(DEVICE_CREDENTIAL or BIOMETRIC_STRONG) + } + + if (cipher == null || options.androidAuthenticationValidityDuration != null) { + // if androidAuthenticationValidityDuration is not null we can't use a CryptoObject + logger.debug { "Authenticating without cipher. ${options.androidAuthenticationValidityDuration}" } + prompt.authenticate(promptBuilder.build()) + } else { + prompt.authenticate(promptBuilder.build(), BiometricPrompt.CryptoObject(cipher)) + } + } + + override fun onDetachedFromActivity() { + logger.trace { "onDetachedFromActivity" } + attachedActivity = null + } + + override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) { + } + + override fun onAttachedToActivity(binding: ActivityPluginBinding) { + logger.debug { "Attached to new activity." } + updateAttachedActivity(binding.activity) + } + + private fun updateAttachedActivity(activity: Activity) { + if (activity !is FragmentActivity) { + logger.error { "Got attached to activity which is not a FragmentActivity: $activity" } + return + } + attachedActivity = activity + } + + override fun onDetachedFromActivityForConfigChanges() { + } +} + +data class AndroidPromptInfo( + val title: String, + val subtitle: String?, + val description: String?, + val negativeButton: String, + val confirmationRequired: Boolean +) diff --git a/third-party/biometric_storage/android/src/main/kotlin/design/codeux/biometric_storage/CryptographyManager.kt b/third-party/biometric_storage/android/src/main/kotlin/design/codeux/biometric_storage/CryptographyManager.kt new file mode 100644 index 00000000..2a3ff11b --- /dev/null +++ b/third-party/biometric_storage/android/src/main/kotlin/design/codeux/biometric_storage/CryptographyManager.kt @@ -0,0 +1,183 @@ +// based on https://github.com/isaidamier/blogs.biometrics.cryptoBlog/blob/cryptoObject/app/src/main/java/com/example/android/biometricauth/CryptographyManager.kt + +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package design.codeux.biometric_storage + +import android.security.keystore.KeyGenParameterSpec +import android.security.keystore.KeyProperties +import io.github.oshai.kotlinlogging.KotlinLogging +import java.io.File +import java.nio.charset.Charset +import java.security.KeyStore +import java.security.KeyStoreException +import javax.crypto.Cipher +import javax.crypto.KeyGenerator +import javax.crypto.SecretKey +import javax.crypto.spec.GCMParameterSpec + +private val logger = KotlinLogging.logger {} + +interface CryptographyManager { + + /** + * This method first gets or generates an instance of SecretKey and then initializes the Cipher + * with the key. The secret key uses [ENCRYPT_MODE][Cipher.ENCRYPT_MODE] is used. + */ + fun getInitializedCipherForEncryption(keyName: String): Cipher + + /** + * This method first gets or generates an instance of SecretKey and then initializes the Cipher + * with the key. The secret key uses [DECRYPT_MODE][Cipher.DECRYPT_MODE] is used. + */ + fun getInitializedCipherForDecryption(keyName: String, initializationVector: ByteArray): Cipher + fun getInitializedCipherForDecryption(keyName: String, encryptedDataFile: File): Cipher + + /** + * The Cipher created with [getInitializedCipherForEncryption] is used here + */ + fun encryptData(plaintext: String, cipher: Cipher): EncryptedData + + /** + * The Cipher created with [getInitializedCipherForDecryption] is used here + */ + fun decryptData(ciphertext: ByteArray, cipher: Cipher): String + +} + +fun CryptographyManager(configure: KeyGenParameterSpec.Builder.() -> Unit): CryptographyManagerImpl = CryptographyManagerImpl(configure) + +@Suppress("ArrayInDataClass") +data class EncryptedData(val encryptedPayload: ByteArray) + +class CryptographyManagerImpl( + private val configure: KeyGenParameterSpec.Builder.() -> Unit +) : + CryptographyManager { + + companion object { + + private const val KEY_SIZE: Int = 256 + + /** + * Prefix for the key name, to distinguish it from previously written key. + * kind of namespacing it. + */ + private const val KEY_PREFIX = "_CM_" + const val ANDROID_KEYSTORE = "AndroidKeyStore" + private const val ENCRYPTION_BLOCK_MODE = KeyProperties.BLOCK_MODE_GCM + private const val ENCRYPTION_PADDING = KeyProperties.ENCRYPTION_PADDING_NONE + private const val ENCRYPTION_ALGORITHM = KeyProperties.KEY_ALGORITHM_AES + + private const val IV_SIZE_IN_BYTES = 12 + private const val TAG_SIZE_IN_BYTES = 16 + + } + + override fun getInitializedCipherForEncryption(keyName: String): Cipher { + val cipher = getCipher() + val secretKey = getOrCreateSecretKey(keyName) + cipher.init(Cipher.ENCRYPT_MODE, secretKey) + return cipher + } + + override fun getInitializedCipherForDecryption( + keyName: String, + initializationVector: ByteArray + ): Cipher { + val cipher = getCipher() + val secretKey = getOrCreateSecretKey(keyName) + cipher.init(Cipher.DECRYPT_MODE, secretKey, GCMParameterSpec(TAG_SIZE_IN_BYTES * 8, initializationVector)) + return cipher + } + override fun getInitializedCipherForDecryption( + keyName: String, + encryptedDataFile: File, + ): Cipher { + val iv = ByteArray(IV_SIZE_IN_BYTES) + val count = encryptedDataFile.inputStream().read(iv) + assert(count == IV_SIZE_IN_BYTES) + return getInitializedCipherForDecryption(keyName, iv) + } + + override fun encryptData(plaintext: String, cipher: Cipher): EncryptedData { + val input = plaintext.toByteArray(Charsets.UTF_8) + val ciphertext = ByteArray(IV_SIZE_IN_BYTES + input.size + TAG_SIZE_IN_BYTES) + val bytesWritten = cipher.doFinal(input, 0, input.size, ciphertext, IV_SIZE_IN_BYTES) + cipher.iv.copyInto(ciphertext) + assert(bytesWritten == input.size + TAG_SIZE_IN_BYTES) + assert(cipher.iv.size == IV_SIZE_IN_BYTES) + logger.debug { "encrypted ${input.size} (${ciphertext.size} output)" } +// val ciphertext = cipher.doFinal(plaintext.toByteArray(Charsets.UTF_8)) + return EncryptedData(ciphertext) + } + + override fun decryptData(ciphertext: ByteArray, cipher: Cipher): String { + logger.debug { "decrypting ${ciphertext.size} bytes (iv: ${IV_SIZE_IN_BYTES}, tag: ${TAG_SIZE_IN_BYTES})" } + val iv = ciphertext.sliceArray(IntRange(0, IV_SIZE_IN_BYTES - 1)) + if (!iv.contentEquals(cipher.iv)) { + throw IllegalStateException("expected first bytes of ciphertext to equal cipher iv.") + } + val plaintext = cipher.doFinal(ciphertext, IV_SIZE_IN_BYTES, ciphertext.size - IV_SIZE_IN_BYTES) + return String(plaintext, Charset.forName("UTF-8")) + } + + private fun getCipher(): Cipher { + val transformation = "$ENCRYPTION_ALGORITHM/$ENCRYPTION_BLOCK_MODE/$ENCRYPTION_PADDING" + return Cipher.getInstance(transformation) + } + + fun deleteKey(keyName: String) { + val keyStore = KeyStore.getInstance(ANDROID_KEYSTORE) + keyStore.load(null) // Keystore must be loaded before it can be accessed + try { + keyStore.deleteEntry(KEY_PREFIX + keyName) + } catch (e: KeyStoreException) { + logger.warn(e) { "Unable to delete key from KeyStore $KEY_PREFIX$keyName" } + } + } + + private fun getOrCreateSecretKey(keyName: String): SecretKey { + val realKeyName = KEY_PREFIX + keyName + // If Secretkey was previously created for that keyName, then grab and return it. + val keyStore = KeyStore.getInstance(ANDROID_KEYSTORE) + keyStore.load(null) // Keystore must be loaded before it can be accessed + keyStore.getKey(realKeyName, null)?.let { return it as SecretKey } + + // if you reach here, then a new SecretKey must be generated for that keyName + val paramsBuilder = KeyGenParameterSpec.Builder( + realKeyName, + KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT + ) + paramsBuilder.apply { + setBlockModes(ENCRYPTION_BLOCK_MODE) + setEncryptionPaddings(ENCRYPTION_PADDING) + setKeySize(KEY_SIZE) + setUserAuthenticationRequired(true) + configure() + } + + val keyGenParams = paramsBuilder.build() + val keyGenerator = KeyGenerator.getInstance( + KeyProperties.KEY_ALGORITHM_AES, + ANDROID_KEYSTORE + ) + keyGenerator.init(keyGenParams) + return keyGenerator.generateKey() + } + +} diff --git a/third-party/biometric_storage/doc/screenshot_ios.png b/third-party/biometric_storage/doc/screenshot_ios.png new file mode 100644 index 0000000000000000000000000000000000000000..08fee0c4c6ec4a75bfb31bb0b1c3497cd769efbf GIT binary patch literal 563005 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¯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

v(?^1HOh&cFt8Tu|9U2?`ntf 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�Qx~t0RgME%FxMuLTeMY@#T+w8u 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

)bIX zMkwCldGE3N8 zpN#_Qfa585F}Q@@E&~PL@9`-Sg)OwyofkB;gW{tcOjEI(4P z3B3P{(4oa2RpQr6h&Ewp^xh!%{HOx}dhIHvilMWWq=pGh$z$ z+#~JE)$w@Wya$+0TwZ&vVYm9AZZA3wTS$}@=v-wfY`FY&hXWNh5N!F~j9C@N;qUs6 z4KfV6sLCs-Yt^P?tYN4DLU#d>b=w?2KwXayUzgaUHOpgE@VX?fLE~)8!#8PgLMNlk* z!`V~o5W)U%!NU}b?VGB2+_^Ag@G-Kyf02G$hp|#9j)`AXw6lkzZyCC#g!!)b4)XO2n4<<6vxB;zR}))p->TU@ z$pe3bctf)UKdGimn%f*Psy($%{Ox%^O2_}t>CNcZ5KJ%l%MC)ij>Af-R{M~Eb@^B^ znDz6W{xHTwYFpg^LL!WhK|O(CW*id@ZB|v4bO-BO7ti%oulhZ&s21iG*|O}<6;N|LGfs52h6&CzgY{#7@7ds{oCs#+2bAT76HRi1%O zo(E4JgQMZb2gcl{Ela{(@iZThJREIC(Hn`x+f-!2u`c!vBXo8vEmp6hdpw$W9}v5D7H z->vu$RUN@@PS#>lhwi`Vzk(i@B+;#h=4#}PMtYpxfucNk|9)to0fZIsM!qcpUFvVB z8cf}yNQr&#B#^)w_R3Wgqv-p#B-CniAKLj4*`83}D&%)V8iu<%{8=urX-l?EcR!#z zzQ4Hg&84nG;PZ^$?f%aQ<(mcqZWrpm0KCU9+}KuS8ip)Gzk`vl<=)u`ziCZ-AN><= z2hzM(B^yTicAK>F44R0D>czFWRHQN*w4La3rc5*V1ZnirrWX2gf8iPs@E?X+?|x+; za+AQ)kkQ->XrZ8C7WP)BlyYRLk`VE-GJ@7-8-F;Mr~1NEpX}l}EK!Q7)0EF9EAp`P zmT~i`#R54UtqBq-afx2W6WLGqN06F-{!s0KNL7jf)?laB^0Pf7i2CUr$2cnPfu~*h z@9y39U5;zdQ^5TEdEBvw%qXX-I>&q56vCHLv^F^WGm{*GM+F88agw0YKMh=E`dHyO zPR9&z@=XVP-~)lmYJ`8Vj^Hc$>RrW*hN&%wz{i3{1=qFPV{J{uf(HGoxy&ZErk__! zVa}A&mJJZ0Z27V2#F(LDpSeeISCe|x!SYL}!b}sD2FsJkMX&1|UR1l>g%zdZxA>_a zm~h0CAFa64W5jFV18|W-7#ox)N%Md8^@E0yB`gr=XDv1G$D(>1_SW+UR_6vd!~LFhpW4-GJDiydFgUK^ea$yOjjG%M?$0+(> zKd20zf(;K}`@CIHCS6R*l2R3^VmduCCr-kcBrd+;?HT#Os7FIM(>yv;!Cli;Yt)yq zknqi(PUo}MNWv^;9(_13n_?G4H{a_e8J%D-bpb0T^%nKDFtDflHSsI3NeuGT%^p7(hMxJMcDpfLUSjqwiM-zEOFf)dSZ;cVf zfbeaZh4UpR35T0sFMCPkHkP-j&O6~ontJ0<8o+n*w6sd_RH+hMC@SPs#g&JW>?MbD zZ!;uKZ$THMGYp#=nx;y$lWHMx=!j-s)y67y>;wG`%XHlf5e479513aIb4w2UhMe>6H2QCAf=Vnj0xRG z$yT{&yhdD##6O95b0`bUvHAkbNikc@&OQllUzv%NoOUJEgzVdmcSKU7ttzP|o5Dmz zNPA9#j%3q!KKds7_c0u37&mzx(Y}#WV}A3j2_W`sTP2h>u=^ABD?-^Rz{dUv+1K>r zrp@z>P|vtJIVnQO59EVHq`}4nWwFd05AxO3d^^}#-K%wl!uzg~nLf^p@QZ+pnN zpmvHJ6c#~b*!JjZzVo|{ZQMH*n3XpoP+a@<(^bKC75Iwp=oj-QcX$pe8>OG=Gx}EQ zg0Zr)@~WtS9A4qo^5w?@+=!@<{g*YK%qe*J=%!(kBK^%u!3egMqgeOW>o8#t5dnr~ z(|lj>VHsPWE;NvfRrLEN9I`V~O7Tw3gF?p}HS(rB%5RhgjXw%3S9yK1?_hVYv1ZR! z5lV+reQ_I(gj2g`n)Mc9MBt5}nAZTw2C#UVdLr2yDdm+9MuHmYDQqv-=fe8Sb#^QC z1nId=bEk~%d_34&1H0p#8m~(*0?2N|6b&!t=%*m` zOFYf{nx3<%AM<*Cj-=lY&E^ju;r)AFuo;n{g54j8 zgARLBsVfQ}oG9?$FU+$h^6sxE!lse_cx_aWL~NJ0TEmMW6m2x7vk4#=n0=we?ED>4 z)swTOVb3~XMb{mP%mcy7rAa$?ZppTcUGt*KL7bwu4sa4c?eXsIOz3H-nBDNGRbvv^ z!5RVj1Y|z6(@X*&SLl#(HzVnNNSOYB+1eG{fqAAd-C5?)hR{zo+xzIcQ@q#1x*OfTSD13&+rM?bm#rA%^q z#_ojlFS3z5)|nK?@oZ?5^KRL47}uOb)Pr*5c)~(Y;|j6Eyh-j-i$GNQY}8`jPCzy& zT?66RZh;y{ggKo8G=MdkCxTZARZh$L~HHWV;|w#>w+-}}oS!9-lF zPcX!wPmEZJ{OcJGl|%|xJ#jPy+EdB|Bdls87H0tN&MO3>u-e#XwEJZ>hVG?)b z-(2{WP&H01vk6%Xcgwux%2(b8INu8`mA{|dGrSYx5=~N0pQ@KYB=&+-H}EQ*r|BFS zM`{vl`kb@)O2sKLx4Un?bF|9%v?`(7iR80?4ZwJ{N-8m3kh-|nurJ(My6u*M{ls4G zJ=WrIenU48t?1`BHtVh5$hJ`jYPV|FL_U5+vFTzlVk5bn%o^-(hztKD)^1(An5jx9 z_r>Gk#vp3$-uYWO3zE32ZR6Swn%W(FbdS9`7wcm}-QuT9(h=swL11SaAy-IM$nFRS zbcyj_!#^=(mt=73A)+BH8Z^fF*z_~Aie)GrmT5<=3={7X+O*ZCGyOaIY0n={^pwF{ z^Jm^IjoDLd2}g~-PR>Bn6tzBDEWM-hlr`rS#=4>bbeF805i_Sb4;miyS2&AJ84IGw z*c;viNye`TtNi};O^Bn<*L?mvSI%n?zl>o~r-wy5V#`J|Drne$I|)PXEZLC&B#{P{ zmmN>Py*@{lA1`=-qYupXnB&~b5;XbKL_S9Sb1}{z0uyveX~}Zc_GF^He$o&nm;{_8 z!Dk72l`cgbWW$4r3mVN(ZjBTfsVzj>;F=%$^aPQ|k-JR$>P?0tp;&wf1)mc7krQCL zW$6PYK|Y5YlEe~NR0hHuGS4wA$BOEZg3Adww;^A}7opdvv}1Ql zvLy58sPB(`a*{EHt1UGg#V^vKHTWAuc^wiR8U-5eT9hopOx~KKMts7|59Y1o)CLmg z6mki(y<11i(=*K9%70k?fB44pYQe0(f=1n+50zf&i8yvOC80<8?~?2bsiIKUHIt({krLxVg?)V8-ghoY~BGjW(8xVJ$(hX7gS zxV=7bsTEVIzmZA4GP<3zR+q(d@8L`BssiE{CEFJX@6ir|RB_)Qtf6tgkj{(jwAa&rje>5P zzl01w;#gO-US8L=zgCqY3~=CKF;u>DW&KtE;{Vc6;?Pi46-WEkvO; zNBKmo=mUZ&&NGIyb3eW7Jdvd{`_``as)DsXt6Nl`=1DZ9;rM&EPkl87;}LZWi=_zv zsF8)!VoG>aa8~GLB9}wiFR3~YV7aTsolXt`1*ZHDxsl$axjIN%`L2F668KB3+;L;6t?mE>2Xpj!dgYy#~C zF5PAC*|=&+NUYZ7NV_3IEo+w+IMerR`dBENV-(P|MF~nzz)OFd@63o~TltS=j;{30 z_ks$9ev{cje^)+SjdDf~A&=1EC{Az|Blc8-nVCnZM6G-=&pNoTbpi>%C)dG%m46@7 zJ7TANkF$4_{Gv)un9@x>aW3w!(_vJ~Lcq%OigDFXPEnH528z3x{uvD7b@=Wb|DhWh zoFF~fhyThVdEuEyv%H_yHgAwGBx1zL@1(Rp(T&NlR(beCrO!Z{9O`4SwKu-1_{kop zBdzO3MlDvC5iS|2RPbP?r#(R^we0)YzxrwEBDBges?ud<5J!Pa@-M88nE^{E%v*u4 z8|3$VF`pn4e!lH!GD_UkTf~595IuU2Q}@f5>Nimwl*N0+tMr0BkYombupjBG zA1om$qC6!CEB2l-fS@^pm6HXIie%|~O~Ka>Dd06$!k_*pJ;6}}47WX(?xIBB1l?AD zSx^E$zV%~$qM#;Gg`}K3fVTT`ti$=O;!us#R3`CpSDw?oy24*N*}v#EAq1& z;xDAmVfuEti&Vi{~(x4tG4 zPe*o~cpgXGxY6Dn1|CdT|5SKC3=*wUx-G8c25P!cj9N(qSF)nAgso7f)?NF(Styc` zM(6M)8IZr=@`wBRb=!X)1+(d6wRN$e?Jq(pCFGYPn#IMtoZ zd5>YIed=$tkMrsT^WO#T0@AnO0Gu>Sb%1H{f&BaQ$9tZ#9bdQIe4^j{YRq#}M(gSY zIt&;V%wNN?x+(e;6?hXS8+nd-RZU|{75ZBQSM4??W$EXOkJuz})K*erG(J9R+(`xsu1)q6zbz5?0?8*4C!xqKdoHF( zF(JTThDJMK8*{jI5i)G#eS>E)ZRt#uLy9x)Ti}NwLUvI1O+yetr?q>31sg@A<>PM& zgI}hRwD+c=3bN09m3w@V+c@cv(s)^8O&Q9Q^V1LjZFt z%1t1Il&6;Uyy(5>AX*~Xv<;KL7Dl$RfZgbC|kky8x;${wybER-O`4mCWI^Mt!Ysib%LeTP@;HHnWtUKn>Fz zw6F*b+i=})A;H>vfDT6xjIM^hWKB8888LjXwcH$`%4HRvny9c4VECT2fmXD4!Z-~X zDaDryuC$|=Bn6qh>DjvNgzUrh9mWGe>8gXf2*VN+dLjbQ;Q_LB9~~KDI8D_^KBHOs z7kCsPIo{sdL6@>%aRLaMuEDOx;tfuKYTeDJqKAFt-g*yS^7c*smfmXdIDK0$_fgpk zd6!^))?+FWvR1$=3>f<@ zq|`7T))`kjG3SMlT>_tMf*#$aCi40&grjrW+cr4_TyIW-k+z(77UOQ;(7NlLT1Ns{EyJ_A;zH#EMhm%&+NG6S%)Hii!)?g`uoQB6bhQeOW(G$NKT&)&-0 zx&{#vmE8>a#RS&HL6>x83UriONGp_4HDgAZxTp*I^Cd@Ophr-9LKV|$EYqJby0}nE zaQX7}xBy(@LnPDkMrj8eAA71dp2Hg2MCYEyD%Mr?Txx~e>f0Lb46@b%t9y^Q>>w&i zSbdKfca`N88l{|*qO;(6Z9M2$)7cB0@BX~7GZ;1w@+19`puTeGuXoggRk8qlOO=)P z3g3BNBy&P{ZXbAg|CcwQaJDkdE~#Vm^qT!W#~7gRcdwF1=vA8~I*)A_(+4Muxotvz zq~ap;ywKvToEI+5F0#usbSc}G^rp3bm+%mH#NG8staMxaPplc4x-Y)ftHsn$BMqgFD|l0(?796|*J#~hL`n)d9(_$;*<1tt_)M9Bas8k<&R)@;yN4Io zg&CWk>z^>=4~rdli`f}!@m@}+Jb-WTO6_Id<`{Lg5pDz6#a_GHA?wie#JmE$VWBF( z06dxMN$xL!?N-KIoj5^dDq&|7uBUf$ecOy5wQZUlSClMf51}ncDmzaLb1S)5_8yn; zJ|bX$b-gyqm$)hFQC7^em>xPDareUUO-gckC4*XJ!>17Fd;`}Kwl{906o%gk`^bU) zWkp%VvBts2o<$5-+ZkxgF2W0?14yO(T^5if`5 z++m2F7uxzsRcCEDmY1pwMC$F+mM+(|y8JbV9SP$a4>JPd)0;@*7y36u^=GS-tD(`J zq^#K`;cs!P4=q*G1oM<2o{XQ(q=|1qC(alf83_Q%fb4RKoqCS)Ma`Z2N1YE)-hZ)? zhhYf5IVQYwIa#L}O`9Z3&7m!F3h$)$!VXhYXu8Qe)1$IvG!4<>>!V7i^^92Qc$TSB zH;*Q!u@t}Jm+6E_gGX<#E2}}==9;aE&-?Smd^-DoL~Gj|Y0Orc}Yr)`v3Q@i_*Mv4|0$w%n-JArO z-+-7kU#Yi-U(WB*7|Or^0yz&KONnx`=u!d5>3Vp=k*%Tq+H?pbAE#T9kbNp#mC_1JM+RGC z$XeY@*TePTcj%ZX+Eai$UkZ*5Q%PO{7C#W?zxs$p*UBxNw<>CMa7KF(O%WpZK@8PW zQJ5C9Aby7R491UIt&nf{+>vEG_<-A^x|Bf7ytJEaF@-0>Pbq+gTty!{!_04F#6w`} z%q==rs46SSZ#BrtKgdZCfi@Ir#9fJjD15%U6Tw6?h7S~vKuJZ!>&9@-)PmSCGs@5f z6#w1%trW>7$D!EV5_P;1-NSlbS`7E}vEYZ(+l*C0mq4G(F#db~Y?qopLbSs*^&09& zYVt@ud)`iO!7@R!MmjqG;PM&3WhV1B-$hcD2%2}vL}*%=B{&#$pOc!j$dbsSC3(|v zi3xZ_BNXU)9D@ERXa{~4#e3FMz7YjwA=xaCK{#%vvA7{P2a%b4=h7E^7j(6EEBIkI zXPxZJ{%PfY5&3vI#;7G@ya#5;xCwmSbH7npB{rs2D|XHgk)H(qxACTTm3CLuEdc+gfE5W(`_SIyQXwjk+3lZ`kiX3j{b40R4gFNAlby zYJkRZi5Uibftt^tI2P5pxLiRR1qM@pDoif+$6z}+8woVNsP}Ct&F$+22Pcrv*`Yr!BDUOM6!#uXLFas&&L$Ql!-@z0ql_yC47-4PO$05t)rq+ELl@`DbC ze9yne4h_pEi`J$AP9-gA-JXLjGI++|JG!OZ$N2Fhr>8fm1jNh5iH^qz7NwyP(ErbU?S(b1KKKH-%(0EEjhd!zD zJ{!>YA$E}~n|-pq< zRX5k5%<4$?7NRth>Gx_|=I3Ch#cRwWht#g-&c1X%?@0d*^TCtFMYK|RBL-f>bte)0 z&|v`w%jeTAX^L1V|C9`Mgr&c=5zB*>RYvqx>7%+qpl7}LY~yUNbAoZE^Ixr$`P9om z{+FwrK(!20g=4r1gCR!m=Z{M$<9F}Kc1yyV#4G4;#~a6P4Y0xTWu7QwI)~^5eSZr@ z2HDj>Qeqmeg;_Khe3H8>idTg&x%;o6yU#y#VY29T9;3fcRg|O4*Ow3oMe$W`eUZE0 z*#w$wqbESbb|2*jwGOzNRzj4Bjln$@)fL|c_sS&b(_2^@!K-#m_VXiPH z->8pQ%)~Rb5@sM396q~NGDYp^VdkQgItpg^BC3&*{_iSYWgpd#BZ)Wk-4;SpC{x>p zxH7{GDkE6d)F7ya?E&(EY{;Ll`-5nC6y`?Dmx;<7j}XR}<4UwviMpW8U)d~R^UbK9 z64N_`g`K`Cy9r^V$^D~a2u^grL|D3;`3&T(=Q>GsPo+QSfA@LOEskNl8$DEgyzWR7 zOc4T#@~Fc8tC{E^P+~pz3}5iQY70uJzxL26Hx>dBy}l;SZG6GH(i zHRqptszqJ>r)3qY@_x(8^Nl=h;JEal*3!NZ0D66zVIkmxe5gBVdoN|FHMXbuCBPIu zBwk7CqWE)+IO!I^IlY1lV(T<^ENb&*AdO3jTmwDV^v_ibg=#j>Jf~cUO2tnzPf8)M zkFViFHl{U3=|y*$@*YHBQ24R@8m8_kaL9G=%324Tcb z*q;c1h*RdBeg;jZqx0{2q+KKWm0Zg>Wl`@G&Q zQ2YHuCjUb^c<$ckoz|*00>%FupxBJ*4ynRh;7NJUIQh7oMA2__i)ykLOW9azE$OTh9wHuZ zMI0c7n8Imjze?l2fT=Y^N1wB6vm(yhcsWp9AI<(E0&VVvV!a0>`nXRgl0es{Q{a%}#As`5|zVpWfICs_e=)wxYBuUm6UX z(JSj9pIfD^UYGRkkpqpl{arQ;Zu+~*=nHc( z21VHCr>jE0a6;ryOPg1<17u^{Jb1`455{UGDLWoi`deXS)P$i<@@VLk1zjD`C!tc` z+CD6q+cn3rb2`x)X5mw^z4o;nmE92~JFeZ&Q*a_?*n7U+&?uc$!9lEYn;nAL(}~kl zyAW5kSq%MxLmJ@hWosf-URU1>Txcgr854}46JB2@R#jq!Cv9n($_*A`Ze9)1Xp{EZ z9=4(P23rr29l!nF9$A27*`GI7unqcn$OD~lJf$`Hyp&vK+He{nEN?=p+@O0kpsUfH zkCA_YTjEUD-{h?F8dhVI)&b;*!a>}muzgl={Sd=5Ifh!eRN~PR8;ETj; zzoQKmWxawwSsYa>=Q6zYLrKNFEnRw}&00BbB|sD|V0k9@ zZF^nO(+{2IYs(~LoYX&L3dO?|3d5g!961e9yZ@}PP#yXpAptGOQX*IfZL__a_5{OB?8;?A{LCW!TCC@Mgg!a zb(-5U1pPdiJ;))|L9W^rlTxek&n}M413Tl8qbS}qlp9Qi4YV%xm_??6yL(Sun>MyLa(JZ-KM{?5Yanoj&NdSlE{M zTgCBjhnk|=AEHCv!Rw%amGkQ|x9@RU&DWag6YBvB580V*2A&JS|E=Pv zoiEjIb{w8&Ns|1RG4-b72@t5nYY}PloW-=Q zjN}%=;|jlpIAMfWyorIgl!!G6JcfOfIadEd7QRy&U0uf4BS>N=+(5sOYD77j=SgP< zHxKNg#<23t;|<|BrGMa1)rdi%0TtC+D$Ch`KjDl|;A}P6N?uyuZQMV%gQ3lz0}$G~ z;Qu6Z3KD_VV$CHj2IKOrn7Z@8|MAn{D; zfAB=QA>BFf3whhnxjnm~GS-LMj@REt{%^C8LcpWlx1XR{ZLu??!`ArW8TIRfsEP+v z{M2-=jUIzWDImA^7o}rK8}4N+uIr=V0Ch$qX;HGr^Gff(T|Ya}&;>LzpAjDEYww)p z-;ZV!20r#I#l5R&lM^sjm8$`VVo3T6E|)}9S7?zl*{??gU7o;V9UL{}QozUE8JKK` z-<~_Gl_BH+57R%I-fRasBFHH)8FVPyY*VKzI9j?ueQdhj!Vk?{Slf)U!zp#L!r1SYzEhd0Wwzoq4AlDEo#Ay9wD5KGUK0q- z&axGvLiQ1Cpo*+EB}im9!g^dKr6Xy=mM5$1S3P|)!@ z;>hVS=eUziOhot+hUeHmNxhvrx!vU57n~S^$4VQz=ycU`5s8ow#oxnd zLBL$aVE{uY3B3yv{*3ujU8BSRyx3w8(4;v!P{gX zZmc)S0NDH1hHCJ^skRFqwI;Be137)z()$QG`^y6d_kUbOP@-GaA1aGOX7uqZwpx^sew5_YZgW<*16L~W9_ zl?7;pNAe*|$8lQ)DGPWkR#h3l)1B6)9}%o!Q456-W9#3MW|26P&o5HL zxfnLxS0G=hepan-rTTKpU&aev_%x`ww@3>f{9Ybr%W5;A9dmI#6llWu^*{0d_&q5o z4{+&e|E9*~V@dy`{vSp)--DH4`>^Y|h-#O|I&f+5w1@-`bC>JpgO z^q&9w%{!pk3=}o&(^(T)rmEK)dN_>Gtcd;j5|9RCFi-}xThp|h6vqD3%<8X(~eo7g{t z6%OhNscHegk7+NEEqv^3;=Gc@bSL#_n2k>!nZo~Q5@w0=Cu`|bKv1vRdtbtHT@zwK zMvTV^PK`;ROu9i`76C!G@HcM5>|u`7JEdx;@=M}GCmqm^m^tViCxM{5%MV%ynK3zd zRDP@Cx1b70-&(s3JTV~~>-0uYiYgsN23~m7>S6~*%<=xUZTT%M5q<1jhr?Yt@}G9& z%hgg{6 z>#XDMKo%-tdA-603r(g}uZN!VnfYI2RPEl2!*^~oy;BF5*>t}XBP^OhXET5DfRf)c zsa)dXY3KZde)IH(k-jQ`d#QEfQE0h;K}jZAKFnhtiaa?KuxqDJ12m6mbszr0V9fiG zK?jj{=w6C!U1(I&h2nJmEiwB!&S#gK6|LAF?~``{U(mVz&SH7#NME@)g@6|&U?bm8 zGnQoRvPop&nzFGA>uSZBjI9B)(H z$h6Ibt*qqFaHvSBOGI7^!L^ry&^H?qf#~(FRn_DYRLC`20x?@@OCXRO`2(YvbLr~w zD++2^7|(v)Th3Ikk*#p}aQtl14>%a9Wa_LI|MA6$5HHOOrpv>H=p58;i zYWs26sn|$2CEOeEdlU-r0%;pJy}|xfCA!z z^q!G0`dWe>h9+i!$YDWG>-SrM*Hbgqy=OPw(2HSq-~}sq=V*A?JLm*kdRrN5*`XF$ zxg4STWsP7E;tKl%Psc5a)W+>SS0<|ihxvm}mJlM^Q@8JObVR)H1|H~P5LPN?e3P~5 zt+LY8o;8_H^G+Kb`kVv>S_L(EMdH0RpsJfuGtFS44XfwnD)HXc@`#dq3eIMJ&dhw0 zZz~GRmHm;{02e1ud?3eN{WCti#UK4oO5qpJEMg-vwFnl|yNVi6_Af5I+GB;bf#Hvj zrv)b<5^RaS71LGo$aZ6>^-AWN&JMP#0){>$5UsTZc1 ziag@Iy5@i(ef{QDUg_6;ICUK!F!6i5N~X%J-gH9y74PyV#HxLU&^lUR{lWDY*{S61 zllp$e>o}HkmEQuEp~X}SM^Dj3 z6RtEp4>-?o#JI@JNf(^YIF+G(_9<*}QV#X(|NK=+sVSWVG$GNugM1FDYZOJG4<+>b{93?+S;%;A?dn3RiJIH^79^0KYqAiq0QfxY<^O zLD;Aa-=S5R^v78>&xrrt(2JDuRr{>Qx9t#N*&P9*8L-KotAXa452f$!3~yQB_bu7A zgZ@%Glxd=U1|Kxxda^d=6)?Q9T%N3Pgq54`NNTLEMH?JrA|k@Q*X6#S{v`R1TFmHk zxZ@ftDy5BqaZuQw`meG``d=u))T4dZ$HgOi1`Ld6ZlNo)_uh9XIiP;z5nJzFTr=wd z{vGK3*mrlx_T1eTZ21-6h3|gX`v;ucV2_y9WH0Qb8t`aQ%YtU4xJcXf6Xw+Zg}H3f%tB zo(O=V%L{@x2JV_030dWFx9+fK1qI=j%E@mchgW1*<}1n3oIKXO+9_ zB+Y{&cehbMA_TtLZzg3<&))Xxh0eqryLK(BtWy=Df7hDaYswdFEJYrY&^JSkpuM^M&>06LNZ z8446KoYqX;m)to|NME7Kj;8vj7DY_yZ~^zd^wo3MH!ZJe`i-e4)p$vl<~8a zN5lymfed?FzfEf>U6p&4X&s2@gEb~Une^O>@2$_?c|GgkKXLTirLBE@@Wm(`!;j4^ za;(e#3^_;}+iq8s_3|VO$xxK`!QCR@xZpn*YDYFpmHtYq8jaUul+pCCO$m$|8qj#V zwPi+wNnSppzD2K~tF^~lUdTV&nuv`1HeIMNMnP0yJ?qeSb5k%ZOqa2~;9BPNU-!#} zx|miHAp~d}crZwqthB_6ggh-KGE#y^klLnuI%0~YzqK=#taRk^0c3LZcppqf07hvt z8pbxwXTGR%C(4d~5w_}QbfxC!D26x*@F&X@zHne?nJzd6SayB!{vA@_Vp+pp@ufzNQ7c(a^vG?=pV6KPklMK{7 z(aV=($#Q^41HGU7gqo8ffaQm$9DdO9>wZdpHycZQAeiaxJbu7{-rH;aUt#=MqN_Ni zpkICmuN6PMZ*r};n`I+9!UvOrtq{uwxu<=|!Ek ztYC!D_LF9Y>yGEe)cWj?byUPsiFXg_j&JTc{AvRWv4~NPW!!Uf9pJ^Mdp7)DEj~QA?TiXfiV|(=8NWX;uyXII;0SM#5!JF@1Q!C>IpJcEltXU zJCVqg>u4hY^N@G9el=JD8%bzDrK;8ko>T{gL%NSNVPEA9v$?^sXRDJqZ(C{ga&eT3 zSI(rNi7xrZdxnmnLjRoh%Ssx67C$0WO~}muqUkIAntZ>o6$GS31f(1(UD7!a0TmJH zW`JKnx_e`Ubg4*4O$0=wyBQ(f-8nipa*VOP{NDHT{sT|k&vW1Boa>zHy71HYpxjaT zNGZ})pYVeP=~ZwZ-oksR+cFz4=GTkw!}@KMY0;3Hd6tjy`Iyuha?)(yL<4B}^AE07 z_&C_W-2TF?FRlY`oHldq2ec{@=RVyT-^$Pw1V0rc*ohSC>wo&~j%KL0)m~PdPx^ZY zGIOW>Ci@5}b&6NcV4IT9`6BtUrK0$UH?n%n)~ctcJgsXaX@GdRx&)9~!-)v=s03>g z7WkX&SR6d}E)M@b;Hq-|@%>Q$GZJR4L$wDPgl)DxNuZ3mq328GzyB-w;tsW$BaI|m z+chEKiVQdTI{6ts2%Ys}gdnJ3H9LP zSXh-8*7WDsI}*Udc%yY*mT@QVM@sZC^6%e_EfcSK@TG{!%4cO|NXf_j>|5v=t|A*r zQLUvV(2FlVxpV$7&|9~+vGdEbBN_xDBG zCEJgN3z<@(`Ydg}+u19sou|VU?D2%^gEmUMkC|GvK|1))t6r6Cq-0Wfc;c6g zN*BsEt9#Rwu;O*gK4|{nXdc3TzpS@>EBtk1Yb3NcN#g)tY;|AZ8BniSZvXJxE*35c zE*JY{Ftl{=d+*TW#%b>4if8rh=-F+*Ds&ZaUKU(<1sk2ALX05$G6P*|3DaJRJ)fn2 z5>5W+%M8b5&q@9vHa}WdW*T@`nhgEL08(0|?sIHbZB2zHM%MgYV^E11{hPYsJ6&^O zs}5FhRTGUAD^Y!GTJwc&t0##eJ%le;jv7NX9#YDwEHOCnD=gao0zLR*W;oLMlM(?a zgo5X5S{EbSTNrr_C0^5$25(-b2HOR;mDQTjx{hAcT&52;sU9#EH>{FWCwo>0U%2;(BJWgtf@3>!weq=Se&dH;mACQ%u=O07y{2>+PctsL$@T<>V4g1kV;*xob)nls=xG$uY4`stPZ|r zsC8S{kEZ=-dv9ug7g#?IBn2xB{5`oKTBi(~#oWmZ)OTA0YGWJxD{nkkoK0Q8JfR|Y z%0BQiJ+{4J$mn&Y7pTR*#L-+tVeIc>0NVxq&lmZ({gaQM*lu=?`Xa`j3st;M{J?m2 z*QI{r#^E#9ZuzLR=p6t@+pv1CXa5 zqmiVn61_e5AfIJwd0*#76JDzR@P6+7(_kn+IH`KF0 zRbkPX^x-9YR`}VW?>0$pc+uGWpY5fb-;R5^xQ@TQ4DPuScbLfgZY8Jz!|j4z%$->Y z^z-$#_YuWWt=Qu8AH=ss1}9r~ap{6B*Quht(>5-5ETyx=jnw^&0O5=3w==m#?u@^~ zgo@LV~MV4Gr+&wax{tOr|GiPSc|U@kQByt@W-Vn0BMh?SDM~>6L16)N;EfP*S(0n@UDPp6Y>}+9LgLHfqsF z2k6gg!&NAi?;ksC^=}3Nr+dGMQJq&&UT2(5Pniy*4LJQ&@52wFj}ki4KsYH4y5G); z)^Gi+YL8;h1yN#|vZGPkcCU%R_!}kx=9bDN}LBDcl7?*HAVg*$F zVhEgcLPEUD7y4pcHLC4jse9H$B7C;)al;uRo|l@s6sBzuYyr+zrBy63x4%-x{~U`- z3gs0@SuiyzCRRw-SZMb8pZ>tVm5;ZgTiKV74pD`W+1mZ7Z{6+wl)C+7i$G$2>-SZj zMD1Q40&L?h&Jbd7`x|@rssa(b0(#d_435lDYy9AHZiijbu=sV`Dd%= zedUjFtgspsfkiRq{uT+%6~?kuyQGGJIoWeKexi2s1MFg)!?8P1|7)`6cNQZ0jWs{^ z7=66a+ z*){Gd>SUnM3u(PW60uJ@bWxfzVydbFs%^`Vdis~@?9}a<(%ua_QD#MX%AXbL8*ocT zMu`BuA@}-)P?<~--RTf72jP!HEc9=_LGoxuGG~>BW1gvvkE+jq`tlO{#jEI)v1|a> zM&mT~hV^S+gw9k{Uf0CmGpzZmCZ-cQ)OnK4X@ircXHVNu8PNJP&?JL8386MEJ6#c_c##Sm92&DA1&J z!r1?jDXuBQqp6rpKcVq=DLE_U9r66l2jT1wzlE3`b_zXDQQLQd{+@-pr1=kJF6jLa z8U)`u`EVLR?g{OE7BgBjD5yuJe0|?FGP*aRLs~?3_Qz7!ty+mFD`{+B=Bu{sx>HqZ zAHdJ{$A`X>EgIH7%b|{Eq0MM7w0Vb!g)jN4q0(V|9I!U*4V3Doid3tAS8X2~D@yYq z5#$u!V+6$LxKCcOFxQbj)t4!iKrmRiPL506Il)UDrcM&SJ2l%2?|>tEBCn_T;~hMz z{AK33Iw1$2mro~n;3+F!!7Q|

aKCGRldSKrK=5;>FiahjZmqiPo*53eewrD;TJs zu9_oor%-Rg)@I}m6l|#}wJ7zUt>D8plH4)Nr}gOBRYwigbn;VD6YhG7Q$byL1n@5F zLIQ64#e5T$zN3NXSfBz9jva(!yMR~_ZZ`>s0^Lr-_bvi?E+&KO{>MJ|S6vRD*uk7z z0Fbi|_udrwgscteJ_b?f>R;w10Sw0_+k8B|g}`P6efMSfm9;=I3D0`g?N07};_!`+ zYNsEg00LSOJoz{Qm!d0U@Q;ynq8XgxpkEBYC~0WaECz=Exqk%Dp~OGpZ{->zygfcs z^#fZ<0|lz2i}6zxh1B{4UTo^z1-E33A{=Z!(36u}YWyh(2k2$#G`GFn=w8K`;m22Ti+I$Lb6WOHr{MzIr!vKjjU+`U z+S(bP@Mvzet|HXCAVC}qi^5}|_yg!I2)l!K2q}h|p?T(>xq@wfo_RbMK0Dii;zsdz zYxFb_dgg|Uf?sFCtqF@-k1(uv@d3+`v!R zZV(puG@f!th&`gal=gU90Kfg`x4Y^enY#m^!J_FSQ*CM!XJemZ5=5{;dhC{<|ZUehH^_r}g2A~|+ zt6(f*6}o{1$^hXgW+>t+_ynk;g}Z>`PVygH-fl49Ulv`y(p7Xb1*WvNH@pIWJhQoc zY15F!&mVn${w9fzDy+lBJmZ1~wtwebgFuYP#}i_g^u ztRVjHXuD59SbJVw*+$V*@t_An6AdgU|0Irxb@!K1jO8@OSsUxm6Nkg1N8bj30FGnyU+`6y4|`L^tSEgl%Odf&>(pj46eZODh@ zF;Xt?@B9|}?P0Or0%{exY`j0U|7usj3vGfhxI%4M^pgToU9~SO`EPWJCW1sBv-M#? zCQdNO@zRfXuLP|~b`E9hhuClu?cCb~#k;uEiE`l9XKFDCik0sC zFVA$5*)2v&cJHOt-o@E_TJ;T+}wP>w6Se%(O?U`5^uSpaf9EJ@pVt?n(FNI~Md)CQd3U7h~;r~uea(~18LII zjwmA|u#8{6z^6-TrKPviXl|N&Pc~$MX=Vz*}h9kE9sI)Xsx#| z-Z1f2$q}NZ*{UgUzv6_NCKKf;;5J>&^Ba^dYM)Iaq45)a+u8*{Vg}%|$rs6ryP|)6 zqOZdjX|N3mYZ$v;&lEkbd21q}Sg2eD*`Kfg?ioOV~ZA z0_D!4YcuPKHOR4uTYAa;mOIsW3H(YB@vFH5be2-y9EyZoDT?|Yh6$9mOq>pCF-g0c zTS`A2^9e$Rl87{{{n7wHC`#{m%cCAVSr2FFjLd^;r!7I}_aCC~sE7tv%TWAW1ifj% z7G0{Dt4Y{L@--X-2#h+P90mKHZc5IYdNpo6Pci=l+*vw%7O+_ClG)N9S;hKQ>2v!gfRx}qzw{e^9Uq~Xn#Nbr`4 zpxGw)T&EYjr%AGQw6luFKv%raN{JqvFfT&!qqFb|f^~+dTgUmW=cUcZ3!s|?=u+@a zw!hcPrv3Bq-tu6d^LqHj1)ZUJBBM&Z+yASesXZLEe-!g z6za6V@J1KL0|S#`k30|w(g>2RWk3Ap-{R7YHo~1OulrnKt;G1d;lUP+BW6;W?3twF z)aQa!1>{dv!{*cdyLbOoHlA0CPmo@EV8i@j|BAi({A*_WKc_Vz;NxXh0iohI(RU1I}@tJjKA(A*La3HXg+E5D{EAD8mGq~N|V=; zXligGEuvc$T~r|7Mq48j+X6x=^tY(s;aWrKhr!x1hZUe<>D3m?nj%iV3rhBjLf~!x zQ_cht`iAfxk2U61?0_gn0@5#5P;i~XRY-{{wjbvn>N-@6*ZJu;(&)|oJl7$qYU%J{ zDBEi!8d$HFwC9a2e z=yr>IIVhBvQ^N>`aC*+aRE#s?cXUm1>%D+SjmFGIC)zaLE-p+$Q^%s>>YhGlF}@T` z6M~9=)ffscDXv?^-QFEphm7`FwZl^8zZCIHXK=ZV*@n{Ns=@bOLrNr~{$|YnC}daC zzu2Q>7xQL`Rfnq`T zKKqH7eU`_z)S@%#;`bd`Z`Y6q- zwD@O!EWi5gYz;@kYrDSEo8y~qt$w7Q{|#Xz+c{vj89Pw?Q_8SQ{-lL4>+8cLer>tE z@2l8tG!ebARdMMGA<`Pz0X>o~iBMZS@>{B8O3QuFMw@j1q>(`f+J?#4CN+n`41Yib zN-AFNa;`-^1Ml9f-i!;&pPXY1j2NYZ%@tN?frkx66t2B_C-txQ>s?xUpEa*Hg(ZIP zXt`{9kti=D@38S5N?(LO5CC0oOwc}8=ES`ppDEmhO{&foCu-8GX7P|HDT6)qino=P z8?0T{*khPFmhBfUsHCqy?vQh`I(rB=HyuhHC4Bs_>e{@f0aE+*=nL`Yj^XDZOb=TD~6WH$g!Oe~OCc#d)i^K^)9VS7xFs1M6U zi!{w~++)7>q#PNO^+{&4(g;SE51WVQ917=&HL=$-{(}X89KZ?MLx40z_pWUC%s^~S zkF-23#{Fm4tBYTAU8C2llTl}!?@JsbhsZGQ<2|H<0?hT~!VO3a981R_2f6ozg9PVP_qW5II zbIo{UV9@40QwEUp_}NJFqw=8K<55Xa7LR}B(4dX}=HLxZigC4{DGhLH?aQ{CWq@$q+^?Xc+r5HR^T(xL zSHrC%a&B|>uu&H8F?J2si_F`r8*|yph_5`2{Qmc31M6g4f9(UNfxWx32fa@5B!^u@PSNp+<-eK~eX@p3G zc2)z0YI`NK61u$Rl>?^W0vr0@F z3L8fPx*u7DYRhMI2~PYS^Zdmd(cfQi4T~eQ8E=UX|(D3SjWZat2_IAJHeav zQdjHBVPo{C2`Py1vxV!Sg`v)~4a{U#bv(J+Le#w{!QTZyCV}W2a&~h^-KqUOaq``+ zlt=Yg14R1A_Z6W*BgcPAtB;v$KIJ*&H16Qgy}ozh`?ligf*XM)6y%`CKbW?R ztON0*9{zFibTA%ep9#67ls2Z0tGhXFhQ-y9tyY!?Ex+acZ=~%_^7Gu-tNwsc8yJc_ z3FN=-;Xldjnnc;Qh`}H+B}UE?520sQE#wO2@Z-S7F@2@&G+Il_#RFt+QOC=-H`yd3dq7h_c#`W|z@w8vJmHiI5kTkRizTUc@c(pR@;9f&@ zuCtP)x&je85uuiUtbNjuu|9(oY5mf=V5_PL@L>w9tvduZC2di)nRL133s`>aOM>U*`;0ZVq5o9FJ;eZHf{AwGvc0;xr|M`N0nn=r)(e)3P27M1y(M6f2fAL{PF& z*G?tH_$58?DQa@%oxyQTdUhx8gRqyKy>ATm{<(2BtAoA#6fRlO4p%zIy0zKa*2{IS z*w!3mSc%y?KQqKA_tF=$5~DGtEG1{xBIzfV(m1iA&*ge5#6mR>X2ds_#N~?kR92UxxR0&a7e5u~Q*r!Hpu; zbTCIr*D5s~*!W3P{pRHAnme`KlfP|$P?~1x5Ebd#`0q0)IARO6whx8+K7H1hz$k9F zlU>(a94bdTCcqM)+GD|Jt6&m<>>z;!o;tJ`?alAxC}NE?I-<*q*-T}Fj5~^hlee?| zEa?#5r=~7AaME`aO82SZXKKas*FoLtf}55U@QbSagGyxOjJZPr9a5>f7XSr!5M5V9 z9WA6`uazdD>oel?GB$@)#cQSnQbtZfL;MXQuD&ME} z#lwnd4;ix<$&dnyjEc{9`^KFgEg%R#ENc#a0#b`4iT&6!bhe(&Es`vOJ|=Lnr4@Fp z#TAHQ4g)jcpnv9$d=NurstEkAI6dtaMUR&iX8Gk%xAT$`!H0VQHeCwR27dxMTs zr~H;;7~VuY&L%#1yH9FyJxSM?RW=i4%k#GXXnwBr-LYBziwBR+wRt(*3C3nW>F8FN z4XZ>Vb1m3a{=6nEqyqbT7-Qw!QkkER#I{b-;7wa)YfYl)()NU{xX;_esW+&nwd0if z=jVsP#<-^6>lcJXV_pmA9SAdU0n+=bmi*pqiN6S2v{nLsXvW^K>&i-pPJotscWMd5 zq;hZ&KAMfeK7@-hmRGk%0T@!#V-z77^O6F?0HFnih=BEzF6Q;L{u2kMGLF3un0ups zZn!e93)7tu`J;*ocvgJ)5*E6f8--jtJ{2enM0Z4ay?AgBS;Jkn@9-bFPQ!E^v03@T zLazU~*R?HA!Vf=+x0WLGxWPLIOtr9VBnh#}WBPiIP`RN-;*5@4>JBkgkPSngXbKd>DJB z+RooR+4ig!YtbK7_M4Ov!lK=eS(8E&cdP8U_E5!U`$RBqMxZwi(B|?%W z+%fMC2D1wUx)_ivk0An?EkmQ9naX|^#?X{@d-WVley}YwA%dANT?uZ9T?eB79;n{s z?~JSQqLwqK=?wwzf~Z&D<_iZL?j@78v|#Q6rAo9GyzD=sowp;iHs2yl(!zBzH>~8B24Wl1%~mJDc5xkenyMYlJ6|$;_4LX0^H^T0+7+jE0azSqPyx zGFQmZ`47zRm?+a3OW()*h7o}8`u0V=3>E(AbeiVKmRu^ho-yZ3C3{8J)gBZ}_#FIz z%Tza2*Y@>Bc|+&vC-~7xz4iEIJ$yM@WC1z&-9Kn)Tm#@WYvG5O-WkMu6IqIO-|Rd! zZm4=(YvUC_mO;W#BpGjLlnbpu5TkQA4)JHg8|&Og&bFM4UT-JaZmZdo zIJZYbjD*@^W^aB=^QO=k@IacXqKSK_sA}d+$sac%zPM=RMuE0%wEEv}9c$lO(2X7`_LO3O(8^^g8!Kp@&0jQdG? zaMJbSctD`MN8oSpxBsyB`Ux#NRUcYrWlK14kR6p4X#1#rF)Gl0%%8Viv{Ik11QR=H z`Iu_qYr{M*d1i0&b(1RqT08MpU;`40{!+A6dO_{>tio1$|83IhQR8}mD#)S{YpZ%>Ysh?xczuHebDlO;q?K?ZEi#Hq-TR-RVOUz(>=fm z`75-R^l})F%hf9W-m}Ks0U>tdktq4@?U%RuwY#)&EbPYg_s@k2661gPS%O`kq^{S$ z(?>6Uu_LZeBai$jkK=S12BpePjjS-l){fgoKKv^&&QUXRXjw^Tf5V%FW}NuhA7=4U zC$ZrpX;kS-tQXThCrUsXGD7pmKWR2T7{|r*wdn)Dg<)6CnTV4GpYhnee@2>_lOj#K zD+5A-36Z~_9R5bMZ!Of$qQn`84doWoGrloa3fF()WiQZhO!tMzsQiLfbF|HUO_wE} zd^u0Z>l7HNte`(@e^rIR*!8oFbwv>~C9yVx09Dk$9eJ zn#tjyliNYkIc;<+Ye9&|9N=Qz2+X{Or?Juo+1+3F=IdqJAZhi#4p0}|q=V|pOJ1Xp z`sHBxHU)ZvDpw9dP>A3Sdoc@-I|XQcXGN`edq}Mup$9& z|IFrBt`qCsn)=OxZx24QxkV|d7LY$=;m|3i7A5|cYy1g(`^NHhl=ecT5?L=Ou9M+3 zw}ET*c;@bM1`$j!z;w%6Se$Fy#Z0Da8zX3$fcoCXffdq(%zOQE@kIFv&eAb_x>O%= zlR{<2bSvgEerJ{7GCIob#R8j@nVI{>gm_q_m6^bbHHa$3SdV|p7X^c(m|H6+(=R*) zcX|Eu9pl2g9)EBk2eajM1WEH5X+_#zSE%vE3uOv@(y-4% zrB?9GmnBwqFYu?IEffmKw@3TV$K6Ck8lf}~AGJKgL;ZUdGxbpUf+7uFQvjGH|Q-8^$*1D`Ke?uaj0F?gZA3Ds@}V zN4lx~)gw;=)Gzy*tvhWZWl51w1ewd)Frz_-m7`ER9G{R>US<6nvYqJ{9AWMSDDUf3 zgZy;EqEU-3&64fV0GSTbP&|atn2QDr$NNnkR!3-|(RI~`#G4~SGndM3reegK>8Ls= z{;+yfXHZ}_^!l7q(EnGAy%9HaC@qlu1>X+#4B_?cmd1wuR~T>zxpL(i&huXs{*)K| zeHx8EqbSVsWNPzZDBt&OAsWV#AP7BE3@YB8$X}+@wg+5qrTRSPviLYWja=?VcQPpW znAwmj%sHKtw*4-GB%Itd2>RyZ&PL?{@}AR@S3q|tt4dM*BAHtrcDg*VW@?1+jTZ}h z?VGR4?T=ro*?g?ZJp@SQC&T*CWR}cZ$*pg8A#6TT&2lhMN6CnvL|B_7n8+~U?P=UKONVoGxct-`hc%^D4rE7`; z?McKyoI25K*x~!i|D2?D=l*)X{`*?)kMjAmHUnf^p|+RKxx&Ew`RQ)nRgIWI{_S`Y z-hM=OyTraYU~S~~cv!k?coWqNL(h)}SN3tltx1jk#@z>BJ#G6%uxcH2=)nU%%#)`r zf>V=IwQT$E7um0UU2HliOMt6J>=>gtBwE}K(?2Fk+wCa1J>7Diw0QS#?z{b$AKPT* z#2q`@t5-M|IJ#T)3uJoQsP(pP5p`9v7NTvlalqw0%l(>wPrnas;aiwpr!k96ZH^OZ z^S-5=F|)#5cd$TR9I$8)7-q8<`~40loprRHOB8t&+{HZ89_xFxtaMXX?-EvCq}p4n zbhPSGNUenXN6VA#f6C1OYU;oojKJ3j>TeZ0fEQvAjW^zpT+ujdY=8MxtM=*Th02OH z7@UUZJ0->kKk8y=v^Hrp%cjzge*iIMap+E)DZ7Z2tT2AiRo@2D6J=MGIKM)058h$g zr&E(7=t)@F95UemaTJwii7C9p-^f?T{#P1r3`ZYxUa2DTXh5tKrNWJyFL*=JGBuyz zcV;cIM6>B%glC>nrM9-x`c*Tj5zjnQXY?Sokp-Y1{ z%pLp2siZ9f?m}MPzzXhD(O|u1o;P)*2HPFF$jlmpN|H#d&vql&$8~TdMm+4+kD34)0h2+xRF! z$FU@8(Ca~vHt^^Q{rho?$un}j7Th4vA|tbkrf}QMTp?l6rQQOCs~!|?#$LgJaic#P zXaFF)I5!e>a^cJ` zr(QL>iO~i>0bF7SFQD>T%OL2jk64M@(kH?a(E4_Q)p6+^pn&{gpCiWXhP6|GnI%9O zLNm`k?lo?Z39L=h36u|&Z;awH-mR(~OSpfqHE#2;+ei`c*L& zRmh1v9+j|3F+?IR4XrfU=kD37?*mGf!lm$R`zt=@VnIWBnU4-U#Yt@gBG8#s$wpWc zN~LkYwDB`Ax(p4qN^y^gdz+*-@0v`SY)l znv@-#NWCKNUoyF{DD>>M(#H!WZl&Hh^HV=$eCqO_{1xy#*8<7ELLH1|#ZXbKX}?$_ zsv=@AXS1C5HkNnf1uHOsw}15i4~K+<%We!q-l_!uWtU%(kBBlTEl<+YVAIaQQnZ2p z`{b@%;HUQqDWLBCv1unK+eu=gJ0*^a=;x_$_kS{`G}$_9(zXNS7%saAUAn?pP=Q-i zty79wv5Y77@FAvbq!uL`n+)q_`8jp;d&Cj6S_eRfu-$uL1gXb< zGkqJqYJ@r=uZ@mmzpK7k|3of%Fvh2MbY?sKLjqBO#KQClFoJ{@;}x=A}d zzAd&SRV%AgbX36$Q5cdZnvD@(HYae#?0Lj-g`?7nThWW~DCky9iF(g7#W0ze8Dy9@eO zChoc?7fv}lvM?bTP4*w!2~WS>*^}l-J+FVL&AC3tB|-lmPiPp3sBIf5+c{qJH!}e@ z6}britCTS+YtS^LT`W#};qg9ekEMV<^tB=yqYigZ42^FvERCe~bm5JOY{jL2pq=eX zqS@br?R39O2V&X6+#d2G7m`SKOEYQ>Xk5g^2E}j7*h7lGJnCE+`p2{PBL-M~eT7u4 zmPwprBcU6=^c>dan!@(FnCr##9~5cd{4CX~*;=JJ9@}uMV5;(NP*>4ipd;Q{0KTTD z1rOZ~u=div-lD>}d~YB9LeTRNwo$uh5H8Xh2HjIO2b2{0Y?-pv@68kv!W!rlp!dHN zNye7z+)huXDM2N`J!>)^|7@fNp6;lA2bCR!KaD1%l|K6|tR9Xo)TnMXl7I4+nwA?>m)Bk*EzXb-cdmT{`N&|J`Smf^J)Iwj5u2ILu zkLzZi){WIJSW==@TFfC_0evQ@qyw}4uDl*;u5?$39FlK?qI;)3)caHfZJptYtEN&4 zlJyV%2BPpe!9B)UJ=QBro>l@6e(v`i% zC0B|wLyrTtaeLaqQy{1y%Agx+cQDy?^(5iVyi4$@?;|}X5~G2z$orK(?{1#|{Vc$= zaw&+bwGXrH(H;F`^WnRgJ0F?ogi1tI&r}Tc>fSouu@g{29a!e~JyNOR#~#M;zXEp& z{;HB#0maE`L&>Qtblv%ndGtFIanfISQ^cUynfK1WBpZs>$g}An{KniV^oRAK6(chB z&LZYW(8pO3lK-|kNNc|E_e*)H1o3HJ9Hr=F!y`Nv1aa-M8G85$-q5 z5^;?|>nU5n>WjVgq)*_kev;+qVkR$MY-<$-M%M2HDEtsOgUjUI`&h&@I9;YLQ-dOE zpC($4DX(~3ye);Z!o7_D($G>rI%(e8LWbg2&eJZL^E5zQC-qt$w_cj|s0=;gqD$JZ z*`wVtdO7S4{`T)Dmr_I3hT}(YLXz7#6Um77wC8Md+m_&1Wuf-_cu%m-U;Dn^H?ayZ}`bSt%2h64ha*c&LcYQL4sbi!49H z4>A)|dbQ>pJ0ercP<$WFghSi53zpp+iciF}oT&i}^n6Q`B-PJ%OvP11V=Pr53$vK? zvFAp5=YqmFS!f~rAyWdk?*a_Baeo=0z{ZRD%D2j(2qvrw6e* zbElI9k83P{u>Zt?C)RxLj&%AZD8U!4Jv#6&@N9BiG)pO`aWZoC$J{%|OS*dDGkboF ze#dS;mvvNRr<-^G#1yi52xg5`W6Sl)B5MQ0&U{3^wFKChey56_UAv||s$RJ$?FFcw zk*$D!o8iF|k*;g{j@k6Kx~D99fXr*71xLM{0LP)phS02a#T8_YJ!Ei8v704!2?^i4n!Kyhp)AcvSI1;36n=rN}A4-$WVf$O#rTn3UTB$1& zSW@((C4gcTohPA)-k9u!5#v}fPve#v+1L|V8=}-C&Masz7Iq5Gq?Pmvl!nT*{xfG` zS{?CCP(Dafo_6`Cgv!$_NptDhV3^Z=$^>tah+ynrZS^w>x=Nc#*F>^BH4MaH<978F z9S{{aEGk9j{4&fHdo>OjajKB5hvlE*oa_d3@9(Z(op;pi8>{^LZ+z2#{zAoYr`*JQ zL@%2n+|O6Qmt&K=#_BOBIFuT&yy7jGtMj@&LlYIF4j_B}mz%+2+8J;n|C8JtBSnmm z`D^vdbfDXZc#WK(FB@G&9pM)A;_uDCiaz$ELn=C6&xvC61G*qw_`fDm>IChm_Oz1^ zXx0!`gTl)3#tMzv?|VP(Zv0RFlwGFY>1`T|>IiLx#BxQxGb2eIVwFO?BLWRyIz-g- ztG^}iIkJT-{mg5J0K6D&B#rS?3oXKC;pLg)I0cBj+TDk&yMu@gzO@_+MH{K8^>_CzLwB52g;V% z_L=ieKRs=cxLd%@Y+ z<1-3bzWftF(#`(NG@5EgmAh0@a0P1uxCPOaGH+eL3FIx^u)u-#mnhYFU|pX^>RW(> zq;CPa{Y_2ptgIZ;S}>LEYe2*-WGCOXShoG~gDJcEFhE2s)X)1-^y_B>=z*Cb{Nu&W z(b)Shvo}l`b{WHY>@_z3>sN4p`Lv$~Or zS()kg1kk5^BK}p+$(Pr{iI;|+3_mn|U(R zPkH|fl0fLbBKYm(Whjwrh?HOVh;KY6N)UvyoTy^{6UtdqSd0-^%&& z$5fXH$HjT>lkz2Of9Ri``qBCHg@E_%z`hrvmvRWQf9rEag5JlIgWi~Wl z&~hgaHn|B#L}cjxyRkk|4%>9m=(#6xv>=Pp=viG+k>r2r^t`Min|GP?eNe7bj>+&x zk2EiWJ!7<96#M!8_^%CxN;)EbkO#kF{7o?#UuK~Z@N&2Rezgc%=}ml2>qhhYdJp0v z-h_)NpHV;abwm>Fv^+PJpBwf)bx3gQ>d+^NVm4%KC}x$blF>m4f}Qzf3as!=WN|1~ zU8F@VblfPE6*FnqtU6{yWpWSof!{Y86522NY|oNOp^a!YxbbAYw|XQ;DdTZQSoJ2h zh`~k7Np`TmsVMbvS;!}w+VtIdXEJX$qQ`3T5@Ii;r*-$&&5ClA#zHw-vd#)O`HQ)S zJhilrmtuAKrg~n4Th~Mh5hZVXlYtE~Svf!AILVY6bZmtKDj(y0)>t0`KXp+HEgb%Z z1iYh>`BcBG^GA+MeS!Q{_+(Yer8?}M^DiC#bfPNxHY}N)hk9;D`METoWTm{tc`k`W zrJy@0xj6k&?-bITjFZDHarY}aN^kc;JSu(D*X%#o= z#tW#L>molZWH|DfKn>&gY!LqsHMc`u>xnF6To>~l4W^-`g;a+xkssK6<2M2d1L-W9 zFOWeP@AnBto;ZE4>F#t4tG)8FVT8V7=(N}osx-?f9_gdNG4}l4@>c}TB*Z^0TuX`I zYdA<$fB93}BI*I{ldGl8_^J~NiC5v+&2MF8HICiVtr|bIV;IdpM6&&y*?2(_T&Q%k z=>PI1;2teA&}uJ*B?Vz;U>+?;JvS$;&VGZ$^qG0seMR5@kCUH0SwR3tnc3b)=zjY# z99`W94y7+<w!%K<1r$~V@w`;yy zO~yo2-$IFPQycxDdwY|z;u2z(7iT1KQd#AVYU3o?N=K8wd|d{7-fV?pwLUaxdHt>` zh&s`HuMNuzP6t%~!;&g_99;4SfYN8C?d}QSB&dLG0geV}j}=~t590&!t;fm|>p=g# zDAzXOgBzRijr2`*TpjOg<>-!7qq7O7;7_>%ey&wP^YsZ|3pYS4)ow3D`8f%J*HNuC zQulbj!l`V5HAhss7RVu>cK=nt6F%Ls0!{ZBenoc?Yk?AC?cVY+fMU(co`x5b~|ZKRC#Rit0uC4oTE+g#MH z1Z4yao7qPNw&O6a9?I=vgS15dDsJY5c)JkbMJq)*b=hNMMx}0fT97{f{fNj#S2tFd zb4P|Q{euyy6x~aPPV_za^t;$ML=9vm7A&`@@<{k`l^2-sr7|~ne9Vb^4>`P&Axe(_ zwb-Bef7L}z`WlV#5EsGw317KGC7&Cg;$G%4G2QBHv1z8R+!CEiblMgbYL5Wk!}PiB zzHKi${fFD#(#cVj<8yz-H~P*eGX)E~tygX0>nr@;IVjA;vf6cJ+jnE9uEWJYKe2#W za6-B9zw(sx>l?3n%wj-$ne*jEwORlN<6(h5%Wi(`NAsCrW9+@tY+3$Lm?T%VyOcy0 z2PfsHZ`rdB7X%^R+7yPRNrDMn`B{mUtW5uhrn3rbtLxTi3q^`+@#0?G-MtW8i(8Ak zlt6Hbf0W|xR-m}Md$Hn9@j`+I2+7HRac**(XJ==xJ=dD=7_;vT>GUFWu$0F%lwfGR zB`llP8G9oY&Sba;(7=n?h@rNGJS0U@YJ~yhW9JNYzg#)TbQ&bh%xaEaojKSNYp1R1 zXNmna>&<1mac6sEVnI&pZt#AA~xIQGHH)*E!YH@lpw}k6A|9xS7Br!-uEDWYE558UN~Q zO)#*L&|LlYyH4B#f7C@gkg%8Era~pKSwJ2-`~l4n3uJ))k9r;K7@FJc4h5jeJgy9c z%b})3FO6xF7Kkn!X_S9zM#T)l*?!GWzLUN_(}0`%gTsKeriA?b>(PuUpNh{vib~CW z)$^F%p>s=*tV*W%6pk4A4w6h4OgOH(W@8Ls1T1sxXy|$PXAy&;+v{n%PHy)S*-ZvK zZC&--4Mx7D>VYH*TDw$NBs3RhDZgvjTVEmhau<~%5?$n`gEN)6!UPwX`zU>S_#Y(E z9cX*MTzz+&<$H|JqnJC;U4)zs{Pv=8T5QF7=8+ce_UAhasIouN{1~+F4d1AhB^)~b z4qoG+El~P-=HOuagJP)u!(y9BLzcg{w+N_ryehYG(abwV&1C*AGjF<@Iuo1s*VLyg z2CesgRB?R~Lpub;L@+8~xtDxE6aw?sG2xjd|0l9~JQ+36wVU80jrLNab$%gEhnKJB zfqsdE-z;S>*?(5A3j3s^B!be%9~~jLmEhF|!JUc2$GToBTE|7MNTF0pdx(pS$=8Qs z)@-ac3hBUUQ$8amV-on%98X2KfUqq8Kjt<8s%+{&*4#<CysZJktJrO`CCC{ z3fPz5Tmnz~A>(T!xl_4+mSK*|ns_b;Q|LfeF6iWOLVFSROlEf%s-}h@a`q-(h+@%F zRPqPM8L79;)|eU?d-gzd86V-%sh% zL)lA6!P9tn+*5zGgfvMAdbBhO5y?22=4Voi3TZ8oH=wfC&q}lqLTSR7!#S(uo(7!BZGkre&vh&>j>8^L*Zo#(H3P19t(@^;IEao4Fl&Hp{ zjZ|{Q_Xo3bQ#1eSdMj0EG~+u(ZFz5Ficb*944!BDWv`(3)`@ptlx5PGzSNuxV9(Je zlKag#p0JDCCzvo+J?G@RG(?B z8~FV;^b1%>#$Y)s+o~H=9~$?U+ZGk1`1Iz;XOGcx?K`Scx%7PAf>sH~W*6BRojWv5 zz-&zNcXeg@ zV;D}G+)0ZKjeU%$yyoV>w}|ZapsFYA;YS=-Ub-MP=8*IM*mXxrw-JUr_FYcx_K(R=y z8y)-@N9r?eS(?+U#LoO^v|RD=zjj+ctXr(J2$O6wP^0XcKN*Gfo;*FPXieVIa!Y`I zVF3BX;bT2H16Ap64J9;RWb(x4luMe~FzQe@X_&ieGvj+feRxG~XqI_w&5{Mg{cn;lghg5!ojy2H!)EP|LsU z0z4f2)OGEasZP*Bh6>bmXxaZn^)W<%_QA$k;-hVDXJD6C)Jff>Ndc8wU0AEJ#!Muj z@E=-22~-!e-}QbFh-|Fl79^=t-Ux_Iiu^LOinbw`HsJ%wDScGwke|#fH`ByaU)vmV zpRf=-J5AN?)_poG#+6i+>wB|5eLImgl*;6ZlX~jciv5~SdY|bh$^jGhhBJlbirsd? zzWVkz_@_ANI$bG*4@JoyF*?UtE zKPf`A^)2B?Ginr$S~pHDlNO`MLWAi~uH_NMy0pscVX)iOs^T`neD=7$e`y^Cf+0h! z<m;`EZgl z?~tBP|4Xmg6&89kzb6{mG>TB>Q1?73brz^a2G3wOkg@kcdn07o-}>i><17^RWn}Cp zZIh+$_hk@kks05?gfN)*oD}4c7&0Kztc4B#L1vLD8F;M?D*%N|9!|_D<$w1#1(PZ= zOVqP}R)t4E3V>%-#}$(9hSS2$(ky5IA4F9}zLO&Py8<1x&yi5ArS*7`(TBB(RND_* zpH6R(1gye#3fP^#i>R~m=8p}5G|u9L%y1r-^i8{2cgrbUjyvi5_xB9Bg1zUwp|#y_ z1?2PpIxx<9UU_E0y>Nl75e8J&#BwU8LnF}Ba>fPHB_C9f5_<1TH*J#4BHbnPwa7|F z_}tHQ&LD;tde${Xz0=|GyDy6UtFKJsnaJsTiAjO__7(VE!cUx7Rk+JV_;NnT+2m9e zw!qkWTE&FizOIWU!wia!mcGHw)`92S*>`s`oJ>Cy(9Pz@ly4k6LiJ|}KUc0>m{Fhf z=qoWg-(E@fS+%)ozyH?)FOn>2jQYFTx!bjdONvOSELn6glmed3FRC=zyvvh$y8S%s zLEV5^iT=@1^ej#7SWKKzk2C0s01P$8}xF%Q+SGP32n1y`6&9gd9kkjx>^Rd_w)I(@8N_odD9~T_d1*C%Oz;{ z^=^UR(-*NZ&6{I&hH1!3iGnl^DP2wp4TmO%oB?tKTX znj&jHNLUBGXU!o8H!tM!k-Z}S>-zsbkfBe8wJs!)gM{RE9L{UWgl{^ZNkMT|PA#Zz zyu3q6T;D`uuzA|Sm6ixfuIG@w9Tu(JfUBN|_r6Q>WS@NYT2?IL{}XX22|t&CnrFU=R4fbi}pw+^Z=Q-Yn~N%u5Vp;+HmW+%PmofP-U7L^cazMbBx?Gn zj4}x>xg&Z9b8OF|ib4Wh2hJG$Z-Ex}d0Khi!k+vXcbPgUah0F1mSPHdTm?{zS0F4J z*j<1BtkbWKlQg_d8AG29^9@K#bcl68seI?cn0BL)G*HIGj@{%Japc-+;fR}a8-5<@!gn#EjXUHv&#DP!$Wy^|VvglbQNak=# zjU||fwt>tX2-z-ph9T+16Ds=q2W0BiJxS_P1PMeTvFG>gh!EqGZ`Px&5Qr;FQ1Imq z8Y1~P_h!s{wrBsE6Hg4P5n$1>B3&Ty(2W!$Lu4M2_gL)i2Quyg{p}8NyjVq>3S18Z zq@kadxM8W*-l}z21z%UO0#q_Ep6<8Lo3xJwg060$2gyjT3XIL&3muH-mcEA)_dfq~ zM?MQgcr6!fB_0pv{xq<^^|`^bVy2}0N6}R7oqMBHd<@7Z;yw(6n)l1TB6&{-c)TPz z*Khr_ACc@1Ea60qy$9ixyt-Aulg=~|?F@TuuO;z7&?$Q$`(ddb3SDUFVXtEE1yHzA3s2AU!c zG5!NCpIU){sGMlMgC^| z08>M}=H!N*REyvq#ZBSH|3hB%@)#XBECY(&zIP>=m8TW%^4nxY_zu#t1AZR%f5*S? z+qaujR=x20!)oS@y{$EsdR%Q9x8>|qA zg3EIS{GG|8T_b^#3Yk*&8%At_kPw^s@}?z6kM31;NW&LQ;6U6>{GZan#L;_E%z7t!^Z4jtmEVPt}rsyqCCy_TSTrUuN$7Y`PZ@>=8i+&(oG8 zUamlht*aNS<(0lmO{yMGB>FtcYzG;62MBo2(|h=x#_x%D)>24nkH~5WlmaxLStx6dFCjn*oF!y$@lc9t?y<&PX;!MyVKquj=c$-;_8!x z8HsH9Ebghi?^t)Lv3NO_DF}i;7QlvC!Q;rNwkI<7w=q$X=LZiwMnH0JdaqmRgArXZ z)pPo`1Rx6{pB_DD-ckFo6^hJG*Uq@xJ4^qqJH+EZ_c?*N&8wg*KW!Y&SE!I?e}e*A+mAJCR@=GQr)qG|Ln_Sfy|6HJji(IjP4Qlz1Vap#`ws)(#C&TXAABA4kcE^+qzq1t0BD>ErwMfZJB{#d|BX6MKbr$U$fpg=J z^hLS9$p-HvuNup0(s9(J81N1Afz7{9-6r$&ce;$*VXYoiYzxW+j&R)Qol`|g=j;%Y?#0{ih`5^p zZTW8hdWn&S=0CW=C$^+`#OdD-uOoCp2K*N|zI5YM4F0M+qT`4X_js6W z;Z=cF@IemZ^%bA((aTN&e2(gm=@jn&Knx^W(vAqjc)1@YPL_bT1aX~X?Wy0&fmtNYi3=&mbBR^Q7%cgt0Gkk9jTOo-!#Yb&7(ZMs`dukYgA zWzWM1nK^7DRckmt+L+0}sTsl;i>H;Kk&tif@HL8s)h9_E7Y7)!!}GI!FfNAn9%LUF z$0NA?Pp@FpAMt|ZCDs0i$}%QNo-KA=rLT~O@7YgFTy|rpBOb31AvZa~{AEaN@{G$p za0(hlCcPVqTHkZ|q`}?cbC9^ByZS41indXtWNpGSk%>m6RT)Icd;_l!excfduCMrQ zS_f%F8XPH8xk68+q;FQJ=yqR!>tATaY`+&j?{;0(lxcd{HU`*!?tNOWpFTGV(tAT= zmUhJd^9>hVOH2^q_r`fKW@i{RjtE+uD8FrG+#kG#t5wdjrbY)ne;r+d5`o)^X3+Mp ze}$JFc@*}_&YhZ?kMH$Cs)?^j4~I##A>oBO0iJW9WyKwoUgq$G`2rS z_I_gnZ`EfDu1|IT+g%#zs48)Ea<-JNHY~tJt{BsOJ71|_9_~q`R4JiyJl$=lH_sP| z3#3LCf!mJ(ZNzPo*5(n%{f1`U$MG06f?w;zT&p3TcyRc%Kz$ed>*nh|{}caqn;P)( z{~Qa5m-zGA_!SEbJehsfdI|J{D{vA1CGt=21V=9B>rPW#!9A;AVrW{o9M0{Awv%Z^ z+`3#_TmIf}tVx)9pAQ4NAi+g9cj;W+(TDlWmdFelVx}Hc`*SrRImQm-vJb&g^An}* z>SY%L$=O6Q*!VBbi0qkm{6@jvmjdd~=YVCvy$>|OOFAkvp3vfWZryWYZb|UjaczW5 zm8|HeSJ+H1jSPd@_%eh%g=$mUvL@)_Z{F;-Lk?OuxY4@*31j?u5`jkCQcUldFi0?J z7{w(|yQsUlv2r7)!9-FZy$K;8}$+$xPTj;Q3ylj!H!&8kSkZ$w{hQ&Ht9!K?*At>ufn z2O1f}j^Cd9b=`&mbZeAALyFzm#uee+{`_AiSa$7y!TE_vv%#k8&}QXsaE_N5$l2;5 zy1rIZ${VU`7i1@uycig)n)$x>$I0o{TfRfs95K_8rT}XNC?si;f}4%*II2uCfPL+Z zcv2aPr17(?qC~7*5d-+evR!LV$!98lYZUKbLtTY~a_R&68e6JWB1(T<r1hBrFg_mti} zF4cAIcYbTTKd>JwH>d5E{f?~AV098#9BNs9h4{1;{c#j?XNIPM_7yx#naIWmL%r-# z^{CNY!n(-cVgG_B;r~MASh|#6cibJUF?oOHgid|v5&TF1y(G~7aG@_gQ+@0~nh*WV zXsTUB{i9|dK;klB@b{2MfYSg<02LluQTL>d3P(xiAT~RgqD0Zg6O=B%1T+_#_!+m8 zzWgnrysL-@NJNYqwX&G)FYeQdleaRUy|SgV?N68gdxYab7m9}q7X*{J-iXx5k^udK znUc~3L5-y;Im$`VzsI0!gqeRo7olO*chhjMBQ(Fg^N@^!!=nb(J|IV!&xjY)a zI&=>jv5bBvZE_&vdPZl$R&o<3{dxYI0&hwSy=}!H?Vi1H*DYU98Z$@u+?VXmv{?tm zc@=0W)r}s70v3cd5@0e+G)7wS7FEaIstbm?BP0?glf(RT%Qzm7AJZ)^if@viyd!F^ zJuY-o0QS_+#DeSz65K&`GxOp4VFK&w(;tJC%hpv#Yd(HXK2NA;p&|R2=MY8Sn}bR# z)Su?}a`)%%SVW*ZYb(I^&$@Fx>WMA#brr?VQyKvYCZ+9Hpca&C&)glhf1Myvh+eFtfUd@aoea^N~ViU+BP2WR-dCej%I7`FQ3k}@y%F$;fTw-D3ZH@|9Ox8NU6(|Q%QXl zG%eD_to-dmZfq5X_H!t{B{X6*LoTVRw75Z^IA!!!=|=U)F=~N>=rad&+RlL2v~;)U zu_Ot_hcL<2XTEkqhgvR1)Zm^W$*EQP7xZ$ZJUpt=ISb7|pdtQ2*;dTsrt%2Az{<%f zrojOyG0g_2Lp`y(%w^)mg)%LH$%en(PTaj=)Fs{ptDtZAgrG^&q%vF_&LSB10qOVu zh88IyqMb>4pLsjI7Pgmsc zuoKMmX9#0uX%E$d8&{HC660T`yjCG29VT#NHs@~>a~61h`aM*!tuH}(b-F`j>o5!G ztw`+C-*fpRR_Zvenn^~V7<)!ZlB8XQEBSbs+U|Jp@qp-!W?7k1pZlGGQO|W8r^nO5 z))$!WTQ^URgU+x7?^!~ggw`fPyqz)StFRE@!!YvT$;eAIr|?M&`p@0q-vcY3z02Ml z-x&4%PYA}7#S$})2}AKwveu~%%Ga^l4}{~n8~;7Y5^#H;7)}+5mNRfuA`jxf?0Kw& z)e8|+NjDTEl?=_LDR^;dpuIeZV@?9b!59~#Dl**_WlVJF)7TY(~8 zDz54Cdy8bK|0WFA?Qd`Ek8;6<~nhpq>8){(P&HM0z@aS446U;bGznZ@duee<67Ky+xk~{nN!M{U!c%3Cbz% zhh;@^`YQ`S68H@=bMI2r#`w8PZi$_80$GpL$ge!IhqinC<}9XWr`|`?-H(#WJ+$Ic zan@oXveo#cr|cLQ#qpMAN46(nC5A!Y`^5#q@Vu{wrPeO2AASqfqr+TSbhNvPi5Jde zC%`FA!#2(j`jPt8(CpO^Y-thdWfW)LTTt9i$c>s|>coya(XR(U*j~unqH@axzvc|X z(-q}W1V}v!W_RO>?+p{5mivak++0^M_PX4kf&@`zgn;H)m^1%HPU-&okH2t0dN7ip zQOIkbv6MqyfgI{(l5IvWSnN8lL{>Y^D-4C2c8MM5qVgo~r~S@eL84Lj9l`g5dJ{W& zK>l8$E2MYKdlM;*@rS+rHX>5((zN^sdep&pGkrkNZ%vGPQHt;Fv&TbwHjh~u8o74lcMn1Q*!uy(}J2Zw)DB`+oNz527X;Mzg`5e8}n=M+v zviIL*P<+McTdGco7c{Bh-|ieA^a_e2?g~Xs2@1(vqe@}pPyk~H1p!xcd39eq8GI0?!d<;XoUmkH8?iD9tZ68R)J8o0Y;(EqWo_3PKQ4Y4F3&YFg5Jg2kwKp&;$v()81Arv5GR;0J@Rz=5AO!*|Cf=EK zJ5F&4_aWC~h{?QjT@U(>a7XXm&gwC=T zb9impvJbqrzr#@C*EM`M8Eq)-C}b&A(Z{&@%G>4I_noF^rWw==8>qr;N*+}%7)E|y znNn(2RYedz?2q}lm?}Ctnc!C70FPFewi4iiCQ|Ah@0=)D-c-!=aKHJfT2<};vux|B zJ&!Kh*L*n}u>@Y*cy%%yW5UE~_ilpqv80-vzyt8?U`scsB??GD zDEO8knjn@0ReLOgyG%{e*9CG>9y2&0pK-Cl*Dx%{FV<`Uflbo<>A7Otmw*!IFz#Tc z=%1t@>jpV9{Jsi+0GU^#u)vo;nKA*-G9tehKyzO{>K%zaV<4C)nClX{Un^pqJe4v7|BKVDG z1fe(eT2&S0&Oo9>-5Rpj>Qp&v8m>YJ-n~}Y$3>x^v2jkL4%o?DFgn>FGMH1pb16$@ zD^bJ-FLctnepR4q<gb9J@Wq2z}gKa5UX1A4{6V|m5~AEnp#sJ_UmcrEgAw}OJu zS6|kiGr1SLT06*ZOk@J9$s@-BzV`QBMn-sj7Zmf6lR_w^xH1g1W~@&tF6aO$r6j73 zH;1H8p$t~AQ9x0wf9`KUbDxn-+w(7FME-KwP#q?V3AC6~8cX{xdqE+S+q*Sn);BPH zgfoj+t%jWfrBTE#PhLr?{I|=>+?2BtE>li>i#QWbHC@BT(qeX9=FmeYpEA@`tY)nm zuO_{qCQeuoRE(I)Q~T_6@nhas!!lK#WNAnmZT@a2k^=(e$p!0k?XaqHsTShCdzpCp3?`hZRW#oxg z-JhC9mqJO-GVsOh@&h4*pAk`HI!?MQ&TdFW6dn8BozylQh0u7KwqV=Jn|Lq#VQGwr z8AO9E&HdtZStoPo?}00(*dY-j?mu!>4N~@buM(aNX*LrL0xn`I-j{D$m3k0j&iw$q&`h1m3-@3P5E=X$t3vf2tN1 zo`+cMp7M9y0zX7%a}N1h_WU=c=jJ`m7kvnJIrg?h98)!-@>lgtlx~#k*JJ!&2|VbE z-lX?7gay322`Yx0UEdp$r9tzfNS?khJHcZJA3Q`nL#U?Wf|pRzvsKtr!hsr(teAfz z6Hz;S80vR_a|=osvS$C2B(qBGxQo{ibH$pI?loAzMI`ivFk}J75=eoxm10&143a^OdN{sgbyWgk4iL@E} zLMkJPI0Y78Un|6>D!m^l_(@!ynN>(GQR{+}Q=cwq9P6|Ey%w~ad63j~_s49$^pLsw z>a?N&e&-H-Ft#3x!6BL3Lh9m@o$I^a;V)nIT=m){pls8(jWb+DcE1FJdXFfjbQI!4 zF`ig7v+Z6Q-c9#M%a9Dw&dPtaeB4hhn~Ft1oX5Dr;WC zef!_oA+65HH2L0vXv?EmEi}6#G`S)ExH%VnGeAY>bua^Gg9pM25bm2yT1Ie5!reAJ zM>mEthjtNLUmJr@VG%Cf@}1tHOorFqh2=jXe|@(4ZiQ2sCddqZV6`D+?qXmiCL;(= zN6UlP0N_Y0y$ttBqNm<_Bn>9>@@9z?x*kRj#tWI8N>Me<{es65rbn~%UtM5x5WY;5 zhWYjCV#Rb}Mlig&S24oh5&ktijNLXh;%MW(Ft%^a!F_B;XmE2I5sG?8O1eh6mC4{;j9x+XEY%eNpa1D9v(jpdRB9w2WdQoVRD z0q#fI<&a)U+VHD&gY$8)C*iFD)ARZnHRLoU_dKbdtXrLbC2zo?AUF|Z~)n^ zoTWH9ZG|h5>~L7v)eAW0*fM}{A>^W@Yj+3>4RpWexZ{sNZQJ~sV=nW^4ts65*25^B zUR#mtN4YPuWoHX?q@vO-D9gw%G*CsjCyDt@V(XC*!z#MLgLCjJGXHH~R%g9wuBKF~~ z`*-~fKj$Azn{=#>6kN7bmFn_}>G`zq#al}LN#geuvnVxQP7Ws@;^tyWBWt*)Md4eJ zEKkhf-`a}Ad{`y|K9yX#h<}DgYvQ)xuA2hSC!b>(T&P7`@sM~4;kQH-Lm7QWj1@Gy z7DXcVZ0kKhaLD|Ecpr|vE1{t>mgqdwuiTfB1~*}WXY2ZQ3eRBG;rG&t%l+5t>1G0w zNZ_tc`iU;wK4vL%?IjpFqvxh!j3$PDcdgpl@Qb5$p?g`H(csF*RZ;7~1xv}3e$a;h z&RBkcO?}V9n%5N9&aXe&P#XhD<<9G~8UXZPY>10zKm0k7RwfDg{v3bRzf7zqx}J&p z(O_1mBz}I_KK=0_0&o4QKLYG1@&KE5gdA(81ZTx+$lRaULOF{OH>rrbhpauouQ>sK zpdWupMR;xxEiEOwu ziTvz1$_yO)yrt{DKAT`$4X_zDwWr(~5(uu>Bf<-@0cE zQiTVcyqQC~aHWv`NIY^ zBwMM&2r#KJ5zZi>k|LTm+n(nWngSkqXZY;si4tHfXfs^0__NC$t+P4dqEy^}imH7qz)NoPq|HwcELxyV)j_eJT~xrsd_eA?LtVw zsn;BSaRv$=B6OdIF$gQeW;rir`*+-t4W}afrQeUG?|uZ_>$bWBUutUVTdU`Y+PnQX zTnj*#j}h>fc#+M3MO=|!j1`p5{fot~xH}e}C;q)RNo{?3?3fu9)fjTpAAh^eLgtNc z?|KlyS4dapai7n424svIaoFHQNc9JIZk+`IU>AB&)sBx!W}0vO3P?gymr3 z>+sE$7lD()niJoKHPAQQL>K(OZEX^j2)vLdB;`t8fw!m3#1c`eHU(S3@9l%`$4_ur z@vXU?yF!4M7&0(Ii&*%}6~x8|LG3*YAG|TH(eVJj+2f3%-tS{V=QT%NL-}0~`o{@X zmimbakUSmU$@lp#q%+uCfVizd${Md4#`5~(?eloh4w2F>E5=qjJ+PAG`cmDy^v{Ya z#LFo^(G(*J&_}$<1c9+`*sHI|s|JYG7jwu(af2*u@%7$Vo zpaJCznrGh3Y**t?O+o$1JFf}7kPtQz7*6kZjNfFJ3S@CH|2EsGrb^n|-)^fy!>M;& zfxv_~en1rCv*DM_X&hM&)AefGR8}dTxtli|IXf^i;}BOz+%{n6O#Z@+!6z5TniixM zHGm;|Hu238mQ3gTpw)<6nWadWr+&t#rCZtKNPF2omA$#1|B2YHPFE`Glh*@04GC7C z^tj61JiZJ#d~hrgc$HP{;;B{W#vPTCmwmMV8w&<<%Eg}v{(3fW$B?78aM7;rU( z_&$0(jh~}_JY&d^3~veK?KS&bOat)wc=KO91ON$*5Qc%zqWbzmV34sMX8{;4H-Y0U zpY7&}bZMD9W7W&qJ6V}w2L?|bN(eA&HIY4bHd zufc$_)!zB{jrPv6_I_5hABi(zsrmB*#Q=;DG-&8zpl5GL^J5+kj-t(*kWc^BXrCj*=FpC0`Vv32gq$+oMG7 zTdX^(>st*(Mx=W_juJaWDNzjzuK!3?bfO3KA7O274VN*1hw&)m7&yxP2c@QUo!Aj- z`C(Irucd_?HcDY}&Vy zGx&?h0CSzK<7BT^{N^<^6h{mASW?W=-}u_Bvyy@M#)G^Xn6U7e20Z!pnrDC-^-)9) zS6Xl3vccEXpyA*slZC(bK4I4f)p#}7%DDX&T=fZ1VB!q#27jtfv(5bLpMV=JqbcajqjKkXfEx_%p<)=pE80-f^7Y^@%rn zG87y}W;v|aR*@e<1oC=ej#0y)r|7J@g7KuIG zV)P@%&#h%Cr8e3S`MqLr;VXpfHd?c>0`rOuM{HrPQ0$q46=Kx<6#@ay7C6E z7#03ki7)hkE~C4lozXtIwUsOn^~V$r*@U~peocfqv_xh?>2aW#m(2B#KHa}Y`|0sV z3_JqmaQwFKQd8FaF@;MG=|8Edo>?|iI@}Lpq$$zAGQp?H0Zb!BwE(5)k=4cut{2a`1pS+Bbo9f~y+FJ=G(@2?8+t5Al7PZ$N3VEOb-Ey?@L4|tw}WhdtZ((F+^3^uAe zehT<~wJMIa6@Utce@{3IF(ASsm%zqR3g)hB#YT?=2O16|@fiX9Z6jfPclp1)I=?+z zBO9>J{LXM9@OgK6gdQZ{8WhdZ0sU-QuE*RVAz8SAHaVc)M{tCCc6l8DQK=Kp)p}wR z3@;7$RNbT-0*`ePm@ys6=@3#L?cG&eeOywBv>*g-rPIA8qtC89VUGuH(}k64sN?(% z&}cOT`x}Hm30Is@>)BpQSEPn|d>s3QF5|@+%{7a~Y0Ck`6G%~Q;aGy9S{5A^PzACb zl^y8iR6*K+3a5-w%N>L_j`H_KBOngw`@GJp@hT_T5f9`=`Y})b+`99xdByCmnk}c0 zT>t)1Znz4(Lf#8IprUjRDYld(T`RkIhaqPlt6J3EA+ivPC#EsHv-moEeA)IhV7JK$ z>{D2fL(~7mBLRylkv1y_wZV9idwOu84yxo`;Vk+;H0Vba(aNNW3w-#YIhOed*b~Ms zysjPrpcZaV!LzR!71zpNIFt{It;R!mL6?$@hFe#ciiegKcWz2A9P6Zk^H{bh%Lg$} z&NI=d81aeiX1gkAJCqkw^jr~?sPWphV<)qSuR0&BJiwaY{684BqxI$n7Qe+%5r5O` z5;k|LOH$PJCsckx>-g+rKhNm|Qv1f-p-Rp2KD-Z#{%V*)3^d9lEs*qv_O%jiv_ScK z@wyU7e85ODOT!?s-esTwZwuTcwrFqoG+2HrK++3FvC6)s|2s^pT<{LW#0gv5qCdj7 z-OYktyb_o==^glfvnaTGu2fhwkNjlTXmqPC8y->Ca_+=gC#lSn zEB@Sva#J4 zCl-~nLY6be@pS3J`3~jp8&<$3lF2FI-b>;gog<5&%-`;2<0XG8Oyvh+Dq<_-lj`N- zOarl(U^)+*DxGQH#XmK3p~+DIHjBw4H{3>xYk!1;TsinSZox&b{&IZ3yR90|R5}9m ze0CmHQ8(Z^i=)+vd*)vMWbcwrWJeCGgJJhR#vAwte{>}Wexa{-gC*AcFpm09Hdg#; z=vZ3fiWtifYo0%eRz7@(0LLqo06JL-tfwsx?Z*-6#eTD;hZr{qOEUa)tpd<~NOwzPN7>3JPx#M=aK-aK zvwfs^E38$_>3^7hCRP&^HW0Kv8LJ!D3cYo~wfSc{yMy)W*m8TF{CHJ-ycJ{)D`WjA z>VZK0jX;Bn7z90?n67>N&&UTJ8hs@PoIw|v%|r;s7rCMQRT7qBgS;q*fd@SnLPev4 zrfl_*!LnFRe6nUE8r4_w1kToS=E~)sONEcNJLt3nQEL5AL-aAi-5fy^=2)a}8EpON zzv~E!Ij}sfKgo!$kE&k2k*-qDc%vn)aJDl*yZoCKIY95?!{@g3x#=ovf}s%?jT0t?IufcCOhX;34(g<=spL4(^7q>DZ#U!Ot&qpDc(bHQ2bwXq^+%BXx8Cd3c zhBw^kerObh12|I&3jXuWl(W}Kaf_?U!_gfvcpGkj-{%iH7R*cWgd_J!rBzph!kuF?F^nkqqFdMzp#?*9<#E8yv>HPC+5%dYen3-ElzJE-Dq@8jKnmqMptZzFe zye5=QcQ6$@-LSZDKKmV*R9zIR!BHz7u0+@475qgTtrvqC&b7;WL}chHax;y}(=$%b z5-j?`1HZyub99*5D1O(^CV6{b*$C4R!LB4lm;P_NUKq7EHhIf4F{( zD|57ZU=e)hJLhkIl(k{`2WWaY|D87Z@uY;1aT~ZhfC14M$X)bPd3R9NZ`mO{H}vj+6l?m+!%eT@|i}L7WgxsjDs^XoFEv2HTPvoG;X}126gkp zg(~f;w)J|KNsDmm;c}aqq#(`ELO(!lqEtB~fF=2ZU6u~t2R%R7E5kZlzkf&eSUK8! zCebo2HVx+m`49gtu9D&+KlhLj>h=!yPrZxyXRAh#Gvvs4*T|t2H}_bUW9}IxAQ*lH zE1S+w6@j|wD_@3L^JjAl8a zs9~sY@UkhkMB;f|?ahUtI%JQ(t5?}n6E2F5*}2>Ua)bruhaMHCYX$A8KIV!0o-I4? zr5T+)=UBSmElerYcVAbpxNvQ7z-NvtT43`&YSr`Cu%?vNRS&hq3zWrMzK|0R^UrQx zaEw={a(~*mW?suRnrQYOMvxAemMC`O_#L@BQ0hmiFQ;Yx%Pw%W+l1~P(99W*^k<<2x}2+4pb_)qoQK^`t1 zb@n1f4T^=XTqENr~6_k5F1)E~ZHm@>?X$H~|85q%tGCj6P~O+#FAHVv&T zh54N>8rPBgI;OAop-#TFHO7{2%#K7A-a3Xxv2jU0Z{8FnQDK-+)bMAFB~r0g zE`Ci^rP(srODspe% zf=!at8yOs7)4$pOq2$FcmoC2=c*_KEy5-Ih6{_P=O)S^&UK&r%k5?CqeSKRpp4=xz z*`!(#C(NHwyQZ%sf3~`JYe3~6RVcOEs+qOL4C0v^%%y#!98ubfCz6S)ACJpgQV|VJYKtqRok|+3njt&98wRR>qTV>NEj< zMh+>sn--Ys<#WmWQjQ6llGXnXdD!+aE5%mJw1ZPHDHv|QA^rC4SR4zjr=CSG($7*y zt!b5qT8?n2(VwixKEiqS4PNILt8oUwI-ZtCTbs-;Ziz6M@y$Ve>xtbzuRO`^7k+df zM-EMuH7zdq)ZyO?&UIgcs=Bb9ae#Oa6q?<8FlGWa{cZ^`9zKc?tF2VcK;5QZ(xk2m zlfiRqI!`0%7y=>JPV?yw?H|js3#xCz(h@Fa_)I5zNpgp4sdnOw~4(8w~_{Egx(voTRryM`&r8=tHB z;LBO>xozv#2HUa3Cyyl!g_w|=mQfa%q@q=g`O)b@Nzg-J=k#KoYZr3PTOZQQiCp(J zK8Dqox%`v=u?{o)k6KktcqTa`Kp!q|?!SE2)Xw#|iM`=+)5X=g`pMie`%8Jx{kkmz z75-r)9U7Dz&-j{DCXT^_><3+Za&a_`y3-Pu_q*>$X?rmNe0aq7AM zN^*QgrwHo@9Mm`_RmgSpKajTjp4iA`UB|65MDP(5llXQ_o{6f~) zjOA3@+QSES(z?O2_Y5?FzMO28OH&ooPDnz{ayk&!yE_)$+P`b zHfMcctwdq=>+rm!eTT#)*#W*3E#ndxvN3?XOw- zTN`f|G~hNjGa2T7rwe6Y2P5a)kPdz4I+{;;qVqOf2;HEv#&L$=kjE)5L;#R4g&-w55}HFB>Q4pPIaHd5!!i zE9CL=?0iX8w$!2sUQSq|4CL2a``ey=THtHD{`lnaNv5+mtUe3e4Q)uFo$GI&NtUcg z%p;&W&Txl!3h15Y3S#6~MMaQar^>#!2;f`p&rlS;X8iIyMPO?z89yY!>NJy1zx!uL zj-Q2>I;xCsP3`J;`H0#9ZL&J^ten6AbDj8hyO7IJTc{|gA+|mX_$SNT;?`m06TaEzEkG2gh z%Z6s}1Bb1rxY|B`*^4qRd~vGb!j}dEnx^?{mMWL6=gj!1e)hpbZIh9*S*(^YY@SVT zMDW8}ErMI%^g)*5qLv4{D1*{wEZWJ}_PuW(^*Ef)pcF_rnnazWuEpJpyBBwgYjG$PiaQi{cZcHcr8q$o2;n`?7~l7k5fVsp&fa^iHRmZxh6}jQoz?3%9fIIIcHu z`dx|uiwST1?aoO_wnOLLWuS(>N5Jjeh*;E0cYuyCqSbt@#hKlr5mU(?{`GFt>oRfO zZ#TkA6G(~NWRO^~Da38wy!Wbs2(r%9G@DmU6IaxoC~W0!fnLyyw<+BOG3OZ0o@H5?-Kd^L=} zMH$Z>3$_~3kF*`gVt7k7Ud*}cUOuh%q5N%rh>5Zq4frtb&BQz-*thsMr+o%)hk6;8 zlCuDaLFugSxO)YM)wFFFUzNeIizm!AQ}gO=2kjhG47^s7BJXlP@b`A_#v@nuFv1;{>`jrLo~9OmBs>& zaCP3|G8c`2GwRlyM?SKGO84@)5wOZ0SHht~g4Vm!v{+)PoEDyM|u!lK~CY^u1-^x-?jp@oefrYTir%$x6L>iENL#EM(%+^dZYge`8~MK zMsX@xFO650JVu^|y{vQU;+OkJE3C=# z4e1v5Nv>?gGSc$y*RO)q!;h*A+3gqNSJA}YcaW4-NdBCX?&?1^J$s!AKa*l1+eM;Y}=gR;}(Ud&j6Was3E05*3ah)5H1&>Px&H;CeI(7V~ z8*N10BnlErN|iP33Q(kv+74SWn!Epe1&|-rfaMCx|2{|C&@^1nDhsvcKU8huKaby}icXKSnnRHn%0>Pb ziZ_PIqmsFla)@g&>H3ZrunOO_yIHa^i)j|Vx~DEfmN>EdHAtd8T2KcWa~Fv-OtIWg zX_;z$GeDRy-7oXj+ND5-%HpRrth_IS3Ws~hS}J13GE<91POJ!QvDt7IGYr$H?}Lqg z)xRKz)k#62FwVcF)hg)rMR-V_BBhjRoD|o3gbF25;Vg#ItMg_xS;+LJ$RL65lf2j5 z$nhY+ z*W7pwb>yf`aL??xe@XatT%q~DNMU3={!zEnC7+{nt`|5sx|eUO_uFh}4~CK!%N#H+ z?m{K`hs6hXvq_{BiNFgOLfQ~0*m#}kW;~y)9`o9Z@wU)9K9(?JlVHU8ys{RnI3hJ~ zlAu7lh>A%zm1LmwBg2;kN@!bld=P0~Sv376%h8}$yp@zJOUAOB>bE8W9;&{}S@I)bR(^KZ{1? z`yBZt<HwIG?+A9tl<3@6XPMT_>PTlrO|Wbh^i#q zGB7uOShCE7s=-H}*-6v112{$4S(NUEp(3 zFHgz?xdcM*Z8{l}+VX!^oobv~P6B)*%7QnqQumUW>+AjiXPBc%j=)~E?Snow*h%m( zWl;5YzutcuIV5+@8kr1GGuG57OuaePL6XmnWn?yKPGMpoM8%{yhGzeAW&JFM3I#$47bl=MyV-ZGA->74L;gp4?~mjwuP2ayWEkJNw2J0xE}Qs!uFMw*n}~&BH2x z4NBPRn2kpBDScFz_M6*^J1No@X`5FQAKJci|WNXkdV0odSK#S) zbZ|3OVQx>_G5(=tjNteV!wjAjAR5}-{cOUHBIxe8!*@;dtSNnk-p{+M{naPivLTSsL~=(U zaL2ys*1!+r;EdgIAIT8AV1d@tY=;>Q=4m3xm){=P%ZLOeXR^^1`GwocCwDtvv0Ktw zR(QZ{nYrWU<%|n$Q;r$4ZH6*f1*y<{XquZ_m$K8I3Y*H5sKGk;>q#}hfjs9Fpw>f2AydCJUJ-TFiktjoIB3yg8HxL09UN%20!Oq)y`+7pNM!8 z^gtV)rH3CM2h0$gJF;!I243*9&iMqJ`X?<)pIgo(qM%~|nqQ3u7bcgMy(sbe2vX5g zZ1i$r)C$J4Yi(~-kOVmTm-+`~Wwg2fSKs!BB4T7pe8)j4lUR6Xb0SjWOaA(ZnF_8TBEd-mb6KlPR z!{~dgdAsOKL33cV<6+zv=~dJg9_yI8{!o;Uy7GiF*80PrmG+9EnDjRa3MsEZmR;Xt zLZGbS(JkT&hufORKLV0&fPw;X*5E%R1E)>b?ffZBwd^XEy9`$=l-boGGSq_|tLWeh zp!i4cZn#gkUjt7k_geAaExL6KYf61PJtc~6`=_kW(aIVym@kh=Xgi7CJB*p zz+ItS6rab1NH>6+DIxST9BE`a1svXWZ&a{g48-_L8{>mST?p7OM8dp1bX8dmwtDvD z!+PK9c}0NsxeeOr{c%727p(|&s0;1=FP|rH9Qr4f!~k z@qm8%(dv=K+wRKhYij2iqInv^G+mgTL&Ti&-R^ElQcst;AVy3+9}J!3ihJAD8L>qB zUMrSy5)80A{MlPlAU09$6{MqJh*A@w43N5%Q0wYLJFTuCA5U#1?Z01l;s&|_yA!w# z(}EK>GvLJS#J5a~)QLN#1P)KnPR~a`dMEoT&{}Jo246bAv_8fJ83r6`=@@RcxgVLm zph-fJxvot@ZM6`0C8~L%U3h|5D(g-i9%4JLeMh-o;sil%k2(;8k)8z&8#;t0X(xlt zlexd0HaGqZe&S@}kI^u)7WFHLMwOJvE0ca2CfVT6{)zX6+60bxydk=bi3Ee86;e#+ z3(KiUAJ@>j>8Ee@Mr07?Z8FvK$UZB8TF*14rd#IKgoP*&^Mp|E#5Tp44OmP2nBoTLeall}Hu?2|@=la3(y=skB5D(=^ zG_q_>2gwucJsSY9h9<^#A(%Ojnp0iJ`qk$Bw~5r7yP39P?ndXEQW z&D`FvJCi%F0ddla`_;PDyt7>5?M%!X7CIbigtWF36u)tvq2>WGvc--a&EB~f+UYk_ zI>!9QLeR(Efk>jybtkvZ5w*$}r{Aa-73lt^q<%;OxBZ1K_5A)a-xY4fs(8ForDzt$}hBr^mg;#|OvOkRr&j3mC?hGMe|9_%3B z`J@2112}M3^LBs#sQS&pGrnl6|7=>6sZ(njjON@)9sN!Mg*h3nG1>w+cc|Hy#-Y<^ zznE*<0pAv{A*72$ocXrau1G?#PB+N^Ps~fSN&|GPbcbDYVqat8k2Xt7FUyr)URCce z^&ByGcE#LvQq^Ivek^hfEL_9zUV9;axp>ngISt#Kb-hGKO{CCW#N(_IsuprjQry#2fy1;Ik68u$u{P;#-zRrfb7-`a$LKYFeeG8KPY~>}-TQ!Nb0Evbxd|*O zQdnQq$nx}+75IrqzyrUDg*COT^Y)j+sntEH)ilrM8A2lYy~D#W%d~f~^>F2(()D=8 z3rp;CEjuc{i{rMXd9cS*=L2fpz~h+n=LazVZdgjs^IXfiCfDF) ztLY8kgo4;yE|BQ&#rwDs$DE2{uNn{cjUcJZ%>pqLt(W80d9d>>+U z*M+$evmvyM_FaK*p^~?(eYUZtQ*%atYKG30Xezl}&%W&uYq@YcFYO!-K1vP^xB z9@U!evt`hvrO)Arm&q5a-)*A{dlrmH=`px)bqR$bnLq_hM&eS&Ir6 z4EIY{Q^c8|xKPu92=LX8AjouGf2uUS-p4p)9s+2O3nN!U=BUU3$ry!nlau=K}{Pe*mYcx5Z(p`pQ8v}7WGY|Q^hdL!9cj_LEO?K-mM z40Wd@5vTam+P~sD{x#1M z+k}Cy?9&dQ_0w`2?-Ypw`)vEdNd_g?MB!JG{)9bR-!H;iR3US}+m0^cKukcRswG%8 z_OkmJ1LQA69C9-$^1#wCecgu+>U=<;n~dM=CTl1d-?A@TR1eAy=ywI+!#`wO*?skA zd(m7UUIVd@)tq((sBHFq@6p>c`}t5%9^ z`e!}P2fH2XXwJH%yi1>FJ3(mhz`0h=&%*!8u(dlr!K4ltx2!TPe$J0Fx5T~^q_xWY z`hDmmADEUU#$k0OPulDs4J{il5P-h5-?gY0={3j7Co%U#I=C~uj$)UxtPpo>z*dhA z;-cQq3_822b6g^>&r0k1}5(>df0fBi({(a=E{c#*M;8c?3; z*G$D-G21iNf|3~{uP{9&za4!X?D79u07ESTafaYANFg3V8Ap=#aBXyfcxpG3vN7YN zK@*D@%W7V7|1r6=ISKUnL*6F1`EHEwxW%j>{?BgtnEam<@UucU8E13=BOS3M@b($w zs(7wVD8H-c_QO`qCQL9L&W8rr*niulm75*%9zHZtsLIxa#o8pLl+_jV`+y1JSJO0B? zK$8CVGfKlgxyY4|s-9S81#9%^Ad?0%5#QU=eNn9_#stu$!7zHfTH$cq6HjT<40U1!o&7G3vG%PrQl?IJ4}C2*BA-za)qO#a$JT5h?;#)#w<`Wg8D@)%z!w2;r+|Yv zx;;}^N;7ENB)^K);OJGYgrwnoIkRh~&-K2Z7P{!4ngFOK&Wl=*#>r5XH!|HK*W;B4 zL~ZuV-G$$!sd4S^ez*0@-|t1^geO=U8sieNP>b{sg`yN5yV7rCRW!D{nH?G-GJR@k z0*H0z#LgHVL?REZ6|>tpyLhf72?5VudG8o*^PPAxMQ+_~IKCKq>3r z2YdUg{k_*lV176W7E0K*$MPnrma2sOr73x_^y4jT$~lPE`2^LD@J$fcb)J^Kkf`*4 z0@auO3OTk=mO;7_1|_2_|!8}z={5)A+n!D5!^m50i zt71R?@aoSQ4E(?{rY0okc5(WdNk9*o4*ex|ricGvr)S4Y)CCXz!1^*y>8?>`9&rd< z`<;ljQ`z?c{}Zfq4v}R0c^M$1=FhHl&MLq`zJcBJK`d(=G{Px#C*tT;*&mzQ?8)Zj zne8#zP;O%#$+9O+0wIUL#C0fw`lGLpTPxspZUJy0GSdw(Wl@3=+_U!EHJds>>9L@p z0)AeYZ`t-7IkwJO%O9YSsENB&vW*6h0wk{^9I~&)IW9liC;iG~^TPq>$^B}A&>2r4 z9ECq+Smzf6Cu$?`={?^3# zGPXvJ6ieG}kFo~I*9M0Ow6haSfP(HjG&K zlc3pdEnG%|n_x4uP~ApbecHSaGM^gWD1uKm)E?lxQMR*|o&MZ0?vqUkFMqS0fq>8G zmTgyS9CQA(Pw@lG(1$I1uz%i*HF(|oGT>g{B1sfF4IjYA7eGLXT(eIy&HoA?9uQ^! z31F<2vwKr#iSXKXzXYzj-LW&>Sm6rr;@M|Kc=&KP(QptN+0$8rPF~zFa9;ypL1bk? z*dYA=-CA;!L1|c{%2l12(Di6xE$oQb=&kO~ig|**TRCmV*DSAtb?0p$)qaFhWT(@8 z`hUU1iK35kD2=@@l*v8yz?jY3soy*i#t!Eh*mke9no?;pA4xz)qZnZOlS1i7e>XrF z%TB3AD5KF>^c`e-LY!eTSG!#?n)ow|h3-QmE9UmiH*R;0(ggSSigd$b&Im^GvyP(e z_k^mX+JdS2qlx=RRmHDtwL*Gu6{|shV~J{kms23Ng}_7l zIVg~GxFmY@bbQI29It62E*>!FwYe4>$IExKSy1A@>X?muZ6#aqLF+_cdP#)BZh)Bn zmby%oqiKagbhC39ql$T9uY-Kgbg;xv>$GuQ@cLaRdo()T zd)Glzp|jsN9hcqAP6^dEgkG@T3DfhIlM291RKGD*vE$|NY11M_`KO@cbBAMX$9+3% zGgKOJI@e0%xmt|8?ep*x@$A*d98ChJOD<*fNW|gyr;DzaI@y=Pjkeld@OPfA z(`Dy04P_A@URBaeKT;uY$aV z4{$hZha}P2+MxZJbt1m^E5%33x-e4_zN`8Pz^2IFxxPa2!U+ocN|;BbFL29_{taFz z0P}^fGHj0GXC2};XRWtv!;io-Q3765LDw0(y&sNUCa#f_6mIQ{k5|mmcAEAjuvr<9 z&U$uc^wnn9#bVf>6=&?4fay)PGs6ADX*!XMk=2Kw|0IZ@uVji}bUK96|Kmnn94*dj zMAwsqXc5JR;unt>=vb`MTaS3n%7Zi<#xi{Fw57T{pY)ICs!oY8)ZG=~n6>AsjU*6m zwy0<&Oz9+v2Kb_4!yAHaZm__Q@iw$3{_grv&gSm}Z{o*zPgFFe)4K#`H3uU8xy23a#NNd6$!rXJxV=X zClL63Y=LQt5fVH@^{OuHXPI7sUXm>iKO}WlHAVr>8#C8Td|ewjcDs2+5a~|CXqCOc zzb^uSPz|jzfhHrt=Xst{d^^aJN+P^rx_q@~p4_B6>Wkz8UO407Fz5bo9rDc$jt&5=0SHLzU(m9l@3ELH8wK)9KQ^2H^WAdGdZ3Vhjn62fb1_abNj;X586`}jCtfFvr2)^lx%Z_Pdk#XmZP3J;dL4f>rbn+G6a4K8 z+XS$;Z#daGEu|41-`*(R_yU$5@tlSdqnwd&aNml0PI~sXHE+hx1> zyS5*XcVseDWm;mjZ<2OPh2LCFbS7ulmo+Wh6_Fh64cc$o@iNji9G*`@=}okJQ54!F zVqJzoTm)(r5Gv8JY!}90^}lRriE07-s?{Ydy#eo~|5NCgG-9FD=v|)9Wr3@E zFbY{p);TO5IZ#zDrA34n*!7F&e=bMX#rk9#(tn4_cQ+?*!}WD_zppC^|w-25KLqQO>zPqP0Dgr~FYV zPJ<79YwQ0dV<-lXsm)aasttaC(zR@Cuf*K4`zzh&K-a2F_-?yY?efnAOVb|(=Ec2z z^8cVHE5O;{8~Ts^2NYf#V>luAusPs?s4*(X9Q_c~N$Lx5px9SD`nvA7zNKKDE3%|{ z@2QZbl@zC=;reS8wDP)U@m~FzfV3fU&~m~szgJ>oq~rvxH#_oe-dcl=%spDuuIGy< zgaIYl#{7)1klA3Af@O6(+|>jZ#BSiyhkCy?KiV)>?l%tCn8*>zf#H{yTU|@ax~X7> zF(C23xjNRf?O$I4G(B;wpI&IYSwi{bTekjs70mR*_Jrse=|atDo-PMX23py#M+iaq zKhQ&PKj{J`2q^G6`b8AF^Q~d()9H3?H`B<=^+YYD?^S-sMfcI7j`1@*mYu}l>s($9 zWFB}5dte+zD}@vl?Lj8XL>irR#ng4-IR=}8%6yUE;(_11?C0w3B1oU=O}Y*$Y4(jZ zxkVH)jNA33-<0iq(v1;=OfJPm^ON1!y_xyyGnaunS!w9hhm&F2PLiv%B>vBYV2U^F zF_XVOsd|r2>tS^tBxp`e#q(FVQx^@7hotOA{#?ZBrt^{+=9~6d&tl}}{GbnHrh{!; z5+uj!KC3ec?09{LRDOMkLE#^9lH1FAmsFRB&S-(5vyu-R0W-5Y#zW49fK~E?8>OzvG%|{&Kea}mwVI1l z-&81YS_kzw#5&^(!v<3>yC2xL48)|f9qL`zJZt7 z@jr?IfMzE6vS;!%V{hVfxJayR7zlji@w&uU1V5^_ zi6k`OVS~Af$>=B#C@qZUQH#{Y&xIwoJn*43+`;@$D z<%;CnEh%b=+iDxZH#E0?MULoF*D2F`-K*F z<0GKWNGucVEe;)?j>u9KR#J(Sn*?YG_8xf5JQXWP8zRD9CV*c*>z!>M_uU=?sU>W|(wChO>1} zTTXo5=FHb=(EE-PrmT=ey|L$RZU4&hw*E%RDGmP7B=M~h<=)~um-qft3GZ6(|5zn; z!6S`7txauUAqZ)wMs&Z=%~Nz2RvMAB)-P6~gYtm?9O7f%(94*SclLEtxLX@th|iT< zkNA_QjfC-(blP@e50Xj~{IjFKJigzix;?s@L7+Dq1eO%9;t6)slWREQ(ok=FIbr$a z8T!^^P!czMdh&#OMwtHnxWKPnejM^o4o60w`x8b2r91X!QLww(7QqWBk~fX|-jGg& z&=M_hl=^*IyYC~$R0im9RCCZDtCuc;q>a8K;~1!taEqZkZeTC+w%qz-%lh>*iqHDZ zs&#J1V@2g!1sq6&V2S(%lhItfcs zj!(`e@$yo0^C?7Rl?RSXY<3`F3XSpW3+`nt(>zT`57dExL4 z{3UR4@dbz*0J!Y#{tQ#l8$&8&p30vdm@l#x7Bkyvd^a}ie@oqurW?HeahUc)cLyT0 zmW+hnCChJje@cE`Y#`!4@#6r!Hia$@g#TSMz&FE;=k`(u&|L&pAMExnjFnI3(1$z2 zNu#5S#69pMtYLG>d9G6t{0H>SB`3~-PwTRvry154FYInhx4!VB-N@b{2GJ9S(v>KV z5JlYPZw3*vZC3DE)GFel@i@crw^9^SFMuy#0HS zF!nMy4>-{sdvdn~0h7Dhw!eZo+KHmRy<_xw921k=);w|rv(akt!6etnN>;QF!s?$l z4#)o^2a<6Nx`e?`+#8gbjnN;kI32MvWW#z4p{&KGx zBVFglml7Y8idCKM2D8Q7mU(S>)~KSKzmRTyu7cAP?Vyi>C8znx5n2l2*#8Tj$cx9f z8lTTO(sd_gTnIa%O06>^`NaWQQT%;jdjl~NfPP0Fs-b_g6hpk8hsWI&$j=pnB)+en}T;tP1*dan8v zzX6N8IeyYB#Nxv9mQg8l21$P&b$2~Agr)% z5>Vdi$Ruy#Kq$?1Wy_X7IgM2}%>P{X zpq2+fo%N|ayLN2FT;_m2H}~ZFkf1S@m;jPOEXVYFA=v7}x^rHZ)t>e1v8>4(?Am2# zD-!#gZyEZ>h76Rv=j>N+Iecv8g|}~W#>%CwbCU5yp}ixZpjV)^fqk}zjr~MSjX&6A zS2s!!7@@;n3lRiIc&aC)FWOpOdB&$>a^2~#r#`WHER2sQRBaHl{nCwU61QfV@$sODTS*;CCeM7`yP1>k+n*+ zKam&_t2MT&cN#(hu4#|XE?&~O-M(+yf>j;3L}|BGF*Trn@zhgY zt@r0`e>3b8g@~Rw_{(&PoN`t;R{%QBXW%v)L7<Od`l4A67 zd-M#+Po;`X+W>&9LNmhdc|OCox-EC=Q z13CZ!b-L;z)>fIG+ZgRtBh7}+z)>8e?sb=a{PuuRtBy+8&K7yue)w}gHv8F^zR*yn z8_MBAF~~pF1<&zv`d!OXU$4t0T<3f<50AU;7uQ2#o$8JYLB}@FlZ3IQC9KWhLf3V9Bm;J+Df z-3YYr#hn(j^Ktq7LBftGWIXwb89tLzUYM%Ni*~?GamDp7MP--{T_ODM;vu_SI>;x) zgHDv__vnY%ow>fMZ3rW;mK>tiT9W_YFJwr0xMoJq4PA5|T&W@u5Ri`G@*68?Yd~4L zp=JipcFe5F(Qr<%TKo|(Ue4`s+HBu7rS*fm)&lW79*1cVy}@ooe^jBkOc>f16&419 z7*M;e`CXH@x$MrYe%h?l?G~T|S*&dFNJo8pQw!tN&_JCLS)(G8np)3_zMY*3RQU5p=ZqRGXsR8`%*Ya;B zy)J&ZhVdW1NZR0me2dF-V=Qnp(n9STPm)X91p0Xn+0&SqEu+@vNCN|3yU%JN3F6NV zE4w0w2mSt3;(BmMPkT^~K&ju7=Y1@dVq}a;oyyX8Vrge_`daYHoX9Vi{YS;K*ZQJy zq+cMAvoe4*LJ`R>w>tp%e+bIe0ii%GkV~T;_TJ}!K(~%yta8|A=er~xz+E$P>PS06 zx<>OsSmRy|UfURKD7*XjYgJ|gOhL;G9RHi@maDcJfZLO;;Pf#9cVWm#v0Dd`+3bK~ zI7Rw^foA*(14)+BBeQyC2Z>TC?URz@{ic_5=j&?as_y6ebzNf4-{r@X4bzQZM*ae3 zSz=b~CFsfpAXD6Iu*UxvLr$u?4}G1KrN{>1E~;Hwa1KFjr}Y0PF67j6bN+)=ozCO? zz&;ff(CaPJt+V}B$0K}FMiU_{Yyl6Oaj2^AUJ(ZO7jB>|*+Kc68v{q7=#3aJM9_Mh zdA4iu!Q?{&+%sCxm-GU+b}c2qvX{duJW!gQVCdoM-|5JNC5-=}qxg&?X0uyld+hP= zy0e5)Y~IbtHy3BvLvXyA@dI6vIu_C-LL=?-3PWZlB0zO9m zS+@*ANVy#2FD2lMx(@VrLBshUd`HuF74|k%5Baz~S4=yYYg+Ak>qbmm55I|@D7GkgTJ>|=JocZCao{1ZKU-@# zCP*b+dv5QAxvMV9xnhTv&_8PBHfH9BfY|O>mxAUR36#25Y|qR(b<}EczRQ(Z%r)E4 z-zs5$9w}?6>Ys(dPF}q|PFf;F$G_R~TCRMd8$7>>6F92HZ6KrsA0^^2;X?-2c=a~7&K}z*Y5bCU(5UFqUT_uY?2J04wRh4 zvUlHe0TW=lb$d7U<7m@D7`b~^~Fi8H_71n z-pohD{_Yaf-$}mPop!mfhjm{4QS^>y^->3L5TJnDTkaV#eSsj~-+b@zKNy+E^Zu?# z=_VeeQvG&`B|s?jaw&uB1y>LJcMFbSkNrf))SS6CJ9_qw*Xv8Du)HS=#YVa%7rsg< zUb$M=CX&hH{$eR+&jgTm`s#PumhY3J9AM62W@4IU-r)=2`CB-zEP^bDPVpNA=CsSC zv>T{U#l?buNzY-3kC-=a-M^{sVggag8eNF}4r4Fj>Tch5*;fMAQKaf2>)i|!w%m=B z>qLB&U}3`0rx%&rJ7&>DXiBwcx9#rktqaO7u#(EFq-}M)iauIBag>fIR#kS#*I~Wi z&~-sJ`fPDA z(m{#EJ}BI%Ps-~XC$npy28_kAKDN}+Kq}4JxB9#WS%fR&7hi$U6}sg+L;uPHf_INUgKQ{;5F7X#UPe|MUlwJLjxNJuj>XqatsBAV8|O+t}cjF3!?Y5So4f85`*rh z;iDYaeM;^Op|(=2jnaSA7zdbd{n&mtK{Ihb(4TwQ`o;j8KhIw)CpMXN7J{GH&Wq0~Imc8>o?Czu!;>8hb@8Zy- zZ#&YH(;a7x*G$az&a?>r?eY{*QmXo9NqooYUuxv3Z%G`4iuP$T>&xglBWBgN zJf;~KA7r<^IFES>M#HqrO#gS|WA*Soe`eqHw?rulpWCE$gp<&Q(4flrp5nCwSOuG; zmKbT95JYV6E^M&$j=g~FP|7Lh-=Mdqf3li=QV`L$jJ0Od@j;5RsYn?)b$!O`SPB8R zj~hD-GPGeDg`13;3gbH0=5Zd26~4P>6j4%kEN(>jXOT zv%7ww^BZ2)FRhmFqs3|xxLGtdX0!TxAx{bgsKt4XFSZ!-eAkUEaOc zcv(cffn@*CHmTmOZrQv?_<d^mIT@DUA%P|w-X|ikAq|V1JGr(&ZIPwaI{1rjS`M*a%fBYHslIagE z-IUXple*!)NU4LCf<%9h+u?beZGc`{->L%=gni*)QZ~Hrw16Xlza8!*&w6jtZR3a-?3y_2kL_ntC2E>bIc<&YwI# zp0~V+TIc#KagI<%ZXcUH_j+w%4R9Q4y_$@fx?(>VAuEOcspy^g&eSj^7`x;(aQAJ! z@ndd{W@)d!PR~h>9 zVk7vG?F7X`rA7>C71Q$kt?Y#*{6QhhWQ|Ol*@6`s)EH3V-;nYx)A$c4k&?_l<9j|I z*BgWVqqc}bQhR@$%f3OC8TV<6Vb`p`w>x|!uNku5d8KS`9RZ2X{Gd?`>2fx5d#Yl_g(r!|KNHZ`$0E%%fQs( z0Q};rG?MTWI2y7GQ{jRt20A2HdOZj3_}oyaad~90)TWBnIN_^SyXy)r5>{)CS(q}d zv3$=|`<}F4fm08?H=>@&F4zUiP%?L)M`=ZGQ~BbLM;^?e+0`Rt0jwzNf!&IdvKYiOU3(0 z6<>}AIJez-c1|UrqS1dQcR7^@|~#mZrHYY1KZDP@9$}E zebz0d(qVSSK~CA;L;3_XXSgz7SC4{Xfc{Njt;hr7yR}hWA4`f1(?sU7yYxd@|p^5&kM?ZL#1hZ>V%XIF=-2v90anRF5^wax4>D zqCHqL?$mJ?bOufY-;bJmn|t*>5c5RSlAS zTYC<`SR_*e7Q3>J(bt-P!A&>w`f%aOH5xrOrOCUb^5ZNJ>AEc($|1HrF?sNhT4hdS zmUCCyaWVCfeFZj|q!nuy@VUTP2SbE0LPjtD-Rg8$k@na$xcEypuT9G*5vr!W$K{NK zpMvA$zld|tuLyP2nOlGGY%(W9_=t%{m2%o9romQjmEW#b_FzhnF@0-X!t{hnNX0B$62c`!i-e=_et^mw zgF)dhN^spqAHuAokM{J(xz8Wv6&TG!hx8u)(i>TJBYo#U?U|((5Y4TKGrigQhQEK4 zY=FXoo`Pe8+lBg|@7KwpBgi^%M=Jow3zUW*yeu20q9S<>V ze=O$dtn2b0CkTk9+l98<3^LKOG6i)eM*klGut870Z(?Q+B0B$J!-k{D3w7@%FMyib z&zya4Lo;0`|7?R8)uW7E+rRL`CN0Q9s0Bw*$v1PDy~FH>AO4rkHrX7{MZ?o>>EWln zz!#N=7xN?jgeShcNHvK-^sney0Y9TfMiwJ+7Tjl%-tF79!}qg>4J?2_Knh->xkl(mQGpAQCKe%G{?9p??@Zq?e z`JzplDRq7R*=J8Y{zSguQVMm?&n5o!R3zlbDM)z2FY#A!#??Fj|0wa>`e?KaNp2`} zu`Y>^Y~@)DrOgrVBI*@M_AHufJ^W&CDE{)xFSp)$>)dnieOFv@CGJJ>>)Z~CZvzb) zbOlQBHE+f5x7wPp56R%Ro z7(w5Dd*r_R9)PpPA%`BkYyX|~c2jftS!LB#Kps(n?|?iWbkHH!UNd<6?YH~=@B8N- z!Cza%qQ!%NFhNmlt?S?Db4iMlp@@?Pfr|K0P_xuhOCn>qfsc2rd1~_0QxS_N7THpM zH2gb^A9s~n&?-YT96`r-a<|!LYYZE_QI6Z9xUug+G~*nHCoLiFFNYpNrV^q%t^)QkpaHs$bD9+&d%7~GKFw3T;w6wZOc>NU{!%SL5}FS0qDHFW zPFqJw0-~tlD7wWwRijFkH6->DL9k?1Eb@eYVB2lC8FV?%19

8r0@aKVL89D3*>_*y6}Zl*-p%7Uh{cG;did(g$Nzj)@^u>%I+XZLQp`3C5*&C#I)?D&d+ ze55bofA#g(x7>0ou!%1l>#@3;$f{a-`f0EtnZU<=zHN}1frIb`GCZUWkC&rWop^?P z4QEKuKSVM^y*!9yt+m(0h3wQ*&scitWn`)64XjrGcJ{e=*s8paCW(NG{Nzg3qoDN7 zM8TuQ;vJs>1^)ko_-!Nuk}%m>ZZN5BoY~Mf4`it5#*)T}$-^c6YDuc(tGy!;Wqd4y zcJ03ldhhD1{&C@j7vV?H6d%7jfAmqu;ORTdFTecHHr|Nc>-c!4;#F5)apzsPmn|e}+#F6!_z(y8ixm zVjN|!KR=wsVeI7{79K9 zIQqWjVRM>UZjRSJ@gf0eOU zr~p(n^OOT(v4vYeg+}bwQhJIZ2h?!YO#Jp+1+*x=vy!X4>&1bmc0h(54=2ZuY2rL^ z7|sJvJ^eY)167;{?tkEc0}njthUrj`@PXE?+d?SbA*{xI zIu4Juf)aF~+;6{q@wM5KdKZBB)ku&5CH{6J~Q0FZ^ITgS6uSOj zeTAywzxwK{9d|tM7~usFezycP@bUk9?^PN-&p6{Wsgc1^EBNC_3tXSn@HzL~^B(`t z6H-Za-F4STjGTcBy9F2QI^>augw7=S^Azqmw1|vHbQn#Ze@V5SgC>d3I0U3~mQdGm zU=71THpgd(R*Wal9dhtNPdxGDs1HVAN#%}e)Kb%!F{9U6dp*W52Wf^AqN%dWF1s9g z)ZxwH6UeHPMrkhLttDmY9yk}DeA0=#?Y290x_@;< zO070vbdYF%K+8uFngFlh$qA-hV|*%zG&Q+pQ4vmSGx=A{2xo}al4@fGu9M1qS62yR z0nMF52`tv)dIdp|%4%hwefB@++_Tjv8uP6^{~$tRm7OBsJb<5L`u%RZ<2O2Qz2$a% z`*uyyiQ!Vyxn60B4+j7G^kpniJ7@3@>Rb zSq8A1ogOO$f80F7B@fU3c<`YI@z-&#PCa{e=d;j|@utdNd+%xAS7TTe-*P+X-~&%R z<Gu2l!e*pWeOBJ^ybTZt$~Od@Momb^bHY_$$uF{lTi*^z)x@D#;`w z)?_E0a>DQX{{deC#5Viv9V9c4lU${OGvuERIDm{(J1bb-qV8?B-tLY&@5B!<;2A6P z&)@Zh=bs1P6HYv?UAy-8-E)7Oqf?yl_Z%iQt105M=v&?XbutA+i3->d1n5VE&qbRI zA-0f{H(HuyEfdAvhOtkKdLhu6Ycu#~~!VCGqJN=qn&QV3@InY-$yoSr!115#bKr=CF6K7W55`Ra+5x9=8Q5k3^!p4&F zmzd0$iQ*tT2EYKhFn;iJcz87SUVH4rEEhJUMcXY=ybj=<02vOtLiGF)Q3C7Yo6UWc zvAH{c4Tq`g0$tBN@0`Jdue*HUAiRpj>KUG^_FDx%LAc&}>tczC2&}gGnpkQjCka*r zWuol}R$63@dS#Wm!$(S%m!L|k#5eG#aeng7((Y)vf8n2psI&H7>>;op^?<#~DC>Bg zjPc`ZGOIdUO9{NxB{r+q2S4l7^J!csgTMHHAO2dGv_@HYOTBg-(#a;0HbJ8zR+X?T zrV7}TzY`8QoM8rkoE7lxPQm6*tmz(m*zwLBMfik@jP(tbptOSG=9Q_$Deot z(D-l|e(sa!f%Z5L*rv5J&~nGR3fD)aAnt*$CA=oQb})Z<>d{9Z#h23jo{cn8Ja8fg zoUx}G097o5&OZCB!PgGPj{)L?B~L&7F&?6XTZ0>HxIP|Tokc^zg$&0I<`}JMOycE?7K~ay|Sdmt5kS!T%IikBu2UCIe*k3v^uonYniG;6Veg zz?WDbe*!BuK6L>ph1`6xl}jb{C{Kc5`6TSl~-PQ&%OS*)>>xkf9BT+3K) z=qgFEh~7PujsL}$U*KJ{58nS^mRV=PGd}Qm>nV$08cogd|MH73@Xp=)@4r9Gtg|W& zHZ{vto{5y2Tq^+*GbQuWO8%3b{~sUz=U;q*=Pl#2y{Xh`bCt+(0!v(Nd? zX>7@6bdM<;Y%}nZ(dxji>#u~zR zNt4kp3)_e8$fX<@k74 z6e}?N9z5O;#hVh|v39JBkN3gwvk-V@8}4OhYr%w?q+)(J0*YH*{LHHcNy2NiqR6#g z%Z~%UNgsL42G%sPM&V7L10NYkiFNtMpC2?^2ZxRTNdaz6=+ey= zWO6Hx`GHk3LI?3@NtIrto5o5P%Neji`Pc=0wy+vY5~9Gpt0D` z(P56Ot{iB^aB?#gjq8^uBg?X@8u{@|$ngh0e%febYDYZu{?=Wgz0DOg4>n#fDRqvz zcLTqXA0G?#kJCLrZQG?sZh}l)W1JXiha7@72E|-s@2Ge~V=9CXga*E+C!H!9`LW@I z!GS-dLo#CHM^|j(!SN#|tjxGL^NphGQ(6;}`Ay#VR7PHdL)nqlDo@t$cf&+XM1&fP zxw9%2CgcztzS0&?#^xp#Kxk!dZd_kHV~zaym?$29O!;YJjVa6l=(O+4+F~BOq`p>) z5YghCqWVy?2%W~1wT4kTsIMs_M6?ZjO=miZHS$v$JwDbZHGbN*ZHwF$)0c{&55e$c zEaRG?`g~6Z8>FdjI%LW~s}(F}2E-R;(uh{%N1V|*ZD78qB})ZL=9VedUrqFP9F@7B zjQmLOROJ7i@LS-ojn`A0$mRU#+Q?0sV*8*Fl!81t`H|FMXVpn_6i=$6UR-EUO7{$6#0myJ{@W$k-V$r7WFos=V8s~paQR;|Beq`9>I~ggS7eDF{{$Y-v@@G4x zv1nMd%?E{EmUP198R3+&a>3}I2XSLI(HW4`W@zB2^fmH>K_Md~d&#b|Z0e2A_HEmt z2ecDnbVkwcXT&7;DZpzaZh?4!`g0$V?gYEdOM z*`{vc&!Tekt|SYOg)zc45XHnlgQX`UIlu5N0d+R}G(SIBE?B*AG9EYxug3K&bx$Kd z7!*hXM~WO|tW3H5_?Q?5bWqgMV3RGwT_-+keB|(dcT$raSf7H@4e(*Pbc8J!5Km!Wu zuX1R@NraM%Mun0%K=Kejsc=ak`4mTy?eq3MMBy^Ji<)` zvx<)*gcD7&VbRvOzF2-eCpb2)zdGptr`8YIoi+@CbVk(45>rM;OEUXxm0YDUWHU~} zbcz)n5v%&%f84*Kas(5)9i( zXs)1KU+G#!ZbknV`DcWP6h(#A@gqvL*yPayh8)~{Kv`@cgrMzc?f4|1GI0t74!M+v zs6>S*YMl(!NN*V(GS?hdL(;xl;iF|e>k`yBe=>cZQB9SV8u^KV^`p#B8<{pbbK1$>0w+m#j$0VUy3Vxw9 zf1MIq;7rhRycYJ!W8OSCzNiczQIHIu7^ZhT4WAD9858AD+6T|jgZxzHuL~8c5Ou{? zCqGl1zg8CgTL<6!SC|#@WBps?9}U1zfrA%$tVMuQebmiQ!Fk4Gk)%u=kEMhk{OgQQ z*2_v{FO(IDd!TvEHbhZW9||HdHVex{$59B`7pziHqq@rUR8*-K4m2z22#p98qG;85 z6D`#kzP2^)26w2scW2^9LPHz-c-4| zfgj2Alr-`q<3rPtU1g?uemZuXvoNyLsEt00aV$1Dli@Va%aXE%pvA075baW+R)X0y zh$cojq3{O-{$>z-KT#?1#Mv87y>GeI_}93ZkDoHoQcH)lU96@^Xew!LziWO1A0+L} zWpoq%6ycxnYxvjVqwW^^SK3H=g2eHokl>$@4u=>projP!ex+qB4KfY`D)O&-t*hny zxK%O0ih?MmHdZ0^h~W6R7X&xmFucP7np`#qbIkZ_Wla_Qq&l=IBqR!6u$rR6fD3`1 z#zMT*)yX#S8~Kp|662*T%nS|( z)7rbhU#Qy7@QeJtCAlMHb;|lT<1emU51CV4G0p%0KmbWZK~$5JMJ5SXGFMn`;Glmx zHejW}Hx$)BmRIhe3i_#o?DJ5S=^m2!Lc>4tH-=Ihyz~!;EF#r_siAst&wO0#N43jd zE2~sGcj}a)96$4;Xfx5;liUlndUMrF8j*Qw@*4O^iT1DNhI{KA9vb;U5~g2%@YA#4eguRF_>aE;RgoG;6q$=N-9*qL_BMX#9#9IH`4hoOLk&?diKH@)qA@ZuR3Q`J zeds7fXd+RR4U9@B{ddho+_cyE1NVxudF&*^g3u02aZ+#;)|}#;08Q`32fo==}N6!@O@gz zHI?KfYD(fOX5h09p(lb@=bWYf0)My(C3TN|K_>;vk9f3#zq=q)T3mqM+T$|8Ot23!qO@w4%h@SEeWdd)w)1&BJ8MLK z70E}otbP&e#~ z^%Su9lrxX!NAaUtJVf`J-)GWDWjDeAyg~X@Z<@5d~$*q;847mc?nog%<4A zZ6PR>qlOYYhf{yqi#p{$vosfBE)D! zxg@fm%rrKcy(-l-@EiG&5uXMKS1{P7%lMgn_Su$LZ1Iec_KuH#9zo78YCH;8y@=6> zi>>j8%qxc2Ekga(4w+Vte|d9MJoWO1y+#QS?%<>vT%i~x1^|RitzFGvWns$VONF*m zeAke_%Q!l!dmxYERvJGFtK$c;OtHFU(4KS}&EF-|0(WX93daneHdX6lN>`qN zFF~{;90yqu(WrHJ8WaFZ6}UGQB#SC&L>;@_7r=^5t4rqKMe3`SB^F;yeh}UGPnYup zNg6pluzwS8%5E1iwKSJRZtzE{@~lYmB!7+kST0)14;F1YKO|cs#_N}qR!^!<@c(D; zIsmLFlJIJ1Kl z#Xf29XJgWYL;Dp5QVU6JLi-CZFC`~YiUJI$Dq?hYMb*vt90iv!P#z+pg041!QMb$Z zk_gVKM**;e_!ElqoX4VE8Ep>kp-gKR%10$!+k79i_?h9#cPA(yO1GNt+u) za{aVi00uW5e71t7OgR{CM9P`u`9JFfts^jkCjxYK@X0G_L?fk2QNyI17<^YxggAtq zYC8i)IC>cVE1|&{|+>n*_C1=*AVAc&pL72zMKMtQ55C{4%4!+_<1YQ0T zqB0^bT85-5ikFxws>ZON#`)Cvi&1#MmgJED>}|L)UcmmQ$TTHGixLz7K@_iXvy2gB zXoGL~YWebDFNL7|MTu#sH5_~tDf_r+<;1iYkW^Vw_>&E6{ZV+iDk5F|_NRDD!HAJ1 zO`zf%uhcMeW@t`dbIBntJ_8cGO+xbs`$%dMBLZ*>9s^OBiB*TF$Qd%$;o^&~RW4Vy z3>qf9j;^Oi!juL=Oj6Ecf^^oNjReSx zKRW2DZa76=FC^eUC_cmw?PKfA|5N=rH)F<|ZoKK-jOTLoG_}@LRj+2BE~v@3_fK_ znP>{k$R$D%LXBKP7=CplL{#K#JgfpW6UgFn67jR(4?+G`(kT4JR3K8hlL` zUV^~E234!FED>USB5T)~klv|@8S4PSgnsI&}e^BQ9WoQsVK@g1vp&d@$&0c!=%FvewL{)GBd zwaSe(YTjlN;vrbwd_~eol)`D`p~oT^U1jtIW5nu+q|*`_FHJDF6?&w?{3(zciu_Y> zgfcdZa68fg7ZMD_0_Mb8GC8rZ#EQcIU3_5zAf5b>u^HCG_cFIyW`9Ka@Qn|Nq{5%sQ8Y1Q51iyjfM9W;fJzi35oU{p;vwna z!zqCR%i;hak+Z8m&^G0(w8cJ*OVFGoJ2Z&#C5C6WQbeB_F=U)2$Fq5{Hza_mD;I0#>`C|cccL?bn7+*+l|jT%IBNR|}nFY#exNZNW> z7CwPsA55ds5*p%%_HnAre`@`qNt>z0PHi?}+V8Q1R&TkounBVV# zNi)O`?PKbnsY?F|_2-USwJPCt3=SftB_wW);6xD>mxnSP&}m@AXonc8`_3>)!-51$ zU57F|^yL_#)9?*QMSvS&q)1Wh;j6*t5F*0|i*d4oFOqO`q5_a!e1He=1)IqTBc#oV zDnSjUE9(+}VaTEqPiK{+NJv=z@Ng8%xcrGd1(Glw3_&wBwhz3dNU7mWkti2Qo0KR5 zF%-#q<|Hv1jzE?*BE*}@jQJx%@kLk4*8oruq9MdrRunzuBHT%W;Fv$xpS1Whn50Hd zCU27^rkoz1hzGnBNcJ&G!kI%5B$*c!2(TQJ5nU#x>H@$xbP`oK7>1H^9E2f<5U{!$ zOjkA|<4H7AWdXq#Sqn?ig3Asx!#nP%#X2T6G9Kr_g`+SEmW!O(qx@Y24_}jVV?+GV zK3swRv+K{vlP8HK+70!BXLTS$X^Hxx)$_07pFVy1r=Na0@4WLay67T9P9fQ=o_`fT zL53C5#RrW8KmBxmrt>bkSZO5CG(kRqcrlJf|NY~S2QIlJdxi`dNaU>f^SFhwO1%Vp z$*bqA@rlb{SibS*@h7ib{#yQAJc4F|f4 zBqDyj%CwJs7%Bw82oQj#sly(HsJ`PA5=L5?h}^${FRFs=oQbD!BR1Y)d0B@S=VQ&m z3`mmXU_|lIDu1@5HKW+YghNOSz!rhW5KCl#kADC^UHp*%rKwgWH>C;_&_Ak?N`f;Z ziL#1@y9f?{lCdHVzRkEv$qE^Vq({1PX!^GPc;Rpvf{v1dZzPQoNt)BtV7a>Z>?Q!e z2z*Wg9LGp!6{t`_VGb`PXXaqU%Q>OFJyI4mM)kz>s zLB449IQXcf2Yx(|-FDq^Fsc)b0F!gh;UD|^m1US*!o}{*VsivZ7 zf{z?Ia`50m{6b8oOqmi$I{2Qk(!>9^-+uf3$dSt~y)^MCmJ0rnqes(X#YCq}o(gbo zpoZGR57##%tj$R(_^H(&t7jcP02^u@zG(HN$3CiK5&aI-bTetQ;jV`3HUhpNpT{Do zL;Fkh%QY5BS-yPcjL#8!%Pluos#Gx;O`QN8dv@=c_{OAxn|AU1@jiH+pxaS6@{u)xv6}Gay4(Sk>MPfy*ZtyqmOAsO3I3j z8#gXqyyX1z&Z}6l;+0nxt5mrnb{F%r_I&a7S-N!Dtj}jrou)ktfNnZmZOs(u7K+Gc z$e8i@=b!U%BM}KlEq~(i$1b__5;w~2@(vvM>Gff+BbkN`9xlM!EZHJqgxSoHw4IE4 z?!rY1KltDSKJe5;Js}s#gYx1XSG;{FQUNw?-u&KsA1qnAOe+FMP}@U*{J~su@PI)c zb&w&&%3^17%V5t#sSJGts9-i>LU3?R0;ZhcBL#a#DXOd&t{hnI-^1tBBsnEw?Lz@J zDI3cUBq|4)B(;NJ*+wGd=~z&T(5mWXPlCh>itnh%w8Drhz6A#&rK_B*o(4#?6E6`~ zC*WXwgBXb7ln9?IfCwUCu0ND-)`AWnmWMhtK2iB<>9ZyYif|Ch_|wK`WecRp4xoo` z1Gz4X4VAx}md|aKe4*B(+4TxVtQd<_s&wtW_uO5iXb~W|#}7aJFnst(2`qIPFIcc)-G(a) zC0D6Z#n*KQl2ZrHURumB5t;i{%?Pe!XPz5+i3)V{E!Dj--AyYJIdtgI#~*)!dDW_~ za5Ee$cIA~Azp!Aj`pwmRxatx6V}3GY#!Rrn8TeT)%v`NHXjQ%Q&VSJ2V}Jf1e4y@< zrAwXm72CFLQ^rK(kw~C?O|mX$*PS3bQTZtOKNUZtmx^RUtRNFZzeQNm1W9&+@f3oWZLuXUi|I1!(hmLbadVN^>F9So3~HjUN_!&gGoP*zsHMnw}1cskt0S) zAiZA#n!%GYqjQN8#aWh`!}t65j~F>BXU?2v(x&)~GaAyzjvedLrIRV>xcYPa_^}Zq zMgiyEd+$*u#y&v6yczb_*&~$&(Sf0LXlv56v1;)(4xcCn4--U8`M)n-`KMMt-TH%D z{KgF%Tz1)IGiJ^_apDBy5Iutm*`or)!A4HRLDLk#0Ly3|e%%40q(1sw8+=8I;2qQ@r(z0iN z0{&Dr*tjIX_@qWQmunjKhk%>9^-59{X%0dnHkLo*QzXSuS~h^VAlR0v7ooxo#ZoLO z86^WifIU(T&Vs+{@Rjr#no!xvbeTE_5Pv-&;?++k#wL{9K!{kgI=NMe-M(OkL9jGT zPZq|K46-Vzs3Zlj+oD=PmepiE`$#aIF+Zqr+pTyjnkRQ|FO*%>b-y-v;)IDv2-MLp z`2_s^!}1j?8#ZWs`0!yQohj3~$B&=*3J1FG=`;HE?~4~E2*-clL7a&)<&6Hkcyx4q zdiNVOdbAYzg;_4#wtdI;Z9B${8QZ-16K&eI)`wC?g>z5%pG}|f%u~-Y4X6_Mn$@ep zzewT2ef#w;Q`Y%b-Orzl>!nXL!D0Nk3Eg}2l*(A5WC?#f@y0(47VX--_&beRrXj6g zw;mbGlQ)kySdayM_~_yWzVhmj!9!6g$S~0eIDhi-w2wdeWd8gG&pr1{KKvp@BKrud z9^HFU;?YQnk~Dl!Rq*5Q*s=4;Cz@~Eu+idw{q@(IzTPx$-1wF)TRi#XpF{ zj)4OPf|V(&XbfZVCm(%+|H>*aC8tNX?k{8N3Ez$#JDzyFIkLgYX>=m~8pqayg4i^U zzls@?+w#?LzW!DCJZV!3hA=Fo+>NnBz#(Y3J0awxQ1?%xS$)?xyHK>4FH_l4?Lw#? ze*Ep*ceHBJ8qYav-d?j+s}@Cy6#4zg?+X?z?B2a6rt>d%$=a)T58pFSQP)aHzSQ~8 zo;_#6_=$xIU4b^gc*zoJgocO9JsR1ueMid{tq%Y8+wC=LwroQ*j{I(DAQxFdqfd_n zkH;8`ko*TKcgIeh-+AkueEIWt?$WV%@oRGC$nnkYJzsqBMVHRqh728wJa+Ef5lR96 zqehMC*0nqG)UZ*5JMO4mu;Asm`Pj8{*OVz!-+TXqhaYP2>T3hA|b~^{Nu7;OEYh>yc(niWDh4Z{GYBE59OX zu?3yAeVf{BGC`9wL`oT=ijyFjfaYv)n=V8=jD`?aB^_~)Ivu1(DmI?eblMGx6F$kX zu3Si!6O-$|gbz#scJVooA}B%s!D4|x=0#%G0aws1_yD8`=1-1z{s^@)VRmKZu3S>o0pea%6RwPi|ls@H;h+A0-G4>Z+(x;r0gox3Z`6DE) z`s3#hB}v3ynVDx(@v00Nz*CV-AVhc|0wE0Kf~c;!x>1mYmzCr!@RTQqPhvM0EG4Ih zro(>GVPtH$bJI;XR;_ZA3i__-x+jjGctxQ?_?cjI-CmsJhHDoB;lmW6WsBB_e>;5p z?KNArZc((b8A0&80QX>7U%t3k@1DL9M6ig1`)5+X%{IF3x8HgPznFr1)N6`glOsnC zJjO%U{c@MCLxv9f{r4m2(v37Vl>!-iwxn(N`Hqx9er~U-&qxleNI=kBbP&W;YIg9cQAf}Da zlQy3ScQ7V7ZsCY^1&Dzf$y|LGjq`E}%YF9g^iCbS{P6wvH&wZ*L&ujIJlvRGdg2gi zKmNF};}DD4K%c(7FQzqQv8ein;c`D{8H{5W&P3Z9Nzl|9+=G*VS zYsN#Y8XxFE{s#^m=+&b)it~jRpa0^EFY&4oAWFh;v9M#tj@$d)KBCdTx2%WAlod2? zza)G1I&~kKJb4Pyxc+)Fj`GLd$(Yd~|7}xZQbbKakeGC$4dcnph>@?O)=H|$$w|q{ zjWcA(*r{Wuv17)yYT4qFOS8ND@p86%*B%gl?zyKQf8sIfXb3EZ`=0U@%EKU|M~}nP zyJ|OA14ChM`CEsj2b!qO=be}7pa1*^FzN7w#Lpp4C^bXPoy8YLswlDO%U!w^FHyWe ze*43nZv7!NPhV0X6#P*dxIJYi0&G$>9w8zsN`QSXez1H=fb{h& zuUocs*{ap6(eLcp{VjC|f~*%#mO`~JB}C~qBvmjn8a#l*O^5Vx?16$z0T9gaY$KME z6G<_M4TB*F6#uCp$K54K8fli5SR-RY z;_;owSp)?P;vo*BO@aJh6QFRCwf1L~e}g}jBZG2gC^h9mL~ziV*%_Zu;xm%<%8u%Mg4$l+ICgL_&^FPXdUj2SX^?9ds>VJ>18iVzt6;Vymnh>MXIuBPvZ2p@@j z^wGz|Ump&4?>@ciU_}Zu#nXX;mtTJ6RaZXt$m3tFTJ_-vAJwT>2Y`|bR8?Ztu?uEV z_`H|L^hTJRNi1=v!{ASt@W#4zYjftvIdtft+_`cK{uMYLxuU@3mp}gKd?YDCl|7W zaFet3!r@cr`a^+q82&y1(pL;~^<6a1BquP8CMT+&>irk-@%1S82MmMs0yz-ck_N|e zUt?1>srxPtBcq4;_>)hx`2PFvTeoff`tYGL9cJou5?F|eW6Rd9<0rfUFPZ_**x)pf z*Iie+apOj){Nu)s_d+AFxnIm3Fkm32M59NKwZagf!;g*TIs^%&e zId9#%6?b)@L^QIPj}Mq(wDNV8n>20=>O{kjKX>lD{{3Hh>+Q+R#Bw1>L_zqr8n?=f zjj0hqHgDNXH}TO3dKolAk|r?v!;I&yyYGZ!&z^7bP|$=r`jQcU z`J%t&8VzYV{QMDS@m0c|Oi-A>3J?r}&aqGLz9&!6=PY6$t4OlI*91A%!N;V=Q1o4t zwn@m(-=?pLq|M(4tjs-CahO^(SyS(Rt?(&8oS^kB&AVw4!aDK*wa z7*MQD;5C{OK`P9jB>ruDPR8KFjfCxgN{D=NMkLEhX_`QeqzDlsFAKpd!XhAU6GHgb z{%P|U7}8_=SS?D9>KU#?9gzqSCxtoqhL{IL(n88ak%#y*8oP1w@Hw3GCwi0+#Zy5; zMJjq+`7$=m$5@6HxD`r3JihQ}If5sAR)ve%dO(PzWJQS1=3qN;vKm4{qG#$GMIb;f zspC_Mg0C{39$cCQa?=f4Hf>&>l5+5ugJ@!CXq-pIGgrD`RwQD6I%YVi46+5zVy~qiL&Ye4ef7@-hJo@;fchtTEcg3PCXTvHIsrOJF znn&`%7N+>ZVAcLblp|REz^o7$u)lN@tY=uc_y{+l&=XCApuwyOA&rc~_aOdieB9P> zk4Kc`UVt1-m>n<-`8bwC{dwY`xRW1(+E-Fi!OmSeRjpD*dbV@UK>=nSrvI7{Z zc!?4fuB{LU9KrksE5JVgd^R4g=E;+X6QXr#V)%S{@rK)oc@T=5lDvB2wE?EYXaK-lz$)vRO2j>RKxp<(TV=k`*{SZx*{k9)G(wQi>; zb3uyH962s4UAoj)U#;4S=0uwk2`NhG#PO4`RMu=+bLYw>p)TRPdGn#nAcyDMZgQl_ zes*}}iAf_@j@}8`iB`hi&5}9*dnu zBAh%W>Bol;WD-IPGfIiEJpKWEf{aD5#%1Tuogi?_t+!yI!}63B^XARF;DXF=zBQ2` z^uUcT-g4rB{H9Ht@FCKb#fsf<X=Vop+|Rd+vGkLWY$e zKP6?w{r6%#i!NTez%}oN^&9Zo0bl=>D_1r?8N6g{()f|QdGpMj_rDYh@_@{s-@#%awsaMT%C?!-nt- z9yE~IQe?`q<*yAKgf0nBgM^9l@nPeY$Z*qjw=jLS89!k3VE;f}Hx^fwxaQi5>$bGn5k+2ZuT>M>MWBBG|I04TQKochv^GmZmR}=r6zgg4qebsHLRh@u@~dqRB}~Xm_>WBlH%!)n&tB6k( zNr%u}`=C*vt>M|;mtV}i|9-5Q=5qG&rwObK$MN_=gDD213pSM`yYBh6~KvAFoHwlw0eFhmVE+Fm{=; zrA*i9$4^R5BE47)%NPMD_~@J7eRs+aKm3685UKIUi_1QJ`lFq+d;Ymxw8WKIV8Wwh z3~6RYq(B4ZU8YQ_jM$8u4o-?r#6LMHiTTIA-bge|Y%Ef)T)C<5P5%D-AFEVxKMtVO zI(BN$I2MaC#-Neo$B$!v05>L-g3sY}DwuRR^83rdgPS*RzWVB`g#~GHeZa@0l!0i} zc{`Z^pVK8Y{FyG#N^wdY!zN*`#iv#X4-O7umpO5t8NpM-j-5KRf2jlB5tJ!Y1|PHn zN@Wc+m$QefU?fGk5NXvBbSrHjD3qOa^5aJ%>o;tC`|WqIUS!s+*-e`~O7XF1@#3^H zj}Au0s+1RAc60hlerIy0PA{K4eq3%Jv1S%? zGT=3Pq%qz;oPYj#MuqXQd&?uu9$mR|mEdpNwjCdu;hT@4uMb8%Y$zQAXTtD5c<9$b zuMOU_dv}XgEsOK(a$^cZSuG-0^>LOsTLdFUk+4+l!_gco&jeD(@7U3+q9Vm=1aSQL z396z|s-nt;B5{j_@N~h$cf>J*>Zrr5JpU}81s5AxOF#JtIu_!Hk)?gFM z8q|>c_DBDXhKv~-C5ppTQ+7MjmcPY^LlZVBvQAXGozkUCquXHtmEvnsQWB)mFL8U% z&6*V9HfqA52!nr&Ee3x+ZqyX(gYNQZp5-U6pCQNg1o*e$d0`EGw>*j9)6odvt!sSB(`Ajy9QlH5)HVR@; zk&7n7hK#S3fjs5Pmqmw(uA9E55-4LQ&x6%3ef#u>v?*~(7WcBoPzIkaj8C`yv1sYi zW%Q>_OoZSkU4c4@UJzZkV>Ifz%TDD%Fe{2-R`-(2ql^T}lg9Y&mM`fN z2{{G%Q@F&s_`bxvq*>ULW>6=L{C@zxowO+*7f=PK*;j5oN1;yD1H)?~+Yud+wQBxpNY-9C7#@OriMWS&~Znukqyzc^sSr0cAghf}^n=o~Yx=2R>QCI$1m? z&zw24%byfD{}hHwojsVFBVxFLuC;_35YE;#Lo< zD2^OCieei0%D~a1#^N#FGtWF_@iEWn+O^xtuT~W)QmEcTb<344n=N~GYz^@F=bu0O zOuOpUtAV#`cHuwo%Xyg9AqwkD`u6KXb~^j^#nOg=xp)N>XCIXSK3kjZXpCw45Ge%_ z6eOqpA{es=Ec!vQql&ut3l}Xy`R2(>gL*vw?3Y}EW`b|PckI|6iBuK%`1;S`hQG80 z^fPu%vC&feNpHM~7f;fVDGJQFGFh>-@kzr-cp7jmlx~OHd%S(n-mwD$7PccJ)nZiv zLG@ov$Us5+;~5(oHAISVqlQepeMm9Q`fpg}k(*4Dp5<>?p%>b|9lJA}4L&}HN43wA zCClCS+|9J@DacNIDXQScEdfRmyIk69xc4f(unMM#4CF-Q|=dPQX zNZ#W3Q^n!K+8;hF_R>-=ayIrSfLH{b)s)HaqDDET;PH3yAuLWGJAI071LaWu zpoe?rMhzR_3)3M(hIa1M(cKt<2aDlI18bvmyMsj}g7K6lH+XaU?Vb`Pt^q1Td-%Wp zim?f06J5OuTXh)w!;F>!1@f2R zYZ8sK$2nksPr|{smBH2@FGP^euKrkXVsO^@_Wsxu5~oORE=P7K9k-YAvWTK1kE1S5 zK2wYlbp*Jy37;ujDB$D91ux4Ho-3D~h4}EJ88YB$7S?Yb`t=}@OdFqBL1y!&O+CB! z%$;RZTus!jaS86u;I6?vxVw|!?hqu%z~HVSxC|OJNN|E{2oNN=ySog7pLyQ5&QCa1 z=i793&8{uoy?3v5-`A2cocr#|{@{QXIw-@T%7Wd+vL+SO_(Tyg<7F2|bX3=avKwh9A*)0&Y4fA=q2!%+ZfPk)Upb4DB2o+^vP0t9 zuRE933df0@RwC9<|W3~HG{7Ye+k@Q!hFpt$XsSUd9cev*ojXCm-kRqUY(o*=7F5l{PIYpZ`Cil!K zX=~H_Ax8YJ$-cqw$p|PAr#m}?5$k{TLECj~5EC@^t_!yifBRyk_3eHmSc*z4F})5( z?;ia5L%jV46Tn-;;Vy_*-?OKQ?P@+xNDOZLyLx1EJjr{T{mXX%oVG~b&DA}U5xv5H zS>#Hv*5s(FSw6^0IZE-V3!hf@c(Gw;1K3C*#0**S!eD&PR%ma(sW@RO_yb;(e4-yL z-Pzi@Zfuv1ep zy(gZV3MU#jqgl${AW&cGjbx?ANDU=EU)_1O?T5!SU6!Eh+RwZ2dns|B$Js*ZbqmWg zu*4Iid>qlx9~tqVRmT5L1MLaqO%^SamJKlj3tU@G`ZEU;SXKaTaXgSvVu+bA5c&nl zVvf5YeADZle>oBaDirjn)^z{+^0@xxt;>oN!J0wsDxQ$D!ym)w$5x`A$gCdbXY1u? z438Ez_7O>>;k@j4WFjBwZN8x?Kx|r4xVsl@M)m)$AZ4ey`VX;64rQ2&4ZF(Eo-&1r(;m?>(TJu3)%S7myENDIge7@ILPh@1d08w=56i7NB-2 z*C+@$o9n|JwBs{mFo#FQ)+yfQ{iTnjDvaOfMjs5o?fz8hlCK@lxX zN+Yemzpd0oeC+w@aP_r#D9&Qi4C$l%7yxWAS8YgA_jcJQc+oZ>(|~raH=GENt%K|- zMQA$2v1mYpA09|fX=NU)3F-yIiU57#5{^<;azYw}p#y#8Mkk31^?mN;TvS&-lsDF2 zYP%pNYEiiAt|&64E>9#S@(#jQcr`9vTODk>+qdbs_qeIQ^SC8P#z*&X7*)rYqc5$e zVHugVQsojaI(}=fA&op?fzP`Rm%U=xOA~TPDNGsDotMvEuyOEu+jx|fhfcGlSYlLN zuB?r6s$J#n*fyPRVWFg<@%4F=oo(}rf4dhf^or}8WQ3$z-w-`k9Esuiv95^v?Y*sv zX71}~vefh8nLIje3tO#V?k*vYVqfg^mxClKziOR|DWdUttF!?&lcx&F-lI)^@diI2 zV)b&0C?(AN&7;Y1C&D=or z%i@T5fs}8Dzt5&KoT9A4x`@1;vc({xA~`e|ww;ZFPq%LGYE<={eb=N_WZ}Ku8ID@H zQZz7JQGqlNop5{c_Gf!YHJ+IL*l7G;m})vl93smH-lIqhl;rek7Kk)=1a}^GUuPBL z6ftPE4SgW0TO+iI{N@wk=`~nDIaYe36kdS{f728y$P>fe)<^0 zH@t}&t#7IAvpy6(G)DbMJA=@xx#)xYa_v9y#GJ$Dq&Px;M&FPCZtMzw9gu#dVo`{G zdTjNYoR}?oi9fW1ku_vybhM?lHpor~kl~G^`Nby3b}@-h7H$S9hI^NPsg7up>UOqa z6DPe~aZ#|p{OVqH-Hl02XV>qzVlr8@cHG>Vk`AvQMm(%YiEenm$T8i>TFvsiw^DKd zyg{S=2FuOY{rK42hgy0V9Z%AOQb$rh14khYe7`+0Q#}G+3%dB{2Nzv5kC2 zd<)Xq41Wfu#=%KCQSv*Wl||cq7XGcmG5SsVlQgGgY>QbgLv-~8CZyF$r@Pb%{tXBW zkcbm?gE5MJjRWwMZ?kZ`t{yrq;$**36fV)-$wA34WCy#@oCH0f>OB|-FvoWpsrGFG zb2e^1{x&BgCEg<^b=09V(Sri0AJ4pl8XD*sb(}MN5zjG zlZ`ZZj4>453+rEZi=^4rys^MYpUu`yQu4D(GkK z7MNBwPR&(**Msk(@)?>O|1B78!FM{>wkzlx#r+#D#huA|XMH``)j4-}>P|KgI<0Yh z08^sn<$c0^7`R9ED?tV3RGGNOyqDaMJam(MazSA}qQk??pjK`xS2UTor{W+={BHy8 zXB@HsfE(GyujL{1A%<9rDy13oQXY|IY%9X<_}7Z!!wKGX>o+R1=kl2bw1N#SX?g4Q zf*sFi-nb9&LK@$^>44jPF9TV;JD1(0syk1&J1rIw5_0^zj^JP?^7jpwn;-hqN?5q< zN$ooPy*44J&S4R(hNm z<84PRD;1?ZaanXIM81?OQ06o7=#1yk;x|80{-n6$wt+hG^31V{IYs#HNu=^W#yzSwa4D$)(edv*aS#?{+8EZv=(p&TgC2{ z3qzHa{lYZ98u{EOgVsa2kSW5N9PeiLGD!yOu>9+%e~06&C-23A)pDZ@)p*{o*Aua% zyp@AN{ny*HvS#Klb57$yzkJSO$@lEb?6$6u=WQj2CAqrMqnBn}L8F~a3?I=nP$qY!_v5SOtH_-6Pyr7DpY)uH~w=?EY=M5rjp z_u~5(c>a$%uENmEOJo6RfK~5^TlCs5NCc#QA^IDaZX9AbWTa#y)9e(s?Q2xYU|BEH zMHScV;Ne>XQ$5}-5RDo7o-S6pZ@~M>&vhvpn(RBy&=Zeu*kRy(Rd!O%(uUpbc$*a7 z(Q;BMAsZ3yv{etDm1qS%3Ci;69nzng{82&%s+nc5ZH3)sVG(yTNZK7y4gXzeb)gnc zaj4*dl>%mhMmEt2YV$PAilC71(c=33`hct5rm(hL6^ET~!U6zu%FN zE{#((k_xVjUkR~rRK@2Yj?Xp3!Abk+hA4W~X8PfHu@2Yy@L*}=`25%vk}?)=`c$0t zC%82_y~}nKYAhA6&+>NwqISRw2DYEKKy>Kv^QGNJIFs9pNl65{# z-Dn{zQ)w`h+lW>#fOcOVs*?P3smWNEQigDY?OL`#QIJzq7N_2UO6^4f<7~)rx~Z?yms+YoSaP1g=ZOg zV40w(zQZ1H`V#d<7pl{1O1Z8pPlaFvS7{A{%+~^NVC}=Ma%!@ zV2G2hkk5Af_D}CCNudWlZ_VGPdz{$QaB*R^rPz_rGe14fr%NcPo8LJ$;C$~~Y_~pJ z_Aw%dE|r5bI8Ti65sbMyD(vgd{WuW3icVx@d%JJ_dNBWOQhznN3P~E`%peMR%*z(bnROtBp0jwmJaJ+~c=AfSPiMCAd<}`J2OBi%?U2_R7803m zQ>I^T564juc*d#^=YEz(6w-tqlO|gdY?p9_ppgFgo0w6lte;>ZyK_k!wE^e40&z4t zN)JVJ>$)S}Qc$>A0SI|HM9@fi|EBTZHzC2=;ck&TYp_&zaK6YFJ zWT24n6PYnuJUD9eqW1~yjnQHUl>_nq=qVR46vHrUjt76wPUb3c{t~g92A=#7!T=0k zYJ_RNYl#&@&+~b)bg2cvF`&HL-T@?TnquC0q#A+Eel7yS_;F`gxR@Po#75o`)dxj2 zNJ$m|q=Nfn78K9lUIUA{S_e+Im;Z2SpeJ|38C7`Dk_qoTSiiSl2^(S#8aYlFv}Br{ z)l6fZ$Z<#?(yn!Baali=K22Wa+tGcXZ`QjqeO)9ja?LG=6Vs}8fZK5W5!D5jnySc_ z<5}2JrWpD>Ba_~UD%fZ@;k1I{N*i{^*}_T6Fv=&9My-g|-oS4o1O_-_Gam$Z2K(X|3Aj7;8NgcD z3L+a#3wh3d)HEsR-r4qePfIAw_|5`YKT#lXGKmW6;}-MEifw@w{wiQY48m46!LE{@ z(fTRX;@f}i@4a@YW@P5w<`BVG?tF#knmA04*7|Awb}JVT$xBi9+q`7TUYM4yha4PW zSSET^VR?uhvECln*`GAep#GHyLlhoRrqy~L&Jt-iK|S!f>!h|PDYMO?_!B9|MFZrM zi-3sdxv`dMi9*6Km!47Kdv6vLj0*@wxZYfq{zjHuIC6_Et1Aiy4iOijio3WqyE%5x zeB7Dp)Q`PCsRUo5vTm*0``fMvQqUw1CBuU%G#0}zxqs(nhow{+o&Kqg>r*b$cnfz5 z|ALp*#A#HYV%-ch#;vK>A|2CM&$`|JdnVTX?mksK!Wif5_$HkdKr4>&ksGrvD72gB-+m|r43U#+wTdeDb)cXdrp zsQocA5912Yiuo=ZgRaFQ*$UjgBCZ&b2)u7QDENho-)mpSVpqXuH;(is=Cm-wNFMfQ zY8p-FVT7vrN|ipIm@7m1<1!?g9AC!@-MJYDZ0pL3$7&5|B3ew1CLJxi?18a~mc{2D zVN9WuIIwcz9Rb9X;^+_UY<8@WoMUO9RQw|%)&LleilLABgRgD(CQwe6FfbrL9LxP- zb9M+_e>F>SVju6*n`WNyQc;lNX-Wd;s!6L`?9-SkS3CbrB$Nw+ptK&~tX?S;ySF zXsUz}CjK`R=1m&y-!)5q*W@4?COa1Cv=!_Is~dd6mxq)T&rWW|ECKFHy!tP6V6Twd ziPlx%oxb6AtHh=AUx(7LEL<>xvEko$vXU?Vcp@sW?u*}lAfT&Z>Od>}b9vV4vCA81 zlykjTuyWD?+o1xdaA^uphFiS8ChW!5gl1u*y6>3&`?B7Vkm?2G#wd77_{w7 zE_0^MQx>=r`^x|b%;B|GP_`O@P;G{9T>O0AIotVaDYRuj7Qoxh(qHX=%MeEF4tNyC z4CHZzlCzW5i-&j@RYFGASTo=(-IeP5`>BEC4#t)zD1<`YoIaeKP+{u?EAr2F<;Xsl z@+9ys*Z_Rwp9S3CWQ2RM1TIw`HHU@DwuuUvG-r8;A3M;Qx&Bs)>^gr6-oD(6M6u=a z&|@*Dej)VzkUl*-{7y0eiBL+x63FRN(&D}n{Pu$L8biVYi)7Vp6wzc9q&3`@Bui@S z%jG;KA3P$(GTK6Mws@@-*FJTLE|64Z6V-A?E9aKsZT7(QY7v_NvtVO#kIknX)bqNV zolpRx8ZP6r=a8Z(%&j2mdF=-)aavFNqXPAk(c`T# z2%v)qcR9N;_QW~7!h_sSyQTHvei`qN4t)eUib}H9`Qdij-q^V$VB@!0c2W2E>`)%g zm!T|Wb8t4<13N`H6DFAkHL%|%a$9iy|2Bln{cUXM(T7I?tq@fkwQqNQkqV)(Iz)#OUD%#aqjh@mTpn!d+!}TlKNG)aXi}5NWj*xHl za3?A@Imaxafx@MusXK$H^`jaYhs)DXD-R158vw47@V*YaLCxTlaR=f2rH3T`Ha&K# z#xe|y&ug8|CS*BB&a~miR!ebmsa0U~I@V=u1$0pdhs<3QRlJp{WOz>x{*be97)bZT z%O;h|ha_uidA!j9gC*jcfI}aQztc?c1afj-iP(dwIB=tNZfspB)B+;79fes?dTdzP z!u@adOAz-aOoDu2Y~=P7*+xwb6*|-5kz^UGVU&$${~P}qrbWM-{G(;(u{6>>XAGM7**C2}@nE ziSKvlvESMq(V5xRMA5G-1*@j!VQK9A7NmzOybQ*%$TL_xyn0^hyGD@v{OM9ZI3gS> z?rcx0Y*cxuFSBz=gl_l)Tq+Ghe;{GiAsu_~u@jT&Ebb`A_sX`ORH3sM2X%@~<73_| zdG8RTHS%}A{cGCSFXxNxK4ZiMO%In>oGU+VS;fPaJS^iHufO1$(qajc{bQ+#VM~(; zG{77;n*Q`tE_Qa=5CN!1h%@Wiu*J{TVLO&#!1=L6dP|I3Pup5Q(N17g>?+glz59CD zM6Mu7*Uv0XHhgJ5>Ak+gth{ff+5w4!6`V~@iSQKY0-KuU>1om2w5uuXSqK?QL_
EWiiOAOjOSbMUWNFiU|6$o9_DblYNY|}r9 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%0DF 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

B-U0T_o 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

tpFQm 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ⅅp?6Mg+xLrIvrfwF#yF3pX9l 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 psjpT#K?LUG_-6i}h&>A!Y Void +typealias StorageError = (String, String?, Any?) -> Any + +struct StorageMethodCall { + let method: String + let arguments: Any? +} + +class InitOptions { + init(params: [String: Any]) { + darwinTouchIDAuthenticationAllowableReuseDuration = params["drawinTouchIDAuthenticationAllowableReuseDurationSeconds"] as? Int + darwinTouchIDAuthenticationForceReuseContextDuration = params["darwinTouchIDAuthenticationForceReuseContextDurationSeconds"] as? Int + authenticationRequired = params["authenticationRequired"] as? Bool + darwinBiometricOnly = params["darwinBiometricOnly"] as? Bool + } + let darwinTouchIDAuthenticationAllowableReuseDuration: Int? + let darwinTouchIDAuthenticationForceReuseContextDuration: Int? + let authenticationRequired: Bool! + let darwinBiometricOnly: Bool! +} + +class IOSPromptInfo { + init(params: [String: Any]) { + saveTitle = params["saveTitle"] as? String + accessTitle = params["accessTitle"] as? String + } + let saveTitle: String! + let accessTitle: String! +} + +private func hpdebug(_ message: String) { + print(message); +} + +class BiometricStorageImpl { + + init(storageError: @escaping StorageError, storageMethodNotImplemented: Any) { + self.storageError = storageError + self.storageMethodNotImplemented = storageMethodNotImplemented + } + + private var stores: [String: BiometricStorageFile] = [:] + private let storageError: StorageError + private let storageMethodNotImplemented: Any + + private func storageError(code: String, message: String?, details: Any?) -> Any { + return storageError(code, message, details) + } + + public func handle(_ call: StorageMethodCall, result: @escaping StorageCallback) { + + func requiredArg(_ name: String, _ cb: (T) -> Void) { + guard let args = call.arguments as? Dictionary else { + result(storageError(code: "InvalidArguments", message: "Invalid arguments \(String(describing: call.arguments))", details: nil)) + return + } + guard let value = args[name] else { + result(storageError(code: "InvalidArguments", message: "Missing argument \(name)", details: nil)) + return + } + guard let valueTyped = value as? T else { + result(storageError(code: "InvalidArguments", message: "Invalid argument for \(name): expected \(T.self) got \(value)", details: nil)) + return + } + cb(valueTyped) + return + } + func requireStorage(_ name: String, _ cb: (BiometricStorageFile) -> Void) { + guard let file = stores[name] else { + result(storageError(code: "InvalidArguments", message: "Storage was not initialized \(name)", details: nil)) + return + } + cb(file) + } + + if ("canAuthenticate" == call.method) { + canAuthenticate(result: result) + } else if ("init" == call.method) { + requiredArg("name") { name in + requiredArg("options") { options in + stores[name] = BiometricStorageFile(name: name, initOptions: InitOptions(params: options), storageError: storageError) + } + } + result(true) + } else if ("dispose" == call.method) { + // nothing to dispose + result(true) + } else if ("read" == call.method) { + requiredArg("name") { name in + requiredArg("iosPromptInfo") { promptInfo in + requireStorage(name) { file in + file.read(result, IOSPromptInfo(params: promptInfo)) + } + } + } + } else if ("write" == call.method) { + requiredArg("name") { name in + requiredArg("content") { content in + requiredArg("iosPromptInfo") { promptInfo in + requireStorage(name) { file in + file.write(content, result, IOSPromptInfo(params: promptInfo)) + } + } + } + } + } else if ("delete" == call.method) { + requiredArg("name") { name in + requiredArg("iosPromptInfo") { promptInfo in + requireStorage(name) { file in + file.delete(result, IOSPromptInfo(params: promptInfo)) + } + } + } + } else { + result(storageMethodNotImplemented) + } + } + + + private func canAuthenticate(result: @escaping StorageCallback) { + var error: NSError? + let context = LAContext() + if context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error) { + result("Success") + return + } + guard let err = error else { + result("ErrorUnknown") + return + } + let laError = LAError(_nsError: err) + NSLog("LAError: \(laError)"); + switch laError.code { + case .touchIDNotAvailable: + result("ErrorHwUnavailable") + break; + case .passcodeNotSet: + result("ErrorPasscodeNotSet") + break; + case .touchIDNotEnrolled: + result("ErrorNoBiometricEnrolled") + break; + case .invalidContext: fallthrough + default: + result("ErrorUnknown") + break; + } + } +} + +typealias StoredContext = (context: LAContext, expireAt: Date) + +class BiometricStorageFile { + private let name: String + private let initOptions: InitOptions + private var _context: StoredContext? + private var context: LAContext { + get { + if let context = _context { + if context.expireAt.timeIntervalSinceNow < 0 { + // already expired. + _context = nil + } else { + return context.context + } + } + + let context = LAContext() + if (initOptions.authenticationRequired) { + if let duration = initOptions.darwinTouchIDAuthenticationAllowableReuseDuration { + if #available(OSX 10.12, *) { + context.touchIDAuthenticationAllowableReuseDuration = Double(duration) + } else { + // Fallback on earlier versions + hpdebug("Pre OSX 10.12 no touchIDAuthenticationAllowableReuseDuration available. ignoring.") + } + } + + if let duration = initOptions.darwinTouchIDAuthenticationForceReuseContextDuration { + _context = (context: context, expireAt: Date(timeIntervalSinceNow: Double(duration))) + } + } + return context + } + } + private let storageError: StorageError + + init(name: String, initOptions: InitOptions, storageError: @escaping StorageError) { + self.name = name + self.initOptions = initOptions + self.storageError = storageError + } + + private func baseQuery(_ result: @escaping StorageCallback) -> [String: Any]? { + var query = [ + kSecClass as String: kSecClassGenericPassword, + kSecAttrService as String: "flutter_biometric_storage", + kSecAttrAccount as String: name, + ] as [String : Any] + if initOptions.authenticationRequired { + guard let access = accessControl(result) else { + return nil + } + if #available(iOS 13.0, macOS 10.15, *) { + query[kSecUseDataProtectionKeychain as String] = true + } + query[kSecAttrAccessControl as String] = access + } + return query + } + + private func accessControl(_ result: @escaping StorageCallback) -> SecAccessControl? { + let accessControlFlags: SecAccessControlCreateFlags + + if initOptions.darwinBiometricOnly { + if #available(iOS 11.3, *) { + accessControlFlags = .biometryCurrentSet + } else { + accessControlFlags = .touchIDCurrentSet + } + } else { + accessControlFlags = .userPresence + } + +// access = SecAccessControlCreateWithFlags(nil, +// kSecAttrAccessibleWhenUnlockedThisDeviceOnly, +// accessControlFlags, +// &error) + var error: Unmanaged? + guard let access = SecAccessControlCreateWithFlags( + nil, // Use the default allocator. + kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, + accessControlFlags, + &error) else { + hpdebug("Error while creating access control flags. \(String(describing: error))") + result(storageError("writing data", "error writing data", "\(String(describing: error))")); + return nil + } + + return access + } + + func read(_ result: @escaping StorageCallback, _ promptInfo: IOSPromptInfo) { + + guard var query = baseQuery(result) else { + return; + } + query[kSecMatchLimit as String] = kSecMatchLimitOne + query[kSecUseOperationPrompt as String] = promptInfo.accessTitle + query[kSecReturnAttributes as String] = true + query[kSecReturnData as String] = true + query[kSecUseAuthenticationContext as String] = context + + var item: CFTypeRef? + + let status = SecItemCopyMatching(query as CFDictionary, &item) + guard status != errSecItemNotFound else { + result(nil) + return + } + guard status == errSecSuccess else { + handleOSStatusError(status, result, "Error retrieving item. \(status)") + return + } + guard let existingItem = item as? [String : Any], + let data = existingItem[kSecValueData as String] as? Data, + let dataString = String(data: data, encoding: String.Encoding.utf8) + else { + result(storageError("RetrieveError", "Unexpected data.", nil)) + return + } + result(dataString) + } + + func delete(_ result: @escaping StorageCallback, _ promptInfo: IOSPromptInfo) { + guard let query = baseQuery(result) else { + return; + } + // query[kSecMatchLimit as String] = kSecMatchLimitOne + // query[kSecReturnData as String] = true + let status = SecItemDelete(query as CFDictionary) + if status == errSecSuccess { + result(true) + return + } + if status == errSecItemNotFound { + hpdebug("Item not in keychain. Nothing to delete.") + result(true) + return + } + handleOSStatusError(status, result, "writing data") + } + + func write(_ content: String, _ result: @escaping StorageCallback, _ promptInfo: IOSPromptInfo) { + guard var query = baseQuery(result) else { + return; + } + + if (initOptions.authenticationRequired) { + query.merge([ + kSecUseAuthenticationContext as String: context, + ]) { (_, new) in new } + if let operationPrompt = promptInfo.saveTitle { + query[kSecUseOperationPrompt as String] = operationPrompt + } + } else { + hpdebug("No authentication required for \(name)") + } + query.merge([ + // kSecMatchLimit as String: kSecMatchLimitOne, + kSecValueData as String: content.data(using: String.Encoding.utf8) as Any, + ]) { (_, new) in new } + var status = SecItemAdd(query as CFDictionary, nil) + if (status == errSecDuplicateItem) { + hpdebug("Value already exists. updating.") + let update = [kSecValueData as String: query[kSecValueData as String]] + query.removeValue(forKey: kSecValueData as String) + status = SecItemUpdate(query as CFDictionary, update as CFDictionary) + } + guard status == errSecSuccess else { + handleOSStatusError(status, result, "writing data") + return + } + result(nil) + } + + private func handleOSStatusError(_ status: OSStatus, _ result: @escaping StorageCallback, _ message: String) { + var errorMessage: String? = nil + if #available(iOS 11.3, OSX 10.12, *) { + errorMessage = SecCopyErrorMessageString(status, nil) as String? + } + let code: String + switch status { + case errSecUserCanceled: + code = "AuthError:UserCanceled" + default: + code = "SecurityError" + } + + result(storageError(code, "Error while \(message): \(status): \(errorMessage ?? "Unknown")", nil)) + } + +} diff --git a/third-party/biometric_storage/ios/Classes/BiometricStoragePlugin.h b/third-party/biometric_storage/ios/Classes/BiometricStoragePlugin.h new file mode 100644 index 00000000..a23a5ef4 --- /dev/null +++ b/third-party/biometric_storage/ios/Classes/BiometricStoragePlugin.h @@ -0,0 +1,4 @@ +#import + +@interface BiometricStoragePlugin : NSObject +@end diff --git a/third-party/biometric_storage/ios/Classes/BiometricStoragePlugin.m b/third-party/biometric_storage/ios/Classes/BiometricStoragePlugin.m new file mode 100644 index 00000000..21c1bc31 --- /dev/null +++ b/third-party/biometric_storage/ios/Classes/BiometricStoragePlugin.m @@ -0,0 +1,8 @@ +#import "BiometricStoragePlugin.h" +#import + +@implementation BiometricStoragePlugin ++ (void)registerWithRegistrar:(NSObject*)registrar { + [SwiftBiometricStoragePlugin registerWithRegistrar:registrar]; +} +@end diff --git a/third-party/biometric_storage/ios/Classes/SwiftBiometricStoragePlugin.swift b/third-party/biometric_storage/ios/Classes/SwiftBiometricStoragePlugin.swift new file mode 100644 index 00000000..0d6be911 --- /dev/null +++ b/third-party/biometric_storage/ios/Classes/SwiftBiometricStoragePlugin.swift @@ -0,0 +1,18 @@ +import Flutter +//import UIKit + +public class SwiftBiometricStoragePlugin: NSObject, FlutterPlugin { + private let impl = BiometricStorageImpl(storageError: { (code, message, details) -> Any in + FlutterError(code: code, message: message, details: details) + }, storageMethodNotImplemented: FlutterMethodNotImplemented) + + public static func register(with registrar: FlutterPluginRegistrar) { + let channel = FlutterMethodChannel(name: "biometric_storage", binaryMessenger: registrar.messenger()) + let instance = SwiftBiometricStoragePlugin() + registrar.addMethodCallDelegate(instance, channel: channel) + } + + public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { + impl.handle(StorageMethodCall(method: call.method, arguments: call.arguments), result: result) + } +} diff --git a/third-party/biometric_storage/ios/biometric_storage.podspec b/third-party/biometric_storage/ios/biometric_storage.podspec new file mode 100644 index 00000000..00167be6 --- /dev/null +++ b/third-party/biometric_storage/ios/biometric_storage.podspec @@ -0,0 +1,25 @@ +# +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. +# Run `pod lib lint biometric_storage.podspec' to validate before publishing. +# +Pod::Spec.new do |s| + s.name = 'biometric_storage' + s.version = '0.0.1' + s.summary = 'A new flutter plugin project.' + s.description = <<-DESC +A new flutter plugin project. + DESC + s.homepage = 'http://example.com' + s.license = { :file => '../LICENSE' } + s.author = { 'Your Company' => 'email@example.com' } + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' #, '../macos/Classes/BiometricStorageImpl.swift' + s.public_header_files = 'Classes/**/*.h' + s.dependency 'Flutter' + s.platform = :ios, '9.0' + + # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported. + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' } + s.swift_version = '5.0' +end + diff --git a/third-party/biometric_storage/lib/biometric_storage.dart b/third-party/biometric_storage/lib/biometric_storage.dart new file mode 100644 index 00000000..d57d0b7a --- /dev/null +++ b/third-party/biometric_storage/lib/biometric_storage.dart @@ -0,0 +1,3 @@ +export 'src/biometric_storage.dart'; +export 'src/biometric_storage_win32_fake.dart' + if (dart.library.io) 'src/biometric_storage_win32.dart'; diff --git a/third-party/biometric_storage/lib/src/biometric_storage.dart b/third-party/biometric_storage/lib/src/biometric_storage.dart new file mode 100644 index 00000000..f07bf0c3 --- /dev/null +++ b/third-party/biometric_storage/lib/src/biometric_storage.dart @@ -0,0 +1,499 @@ +import 'dart:async'; +import 'dart:io'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/services.dart'; +import 'package:logging/logging.dart'; +import 'package:plugin_platform_interface/plugin_platform_interface.dart'; + +final _logger = Logger('biometric_storage'); + +/// Reason for not supporting authentication. +/// **As long as this is NOT [unsupported] you can still use the secure +/// storage without biometric storage** (By setting +/// [StorageFileInitOptions.authenticationRequired] to `false`). +enum CanAuthenticateResponse { + success, + errorHwUnavailable, + errorNoBiometricEnrolled, + errorNoHardware, + + /// Passcode is not set (iOS/MacOS) or no user credentials (on macos). + errorPasscodeNotSet, + + /// Used on android if the status is unknown. + /// https://developer.android.com/reference/androidx/biometric/BiometricManager#BIOMETRIC_STATUS_UNKNOWN + statusUnknown, + + /// Plugin does not support platform. This should no longer be the case. + unsupported, +} + +const _canAuthenticateMapping = { + 'Success': CanAuthenticateResponse.success, + 'ErrorHwUnavailable': CanAuthenticateResponse.errorHwUnavailable, + 'ErrorNoBiometricEnrolled': CanAuthenticateResponse.errorNoBiometricEnrolled, + 'ErrorNoHardware': CanAuthenticateResponse.errorNoHardware, + 'ErrorPasscodeNotSet': CanAuthenticateResponse.errorPasscodeNotSet, + 'ErrorUnknown': CanAuthenticateResponse.unsupported, + 'ErrorStatusUnknown': CanAuthenticateResponse.statusUnknown, +}; + +enum AuthExceptionCode { + /// User taps the cancel/negative button or presses `back`. + userCanceled, + + /// Authentication prompt is canceled due to another reason + /// (like when biometric sensor becamse unavailable like when + /// user switches between apps, logsout, etc). + canceled, + unknown, + timeout, + linuxAppArmorDenied, +} + +const _authErrorCodeMapping = { + 'AuthError:UserCanceled': AuthExceptionCode.userCanceled, + 'AuthError:Canceled': AuthExceptionCode.canceled, + 'AuthError:Timeout': AuthExceptionCode.timeout, +}; + +class BiometricStorageException implements Exception { + BiometricStorageException(this.message); + final String message; + + @override + String toString() { + return 'BiometricStorageException{message: $message}'; + } +} + +/// Exceptions during authentication operations. +/// See [AuthExceptionCode] for details. +class AuthException implements Exception { + AuthException(this.code, this.message); + + final AuthExceptionCode code; + final String message; + + @override + String toString() { + return 'AuthException{code: $code, message: $message}'; + } +} + +class StorageFileInitOptions { + StorageFileInitOptions({ + Duration? androidAuthenticationValidityDuration, + Duration? darwinTouchIDAuthenticationAllowableReuseDuration, + this.darwinTouchIDAuthenticationForceReuseContextDuration, + @Deprecated( + 'use use androidAuthenticationValidityDuration, iosTouchIDAuthenticationAllowableReuseDuration or iosTouchIDAuthenticationForceReuseContextDuration instead') + this.authenticationValidityDurationSeconds = -1, + this.authenticationRequired = true, + this.androidBiometricOnly = true, + this.darwinBiometricOnly = true, + }) : androidAuthenticationValidityDuration = + androidAuthenticationValidityDuration ?? + (authenticationValidityDurationSeconds <= 0 + ? null + : Duration(seconds: authenticationValidityDurationSeconds)), + darwinTouchIDAuthenticationAllowableReuseDuration = + darwinTouchIDAuthenticationAllowableReuseDuration ?? + (authenticationValidityDurationSeconds <= 0 + ? null + : Duration(seconds: authenticationValidityDurationSeconds)); + + @Deprecated( + 'use use androidAuthenticationValidityDuration, iosTouchIDAuthenticationAllowableReuseDuration or iosTouchIDAuthenticationForceReuseContextDuration instead') + final int authenticationValidityDurationSeconds; + + /// see https://developer.android.com/reference/android/security/keystore/KeyGenParameterSpec.Builder#setUserAuthenticationParameters(int,%20int) + final Duration? androidAuthenticationValidityDuration; + + /// see https://developer.apple.com/documentation/localauthentication/lacontext/1622329-touchidauthenticationallowablere + /// > If the user unlocks the device using Touch ID within the specified time interval, then authentication for the receiver succeeds automatically, without prompting the user for Touch ID. This bypasses a scenario where the user unlocks the device and then is almost immediately prompted for another fingerprint. + /// and https://developer.apple.com/documentation/localauthentication/accessing_keychain_items_with_face_id_or_touch_id + /// > Note that this grace period applies specifically to device unlock with Touch ID, not keychain retrieval authentications + /// + /// If you want to avoid requiring authentication after a successful + /// keychain retrieval see [darwinTouchIDAuthenticationForceReuseContextDuration] + final Duration? darwinTouchIDAuthenticationAllowableReuseDuration; + + /// To prevent forcing the user to authenticate again after unlocking once + /// we can reuse the `LAContext` object for the given amount of time. + /// see https://github.com/authpass/biometric_storage/pull/73 + /// This is pretty much undocumented behavior, but works similar to + /// `androidAuthenticationValidityDuration`. + /// + /// See also [darwinTouchIDAuthenticationAllowableReuseDuration] + final Duration? darwinTouchIDAuthenticationForceReuseContextDuration; + + /// Whether an authentication is required. if this is + /// false NO BIOMETRIC CHECK WILL BE PERFORMED! and the value + /// will simply be save encrypted. (default: true) + final bool authenticationRequired; + + /// Only makes difference on Android, where if set true, you can't use + /// PIN/pattern/password to get the file. + /// On Android < 30 this will always be ignored. (always `true`) + /// https://github.com/authpass/biometric_storage/issues/12#issuecomment-900358154 + /// + /// Also: this **must** be `true` if [androidAuthenticationValidityDuration] + /// is null. + /// https://github.com/authpass/biometric_storage/issues/12#issuecomment-902508609 + final bool androidBiometricOnly; + + /// Only for iOS and macOS: + /// Uses `.biometryCurrentSet` if true, `.userPresence` otherwise. + /// https://developer.apple.com/documentation/security/secaccesscontrolcreateflags/1392879-userpresence + final bool darwinBiometricOnly; + + Map toJson() => { + 'androidAuthenticationValidityDurationSeconds': + androidAuthenticationValidityDuration?.inSeconds, + 'darwinTouchIDAuthenticationAllowableReuseDurationSeconds': + darwinTouchIDAuthenticationAllowableReuseDuration?.inSeconds, + 'darwinTouchIDAuthenticationForceReuseContextDurationSeconds': + darwinTouchIDAuthenticationForceReuseContextDuration?.inSeconds, + 'authenticationRequired': authenticationRequired, + 'androidBiometricOnly': androidBiometricOnly, + 'darwinBiometricOnly': darwinBiometricOnly, + }; +} + +/// Android specific configuration of the prompt displayed for biometry. +class AndroidPromptInfo { + const AndroidPromptInfo({ + this.title = 'Authenticate to unlock data', + this.subtitle, + this.description, + this.negativeButton = 'Cancel', + this.confirmationRequired = true, + }); + + final String title; + final String? subtitle; + final String? description; + final String negativeButton; + final bool confirmationRequired; + + static const defaultValues = AndroidPromptInfo(); + + Map _toJson() => { + 'title': title, + 'subtitle': subtitle, + 'description': description, + 'negativeButton': negativeButton, + 'confirmationRequired': confirmationRequired, + }; +} + +/// iOS **and MacOS** specific configuration of the prompt displayed for biometry. +class IosPromptInfo { + const IosPromptInfo({ + this.saveTitle = 'Unlock to save data', + this.accessTitle = 'Unlock to access data', + }); + + final String saveTitle; + final String accessTitle; + + static const defaultValues = IosPromptInfo(); + + Map _toJson() => { + 'saveTitle': saveTitle, + 'accessTitle': accessTitle, + }; +} + +/// Wrapper for platform specific prompt infos. +class PromptInfo { + const PromptInfo({ + this.androidPromptInfo = AndroidPromptInfo.defaultValues, + this.iosPromptInfo = IosPromptInfo.defaultValues, + this.macOsPromptInfo = IosPromptInfo.defaultValues, + }); + static const defaultValues = PromptInfo(); + + final AndroidPromptInfo androidPromptInfo; + final IosPromptInfo iosPromptInfo; + final IosPromptInfo macOsPromptInfo; +} + +/// Main plugin class to interact with. Is always a singleton right now, +/// factory constructor will always return the same instance. +/// +/// * call [canAuthenticate] to check support on the platform/device. +/// * call [getStorage] to initialize a storage. +abstract class BiometricStorage extends PlatformInterface { + // Returns singleton instance. + factory BiometricStorage() => _instance; + + BiometricStorage.create() : super(token: _token); + + static BiometricStorage _instance = MethodChannelBiometricStorage(); + + /// Platform-specific plugins should set this with their own platform-specific + /// class that extends [UrlLauncherPlatform] when they register themselves. + static set instance(BiometricStorage instance) { + PlatformInterface.verifyToken(instance, _token); + _instance = instance; + } + + static const Object _token = Object(); + + /// Returns whether this device supports biometric/secure storage or + /// the reason [CanAuthenticateResponse] why it is not supported. + Future canAuthenticate(); + + /// Returns true when there is an AppArmor error when trying to read a value. + /// + /// When used inside a snap, there might be app armor limitations + /// which lead to an error like: + /// org.freedesktop.DBus.Error.AccessDenied: An AppArmor policy prevents + /// this sender from sending this message to this recipient; + /// type="method_call", sender=":1.140" (uid=1000 pid=94358 + /// comm="/snap/biometric-storage-example/x1/biometric_stora" + /// label="snap.biometric-storage-example.biometric (enforce)") + /// interface="org.freedesktop.Secret.Service" member="OpenSession" + /// error name="(unset)" requested_reply="0" destination=":1.30" + /// (uid=1000 pid=1153 comm="/usr/bin/gnome-keyring-daemon + /// --daemonize --login " label="unconfined") + Future linuxCheckAppArmorError(); + + /// Retrieves the given biometric storage file. + /// Each store is completely separated, and has it's own encryption and + /// biometric lock. + /// if [forceInit] is true, will throw an exception if the store was already + /// created in this runtime. + Future getStorage( + String name, { + StorageFileInitOptions? options, + bool forceInit = false, + PromptInfo promptInfo = PromptInfo.defaultValues, + }); + + @protected + Future read( + String name, + PromptInfo promptInfo, + ); + + @protected + Future delete( + String name, + PromptInfo promptInfo, + ); + + @protected + Future write( + String name, + String content, + PromptInfo promptInfo, + ); +} + +class MethodChannelBiometricStorage extends BiometricStorage { + MethodChannelBiometricStorage() : super.create(); + + static const MethodChannel _channel = MethodChannel('biometric_storage'); + + @override + Future canAuthenticate() async { + if (kIsWeb) { + return CanAuthenticateResponse.unsupported; + } + if (Platform.isAndroid || + Platform.isIOS || + Platform.isMacOS || + Platform.isLinux) { + final response = await _channel.invokeMethod('canAuthenticate'); + final ret = _canAuthenticateMapping[response]; + if (ret == null) { + throw StateError('Invalid response from native platform. {$response}'); + } + return ret; + } + return CanAuthenticateResponse.unsupported; + } + + /// Returns true when there is an AppArmor error when trying to read a value. + /// + /// When used inside a snap, there might be app armor limitations + /// which lead to an error like: + /// org.freedesktop.DBus.Error.AccessDenied: An AppArmor policy prevents + /// this sender from sending this message to this recipient; + /// type="method_call", sender=":1.140" (uid=1000 pid=94358 + /// comm="/snap/biometric-storage-example/x1/biometric_stora" + /// label="snap.biometric-storage-example.biometric (enforce)") + /// interface="org.freedesktop.Secret.Service" member="OpenSession" + /// error name="(unset)" requested_reply="0" destination=":1.30" + /// (uid=1000 pid=1153 comm="/usr/bin/gnome-keyring-daemon + /// --daemonize --login " label="unconfined") + @override + Future linuxCheckAppArmorError() async { + if (!Platform.isLinux) { + return false; + } + final tmpStorage = await getStorage('appArmorCheck', + options: StorageFileInitOptions(authenticationRequired: false)); + _logger.finer('Checking app armor'); + try { + await tmpStorage.read(); + _logger.finer('Everything okay.'); + return false; + } on AuthException catch (e, stackTrace) { + if (e.code == AuthExceptionCode.linuxAppArmorDenied) { + return true; + } + _logger.warning( + 'Unknown error while checking for app armor.', e, stackTrace); + // some other weird error? + rethrow; + } + } + + /// Retrieves the given biometric storage file. + /// Each store is completely separated, and has it's own encryption and + /// biometric lock. + /// if [forceInit] is true, will throw an exception if the store was already + /// created in this runtime. + @override + Future getStorage( + String name, { + StorageFileInitOptions? options, + bool forceInit = false, + PromptInfo promptInfo = PromptInfo.defaultValues, + }) async { + try { + final result = await _channel.invokeMethod( + 'init', + { + 'name': name, + 'options': options?.toJson() ?? StorageFileInitOptions().toJson(), + 'forceInit': forceInit, + }, + ); + _logger.finest('getting storage. was created: $result'); + return BiometricStorageFile( + this, + name, + promptInfo, + ); + } catch (e, stackTrace) { + _logger.warning( + 'Error while initializing biometric storage.', e, stackTrace); + rethrow; + } + } + + @override + Future read( + String name, + PromptInfo promptInfo, + ) => + _transformErrors(_channel.invokeMethod('read', { + 'name': name, + ..._promptInfoForCurrentPlatform(promptInfo), + })); + + @override + Future delete( + String name, + PromptInfo promptInfo, + ) => + _transformErrors(_channel.invokeMethod('delete', { + 'name': name, + ..._promptInfoForCurrentPlatform(promptInfo), + })); + + @override + Future write( + String name, + String content, + PromptInfo promptInfo, + ) => + _transformErrors(_channel.invokeMethod('write', { + 'name': name, + 'content': content, + ..._promptInfoForCurrentPlatform(promptInfo), + })); + + Map _promptInfoForCurrentPlatform(PromptInfo promptInfo) { + // Don't expose Android configurations to other platforms + if (Platform.isAndroid) { + return { + 'androidPromptInfo': promptInfo.androidPromptInfo._toJson() + }; + } else if (Platform.isIOS) { + return { + 'iosPromptInfo': promptInfo.iosPromptInfo._toJson() + }; + } else if (Platform.isMacOS) { + return { + // This is no typo, we use the same implementation on iOS and MacOS, + // so we use the same parameter. + 'iosPromptInfo': promptInfo.macOsPromptInfo._toJson() + }; + } else if (Platform.isLinux) { + return {}; + } else { + // Windows has no method channel implementation + // Web has a Noop implementation. + throw StateError('Unsupported Platform ${Platform.operatingSystem}'); + } + } + + Future _transformErrors(Future future) => + future.catchError((Object error, StackTrace stackTrace) { + if (error is PlatformException) { + _logger.finest( + 'Error during plugin operation (details: ${error.details})', + error, + stackTrace); + if (error.code.startsWith('AuthError:')) { + return Future.error( + AuthException( + _authErrorCodeMapping[error.code] ?? AuthExceptionCode.unknown, + error.message ?? 'Unknown error', + ), + stackTrace, + ); + } + if (error.details is Map) { + final message = error.details['message'] as String; + if (message.contains('org.freedesktop.DBus.Error.AccessDenied') || + message.contains('AppArmor')) { + _logger.fine('Got app armor error.'); + return Future.error( + AuthException( + AuthExceptionCode.linuxAppArmorDenied, error.message!), + stackTrace); + } + } + } + return Future.error(error, stackTrace); + }); +} + +class BiometricStorageFile { + BiometricStorageFile(this._plugin, this.name, this.defaultPromptInfo); + + final BiometricStorage _plugin; + final String name; + final PromptInfo defaultPromptInfo; + + /// read from the secure file and returns the content. + /// Will return `null` if file does not exist. + Future read({PromptInfo? promptInfo}) => + _plugin.read(name, promptInfo ?? defaultPromptInfo); + + /// Write content of this file. Previous value will be overwritten. + Future write(String content, {PromptInfo? promptInfo}) => + _plugin.write(name, content, promptInfo ?? defaultPromptInfo); + + /// Delete the content of this storage. + Future delete({PromptInfo? promptInfo}) => + _plugin.delete(name, promptInfo ?? defaultPromptInfo); +} diff --git a/third-party/biometric_storage/lib/src/biometric_storage_web.dart b/third-party/biometric_storage/lib/src/biometric_storage_web.dart new file mode 100644 index 00000000..607fa89d --- /dev/null +++ b/third-party/biometric_storage/lib/src/biometric_storage_web.dart @@ -0,0 +1,60 @@ +import 'dart:async'; +import 'package:web/web.dart' as web show window; + +import 'package:biometric_storage/src/biometric_storage.dart'; +import 'package:flutter_web_plugins/flutter_web_plugins.dart'; + +/// A web implementation of the BiometricStorage plugin. +class BiometricStoragePluginWeb extends BiometricStorage { + BiometricStoragePluginWeb() : super.create(); + + static const namePrefix = 'design.codeux.authpass.'; + + static void registerWith(Registrar registrar) { + BiometricStorage.instance = BiometricStoragePluginWeb(); + } + + @override + Future canAuthenticate() async => + CanAuthenticateResponse.errorHwUnavailable; + + @override + Future getStorage( + String name, { + StorageFileInitOptions? options, + bool forceInit = false, + PromptInfo promptInfo = PromptInfo.defaultValues, + }) async { + return BiometricStorageFile(this, namePrefix + name, promptInfo); + } + + @override + Future delete( + String name, + PromptInfo promptInfo, + ) async { + final oldValue = web.window.localStorage.getItem(name); + web.window.localStorage.removeItem(name); + return oldValue != null; + } + + @override + Future linuxCheckAppArmorError() async => false; + + @override + Future read( + String name, + PromptInfo promptInfo, + ) async { + return web.window.localStorage.getItem(name); + } + + @override + Future write( + String name, + String content, + PromptInfo promptInfo, + ) async { + web.window.localStorage.setItem(name, content); + } +} diff --git a/third-party/biometric_storage/lib/src/biometric_storage_win32.dart b/third-party/biometric_storage/lib/src/biometric_storage_win32.dart new file mode 100644 index 00000000..84d807ad --- /dev/null +++ b/third-party/biometric_storage/lib/src/biometric_storage_win32.dart @@ -0,0 +1,133 @@ +import 'dart:convert'; +import 'dart:ffi'; + +import 'package:ffi/ffi.dart'; +import 'package:logging/logging.dart'; +import 'package:win32/win32.dart'; + +import './biometric_storage.dart'; + +final _logger = Logger('biometric_storage_win32'); + +class Win32BiometricStoragePlugin extends BiometricStorage { + Win32BiometricStoragePlugin() : super.create(); + + static const namePrefix = 'design.codeux.authpass.'; + + /// Registers this class as the default instance of [PathProviderPlatform] + static void registerWith() { + BiometricStorage.instance = Win32BiometricStoragePlugin(); + } + + @override + Future canAuthenticate() async { + return CanAuthenticateResponse.errorHwUnavailable; + } + + @override + Future getStorage( + String name, { + StorageFileInitOptions? options, + bool forceInit = false, + PromptInfo promptInfo = PromptInfo.defaultValues, + }) async { + return BiometricStorageFile(this, namePrefix + name, promptInfo); + } + + @override + Future linuxCheckAppArmorError() async => false; + + @override + Future delete( + String name, + PromptInfo promptInfo, + ) async { + final namePointer = TEXT(name); + try { + final result = CredDelete(namePointer, CRED_TYPE_GENERIC, 0); + if (result != TRUE) { + final errorCode = GetLastError(); + if (errorCode == ERROR_NOT_FOUND) { + _logger.fine('Unable to find credential of name $name'); + } else { + _logger.warning('Error ($result): $errorCode'); + } + return false; + } + } finally { + calloc.free(namePointer); + } + return true; + } + + @override + Future read( + String name, + PromptInfo promptInfo, + ) async { + _logger.finer('read($name)'); + final credPointer = calloc>(); + final namePointer = TEXT(name); + try { + if (CredRead(namePointer, CRED_TYPE_GENERIC, 0, credPointer) != TRUE) { + final errorCode = GetLastError(); + if (errorCode == ERROR_NOT_FOUND) { + _logger.fine('Unable to find credential of name $name'); + } else { + _logger.warning('Error: $errorCode ', + WindowsException(HRESULT_FROM_WIN32(errorCode))); + } + return null; + } + final cred = credPointer.value.ref; + final blob = cred.CredentialBlob.asTypedList(cred.CredentialBlobSize); + + _logger.fine('CredFree()'); + CredFree(credPointer.value); + + return utf8.decode(blob); + } finally { + _logger.fine('free(credPointer)'); + calloc.free(credPointer); + _logger.fine('free(namePointer)'); + calloc.free(namePointer); + _logger.fine('read($name) done.'); + } + } + + @override + Future write( + String name, + String content, + PromptInfo promptInfo, + ) async { + _logger.fine('write()'); + final examplePassword = utf8.encode(content); + final blob = examplePassword.allocatePointer(); + final namePointer = TEXT(name); + final userNamePointer = TEXT('flutter.biometric_storage'); + + final credential = calloc() + ..ref.Type = CRED_TYPE_GENERIC + ..ref.TargetName = namePointer + ..ref.Persist = CRED_PERSIST_LOCAL_MACHINE + ..ref.UserName = userNamePointer + ..ref.CredentialBlob = blob + ..ref.CredentialBlobSize = examplePassword.length; + try { + final result = CredWrite(credential, 0); + if (result != TRUE) { + final errorCode = GetLastError(); + throw BiometricStorageException( + 'Error writing credential $name ($result): $errorCode'); + } + } finally { + _logger.fine('free'); + calloc.free(blob); + calloc.free(credential); + calloc.free(namePointer); + calloc.free(userNamePointer); + _logger.fine('free done'); + } + } +} diff --git a/third-party/biometric_storage/lib/src/biometric_storage_win32_fake.dart b/third-party/biometric_storage/lib/src/biometric_storage_win32_fake.dart new file mode 100644 index 00000000..437b51d9 --- /dev/null +++ b/third-party/biometric_storage/lib/src/biometric_storage_win32_fake.dart @@ -0,0 +1 @@ +class Win32BiometricStoragePlugin {} diff --git a/third-party/biometric_storage/linux/CMakeLists.txt b/third-party/biometric_storage/linux/CMakeLists.txt new file mode 100644 index 00000000..10319250 --- /dev/null +++ b/third-party/biometric_storage/linux/CMakeLists.txt @@ -0,0 +1,29 @@ +cmake_minimum_required(VERSION 3.10) +set(PROJECT_NAME "biometric_storage") +project(${PROJECT_NAME} LANGUAGES CXX) + +set(PLUGIN_NAME "${PROJECT_NAME}_plugin") + +add_library(${PLUGIN_NAME} SHARED + "${PLUGIN_NAME}.cc" +) + +find_package(PkgConfig REQUIRED) +pkg_check_modules (LIBSECRET REQUIRED IMPORTED_TARGET libsecret-1>=0.18) + +apply_standard_settings(${PLUGIN_NAME}) +set_target_properties(${PLUGIN_NAME} PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_include_directories(${PLUGIN_NAME} PRIVATE ${LIBSECRET_INCLUDE_DIRS}) +target_compile_definitions(${PLUGIN_NAME} PRIVATE FLUTTER_PLUGIN_IMPL) +target_include_directories(${PLUGIN_NAME} INTERFACE + "${CMAKE_CURRENT_SOURCE_DIR}/include") +target_link_libraries(${PLUGIN_NAME} PRIVATE flutter) +target_link_libraries(${PLUGIN_NAME} PRIVATE PkgConfig::GTK) +target_link_libraries(${PLUGIN_NAME} PRIVATE PkgConfig::LIBSECRET) + +# List of absolute paths to libraries that should be bundled with the plugin +set(biometric_storage_bundled_libraries + "" + PARENT_SCOPE +) diff --git a/third-party/biometric_storage/linux/biometric_storage_plugin.cc b/third-party/biometric_storage/linux/biometric_storage_plugin.cc new file mode 100644 index 00000000..1c1e65a8 --- /dev/null +++ b/third-party/biometric_storage/linux/biometric_storage_plugin.cc @@ -0,0 +1,217 @@ +#include "include/biometric_storage/biometric_storage_plugin.h" + +#include +#include +#include +#include + +#define BIOMETRIC_SCHEMA biometric_get_schema () + +const char kBadArgumentsError[] = "Bad Arguments"; +const char kSecurityAccessError[] = "Security Access Error"; +const char kMethodRead[] = "read"; +const char kMethodWrite[] = "write"; +const char kMethodDelete[] = "delete"; +const char kNamePrefix[] = "design.codeux.authpass"; + +#define METHOD_PARAM_NAME(varName, args) \ + g_autofree gchar * varName = g_strdup_printf("%s.%s", kNamePrefix, fl_value_get_string(fl_value_lookup_string(args, "name"))) + + +#define BIOMETRIC_STORAGE_PLUGIN(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), biometric_storage_plugin_get_type(), \ + BiometricStoragePlugin)) + +#define IS_METHOD(name, equals) \ + strcmp(method, equals) == 0 + +struct _BiometricStoragePlugin { + GObject parent_instance; +}; + +G_DEFINE_TYPE(BiometricStoragePlugin, biometric_storage_plugin, g_object_get_type()) + + + +static FlMethodResponse* _handle_error(const gchar* message, GError *error) { + const gchar* domain = g_quark_to_string(error->domain); + g_autofree gchar *error_message = g_strdup_printf("%s: %s (%d) (%s)", message, error->message, error->code, domain); + g_warning("%s", error_message); + g_autoptr(FlValue) error_details = fl_value_new_map(); + fl_value_set_string_take(error_details, "domain", fl_value_new_string(domain)); + fl_value_set_string_take(error_details, "code", fl_value_new_int(error->code)); + fl_value_set_string_take(error_details, "message", fl_value_new_string(error->message)); + return FL_METHOD_RESPONSE(fl_method_error_response_new( + kSecurityAccessError, error_message, error_details)); +} + +static FlMethodResponse *handleInit(FlValue *args) { + FlValue* options = fl_value_lookup_string(args, "options"); + if (fl_value_get_type(options) != FL_VALUE_TYPE_MAP) { + return FL_METHOD_RESPONSE(fl_method_error_response_new( + kBadArgumentsError, "Argument map missing or malformed", nullptr)); + } + FlValue* authRequired = fl_value_lookup_string(options, "authenticationRequired"); + if (fl_value_get_bool(authRequired)) { + return FL_METHOD_RESPONSE(fl_method_error_response_new( + kBadArgumentsError, "Linux plugin only supports non-authenticated secure storage", nullptr)); + } + return FL_METHOD_RESPONSE(fl_method_success_response_new(fl_value_new_bool(true))); +} + +const SecretSchema * +biometric_get_schema (void) +{ + static const SecretSchema the_schema = { + "design.codeux.BiometricStorage", SECRET_SCHEMA_NONE, + { + { "name", SECRET_SCHEMA_ATTRIBUTE_STRING }, + // { "NULL", 0 }, + } + }; + return &the_schema; +} + +static void on_password_stored(GObject *source, GAsyncResult *result, + gpointer user_data) { + GError *error = NULL; + FlMethodCall *method_call = (FlMethodCall *)user_data; + g_autoptr(FlMethodResponse) response = nullptr; + + secret_password_store_finish(result, &error); + if (error != NULL) { + /* ... handle the failure here */ + response = _handle_error("Failed to store secret", error); + g_error_free(error); + } else { + response = FL_METHOD_RESPONSE(fl_method_success_response_new(fl_value_new_bool(true))); + } + + fl_method_call_respond(method_call, response, nullptr); + g_object_unref(method_call); +} + +static void on_password_cleared(GObject *source, GAsyncResult *result, + gpointer user_data) { + GError *error = NULL; + FlMethodCall *method_call = (FlMethodCall *)user_data; + g_autoptr(FlMethodResponse) response = nullptr; + + gboolean removed = secret_password_clear_finish(result, &error); + + if (error != NULL) { + /* ... handle the failure here */ + response = _handle_error("Failed to delete secret", error); + g_error_free(error); + + } else { + response = FL_METHOD_RESPONSE(fl_method_success_response_new(fl_value_new_bool(removed))); + } + fl_method_call_respond(method_call, response, nullptr); + g_object_unref(method_call); +} + +static void on_password_lookup(GObject *source, GAsyncResult *result, + gpointer user_data) { + GError *error = NULL; + FlMethodCall *method_call = (FlMethodCall *)user_data; + g_autoptr(FlMethodResponse) response = nullptr; + + gchar *password = secret_password_lookup_finish(result, &error); + + if (error != NULL) { + /* ... handle the failure here */ + response = _handle_error("Failed to lookup secret", error); + g_error_free(error); + } else if (password == NULL) { + /* password will be null, if no matching password found */ + g_warning("Failed to lookup password (not found)."); + response = FL_METHOD_RESPONSE(fl_method_success_response_new(fl_value_new_null())); + } else { + /* ... do something with the password */ + response = FL_METHOD_RESPONSE(fl_method_success_response_new(fl_value_new_string(password))); + secret_password_free(password); + } + fl_method_call_respond(method_call, response, nullptr); + g_object_unref(method_call); +} + +// Called when a method call is received from Flutter. +static void +biometric_storage_plugin_handle_method_call(BiometricStoragePlugin *self, + FlMethodCall *method_call) { + g_autoptr(FlMethodResponse) response = nullptr; + + const gchar *method = fl_method_call_get_name(method_call); + FlValue *args = fl_method_call_get_args(method_call); + + if (strcmp(method, "canAuthenticate") == 0) { + g_autoptr(FlValue) result = fl_value_new_string("ErrorHwUnavailable"); + response = FL_METHOD_RESPONSE(fl_method_success_response_new(result)); + } else if (strcmp(method, "init") == 0) { + response = handleInit(args); + } else if (IS_METHOD(method, kMethodWrite)) { + METHOD_PARAM_NAME(name, args); + // const gchar *name = + // fl_value_get_string(fl_value_lookup_string(args, "name")); + const gchar *content = + fl_value_get_string(fl_value_lookup_string(args, "content")); + g_object_ref(method_call); + secret_password_store(BIOMETRIC_SCHEMA, SECRET_COLLECTION_DEFAULT, name, + content, NULL, on_password_stored, method_call, + "name", name, NULL); + return; + } else if (IS_METHOD(method, kMethodRead)) { + METHOD_PARAM_NAME(name, args); + // const gchar *name = + // fl_value_get_string(fl_value_lookup_string(args, "name")); + g_object_ref(method_call); + secret_password_lookup(BIOMETRIC_SCHEMA, NULL, on_password_lookup, + method_call, "name", name, NULL); + return; + } else if (IS_METHOD(method, kMethodDelete)) { + METHOD_PARAM_NAME(name, args); + // const gchar *name = + // fl_value_get_string(fl_value_lookup_string(args, "name")); + g_object_ref(method_call); + secret_password_clear(BIOMETRIC_SCHEMA, NULL, on_password_cleared, + method_call, "name", name, NULL); + return; + } else { + response = FL_METHOD_RESPONSE(fl_method_not_implemented_response_new()); + } + + fl_method_call_respond(method_call, response, nullptr); +} + +static void biometric_storage_plugin_dispose(GObject* object) { + G_OBJECT_CLASS(biometric_storage_plugin_parent_class)->dispose(object); +} + +static void biometric_storage_plugin_class_init(BiometricStoragePluginClass* klass) { + G_OBJECT_CLASS(klass)->dispose = biometric_storage_plugin_dispose; +} + +static void biometric_storage_plugin_init(BiometricStoragePlugin* self) {} + +static void method_call_cb(FlMethodChannel* channel, FlMethodCall* method_call, + gpointer user_data) { + BiometricStoragePlugin* plugin = BIOMETRIC_STORAGE_PLUGIN(user_data); + biometric_storage_plugin_handle_method_call(plugin, method_call); +} + +void biometric_storage_plugin_register_with_registrar(FlPluginRegistrar* registrar) { + BiometricStoragePlugin* plugin = BIOMETRIC_STORAGE_PLUGIN( + g_object_new(biometric_storage_plugin_get_type(), nullptr)); + + g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new(); + g_autoptr(FlMethodChannel) channel = + fl_method_channel_new(fl_plugin_registrar_get_messenger(registrar), + "biometric_storage", + FL_METHOD_CODEC(codec)); + fl_method_channel_set_method_call_handler(channel, method_call_cb, + g_object_ref(plugin), + g_object_unref); + + g_object_unref(plugin); +} diff --git a/third-party/biometric_storage/linux/include/biometric_storage/biometric_storage_plugin.h b/third-party/biometric_storage/linux/include/biometric_storage/biometric_storage_plugin.h new file mode 100644 index 00000000..f3e7b643 --- /dev/null +++ b/third-party/biometric_storage/linux/include/biometric_storage/biometric_storage_plugin.h @@ -0,0 +1,27 @@ +#ifndef FLUTTER_PLUGIN_BIOMETRIC_STORAGE_PLUGIN_H_ +#define FLUTTER_PLUGIN_BIOMETRIC_STORAGE_PLUGIN_H_ + +#include + +G_BEGIN_DECLS + +#ifdef FLUTTER_PLUGIN_IMPL +#define FLUTTER_PLUGIN_EXPORT __attribute__((visibility("default"))) +#else +#define FLUTTER_PLUGIN_EXPORT +#endif + +typedef struct _BiometricStoragePlugin BiometricStoragePlugin; +typedef struct { + GObjectClass parent_class; +} BiometricStoragePluginClass; + +FLUTTER_PLUGIN_EXPORT GType biometric_storage_plugin_get_type(); + +FLUTTER_PLUGIN_EXPORT void biometric_storage_plugin_register_with_registrar( + FlPluginRegistrar* registrar); + + +G_END_DECLS + +#endif // FLUTTER_PLUGIN_BIOMETRIC_STORAGE_PLUGIN_H_ diff --git a/third-party/biometric_storage/macos/Classes/BiometricStorageImpl.swift b/third-party/biometric_storage/macos/Classes/BiometricStorageImpl.swift new file mode 100644 index 00000000..1cc18696 --- /dev/null +++ b/third-party/biometric_storage/macos/Classes/BiometricStorageImpl.swift @@ -0,0 +1,349 @@ +// Shared file between iOS and Mac OS +// make sure they stay in sync. + +import Foundation +import LocalAuthentication + +typealias StorageCallback = (Any?) -> Void +typealias StorageError = (String, String?, Any?) -> Any + +struct StorageMethodCall { + let method: String + let arguments: Any? +} + +class InitOptions { + init(params: [String: Any]) { + darwinTouchIDAuthenticationAllowableReuseDuration = params["drawinTouchIDAuthenticationAllowableReuseDurationSeconds"] as? Int + darwinTouchIDAuthenticationForceReuseContextDuration = params["darwinTouchIDAuthenticationForceReuseContextDurationSeconds"] as? Int + authenticationRequired = params["authenticationRequired"] as? Bool + darwinBiometricOnly = params["darwinBiometricOnly"] as? Bool + } + let darwinTouchIDAuthenticationAllowableReuseDuration: Int? + let darwinTouchIDAuthenticationForceReuseContextDuration: Int? + let authenticationRequired: Bool! + let darwinBiometricOnly: Bool! +} + +class IOSPromptInfo { + init(params: [String: Any]) { + saveTitle = params["saveTitle"] as? String + accessTitle = params["accessTitle"] as? String + } + let saveTitle: String! + let accessTitle: String! +} + +private func hpdebug(_ message: String) { + print(message); +} + +class BiometricStorageImpl { + + init(storageError: @escaping StorageError, storageMethodNotImplemented: Any) { + self.storageError = storageError + self.storageMethodNotImplemented = storageMethodNotImplemented + } + + private var stores: [String: BiometricStorageFile] = [:] + private let storageError: StorageError + private let storageMethodNotImplemented: Any + + private func storageError(code: String, message: String?, details: Any?) -> Any { + return storageError(code, message, details) + } + + public func handle(_ call: StorageMethodCall, result: @escaping StorageCallback) { + + func requiredArg(_ name: String, _ cb: (T) -> Void) { + guard let args = call.arguments as? Dictionary else { + result(storageError(code: "InvalidArguments", message: "Invalid arguments \(String(describing: call.arguments))", details: nil)) + return + } + guard let value = args[name] else { + result(storageError(code: "InvalidArguments", message: "Missing argument \(name)", details: nil)) + return + } + guard let valueTyped = value as? T else { + result(storageError(code: "InvalidArguments", message: "Invalid argument for \(name): expected \(T.self) got \(value)", details: nil)) + return + } + cb(valueTyped) + return + } + func requireStorage(_ name: String, _ cb: (BiometricStorageFile) -> Void) { + guard let file = stores[name] else { + result(storageError(code: "InvalidArguments", message: "Storage was not initialized \(name)", details: nil)) + return + } + cb(file) + } + + if ("canAuthenticate" == call.method) { + canAuthenticate(result: result) + } else if ("init" == call.method) { + requiredArg("name") { name in + requiredArg("options") { options in + stores[name] = BiometricStorageFile(name: name, initOptions: InitOptions(params: options), storageError: storageError) + } + } + result(true) + } else if ("dispose" == call.method) { + // nothing to dispose + result(true) + } else if ("read" == call.method) { + requiredArg("name") { name in + requiredArg("iosPromptInfo") { promptInfo in + requireStorage(name) { file in + file.read(result, IOSPromptInfo(params: promptInfo)) + } + } + } + } else if ("write" == call.method) { + requiredArg("name") { name in + requiredArg("content") { content in + requiredArg("iosPromptInfo") { promptInfo in + requireStorage(name) { file in + file.write(content, result, IOSPromptInfo(params: promptInfo)) + } + } + } + } + } else if ("delete" == call.method) { + requiredArg("name") { name in + requiredArg("iosPromptInfo") { promptInfo in + requireStorage(name) { file in + file.delete(result, IOSPromptInfo(params: promptInfo)) + } + } + } + } else { + result(storageMethodNotImplemented) + } + } + + + private func canAuthenticate(result: @escaping StorageCallback) { + var error: NSError? + let context = LAContext() + if context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error) { + result("Success") + return + } + guard let err = error else { + result("ErrorUnknown") + return + } + let laError = LAError(_nsError: err) + NSLog("LAError: \(laError)"); + switch laError.code { + case .touchIDNotAvailable: + result("ErrorHwUnavailable") + break; + case .passcodeNotSet: + result("ErrorPasscodeNotSet") + break; + case .touchIDNotEnrolled: + result("ErrorNoBiometricEnrolled") + break; + case .invalidContext: fallthrough + default: + result("ErrorUnknown") + break; + } + } +} + +typealias StoredContext = (context: LAContext, expireAt: Date) + +class BiometricStorageFile { + private let name: String + private let initOptions: InitOptions + private var _context: StoredContext? + private var context: LAContext { + get { + if let context = _context { + if context.expireAt.timeIntervalSinceNow < 0 { + // already expired. + _context = nil + } else { + return context.context + } + } + + let context = LAContext() + if (initOptions.authenticationRequired) { + if let duration = initOptions.darwinTouchIDAuthenticationAllowableReuseDuration { + if #available(OSX 10.12, *) { + context.touchIDAuthenticationAllowableReuseDuration = Double(duration) + } else { + // Fallback on earlier versions + hpdebug("Pre OSX 10.12 no touchIDAuthenticationAllowableReuseDuration available. ignoring.") + } + } + + if let duration = initOptions.darwinTouchIDAuthenticationForceReuseContextDuration { + _context = (context: context, expireAt: Date(timeIntervalSinceNow: Double(duration))) + } + } + return context + } + } + private let storageError: StorageError + + init(name: String, initOptions: InitOptions, storageError: @escaping StorageError) { + self.name = name + self.initOptions = initOptions + self.storageError = storageError + } + + private func baseQuery(_ result: @escaping StorageCallback) -> [String: Any]? { + var query = [ + kSecClass as String: kSecClassGenericPassword, + kSecAttrService as String: "flutter_biometric_storage", + kSecAttrAccount as String: name, + ] as [String : Any] + if initOptions.authenticationRequired { + guard let access = accessControl(result) else { + return nil + } + if #available(iOS 13.0, macOS 10.15, *) { + query[kSecUseDataProtectionKeychain as String] = true + } + query[kSecAttrAccessControl as String] = access + } + return query + } + + private func accessControl(_ result: @escaping StorageCallback) -> SecAccessControl? { + let accessControlFlags: SecAccessControlCreateFlags + + if initOptions.darwinBiometricOnly { + if #available(iOS 11.3, *) { + accessControlFlags = .biometryCurrentSet + } else { + accessControlFlags = .touchIDCurrentSet + } + } else { + accessControlFlags = .userPresence + } + +// access = SecAccessControlCreateWithFlags(nil, +// kSecAttrAccessibleWhenUnlockedThisDeviceOnly, +// accessControlFlags, +// &error) + var error: Unmanaged? + guard let access = SecAccessControlCreateWithFlags( + nil, // Use the default allocator. + kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, + accessControlFlags, + &error) else { + hpdebug("Error while creating access control flags. \(String(describing: error))") + result(storageError("writing data", "error writing data", "\(String(describing: error))")); + return nil + } + + return access + } + + func read(_ result: @escaping StorageCallback, _ promptInfo: IOSPromptInfo) { + + guard var query = baseQuery(result) else { + return; + } + query[kSecMatchLimit as String] = kSecMatchLimitOne + query[kSecUseOperationPrompt as String] = promptInfo.accessTitle + query[kSecReturnAttributes as String] = true + query[kSecReturnData as String] = true + query[kSecUseAuthenticationContext as String] = context + + var item: CFTypeRef? + + let status = SecItemCopyMatching(query as CFDictionary, &item) + guard status != errSecItemNotFound else { + result(nil) + return + } + guard status == errSecSuccess else { + handleOSStatusError(status, result, "Error retrieving item. \(status)") + return + } + guard let existingItem = item as? [String : Any], + let data = existingItem[kSecValueData as String] as? Data, + let dataString = String(data: data, encoding: String.Encoding.utf8) + else { + result(storageError("RetrieveError", "Unexpected data.", nil)) + return + } + result(dataString) + } + + func delete(_ result: @escaping StorageCallback, _ promptInfo: IOSPromptInfo) { + guard let query = baseQuery(result) else { + return; + } + // query[kSecMatchLimit as String] = kSecMatchLimitOne + // query[kSecReturnData as String] = true + let status = SecItemDelete(query as CFDictionary) + if status == errSecSuccess { + result(true) + return + } + if status == errSecItemNotFound { + hpdebug("Item not in keychain. Nothing to delete.") + result(true) + return + } + handleOSStatusError(status, result, "writing data") + } + + func write(_ content: String, _ result: @escaping StorageCallback, _ promptInfo: IOSPromptInfo) { + guard var query = baseQuery(result) else { + return; + } + + if (initOptions.authenticationRequired) { + query.merge([ + kSecUseAuthenticationContext as String: context, + ]) { (_, new) in new } + if let operationPrompt = promptInfo.saveTitle { + query[kSecUseOperationPrompt as String] = operationPrompt + } + } else { + hpdebug("No authentication required for \(name)") + } + query.merge([ + // kSecMatchLimit as String: kSecMatchLimitOne, + kSecValueData as String: content.data(using: String.Encoding.utf8) as Any, + ]) { (_, new) in new } + var status = SecItemAdd(query as CFDictionary, nil) + if (status == errSecDuplicateItem) { + hpdebug("Value already exists. updating.") + let update = [kSecValueData as String: query[kSecValueData as String]] + query.removeValue(forKey: kSecValueData as String) + status = SecItemUpdate(query as CFDictionary, update as CFDictionary) + } + guard status == errSecSuccess else { + handleOSStatusError(status, result, "writing data") + return + } + result(nil) + } + + private func handleOSStatusError(_ status: OSStatus, _ result: @escaping StorageCallback, _ message: String) { + var errorMessage: String? = nil + if #available(iOS 11.3, OSX 10.12, *) { + errorMessage = SecCopyErrorMessageString(status, nil) as String? + } + let code: String + switch status { + case errSecUserCanceled: + code = "AuthError:UserCanceled" + default: + code = "SecurityError" + } + + result(storageError(code, "Error while \(message): \(status): \(errorMessage ?? "Unknown")", nil)) + } + +} diff --git a/third-party/biometric_storage/macos/Classes/BiometricStorageMacOSPlugin.swift b/third-party/biometric_storage/macos/Classes/BiometricStorageMacOSPlugin.swift new file mode 100644 index 00000000..58c30a45 --- /dev/null +++ b/third-party/biometric_storage/macos/Classes/BiometricStorageMacOSPlugin.swift @@ -0,0 +1,20 @@ +import FlutterMacOS +import Cocoa + +public class BiometricStorageMacOSPlugin: NSObject, FlutterPlugin { + + private let impl = BiometricStorageImpl(storageError: { (code, message, details) -> Any in + FlutterError(code: code, message: message, details: details) + }, storageMethodNotImplemented: FlutterMethodNotImplemented) + + public static func register(with registrar: FlutterPluginRegistrar) { + let channel = FlutterMethodChannel(name: "biometric_storage", binaryMessenger: registrar.messenger) + let instance = BiometricStorageMacOSPlugin() + registrar.addMethodCallDelegate(instance, channel: channel) + } + + public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { + impl.handle(StorageMethodCall(method: call.method, arguments: call.arguments), result: result) + } + +} diff --git a/third-party/biometric_storage/macos/Classes/BiometricStoragePlugin.swift b/third-party/biometric_storage/macos/Classes/BiometricStoragePlugin.swift new file mode 100644 index 00000000..65d25878 --- /dev/null +++ b/third-party/biometric_storage/macos/Classes/BiometricStoragePlugin.swift @@ -0,0 +1,19 @@ +import Cocoa +import FlutterMacOS + +public class BiometricStoragePlugin: NSObject, FlutterPlugin { + public static func register(with registrar: FlutterPluginRegistrar) { + let channel = FlutterMethodChannel(name: "biometric_storage", binaryMessenger: registrar.messenger) + let instance = BiometricStoragePlugin() + registrar.addMethodCallDelegate(instance, channel: channel) + } + + public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { + switch call.method { + case "getPlatformVersion": + result("macOS " + ProcessInfo.processInfo.operatingSystemVersionString) + default: + result(FlutterMethodNotImplemented) + } + } +} diff --git a/third-party/biometric_storage/macos/biometric_storage.podspec b/third-party/biometric_storage/macos/biometric_storage.podspec new file mode 100644 index 00000000..7bc528d6 --- /dev/null +++ b/third-party/biometric_storage/macos/biometric_storage.podspec @@ -0,0 +1,22 @@ +# +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. +# Run `pod lib lint biometric_storage.podspec' to validate before publishing. +# +Pod::Spec.new do |s| + s.name = 'biometric_storage' + s.version = '0.0.1' + s.summary = 'A new flutter plugin project.' + s.description = <<-DESC +A new flutter plugin project. + DESC + s.homepage = 'http://example.com' + s.license = { :file => '../LICENSE' } + s.author = { 'Your Company' => 'email@example.com' } + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + s.dependency 'FlutterMacOS' + + s.platform = :osx, '10.11' + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } + s.swift_version = '5.0' +end diff --git a/third-party/biometric_storage/pubspec.yaml b/third-party/biometric_storage/pubspec.yaml new file mode 100644 index 00000000..61c22044 --- /dev/null +++ b/third-party/biometric_storage/pubspec.yaml @@ -0,0 +1,64 @@ +name: biometric_storage +description: | + Secure Storage: Encrypted data store optionally secured by biometric lock with support + for iOS, Android, MacOS. Partial support for Linux, Windows and web (localStorage). +version: 5.1.0-rc.5 +homepage: https://github.com/authpass/biometric_storage/ + +environment: + sdk: '>=3.2.0 <4.0.0' + flutter: ">=2.8.0" + +dependencies: + flutter: + sdk: flutter + flutter_web_plugins: + sdk: flutter + logging: ">=1.0.0 <2.0.0" + plugin_platform_interface: ">=2.0.0 <3.0.0" + + ffi: '>=1.0.0 <3.0.0' + win32: '>=2.0.0 <6.0.0' + web: ">=0.5.0 <2.0.0" + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^4.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter. +flutter: + # This section identifies this Flutter project as a plugin project. + # The androidPackage and pluginClass identifiers should not ordinarily + # be modified. They are used by the tooling to maintain consistency when + # adding or updating assets for this project. + plugin: + platforms: + android: + package: design.codeux.biometric_storage + pluginClass: BiometricStoragePlugin + ios: + pluginClass: BiometricStoragePlugin + macos: + pluginClass: BiometricStorageMacOSPlugin + linux: + pluginClass: BiometricStoragePlugin + windows: + dartPluginClass: Win32BiometricStoragePlugin + fileName: src/biometric_storage_win32.dart + web: + pluginClass: BiometricStoragePluginWeb + fileName: src/biometric_storage_web.dart + +topics: + - biometrics + - encryption + - storage + - security + - secure-storage +screenshots: + - description: 'Face ID on iPhone' + path: doc/screenshot_ios.png diff --git a/third-party/biometric_storage/test/biometric_storage_test.dart b/third-party/biometric_storage/test/biometric_storage_test.dart new file mode 100644 index 00000000..085e8d08 --- /dev/null +++ b/third-party/biometric_storage/test/biometric_storage_test.dart @@ -0,0 +1,29 @@ +import 'package:biometric_storage/src/biometric_storage.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + const channel = MethodChannel('biometric_storage'); + + TestWidgetsFlutterBinding.ensureInitialized(); + + setUp(() { + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger + .setMockMethodCallHandler(channel, (MethodCall methodCall) async { + if (methodCall.method == 'canAuthenticate') { + return 'ErrorUnknown'; + } + throw PlatformException(code: 'NotImplemented'); + }); + }); + + tearDown(() { + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger + .setMockMethodCallHandler(channel, null); + }); + + test('canAuthenticate', () async { + final result = await BiometricStorage().canAuthenticate(); + expect(result, CanAuthenticateResponse.unsupported); + }); +} diff --git a/tools/CloudOTP.iss b/tools/CloudOTP.iss index bd8402f8..89798852 100644 --- a/tools/CloudOTP.iss +++ b/tools/CloudOTP.iss @@ -2,7 +2,7 @@ ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "CloudOTP" -#define MyAppVersion "2.4.0" +#define MyAppVersion "2.4.1" #define MyAppPublisher "Cloudchewie" #define MyAppURL "https://apps.cloudchewie.com/cloudotp" #define MyAppExeName "CloudOTP.exe" @@ -56,6 +56,11 @@ Source: "D:\Repositories\CloudOTP\build\windows\x64\runner\Release\*"; DestDir: Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon +[Registry] +; Registry +Root: HKLM; Subkey: "SOFTWARE\{#MyAppPublisher}\{#MyAppName}"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"; Flags: uninsdeletekey +Root: HKLM; Subkey: "SOFTWARE\{#MyAppPublisher}\{#MyAppName}"; ValueType: string; ValueName: "Version"; ValueData: "{#MyAppVersion}"; Flags: uninsdeletevalue + [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent