From 6b18bee702802defa649c9afa346d7d2350f9450 Mon Sep 17 00:00:00 2001 From: George <george.makhoul@kuwaitnet.com> Date: Wed, 3 Jul 2024 17:47:14 +0300 Subject: [PATCH] signature --- MiniScanner.xcodeproj/project.pbxproj | 114 +- .../xcschemes/xcschememanagement.plist | 2 +- .../xcshareddata/swiftpm/Package.resolved | 48 +- .../UserInterfaceState.xcuserstate | Bin 310739 -> 347220 bytes .../UIViewController+Extensions.swift | 84 +- MiniScanner/Helpers/Globals.swift | 7 +- MiniScanner/Managers/PDFManager.swift | 77 +- .../DocumentPreviewViewController.swift | 38 +- .../DocumentsTableViewCell.swift | 0 .../DocumentsTableViewCell.xib | 0 .../AllFolderTableViewCell.swift | 0 .../AllFolderTableViewCell.xib | 0 .../FolderCollectionViewCell.swift | 0 .../CustomCells/FolderCollectionViewCell.xib | 0 .../CustomTabBarView/CustomTabBarView.swift | 0 .../CustomTabBarView/CustomTabBarView.xib | 0 .../KNAlert/KNAlertViewController.swift | 0 .../KNAlert/KNAlertViewController.xib | 0 .../SearchFilesView/SearchFilesView.swift | 0 .../SearchFilesView/SearchFilesView.xib | 0 .../ShareSheet/ShareSheetViewController.swift | 0 .../ShareSheet/ShareSheetViewController.xib | 0 .../DocumentsTableViewController.swift | 21 +- .../Modules/Documents/{ => Model}/File.swift | 0 .../EditViewController.swift | 151 +- .../OCRViewController/OCRViewController.swift | 2 +- .../ClassicWalkthroughViewController.swift | 0 .../ClassicWalkthroughViewController.xib | 0 .../WalkthroughViewController.swift | 0 .../WalkthroughViewController.xib | 0 MiniScanner/Supporting Files/.DS_Store | Bin 10244 -> 14340 bytes .../Assets.xcassets/.DS_Store | Bin 6148 -> 10244 bytes .../Scan/ScannerViewController.swift | 90 +- Podfile | 7 - Podfile.lock | 20 +- .../Configuration/IQActiveConfiguration.swift | 203 --- .../IQBarButtonItemConfiguration.swift | 96 - .../IQKeyboardConfiguration.swift | 39 - .../IQRootControllerConfiguration.swift | 79 - .../IQScrollViewConfiguration.swift | 94 - .../IQToolbarConfiguration.swift | 75 - .../IQToolbarPlaceholderConfiguration.swift | 54 - .../IQKeyboardManagerConstants.swift | 151 -- .../IQKeyboardManager+Debug.swift | 71 - .../IQKeyboardManager+Deprecated.swift | 220 --- .../IQKeyboardManager+Internal.swift | 239 --- .../IQKeyboardManager+Position.swift | 718 -------- .../IQKeyboardManager+Toolbar.swift | 280 --- .../IQKeyboardManager+ToolbarActions.swift | 205 --- ...yboardManager+UIKeyboardNotification.swift | 148 -- ...dManager+UITextFieldViewNotification.swift | 46 - .../IQKeyboardManager/IQKeyboardManager.swift | 331 ---- .../IQKeyboardManagerCompatible.swift | 59 - .../IQTextView/IQPlaceholderable.swift | 39 - .../IQTextView/IQTextView.swift | 208 --- .../IQToolbar/IQBarButtonItem.swift | 120 -- .../IQToolbar/IQInvocation.swift | 42 - .../IQToolbar/IQPreviousNextView.swift | 29 - .../IQToolbar/IQTitleBarButtonItem.swift | 158 -- .../IQToolbar/IQToolbar.swift | 181 -- .../IQUIView+IQKeyboardToolbar.swift | 319 ---- ...IQUIView+IQKeyboardToolbarDeprecated.swift | 228 --- .../LIsteners/IQKeyboardListener.swift | 115 -- .../LIsteners/IQTextFieldViewListener.swift | 126 -- .../LIsteners/Info/IQKeyboardInfo.swift | 135 -- .../LIsteners/Info/IQTextFieldViewInfo.swift | 57 - .../PrivacyInfo.xcprivacy | 14 - ...rdReturnKeyHandler+TextFieldDelegate.swift | 154 -- ...ardReturnKeyHandler+TextViewDelegate.swift | 347 ---- .../IQKeyboardReturnKeyHandler.swift | 261 --- .../IQTextFieldViewInfoModel.swift | 56 - .../UIKitExtensions/IQNSArray+Sort.swift | 57 - .../IQUICollectionView+Additions.swift | 48 - .../IQUIScrollView+Additions.swift | 116 -- .../IQUITableView+Additions.swift | 48 - .../IQUITextFieldView+Additions.swift | 137 -- .../UIKitExtensions/IQUIView+Hierarchy.swift | 354 ---- .../IQUIViewController+Additions.swift | 48 - .../UIImage+NextPrevious.swift | 60 - Pods/IQKeyboardManagerSwift/LICENSE.md | 21 - Pods/IQKeyboardManagerSwift/README.md | 220 --- Pods/ImageViewer.swift/README.md | 141 -- .../ImageCarouselViewController.swift | 224 --- .../Sources/ImageViewer_swift/ImageItem.swift | 6 - .../ImageViewer_swift/ImageLoader.swift | 46 - .../ImageViewerController.swift | 295 --- .../ImageViewer_swift/ImageViewerOption.swift | 10 - .../ImageViewer_swift/ImageViewerTheme.swift | 24 - ...eViewerTransitionPresentationManager.swift | 222 --- .../ImageViewer_swift/ImageViewer_swift.h | 11 - .../SimpleImageDatasource.swift | 16 - .../UIImageView_Extensions.swift | 162 -- .../UINavigationBar_Extensions.swift | 19 - .../ImageViewer_swift/UIView_Extensions.swift | 20 - Pods/LanguageManager-iOS/LICENSE | 21 - .../Classes/Constants/DefaultsKeys.swift | 13 - .../Classes/Constants/Languages.swift | 26 - .../Classes/Constants/ViewDirection.swift | 12 - .../Helpers/Extensions/String+Localiz.swift | 27 - .../Extensions/UIButton+Direction.swift | 32 - .../Extensions/UIImageView+Direction.swift | 32 - .../Helpers/Extensions/UIView+Direction.swift | 44 - .../Helpers/Extensions/UIView+Swizzling.swift | 58 - .../Classes/Helpers/Storage.swift | 27 - .../Classes/Main/LanguageManager.swift | 215 --- Pods/LanguageManager-iOS/README.md | 105 -- Pods/Manifest.lock | 20 +- Pods/Pods.xcodeproj/project.pbxproj | 1582 ++--------------- ...nagerSwift-IQKeyboardManagerSwift.xcscheme | 58 - .../xcschemes/IQKeyboardManagerSwift.xcscheme | 58 - .../xcschemes/ImageViewer.swift.xcscheme | 58 - .../xcschemes/LanguageManager-iOS.xcscheme | 58 - .../Toast-Swift-Toast-Swift.xcscheme | 58 - .../xcschemes/Toast-Swift.xcscheme | 58 - .../xcschemes/xcschememanagement.plist | 46 +- .../IQKeyboardManagerSwift-Info.plist | 26 - .../IQKeyboardManagerSwift-dummy.m | 5 - .../IQKeyboardManagerSwift-prefix.pch | 12 - .../IQKeyboardManagerSwift-umbrella.h | 16 - .../IQKeyboardManagerSwift.debug.xcconfig | 15 - .../IQKeyboardManagerSwift.modulemap | 6 - .../IQKeyboardManagerSwift.release.xcconfig | 15 - ...gerSwift-IQKeyboardManagerSwift-Info.plist | 24 - .../ImageViewer.swift-Info.plist | 26 - .../ImageViewer.swift-dummy.m | 5 - .../ImageViewer.swift-prefix.pch | 12 - .../ImageViewer.swift-umbrella.h | 17 - .../ImageViewer.swift.debug.xcconfig | 14 - .../ImageViewer.swift.modulemap | 6 - .../ImageViewer.swift.release.xcconfig | 14 - .../LanguageManager-iOS-Info.plist | 26 - .../LanguageManager-iOS-dummy.m | 5 - .../LanguageManager-iOS-prefix.pch | 12 - .../LanguageManager-iOS-umbrella.h | 16 - .../LanguageManager-iOS.debug.xcconfig | 14 - .../LanguageManager-iOS.modulemap | 6 - .../LanguageManager-iOS.release.xcconfig | 14 - ...Pods-MiniScanner-acknowledgements.markdown | 86 - .../Pods-MiniScanner-acknowledgements.plist | 110 -- ...er-frameworks-Debug-input-files.xcfilelist | 6 +- ...r-frameworks-Debug-output-files.xcfilelist | 6 +- ...-frameworks-Release-input-files.xcfilelist | 6 +- ...frameworks-Release-output-files.xcfilelist | 6 +- .../Pods-MiniScanner-frameworks.sh | 8 - .../Pods-MiniScanner.debug.xcconfig | 8 +- .../Pods-MiniScanner.release.xcconfig | 8 +- ...eBundle-Toast-Swift-Toast-Swift-Info.plist | 24 - .../Toast-Swift/Toast-Swift-Info.plist | 26 - .../Toast-Swift/Toast-Swift-dummy.m | 5 - .../Toast-Swift/Toast-Swift-prefix.pch | 12 - .../Toast-Swift/Toast-Swift-umbrella.h | 16 - .../Toast-Swift/Toast-Swift.debug.xcconfig | 15 - .../Toast-Swift/Toast-Swift.modulemap | 6 - .../Toast-Swift/Toast-Swift.release.xcconfig | 15 - Pods/Toast-Swift/LICENSE | 20 - Pods/Toast-Swift/README.md | 143 -- .../Toast/Resources/PrivacyInfo.xcprivacy | 14 - Pods/Toast-Swift/Toast/Toast.swift | 797 --------- 158 files changed, 542 insertions(+), 12372 deletions(-) rename MiniScanner/Modules/Documents/{ => Customs}/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.swift (100%) rename MiniScanner/Modules/Documents/{ => Customs}/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.xib (100%) rename MiniScanner/Modules/Documents/{ => Customs}/CustomViews/AllFolderTableView/AllFolderTableViewCell.swift (100%) rename MiniScanner/Modules/Documents/{ => Customs}/CustomViews/AllFolderTableView/AllFolderTableViewCell.xib (100%) rename MiniScanner/Modules/Documents/{ => Customs}/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.swift (100%) rename MiniScanner/Modules/Documents/{ => Customs}/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.xib (100%) rename MiniScanner/Modules/Documents/{ => Customs}/CustomViews/CustomTabBarView/CustomTabBarView.swift (100%) rename MiniScanner/Modules/Documents/{ => Customs}/CustomViews/CustomTabBarView/CustomTabBarView.xib (100%) rename MiniScanner/Modules/Documents/{ => Customs}/CustomViews/KNAlert/KNAlertViewController.swift (100%) rename MiniScanner/Modules/Documents/{ => Customs}/CustomViews/KNAlert/KNAlertViewController.xib (100%) rename MiniScanner/Modules/Documents/{ => Customs}/CustomViews/SearchFilesView/SearchFilesView.swift (100%) rename MiniScanner/Modules/Documents/{ => Customs}/CustomViews/SearchFilesView/SearchFilesView.xib (100%) rename MiniScanner/Modules/Documents/{ => Customs}/CustomViews/ShareSheet/ShareSheetViewController.swift (100%) rename MiniScanner/Modules/Documents/{ => Customs}/CustomViews/ShareSheet/ShareSheetViewController.xib (100%) rename MiniScanner/Modules/Documents/{ => Model}/File.swift (100%) rename MiniScanner/Modules/Walktrough/{ => ClassicWalkthroughViewController}/ClassicWalkthroughViewController.swift (100%) rename MiniScanner/Modules/Walktrough/{ => ClassicWalkthroughViewController}/ClassicWalkthroughViewController.xib (100%) rename MiniScanner/Modules/Walktrough/{ => WalkthroughViewController}/WalkthroughViewController.swift (100%) rename MiniScanner/Modules/Walktrough/{ => WalkthroughViewController}/WalkthroughViewController.xib (100%) delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQActiveConfiguration.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQBarButtonItemConfiguration.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQKeyboardConfiguration.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQRootControllerConfiguration.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQScrollViewConfiguration.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarConfiguration.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarPlaceholderConfiguration.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Debug.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Deprecated.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Toolbar.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ToolbarActions.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UIKeyboardNotification.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UITextFieldViewNotification.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManagerCompatible/IQKeyboardManagerCompatible.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQPlaceholderable.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQTextView.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbarDeprecated.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQKeyboardListener.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQTextFieldViewListener.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQKeyboardInfo.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQTextFieldViewInfo.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/PrivacyInfo.xcprivacy delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextFieldDelegate.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextViewDelegate.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQTextFieldViewInfoModel.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQNSArray+Sort.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUICollectionView+Additions.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIScrollView+Additions.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITableView+Additions.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITextFieldView+Additions.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIView+Hierarchy.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIViewController+Additions.swift delete mode 100644 Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/UIImage+NextPrevious.swift delete mode 100644 Pods/IQKeyboardManagerSwift/LICENSE.md delete mode 100644 Pods/IQKeyboardManagerSwift/README.md delete mode 100644 Pods/ImageViewer.swift/README.md delete mode 100644 Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageCarouselViewController.swift delete mode 100644 Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageItem.swift delete mode 100644 Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageLoader.swift delete mode 100644 Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerController.swift delete mode 100644 Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerOption.swift delete mode 100644 Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerTheme.swift delete mode 100644 Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerTransitionPresentationManager.swift delete mode 100644 Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewer_swift.h delete mode 100644 Pods/ImageViewer.swift/Sources/ImageViewer_swift/SimpleImageDatasource.swift delete mode 100644 Pods/ImageViewer.swift/Sources/ImageViewer_swift/UIImageView_Extensions.swift delete mode 100644 Pods/ImageViewer.swift/Sources/ImageViewer_swift/UINavigationBar_Extensions.swift delete mode 100644 Pods/ImageViewer.swift/Sources/ImageViewer_swift/UIView_Extensions.swift delete mode 100644 Pods/LanguageManager-iOS/LICENSE delete mode 100644 Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/DefaultsKeys.swift delete mode 100644 Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/Languages.swift delete mode 100644 Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/ViewDirection.swift delete mode 100644 Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/String+Localiz.swift delete mode 100644 Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIButton+Direction.swift delete mode 100644 Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIImageView+Direction.swift delete mode 100644 Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Direction.swift delete mode 100644 Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Swizzling.swift delete mode 100644 Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Storage.swift delete mode 100755 Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Main/LanguageManager.swift delete mode 100644 Pods/LanguageManager-iOS/README.md delete mode 100644 Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/IQKeyboardManagerSwift-IQKeyboardManagerSwift.xcscheme delete mode 100644 Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/IQKeyboardManagerSwift.xcscheme delete mode 100644 Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/ImageViewer.swift.xcscheme delete mode 100644 Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/LanguageManager-iOS.xcscheme delete mode 100644 Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/Toast-Swift-Toast-Swift.xcscheme delete mode 100644 Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/Toast-Swift.xcscheme delete mode 100644 Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist delete mode 100644 Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-dummy.m delete mode 100644 Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch delete mode 100644 Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-umbrella.h delete mode 100644 Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.debug.xcconfig delete mode 100644 Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap delete mode 100644 Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.release.xcconfig delete mode 100644 Pods/Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist delete mode 100644 Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-Info.plist delete mode 100644 Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-dummy.m delete mode 100644 Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-prefix.pch delete mode 100644 Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-umbrella.h delete mode 100644 Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.debug.xcconfig delete mode 100644 Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.modulemap delete mode 100644 Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.release.xcconfig delete mode 100644 Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-Info.plist delete mode 100644 Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-dummy.m delete mode 100644 Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-prefix.pch delete mode 100644 Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-umbrella.h delete mode 100644 Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.debug.xcconfig delete mode 100644 Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.modulemap delete mode 100644 Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.release.xcconfig delete mode 100644 Pods/Target Support Files/Toast-Swift/ResourceBundle-Toast-Swift-Toast-Swift-Info.plist delete mode 100644 Pods/Target Support Files/Toast-Swift/Toast-Swift-Info.plist delete mode 100644 Pods/Target Support Files/Toast-Swift/Toast-Swift-dummy.m delete mode 100644 Pods/Target Support Files/Toast-Swift/Toast-Swift-prefix.pch delete mode 100644 Pods/Target Support Files/Toast-Swift/Toast-Swift-umbrella.h delete mode 100644 Pods/Target Support Files/Toast-Swift/Toast-Swift.debug.xcconfig delete mode 100644 Pods/Target Support Files/Toast-Swift/Toast-Swift.modulemap delete mode 100644 Pods/Target Support Files/Toast-Swift/Toast-Swift.release.xcconfig delete mode 100644 Pods/Toast-Swift/LICENSE delete mode 100644 Pods/Toast-Swift/README.md delete mode 100644 Pods/Toast-Swift/Toast/Resources/PrivacyInfo.xcprivacy delete mode 100644 Pods/Toast-Swift/Toast/Toast.swift diff --git a/MiniScanner.xcodeproj/project.pbxproj b/MiniScanner.xcodeproj/project.pbxproj index 5841e45..b452d23 100644 --- a/MiniScanner.xcodeproj/project.pbxproj +++ b/MiniScanner.xcodeproj/project.pbxproj @@ -125,6 +125,10 @@ 539D1C972C171344009DB24A /* LNExtensionExecutor in Frameworks */ = {isa = PBXBuildFile; productRef = 539D1C962C171344009DB24A /* LNExtensionExecutor */; }; 539D1C982C1713AC009DB24A /* LNExtensionExecutor in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 539D1C962C171344009DB24A /* LNExtensionExecutor */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 539EF14E2C2AA43B0041AE1F /* ara.traineddata in Resources */ = {isa = PBXBuildFile; fileRef = 539EF14D2C2AA43B0041AE1F /* ara.traineddata */; }; + 53A478812C358E100073E956 /* LanguageManager-iOS in Frameworks */ = {isa = PBXBuildFile; productRef = 53A478802C358E100073E956 /* LanguageManager-iOS */; }; + 53A478842C358E6E0073E956 /* IQKeyboardManagerSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 53A478832C358E6E0073E956 /* IQKeyboardManagerSwift */; }; + 53A478872C358F4A0073E956 /* Toast in Frameworks */ = {isa = PBXBuildFile; productRef = 53A478862C358F4A0073E956 /* Toast */; }; + 53A4788A2C358FFA0073E956 /* ImageViewer_swift in Frameworks */ = {isa = PBXBuildFile; productRef = 53A478892C358FFA0073E956 /* ImageViewer_swift */; }; 53BAE0ED2C15E0890072189E /* EditViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53BAE0EB2C15E0890072189E /* EditViewController.swift */; }; 53BAE0EE2C15E0890072189E /* EditViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 53BAE0EC2C15E0890072189E /* EditViewController.xib */; }; 53BEB1422C2967E0005A3567 /* FoldersViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53BEB1402C2967E0005A3567 /* FoldersViewController.swift */; }; @@ -447,8 +451,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 53A478872C358F4A0073E956 /* Toast in Frameworks */, + 53A478842C358E6E0073E956 /* IQKeyboardManagerSwift in Frameworks */, 539D1C972C171344009DB24A /* LNExtensionExecutor in Frameworks */, 539996542C2711BA00671340 /* ZLImageEditor in Frameworks */, + 53A4788A2C358FFA0073E956 /* ImageViewer_swift in Frameworks */, + 53A478812C358E100073E956 /* LanguageManager-iOS in Frameworks */, B827E5196CC419E773B843E1 /* Pods_MiniScanner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -737,6 +745,41 @@ path = ShareSheet; sourceTree = "<group>"; }; + 53A4787B2C358D070073E956 /* ClassicWalkthroughViewController */ = { + isa = PBXGroup; + children = ( + EC70253E254E1E7400BE1958 /* ClassicWalkthroughViewController.swift */, + EC70253D254E1E7400BE1958 /* ClassicWalkthroughViewController.xib */, + ); + path = ClassicWalkthroughViewController; + sourceTree = "<group>"; + }; + 53A4787C2C358D230073E956 /* WalkthroughViewController */ = { + isa = PBXGroup; + children = ( + EC70253C254E1E7400BE1958 /* WalkthroughViewController.swift */, + EC70253F254E1E7400BE1958 /* WalkthroughViewController.xib */, + ); + path = WalkthroughViewController; + sourceTree = "<group>"; + }; + 53A4787D2C358D460073E956 /* Model */ = { + isa = PBXGroup; + children = ( + EC8A9B1C254DCEC600F9AF99 /* File.swift */, + ); + path = Model; + sourceTree = "<group>"; + }; + 53A4787E2C358D5C0073E956 /* Customs */ = { + isa = PBXGroup; + children = ( + 5359841C2C14B816003EB6ED /* CustomViews */, + 53F21F862C12468900172BFC /* CustomCells */, + ); + path = Customs; + sourceTree = "<group>"; + }; 53AF29712C1098AC0046E9C1 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -951,10 +994,9 @@ EC8A9B06254DC2EE00F9AF99 /* Documents */ = { isa = PBXGroup; children = ( + 53A4787E2C358D5C0073E956 /* Customs */, + 53A4787D2C358D460073E956 /* Model */, 53BEB13F2C2967CC005A3567 /* FoldersViewController */, - 5359841C2C14B816003EB6ED /* CustomViews */, - 53F21F862C12468900172BFC /* CustomCells */, - EC8A9B1C254DCEC600F9AF99 /* File.swift */, EC0CF217254D8DF200888722 /* Documents.storyboard */, EC0CF214254D8DE900888722 /* DocumentsTableViewController.swift */, ); @@ -1044,10 +1086,8 @@ isa = PBXGroup; children = ( EC702545254E1E9E00BE1958 /* WalkthroughModel.swift */, - EC70253E254E1E7400BE1958 /* ClassicWalkthroughViewController.swift */, - EC70253D254E1E7400BE1958 /* ClassicWalkthroughViewController.xib */, - EC70253C254E1E7400BE1958 /* WalkthroughViewController.swift */, - EC70253F254E1E7400BE1958 /* WalkthroughViewController.xib */, + 53A4787B2C358D070073E956 /* ClassicWalkthroughViewController */, + 53A4787C2C358D230073E956 /* WalkthroughViewController */, ); path = Walktrough; sourceTree = "<group>"; @@ -1074,6 +1114,10 @@ packageProductDependencies = ( 539D1C962C171344009DB24A /* LNExtensionExecutor */, 539996532C2711BA00671340 /* ZLImageEditor */, + 53A478802C358E100073E956 /* LanguageManager-iOS */, + 53A478832C358E6E0073E956 /* IQKeyboardManagerSwift */, + 53A478862C358F4A0073E956 /* Toast */, + 53A478892C358FFA0073E956 /* ImageViewer_swift */, ); productName = MiniScanner; productReference = EC0CF1FA254D8BBF00888722 /* MiniScanner.app */; @@ -1113,6 +1157,10 @@ packageReferences = ( 539D1C952C171344009DB24A /* XCRemoteSwiftPackageReference "LNExtensionExecutor" */, 539996522C2711BA00671340 /* XCRemoteSwiftPackageReference "ZLImageEditor" */, + 53A4787F2C358E100073E956 /* XCRemoteSwiftPackageReference "LanguageManager-iOS" */, + 53A478822C358E6E0073E956 /* XCRemoteSwiftPackageReference "IQKeyboardManager" */, + 53A478852C358F4A0073E956 /* XCRemoteSwiftPackageReference "Toast-Swift" */, + 53A478882C358FFA0073E956 /* XCRemoteSwiftPackageReference "ImageViewer" */, ); productRefGroup = EC0CF1FB254D8BBF00888722 /* Products */; projectDirPath = ""; @@ -1619,6 +1667,38 @@ minimumVersion = 1.2.0; }; }; + 53A4787F2C358E100073E956 /* XCRemoteSwiftPackageReference "LanguageManager-iOS" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Abedalkareem/LanguageManager-iOS"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.2.9; + }; + }; + 53A478822C358E6E0073E956 /* XCRemoteSwiftPackageReference "IQKeyboardManager" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/hackiftekhar/IQKeyboardManager.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 7.0.3; + }; + }; + 53A478852C358F4A0073E956 /* XCRemoteSwiftPackageReference "Toast-Swift" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/scalessec/Toast-Swift"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.1.1; + }; + }; + 53A478882C358FFA0073E956 /* XCRemoteSwiftPackageReference "ImageViewer" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/michaelhenry/ImageViewer.swift"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 3.3.8; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -1632,6 +1712,26 @@ package = 539D1C952C171344009DB24A /* XCRemoteSwiftPackageReference "LNExtensionExecutor" */; productName = LNExtensionExecutor; }; + 53A478802C358E100073E956 /* LanguageManager-iOS */ = { + isa = XCSwiftPackageProductDependency; + package = 53A4787F2C358E100073E956 /* XCRemoteSwiftPackageReference "LanguageManager-iOS" */; + productName = "LanguageManager-iOS"; + }; + 53A478832C358E6E0073E956 /* IQKeyboardManagerSwift */ = { + isa = XCSwiftPackageProductDependency; + package = 53A478822C358E6E0073E956 /* XCRemoteSwiftPackageReference "IQKeyboardManager" */; + productName = IQKeyboardManagerSwift; + }; + 53A478862C358F4A0073E956 /* Toast */ = { + isa = XCSwiftPackageProductDependency; + package = 53A478852C358F4A0073E956 /* XCRemoteSwiftPackageReference "Toast-Swift" */; + productName = Toast; + }; + 53A478892C358FFA0073E956 /* ImageViewer_swift */ = { + isa = XCSwiftPackageProductDependency; + package = 53A478882C358FFA0073E956 /* XCRemoteSwiftPackageReference "ImageViewer" */; + productName = ImageViewer_swift; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = EC0CF1F2254D8BBF00888722 /* Project object */; diff --git a/MiniScanner.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist b/MiniScanner.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist index 9f3ce57..fcb799c 100644 --- a/MiniScanner.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/MiniScanner.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ <key>MiniScanner.xcscheme_^#shared#^_</key> <dict> <key>orderHint</key> - <integer>9</integer> + <integer>3</integer> </dict> </dict> </dict> diff --git a/MiniScanner.xcworkspace/xcshareddata/swiftpm/Package.resolved b/MiniScanner.xcworkspace/xcshareddata/swiftpm/Package.resolved index b5b850f..d5cf7e7 100644 --- a/MiniScanner.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/MiniScanner.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,33 @@ { + "originHash" : "174e2433b4ce7e1515d76317ce11975dbcddc241481d6428646b200fb9578ee5", "pins" : [ + { + "identity" : "imageviewer.swift", + "kind" : "remoteSourceControl", + "location" : "https://github.com/michaelhenry/ImageViewer.swift", + "state" : { + "revision" : "3274b5f549b9e4cc8ab9f3e9734ee9fc6109e8e8", + "version" : "3.3.8" + } + }, + { + "identity" : "iqkeyboardmanager", + "kind" : "remoteSourceControl", + "location" : "https://github.com/hackiftekhar/IQKeyboardManager.git", + "state" : { + "revision" : "19e111f9246b3407fe0c334dc78fa890c40d8c67", + "version" : "7.0.3" + } + }, + { + "identity" : "languagemanager-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/Abedalkareem/LanguageManager-iOS", + "state" : { + "revision" : "d948455d6820b65019bc3935eb9b4aff440096b0", + "version" : "1.2.9" + } + }, { "identity" : "lnextensionexecutor", "kind" : "remoteSourceControl", @@ -9,6 +37,24 @@ "version" : "1.2.0" } }, + { + "identity" : "sdwebimage", + "kind" : "remoteSourceControl", + "location" : "https://github.com/SDWebImage/SDWebImage", + "state" : { + "revision" : "be0bcd7823ce56629948491f2eaeaa19979514f7", + "version" : "5.19.4" + } + }, + { + "identity" : "toast-swift", + "kind" : "remoteSourceControl", + "location" : "https://github.com/scalessec/Toast-Swift", + "state" : { + "revision" : "ddccd20d6fb718448d9b179c454c561653fda7d5", + "version" : "5.1.1" + } + }, { "identity" : "zlimageeditor", "kind" : "remoteSourceControl", @@ -19,5 +65,5 @@ } } ], - "version" : 2 + "version" : 3 } diff --git a/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate b/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate index ba4ea40d1ef3e9196bf7c5d65ef8f809a33f8580..7305b6b567fe33d2551efbbdb1d2286b354ffa56 100644 GIT binary patch literal 347220 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%0A)N%$Usg(>& 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 FEdb$5?R@|M literal 310739 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⪙-RaG#IG%+wTHb}BGGJxnfz<6t+)4@jJBMo)eoQ^mhbvnkt?{wVh1j7ZV zQw$fJ&N!WQIu|b>09!^5JK81=F;)S(04ZKT6x4hH@7fN^&j)Q)OofOGxa8+1X67N3 zgSKIV?l$sIgPDntYhY*;J_aH#GzuSW6h0p>U<hwLp#+N_WcN&Fex7SyS!Pjw9_aWN zh)oc0U1YRb;&jRBveOl(tBu0P8--6b3ZH2dKHCs=+3AMUO$L6aTUuY7?nEK%4h7%1 z)F^zSk>^FD@X2@qHFJgFOwejv@OA{3#F9kF8a&8(O`vq4kyv7-2_A5Ay6^NLUO)!4 zg&lO%4|sSf7<{-9*wlc;%%Vk34?%-Wc-6q%_E@CW=}x2Y=|;B1M&XkYAsL{ES1^Q1 zGx##-JKbpzZHQ?UJ_!|bdIJ(`6g~$Qj2Do%NdfKURw#ySzyu%Ih?ErUgzNu90L1y9 zoIb}3Xn;>;0_`q`CO*Va8R~w+MNVHpULjh2ya2)e(RZg`3`UEbemMPX6u#Ujd}Wc- zZ}v@%!dDxa0zoZ0$->gqqRN0o&=~|JsYRd@k)X$R#X>d+2PBr1q!#5tO8{p^XEp|- zCC*IF%+4&%tc}9g8ilVn3g2iHzPZGi-I>Fg)0wML_*SFv?MC4{jly?9R)|4&RA%O- z2Pfwjq&jEh=NE&v!pnfROS&c&SBB(6@^wjSAjmb~W9_2B4g(!+l%E$bAOz+G7o;X< zre#9TfD&Mc7XTG1PKhPS8KAyQNNPn1Sbs=bW?sq_XAx&nXE6qTXK{uL&XUejkzgZ2 zQj2n<K*y=1fZY-W76e<^D0~l;K^`^=Kf27o?=0gi>n!Ii&*&0Tl3Gy`QIcAe3mR=~ z6n@Ysd>?wkrn6FmY`j2(0u(@wjq)!76~^H0qmX66dc`G)MJ14<sE{N<`_Dngrzun` zXkh5nRLIQZ0;eEn6=zj6k3u||T9muUSq+q2P(lGNiKYo2IuKJeowXn(Bs}=Q8c{-c zk+U|)cu+ZtM-?n(=sFvLQih(hzO#X|VWaSqM&YN8!p|CopD%H|;cVh;3LQ9l(J1_K za10zd+c`Thh%I!sZxnvD(Alw3_%)%Hi?gfaUT1g0EtfacZ@GxbvU0dy!QXO`pvu6J zvzK!KgV9oFZ)YE8UuQpO|3=|=jl%C6g+DY3e{2-~wA48eG;rh`;vCv2{24NE^rcbw zD=4pvB*RWxN0k4?@!<18eDc#FHBCu=5x8IOR0*!yK@9+8xgex1`QQo|tV#)TLmu1& zr12?)B4O~JT2R{pv0ootYdOb)4~ao9E{)B>!%0SlwY3msiC|^Q4kZfUkc1`eROfUC zqlM0Cjlw?`I%hNr{{(qev9vg~C;)b_A@m^mN>|t}R8Qzhf6h6Kx0XBSI_Ej(I~O<? zIu|(?Hwyo16#m^P{HIa)Z=>+PM&bXBA`A_6@d5_WIvLddN=r;m1s}SWS_B#>fgdvh zvq%qgkX5{ZIVoD4^Yii`dz6dg1<Xj%=?FhhEMCBb6pfH%06M-+1F8*jgb1d80!uTK zvq2>$@_03NuY*>F#S2)&4MZRR!89C2g-?Due8L14#dXdNpeU|y6k%S-pbcrVN`o4N z#h?~3G_`?dxgh69z>eu~ZguWpFk0l?=G@*W!rCapwg{9pKzRa`L`2~R_@pLgr>4Lf z+wu`Xa2aR|8+6bQyrBnkRKN3V2BX!^6PzbHPja5@JjHpc^EBt_&NG~6I?rkp;b;`$ zY!u;Y6ya_Z;b|1%Z4}{a6ya|a5oi<<Y!ne%?L3D;-+7+%eCGwu3!N7^FLqwyywrJq zqlj=rOrwZMqljpuh*+bDc%!Ijqo{nNsCJ{MPNRq@$lVIC7Bgu7JLF`W;DVgY5@?eP zbZMrRQ)*g%Q7Wikl30{koDUiVPK^iM<pK>Wh*n6ygWnG_%$J#;2R>aY3RzMC$^k8< zD#%F%TNF@~2|9z&C$TcWv?N|Y6ru!l5)N1zoa2k*1(XXQ>R{5zpcC{`P@7co0)pT+ zetK#VST86J;{_C4QqvMkb4mh0XY>`9q~?{N>MD*G5cULhu)wOo27qjj^G&SC%+0Jy zO#wUMGVJCwMi<a!Jt|TD1*v(Sc_E2O#h})S5Y+uXsc9u4`9YcK8IY4mop&<cTI9UT zd3U3TM5D-M_?d~$`<#z57%g+&?|i`dpz|T;!_G$<MI;+Vq#8w}8%1OqMPwUA<d!)f zb3X2T!ugo<DW>C%BJzzQ3XLKg!Hi3wP9sX#3PM5#vh5k{<ahyLh?qwv=uD|faPP7> z79s|UEkk4NXiyW}J2Ni@T=L2WgRbRC0VUXg(wv;2)WXu#;u6r-^3=SNVgY7YV!i5o z1C$f4IbUxSQEU`ZTI76_<x``Gaw8-77A+xAs5llwtp(Xo3|fl@n*&Hp0w*p=F?^rV zW{L9y=ZDUZoF6xes5FZBH;NQBicD;Xy5aoH`ML88=a&rp&aa$bJHK&$>-^67z4Hg> zkItX?|2uz)7m!TJhulsJNp#Q_H|R{lcmYMwvAm!T2dF8hR}Ah)phkSW0Dm#~j4k*H zd+`F&dEn#=H3?n4Ac`!=9^|WR;{~K)?m<)y@Y<<SM6*%EqEW=EQAD*-#II4r7j#IO zh$Tvg(fOP6cjq5YXPkdA=r@WOH;Sk?ikLPEUuYCjYlw*#(1#a;C?1CN*$^Ym@S%K2 z5dUMeS?2uTg~5f<g~^54g{4tMqftbwQADRvM6XfApi#sS-l21T3+m8;oC@u~NrN_; z=B0wK8Uhtxpd(IFi}Z>?H_%*$bOK#?q&7L-X%x{04{DqQZ%u_s3370Oq;wmZ(i(+N zqO3lIDG?L<3{s-s$gTnIF=FfhhbqL@VRMlOci2RXz#TT^gFP;Tt_!ja5MpsrWw_AD zTG}XL(!c<24!dZ$XktJ2eUXb6s11zmp503f{4P2!x-NQApo2vqozg}T^F|S~cmZpD zP*F(UwN?-p8M+unLk|1__xBgM7&F8n3&aZu7nCODWF|wxT^G`YhTXyhn=OFkYuI>z zUO;MkVsU9PtTs$Zg=StCa~CHDqg5^zE|xA<F4itKF19XqF7_@CE{=^N){P=IjUu*< zB6f`;_KhMAjUtYXB2JAW&W$22t6ZEx6&}-Z7kB30%6?48UA!5z8%12fHQ@P15%)$$ zvqr81ptIJzA(g5W!g7e?^dN`gWP-YRGMJJX`Q@PQb#7uoynrHBY0$~O&Y)AF6Vp@U z1>~`+@ysjB1fPuunmEHykpr%0;Q13&vtX!!oa6&8L-q30(uz|{u(~H1lo=qZK<i@S z1+aU`v9u&3zX)`K42DIZJGVePRWtL_;{`B7tGp<&z$Y^gdSQ_Z=$cEHs74XDhA42x zc8O)QS)!b*oT8kpoYu&-qmgSTnA`<F<<KR?C5=IBp-XC`h{r;g^hOa+P_IYIB{ioc z5fUSiY6~75ur!kGlE)yni0O+<Zo`#E5wAszrpo0Fk&RsY8?@tKWgO&AZJ3S{mvRQN zMa&E?WeqnQMSSq+h!>DdPc3nVi~|PcLr!0E1RY_h0T~B!sdK517ZCAuafP@MsUBJ6 z(g4b$SmiM43zsJ6cP=e1t<E1^+WEgYe`yp62A9BbjUoZy61Wg_KqOiT?9%PhgD8Px z8$|+<N?=H^PhzxL<}%r3ipx}&X)e=UW;BWfHHw5Zii9<aL^O&-HHt*T%Tt#oNC6cL zE}-HC1f0NE+<_V<kh}~n+*}qw)P;i8A@6^MDOk!r9aKz)gH8$s4Xj}~bqA(&mCO^6 z(#S>*&=?%-h$E;h)?#!s#P%47?VvmeE%u?ssNh*hF&YmpMqyFD$K^PvAld7(&t<>M z0hfa=hg=T39C117a;#A#zELEhQ6#ZZB&ks(xltsgQ6#ldB&|^-y-_4%mCFfeL2^dH zTET|txXT4lL6Qk8NU|F_?=^DX2NfjwqXkJyW=VdLUU5c#In@f1dyF;<UG6uEWWfrO zM~pU06ap23K)8|fdL!oz2#F|2Ub?&n6(p}3MRFFpylE84C9)v-;PRP4Y>~@HrZ0^m zc@0+<DWou(Hgeu=h{Rct{B-#PDM)^U3X+0FjHU`H4Ur%{=tWOta!zVuQK+YeCPvnG zWp;k&%IeDI{Lz&|Kn#@i%fMN`wo#-Qob@Mwj)z6d`mQ{#yojt{(<oAcp7mXY8Euxj zinxlpin)rrN;Ha;Hj0!tic~a;R5prK!E?PUGo(dS25Aw+3rK(pGEk<+)r3OL-O#M+ zf|`+`qS!L9s}3XsSL4dSLPd}aybw79yPCQ>Fc__JHFGt0wQ#j`wQ{v~wQ;p|wR5#^ z6sc<zsc#f%XcTE|6lrP{X>Js0X%uN~6lrS|X<y~)2+6>%t}L#a`<RZqdV(@=2P^}3 zH8T1)^2`8b;J(oeO#KY(8qR35&^4k_q!XHfU85OomPnT>1c7iPM-3<ggGqP>c1?0k zVGvvBn%pSTz0ftaQKW~s4D6cen!_Nr$TbU;fqNUSEYf_+Xxhj#9d`zHEpjadXJFS7 zPzLT_#AvGdv>_6t2R#GF3kZR3_Xy9-$#E<wNKGu#h_}L$musBgxz@SXJAZU-<i7>V z%TvL5d2XY~Bye8d(8#LQh@O{QUE2_Oc}}CqWQ@Gr!)UY2wb!-JwcmAu>qOT{jUrPT zMW!{1Om7sK(I_&rQDhb(L)Sn$DN|vc6j_WRe$Z$Z{*Dne|GJ>|iD06r-5{ta*1Wz7 zlGkVB%IkvOki4#qlGiu8?gQoZEv{Q#x4CY2-Ql{^b(iaI*FCO#8%5?dip*~mS<oo5 zuu)`DqsZb$ktK~HOB+R&HHs`><+>l5*AKIKNW5Y??s^=Q*H^&u`l?38SB>mDKzV)L zXkMp5UcU;;>(?4ZR>Jc7O-7p~>|ezyK)8`9r;+U&ghb@^2d<AmdHrFd$m)fzj~hkS z5SiDXyS@VD^%tPLzP91YB1r*8(?<5~c=GxOS5WoN%;5S7l-JiUVl<T$Xov*q!OZKb z_~*tn$}>wcKr_L74E(OY7;i0f{oN?CsiE$Y>pup5*Z*z|@d6UbkWK@rHq9?W>J~JL zY;F{}h}jCLaen8<;>PNXR&wlX6xo8a<Z$D5<3W@hdmBZzqL&<QLX0-c+=Sgk+(g~P z+{E1^8b!7>ifnHb+0iJnvr%MMqsVStB?mNLqYatBL@6v8-1H$O!yb}K1~&^gX9lBH zZkBFVZq{x#ZnkcAZuV{tZjNqFjUxLSMGiEI9BdRh)F^VeQRGOY$k9fTV~rxm8%0j6 za&v){3~nBflEKXfR5F}|l?<m5CBymAl7adqgIg4%%|f^6Mv+s{lEE#GP|4ty>XyzR zw$LrDQRK`*w~R)Sv&5AQZaHrG;PC*rJkWT+IXw9s+BtM9b*lik0^G_$CBp?gI>2LK zZgp<;kXdY$%ncs0UgQSu^n<3pF(pCk%S%#oK||Q_5LuWDn%%mH7-669*5lUeJRdT` zF4`z^rBUQ1c)kQY!VWWQvfDHUqeX60+@>~)Tx}G&w#aQdXn^*5LkwsRg@o~Lx4EE5 zo7X6E1Iqxn+d{WR3>Vy%IDd3o$Wi9DqEX~dqsa3HhDMQ_;Nt2|BU5{$$P1JaW4Bdq zs}aT3vqq6y7{%2_Mw{hso7^_LZE@S`w#{w3+m1$&+l?Z38%6Fniacl(dDJNKxKZQ@ zyv%Z22pMa*0~>1)K|fJduOc%ET4=c)fGEBPQ;c!^DpaA%0*Jy;h(f5S+ewyBpuviV zjf@qI!Y3nP!<WTSdE)y(Zr32C-&0(rAIDN~yNIa++%Ae2&`QqF)k_3j7pn(e1&1^X zYpmy-pPZi<l3$vfp%>xlgqW^{&1jaS79pwEgQPr|<3U=$Lq%>68E-9gd(<fM3R;i3 zJ#}Mf6nTxUvI0fE+bg%%sFB|&^1V^y4er?g==KQ_``;Qx-eSc54^Zs?bo=G@+wG6r zU$=j5{~JZ#HHy4%6#397^086mQ=`b|Mv*VLVjmh0XweK6B`Qu~YKiX6x=TS~@+)yM z3C*MK%I>-hMl0P_+*RGx+|}JR+%?^`+_l|x8by9Iiu`O8`PC@$yHVs%qsZSzk$;UM z{~JXaR=VrC>$@Ac8#0=@8@rphn=&156lH7_<!cn>ZxjW!WJCoUMTHtgg+bG8@dEsi z1q+~_d_jIuNpVzEetxc7BIrtxcmWm2bg`#PNIvKm2JgK5@;v9nyt2e%*qQLYpn+{c z$b@TVeqKOPepzM;Xmyk%L@YJMH#IjYwFoki4q7k-TH*;Z%n@|8Y+hnXD#F5O=Ty+z zfdJ4w81Vw)pcI&z5|UrwlUkOV12xA5H17uKsyHPUL1$~hDbwAF(Po*uv%8DCtGk=K zySqoDC{v>-OQR@TqbNtCC|9E>PeasYP9+9@PGxs*PF0rgjiStrOgrKQ!m6uvjSY?U zEDbD;P0bC=%nS^SO-#Z2b}Wqa%q)$~42;bzObv_;OhEg1jLZ!63{1?8ER2jTjE&6= zEG%>s3=J%d^bAZ4EG<k;%q<PfL5nhAcKJi>Vg=h3Labf5Y%({u)H5<NGc-20G&C_b zGqg0Xt%cbX46%tFY*Q#6o6Pkr4NXi<ERBtg%q%T%S!HNwV5nziXlZI}Xl80|VPtBE zuqqs46(_Z<GBP&OGc++aG&iy^u{1R_FhN)q4Y7(FY!$xnBhFWr#^!p4rk3U=#^$DG z#s-E+HpN41;sx7;CHxEx%pj?P2%C&`6b!L=O4<HJi{qCm37)V#p5mSg*{B6t6zznx zI~Xyrrfh!!yr736UO=l_*U-XP&)CA$+|bm*+{D<>!oW~RLD$s8P|wWV*wE0x5)`i{ z#+J2^Op(oKv(P=KQB<TMDk{^@KsU!&H?_bCrM`79a4&?HxT126qGISJu6sEsYgM>c zx>vbZyVtnaHj0Wjib^z!N;Zm0HHu0%ipszXTUXS91z1suI-?2`rLcS8J_TH?ipt_D zR<RBoxX*Q;&tSCBeO{xe!b0~2jiQR67LTAySO|QH1$crV5`aq>Z!L0P>b|T|RH;!^ z1HRh9eWm+a2C>ENtK3(+uW1xjZWL8%6jfd9zK%iLeM6(DTEp!|QS}DxSeLL6MA;Vu z;vw#q5^xC%0TsNyiRpQnC8a5;k?;v3Wrxle;5dgRlO67Ruvxd4LEC+Qqo^jxIxSGk z7qoW}yx=1}6?~_YvO^5YwXg0++>b)i8_eVr?q?Z{mbjmEKjnVf{Y;~%ZlkDPqo{tP zsKFBVbMEKar@LQl6g6xVH3PMBMC}`-B0wubK<<tNFA4#%q9BuQpcNR9CNDfB!EOO9 zK7m<x!~HJEx|{B|+;6+zX%sbT6g6%XHE9$zUBaNvpwDOuUcVI65DDpENrSIaP0C3H zAAAd1#!(!USRR&`1Ky4&g(?eOjsad98!w=MA_;P4a6V`yYjJW>W<d#f{!$D@3D|Vd z+6tIkU$}o{Fk0dM(*2eDYxg(qZ{6Ryzjy!8C~Dp)YSAca*(hq&C~Dm(YSSoc+bC+c z0@8N`-K7R$LAs3%po`SbgV|D$Ye3<P8B(0{^NRCxQbFP4lbKYMSX2q!V+x*wjR)VV zhE+A_0=wdp#M}Z@^;)2fsjyv-$fgH)x`cSTpeokErPw#MBrzqiBoS3PXjwOQw^SCS zqACSl28UH?aA{I8`1(v#_4>G65>S+%oLXEAT9$&U1E<?z3k;E!L!;A!#e<E(XrTvd zqo~6|5B5e;M?Cr7gPZZzA`c!9-bPWUMp0LIzV{ID5W$iWJwzF_J;WPDok1DVr9m5> zN0c3^A0TIB4;c>yZ2A=$v^|s?McqL9-5azKSxecWtpscU0|NsG0|SF30|SE+0|SE& z0|SF00|SE<0|SFS0|P@K0|P@C0|P@00|P@G1B2El1_rGk3=G<=3=G=53=G;53=G=x z3=G;T3=G<83=G;D3=G=33=G=(3=G;v3=G;P3=G=d3=G;u3=G=!3=G=S7#Or?FfeG( zVqnmo!@!_DkAXpZ0Rw~fA_fNSB@7JO%NQ86S1>SWuVP@(Uc<nkeVBnk`zQm0_HhOV z?Nba4+GiOUw9hjzXkTJr(7wvRpnZdZLHia1gZ5np2JHt74BC$v7_`4JFz5&~Fz6^S zFzA>wFzEO(Fz7TgFz8HXV9?pXz@T%9fkEd91B1?g1_oUo1_oVW1_oVG1_oVm1_oV8 z1_oUP1_oUv1_oUf1_oU<1_oUX1_oVE1_s?m1_s?#3=F#485nf;Ffi!uV_?udz`&q; zlz~C_I0J+3Nd^Yp(+mu{*BKaepE5A$zGGm}{l>tc`=5b9kCA~vkBfmpPn3Z{PmX~> zPnCf|Pm6&;&zONh&xV0P&y|5e&z*rmFMxqTFO7jgFPDKquZn>|ubqKGuZw{}uZMv_ zub+WIZz2PO-ed*_y*UgFddnCX^j0u1=sjm((EGr^pwGm>pwG#`pfAM0pfAtBps&Ng zps&Zkpl`sypl`&$pl`y!pl`;&pl`vzpzq4SpzqGWpzq1RpzqDVpzq7TpzqJXpdZM< zpdZY@pg)0uLH|4hg8>f%gMlXlgTW#O27|K<3<lR27!2++Fc>^!U@&;az+mv1fx+M_ z1B1ao1_ncR1_nb;1_nbR1_ncE1_nb}1_nbl1_ncY1_nbz1_nbb1_ncC1_nb{1_nbv z1_r}m1_r|f1_r}&1_r}Q1_r}w1_r}g1_r}=1_r}M1_r}s1_r}c1_r}+1_r}U1_r}! z1_r}k2G9w6pmX6E3|BBP7_MSqFkHjHV7Q)v!Eh4;gW*;N2E!c;42HWI7!3C@Fc=<W zU@$z)z+m``fx$?Ofx*aufx)Pjfx&141B1~k1_om(1_on41_t8_1_t9z3=GD185oQ~ z;vX3pj6X9l7=LA8F#gWKVEm7P!GwW<!Gwu{!Gwi@!Gw*0!9<vW!9<#Y!9<;b!9<gR z!9<&Z!9<sV!6co5!K8qJ!K93V!K9jj!K8zM!K90U!K8<Q!K9CY!Q=!3gUM9}29xUy z3??@j7))+6Fqn!mFqkSaFqkScFqo<^Fqo<_Fqj%MFqoP!FqoP$FqoP%Fqpb9FqpbB zFqpbAFqnEUFqnoiFqmdAFqmdBFqq~rFqq~sFqjrFFqjrGFqoDwFqoDxFql>_Fql>` zFqrl-Fqrl;FqlqcU@)D`z+gI+fx&b-1B2;I1_smF3=F1o85m6GGccGgWMD8|$G~8^ zfq}tv69a?k76t}0BL)UDdj<wGM+OEnX9fl{R|W>NlMD=I*BBVgZZI&I-C|%cyTia> zp3J~tUckU$Uc|s)Uc$g&UdF&+{*!^hf{lT}f`fs<f{TH{f`@^@Vj=^B#XJTEiv<h} z7K<1dES4}ZSV}T5SgJ8FSZXjZSZXmaSn4n^Sgv7Uu-wVOV7Z%t!E!GHgXMk(1}hf^ z2CF~@2CHBO2CGm82CHxe2CKUa3|6lg7_8niFj#$LV6ghkz+m-*fx+q*1B2Bc1_rBt z3=Gy%3=Gy93=GzW3=Gyr3=GyL3=Gz`3=Gz;3=Gy@3=G!63=Gy`3=Gy03=Gy$3=GyW z3=Gzp3=GzJ3=Gx<3=Gyq3=G!g3=Gzl3=G!Q3=Gz_3=GyY85pdWGcZ_hU|_J`%)ns1 zm4U%}I|GCD5e5e9lMD>jrx_Tm&oVGrUt(aezQVv@eT{*^`UV4o^+N^*>n98h*3TFi ztY0uNSbt?;u>QrsVEu=I!TKKqgAFqSgAFSKgAF?agAFGGgN+aagN-NygN--?gN-Bu zgN+&kgN-%=gN-f&gN;4|gN+FTgN+#jgN+3PgN+pfgN-u-gN+*lgN+9RgN+vhgH1RC zgG~$rgH0R*gG~YhgH0*}gH1XEgH0v_gH1LAgG~togH1UDgH0s^gH1I9gG~nmgH103 zgH1mJgUv(+2AgRN3^p?u7;I)SFxbptV6a)rz+kh2fx%`K1B1;P1_qm*3=B5=7#M60 zFfiC0Vqma2&cI-El7YeIGy{XpSq281YYYrFHyIdgZZk00++|>}dBwnB^PYjh<|6}x z&1VJ%n;#4eHoq7cZ2mAX*!*K)uw`dpu;pT4u;pQ3u;pW5u$5+DuvKATuvKGVu+?B- zu+?H<u+?E;ur+01ur+63u(f1hu(f7ju(f4iu(fAku=QbJu=QhLunk~funl5huzk(I zVEcoC!S)vegY6#%2HSrO40hcN40baZ80=;-FxbsuV6dCVz+lhIz+f-Mz+f-Kz+f-O zz+kVyz+k_Qfx&(^1B3k`1_t{h3=H<i7#QqNFfiDkXJD|u$iQHKnSsInDg%T4bp{6e z9}El*k_-$EHVh07t_%zg9t;c)UJMKlJ`4;Fp$rTTVGIlo5ey6ti3|)51q=)h<qQlC z4Gatpy$lQvQy3T=W-%~0Y++z<ILN@@aDsus;S>Xd!x;t!hjR=J4p$i%9Ii7kINW4l zaJbFD;Bc3L!QmMLgTqS(28Y)S3=VG@7#zMaFgSc?U~u@!z~Cs%z~HFBz~HFPz~HFK zz~HFOz~HFMz~E@Yz~E@cz~E@Xz~E@bz~E@Zz~C6mz~ETNz~H!$fx&SV1B2sQ1_sCV z3=EDN85kV*FfceCWngeT#lYZrhJnHH90P;n1qKGkn+yz&w-^{4?=UbpK4oBVe8Irr z_=<tS@eKom6FUQglL!NYlQaW^lPm*+lRN{1lOh9ylLiBWlNJMmlMVxelO6+ulK}&R zQy>F_Qwalu(^Liqrwt4YPCFSGoc1s<IPGI#a5})i;B=CK!RZtOgVPxX2B(`049+YJ z49;u}49*-349;8(49+|Z49<KE49)@!49-Ff49+4949;Q<49*e^49-#v49+qP49;>4 z49*G+49-dn49+SH49;o{49*%149;2%49+?X49?*U49<}Z49?LE49>9(49*D*49>|6 z49;l`49=Mh49+<W49@us49-Oi49=wt49*n{49?XI49;~749<-V49+bK49@Kg49;B) z49>j_49*i67@Q|DFgVX=U~pc@z~H=?fx&qx1B16Z1B15-1B1621B15(1B15}1B3Tg z1_tj#3=G~!7#O^dF)(<aU|<N&VPFWZWMBxcW?%@eWnc)dXJCkY%D@o$iGd;V3j;&s zHwK2t9}EmpMGOp4^$ZMAjSLJ?%?u1ttqcqaP7DkQ{tOHWfeZ`@!3+!up$rVkvltkX zmoqRVuVi3IUd_Oeyq19>MT3DM#gu^|#hig5#gc&`#hQU3Wg7!S%3%hEl%os`DaRQY zQcf~3q_;3Iq)%jENT1BWkUo`xA$>XnL-te#hU`TQ4B1N<7_yf!Fl4V_U?{X>U?}uv zU?}uuU?}uwU?>b^U?|mRU?{a=U?{a?U?_E9U?_EBV5m93z)*9RfuZI+14GS428No; z3=A#F3=Ay=3=Azr3=AzL3=A!03=Hjz3=Hjj3=Hi83=Hi;3=Hie3=Exu3=Exe3=EwL z3=Ex03=Ewr3=IA67#RA0Gcff3Wnk$4&%iK&k%3`aCIiE?G6sfe6$}j1su&oi)i5wj z`^La9otc4Qx&#BmbSVag=`suq)8!Z#rYkToOjlxHn6ARWFkOv-VY&tb!*neMhUq#C z4AUJM7^XWjFidx4V3_XCz%bpDfnmBg1H*J*28QYW3=Go)85pJqGcZgKWnh>d&cHCe zgn?oDWCn)m+Zh<9-(+Bz{+EGahB5=g40i^G8EFg*Gg=uKW-MZ0n6a9HVa7TJh8Y_e z7-no@V3@I+fnmlG28J2O7#L=pU|^VWih*Iq83u+K=NK4fTx4LFahZW(##IJ}8P^yX zW;|wKnDLB(Va5vvh8eFJ7-qa>V3_fqfng>O1H(*728Nk(3=A_B7#L<MF)++jXJDAA z$-ppEn}K1bE(60%8wQ4%9t;dKy%`v0hA=S93};}NnZm#@Gn0W~W;O%E%v=VBnMDi? zGfNm4W|lE9%&cHwm|4fbFte9|VP+o#!_3(X3^O+{FwES<z%X+Q1H;U13=A`OFfh#A z#lSFg4+F!@eGCjU4=^yyJjB2-^9TdO%$p1hGjB66%)HCMF!MeG!_0>a3^N}yFwA_) zz%cVU1H;Uh3=A`0Gce42%fK-6Jp;om9tMV4+6)Y{{23T#6*4f)n##a1Yc~VKtosZM zv;HwK%$8+fm~F+tFx#1dVYV9s!)y-*hS^>W46}n77-q*XFwBl)V3?i2z%V<BfnjzE z1H<ez28P)g3=FeN85m|)Ffh!nVqlnE%fK+Zo`GR@BLl<ic?=A*S2Hlo-oU^xdlLi0 z>@5rovv)Eu%-+qwFnccp!|eSG471NMFwDNlz%ct31H<g+3=Fg1Ffh!1$G|ZA0|UeC zuM7;czcVn*{>i{F`!@r_94-ciIpPcqb95LO=IAjn%rRhKm}A7iFvo;}VU8IC!yF3+ zhB;OY40CK480Oe9FwAjaV3-riz%VDAfniQ01H+tX28KDY3=DG;7#QXxGce3aV_=w* z!N4#ln}K0YE(61yd<KR&Jq!$URx>cnInTf_=OY8dTu}ywxz-E}bK@Bp=GHMV%$>`? zFn1RN!`#CR40De$Fw8x{z%cg|1H;_Q3=DJcFfh!$$G|Z6Ap^tQ#|#W}pD{4ZeZjym z_Z0)f+&2sibKfyA%>B*4F!vt=!#qX?hIuRu4D;9-80K*@Fw9e9V3=pjz%b8(fnlCC z1H(L928MY~3=H#J85ridGce5aWMG&V!N4#tnt@?n3IoHuGzNxw#S9GdDi|2%RWUHk zt7TxA*TlduuZ4kOUONNByiNv&c{3Oo<}GDln7508VcuQ_hIt1V80H;jV3>D|fnnZB z28MZO7#QZAXJD9jiGg9>RR)H6Hy9Y^y=7pS_kn?7-X{izd0!Y9=6z#enD>)`Vcs7G zhI#)P80IrFFwAFRV3^Owz%ZYKfnmNX1H*h528Q_=3=H$T7#QZSV_=wng@IxI4+e$> z;tUK6%orFJ1T!!!h+$w@5YND{Ac=utK?(!If?NiM1!W8j3o02H7F07ZEU05(SkTD8 zu%MZNVL>Yc!-94Oh6Pg?7#2)tU|2AVfnmX128IO-7#J2TVqjRXpMhb)83u+07a159 zTw!2XaE*as!EFYH1@{;j7Cc~JSn!B}VZlcRh6P_37#93xU|8^<fngyJ1H(c=28M;g z3=9j!7#J2xGcYWaWnfsSz`(FjiGg9EAp^rgI|hb@!3+!w!x$JAMlvugjA39{7|+14 zFo}U-VJZW|!VCt6h1m=Y3-cHl78WuvENo+7SlG$Hu&|qfVPP)=!@_<BhJ}+D7#2=t zU|2YVfnnh+28M-m85kDMXJA;kkbz<0J_d$`cNrKKF)}bLQf6RS<j%mbD3^g@(L@G@ zMH?6x7M*8cSoDU0VbNCxhDARZ7#96zU|95*fnhNl1H)o|28P8#3=E4!7#J3dGcYWc zWMEh<&A_l&mVsfh76Zd#T?U551`G^~jTsmgn=vpfwqRgb9Lm73IEjH_aXJIT;!FmH z#W@TNiwhYT78f%xEG}bUSX{xtu(+LpVR07&!{W&d42!2SFf3lgz_55Z1H<B#3=E6c zFfc6M$iT38GXuloZ43;HcQ7z4KF+|f_zDBV;+G5zi{CIXEPl_xu=o=L!{V<D42yp- zFf9Jfz_9oq1H%$V28Jap3=B)y85owxFfc5UXJA;O$iT2fnSo)6Dg(n34F-lK+6)X! z^cWbH7%(s_F=k*`V#>g<#GHX)NeBbOl41siCDR!gmh5C;SaO$vVJR~M!%}qyhNW%{ z3`<iP7?w6MFf8q6U|8D6z_4^81H;nE3=B)>Ffc4#%D}L61p~v<)eH<v*D)|G-N?YO zbTb3P(rpY3OLs6ZEZxPxu=F?s!_rd>3`@^4Ff6^mz_9c(1H;m*3=B&@F)%Fs&%m&Z zg@IuiI|IWqP6mc$d<+cB1Q{5X2{SM(6J=mnrozCmOp}3OnGplSGE)YIWljtX%iI|l zmU%KTEc0PtSQf~@uq>E?VObah!?FklhGppt49iLw7?yQ1Ff8j~U|81Az_4r*1H-bZ z3=GR=Ffc5e&A_m19s|R&g$xYKmM}0ZTh73+Y!3s&vi%GU%MLOyEIZ7=u<R%U!?F_$ z49iY4Ff2RAz_9EB1H-b*3=GSzGB7N=&cLwj3j@P)VFrff<_rwWBN-T$*D^3HU(CR; z{5S){@@EVTD_9vARwywrtk7m)SfR(ju)>gmVTCaR!wMS)h83<13@bbs7*=>QFs$%n zU|12zz_22ifnh}$1H+0428I<;3=AvM85mY%F)*yiWnfrQz`(Ggn1NwMDFefbNem1t z<})y?Si-=tVmSlDij@ouE7mbEtk}rFuwpX<!-}m83@eT>FswMvz_8*J1H+2z3=Avo zFfgpR$H1`SAp^q-klS7`FsyjZz_8*i1H+0x3=Atd85mZ|F)*xDWMEjS!oaXnoq=Jc z76ZddT?U4g1`G@<jTsnLnlUh}v}9mdX~V#<GLV5`We5Yq$}k3ol@SaKE29_~R>m?g ztW02FSeeAYurh^#VP!f4!^%tshLzb23@bYr7*;N4U|4yYfnnua28LCF3=FHx85mYY zGcc^GVqjP`lYwE?HU@@O`xzKk9b#Zub(Dc&)o})fRTmf-R^4P^SapYiVbwhbhE)$4 z7*;)IU|98(fnn8i28LB%7#LQ4XJA<Mi-BR)Uj~NN3=9mbnHU&W%QG;n)?r{+ZOFi| z+L(c1wHX7$YHJ3D)wT=_s~s2^Ry#2;tPW&gSRKN^usW83VRaS*!|HqnhSh}(4692R z7*<y@Fs!a-U|3zpz_7Z3fnjw&1H<Y$3=FF`GBB*(!oaY4I|IY&T?`DX_cAc7KES}R z`Y;2->SGKHt4}g8tUklQu=+d$!|Ept46C0rFsy#bz_9u?1H<aK3=FG3FfgqC#K5rn z3j@RIZww5pe=;zv{>{L!`Y!{+8Yu>bHI@tvYhoD~*3>gFtXa&!u;wHK!<x4Y3~PB9 z7}jbtFs$`pU|1W-z_2!ifnjYp1H;-#28Ojs3=C_t85q{)F)*wxU|?8V%)qd=l!0Mw zIRnGm76yj3?F<ZSyBHYO_A)T6oxs4bb`k@_+Vu<!YxgiPtUbuUu=X$m!`fpE3~Ns_ zFswbxz_9iL1H;-&3=C@@GBB)t$H1`mGXulguM7-pe=snt{ma0x_CEu|Iwl5&bu0`F z>x3B?)+sPBtTSa`SZBe&u+Ex+VVxZV!#YO>hIK9s4C~w(7}j|)Fs$=sU|1Kxz_2cu zfni++1H-y(28MOH3=He?85q_TGBB(wVPIHS&cLv)l7V4eH3P%CItGSy4GawHniv?? z&1Ya(w~v8g-6IBu^(+hw>oph{*84FqtS@3<SU-`0Vf_XMhV^F|7}j57U|4^Xfnog} z28Q+b7#P++XJA<Wfq`NDX9kA#-xwIy|72iT|A&EL{XYhV4Gatn8<-dvHn1=-Y!GB% z*dW5dutA)GVS^L{!v<Lfh7Ixz3>$117&dq^Fl_K+VAv4Az_1~hfnh@g1H*<W28Io> z3=A9M85lO?F)(Z>WMJ4($H1_mnSo(LD+9xZ4hDt|y$lQ+`WYBDOk!ZzFol6(!(s-8 z4I3C3HXLPO*l>b@VZ&(#h7IQ!7&csFVAyblfnmdS28Io{7#KF(WnkFwfPrDdV+Mu| zKNuJ`{AOU-@RxyM!+!>bjf@No8(A0_HnKA?Y~*5K*vP}cu#umEVWS`e!$x5ShK&Xc z3>*C!7&aC&Fl?O4z_4*A1H;Dq3=Er?85lMxF)(a$WMJ47$H1^Doq=If76ZekTn2_s z`3wx3Di|0xH8L=4YGGj5)W*QDsgr?WQx5~fralISO%oUxHqB*V*tCFwVbfv;hE2;D z7&fhBVA!;pfnn1L28K;n85lO*Vqn;Ghk;=e$gU?044a-YFl>6sz_95x1H-0Y3=Er@ z85lORGB9iwVqn-T&cLu)l7V5f3<JYvMFxh=$_xyf)fgByYcMcuHfLbi?83mXIg){4 za|{E+=6D8%%}ERln^PGWHfJy}Y|dt2*qq0}u(^<dVRH!s!{%}ZhRr<;44eBI7&cF2 zVAwpFfnoDh28PWu7#KFsW?<MnkAY$H0tSZ7iy0U;FJ)lZyqtky^AQGy&5s!vwy-lW zY|&(3*y78;u%(!RVas#|hArC|7`9wxVA%4Bfnm#U28J#F7#OxPGB9jqW?<OL!@#gr zl!0NZ1OvlXX$FR^atsVx6&V<|Dl;%_Rbyb-s=>gp)s%r@s|5qYR%-@^t#%9yTOAn~ zwmLH~Y)xQb*qY10u(gPRVQUEk!`5;JhOIRW3|s3M7`8StFl=pRVAwi|fnn=(28OM( z7#OxLXJFX6hJj)0ItGTV8yOh3Zew8Bx`TmX>uv^yt$P_5ww_^N*m{$JVe2~vhOHkN z7`A?4VA%Sdfnn<}28OMF85p)PFfeRmW?<OH#=x+RlYwCy4+FzCMFxg#Dhv$U)EF4H zX)rKs(_&!Qrpv&v&47Vnn=u2!Hd6+MZ59j++pHKEw%IT+Y>Q-I*jB;7ux$<l!?t}4 z4BH+tFl^^wVA!t1z_8t$fnj?V1H<-q28Qhu7#OxsW?<Mpje%kN3<ien3mF);uVP@> zzLtSu`+5e3?VA`Fwr^!%*uI^CVf!uyhV9207`C5cVAy_^fnoav28QjI85p)-WnkF; ziGgAJe+GsfEDQ`g*ccdga56CL;A3FeA;7?}Lx_Q4hX@114rK<09XbpQJM<YCcGxg5 z>~LgY*x}5;u)~dkVTU&Z!wz2th8_M43_AiD7<MEuFzm=>VA#>bz_6p0fni4n1H+DP z28JDd3=BIaGBE6z!oaX&Is?OwSquz2<}xtsSir!rV=Dv0jvWjPJ9aTJ?AXJ=uwx$s z!;XUt3_Ff6Fzh(az_8;a1H+Cp3=BKYF)-}7z`(HMEd#?&9tMV;1`G^4gBTcgmN78w zoWsDd^8f?G&if1uJO42-?2=|+*rme2uuGkRVV4#I!!8{LhFzu%47=<Y7<M@_Fzj++ zVA$o(z_81Ufnk>q1H&#q28LY$3=F%17#McNGcfE*Vqn;n%D}KIgMndJHUq=1Tn2_+ zT?`DnrZX_?n!~`bYd!<Ru7wN?yOuF9>{`jduxm8~!>+Xq47>I)FznjTz_9Be1H-O! z3=F$2GcfGB%D}Me1_Q&cy9^Aw?lUm#dc?r6>j?wHuFnh%yBQc5c8fAF?3Q3)*e%V# zuv?CSVYea!!)_G@hTZB647;@$7<TJ2Fzhy9VAyTUz_8ncfnm2d1H*1#28P}K3=F#i z85nklFfi;6XJFVJ$-uBXnt@?=90SAd1O|rPNem3T>lqk!&tqWNeTac!_Y($&Jsb=S zd-NC>_5?97>?vem*fW8FVb59yhCSOD820RBVA!*Vfnm=+28KPy85s6lU|`sDnSo)? zH3o(~HyIfA++kqYbB}>x&jSXAJ#QHp_IzMq*z=izVb3=PhCM$S820>TVAw0cz_3@9 zfnl!}1H)b&28O-*3=Dfs7#Q}NGcfG6Vqn;7!@#iDn}K0(2m{03PzHv*;S3CWqZk<W zrZX_?&0%2Jo5#Sgw~&EhZy5u_-bx0By)_IBd+Qh&_VzL`?48BHuy;KJ!`@8{412dS zFznsIz_52W1H;~Z3=De@GBE5t!oaZiI0M7pQw$7y&oVIVeZ;`9_bCIz-scPqdtWjz z?0wC^u=gDU!`_b!412#YFzo%tz_9lx1H)dByZ<sU?2}?(*k{SWurHQ@VP8E1!@k7~ z4Es(pFzkEFz_6c(fnmQk1H*m~28R8C3=I227#Q}4GcfFrWMJ5z#K5pWn}K0}9s|Sv zLI#HYB@7Jv%NZE<S28f{uVG-=-^swRzlVWge?J4m{z(iB`=>H6?4QoSuzw2!!~TN| z4Ev8UFzi3Uz_9-`1H=9c3=I1(F)-}E%D}MyIs?Q0XABJcUotT4|Hi<u|2G4}{=W<i zpoJ0#SQ!`&urn|m;9_7nz{9|BK$?N!fCdA@0b2%!0}c!f2b>ug4!AKe9PngdIN-y; zaKN8|;Xn`r!+}r+h651{3<sha7!DLLFdQgmU^r09z;K|Pf#E<U1H*wD28ILm3=9Vv z85j;UGcX)zV_-PY!N72!i-F<5at4M2#~2t6ykcND$iu*J(13yAU>F0#!72uZgEJWz z4(?!JICzzT;ov<6hJz0o7!E#RU^w`Uf#KkL28M$_7#I%zVqiG<hk@bXKL&<F3=9m1 zm>3ui@iQ<S5@KLDB+9^WNP>akkTe6sAz227Lskq7huj$$4*4)J9P(peI26dha43v{ z;ZOtv!=Y#fhC{Io42N<U7!KtzFdQmpU^vvmz;LLOf#Fa$1H+*{28KhE85j;tWnefo zgMs1DECz-{D;XFLZDU|Kbee(T&^ZQ%Ll+qs4qahjICPzX;m|DxhC_E57!EyPU^w)c zf#J|I28Kf~85j=zV_-PU$iQ%znStRjD+9w}b_RySTnr3{c^McE^D{6U7Gz*JEW*HW zSd4+;uml6cVN(W%!yya|hbtHu4$op>IJ}R6;qVg%h9evd3`f)%7>>9xFdRu{U^tS( zz;L9Hf#FCA1H+MW28JV53=BtV85oY#GcX*P!@zK4B?H5ebqowgHZU+8+04LjWCsJo zkzEW7NA@x>9NEvnaO4~V!;y;&3`g!UFdTWzz;NU#1H+LQ3=Bu!GB6x@&%kix69dDM zFANMvnHd<43NSDnRb^l}s=>f;RGWd}s2&5uQ9}lXqb3XtN6i@+j#@D=9JOU&IO@Q_ zaMYQB;b;T{!_jC4hNH0z3`gS`7>*_~FdR)`U^tr2z;HB+f#GNl1H;jL28N@B3=Bt$ z85oXEU|=}9o`K=$Wd??$Ul|yVNir}Tvu9v9mdwC#tcii)*g^(|WBV8wjvZ%UIChGG z;n-OQhGXX$7>?awU^w=Wf#KK_28LtL85oYeVqiG-mVx2edj^JM9~l^q{bOJ_&d9)U zoP~kmI6DKwaV`di<2(!u$2A!kj+-$s9Jgj*IBv(laNL1`;kYXU!*LG=hT~og499&K z7>-9XFdUC#U^t$@z;Ha5f#G-&1H<tW28QG13=GF>7#NP%F)$o&WMDYn%)oGb5(C5W z`3wxlw=ggq-_F2rd=~@5@x2TT#}6<t96!v!aQqkp!|{_049CwfFdRS6z;OH$1H<v> z3=GF#F)$o|!@zL-9RtJh4-5>)KQk~K|H{B{{5u1~@t+I~$Nw-e9RJ6_aDst>;e;#$ z!wDM(h7$=43@4fx7)~r>U^sDxf#Jjl28NUT3=Ajr7#L1^GccSCVPH5J&cJXoih<!| z3<JZ-R0f8Vc?=9E3mF(r7BeuMEMs6eS;4??vWkJ>WDNtu$xa4_lRXR!C;J%~PEKNA zI60Mp;pB7%hLc+u7)~B!U^sb<f#Ku{28NTT85mApU|=|TiGktdRR)HW*BKa2K4V}w z`I3R*<TnO}lfM}lPX1+JIK{xgaEg_I;S@Uq!znHXhEqHY45y?S7*1(0Fq{fxU^o@R zz;G&@f#FmX1H-9U28L4!3=F4|85mBbF)*CUWMDXz!@zJVpMl|25d*`iQU-=o6$}ig zsu>tg)iE%fYGhzI)xyAVs-1!1R2Kuosm%-wr?xRLoZ892aB2?&!>RoY45tn;Fq}Hd zz;NmW1H-A)3=F5vF)*CE$iQ&w3IoHb>kJI1ZZR;Ny34?D>H!18smBZqr=Bq|oO;Q? zaOw>M!>M-+45xlGFq{JU<39t#X(k4S)2$2)rzbHmoSwqKaC#a8!|9m}3}^Hh7|vKT zFr2YvU^rvXz;MQif#J+$28J^a7#PkxVqiG)gn{AAa|VX99SjU-r!p{{ozB2;b|wSE z**Odh=e!vh&P6aVoQq;$I2Xgfa4w#K;XD@u!+CKAhVzmP4Ckd87|zQvFr44Wz;J#a z1H<_P3=HQFF)*Az%D`~JgMr~fC<DWVa0Z48kqitMVi*`M++|?6@QQ)q!W#yL3-1^h zE_`HQxY)<QaB(&R!^OD_3>W7!FkD>3z;H>9f#H%i1H&a<28K)e3=Efy7#J>{WMH^- zje+6P4F-lww-^{M-DP07oWj6xxsZY3axnwL<x&QQ%M}a^SGXA%u1GL2T#;g6xFW;A za7CVh;mQF9hAU?o7_OXWV7PLTf#J#(28OHQ3=CIO7#OamF)&=sU|_hK&A@O?k%8fw z9s|QQ0|tg`MhpzsOc@xiZDL@!wx5CF+Cc_}Ylj&at{r1wxSq$raJ`y=;d&nf!}W;_ z4A-YHFkGL`z;JyQ1H<*X3=G#7Ffd$S%)oGc83V)hl?)8m_b@PA-_O8s{SX7g^`i_7 z*H17oTtCggaQz$u!}W^{4A-wPFkHXJz;OKr1H<)K3=G%5GBDhbVPLpnz`$_Bhk@Zn z8Uw?PA_j&VJq!#t<})zdSi!(>V?6`IjZF*;H?}e`+}OduaAOw(!;Rw%3^y(@Fx<Gy zz;NRM1H+BS3=B7I7#ME4GBDiqWnj1&#K3Sfo`K<J5(C4{R0f8d`xqE*o@QXUd5(eM z=0ygEo9`GHZhmKAxW&T2aEq0J;T9VM!z~U5hFgjZ47aox7;fn@Fx)a=V7O((z;Mf! zf#H@L1H-Li28LTT3=FsG85nLgF)-X}VPLq`&%khN4g<rj^$ZNRHZd^V+RDIiYX<|v zt=$X^xArkG+&aj>aO(&I!>!{C47W}(Fx<M!z;NpU1H-My3=FrPF)-YE$-r>yH3P$~ zcMJ@-J~A-e`oh3)>l*{Ztse{wx49S?Zi_N7+_qt0xE;X2a65;A;dUDX!|h2747b-X zFx=kHz;OEn1H<jB3=Fq#FfiP{&A@Q`9s|SehYSq2pD-}oe$K#f`y~Uz?QaYWw|_D) z-2TJBa3_?3;Z70*!<|$HhC3My40rZ3Fx)xAz;Ne01H+w53=DU*7#QxFGceq>Vqmyy z%fN7VDg(paMGOpgmohNiUBSR`_df%}Jst*zd;AOx_k<W2?qxAB+$&~axYxkIaIcYp z;a(F1!@U*;hI{iE815}+V7PaMf#Kd=28MeN7#Qw7W?;DYl!4*i2L^_Fe;F9=3otO; z7iM6%FUG)dUy_00z6=AyeR&3k`$`N9_f;7f?rShG+}CDcxNpb6aNm)E;l2w4!+m!K zhWlO&4EKE*814r!Fx(GjV7MQ~z;Hi;f#H4>1H=6s28R3P3=H?@F)-ZU#K3U>90SAs z7Yq#dzc4U7;A3ETpvb`RK#PIlfjI-i11koG2eu3h4;&a69yl{FJaA)Rc;Lyv@W7ja z;Xwog!-HrBh6iyB3=e7;7#?&oFg)mCV0h5a!0=!#1H*$|3=9wUGB7+iz`*d}9s|RJ z*9;5~-Z3yd_{hNUke`9!p$r4VLwN><he`|#4;>g79{MscJPcr9co@vU@Gzf&;b9E} z!^2tzhKF?w3=bO^7#_}KV0gHQf#Km&28M?#7#JR|Vqkc<m4V^mJ_d$|rx_R?USVK( zc%6aa;VlM+hj$nl9zJJac=&~Z;SoCn!y_&RhDW>%437jD7#;~TFgy}tV0a|S!0<?h zf#H!n1H&UF28Ktb3=EGf7#JQ|GcY`|V_<mX$iVQ(g@NIbI|IWbF9wE3z6=bH{23S? z1u`%^N@ieql*hpEXetB4qm>K{kB%}hJi5=o@aQ!I!(&zkhQ|^N438BV7#`~}Fg!M7 zV0di8!0_0df#I<g1H)rm28PED3=EH*7#JS=GcY_3Vqkb2%E0h=4FkjDoeT_*_b@O# z-p|1BM1q0gi7Erb6AcE2C)x}QPg)olo=jw5crt~7;mLFch9@5w7@quPV0g;F!0?or zf#GQk1H;oy28O3O3=B{685o|PU|@K9k%8gqJqCuS_Zb+TK44&Y`iOzy=^qA$XRHhi z&o~$uo^dlUJmY0xcqYKW@Jy0{;h8G~!!thyhG&5c49`Ls7@mbOFg#0SV0f0t!0@b* zf#F#T1H-d+28L%{3=GeD85o{TU|@JQnStTiGzNxeGZ`43&0%18ww{6E*(L^tXImK< zp6y^@c($8?;n_Y0hGz#E7@i$rV0d<%f#KOn28L&+85o{jVPJT6mx1Bg0|tg?j~N)A zJ!4>a_L70&*=q)dXFnJip8aNEc=nHh;kgV0!*fjrhUYpA4A1o$7@qqwFg%Z9V0a$O z!0<eQf#G=_1H<!f28QQ-3=GdFGB7+}%fRq_7X!od-3$!R_b@O#-^al4{5k`}^9KwJ z&mS`|Jb%W(@cab>!}HG!4A1{CFudSkV0a<O!0<wZf#HQX1H%hR28I_Z3=A&}85mx; zFfhDuXJB~Y#lY~wmx19$00YB|U<QU4VGIl}A{iK7#4s?th-YAUQN+OTqLhK*MFj)H zi)sdj7j+B_FB%ybUbHYUyl7`&c+thc@S=x-;YA+<!;1wB3@=tQFub_L!0_T31H(%u z28Ne13=A(d7#LnUF)+LgWng$2$H4G1n}OkF9s|S6LI#GHB@7HN%NZD6RxvQVtYu($ zS<k@mvWJ1;Wj_PM%Sj9jFE=qTyxh;g@bVA?!^@)#3@;xsFuZ)v!0_@D1H;R&3=FS? z7#Lp3GcdeTVqkcs%E0i-iGksjKLf+7AO?n4p$rVKiWnGP)iW@>YGPn`)ylx|Y6%0w ztBni{uQo9-yxPpb@M<dq!>e-)46m*;Fuc0O!0_rW1H-HP3=FScF)+OP%)s!Pfq~&Q zCj-N49tMWj{0t1Q1sND#%P=s!)?{FKZNtFu+Ma>owG#uwYgYz_*B%TEue})<Ui&dH zybfewcpbvP@H(7<;dK@R!|PlIhSvoQ46lnB7+#k#Fubm0V0c}_!0@`Bf#G!%1H<bU z28P#d3=FSlFfhDc%)s#a6a&NSdkhS(e=#t;5n*6>qrkxM#)^UAjV}Ykn=l53H^~eP zZ_*eT-efW`yvbo;c$3e-@TQ1?;Y}$6!<%vjhBqw?3~$;Q7~XU-FuZxp!0_e+1H+ro z3=D6+F)+OKXJB|6!@%%1o`K<Q5(C5AT?`Cwk25g5J;lKA_ACR#J2eJ|cg741@5~q& z-dQp*yqm<p@NPZ>!@ETc4DXgQFueQ6!0?`(f#JOf1H*e!28Q=y3=Hoj7#Q9gGBCWi zVqkc0%fRs7fq~(@69dD0Uj~NvVGIoKn;010cQY`&?_*$iKaqjq{bUA)_X`*p-fw1L zc)yK-;r&hqhWC3I7~bz^V0eFsf#Lm828Q=17#QB4W?*=Kj)CF*Lk5QTPZ${9KWAWg z|B8X({aXfx_a7J--hXCbc>j%o;r&krhWEc27~cP7VEDks!0>^af#Cxm1H%VF28Iv9 z3=AI>7#Kb%GcbHmV_^8;#=!6)n1SI#7z4wHNCt)v#S9D|8W<QpG%_%JXkuXa(89p* zp_hT-!vqF~50e=fK1^j`_^^P1;loM>h7VgA7(VP{VEAy5f#Jgu28IvE7#KcWW?=a6 zjDg|9O9qAyZx|Rpyk}te@QH!p!&e4|4?h?fKKy22`0$T`;Ugmh!$%PYhL7S53?HQ! z7(U7}Fnm;CVECxa!0=Ixf#IVj1H(rh28NG%3=AI)7#Kb}F))1eWnlPN!ocvcgMs1W z5(b8k`xqELo?>A5_=JJs<97yzPYetUpZFOVJ_#`}d=h0~_$0x=@JX71;gcK#!zV=s zhEFOC44>2(7(N*@Fnls&VEAOo!0>4j1H-5J3=E$ZF)(~u%E0jH9|OZ@ZU%<Wd<+bq z1sNDVXEHE+E@NQ$T*<)jxrTw^^Hm0h&yN@wK0jq(`22!_;fo^!!xujWhA)8(3|~SR z7{07!VED3&f#J(u28J&O7#O}vGBA8qVqo~H&%p52fPvwwAp^r#V+Mw=z6=as!x$L8 zMlvvbjbUK;8ppu!HIsqiYY_v(*Le&KUzam5d|k!B@O3Q%!`Jl;3}5#!Fnm4F!0`1F z1H;#=3=CgyFfe?*&A{;W9s|SIhYSo~pD-|dea^t}^%Vod*S`!5-xwGezA-Z}d}Cu^ z_{Pb=@QsIo;Tt~#!#5!YhHs(_4Bx~V7`{m|Fnm*DVECrb!0^q8f#I7e1H(5928M6e z3=H4w7#O}eGBA8|W?=Xhz`*b=n1SJ27z4w%A_j(U^$ZN(niv?qwK6b#TgbrhZ5;!{ zw~Y)8-?lI?d^^X$@a;AO!?$}34Bs9yFnniVVEE3<!0=swf#JI_1H*R%28Qpp3=H2L z7#O}gGcbIQXJGiA!@%%8mx1AX9s|So0tSZfl?)8uYZw^5*E2ADZ)9Nj-owD~eJTUP z_eBg0-&Zp*d|$`F@O>i#!}rY$4Bz)LFnmAF!0`PZ1H*TaeNPw|zCUMR`2LE4;rm+# zhVLI37`}gIVEF!xf#Lg428JIz3=BW`85n*DF);iPWnlOr!NBlCih<#WECa(21qOy6 z$_xxYR2dk4s53D9uw-EP;ljZ1Bb$NYM?C|>kJ$_iKejS3{5Z(K@Z&ZE!;g0i3_rdz zF#Kd;VED<-!0?lcf#D}F1H(@N28N%)3=BWT7#My^Ffja7WnlQJ!NBlSn}OkH3j@Q? zi3|)sr!X-5oX)`T^8*9J&%X=|zZe)8elasJ{EA^<_?5}P@GFOb;a5Hb!><zz48N{2 zF#Ni~!0_uf1H*4428Q4E3=F@W7#M!LGBEs}$H4G=IRnG*Ees65w=yvN-p0W2dj|u< z?~4o!zi%-x{9$2W_`}P<@JE1w;g2u_!yi!whCd1n41aVP82&ggF#K_5VEE(4!0^YD zf#Hu21H&JG28KUD3=Drl85sUVFfjayW?=Y}$H4HXkb&V(2?N8Qat4M!RSXP&Y8e>* zG%zsyX=Y&f)5gH?r-OmvPZtBjpUDgie-<z>{8`Mv@MjqV!=IH541d-zF#K81!0=}i z1H+#!3=Dq`GBEr(!ocw7I0M69c?O2RIt&bd^%)rc8Zj{Z?P6f~JDq{y?<@v}zjGNF z{(fa(_{YS+@Q;;&;U5PB!@mRuhJU#X4F3uk82%MAF#J2k!0_)n1H->t3=IG7GBEr% zV_^7i&%p5Chk@b0F9XAWKL&>X0SpZPvltlu7c(&YFJoZ%U&+AmznX#Je;WhC|9%FB z|9co1{vTyv_<w?d;s0p{hW}?782;a2VEF%(f#LrT28RE?85sWmV_*bB76wKJb_PZU zE(S&hUIs=60R~0}VFpG9H3mioO$J5=9R@}QeFjDbBL+qWQwBx`3kF68YX(LJI|fDu z2L?t4Ck93aZw5w&2nI%mXa+`xI0i<BL<UBN6b43ybOuI-ECxn~90o>)N(M%T8U{v& zdIm;@>kNzxPZ$^(o-;5qykcNvbY@^=3}9en3}#?t3}awqT+hJBxQBs}aX$ki;~@q{ zCMgC+CUpizCM^a=CS3+brd9?<rb!HpOj8*cnPxCBGJRlRWcta#$jrvT$jr{b$jrgO z$jrsS$gIr3$gIP_$gI!6$ZW*G$ZW#E$ZXHR$n3$u$Xv?6$Xv(3$lS=l$lSuf$lS)j z$UKpOk$D~iBlAWEM&>OHjLh2^7@2o5Ff#9DU}QePz{q@<fsy$b10(ZE21e#H42;b8 z85o%#F)%VeWng4}!NAD;nt_q|9RnltM+QdbFAR*#-x(O0LGJp^z{tYOz{n!Oz{q0H zz{nEJz{rx%z{t|cz{oO{fstiB10%~J21b_C42&!{7#LY@GcdB;V_;-?$iT?*gn^Oe zIRhihD+WfEHw=s{KN%QV{xC4I{AXZf4QF6vO<`bUO=n<a&0=6=J<Pz!dVztF^)dq^ z>oo>OHa!MLHfsh(HaiAJHb(|Vwpk2}Y|9xK*;X+yvaMxcWM^YwWEW;&WEW##WS3-M zWG`Z1WUppmWba^LWbb5PWba~NWba{MWM9g_$i9w&k$ocrBl{KxM)qwCjO+&)7}-xT zFtUGTU}XQtz{tVKz{tVEz{tVIz{nxUz{nxTz{p|9z{p|3z{p|Fz{p|6z{p|Cz{ugi zz{uguz{ugoz{ugrz{uglz{nBLz{rurz{ruxz{ruoz{ru!z{ruuz{pX^z{pX;z{pX~ zz{pX_z{pX}z{t_Uz{oL?fstbh10%<D21brq42&Fe85lVhFfei~W?<x4%D~96iGh)0 zD+43P4hBX}K?X)nIR-{fMFvJr6$VDm8U{wrP6kHK9tK9veg;O)=M0RTUl<rUzcVm$ z{$gO{3Swa7if3TtN@8H-N@ZZ=+Q-1ib((>Z>l_0k*F^?KZY>5zZes>UZU+WNZbt@2 zZYKstZWjhdZeIpQ?f?cx?qCK+?ob9s?gR!#?o0+o?x_rn-18V1xfe1paxY<E<X*<W z$i10?k^2|}Blk%LM(#5VjNIoL7`ZPoFmhjIVC25Rz{q`@fsy+j10(lC21f2L42<00 z85p^LF)(ufWnkoCU|{57W?<xDV_@XrWMJgsVPNFpV_@VFU|{5tWMJe`V_@XbWMJgc zVPNFZXJF(pVqoMkWnkp7U|{62VqoNPXJF*<VqoO)Wnko4#=yw4nSqgK8v`THP6kF^ z0R~21Sq4U41qMc5Wd=sx8U{w*P6kHa9tK9<eg;O~7YvNNUl|yAe=soe{$^n0lVD)v zQ)OV}(_moa(`I1gb7NrS^Jie>i(z2oi)CQsi(_EqOJHE+%Vc2W%VA*T%V%KZD`a5g zt6^Z|Yh_^M+rYrcx08X9Zw~__-+l&0zJm;md}kOK`ED{W^1WeT<a^J+$oGkXk?$)5 zBi|1OMm~_8{}>qg85tP)Sr{1k*%=u5r5G6bWf>Ux6&M)#l^GcM)fgE0H5nNBbr=}= z^%)rXjTjjDO&A#Y%@`Q@?HL&Py%-qzeHj?}0~i?jgBck4!x$L(BN-U^qZt_aGZ+~8 zvl$rq^B5TUk25gxUtwV6zs|tOe~W=pz?gwiz=45Lz?p$jz>R@XU_Jw*z#0Zdf%OcG z0-G2Z1-Tg*1tl051*I7n1?3nR1#K7@1zi~!1%ntE1%nwF1w$AZ1;ZE^1q&D$1uGdC z1#1`>1?w3Y1sfR{1$!761*bAF3Lau$6g<tqD0q&6QSc%Iqu^x*M!^RRjDnvT7zMvE zFbe);U=;krz$o~ifl-Kwfl-K+fl-Kqfl-K?fl-K$fl)}2fl)|>fl)}Efl)|{fl)}8 zfl)}Gfl<hafl<hmfl<hUfl<hcfl<hYfl<hnfl(-kfl(-wfl(-efl(-$fl(-qfl(-t zfl(-hfl(-pfl;WKfl;W8fl;WEfl=rp1EbJA21cQW42(ig7#M|Z85o7V7#M|p85o5F z7#M|DGB65nV_+2C$-pSQhk;Q<n1NA5fq_v(nSoJ6je$|5o`F%Mhk;R~pMg<i5(A^i zYX(M<FAR*Lj0}vTObm>o%nXd8tPG5zd<=}DRt$`y&J2vAZVZf~o(znl-VBVQVGN9- z$qbC5Wekj>l?;rcH4KcR^$d)nO$>~ptqhE!9Sn@3-3*MPeGH7E6B!sqmoPAjE@xmA zUB$pCx|V@abOQsU=w=2+(QOQjqB|KFMfWf;itb}z6g|MeD0-5CQS=%Eqv%ZrM$tPA zjH34$7)2j3Fp559U=)49z$p5Pfl>531Ec6K21e1p42)t@42)vx42)u042)vB42)u4 z42)vo42)t?42)v242)t`42)v!42)u342)vE42)u{7#PL2GcbznVqg^8%fKjhi-A$> zIRm5ED+Wffw+xKpTnvoj;tY)95)6#uk_?RE(hQ8^Dh!O`>I{tHS`3WhIt+~B<_wJD z4h)Rq-VBW5Aq<S-;S7x8Q4EaYF$|32nGB5LMGTDMr3{SX6%35x)eMZ{bqtK+?F@|K zT?~xky$p=v6Bro9Co?dLPi0^fU&O#DzJ!5Md>I3y_(}#w2}K4*2|Wfz2?GX32_ptZ z2~!3}iA@ZQ68jk#B@Qw$N*rcjlsLw~DCx_<C>h1TC>g`RC>h7VD4EE>DEX9uQSuW5 zqZBIxqZ9`NqZBs-qZA(lqm&>6qm&2(qm(!Uqm&c_qm(QIqm%*zqm(fNqm&r~qm(5B zqm&H;qm(@Zqm&Z^qm(NHqm%~&qm(xTqm(ZLqm(}bqf{aTqf`z9qts*uMycftj8cag z7^UtqFiO2-V3cNNV3ZbPV3d|;V3gKjV3gKpV3amuV3amxV3f9CV3f9IV3f9FV3c-X zV3hV{V3ZDEV3ZDKV3c0Nz$m?wfl+!71EchQ21XeP21XfG21XeT21Xfe21c0{21c2Q z42&{U7#L-yGcd}0U|^K_%fKkhz`!WW%)lrc!@ww;$-pR^!@ww;&%h{qf`L)?A_JrB zJqAYE`wWb-4;UC_A2Be>{$^m5V_{&FV`pHL<6>Zx<6&Tw6K7zQQ($0}^JZX_3t?cC zOJrb_OJQJ?OJ`t|%VJ=Z%Vl7cD_~%hD`sGnD`jAmYhYlM>t<k-o5sK>w~&ERZVdyY z+)f5Yxibuma_1Qs<t{NW%3Wn(l)J&eD0iEIQSKfCqufIVM!6>pjB?Kz80CI3Fv|U9 zV3cQIV3cQOV3cQLV3g-%V3g-!V3g-)V3ZePV3ZeOV3ZeQV3gNjV3apzV3dzyV3f~e zV3hA-V3c3Nz$m|gfl>Yx1Ec(121fa342<&c85re1F)+%1Wnh&5!N4g0n}JdOF9V|j z7XzaLF9V~300W~!CIh2F83Ut2B?F^E4FjXXRR%_dM+}S#PZ<~$UNA5!Ix;XS`Y|vn z1~M=zhA=QH7BMg?Rx>avb}%q1b}}$3b}=w2_AoFiE@fa;T*ttuxRHTTaSH>Z;x-0G z#e)otil-PD6~8esD*k6+RN`V_RN`e|R1#odR1#)jR1#xgRFY(1RFY<3R8nJLR5D~> zRI*`URB~rvR0?5WR7z)HRLWvtRLW&wR4QO#R4Qg*R4QX&RH|fPRH|WMRH|oSRBB>i zRGP}bs5FCtQE4^<qtZMEMx})ej7p0c7?qYWFe<HNU{qSez^Js2fl+A#1EbO*21cc` z42()&7#Ni~7#NjR7#Nl97#Nkk7#NjP7#Nky85ort7#Nj185os&7#NlN85or(F)%7m zWnfgE&cLX=gn?0cIRm5eDh5UsW(GzT0R~1DVFpGOF$PAJJO)OUY6eD?ItE6SMg~Te zTMUdU&lwn1UNJDLyk%fiWoKYi6<}agm1SU5m1AI3m1kg7Rb*gPwPs*cbzxvs&1Ya# ztzckOt!7|Utz%$RZD3$j?Pg$9ox#AUx|)GebsYnv>P7}e)h!H+s@oYDRd+Eks_tcA zR6W4JsCt-zQS}%Dqv}ltM%6nEjH>q;7*!uJFseRfU{rm<z^M9~fl>7x1EcCk21eD- z42-H@85mXnF)*reGcc<0F)*qLGBB!%Ffgi#Gcc-2F)*shGBB#iGcc;@Ffgj=Gcc+d zF)*riGcc;nU|>|6&A_NOkAYF`I|HLS3j?D%I|HLS7Xzbu5(A@pJ_DnA5d))oDFdVW zIR-}c+YF5A_ZS$}A2Kj%STQhaxHB+ncrh?)_%bkREMs8QSkJ(yv4??CV=n`v#y$o{ zjROpf8YdYTHO??FYMf_a)VRpNsBwpZQR68Cqox1@qoyPSqoy1KqoyJQqoxW2qox`I zqoyGPqoxf5qoyYVqgDX}qgF8kqgELMqgEvYqgD+AqgFiwqgE3GqgE>eqgDq4qgFQq zqgEdSqt-+QMy)9fj9Swf7`0|GFlx<ZVANW`z^JvDfl+H21EbbT21czl42)Xq85p%T zF)(UvWnk3W!N91sn}Jbl9|NP-K?X*xBMgjM#~B#4PBAcQon>Iuy1>Awb(w)t>ly>2 z)=dURtvd{iTK5?kwH`4rYCUCO)Ox|dsP&qGQR^K8qt-_TMy)Rlj9T9r7`1*eFlzl} zVAN({VAN)2VAN(~VASShVASSeVASSkVAK|3VAK|6VAPgiVAPgoVAPglVANJ*VANJ& zVANJ;VAR%PVAR%SVAM8XVAM8dVAM8aVAQr`VAQr@VAQr}VAOVEVAOVHVAS?tVAS?z zVAS?wVAKv|VAKv_VAKw0VAPIcVAPIfVAM`vVAM`#VAM`yVARfJVARfGVARfMVAL*R zVAL*UVAQT)VAQT=VAQT-VAO78VAO75VAO7BVASqnVASqqVAP(#z^FZ$fl+%J1Ecm# z21e~U42;_I85p$}F)(T`Wnk1^!N91!nt@S!9Rs8GMg~UhEewp>+Zh<OcQG((?`2@r zKES}JeVBn!`xpbG_DKdt?K2FF+UFS<wJ$L+YF}kw)V{&MsC}D(QTrYPqxM4vM(rmI zjM~o`7`0z9FlxVLVATG=z^MJ1fl>P#1Ecm&21e~a42;_U85nh#7#MX}85ngq7#MZ9 z85ni=7#MW~85ng$7#MZL85nh>7#MYA85ngG7#MYw85nic7#MYZ85nf~7#MYf85niL z7#MXU85nhA7#MZq85nhw7#MX^85ngl7#MZ485ni*7#MX685ng-7#MZS85nh|7#MYH z85ngN7#MY%85nij7#MXs85nhY7#MZ?85ngZF)->*Wnk2u!N90Hn}Jbx9s{H9LIy_N zB@B$Z%NZDTS1~Z^u4Q1<-N3-8yP1JecN+tv?oI|q-8~G9y89Uzbq_Hx>K<ia)IGt# zsC$}$QTH4JqwYlpM%^n6jJnqu7<F$kFzViAVAOrUz^MC}fl>Dv1EcOs21eaC42-(( z85ngxF)-?WWnk3(!N92dn}JdH9|NNvBLkxz3j?DbI|HL07XzanF9V~V00X0*Fax8W z7z3l8Bm<+K3<IN{JOiVi5(A^2Dg&dQ1_Ps>HUp!c9s{GEAp@hH2?L{^IRm4f6$7K5 zEd!&T0|TR;GXtZZ8v~=BCj+CN4+Eo~KLev)5CfxLC<CKj1Oua9Gy|hv90Q|XA_Jpd z3In5FIs>C#76YSRE(4=p0Ry96F$1Gs83UtUB?F^g4FjWIJp-d&69c1OD+8lm2Lq#C zHv^+y9|NP_L<UB^DGZEy(-|1`W-&18&1GQJTfo4mx0r!ZZy5ul-bw~Wy)_Jsdg~b& z^)@ju>TP9U)Z4+psJEMeQEwjuquxOVM!h2pjC#iz81+suFzTIUVAQ+7z^Hebfl==o z1Ebze21dO*42*jB85s2*F)->qWnk2M!N92Znt@U89Rs7@M+Qc{FAR)&-x(P7elalW z{bgX(XJBB|XJ%m3XJug27h+)47hz!37h_=5mt<hn-_5|Ne}aKg{}cnG{uu^F{qqcr z238D=2JQ@u2A&Lz2Hp&e27U~T274G74NfvJ8k}ZeG&sw^XmEjn(J+&N(Xfnx(XfJn z(Xfhv(Xf_*(MXVi(MXPg(MW-T(MXAb(MXkn(P%aUqtOZmMx#{>j7Do17>(95FdDls zFd7FkFd7FlFdBz4Fd9cNFdBbjU^HQ7U^HQ6U^HQ8U^L-kU^JP-z-Y3Pfzf0&1Ea}W z21b(&42&l47#K}{GccO`WneV<&%kKP#K36U%D`wkiGk5{3In6*GzLb~nGB3(JPeFx zk_?Py(hQ7dvJ8x73Ji>9Qy3V{7BVoJEoNXeTgt#_wt|7t>?;GKITHh;IST`$IU56` zIVS_7`3wd|^Q8=o=F1rv%~vuony+DCv`}PVw9sQ<v@l>`v@l{|v@m60w7Ac}Xz_-D z(c&Egqs0dXMvKo3jFyEAjFxo_jFt@yjFwFdjFznoj8>8ij8<w4j8+;9j8<9<j8?h~ zj8=OY7_Ck*Fj}2qV6-~Nz-V=mfzdjNfzdjjfzi5<fzi5{fzi5*fzgJOfzd{cfzd{S zfzd{afzd{mfzf6X1EbA+21c8O42(9585nJrF)-SSFfiIGGBDaIGcek!GBDa|FfiIK zXJEA5!oX;|je*g22Lq$+ZU#m>cLqkg5C%rOFa}1u2nI&GXa+{R=M0Q?Ul<tezA-S` z{a|3U`^~^;pUc2#U&X*^U&Fv?U&p{`-^jq|Ai%)rAj`n$AkV<)pvb`Jpu)iDu#<t& z;TQv>!wCjPhf@rU4rdt{9kUo19m^RQ9V;0a9jh4_9qSkvo%k3SounBUon#ppo#Yu9 zos<|Doi;EqI_+g(blT6r=yZ^Q(dh^Sqq7MEqq8Feqq8#uqq8dmqq7GCqw_TeM(4*2 zjLuIP7@eOpFgm|tV01}lV00;9V00;BV00;AV00;GV03xO!07Ugfzjm$1Eb3?21b{^ z42-U|42-T_42-Tl42-UQ42-T585rG^85rFR7#Q7*7#Q757#Q8m85rHJF)+G4W?*!C z%E0LMoPp8p6$7Jt1_PseDFdT>IRm46B?F^-4FjY5M+Qdse+-Ns3=E7OObm=3tPG4E z%NZCwwlFYyY-3>b*ulW)v73R>Gn#?XGlPNAGmC-IGlzlEGoOLc^9KW?7b^p!7dr!^ z7bgRw7Y_rY*AxauuZ0YZUW*wRy_PaCdaYn!^j2eF^fqQ-^fqN+^fqT;^tNJP^xn+C z=zV~J(fbesqxTU8M(^Vcj6Q)3j6QJ;j6Mkrj6O*Wj6SIhj6Q!E7=5`I7=3vd7=8H| z7<~m97=7n3F#4`!VDw$h!05Y{fzfvZ1EXIe1EXIa1EXI71EXIN1EXIl1Eb$p21b7- z21b7t21b8221b8Q21fsS21frL21frr21fr042=Gh85jff85jd>7#IWW7#IT_7#IVb z85jeuGB5@_Vqgq-!oV2tjDa!WB?Dt%G6Q2^0Rv-T5d&jj2?JwbIRj&mBm-lR8UtgH z1_NV|76W6DE(2rG1_s8Uy$p;&`xzL64l*zX9bsS$j$>d9&Sqc?&ShW>&Szi@E@EH| ze#F2S{GNd^_#*>j@Mi|b;BO3!A<YboArlxFLnbjWhD>2#44KZr7^=>|7;3`67;47A z7;3@57;4SH7`lsrG4wbCW9Uf+#?aFYjG^Zk7{iPh7{lxt7{eSH7{i<y7{lBc7{hij zFoqpvU<^CXz!-Ltfidh117o;517mmy17mm?17mmu17mnJ17r9#2FCEm42<DV85qN# zGcbm~VqlCYU|@`>Wnhe`XJCwIWMGVFVPK3DVqlDvXJCv}WMGU`W?+m|V_=M&#K0Ii zpMf!QAp>LNVg|;@Weki_8Vrn4rVNZx<_wHcmJEzhHVlkW_Zb+Y-Y_smy<=dE`oO># z^_hV&x|V@4x{HA^x`%-=x{rY|dLjd33=;!m3_k;7j35JJj4%UZj2HuBOcw)V%yb6E zn3)WWF|!#MW9Bh1#{6PnjAdtFjOAotjOAuvjOAlsjGfHD7`uRhF?JCHW9$+J#@OWy zjB&mUjB!y6jBzmxjB#-cjB$w!jB(c)7~`HWFvdM&V2pdgz!>+MfiXUpfib>{fib>@ zfib?0fib?3fiZ!FfiXdlfiXdtfiXdpfiXdXfidAI17pG^2F8Rd42%ia7#I_7GB74~ zFfb-gWnfI4&cK*BlYudD4g+IS2m@nMA_HSmG6Q2$Dg$Fu1_NW#D+b1-?+lDdKN%R4 zelsv8{bOKEu3=zI?qpz0?q*<2?qy(1p1{DEBFVs*qQ=0OqQStJqQ$_NqRYUTa-4xN z<q891$~6YYlp73;DYqFIQ<E4NQ}Y=ZQwtdwQ;QiGQ_C0_Q{ON!rv7ALO#RKknEIE2 zF^z$NF>N&iW7-Y|#<X1wjA?rq7}NGMFsA!5Fs4T_Fs8>aFs8>bFs3ImFs8p@U`+qX zz?lA<fie9r17ijQ17k)F17k)f17k)v17k)n17pSn2F6T(2FA=72FA=d2FA<;2FA=} z2FA<}42+q785lGFGcaZ`GB9SbFfeA#VPMQ!$-tPknt?HEEdyiL1_s7#JqE^XYX-(_ zTL#8#dj`gACkDpsT?~xb#~B#2PckrOpJrgpKF7eA6UM-plgz-FlghxDlg_}Hlf}T8 z^Ou1!my3ZhmxqBdmydxlSCD}*w}*i-cP0a4?ra9e+_?;lxeFK=^OP7E^Yj@Q^9&gn z^Nbl7^UN3+^G-7`=G|am%)7<Fn0JSPG4DPDV}1n#V}2_GV}3gWV}2(CV}1_<WBwNg z#sWqL#sX#r#sXFb#sUro#)5JN#)1|G#)38m#)1w8#)57J#zI{N#zHFw#zGqg#zH#= z#zIF1#==VsjD`0Z7z-aVFcv;$U@Uybz*v;Uz*tnyz*tntz*tnxz*tnrz*x-7z*sEB zz*sE9z*sEDz*wxvz*xMLfw6cK17q<P2FBuT42;D)85m1+85m2f7#K@z7#K_J7#K?& z85m0*F))_AXJ9P($iP_gnSrt78v|o$ECXX{76W5x4g+Ip9s^@(Ap>LSM+U~ye+-Oe z3=E8AObm==tPG50l?;q!Z48WM9Sn?RT?~w6y$p=y!VHY%3Ji?pN(_wUDh!O}>I{tK zml+t#A22YMKVo1kf5O06{+xlaBAbD+qJn|3qKbjBqK1L7qMm`Vl9hq6Qiy@EQiOrA zQjCGIQj&qOat#Ax<xU31%H0f%m3tW&D-SR*R=G1UR)sJyR)sMzRz)x{Rz))~R$X9V zth&p<SaqL)vFafMW7QJ|#_A>p#_E0s#_EX-jMbAF7^|l-FxJ>GFxGf7FxGf8FxL1o zFxCVxFxJdrV60imz*w`Ifw5*S17pnw2F6++2FBV*2FBWG2FBW02FBV12F5yO2F5x8 z2F5xe2F5xO2F5yZ2FAMi42*Sa7#Qo;F)-F`U|_7<%)nT0!N6GW%D`Cf&cImj$-r3e z!@yYon1QkW0|R6ICkDp)FAR+J-x(MidKnlSW-%}}%wb?`n8(1_u#kbV;XMOm!yg95 zhJOr<jSLKojm!*;jV%m}jT0Fd8z(a`Hcn+=Y@ETs*u=@e*d)fl*d)Qg*d)ck*d)uq z*ff=av1t(lW784_#-?Qqj7=*U7@I>F7@HFr7@LzB7@JcW7@IQ~7@L1FFt)HWFt%_q zFt%_rFt+e9Ft$u#U~E~)z}T{wfw5&N17phy2FBJ%2FBJj2FBJ52FBJb2FBK02F5lY z2FA8X2FA8%2FA8n2FA7o2FA9>42*3b7#Q0=F)+4$VPI_g&cN8-&%oF|hk>zuBLidm z76!)l?F@|VyBHYT_cAcHA7Ef?Kg__`evE;!{Uifp`xyqt_VWyk?N1mO+n+Nqw!dUx zY=6zb*#4G*vHb%BWBVrt#`Z4^jP2hT7~6j`Ft-0@U~K=(z}O+hz}R8Qz}OMXz}QjG zz}T^vfwAKx17pWq2F6Yv2F6Zp2F6Yg2FA`n2FA`12FA{C2FA`v2FA`L2FA{82FA`j z2FA_;2FA`}2FA`(2FA{E2FA`x2FA`d2FA`#2FA`F2FA{Q2FA`w42+#q7#KS@GB9@T zV_@t&%)r=rl!3AH1OsE|Sq8?=^9+ogmlzm3uP`unK4xI-e8#}o`I&*S^9KWC=Pw4v z&c6(dT}%v&T`UZYUF-~uU7QSzT@nn8U8)R>T~-W?UA7F2T@DP4UCs=QU2Y7FU7ie# zT|NwqUH%M=T|o?tU7-w&T@eh7UAYX5T?Gt`T}2FxT_p^RU1bc6U6l-sT{R4hUG)r% zU5yNkT`dfZU2P1ET^$UJT}v4lyN)n0cD-O=?B-%%?ABvo><(dI?5<#7?4HiR*u9N` zvHLOuWA_~f#_szJjNOkI7`vY^Fm}IXVC??Jz}WqhfwB7!17r7p2F4yH2F4y12F4yX z2F4x^2F4yy2F4x<2F4y~2F4ya2F4ym2F4y`2F4x-2F4y=2F9Ks2F9Kc2F9Ln2F9Kk z2F9K^2F9L52F9Lb2F9Ku2F9LJ2F9Lp2F9Ki2F9LF2F9Ll2F9K~2F9Mr42(Tf85nzJ zFfjJaVqol9$-vmNje)V}Gy`MLIR?g_iwulCR~Q(3t}`(9++twtxy!)V^MHY|=P?6g z&oc(bo|g=aJ^vUOdl?xRdzl#+ds!J6d)XNnd$|}GdwCfcd-)j{dj%O7dqo%+d&L+S zdnFhcdrcV_dqWr)dn*_iduK5)_U>a~?0v$(*vG-Z*r(3G*yqN;*q6+}*q6h=*q6`1 z*jL2B*jK{9*jLNI*w@Cu*w@Lx*w@3r*w@d%*f)uRv2O|kW8X9e#=gZ2jD5=(82eT- zF!rrsVC-AZz}UBufwAu#17qK92FAVz42*q`7#RDWGBEbNVqolh!@$`0o`JFNBLibU z0|R3}GXrD400U#cC<9}^I0Iw96a!<wJOg9DA_HT;3Ik)m8Utg$DFb7_69Z#^I0IvU z6a!;_ECXYI0s~`zG6Q3O8Utg0CIe%C4g+I<J_BQa5d&j?DFb7F7XxE|F9TzLKLca` zL<YwG$qbDB(-;{0XD~4K&thQgpToe|Kc9iIe<1^7|6&Hl{sRn*{r4FdConTGPEciF zoZ!j8I3b^bal&K<#tEAk7$;n0V4U!dfpNlj2F3}$7#Jt~Wni4}pMh~A2Lt0oK?cT& zA`FZZ#TghUN-;1_lx1L?D9^w+QIUahq8<a|L_-F~i6#t;6U`YICt5KuPPAcQoEXW# zI5CZZabh+D<HTGB#)$<Cj1x;47$=r9FixyuV4PUPz&Np+fpKCV1LMTm42%;OFfdMB z#K1UlDFfrgRSb+1*Dx?nT+hHbaU%oc!~+bB6VEa*PJG0`IPob1<HQ#Xj1yloFiw2O zz&P<E1LMRm42%=MGcZp4#lSf6F9YKw1_s7Sq700aBp4VcNii@^l3`$+B*(xwNs)nZ zk}?D1Bvl5+N$L!Yle8EZC+RRSPSRswoaD{GI4O&PaZ(=x<D?A?jFYY~Fi!f#z&Kfs zfpM}e1LNcv2FA&i42+YT7#JtFGB8f=U|^iw#lSduG6Un}ISh=G=P@u&UckUOc@YES z<RuJ@lb10tPTtJGIC&cb<K&$TjFa~;Fizgjz&QCJ1LNd-42+XsGcZp6z`!{9GXvw~ zuMCWnL3aIRV4VD)fpH2W1LG6{2F5AE42)A07#OFhGB8e2XJDM7#lSd4pMi0TAp_$S z69&d9W(<r|Tp1Xr1Tip9NoQc3lEuI{C6|G5N&y4olwt<PDP;_dQz{u4r_?YoPN`>L zoYKU=IHi?=amp+P#wl|d7^lo<V4Sj$fpN-W2F5AN7#OFlWMG`Knt^f3S_Z}`8yFa; zY+_)XvW0<h%0&joDIXXZr;0EzPBmj-oEpWzIJJR+aq1EV#;J!H7^gmBV4V7&fpHoK z1LHJq2F7W842;tR7#OEXGB8e4Vql!6%D^~HgMo3HHUr}{JqE^U1`LeTj2IZFnJ_R; zGh<+!=FGr2&5eO^nkNI}G#>`WY5ok1(*hY7r{ys)POD~MoYug=IIWq1aat<_<FqaY z#%a9_jMMrV7^h8SV4SvqfpOYm2F7U{7#OE*Wni4Poq=)ME(XSF`xzLg9b{mfc7%a( z+A#*kX;&E-r#)g|oc5i8aoR5i#%X^U7^gEZFivM?V4Tjzz&M?gfpIzy1LJgl2FB?^ z42;u785pN)F)&WoWni4H&%ij{kb!Z!F$3dtGX}=#mJE#3Z5SA*+c7XscVu9k?##eA z-IalHdJ+TU^hO58=}Q?Hryplvoc@}DafToR;|x;<#u*_Dj5CTE7-vjiV4N|NfpNwh z2F4ll85n0QWMG`Jih*&)W(LL?+ZY&U>|kJ=v73Q$#$E=-8T%O+XB=c;oN<nUamGak z#u--_7-w8(V4QJ_fpNwi2F4jb85n1>F)+^LW?-Dj%fL8OfPrzQC<Eh6aR$bjQVfhU zWf&M|YBMm-)MH?rX~4iZ)0Tm8rV|6>Ocw^mneGgXGkq8sXZkTP&J1K=oEgl(I5UZX zab`XP<IENY#+mI5j5E6!7-#k}FwUI7z&LX<1LMqT42&~pGBD1Z!@xLmJ_F;-MGTBH zw=*!#+{M5+a}NXK%zX@uGY>E@&OFS(IP(|-<IIx`j5AL&FwQ*3z&P^)1LMp~42(11 zGceBLV_=+R#K1T!gn@BZ1q0)(c?^uR4lyv!ddR>yn}LCGwk!kVY&8bP*_sTDvvn94 zXX`OA&NgRYobABCINO<lakeW1<7^KG#@SvBjI(_h7-#!4FwTx)V4NM#z&JaJfpK;! z1LN!r2FBT042-ke85n0zVPKp+lYw#eYzD^J^B5RsFJ@qzy_A7*_6i2Z*{c{BXYXWS zoV|yEarS-&#@S~W7-wH(V4QuKfpPXV2FBU985n2ZWni5BfPr!LBL>FV9~l^D|6^dB zBh0`!M~s1SjwA!)92o}2Ir0pQbCehu=cqC;&e33CoTJUaI7g3xagHGa;~X~z#yOr0 zjB~sh80YvhFwXI3V4M@gz&Iy_fpJb41LK?s2F5wj42*MP85rlpGceAnVPKpyn}Ko8 zeg?)l4;dKevNABv)n;Iv>(9VAH;;jFZZ8Al+*J&Wb2l?E&fUhqICm!l<J{d0jB}4L zFwQ;8z&Q6j1LNF_42*LxGceA*%D_1HIs@a}Ck%{ppEEGdeZ{~y_bmhC+z$+lb3ZXK z&f{lboF~J;I8Tv*ah@^*<2*G6#(CNdjPrCE80Q%<FwQe#V4Ua3z&Ou^fpK0S1LM3f z2F7_242<)l85rj!Ffh(bVqlz?%D^};oq=&)83W_IW(LN2GZ+}>&1PVnH;;jF-a-b( zc}o}==PhSooVSXBao$=6#(5hU80T$fV4Sy&fpOkx2F7{k7#QbWU|^hgiGgw66$Zw6 z*BKb+-C|&zcZY#--aQ7!c@G&F=RIa%ocEN0aXu3R<9tO1#`&%cjPuhO80U90FwWn| zz&QUZ1LOQJ42%ne85kEBFfcB#WMEui!@#(}o`G?JBLm|CF9ya1!3>NG!WbAAL^3cg zh+$w{5YNE4Ad!J_K{5m5f&vD{1;q@E3(6Q67gRDZE~sH(Tu{frxL`H|<AN0oj0@H> zFfQ1@z_?%&1LK1242%nQF)%LJ!@#&;9|PlpvkZ(2E-)}IxXZw};1L7kf+q}&3!XDD zE_lPhxZoWF<ARS2j0-+9FfL?bU|h)0z_?I_fpMWa1LHz12F8WD42%m67#J5CGcYbR zV_;lp$-ubKhJkURJp<!HCkDoa;S7umqZk+$#xO80jALM2n83ieFqwgIVHyMD!b}Fn zh1m>@3-cHl7ZxxuE-YeTT-eXRxNsc<<HAb}j0?XoFfNi{U|eL!z_=)hfpJkI1LL9v z42+BRGB7SW#=yAfBm?83GYpK2&M`19y3WA3=m7)cqQ?x3i=HtsE_%tpxabW7<Dz#A zjEg=nFfRJbz_^%!fpIZ21LI;g2FAsl42+Ap85kF9FfcAQWnf%v#lX1OmVt4xJp<!n z7Y4?~?hK5JJsB7mdowUDj$&Y39LvDCIG%xVaSj9H;z9<-#l;Mai^~`o7gsYdF0N%@ zT-?CGxVVXdaq&b3#>Mj(7#DA5U|hV7fpPIp2FAsE7#J7tXJA}>h=FnOQ3l4vCm0wP zpJrfOe2#%}@kIv4#m^WR7r$g+T>P4Waq(LQ#>MX$7#DwHU|jr_fpPH<2FAs|7#J6W z-2b0}aS0;>;}SUr#wE54j7t(37?(6NFfLinz_{cr1LKm942(+!7#Nr8GcYdoVPISu z%D}iZf`M^qGy~((SO&(WX$*`@^BEYI7BMg`EoER_TEW1$w3>l&X)Oce(s~BQr9BLc zOZyoZmri0}TsoD3ap?>O#-+0u7?*BmU|f2HfpO_c2F9hQ85ozIV_;l*nSpWXRR+eT zHy9X~-eO=}`jUZh=^F;drC%8smwsnpT*kt{xQvs5aTzxQ<1#)5#%00`jLSqB7?(*f zFfNl~U|gojz_`qefpM8P1LHD32F7K942;V{7#Np@GcYcTVqjbr%fPrSfq`*ZG6UnX zGzP|HnGB4}>KGW8H8L<RYi3|v*2=)Rtet^zSr-H2vK|J;Wqk~c%O)@|E}P82xNIr| z<Fe@tjLWt#FfO~yz_{!?1LJZ@2FB&K42;W@85ozhGcYb+#=yAzC<Ej2M+}V1Uo$W+ zf5*VM{38S7^3M#6%l|Miu3%+gT*1!3xPp^`aRm<p;|e|o#uWk#j4Ol~7+1(MFs@Ky zU|gZfz_>z#fpLX41LF!^2F4X$42&zn85mc@Ffgu&V_;m7$iTQFje&7R1_R@YYzD>^ zxeSaeY8V(-)H5)y=wV=7F_D3B#bgG?71J0PSIlN$Trrn{am4}##ubYg7*}j$U|g|} zfpNuU2F4ZF7#LUFWMEuzhk<d$eFnxAj~EzNJY`^9@q&SI#cKw}74H}rSA1k(T*=13 zxRR5BaV0kc<4Rrz#+CdGj4Op07*~oiFs>A5U|cE5z_?O|fpMiA1LH~s2F8`P42&yd z7#LSJFfguM#K5@n7z5+VHw=uc1Q-}s=`%2{@?&6JmCeAos)T`YRXGFWswxJ?RW%HZ zt6CWtSM@P4uA0cexM~Um<ErTljH_lbFs_=zz_@B91LLYS42-MRGcc~&#K5>}D+A-I z?F@{ot}rmJddR@I>KOy$s+SCmt6noOuKK{hxau<l<En2AjH`YyFs^22U|h|`z_?nR zfpN7A1LJBr2FBHj42-MQ7#LS;GBB>zVPIUX$H2JSmVt4#7X#z!cm~GRNeqmuQyCan zXD~3X&Sqd-oyWkqx{!f!bqNFG>T(9g)m03Pt7{n;S5IPKTs@V6arJZt#?><!7+23` zU|c<qfpPT$2FBHk7#LSCVPIUnoPlxmN(RQ&s~H$qpI~5I{hWbu4L1Yh8eIm)HGvF_ zYswiI*UV;MT(gUTam`Hz#x>s<7}xw~U|h?@z_^x`fpIN61LIl&2FA6L42)}K7#P>e zGcc}IVqjdW%D}i*oq=(!2?OI=a|Xt>Rt$`5Z5bHXIxsM<bz)##8_&SFHiv<6Z6O2W z+F}OAwPg&9YpWR;*VZyHu5DmoT-(IJxOO4~<Ju_<jB6J%Fs@z3z_@k=1LNA&42)|x zFfgv&#K5?AD+A-&?F@`-k1;T=z0AP4_5}mu+Sd$>Yu_<2uKmcsxb_PJ<J#{GjB9@} zFs}W}z_^ZqfpHx(1LHb22F7*L42<jK7#P<nFfguDVqjdS!oavroq=(k76aot9R|jA zdJK%~3>g^L88a}hGi6|07sSB0u8@Io-Bbp~b=w&j*WG4dT+hhBxL%ckalH!z<N9O< z#`O&hjO#lY7}xhOFs|=sU|c_ufpPsT2FCS^85q|uV_;mrf`M`UY6iyjYZ(~VuV-Lf zzlVWw{eA|<^@kW3*B@nITz`Uras4R<#`Vt`7}tMcU|j!`fpPsG2FCUO7#KG&Gcayo zV_@9C!N9nIi-B>2Bm?6H83x7;nhcB^^cWa77%(tyFlJ!fV8Ot+!HR)#gDnH&273m^ z4So!a8=@H)Hxw{1ZYXA8+)&2AxS^7PaYGFQ<A!<$#tlsjj2l`R7&mk<FmC8(VBFBh zz_?*C1LKBe42&CAFfeXd#lW~>4Fltb^$d&~HZm}7*v!DVVJidUh8+xy8+I`;ZrH=X zxZx%P<Axs$j2mSb7&qE6Fm6m@VBFZjz_@V@1LMZi42&CJF)(goXJFhUz`(dkn1OMV z7z5)b2?oYZiVTdKv=|sS=`b*E(q~}YWXQm{$%KJ%lNkf!CT9l5O>PW~n>-m9H~BCy zZt`bf+!V;bxG9f;aZ@z|<E91%#!XEOjGI~+7&mn>FmCE$VBFNtz_@851LLLz42+u= zGca!2z`(d^D+A-E?F@{Yb}=w++Rwna=^z8+rXviDn~pIsZo10AxakoC<EHNnjGKNj zFmC$Gz_^)#fpIf41LI~k2FA^t42+w37#KJ6GcaxzVqn}X%D}i;i-B>oE(7CceFnzO zh763GjTsm>n=vqMwq#)3Y{S5~*^Ys6vm*oJW@iS*&8`fLo0AwAH#agcZeGg3xcN8( z<L1{4j9Ua57`K=*Fm4H9VBAv7z_?`s1LKyN42)amFfeYJ&%n54Ap_%<RSb+<HZw48 z*~Y-QWd{S}mfZ}DTlO+AZrRVkxaAN7<CgObj9V@-FmAcZz_{fG1LKz442)auGB9rW z#lX0goq=&H4+G;?J_g3Ef((pX#TXd3N-!{Pm1bbvD$BsQRfmCbt3CtcRwD++t@aFz zTU{6!x4JPfZuMkf-0H``xHW)*aceLG<JM3H#;qv~j9UvC7`L`DFmCN+VBFfnz__)a zfpP032F9&Z85p<DU|`%jn}KobJO;+C3mF)<E@5EYx|4x%>mCNit@{`lw;o_%+<J(C zaqCeA#;qq97`L8gVBC6^fpO~v2F9(I7#O!+VPM?)k%4iW00ZMT69&d@VGNAhsu&oz zEnr~Wc7%a(+hYdC?Mw`e+vOP;w`(vkZr5gD+^)yKxZQw(al0i0<8~(o#_g^QjN3gJ z7`J;fFmCr_VB8+Sz_>k@fpL2R1LO8&2FC4a42;_|85p-`Gca!NU|`%nm4R{lEC$By za~T-7&u3uVzJ!5s`*H@x?W-6Vx36Jf+`gNEar-_7#_b0f7`LBgVBCI*fpPm42FC5z z85p<UVPM>TpMi1vBL>FpPZ$`te`a9Z!N9<{LzIDWhXe!T4rvC)9dZneI}{lhcc?Hh z?oel7+@Zz5xI>qLafbl|;|^m6#vL9Ej61v;7<c$GFz)bYVB8VNz_=rXfpJGT1LKY; z2F4vR42(PC85nmYGBEB)W?<aWz`(d;J_F;9!wif&o-#1*<YZvnsn5W;Gnj#KXAuMA z&WQ|+JJ&HV?%dA6xN{c+<IcSdj63%;Fz!6Tz_{}w1LMvs42(OkGcfMF#lX1pE(7Dv z`wWabA2KlRe8<4J^CJV}&Myp%JHIn9?)=5TxbqJK<1R@C#$9R*jJvcM7<cJ1Fzzy7 zVBBTOz_`ntfpM1=1LH0m2F6|942-+{7#Md2Ffi_lWnkQu#K5>Kg@JKbIs@ab90tZ+ zc?^uZ3K<x86*DmIYGPpA)z84VYY7A6uH_7jyH+tU?pn*hxN8Fg<F3sNjJvimFz(vP zz_@D<1LLm!42-)DF);4B&cL|q76aq1I}D7w?lCa#dceTA>oEi4u4fF4yIwLd?t0C@ zxa%DQ<E{@3jJrNDFz)7OVBD?8z_>ezfpK>U1LN))42-+?F);3a#K5?Rk%4iK0t4e7 zTL#8GZVZfjJQ*1G_%JZ;@nc}z6VAZ6CxL-+Pcj4Jo>T_LJsAv)d$Jf9_vA1z?x|#8 z+*8BAxTl_haZeKi<DOOq#y#x}jC+<aFz(sNz_@1{1LK|@42*krGcfKsz`(fY5Ch|$ zqYR9Djx#XsxyHb_=OzQ=o@We<dtNgz?s?0=xaR`{<DRb!jC;N_Fz)%qz_{lR1LIz9 z2FAS-42*kq85s8(Ffi^lW?<ZF#=yAOl7Vrr4Fls|dj`h6P7I8DT^ShndN45V^=4q) zo4~-hH<^KPZz==h-gE}Wy_pP*dvh2V_vSM&?k!?q+*`uHxVM~vac?C9<KAip#=SEb z824^xVBC9~fpPC&2F87g42=8S85s9vGcfM!Vqo02l7VsGF$Ttc=NTCHU1DI|ca?#0 z-*pDYeGeEI_q}9b-1mloao>9e#(kd{825c;VBGhefpOnY2FCqt42=6Z85sBTFfi`t zXJFhf#K5>;gn@CtAp_%nI|j!6&J2wE-5416doVEW_hn$*AHcx4KZt>Ge+UEP{$vKm z{b>x0`|}wX_ZKoS?yqBD+~3T=xWAQwaeoH`<NjU-#{K;ajQb}sFz%niz_@=g1LOV; z42=7aGBEBx!N9oxGy~)Qa}138FETLhzrw({|2hNX{#y);`|mO^?tj3*xc@N&<NhBE zjQf8xFz)}$z_|ZE1LFZk2F3#{42%cZ85j?6F)$wBVPHJK&%k&<kb&`lFazTO0|v$e z{tS!<iWwLWOl4p^u#<uDz<mbBgUk$!2bCBY4>~e19*kpPJebbFcrc5B@n9|k<H39e z#)B0Mj0YPT7!S5EFdl4YU_98xz<98if$?BJ1LMJo42%coF)$un$iR4T2?OK7<qV7m zS1~XiT*JV4@FWA{!D|eR2X8Yl9=ylEc<=!O<H4s4j0ayZFdlrxz<BTt1LMKp42%c= zF)$utXJ9-e!oYY)l7aD%Gy~%yIR?f<$_$K$R2di#X)rJz(qdpdWXZsI$c=&VP&5PM zp*RM{Lx~KGhf)|A52Z6O9?D{1Je148c&LDZ@lY`X<DoJJ#zU11jEDLd7!OTkU_3OL zf$`8(2F63v85j@EVqiQphk^0XJO;)?3m6y=EoNXmw3LDI&~gUGLq`}G4?SjJJj~9( zcvzEx@vtug<Kbck#>3MY7!Pk_U_5-4f${Js2FAm`85j@$V_-bO$iR4nnSt>L4+G;7 zQ3l2%5)6z-q!}2G$T2V;QDk5|qRhZ}M3sT@h!F$h5mN@nBNhydN30nbkJvFV9&un` zJQB;mcqEH~@kl-c<B>uJ#v>&Rj7KUN7>`slFdnI6U_8>mz<8vef$_*B2F4@v85oZ& zVPHJ6jDhjUN(ROw>lhf1Y+ztKvYCPL$W{i%BS#n*k6dJ6Jo1cz@yJUC#v^YS7>~SX zU_A1Pf$_*!2F4>l7#NTIW?($>kAd+hBLm}676!(nk_?PTWf&Nb$}un=RbXH|s>Hx} zRF#48s0IV$Q7s0>qdE+XNA(#Pj~X&C9yMlQJQ~2jcr>4Z@#tg*#-m#q7?0j$U_APt zf$^9!1LH9#2F7EF42;L>7#NSWGcX?OVqiSh%fNW7pMmk%3<kzy3mF)XEn#3hwv2)C z*h&V*W2+e$kF8~3Jhq;J@z@>)#$)>#7>^xdU_5q|f$`W02F7Ej7#NQ|XJ9<`g@N(d zPX@+gzZn>h{bOJ}&dk7goRxv`I0pmcaV`eN<B|-F$7L88k83h89@k@FJZ`|ic-)wQ z@wf#8<8dnn#^bgOjK}R67?1lgFdmO)U_4&Hz<9ivf$?}51LN^Z2FBwx42;L?85oZ@ zF)$u)Wnets!N7RDn}P9o9|Pm@#SDzcmoYFNU%|k5d=&%Z@ih#L$JaA39^c5ocziPh z<MFKwjK_B{FdpB<z<7KQ1LN_V42;KrFfg8wVPHIA$G~_ZiGlG%2Lt1YH4Ka=PBSo` zc*VeYlAVF^qyPisNnr-YlVS{vCnXpdPbxAnp44JsJgLjTc+!A@@uV>W<4H3H#*-Ed zj3=!a7*D!0FrM^cU_9x|z<4r%f$?N81LMh12F8;`42&o185mEtFfg8MXJ9<p$-sEB zkAd;zL<Yu_Qy3UePGev^xs-wN<O&AHlUo@WPwrx1Jh_K~@#KC6#*;@F7*8H&U_5z> zf$`)S2F8=O85mE#U|>A?mx1vV0|VnJW(LMnYz&O2I2jmE@h~u+;%8tyCB(pZN|b@| zlmr9gDQO1AQw9u-r;HgGPnj|>o-$`(JY~tic*=%>@su3{<0%IQ##2rVjHg@~7*Dw~ zFrM;cU_6z^z<8>af$`Kz2F6pT85mE!XJ9-n%D{Nql7aDb1Owygat6lJQy3Ue&t+gd zy?}x7^kN3a(@Pl`Pp@NOJiVQP@$@bR#?yNl7*8KyU_5=8f${WF2FBCJ85mDrVPHIc zoq_T6Ee6KZcNrK@KVV=y{fL3_^nV7%Gdv88X9O7-&xkNEo)KeUJR{A(ct(za@r(ik z;~6Ce#xsTtjAu+37|%E|FrIN^U_9f&z<9=+f$>ZL1LK(>2F5d?42);O85qx`F)*Gf zW?($i!N7Q?n}P969|Pl=i42TqrZ6y`na;p?W)=hEnYj#%XBIFpo>|PmcxD*`<C)zI zjA!;SFrGQUz<A~m1LK(^42)-vGccYx#lU#xECb`2^9+n<E-^5kxx&DB<{AUzna>Q2 zXN4FT&zdnXo{eB&JX^!Scy<v3<Jn^jjAx%RFrH&!U_7VDz<5rJf$^L!1LHXZ2F7zn z42<Wj85qyGFfg8TXJ9<%#lU#Zmx1wI00ZN>AO^;BAq<S?!WbCOMKCa)OJ!g@m%+ez zE}MbzTpk1Cxk3iUbHxmd=O!>Po}0_Scy18`<GCdajOUg!FrHh(z<6#Q1LL`k42<VC zGccYz#K3s&C<EiUa}12<E-)~jyUW0M?hymyxhD*a=bke#o_oW<c<vno<GGIvjORWx zFrH^(U_8&yz<6GTf$_XL1LJuu2FCNc42<Uu7#PnRGccYvV_-aQ$-sEthJo?CJp<!; zCkDpz;S7xDqZk;^$1pISk7HmwpTNL)KAC~>d@2Lu`E&-x^O+2c=W`es&*w2Po-bfv zJm1T}czz87<M|5=jORZwFkTR2V7y?%z<42nf$>5;1LK8x42&0cGcaB_!oYapI0NH_ zQw)q3&M+`uxXQqI;T{9yg$E3b7alP%UU<U5c;OiX<AoOtj2FH#Fkbk<z<A*|1LK8% z42%~U85l1zGcaCMU|_tc%fNWih=K8<2?OIra|XtXHVljx?HL#^Ix#R_bYWn;7|g(U zF^qxnVlo5c#S8|<i&+ee7jqdHFBUN{UMyu`yja1&c(ICs@nR<f<HczVj2BlkFkW28 zz<6;Z1LMUl42&1IGcaD<#lU!RF9YMn0}PB84>K@cJjTFy@gxJ|#d{2l7auY(UVO~J zc=0I%<HhF;j2B-qFkXDiz<BWk1LMU{42&1QGB95J&cJx_Cj;XpF$Ts<rVNaiA{iJj zRWmSNn$N&^=_mu^rI!qhmpK?1FRL>!UUp$%yzI-scsYQ9@p3Q&<K<8W#>;UGjF;0H z7%yirFka4OV7y$wz<9Zsf$?%F1LNg#2FA;k42+lC7#J^iGB955VPL%6&%k(j5(DGq zDGZF4H!?6@-p9ar`7i_H<zoztmrpP-UOvmfc=-YY<K;^XjF+!4FkXJlz<Bu?1LNfv z42+k*GB95L#lU#^4+G=n{|t;*SQr?uurV-R;bdUE!p*>VMT&v(iaG=16&nV|EA|YG zSDY9auedTWUh!aHyyDHkc*T!_@k$^A<CPEw#w+0rj8~!<7_a0rFkUHQV7yYoz<8yM zf$>TO1LKuy2F5FO42)MA85plLGcaChV_>|}!N7Q>i-GaVat6jL#~2u|ykcOy%EQ2T z)qsKVY8V6K)hY(Yt1}rGukK)Ayn2;^@#;MW#;Xq*7_UBIV7&T_f${2l2F9yD7#Oeq zW?;PfkAd+TBLm|#76!&^Yz&Oogc%sGi7_x<lVo7LCd0sZO`d`Anj!<^H9H2zYu*fu z*8&(AuLUtMUJGSlycWg4crBKJ@mc}{<FzCP#%qNPjMqvS7_T)lFkWk8V7%7Bz<8~j zf$`b|2F7cX85plkV_>{CgMsndat6k0TNoIxon&CVc7}oR+Ia@XYnK=puU%zeymo_u z@!D+$#%uQ&7_U8KV7&H(f$`dN2F7cD7#OepXJEX}$iR4=nSt>-D+A+o4hF{S+zgD@ z`4||l3otNV7iM6*F3P}oU7UgOx(Ng0^<W0Z>*WlL*Jm;?Uf;{Wc>OU0;|+EO#v5u3 zj5k~v7;hvoFy6>!V7!sXz<8sOf$>H$1LKVv2F4q$42(BA7#MGKGcexhV_>{7k%95X zWCq3?QyCa<OlM%cF_VGu#xe%R8!H(YZ>(Wpys@5v@x~?w#v5B07;ju;V7zgUf$;{& zu4fF4H(oF>-gwKvc;f>D<BiV@j5oeAFy3TgV7$rBz<5)Df$^p+1LI942F9Bz42(C` z85nQsFfiWKXJEW(#K3sdgn{v<GXvwz00zdJsSJ!aGZ+|eW-~C}%wu4@S;)Y6vxI^1 zW;p}n%_;`Qo3#v#HyaojZ#FY9-kia}cyl%b<ITAYj5p^qFy36qz<6^B1LMu*42(Bd zF)-d-!@ziRJp<#-jSP%8H#0EayuiSC^F0IOEnx=6Tc!+*w;~xBZ`Cs}-dfDSc<T@Y z<E@7bjJN(VFy3ZoV7$%6z<8UNf$=s!1LJK82FBZp42-u`7#MG>F)-fNWMI6l&A@nD zmx1xN6$9gKTL#A44h)R9of#N!yD>1{_F!PVoyx#?yNH4Db~yv%?Mep5+cgY~w;LH4 zZ#OeA-fm-HyxqaTczZen<Ly}tjJM}7Fy3Ctz<7Hd1LN%t42-uoGcexX!N7QX7X#z% zy$p=E_cJiwKF7d#`!)mP?GFr$w?8v5-u}kGc>5;<<Ly5TjJN+YFy3KeV7$Z1z<7s) zf$<JE1LGY&2F5$e42*Zw7#QzpFfiWHVqm<Z!@zh)pMmj?Ap_$bV+O`MrVNaCEEpK? zSTQi(v0-4m6Uo4Mr-Fg;&Kw5DJNp<I?>u5)yvxDBcvpvk@vb)m<J~L<#=GqdjCUt6 zFy5Waz<75W1LNHp42*XdGBDm<#lU!XEd%4-4GfHTH#0Ea-NwLpcLxLG-CYcfcaJkL z-aW;@c=s#=<J}7kjCU_HFy6h&z<Bo)1LNKQ42<_!7#Q!dF)-faWMI6<$G~_`fPwLz zFazT~Q3l3)Dh!PG)EOA>nJ_Tkvt(erXU)KP&yIodo-+gEJy!<Cdmapo_q-Sw??o~& z-b-U(yjRV@c(0Cu@m?bX<GmIJ#(V7yjQ6@281MBmFy5QMz<6&m1LM7E42<_?GBDm- z$G~`RBLm~T%?yn9wlXl@+s?pvZx;jOy}b;K_x3X|-aE*^c<%@U<Go`HjQ373Fy4F0 zz<8g9f$_cu1LJ)!2FCk&42<`uFfiWV!N7R`Is@bVZw!nNgc%qg$S^QIkY`|gpv1uV zK!t(vfi45%12YE32Nn#B53Cp%AJ{N3KCok8eBi*q_`sKe@j(Cs<AY!Z#s^^xj1M9i z7#~D4Fg~bYV0_TZ!1$nxf$>2P1LK2!2F3?d7#JT+V_<wRlY#NUYzD>$s~8v`Y-eD6 zu!n*1!9E7Y2L~A#9~@&~d~kw+@xf^Z#s_B^7$4kWV0`eBf$_mV2F8bs42%z17#JV2 zGcZ2nVqkp8%fR?hfPwL$FazU5F$Ttmk_?OwWf&MA8Zt0GG+|(TXvV<!(1L;Sp%nw; zLt6&MhYk#k51kkoAG$CwK6GbbeCWx*_|Thy@nHr7<HL3a#)qpJ7$2TxV0`$If$@<z z1LGrW2F6EG42+K|85kc;V_<wVpMmkwA_m4sOBom+EoWeSw1I)~(M|@&M|&6;AMImc zd~}e3@zG%h#z#jP7$03?V0?6yf$`A|2F6FX85kekV_<yrfPwMRUk1j<Tnvnl`571= z3o<Z17GYp~EXlz5Sek+Hu^a>AV+97r$NCJ6kBt}@AKNo9K6YVXeC)=+_}G(y@v$ER z<KqAZ#>c@7jE_SZ7$2uFFg`A1V0_%h!1%b6f$?z<1LNa<2FAye7#JT<Wng?fgMsn! zYzD^1^B5Q(FJxeRyo7=A@lFQD$9otUAMayee0+d`@$n%B#>Yn)7#|;JV0?U%f${Na z2FAzd7#JU4U|@WFiGlI)dj`fQd<=|Fj2IZ7gfK8ZsbFAyGLM1r$sq>DCl47IpE58o zK9yx)e5%I4_*9dD@u?02<5N8b#;4{Cj87dH7@s;ZFg|r*V0`Mv!1&aIf$^yq1LM<h z2F9mR42(}>85o}?Ffcw%W?+1p%E0)viGlHHKLg{_DGZEHr!g=-oyoxXbRGla(*+ES zPZu*VK3&Sd_;d>c<J0X7j8Bg+Fg`uW!1(ku1LM<k42(}NGcZ2A%E0*a1_R^MTMUd( zUotR0{l>ufjGKY+86N}VGeHK%XCe%Y&%_xRpGh$=K9gl&e5Sy__)M9B@tGO}<1<YL z#%Fd6jL#ey7@s*aFg|l-V0`Az!1&CIf$^Cy1LLy*2F7PW42;i085p01GcZ1jWMF(& z#=!V&Dg)!QoeYf6ZZj}G`_I7mT$O?GxhDhT^9%;Y=j{xP&zCSTK3~hg_<REc<MYi7 zjL)|+Fh1YM!1(+)1LN~k42;juGB7^Bz`*$YG6UoDs|<|KZ!j=Ef6Bo4`~?H!^VbZF z&)+dHKL5zT`1~^i;|l=>#uu^-j4zZJ7+<I`FuqV{V0@v&!1zLsf$@bQ1LF&02F4do z42&;a85m!<GcdjgVPJd_$-wv`nt|~}90TKvWCq3;sSJ!SG8h<NWHB(lsAOP#(Z;~| zVm1Tgi+K!;FBUQ|zF5M*_+mK&<BL@cj4#$QFuvHp!1!V_1LKQr42&;!GBCb4$H4gF zA_L=#%M6S!t}-ybxX!@%;uZtri#rUAFYYlgzIedE_~J1G<BO*Zj4z%uFur7AV0@{} z!1&Ugf$?P~1LMnH2F91085mz)XJCB!je+r%C<EgwBL>D-)(niV>=+ndIWjQ5a%NzB z<-@@EDwKioRX79Vt4IdMSJ4cNuVNV(U&S*pzRF=>e3j3@_^OD3@l`1U<Esh=##dDg zjIX9MFuq#C!1!t<1LLbT42-YVF)+T`%)t0+8w2C39Sn@Gb}=x%I?2HJ>KX&%tJ@5W zukJE1zIwpG`06PG<E!TkjIUlXFur=j!1(Gn1LJEB2FBO242-W87#LqGGcdkZV_<x( z$-wwphk^06J_F-xBL>FTrVNa)Ef^SITQe}e4q#w>9n8S^I+TI&bvOg#>qrL1*D(x? zuj3gQUnemzzD{9ae4Wm~_&Sq;@pU!><LeFv#@EXk7+;@eV0`_Sf$@zX1LGTW2F5qh z42*B87#QEoWMF)=je+saeg?)jhZq>&9A#j9bDV+k%>@R=H#Zp=-`rtfd~=_H@y#O! z#y3wH7~ec+V0`n1f$`0E2F5qP7#QFDWng^Ez`*#HiGlI0JOkrf9R|j?h762vO&A#8 znlUiGwPs*^YsbL&)`5ZXtrG*|+du}!w;>FSZ^IZE-zGCKzRh4@e4E9<_%@e;@of<U z<J%Gj#<%4RjBhI$7~gg<FutA2!1#6*1LNDZ42*9#FfhK|%)t0|8w2CpoeYd`_b@QN z-Os@I_7DT(+oKGOZ%;5VzP-!9`1Sz<<J(6JjBlSXFur}p!1(qh1LND*42*BzGBCb< z&%pTh69ePhFAR)tzcDbr6J}t1XT-qxE{uWkT?GT<yEzPu?+!6AzI(>N_@0%4@x2NI z<9kO2#`j(fjPHFJ7~cmlFuo6BV0<6V!1z9ef$@DB1LOM)2FCYU42<t{7#QE@F)+Tb zW?+0@$H4f$k%94j3j^c(b_T}xoeYfcmoYHD-^{@Heg^~N``rwT@Aon=zCXmk`2HvZ z<NM<bjPFk}FuuRR!1(?)1LOM_42<vJGBCb>&%pTp69eP>?+lFZe=;z>|HHue{vQM5 z2VMro4^j+_AM_a*KNvAEelTTV{9wVr_`#Zi@q--$;|E6u#t$wGj33+?7(aM1Fn;i5 zVEmB8!1y7Rf$>8+1LKEG2F4HB42&Q07#KekGBAE9VPO1F#=!WYl7aC<H3Q>^S_Z}s zvltjZ>||j4aF>Dc!+!?GkID>;A3YfuKjtzpe(Ygj{J5Hd@#6^w#*Y^n7(ZTNVElNU zf$`%_2F8z%7#KgkW?=mIj)C#x2L{HEpBWfGeq~_%_??0A6AJ_5Cw2zLPh1R)pLiJ< zKM61}eiC9}{G`vo_{oNW@slG1<0lse#!qexjGw$27(e+jFn$VPVEh!s!1yVVf$>uc z1LLPc2F6ci42+*D7#KfQGcbN?U|{^z#K8Eem4We7I|JjVX$*{?7Bet@+QGp1X*UDo zr+o~JpAIrGemcUy_~|$U<EK*$jGxXjFn+qg!1(Dh1LLP_42+*%GcbO7$H4gM0|Voy zPYjHozA!L;0=f4W1LLQ^42+-tGcbN;VqpBt!oc{Mje+sAG6UmhCkDpPX$*{?I~W*0 zuVG;Pe2Iba^EU>@FQN>LUrZPnzXUQceu-jW{1VH+_$7gX@k<f|<Ckm(#xErdj9<za z7{637Fn+0GVEj_U!1$$(f$>W>1LK!I2F5QF85qAzVPO0+oq_SoOa{g;+ZY(X9A;qr za)N>J%P9uNFJ~DTzg%Kq{BnhX@ym4v#xFM+7{9z=VEpo$f$_@^2F5Rc85qC(XJGuw z#K8EKoq_QyCj;YG9tOs*d<=|VWf>U1YB4Z=wP#@b>cqhK)s=zqs|N$)S8oQ!uYL@S zUjrE!zlJa{ehp_}{2Il;_%)V+@oNzS<JVFK#;@fJj9)7m7{69CFn+CLVEo$1!1%S9 zf$?iA1LM~Y2F9;l42)lU7#P2<WMKSyf`Ret8wSR2d<=}=j2IZdMKCaat6^aLHk*O* z+b#yiZ`T<Zzdc}J{PviE@!K;7#&0he7{7gFVEp!rf$`g42FC9U42<8I85qB_F))7T zU|{^t#lZMooPqJX6a(XTSq8@M3Ji?jl^Gbnt1>WtcVb}t?$5yZJ%oYrdpHB*_eciD z?{N%_-xC=azb7*=eotj!{9eMq_`RHg@p}sc<M&Pm#_!z>jNkhh7{5<uVEjInf${qc z2FCBR7#P2=WMKThje+s|X$Hpc=NK5jUu0nXeuaVY`*jA!@3$Bjzu#qG{QiJ}@%v*2 z#_!J<7{9+{VEq1%f$;|;1LF^72F4$(42(b685n<XF);q%Wnlavz`*!Jh=K8kC<EgU zaR$a8k_?PL%orGdgfcMxsAORLF`I$$$9@LJA5R$=e{wP~{?uS#{OQiX_%nrp@n<dr z<Ie&H#-GIuj6X{m7=P9=F#c?3VEoy|!1%M5f$`@A2F9P085n;~Wnla{oq_S^Oa{iE z%NQ7cu4G{RxrTx9=XwUlpPLvMe{Nx5{CSaq@#j4T#-EQF7=J!vVEp-lf$`^C2F9Ns z7#M$kW?=mJm4WdW3j^aXb_T{@0t}45gculq$ultiQej~HrN+ScOOt`|mmUM-FGB{# zUnUHUzswjIf4MR+{t9AX{FTnY_$!Nn@mDSb<F5h+#$Uw@jK9hl7=KkVF#f7xVEk3j z!1$|)f$>)>1LLn*42-|#GBEy{&%pR=Ap_&D#SDzUmN78?TFJopYYhYAuXPNJzcw;3 z{@TpI_-iWz<F88$jK4lIF#Z;0VEk>)!1z0wf$?`E1LN<d42-{zFfjgp%)t1Efr0T4 zCj;Xj9tOrg{0xkL1Q{6rNHH+}QD$KLqsGAaN0Wi^j}8OlAAJVKKZXp9f9x0-|2Q%* z{&8Vo{Nv8R_{WQZ@sAG!<DX0h#y@2YjDM;b82{8UF#c&^VEog{!1$+wf$>il1LL0_ z2F5?L85sY}V_^KVnt}1p1_s7In;01XY-M2lvx|Z8&mIQGKl>RN{~Tms{BwbU@y}fb z#y_7J82@}_VEprgf$`682F5@C7#RODGBEySVPO2r&cOJWi-GYkF9YLW0S3mustk;O zH5eHGYB4bW)nQ=#tH;3j*N}nnuQ3DTUsDFgzvc{#f2|l8|JpDx{<ULZ{2R@{__vCI z@$Wna#=i#`82>(DVEo6$!1zy(f$^U&1LMCO2F8D#42=IKF);p{%E0(<1_R^2SqzN- z7BevZTf@NkZ#@I!zfBB`|F$wP{@cO8_-_{j<G(!&jQ>tDF#bEk!1(Vx1LMC-42=J- zGBEzT&cOKZ3j^bSMh3?JYz&P5IT#rKb2Bjh7hqugFT}w3UzCCIzc>Tqe>Dci|C$Vp z|IHW}|64OK{<mdd{O`cP_}`U*@xMC*<9{y(#{WJHjQ^t<82@K5F#fM)VEo^}!1%wJ zf$@JE1LOZr2FCwA42=K#85sXhVqp9~m4Wg93<k#kvl$rwZ(v~jznOvY|5gUZ|JxZD z|L<gA{J)2R@&A4X#{UNy82=w;VEliKf${$d2FCxV7#ROQXJBGrV_;&?VqjwMVPIk? zU|?dH#=yj|i-C#ZCIb`04+bViQ3fVPIR++1MFu8D6$U0oH3lX|eFi2*3kD`eYX&Ap zI|e33M+PQF7X~IqHwGp~4+bX2PzEN(2nHs`Xa*+6I0h!hL<T0tWCkY21_ma^UIr${ zNeoPkQy7>Sr!z1y&S79;oX5b#xR8N~aWMlE<0b|s#;puYjE5MQ7>_eBF`i^#Vm!mZ z#CVZ`iSaT66XP`oCdL~KOpMPNm>9n>Ffnm5Ffs8kFfs8nFfj=+FfoZTFfmCmFfmCp zFfqw7Ffl1IFfpkxFfpk!FfrLMFfrLPFflnYFflnZFfq9@Ffn;BFfn;CFfsWsFfsWt zFfj!(Ffj!)FfoNPFfkP|FfmPJU}D<Jz{GT&fr;ri0~50%0~50=0~2!!0~2#I0~7NC z1}5f}3{1>x7?_yXGcYl4WME?6#lXaTn1PA;C<7DoaRw&llMGDErx}=-&oVGE-(p~5 zzRSSG{D6Up`7r|%^D_n}<`)c1EUXMnEJ6%SEaD7IEK&?iEHVsCEQ$<FEGi64ENTo) zEE)_<EanVMELIFmEba_UEItfOEPf13EP)J6EMW{xED;P$EYS>1EU^qsEIABJER_sQ zEPV`2EE5@+Sf(&Au}o)RVwuIj#4?wGiDdx;6U$--CYEIkOe`xIm{`^@FtHqDU}8DK zz{GNlfr;e=0~5<B1}2uX3`{KN8JJiuGBB}RW?*8u#=yjKgMo?V76TK@cLpX_F$N}9 zD+VUk7zQTR1_mb9WeiNLrx=)6UotSUaWF8ksWLFJ=`k>|88R@jnJ_T1nK3Z2*)uS) zc`z`sc`-1t`7kiC`7toD1u!tN1u-zO#WOImB{49ur7|$FWiT+YWiv3b<uWj_bulop zO=n<Yo5R4wHjjacZ6N~_+cE|wwiOIaY^xcV*w!*IvF%}CVmrye#CDE>iR}Ud6We75 zCbk<4Ol-FpnAq+zFtOcdU}Ag6z{K{Ofr(v!fr(w1fr(v=fr(v`fr(v)fr(w7fr(v- zfr(v}fr(v%fr(w4fr(v@fr;Ijfr;IXfr;INfr;IVfr;IRfr;Ipfr&kcfr&kofr&kw zfr&kefr&kafr&kifr-7Efr)(<0~7l`1}63g3``s>3``ta3``t;3``uk3``t73``s= z8JIXWF)(p#Wnkji!NA0^i-C#bFas0E83rbf^9)QJml&8ht}-xj++bkhxW&N4afgA4 z<0S(V#~TJFj`s{q9G@7NIKDD4aeQZB;uK+E;#6c{;#6Z`;?!VZ;?!nf;xu4j;xuAl z;xuJo;xuPq;&fwR;`C%-;tXS8;*4fs;*4cr;!I#*;!I^=;!I~?;>==T;>=-S;;d$1 z;_P5x;+)IC#JPZhiE}Xn6X!ApCeD=%Oq^>Nm^jxnFmY~TVB*}$z{I(Ofr)cB0~6;3 z1}4tS3{0F?8JIY)Gca-9WMJaF!@$IOpMi<<5d#zF69y*E=L}4oFBzCPUo$XqaWF7( zsWUKfc{4C^<uWjFO=Mu=+Rnhlb(?{S>lXtPw<H4-w;2Nyw><+Bw-W;sw<`k^w>tw9 zcK`zucO(N7cMJm)cN_x~cOnB5cQOMLcPaxDcRB+TcL@U%cR2$ScNGH@cP#@GcLM_x zcM}5>_k0E>?llZd+#4B~xHmH}ac^T_;@-``#J!h+iTeNp6ZatoChm(2Ox#x(n7AJ@ zFmXR)VB&tkz{LHUfr<MA0~7Zr1}5&W3{2eL8JKw37?^m38JKu97?^mp8JKwV7?^kr z8JKuX7?^m>8JKvi7?^l$8JKt+7?^mR8JKw77?^mX8JKwD7?^kx7?^mH7?^lc7?^m{ z8JKu78JKvo8JKu-8JKtq7?^m97?^lU7?^k_GBELMU|{08!obAyje&_*ih+sOfq{uP zg@K8;nSqIS5d#zNeg-Dq6AVnerx}=d&oMCZUSMG2y~)7D`-p*w_Xz_N?=uD_-WLo^ zyssFTc;7HE@&06B;{C(G#QUFtiI0haiI0_miI1IuiBE-riO-OMiO-CIiO-UOiO-sW ziO+$7iO-pViO-dRiO-#Zi7$+Si7%Ofi7$hJi7$(Ri7%IdiLZ!(iLZo#iLac2iLa7@ ziLZl!iEk<c6W=NZCcd={One&{nD{m`F!60;VB*`!z{IzQfr)QF0~6mN1}46v3`~3{ z7?}9(GBEKyU|`~V#K6S&gn^0g83PmFO9m#sHw;XC?-`i*J~A-zePLkY`^Lb;_k)3n zUzCA~--LmQKZ1dYzlwp0e;xx9{}Bcz{uc~P0_+S-0%{CQ0?rIf0zM2(0{#q40znK+ z0wD}c0<jEC0%;6P0+|d<0yzv!0{IL~0!0i=0woMg0*wqz0xb+o0__Y;0$mJD0=*1O z0{sk30&5tU1a>ko3G8EF5;(xXBygC4N#FznlfWqkCV{gIOakW_m;~-IFbO<lU=n!8 zz$EaQfl1&i1CziH1}1^O3`_$58JGl_7?=cE7?=cw8JGkW7?=c28JGku7?=dD8JGm^ z7?=bd8JGlJ7?=dz8JGmU7?=co8JGkE7?=cu8JGk!7?=dJ8JGlf8JGm~8JGkM8JGl1 z7?=dh7?=br7?=dB7?=cW8JGm?8JGkc8JGm;F)#`4WndC~$iO7T%)lh1&cGz(%fKX5 z$iO5tfq_YAJp+@_83rbys|-v+HyD_NZZj|m-DO}Bdd9#c^qzr9=pzG@&}RlFp|1=~ zLf;vfgnlwG39~UU33D<q3G*;83G*{B2@5eW35zf=2^%sn3EMF+2|F_|3A-^c341Uw z3HvfI2?sDR2?sGS35PH+2`4i!2^TOh370Z3370c430E;N3D+|)2{$q@3AZpX3AZsY z2~TBU5?;i>B)px0Nq83nlki>!CgB4NOu~m5n1qipFbSVzU=lvVz$AR0fl2rh1C#Jo z1}5QG3{1jr8JL9MGcXB%WMC5h%)li4je$uR<la9FOv3*dm_!&Em_(Qvm_%3^m_(Eq zm_!^Im_$+;m_*tcm_$}HFo|4bU=sPtz$7Zdz$9wSz$6;Lz$6;Uz$6;Oz$6;az$BW; zz$BW*z$9ACz$9A6z$9A9z$9A3z$9AFz$Dtpz$Dtjz$Dtnz$Dtiz$7}Afk|`*1C!`% z1}4#Y3{0X68JI*DGcbuBU|<qG%fKXhiGfM<Dg%?~bp|HUI}A*s_ZgT(A2BeAK4D-I z{mj55`i+4}^d|$87#jnV7&ilx7%u~pm;eKlm?#62m;?ipm^1^Em@EU6m<|Jzm?Z;~ zm>&a^SRezFSO^1?SU3ZdSQG=3SS$mRSONo+STX~XSQ-P9SSACLSPlb|SR(_ISPKJ_ zSQ`VASO)`>SQi76ST6&USU&@k*hB^<vB?ZfV$&Fy#AYxsiOphQ65GzeBzBE~N$eK` zlei26lehx|lXw~flXw>cllV#oCh-#tOyW-&n8e>PFo}O;U=shrz$E^Sfl2&71Cs;? z1Cs<d1Cs<F1CxXx1CxXZ1CxXp1CxX@1CxXr1CxX%1CxXf1CxY41CxXy1CxXw1CvBF z1CvAo1CvA&1CvB51CvA+1CvA!1CvBP1CvA{1CvAp1CvBE1CzuA1}2HA3``Q!8JHwy zF)&HYXJC?8$iO7Agn>z783U8VRt6@CLkvt3*BO{3ZZR-P++|>rc)-9U@tA>0;u!;z z#7hPyi8l;P67Lz9Bt9`PNql8slH_7wlH_GzlH_M#k`!cMk`!iOk`!ZLl9Xg%l9XX! zl9Xd$l2l}1l2m43l2m12l5}EVl1yY^l5AyQl3dQfBzc;FN%A8Dlawd}lavVqlT<JR zlT-l%lT;-GlT-}@lT<welT;%ElT;T2lhkAeCaGx*Oj0u$n55<~FiFj4V3JzMz$CSp zfk|ou1C!Kd1}3R(3`|lx8JMK@Ffd8&V_=fH&A=q}f`LiuEd!I(dj=+{PYg^_-x-*s zeljpg{b68|`p3W|&C9?fEx^DeEy=(nt;WD4t<AtBt;@h9ZNR`JZOXtTZO*_XZN<PO zZNtDM?aja>9l^jPoy))^UBJL3UCh8FUB<v9UCF>CUBkd6UC+QI-Ne8o-O9iu-NC>l z-Oa!xy?}v9dNBi&^il>U>E#Se(kmI5q}MPoNv~&MlHSC?B)x@!NqRd2lk`poCh6S_ zOwu<Pn54fmFv&<WFv-|5Fv%n`Fv+wtFv+ZDV3Ik-z$EjMfk~E)fk~F1fk{?~fk{@B zfk{@Jfk{?@fk{@Afk{?}fk{@Mfl1bgfl1bsfl1b!fl1bdfl1b#fl1bjfl1bvfk`%i zfk`%qfk`%>fl0Q8fl0QJfl0QRfl0QFfl0QTfl0QPfk}1(1C#6|1}52s3{0|17?@<& zGBC;RVqlWp&%h*mkbz0|2m_PsNd_j_(+o_q=NOn|FEB94-e+KveZ#;c$H>4W$HKrQ z$Iiec$Hl-T$IHMZC&0iYC(OVkC&s`eC&|DhC&R!bC(pnnXTrcFXU@PRXUV`MXU)JQ zXUo7O=fJ=u=fuDy=fc1w=f=P!=gGh%=gq(*=gYt(m&L#&*U7*nx0ZoP?mPpN+-C+R zc}WH)d0Pf1`4|Q!`Dz9x`56pM@(UT5<d-lo$uDPMl3&TdB)^G)Nq#p2ll(pgCi#O5 zO!7w<nB<Q$Fv*`}V3NPaz$AZ@fl2-j1C#uH1}6DO3{3J*7?>0o8JHCK7?>1<8JHBr z7?>0!7?>1f8JH9l7?>247?>1P7?>1{8JHBz7?>2C8JHA27?>2i7?>1%8JHA;7?>17 z7?>2o8JH9z8JH9@7?>1F8JHBh7?>1#8JH9%Ffb`hW?)j7#=xX7lYvQL4g-_Id<G_k zMGQ;|OBt9HRxmIr>}6n5IKaT9aEO6P;Rpkh!Z8LWg_8_S3TGIY6wWg+DO_Y=Qn<pv zq;QRaN#O<qlfqX9CPfhjCPfPdCdDWQCdE1iCdDNTOo}HMm=vEgFe$MyFexcBFe&LU zFe&LXFew=^Fe#ZZFe%wGFe$k)Fe!O5Fe&*kFe&*nFewEwFe!yFFexQ6Fe#-lFe#-o zFezm*Fe&9SFe&9TFe&vgFe%MsU{adLz@)U0fk|mG1C!DU1}3G|3`|OE8JLvTGcYOb zV_;G`$iSp@n1M;@0t1uMRR$)d>kLdvw-}g|?lUkcJ!D`~dcwe@^o)T?=_>=1G7|%n zvN!{ivJ?Z8vMd9WvH}B>vN8jcvKj-EvL*wQvJL~2vOWWovJnH5vMB?TvKIrBvM&RZ zvOfcpav%efaxepvau@@XawG$jats5LavTGbav}qhaxw#xaw-FpauWlS@<IkC<)aKt z%Fh{?RJa+KR16uIR6-e;R7x0_R3<Ypscc|iQrXGCq_T&BNo79+lgdE`CY4hROe&Wd zm{hJYFsa;RU{blmz@&1Yfl1{d1Cz>Q1}2pc3`{DY8JJYQF)*q8WMESH!@#8SkAX>5 znt@4GgMmp^mw`#ufPqQXh=EDfoPkNzih)VhmVrsto`Ff#kAX=wkby}xih)TrhJi^n zlYvP!kAX?GfPqQ1n1M;Pf`Li3nt@5Rj)6(Ffq_Z2pMgnr4g-_wMg}I;EeuSm+ZmWt zcQG)j?qy(7J;1=EdYFMp^%w(_>PZGB)iVrCs^=M)RG%;~sXk|5Qhmw5r23kHN%buQ zlj;WsCe=?2OsZcPm{h+pFsc4zU{d|fz@++@fk{n@fl1Ahfk`cvfk~~Nfk|yK1C!cG z1}3$)3{2`g3{2|U3{2`C3{2{Q3{2`F3{2|b3{2{g3{2`t3{2|T3{2{|3{2|z3{2{U z3{2|93{2{!3{2`x3{2{+3{2`B3{2|X3{2{M3{2`17?{-8GBBy{Vqj9=&%mU9h=ED{ z2m_P)Nd_kMGYm}X=NOpOFEB8v-)CS_f5X6}{*i%6{WAlT`Zoq9_1_Fk>VFxSG#D6| zG?*BeGz1x#G~^hVG>jRTG|U*7G%OjIG;A1{H0&9eG@KZiG+Y^&G&~rXG`ty@H2fHt zGy)lzG}0KDG%^{OG_o0(G;$f3H1ZjkG>RCQG)ftmG|Cy6G%6XGG-?=_H0l_bG#VI~ zH0CleY3yNO(s;nYq{+m<q^ZWhr0K)Jq*=hgq}k8Fq`8iPN%J%Vljao$Ce7;%Oq#bC zm^AM&FljzzVA6cYz@+(+fl2c-1C!=A1}4oP3{0B87?`x!8JM)V7?`wp8JM&L7?`w# z8JM(08JM(;7?`x|8JM(O7?`x&8JM&@8JM*E7?`vI8JM(!8JM&}8JM(E7?`xu8JM(6 z7?`vw8JM)H8JM){7?`x08JM(M8JM&>7?`xW7?`wXGB9Z^V_?$S&A_C!kAX?+AOn-u z5e6o$;|xq%rx=*D&N47*U0`6+y3D|&b&Y{Z>m~z});k6!t&a>$TAvx1w7xPhX?<s4 z(gL~nF9Va-e+DLPMg}Hr76vA5HU=hb4hAM|RR$()7X~Kn3<f6cE(Rv;bqq|}R~VSI ze=soVh%+$hm@zQv1T!${#4s@F#4|AIBr!1Qq%bh)<T5bnlrb>rR5CE>)G#pV)H5*Y zG%+ygv@kH~Ok`lvnZm%NGo67+XBGpK&Rhm2o%sw*I(rzHbWSob>6~L=(z(FEq;r{p zN#_Owlg=#$CY`$sOgi@&m~`GTFzI|`VAA==z@*E}z@*E{z@*E;z@*E|z@*F1z@#h0 zz@#g}z@)3pz@%%yz@+QSz@+QJz@+QVz@+QPz@!_<z@!_(z@!__z@!_+z@!_?z@(eN zz@(eZz@%Hjz@%Hvz@%Htz@%Hxz@*#Az@*#4z@*#8z@*#3z@*#7z@*#Dz@*#Hz@$5o zfk}5A1C#Dq1}5E)3`}~$3`~0F3`}~l3`}~B3`}|p7?||-Gcf7hVPMjG%D|-ef`Liz zH3O60TLvb*ZwyR&{~4I{85x-LnHiY$Ss9r0*%_GhIT@Jr#Tc0MB^j9XWf++B<r$dt zl^B@xRT!A`9T}MP{TP_^gBh6gLm8O#BN&+UV;PwA;~ALrlNgxvQy7@^iy4^o8yJ}M zTN#-2+ZmYjyBL`C`x%(@Co(YUPhnuvpT@wXzm$PVe-i_f{&5B-{ZkA~`ezxK^e-?l z>0f4G(!a*Qq<@ovN&gN5lm2}MCjCbYO!`k5nDl=!FzNqgVAB83z+}M4z+}M8z+}M2 zz+}M5z+}M9z+}M7z+@o6z+@oAz+@o8z+_;^z+@1>z+_Ouz+^CufyrPO1Czl61|~xm z1|~yg1|~x%1}4LJ1}4J{1}4L71}4Ki1}4J-1}4Kw1}4KM1}4K+1}4J}1}4L91}4Kk z1}4J^3`~Y|8JG+gFfbV|W?(X0#=vB_l7Y!^H3O632?i#^s|-wrw-}fV?=UbK-e+Jk ze8RwF_>6(c@FfG2;cEsa!(R+chJP8DjJOz>jQAOtj072&j6@iij3gPDjHDTujN}-Y zj1(A{jPx0pjBFT~i~<>$j6xWgjKUe1jG`ErjA9v>j1m}_jFK6cjM5mGj4~ORjB*&5 zjPe<nj9M6&jM^EPj5-;ZjJg?^jCvWEj3zKJ8BJzjGMdW3WHg<D$!Hb>lhGUoCZl-_ zOh&sIn2c^QFd6-0U@}%<U@~@LU^32PU^4DwU@~6Iz+`-efywwK1C#M51}5XL3{1v9 z7?_NIF)*1hGccL(Fff_$GccJ5F)*2kGBBA)Fff@&F)*2^GccKGF)*3vGBBAKFff@I zGccK$GBBA0F)*3LGccK?Fff^<F)*2AGBBCsF)*1FFff@EGccKyGBBC6Fff_4GccJ< zVPG<u$-rbXn}Nw>9s`rfVg@FYr3_3aD;SteRxvP{>||gvImW<ba+`t4<Q@Z)$wLMv zlP3&JCeIm|OkOcCnY?9SGWo#3Wb&DT$>bXYlgUp8CR08JCR0HMCR1SsCR0%cCR1?+ zCQ~T}CR14kCQ}6lCQ~H_CR0@gCR23=CR0rYCQ~;CCeu^~Ceuy^CezgnOs3}<m`uMi zFqug*Fqv5}FqwrjFqxGwFqzddFqt(lFqt(oFqyS7Fq!o+FqutfU^1J<z+^U;fyrzE z1C!Ze1}3wm3`}Or8JNsgGBBBKV_-7d$-rc`hk?m#KLeB5AqFP1BMeMt4;h%u-Z3zl zeP&=X1KIV1fywMI1Cu!e1Cu#31Cu!`1CzN31CzNp1CzN51CzNX1CzNn1CzNP1CzNi z1CzNK1CzNW1CzNm1CzNI1Cx0;1Cx0U1Cx0^1Cx0X1Cx0v1Cx0L1Cx0*1Cx0j1Cx0p z1Cx0R1Cx0>1Cx0d1C#lD1}5`G3{2)r7?{kLF)*30U|=#|&A?>7mVwE9Jp+^ZMg}JH zEeuTN+ZdS4cQ7!SUu9r2|H8mzA;G|8Va32?5y!w}(ZaxFv4Vlg;y447#WMybOJ)Wp zOCAO$OMV6>OCbg(OA!VpOIZdcOEm^2OAQ7lODzT_OC1I#OFafAO9KWbOIrpeO9uuf zOJ@cqOE(54OHT$SOK%1y%M1o4%Tfj=%PIyY%UT8|%X$VT%N7PE%XS7P%T5L+%WeiH z%UKLemU9`HELSlwS*~YbvfRkPWVwZb$#N$HljUv(Cd+*cOqK^2m@LmTFj?MVV6yzk zz-0M_fywea1C!-11}4kD3`|xG3`|zc3`|yR3`|y>3`|x$3`|!13`|xk3`|z)3`|y< z3`|zq3`|zK3`|xA3`|zW3`|yL3`|xQ3`|zm3`|zG3`|z`3`|xr3`|zl3`|z@8JMgN zGB8;^Wni-AW?-_`XJE4SV_>q*Wni-IVqmhK%)n$lje*H}CIgf8Yz8LlB@9f~YZ;iV zH!v_+Z)RY!-p0UWy_12-dN%`;^<D-h>r)I&)@K=*tS>MySzl&gvcAT^WPO8y$@(h; zlMNFClMOoqlMNRGlMN38lZ_w)lZ^-ilZ_YylZ^xelZ`q9lZ_SwlZ`n8lZ_1nlZ_n% zlZ_(-lZ_h#lZ^)hlZ`h6lZ`I}lT8c*lT9WAlT951lT9N7lT8Z)lTAAVlT8-`lT9xJ zlg$JMCY#9&Og7UPm~3V;FxkvuV6xfBz+|(9fyrhY1Cz}T1}2+b3`{nA8JKJiFfiF1 zVqmg4!oXy6oPo*aBm<MpX$B^n7Yt0c><mn{+6+v#z6?yZg$zu#(;1j-cQY{A-eO>~ z{mH;&C&s{JC(poSr^LWyr^>)&r_R7+XTZQ@XUV{1XT!i`XUD)~=g7ch=gh!l=gPoj z7sSA17s|k77s0?}7tO$A7stS4m%zYeSIfX;*TukO*U!LYH<5wKZVCgF-Ao21yV(p( zcJmmR>=rOE*{x?_vfISKWVfGz$?gaPlie`}CcBdiOm^oOnCvbvFxg#ZV6wZ)z-0G? zfywS81Cu=)1Cu=`1Cu=u1Cu>J1CzZF1CzZd1CzZ31CzZp1CzZR1CzZX1CzZ91CzZa z1CzZC1CzZS1CzZ21CzZI1CzZg1CzZ61CzZs1CzZk1CxCK1CxCa1CxCS1CxCr1C#v( z1}6J03{3Xd7?|vTF)%qOFfci|FfchJGcY+cF)%sIXJB$z!NBCOnt{n-9RriY1_maF zoeWG4hZvX~jxsPgoM2#bIL*N1aE^h=;Q|Ab!(9d@hX)Ky4v!g_9G)>SIlN?Ga(K<a z<jBFm<S5F(<S50!<S4_y<S5U;<fy{H<fz8L<fzHO<fzTS<Y>jf<Y>#l<Y>>p<mkh| z<QT}n<QUAr<QT@l<QUDs<QU7q<e0#~<e0?3<XFhS<XFeR<T#mu$#EJ3ljBSVCdWAp zOpfyzm>d@|FgY$|U~*i+z~s1^fyr?l1C!%M1}4X23`~wE8JHYTGcY-xWngkV&%oq( ziGj)SDg%?_bp|HKn+!~jcNmx)?=dhrK44&S{L8@PB*Vbu<iNn>l*GW~)W*Q%w1$Dn z=>h|j(|ZOcXFdidXKe;1XA=e{XLAN7XDbFKXB!44XIBO$XFmoe=RgJ~=MV-a=Wqrl z=O_jy=NJYi=S&7B=Ntwm=X?ex=OP9s=TZhH=W+%n=P3+K&I=isoR={$Ij>+~a$e2A z<h+4_$$2valk+wPCg&XtOwPv{n4C{BFgagmU~<00z~p?7fywzH1C#SJ1}5j13{1{% z7?_;jF)%s*WngmQVqkKSXJB$sVqkJnWngmAU|@35W?*vBV_<SIWMFbJVPJAGXJB%% zVqkKyWngj%VqkI!Wngj%XJB%PWMFcMW?*uOV_<SgWMFbhW?*tjWngm2U|@2|VqkK~ zVPJCUWMFbx!NBBlhJnfD9RriA5CfB|1p||73<HyEH3O6DECwdm?F>w=2N;-K4>K^i z9%Eo~J;A`_dXa(2^%et@>s<yW*9Qztu8$d*T%R#8xxQdva(%_X<oca~$@Lcllj~mw zCN~BKCO2jVCO1|FCO0JpCO3TsCN~oXCO2~iCO1n4CO10<CO1b0CO2mWCO20GCbtj< zCbw_~Cbtv@CbvumCbw(`Cbv8WCbwb+Cbv=sCbtR(CbudECbv!oCbww}Om3?gnB3Me zFu84HU~=2Sz~r`_fyr$b1C!fc1}3)y3`}l^8JOITF)+EEWMFc;$H3(Fkb%kVF$0s^ zQwAot=L}44uNauz-Y_t^y<=c<`@q2D_L+gn?JEP5+jj;gcM%3AcVh-7_izR#_eusP z_qhyA?uQwe+@CWrd9X1sd8jflc{njJd3ZB0dH69fc?2>rc?2^sdBiX<d89Hhd1Np! zd1Ny%dE_xLc@#1*c@#4+c{DIEc{DRHd9*Pwd2})`dGs(adGs+bd8}q&^4P(^<gu55 z$>RV6lgA+jCXeF`Odh8gm^{ufFnOF~VDh-jz~u3Ofyv`71Cz%m1}2X$3``#18JIl& zFfe)iV_@=RWMJ}SW?=FZVqo%=XJGO)VPNt!XJGQQVqo&LWnl7jU|{leW?=GkV_@?1 zWMK02VPNv~XJGOSVqo%2XJGQoVqo&jVPNviV_@<uU|{krW?=FxWnl6wXJGQIWMJ~F zVPNvCV_@=ZU|{l`%fRHhhk?oS0Rxj469bc%8UvG;4+E1|0Rxj)KLeB3ItC`M(+o^r zR~VSQt}`%s-C|(!y2HTa^^}3h>m37=*GC2>uP+QtUf&s*ynZn-dHrEv^5$e<^5$V+ z^5$n?@)lxX@)l)a@)l=c@-|^$@^)lk@^)ij^7de0^7dw6@(y5N@(yBP@(yKS@(yQU z@=jx5^3G&n@-Aaw@~&oJ@~&lI@@`;Y@@{2d@@{8f^6p|_^6p_^@}AAW<h_D{$$KvY zllK7zChx-xOy0*Bn7mIiFnOP0VDdiCz~p_2fyw(S1C#d+1}5*@3{2i17?`|2Gcb97 zWnl9D&cNjTlYz+_<lg@bOg>BuOg=0OOg`)kOg@|pOg`KUOg<V6Og`=mOg`BROg_B~ zOg<YKn0&4?F!}suVDgn>VDhzOVDb%PVDgP;VDe33VDe36VDe38VDc?sVDhbGVDhbD zVDhbFVDfEbVDfEdVDfEcVDg>Bz~noXfys9U1C#G;1}5Km3{1WY7?^zbGBEj`Vqo$; z&%oq+iGj)Y3ImhxO$H|4I}A*|_ZXObA22ZazGq<a{lviJ`;~#okBNcFkDY<ZkCTDP zkB5QDPmqDhPndzpPmF=dPlAETPo06u&xC==&y#`4&xe7@&!2(GFNlH3FO-4FFM@%| zFPeeLFOGr9FOh-CFNJ~0FP(wOuZDriubzR)uaSYtubF|#ua$wxuY-ZfubY9%uaAMr zZvq38-(&_Rzo`sNe$yG4{I)PK`CVpU^83!f<S)s<<ZsKs<e$vI<loM~<iCu8$^R$= zlm8<ICjZwAO#bf}nEXF7F!_IGVDkUNz!bpBz!bp2z!bpEz!bp8z!V_Jz!V_Nz!ads zz!ad&z!adyz!ad#z!advz!adzz!c!kz!VU{z!VV6z!VVAz!Z?gz!Z?qz!Z?hz!Z?n zz!Z?rz!Xr&z!cEPz!cETz!Wfnfhk}r15?0s2Bv^n3`_y@8JGeVF)#%zWnc<e&cGC~ zje#lPFauM-4F;xw+YC$r_ZXN09x^ZmJYir8c+S8S@QQ&c;4K4Fzy}7VfX@s}0pA#y z0=XHO0{Ix20tFbD0)-fu0!0{@0>v4a0wo!k0;L(40%aMP0u>mT0+kq;0#z880v#Ec z0uvaR0$UiE0+%r`1)gGH3jDyp6ePmH6lBc66coh36qL`v6jZ^$6jaT?6jaB+6x6`L z6x7MU6f}u}DQF4<Q_wU9rl1)NOhL04n1bdoFa@n-U<z8pz!bEefhlMc15?me2Bx6x z3`{{+7?^?{GB5=_V_*t;!N3&snt>?@WY;GKrl7A3OhMlnn1b0Dn1VSOn1aO^n1ZDl zn1W>)n1U4;n1WRqn1a<An1Zz!n1Xc}n1Zbtn1VeRn1W*&n1T}+n1YiTn1a(7n1VAI zn1XW{n1b^en1YKKn1V|gn1U-9n1ZVrn1UxTFa=L$U<#hfz!W^4fhl+<15@xE2BzTo z3{1g`7?^^WFfau#XJ86m$-or6nt>_!1Orp>a|WgmZU&|hT?VF*KnA9eat5Z5*$hk} zyBL^4ZZa^1d}Ck=`Om-<%EZ7F%F4hL%Fe(PD!{-LD#^eUD#O4OD#ySSs>r|;s?5L? zs>;9=s=>e%YRbSAYQex1YR$kDYRAA7>d3$p>de3tn!vymn#;fxTExH<TFSr_TF$@} zTEoB;TF<}~+Q`5Z+RVTdI*EZPbSeW==sX6d(1i?4q3al!LN_xog>GeF3f;lL6uOsz zDRe&rQ|KWErqCk{Ore(<m_i>gFok|)U<&=gz!dtMfhqJK15+3y15+3a15+3~15+3m z15+3;15=m)15=nV15=m=15=nb15=nT15=nj15=nG15=m@15=ne15=n415=m{15=ni z15=nI15=nY15;Q615;Q%15?;y2Bxs13`}7!8JNQP8JNP28JNO@7?{Ef8JNQR7?{GR zGcbkEVqglN%fJ*qpMfcS1p`y~Mh2$vEeuTI+ZmX`cQG)9?`2>L-_O7levpAF{2T*Q z_(cY$@GA^V;nx|M!f!D!h2LRd3jfK#6v4*86v55F6v4~D6d}OC6d}sM6d}&Q6d}dH z6d}XF6rs()6rsn!6k*N46yd<Y6ye0c6yeIi6ye3d6yd|b6yeXn6cNb46p_Hd6p_oo z6w$=M6w%7S6w$%J6w%GV6w$}P6fu#3DPjr(Q^a%zrifV#Oc8S#m?9Q1Fhy)-V2aqm zz!b5Ifhl4S15?C42BwIE3``M+8JHrDGB8CPXJCpr#lRGChJh*K90OCtYX+uBE(WGZ zJqD)800ySW5(cKoSqw~(`xuxa?=mn&{$XH>l4M|tQet3=Qe|L@(qLeU(qdqWGG<_k zvSDC~vS(n5a$;bLa%EtO@?c<!@?v0$@?l_#iezAlieX@iif3SoN@8G&N@ZY*N@rk- zYGGiCn#jNuHI0EOY6b&S)NBT(s09p6QHvOuqLwl+MJ;DwirU7&6t$CqDe4#lQ`Bh& zrl_+FOi>pYn4+#SFhyNwV2ZlMz!Y_dfhp=W15?xw2Bv6U2Bv5M2Bv6X2Bv5+2Bv69 z2Bv5k2Bv6v2Bv5w2Bv6L2Bv5Y2Bv6j2Bv5S2Bv6d2Bv6N2Bv6t2Bv6F2Bv5q2Bv6# z2BzpB2Bzo`2Bzq62Bzpp2Bzp}2Bzo=2Bzrg3{26x8JME)GBCw3GBCxcGcd(?Gcd(u zF)+n+GBCv~V_=F|&%hM3iGe9*D+5!^b_S-H0}M<tCmEPx&M+{=oM&K)xx~N}bCrQ9 z<~jpY%uNQSm}d-3F)taIV%{(?#k^-=iuuIA6!V3FDOQkyDOQewDOQ<*DOQbvDOQ7l zDOQ((Db|32Db|RADb|F6Db|^RDb|gFDK?maDK>(EDK?6MDK?gYDK?3LDK>?HDK?#f zDK?XVDYk-vDYlh?DRveEQ|w#@rq~4xOtFg@m|~YPFvYH9V2WMCz!bZlfhl$q15@l) z2Bz2@3{0_S8JJ=(FfhelVql8B!oU=Jje#llCIeIK9R{Y@`wUF64;h$ZpD-}RK4V~t zeZjyK$I8GIr^3J#=fS`fm&L#o*T=vVw}pWz?gj%>+;;}1crga1cw+{pcpC<$czXt> zcqay?coznycwYvl_%H^h_(%q(_-F>E_&5fp_yh)~_#_6V_<RPY_#y_T_)-R@_zDK5 z_-Y2G_*w?0_*o20@yi*Q;@2=R#jj&vir>h<6u*suDSih7Q~YiQrue-KOz~$JnBvbf zFvZ_tV2Xdpz!d+OfhqnO15^BK2B!G83{3GK7?|QeF)$@CGB73ZF)$@4GcYBnF)$@) zGB73RFfb+PGcY9>F)$^VGB71rFfb)pGcYCCF)$@KGB72CF)$@WGB71XGcYB@GB72? zGcYA2F)$^hFfb*gF)$@$Ffb)#GcYCOGB73NGcYCeFfb*oW?)J<&%l)Mk%1{ulz}PH znt>@Xo`ET`j)5t0E(25IE(WH=!wgJ`#~7FrPckqio@QW5yu!egc$a}G@c{!<;v)v8 z#HS2QiO(6B5??YfC4OUIO8m*dl=z2%De*r8QxX#cQxXdUQ<5SBQ<5G7Q<5<QQ<512 zQ<4P(Q<5zMQ<4J%Q<4({Q<4h<Q&KPkQ&JcMQ&KVmQ&I*4Q&JWKQ&KJiQ&JHFQ&I^7 zQ&KqtQ&J@ZQ&I;5Q_@rhrleI2Oi61Qn36UyFePnfU`pD?z?8I;fhlPZ15?s|2BxG# z3`|K!8JLnzFfb+EWnfBrz`&IBh=D2T2?JBoGX|!lmkdlvuNjz<-ZC&Hy=P!b`ozGL z^o4;b=^F!6vM>WvvJnGQau@?sas>lZ@*D=H<U<Th$<G*=Qdk+7QdAh2QXCnWQoI<L zQhXVhQUVy5Qi2$mQlc4{Qc@V0QqmciQZgBsQgRrWQt}v>QVJNDQfe8PQW_YTQkof< zQrZ}pQaTx!Qo0$KQdTf9rEFzjO4-H0l(L6`DP=zcQ_2wrrj%n0OerTBm{LwNFs0mL zU`lz;z?AZafhpx315?UJ2Bws63`{9M7?@IiGccw6WnfC>VPHy?WME3wV_-@(WME1) zVPHx%XJAUTVqi+OWnfBmU|>phW?)KnV_-`4WME45VPHy4WME27VPHy4V_-_nU|>qk zVqi+mWnfAzU|>ouVqi)wVPHxvXJAULWME3IW?)L4!N8Qdoq;L!HUm@YUk0W$MFyrc zcLt`kYzC&ZE(WHwl?+U2#~7H>&NDEjU1DHLyUM_ncAbGK?EwQ*+Ditev^NY)Y3~`B z(mpXTrF~^!O8d^hl+MDyl+Mn;l+MM#l+Me*lrF%)lrF@;l&;Ufly1Yol<vsDl<v&H zl<vmBl<v*Il<v#Glpesqlpe&ul%B}Il%B%ClwQcdlwQWblwQHWlwQril-|I=l-|U^ zl-|m~l-|z3ls=7tDSa^mQ~C}Dru5wmOzHa=n9>h2Fr^=1U`jvEz?6Q9fhqkg15^41 z2B!4O3{2_Q7?{#uGccvUV_-`Ez`&ILiGeBo3j<R+$h|)qn9_eUFs1)xV9H=%V9H=( zV9H=&V9HQrV9Ib{V9H2gV9ID?V9Hp<z?5-;fhpq)15>6j15>6E15>6y15;)M15;)+ z15;)k15;)K15;)u15;)Z15;)R15;)h15;)N15;)d15;)V15;)v15;)X15;){15@TC z2ByrZ3{08R8JIG+Ffe5vWMIlX#=w+$f`KXXGy_xS1qP<fOAJhzR~eWxuQM=ZK4W0Y ze96F+`Hg`o^EU%i=3fS;ECvRqELH}lEOrK_EG`D7EFK1?ENKR&EDZ*xEL#SqEC&Xr zEN2F$EH?(GEKdfeEFT7@EPn>3tRM!atWXA~tOy3CtY`+NtO5q6tYQYHtWpN1ta1jX ztV#x^tQrQUtU3m!tOf?AtR@DgtX2l5tab*btWE}|tYr*LSw|U|vR*PUWpgtyW$QCA zWrs2_WmhsVWzS$>%HGbvlzoMPDf=!1Q}zP}rtHTIOxaHvn6lq7FlB#dV9Nf*z?A)$ zfhmW9fhmWXfhmWTfhk9bfhk9nfhk9Vfhk9tfhk9hfhk9Ufhot9fhos}fhotIfhi}D zfhi}1fhi}Ffhi}Nfhi}Bfhi|}fhi}Sfhnhmfhnh+fhnhjfhnhrfhnhxfhnhtfhlJK z15?gq2Bw^;3`{vo7?^T4GBD*FV_?cT$-tCzhJh*PJOfkCB?hLPs|-vzHyD_5ZZk0D z++$$MdC0(&^MrvZ=O+VG&L0M*oPP{VxeN?Uxl9a9xvUIKxf~2kxm*lPxjYO^x%>=F zxq=K#xxx%gxdseOx&91Hxy1}jxl<XKa(6N?<=$st%423=%2Q%s%5!93%8O%Q%1dWp z%FAM4%FAV7%FAb9%Bx^t%4=j`%4=a@%4=s}%Ijia%Ijrd%Ijxf%A3Q$lsBJ&DQ^)2 zQ{GYrro0slOnIvqnDUM@Fy&ogV9LA6z?64~fhq4E15@5(2By4c3`}`17?|>2F)-!* zWMIns!@!i!$-tD)$H0^?z`&F*%)pc{!N8O+#lVy=%fOT`&%l(g$H0_t&A^l&z`&Fr z%)pc%#=w*x$-tB!!@!gu&%l(Q#K4rF%D|ML!N8QC&A^nO$H0`|%)pf2#=w-{!N8Q? z#lV!`!@!i^&%l&FiGeA9Dg#sgbOxsUSqx11a~PQN=P@wl?`B}izs10m|Br#GK!Jg& zz=eUSAd7*ippSv6U@Zev!5Idof|m?T1)mt03cfNh75rdeD)_~~RLIQ0RLH}?RLIZ3 zR4By2R4B^8R4Bo~R4B#3R4Bv1R4B*5RH)6sRH(<mRA|V+RA|D$RA|n?RA|Y-R2as< zRG7@bRG7iQRG7`cRG7=aR9M8oR9MQuR9McyR9MNtRM^45RM^eHR5*o!sc<0!Q{gfO zrot5rOogi%m<l&AFcofMU@F|oz*M-MfvNBq15@E;2ByLn3`~Wu8JG&+F)$T=WMC@% z!oXDcoq?$k<leswOhpU~OhwELOhs%AOhwWROhs}GOhpO|OhrlzOhqaTOhxJpOhsA@ zOhvj3Ohx((OhrZvOhqOPOhsl4Ohv&AOhrWuOhwZen2L5VFcsZlU@B%}U@BH)U@CTH zU@A^wU@C58U@GonU@GoqU@D%#z*IbmfvI>l15@!52BzX=3{1r<7?_GzF)$UcVPGm= z$G}v)n}Ml#9|KeIK?bJcBMeN%#~GN4PckqSKVx7j{>;Es{DXn1_%{Pn@m~g}5+(+w z5>^JL5_Sfr5>5uD5(x&T5@`me5)B5X5?uzS5`6}y5+eqt5_1No5=#cA5*r4l5<3Q_ z5?=<Uk|+kIl6(fHk|GACl2Qhyk_rZ<l4=H~k~#*al12umk`@N0l6D5Bk}d|Ol3oU; zl0^(mB}*BYN|rM)m8@i7Dp}3IRI-kNsbnJqQ^^(vrjl(8OeH%Rm`ZjtFqQ0OU@E!A zz*O>+fvHrMfvMD<fvGf^fvL2UfvI#Y15@c42By;23`}Jl3`}K$3`}Jr3`}L>3`}K` z3`}K83`}L(3`}Ku3`}K)3`}Jv3`}L_3`}K~3`}Ki3`}L73`}J{3`}MI3`}J~3`}Jq z3`}K(3`}Kp3`}Ls3`}LM3`}Jm3`}Lc3`}Jc7?{c?Gcc7+Wnd~>!oXCvoPnuq3j<Tx zP6np3-3&}+`xuzY4l^*79b;fBJITOQcA9~y>=px4*>eV_vOf$=W&atN%9$9L%2^qh z$~hRA%DEYs%J~?W$^{vi%0(EM%EcL&%B2{X%JmtT%8eM9%1s!U%FP&<$}Jd}%B>lg z%Iz4K${iS(%AFXP%3T?l%H0{5$~_sF%F`H_%3B$j%2zTlm7iu{Du2(wR3Xa1RAI@$ zR1v|zR8h{rR568tsbVezQ^f)Xri#T3OchHRm@3vWFjZ`4V5->3z*MoDfvI9I15?F* z2BwOG3``a07?>(9GB8zKVPLAb&cIZ0i-D=)4g*ugPX?w+HU_3jZU&}GJ_e>r0S2Z@ zQ3j?;2?nN0DF&uW83v|GZ3d=FT?VE~D+Z=Ydj_UTM+T-!7Y3$EPX?w+Zw97HKL)1C z00ySYcm}4*90sP!Mh2$J76zuub_S-(E(WH`UIwPh2@Fh?lNp#Qr!g>9&SYS!oWsCW zIiG>4ati}f<#q<9%AE{MmAe_3D)%xlRUTkqsyxiVRC$zvsq#1jQ{^cJrphx6OqJ&t zm?~d0Fja9eFjeU>FjWOGFjbW>FjdWBV5-{3z*KdYfvM^b15>pm15>pU15>ps15>pI z15>pY15>pz15>pP15>p<15>pl15>pN15>p-15>pp15<Sv15<S*15<Sj15<T815<Sp z15<Sh15<S)15<S$15@>62Bzw13{2HC7?`T(GB8yyU|_0V#K2U&gn_AgGXqogHU_5Z z!wgK-Cm5KjPcbl6pJiaGzQn*(eT9Lk`Z@zs^-Tt*>K6=5)n6HyYPcAfYIqr#Y6KXV zYJ?e>YQz|rY9tw$YGfFgYUCN1YLpn5YE&7RYBU&_YHS&pY8)7tYMdCDYFrqYYTOu@ zYCIX3YJ3=&YWx|PY62OUYC;&8YQh+pY9bhzYDyWHYNjwS)$Cwks=39$RP&F4saA!7 zsn&ymsWzQ~skV)Qsdg~~Q|%fCrrPxkOtqUBm}<8$FxBp5V5&XFz*KvZfvNTk15@pJ z2Bz9e3{16G7?^6WF)-CWW?-s)#=unjl7XrA4Fgl{dj_W3j|@z8d<;x=(hN*>3Jgqj zN(@YOstinZS`18eIt)y8`V35Uh73$~4h&3n&J0X-0Sruap$trQ;S5Z5Q4CCV@eE9L zi4072DGW??X$(wtr3_4UO$<zR(;1lRW-&0;&1GP!Tfo3nx0r#cZW#kp-AV?gx-|?; zb?X_J>NYVj)oo>9syoHNRCktvsqQ=jQ{6=drn<`vOm){7nCfmaFxA~=V5+;zz*P5u zfvN5h15@1-2BvyO2Bvxi2Bvx!2B!Kn2B!Kh2B!KA3{3S`7?|omGcYv>F)%ggGcYw+ zFfcV(GcYySF)%eaFfcWEGB7m+F)%fRFfcWQF)%emFfcVlF)%g6FfcV_GB7pdFfcXb zGcYw2F)%fhGB7oiGcYwwVPI-l$iURFjDe|PB?D8#Y6hl;4Gc^Tn;DoIwlXj^Y-eC< zIL5%#aG8Or;RXX!!z~7;hPw<*4UZU@8lEsPH9TivYIw=O)bN9Wsgad|sZol7sZo}J zsZoJ}sZp7MsZouAsZo=GsZoc4sZpPSsnLjmsnL{ysnLRgsnM5#sWE_osWFIwsWF6s zsWFU!sWFm)sWFCusWFa$sWE|psWF*>sWFv-sWF{_sj-EDsc|s_Q{!<4rpA{HOijED zOijiNOikeoOig7BOifc6n3^^*Fg5LFU~1aOz|?e*fvM>*15?u(2BxN~3`|Wo7?_%F zGcYyXV_<4}$iUR}n1QM30|QgjX9lLGZwyRLKN*;s{xC2#{bOKimS$jT)?i?2)@5L7 zHeg_CHez6EHfLaJwqjsvwqamuwqsyw_GMsd4q#wvj%8qKPGVqcPGMkbPG?|h&S79` z&SPL|E@WV8E@ohAZen0+?q^_XUc$iCyqtllc@+aw^I8U`<_!!?&6^pRnzu19HSc6# zYTm=Z)V!a8sre8CQ}cBOrsi7=OwD%~n40e~Ff~75U}}EMz|{PVfvNc=15@*B2BzkB z3{1@*7?_$rF)+38GcdL2F)+0RF)+21Ffg^uU|?$5$H3I`h=Hk<k%6gIfq|*jmVv3& zje)7vlYyz#hk>cpkAbN*oPnt|fq|(tiGis#g@LIxje)5(gMq0vi-D=NoPnveih-%M zmVv3Yfq|*DnSrUbm4T^s5d%}}dIqM}EeuSp+ZdQycQP=w?qgtTJ;1=!dYFN!^(X^V z>lFs3*6R#Rtxp)3T3<3SwZ3LxYJJDR)cTo$sr4%ZQ|k`~rq*8!Ol_PDOl@KeOl{f> zOl^7$Ol^h?Ol>9%Ol{^2Ol?*SOl`IdOl=MfOl{5#Ol@uqOl_VFOl@%tOl^q_Ol`>w zOl_$QOl|25Ol?^VOl>&~Ol^4#Ol<`WOl`#sOl_qMOl{>1Ol?ybnA$coFtuH0U~2ox zz|=0wz|`){z|@}3z|`Kxz|_8!fvNov15^8H2B!9N3{3488JOBHGcdK^VPI;1%D~kA zf`O_1H3L)oI|ioqj|@!hpBb1s7#Ns3m>HNl*cg~PI2o8aco>*E_!yWvv>BK>EEt$N zY#Eq3>=~FkoEVro+!>fUJQ<ied>EKI{1})zVi}k^5*U~|av7L9iWrzWN*I_r${CnC zY8aS0>KK?h8X1^6ni-fnCNVH|%x7Tg*uucnv7LdbV;2Kc$6f}ejspx#9fuj1I*u_g zb(~~i>Nvx|)N!7HspAp@Q^#`#rjAz(OdW3+m^$7uFm-%jVCn$5_bUTa$9D#%j-L!n z9e)^@I{q;*buut8b;>d@b=oj6btW({bv7|DbuMFI>O8~1)cJvdsf(Y1sY{Q6smq&z zsVjtmsVkg;sVj<ssVjzosVkL%sVk3xsjGm2sjG;AsjGy6sjG~EsjGs4sjHQNsjGv5 zsjHiTsjH8HscRwwQ`ck$rmhVPOkH~!n7R%zFm)YeVCp)~z|?hyfvM{}15?*U2Bxmd z3`|{*7?`@=Gca|1VPNX|#=z9|lYy!09|Kc20|QexGXqmMD+5!v2m@2MA_G&m83R+d zB?D8p4FglRJp)s>69ZGXD+5!v2Ln^LHv?0*9|Kc&AOll(2m@1hCIeG<4g*tn9s^T% z0RvNa5d%|qDFah?1p`xeH3L(3Edx_`0|Qfc69ZFs3j<U4LI$Sp0}M>vPZ*eb*ch04 zv>2Fr0vMQjN*I`WCNnVgY+_*QInTh<bAy4Y=QaaV&pigFo(Bv}JuexUdOk5Q^?YSu z>iNOI)bpExsplU9Q!fJpQ!g(AQ?CF6Q?D=sQ?D2UQ?DcgQ?E1wQ?CUBQ?DxnQ?C~T zQ?D-rQ?EY*Q*Q_ZQ*Sr}Q*R^#Q*Sf_Q*RanQ*SN<Q*RXmQ*S*3Q*R>!Q*R3cQ*S2& zQ*So|Q*R#wQ||-@rr!AsOucIun0gN~F!df`VCp^2z|?z+fvNW_15@t>2BzN23{1V( z7?^r*GBEYtVPNXL&%o6Cg@LK}I|EbiPX?ym-waH>e;Jti7#NuPm>HP*SQ(i5*cq7m zxEPrFco>-a_!yY_v>BNCycn4J@)(%<CNMDdZDC;QyT!oN_m6?8UzUNX--dyyKazo| zKZ${<Kb3*0KZAj(KZ}8>znFokzlMRSzn+1qzlnjVzm<Whzk`9Pzl(vXe>wwG|11Wk z{<#cH{R<eF`WG`W^)F>$>OaK5)PJ6Vss9QCQ~xyvrv94@O#Sy5nED?uF!euXVCsL$ zz|{YRfvNvH1JeW+2Bry|3``Ta8JH&UF)&RKW?-5i%D^;1f`Ms*6a&))O$Me3W(-Ud zycw7#_%Sd|2xMTI5W>JTA)J9}LKFkjgjfcq2?-2L6OtL2CZsViO~_<mno!5UG@+4! zX+kpt(}Y$ArU~r~OcS~om?rcxFin`iz%*eJ1Ji`53``TIGcZk<$-p#W8w1mXs|-vN zeljpklxAR>XwSejF_nR7VkZOB#1#xo6OS`6O?<+@H1RD1)5H%9OcOsdFirf*z%=n6 z1JfjS2Bt||3`~=F8JH#sFfdILW?-5m%D^;9iGgX7Dg)Cb4F;x3+6+vS^ca{X889$S z@?~I}6ve<aDV~98QX&J>q!b3GNtp~xld>6@Cgm|OO)6kunpDrgG^vS!X;KRV)1-+E zOp~TDFio1lz%*$#1Jk4h3`~<2F)&S9%D^;fIRn$AZ46A44l^)Ky1~FS={5t?q<aiZ zlO8fKO?tw>H0e15)1+4nOq1R+FirZvz%=PI1Jk5$3`~=`8JH&XF)&RQU|^ao#K1IJ zgn?<YI0MsUDF&v=vJ6a<<r$bJD={!lR$*Y8tj54J*_nZ9auNg6<TeJT$txI`CZAzo zn*51@X^I#F(-cz%rYRu|Oj8OOn5I-QFiojtV4Bjvz%-?afoV!N1Jjf#3`|p|GcZk= z#lSRWE(6n)1q@767BMhQS<k>UWfKF_l&uU*Q+6;gP1()BG-WRX)0A5bOjDjSFim;G zz%=C@1Jjg`3`|qLF)&T}!N4@-Hv`j@zYI)Mc^H_c@-r|^m0@6-s>r}JRhfZlsu}~+ zRBZ;Psk#hIQw<oHrW!FYO?6~on(D{EG&PxlX=)k+)6`4`rl~m$OjGk2n5GsnFikCG zV47ONz%;d*foW<T1Jl$-2BxXg7?`HcWMG;)n}KQSTn478^BI_?E@EJsx|D%w>Iw#? zsjC>6rmkgRn!28WY3fD>rm5!`n5MpEV45b#z%<R6foWPe1Jkrx2Bv8X8JMOWU|^bd zpMh!G9|orBtPD)kIT)Cxb2Bha=Vf4;F2=w#U7mqyx)KA^bQK1s>FNwj(={2GrfV}W zO}AiRnr_X&G~JGYX}Ti=({vXGrs-}BOw*GYn5GvnFikIIV47aez%;#zfoXa@1Jm?I z2BzsP3{2D87?`F{Wnh{<gMn%KQU<2!s~DK3uVG-CzMg?;`W6PJ>Dw5Xrtf56n!cNX zY5FM!rs>xin5MsBV4D7(fob|D2Bzs>8JMR3U|^d5n}KQiKL(~5j0{XOSQwaQurn~t z;9_8!A<w`xLy3WDh6)4I3^fL(85#^sGqf3)X6Q07&Cq9HnqkPmG{b~}X@(gC(+mp+ zrWv6OOfyOtm}bmiV4AUufoaA)2Bw)T3`{dM7?@_dGce6eV_=%u%)m6Whk<EkKLgXu zNeoOgr!X+hoXfy8a~T8E%#{pGGgmV(&0NR8G;;$3)67i_Of&a0FwH!~z%=tH1JleC z3`{dmGce6O%fK}A6$8`E?+i>c|1dDk{LjENi;;n878?W8EKUZdS=<avvv?VpX2~!x z&5~zenx(_QG|P~IX_heq(=0OvrdieuOtWkmm}WUJFwJseV44-kz%(n4foWDT1JkTB z2Buk+3{10X7?@_&Gce6+Vqlup%D^<MgMn#QHv`kGJ_e>)6B(FhEn{GswUU8p)@lZ( zS!)@XX02ynnzf06Y1UQ-rdc}}m}c!_V4Ag;foax$2BujD8JK3>V_=%~mw{=vA_LQG zX9lL(=?qM>dl{H!Z)9MaeSv{#_In1VIXnzZb3_@K=14Fw&5>qcnj_1=G)IkrX^uVv z(;OoPra7hzOmi$4nC4hBFwL=LV4CB_z%<8~foV<v1Jj&f2BtY-3`}z(7?|diGBC|) zVqlun&cHOMlYwbY4+GPji4070CNnV2na030X9fe)oaGEmb5=1h&DqYtG-nS3)0}+_ zOmhx0FwHr}z%=Is1Jj(-3`}#*GBC}#!@xA>B?Hr(e+*1>85x-7vM?~sWoKZT%f-Mn zmzRNQt^fnmTww;Lxnc}Vb0ry==E^WI%{63Tnrp(qG}nxQX|4qW(_AYCrn$BZOmiI= znC3b&FwJ#kV4CZ}z%<v3foZM}1Jm402Bx_k3`}#^Ffh$M$G|lA69dyc2?nNlHVjPj zq8XUxRWUHlo6f*AZvg|-yu}Pm^Oi9%&0E31G;bpV)4W{_O!M|KFwHx_z%=hL1Jk@? z3{3M*Ffh$K#lST0Is?<ZTMSI|?lLgVd%(an?=b_@yr&FI^O+c!=JPW!%@<){nlHw{ zG+&Z|X}%l-(|iR6ruoVYO!HM4nC6=>FwHk-V4Cm3z%<{JfoZ-s1Jisz2B!JJ3{3Mw z8JOlrFfh%JVqlt|$-p$fjDcx>Hv`lBJ_e@w6B(H1Phnu1Kb?VT{wxNj`EwbV<}YAi zn!lKVY5p<>rui!wnC9<eV48oBfoc9>2B!H(8JOlDXJDFtih*hVSq7&07Z{l4Ut(aI zf0co0{&fbX`8OGu=6_>gS|G~6w7`;qX+bmt(}H>irUgqGm=>I5U|R5kfoUN-1Jgnk z2Bw9&3``3R7?>6sGcYYQWnfxp$H27Eoq=hg7X#BmUk0Xy0SrtFgBh3>hB7cMOk!YK zn99JkFoS_<VKxKP!aN41g#`>u3ws%u7S3W|S~#D9Y2iW!riDuwm=>;NU|P7Efob77 z2Bw7@7?>9BXJA@*h=FP0c?PD1R~VQUUSnWdc$0x?;XMYXg%22*7CvTRTKJTKY2g<J zrbUblOpC-Am=;MgFfEc{U|J;4z_dt-foYK{1Jfc62Bt;Y3`~pk7?>6rGB7PNVPIP1 z$-uP8hk<F49|O~(00yQ-K@3cbLK&DAg)=ZMiez9~6wSc2D2{<?Q33<gq9g{UMfD6! zi{>#fEjq-&wCD)~(_#(=rp0;;OpAjUm=+f@FfE?Iz_fTR1JmMd3`~o6GB7RP!@#t7 z9|P0k;|xrTFEB7IzRbY1_!<M#;+qUii|;TnExyOVwD>gx)8cmwOp8A<FfIPVz_j=~ z1JmN43`|SJ7?_qQGcYaDU|?FJ#lW;gmw{=C5d+f_69%Rw<_t_rEE$-VcrY+6@n&FJ z62ZW<B$k0`NjwA7k|YMECFu-IOEMXlmgF!nEy-hGT2jlvw4{rHX~}#BrX`CQn3gPM zU|O<*foaKV2BszJ7?_r9WMEpdg@I|wb_S*;yBL_3>}6nDa*2Uy$yElXCD$34mfU1u zT5_9#X~{hXrX>#<n3g<dU|RB&foaJL2Bsyi7?_s4VPIOy$-uN!gMn$O4+GQEJO-wv zlNgwm?qFbAdWV5&>2C(6Wl{`G%gh;=mN_smEpujITIR;Uw9JEnX;~lx)3PWAre(1V zOv@4&n3g3oFfB`CU|N>Jz_cujfoWMe1Jkl92Bu}T3{1-!7?_qdGcYY{Wnfyih=FO@ zdIqLtTNs#@ZDU|swv&Nr***rQWd|6TmK|nbT6UCyY1tJ9re)U|n3g?YU|RN;foa(% z2Bu|S7?_rQXJA_Phk<F?KL)1dj0{Z6nHiXt3o$S)muFyFZo<H{+?;`FxfKJ`a$5$b z<qix?%bgjRmb)=9E%#(#TJFQZwA`P8X?YL>)ADo%rsY`-Ov`f^n3m@;FfA`&U|L?x zz_h%SfoXX;1Jm+K2BzgT3{1=G7?_qfFfc8j%fPgJ4+GQk2MkOrm>8H=s4+0D@L^zD zQNX~oqMw0j#X1J26{i`PR$O6VT5+9$X~iuDrWJP>m{vSxU|R8xfoa7D2BsCC7?@Uk zVPIPEje%*!4+f@{tPD&mIT)B$ax*Zk<YQo3DagRIQka2hr2zxeN?Qh|l}-#yD_t3w zR=P7Vt@L4FTItWgv@(!^X=N}2)5;_Urj_{&Oe;$mm{yiCFs-a)U|Lznz_hY~foWwk z1JlY@2Bwu$7?@TrWMEpkje%+9P6noxdl;Bj?q^_Hd5D2&<xvKvl_waOR-R^HT6vCv zY2`%*rj=J1m{z`IU|RWxfobJC2BwuC7?@UmVqjYNm4RvHcLt`FKN*--{$^lW`Hz8V z6$1m)DkcV|Rq_l>tLzw<RwXeot!iOlTD5|KY1KIfrd6L9m{toiFs(LVU|Q|Vz_dDy zfoXLl1Jmjl2By_<3{0!j8JJcVFfgqyW?))f#=x|?l7VS;4Fl8aItHfI-3&~t`xuy3 zPh?<PJ%xd3^>hZN)iW8GR&QfqT78&-Y4r&Prq!nzm{y-<U|M~Nfob(s2By{58JJez zWMEqTf`MuEYX+v(KNy%+|7BoW{hxtp4HE;?8g>SzHJl7gYj_x#*6=Yft&wG5TBF6l zw8ox+X^j&D(;8O>rZpZ6Ol!OunAZ3)Fs%t>U|JKxz_ccufoV+?1JjyV2BtMd3`}cE z8JO0TGcc{GWMEoT&A_y#j)7@S0|V2VCI+T8EeuR++8LPEbTTll>1JSBvx0$X&2a{% zHLn?%*77nitu<s|S{u&5w6>aoY3(cqrnNg6nATonU|M^hfobg{2Bx)78JN~SXJA_U zfq`l5PX?y7zZsa;{$*fV`=5bn9U}wNI%Wo@bpi}b>x3DY)`>ANt&?P6S|`K6v`&tJ zX`M9#(>f0ZrggpyOzQ#|nAQa`Fs%z`U|JW&z_c!gfoWYF1Jk-(2BvjY3{30l8JN~J zGBB-cVPIO<$-uO(n}KOv9|P062@Fi@<})y@Tf@M#?jQrxx+4rs>y9%ptvkiQwC*ee z)4B@`OzSQ)Fs-}Bz_jir1Jk-Y3{30pGcc|D!oaldI|I|YpA1avelsww`^&(zo`HdB zJu?H-dNu~8^&AXL>$w@2*7Gtjt><T8TCc;vwBDP6X?;Ee)B1@FOzXEYFs;AMz_k89 z1JedM2Br<R3``rM7??IBGcavPV_@2l$-uNBn}KOV2?NuHS_Y;K4Gc^hni-fjv@tMk z=wx8p(9OWKVFm-!hS>~E8|E=EZCJ>_v|$MY(}raXOdAd}Fm1TNz_j5i1Ji~Z3``qt zF)(eo&%m_d5d+hPCk#v*o-r_O_{zYv;RgfLMpg!<ja&>&8+jO*Hu5ttZ4_Z(+9<}r zv{90QX`?g)(?%@@rj6zdOdEX|m^S(|Fl`KCVA>eUz_c-ffoWqj1JlMh2BwXP3``qS z7??JuGcaw;Vqn@>&%m^?iGgWj3j@=}HU_4R9SlqxyBU}^_AxMRoWQ`eaS{X5#;FWU z8>cfcZJf!#v~e2))5fa|OdEePFl~}%VA^EQz_clqfoW4G1JkAz3{0DjGcav>!oalY zEd$f04-8D3J~J?F`pUqx=^q2rW_AXq&0Gvjn|T?SHVZH?Z5C!=+APYzv{{LPX|pN= z(`F3@rp?+6Oq=x>m^K?QFm3i_VA>qTz_dA@foXFR1JmXd2ByuK3{0DI7??KaF)(c| zU|`x@&%m^~iGgWzKLgX|DGW@Tr!g>Xp2@(pc^(7P<^>E)n-?=MZC=X2w0R2y)8>N= zOq;JUFm1lcz_j@e1JmaF3{0CJF)(d@%D}Yw1q0LO*9=UX-!U+4{>Z?z`3nQn7ET7H zEj$cNTlg55wg@mVZ4qK%+9Jxpv_*n}X^RvC(-s*9rY-UeOj{Hgn6@Z0Fl}*QVA>MT zz_g{AfoaQ92Bs}18JM=bXJFbY%)qqOh=FNqAOq9ZJO-w%<qS+)s~DKJ)-o_{t!H4` z+QGoIbs_`P)+r23Tc<NHZJouyv~?~6)7JS6Ok3A5Fl}AWz_fJ}1Jl;63`|>hFfeW1 z#lW=nIs?<zCk#wmUotRlea*nM^&JD#*3S$~TfZ_eZT-Q(wDlJQ(>6{9rfob7Oxq+G zn6}9=Fl|#{VA`h4z_d++foYo-1JgEL2BvNL3{2bX7?`$sGcavSU|`yo%)qoQje%)f zCIi#990sOs`3y|kiWr!-l`=4Gt6*T-R?Wb)t&V|d+hhi&ZPOT-w#{H*+BS=UY1<qI zrfu^Xn6@oqVA{5Xfoa<^2BvK*8JM=MW?<U3mVs&8DF&u(FBzD&^D;1P*Johb9?ZbB zy^?`x`&<U5?RyxQw%=x8+Wv!qX$K<%(+(B}rXB1IOglIkn05#;Fzt|LVA>(az_dew zfoX>_1Je#w2BsbA3`{#r7?^gLGcfJ2Vqn@~%fPh5fq`j<69dzZcm}2&ISfoY3K^Jo z6f-dGC}UvSQO&@#qn3ebM*{=XjwS}C9TORtc1&Sl+Od#<X~!}KrX4F7n0BmYVA`>P zfoaDk2BsZb8JKo#XJFcKjDcy#Wd^1lFBq71yk=n9@s5FM$43UH9bXujc6?`G+VP8l zX~$m%rkxB7Ogotwn0B%;Fzu9PVA?6iz_e3=foZ1_1Jh0w2Bw|r3`{#U8JKozGcfJc zWnkKAz`(TAh=FOR2?Nv4KnA9r1q@6(r!X+>+{VDP^A-csE(QjsT`CMryPO%Ab|o<| z?W$*B+SS3pw5yweX;&Wu)2;~&OuJ?>Fzs5zz_e=#1JkZ$3{1OLFfi>}#lW;{4Fl7z zoeWI7_AoH*+RwnW>ktFeuA>Z0yN)w3?Rvt%wCf`S)2?p}OuK$EFzx!yz_gozfoV50 z1JiC+2BzKY3{1Pl7?^fTGBE8{V_@2?&A_x<mw{=w0Rz)+QwFBp<_t``tr(bg+b}Tg z_GVz(9l^k~JC}iJcL4*_?qUX}-DM0+yDJ%(cGoa4?XG8F+TFy!w7ZpoX?F($)9!8t zrriq|n07B_VA{Qufob=02BzIB8JKpjVPM+5o`GriMh2$cn;DpPZ)0HEy@P>i_bvve z-PakIc7J1F+9Solw8w^lX-@(J)1Ed4rah||nD(4xVA}J7foU%*1JhnU2By7&3`~1P z7?}2oF);0wXJFc^!N9avn}KPs9s|=}Lk6b3CJan_%@~;WIx{fsbz@-K>&d{h*N1^= zuRjCR-arPXy?G2wd#f3k_BJpu?QLRU+S|&&w6}|aX>Sh$)82jtro9sxnD#DUVA{Kw zfobms2By7R8JPBNXJFd9i-BqHeg>w!2N{_59${eGdyIi;?^On-y^k1}_I_tz+WU)v zY42YKrhN<yO#7G_nD((TFzw@HVA{vSz_gE_foY!*1JgcH2Bv*l3{3lU8JPCzGcfHl zWMJB7%)qqIjDcyNB?HqwYX+u$whT=B92l7PIWaKpb75fGm&m}huYrMS-x3C<ea9G> z_Pt_Y+AqMswBLk*X@4*S)BYj`rv3d4O#5drFzuhsz_foJ1JnKm3{3l1GBEAm#K5$F zD+AO19SltScQY{U-^akT{{REi{<92B`!6ss?Z3>xwEr3d)Bc+bO#5#$Fzx@rz;u9> zf$0Dj1JeOs2Bri23`_?^7?=)-GcX;HWMDcV&A@a(i-GBYE(6m6D+Z<m_6$r192uAn zxG*ps@MK^*;LX5vz>k6HKmY^Nfp`X{133O1fe4zw^Z9cX7@I?%<ybfA}k>A(aA zrUR21m<~*1U^+09f$6{;2Brh^8JG@iVPHD2oq_4VP6nm}yBU}c>}6m&aDaj7z+nca z1IHMc4xC_MI&hkS>A+bArUU00m=3&QU^>Xnz;sZbf$3l%1Jl7$2Bw3v8JG_4XJ9&b zkAdmnUk0W_QVdLolo^-~sWC7e(qv#dq|Lx|$b^CEkSzn#AqNJgL(U9Lhuj#L4tX*# z9r9*iI^@g1bSR2}=};^K)1d?grbEdLOo!4Km=0wyFdb@TU^+C3f$7k62Bt%^7?=*t zVPHD6kb&vY5(cJ2%NUprtzcj}w4H(J&@Kk1LwgvQ4xMCRI&_YK>CgoRrbCw*m=4`w zU^;Y*f$7j)2Bt&z8JG^eV_-V;n}O-D00YxuVFsqdVhl`&B^j6w%P=q<mS<o(ti-@{ zSe1e4um%IuVQmJc!+H!%hn*Ri4!bch9rj>gI_$;3bl8W1>99Wo)8QZnro*8OOozi6 zm<~rVFddFzU^*Pfz;w8pf$8up2ByRN7?=(}U|>4J!oYMyi-GBg9|O~oTn45iJq%1o zRx&Uh*~GwfWGe&HksS<7M|LqV9XZUvbmR;J(~<KGOh+y;Fdezdz;xsW1JjXP3`|F! zGcX-_#lUprEd$e$4-8C4J~J>K`O3g_REUA;s5}GHQ56QJqiPIHM>QFkj_NTm9W`KJ zI%>?obkvlA>8J|>(@}Q@rlTPYOh+Rbn2ts>FddC!U^<%2z;rZ~f$3-l1Jltg2BxEx z3`|Gc7?_UEW?(uxkAdmvLI$RzOBk4rE@xmmx{876=voG*qZ=5Qj&5dPI=YR4>F7=d zrlaQ=n2ug#U^;r4f$8W~2BxFe8JLdVVqiLYmx1Z%0|us}j~JMaK4oA!`kaC3=t~Bs zV{8me$5a`Zj(IXL9m{55I@Zs?bZjdF)3KWjOvipOFdY|XU^;HXz;xV}f$6vd1JiM5 z2Bzb#3{1!U7?_TSGcX;GWMDcT!@zVrj)CcTA_LR$WCo_=1q@8biy4@XmoYFMuVi34 zUc<n2ypDnC_-qEI<0}}Lj<024I=+E{>G&oFrsLZgn2zsaU^>2sf$8`@2Bza@8JLb= zU|>3amx1Z{BL=49PZ*evKWAV%{)U0+_&Wxs;~yEAj(=ugI>E%ibb_CO>4XXc(+PD3 zrW0BWOeb_1m`)flFr6@FU^-#Oz;wcrf$4+|1Jen62Bs5E3`{4&8JJE)F)*EoVPHBD z$G~(Vfr05nG6U0zGzO*<nG8%PvKg38<S{UvC}3bZQN+M>qMw23#5xA16PFm6PJCft zIw`@xbkdH2>0}ZE)5%5#rjrX8m`?6xU^;n>f$8K)2Bwo|7?@6;V_-UYoq_4(0|us( zj~JLvK4D-w`HX?-<O>F-ldl+<PJU-#I{Ax%>EvGqrc(?IOsAL`m`<@WFr89jU^=DG zz;w!lf$5YP1Jfx>2BuSX3{0mS7?@5uGccWUWnelL!oYMYoPp_70t3^jTn467MGQ=* zN*I_<l`}A%s$pO{RmZ?|s*!=|R5Jt9sYwh>r{*&-o!Y{{bZR>T)2UqyOsDoTFr7NU zz;x;`1JkKv3{0m^GBBMw!@zXvJOk6IOAJh>o-;6=dd0wW>J0<asdo%ar#>(+o%+nc zbm}Vu)2Z(aOs9S_FrE6tz;x;#1Jh{+2By=p3{0nO7?@5cFfg5NVqiMGjDhL&83v}) z9~hX<@G~%-(PLmb<ITWyCWL|MOgID6nJ5OPGcgQIXHprM&g3yLohe{oI#a~Jbf$!X z=}Z{|)0qkerZcS!OlLY6n9g)FFrDdRU^+9Af$7X-2BtF`7?{rNWnemUh=J+MQ3j?n z#~GN;oMB)(bDn|e%tZ#KGnW~d&OBmZI`f`^>C6`frZe9dn9lrUU^?@Uf$1y*1JhY% z2Bx#D3`}Q57?{o~GBBMrV_-UK$-s2hhJop<Jp<EOCkCdot_)0PJs6nIdNVMc^<!W< z8_2+PHiUucY$gNK*&GI@vv~|mXA2mZ&K5B+oh@ZxI$O@bbheU#>1;Iv)7d%(rn3zU zOlO-In9j~;U^=^xf$8ic2Bvc?3{2-V7?{raF)*DgVqiKqk%8&l1_q{cXBn8zU1MN6 zcawqX+#Lp{bN3jS&OK*fI`@Hr>D(s<rgL8yn9hA;U^@4Mf$7{Y2B!1u3{2;_7?{rU zGBBMNU|>2g%)oSBl!58I5d+hCdj_WSE(}cP-58k8donPc_hVo>AHcwLKA3^&d?*9c z`4k4G^Mwpd=gSzF&Q~xnov&tKI^V#+biRp!>3k~#)A@D=rt{Mnn9eU|U^>5pf$98i z2B!1-7?{o<WMDdfgn{Y&aR#RIrx=*dpJiY=e}RGN{AC8F^Vb-d&c9}0I{%J=>HG%< zrt_Z|n9hG;U^@Suf$2QRy?+^)&i`j%y1>N1bb*C|=>i)A(*<P)rVCCCOc&A^m@afM zFkM)~z;xjf1Ji|X3``eA8JI4bFfd&VWMH}&#lUnimVxPF0t3^<BnGC7*$hk<OBk3g zmNPJ2tYTogSj)h4v4Mf<ViN<?#a0HUi<20bE>2}&x;TS@>Edh#ri=3!m@Y10V7j=M zf$8EY2BwSW8JI3!Vqm&>g@NhfO$MfmcNmy1-eX|8_<(`w;(G?Bi+>oHE-^ANU1DZn zy2Qr7bcvgR=@Ksk(<K20rb|K$OqUcHm@ertFkNzHV7lbSz;wxzf$5SD1Jfmc2Bu3v z3{00o8JI3bFfd(;W?;G$$G~(ck%8$_83WU$N(QD&)eKCRY8jX=)iW?%YGPoz)WX1Y zsf~f@QU?RmrEUhMOT7$Cm--o)F0El;x^$X>>C$@!rptm1OqWd=m@Y>%FkP-^V7fey zf$8#I2Byom7?>_UW?;JfjDhL$O9rOPuNjywe_>#{{Fj003IhYv6=nveD{Kr*S2!7% zu5dFjUEyV5x+2BEbVZhd>52ja(-ma~rYmX;Ojk4*n69`oFkJ~^V7d~{z;q>wf$2&N z1Jjj62Bs@13`|$j7?`ePFfd&yXJEQg#lUo>oq_2}4+GPcJ_e>M6B(GUOk-fWGJ}EX z%4`OvD{~o`uB>5Ty0Vjj>B>0<rYjd2n66x5V7hXhf$7RE2Bs@_8JMm-U|_oPn1Sia zGX|zBFBzDwykTIv%E-WUm4$)nDjNgSRSpKGt6U6BS9uwjt_m<PT@_|vx+==RbX9_Z z>8cb1(^VM;rmL0=Ojjcqn6B0^FkPL;z;yKx1Jl(P3{2N}7?`eUGcaBAVqm(K&cJl7 zfPv{+F$2@JG6tq=6%0(*8X1_bbulnq>t$fNHi3cZ+GGZ%YttB*uFYUzx;C4E>Dmeg zrfaJin69m3V7j)Ef$7>72BvG<7?`eIW?;JZfPv}SQwFAMAbVahFkO4kz;x{s1JkuH z3{2O)F)&?cWnj9_!N7E#n}O-N1OwA`Sq7%-@(fJZl^B?=t1~cN*JNP2uEW4|U5|n3 zx-A3KbuR{{>+uXs*OM5SuBS3EUC&@(x}MFzbUlxO>3Sgp)AbStrt9SlOxLRzn6B3{ zFkPR-z;t~o1Jm{C3{2N&GB91A&A@bh9s|?$g$zvB7c($jU&_FAeFX#4^;HZ^*ViyG zT|dddbo~Vb(+wU5rW<+;OgDlUm~K=sFx{BLz;t6b1JjLL3`{q^Gces`U|_n*%)oS$ zje+SV2LsbhK?bIqQVdKtWf_=mDljnJRAykhsm8!`Q-gu&rYQr{O$!F5o7N0WH|-dh zZaOkB-E?MPx|zVhbTgNM>1GiF)6G%_rkmvqOgC#7m~PfHFx_lqV7l4Nz;tsG1Jli^ z3`{o{F)-a+&cJkYB?HsVH4IEQH!?8Y+|0mqa~lKG%^eI(H;*$g-MqrUbn_(x)6F*w zOgG;%Fx~vbz;yE~1JlhP3`{qFGceu!$G~)pk%8$J3j@<Fb_S+fG7L<&<QbT5DKaqK zQf6SfrOLo`OM`*wmNo;^Ej<RNTLuhFw~QH>ZkaML-7;rjx)s8}bgP(w>DF`xrdvB1 zm~P!=V7krBz;s)kf$6pz1JmtP2BzCh3{1DX8JKSOF)-bp$iQ@aG6U1?ISfp<mohNj zUctb0do=^o?R5-Hw>L5{-QLW=bbBiU)9phHOt+6RFx@`Ez;ydG1Jmtu3{1B#FfiSI z%fNK|7X#Dn{|robm>8JuurM&);bdUC!^6OIhmV2jjsOGG9eD<(J4y^pcT^ad?ieyK z-7#Zex?{n>bjO;3>5c;f(;X)UraP_-On2NFnC^rzFx^RJV7gPmz;vgYf$2^i1Jj*G z2BteL3`}?08JO;LF)-cfWnj89fr07HWCo@?(-@fUtY%=kvyOr3&ISgiJDV7o?rdRT zy0e{u>CP?&raOBXnC|RnV7haNf$7c>2Btg57?|!nW?;I@#K3e{je+T|2LsdH90sPl zlNgxpZew7&dzFFd?iU88dx8v1_oNt@?#VJR-BVy-x~IgzbWfXs>7EG#(>-$rrh8Tl zO!sUVnC>|+Fx_)vV7lkRz;rK=f$3fd1Jk{52Bv#a3{3Z88JO<HGcet&VPLw~$-s24 zkAdmlL<XjNlNp%q&0t`<H=BX!-aH1TdkYwt?yYBFy0?je>E3<@rh7*inC=~8V7hmb zf$82k2Bv!#8JO-}VPLv<je+UjQwFAcpBR|#vokQ==VD;G&&$AcUx0z>zAyvReK7{6 z`;rVy_hlHE?#nYU-B)5@y06N>bl-}B>Ao!k(|vmeru&WzO!u7`nC`nVFx~fLV7l+k zz;xf2f$4q#1JnH=2B!NV3{3Y68JO-*U|_nxg@Nh*H3p{pzZjSvC@?TRaA9D2kj%jJ zpoxL$!F&d$2P+tu9;{|yda#ax>A?mDrUyG2m>wKrV0v(rf$6~s2Brt68JHfNV_<r4 zfr074T?VEH4;YvpJZ4~e@Qi`!!Al0F2d^2J9&#`+JrreNdML%f^iY<8>7hIW(?b;o zribbbOb;~~m>y~~Fg>(lV0viF!1U0If$5<?1JlDm2BwE03``Fr8JHeMGcY}jV_<ri zz`*n{pMmLN4Fl7|i405+r!X)*oX)`Xa25m8!?_Gh4;L^nJzUJd^l%vi)5DbvOb^#E zFg;w)!1VA41JlFf3``GCGB7<n&A{~VECbWS3k*yTFEKDZyu!fr@EQZt!<!6D4{tLt zJ-o}n^zau0(<4a+rbo66OpoFjm>xAVFg;qy!1U-W1Jk273`~!?8JHexFfctfWMF!1 z!oc*{oPp`FB?HrACkCd+-V98S{TP@Y2QV-_4rX9_9Lm7-IGlm$aS8*|<8%h5$5{+a zk8>HA9v3h$JuYHkdfd;z^mq;f)8mB<Opli^Fg;$z!1Q=E1JmPm3`~zVFfcvd#K83U zAOq9mBMeNBFETJazQ(}x_yz;h<J$~Oj~_5FJ$}T%^!O<Q)8pq1Opm`YFg;;rV0t3K z!1P3#f$51H1Je^l2Bs$}3`|ed8JM1EF)%&RWng+@z`*pxn1Shu83WT3Zw96(ehf@c z0vMQ{1Tio@31MJ*63)Q%B#MFQNh|}?lXwQECrJ!UPf{3|o}@7_J!xiOda{Ut>B%t$ zrYA2Ln4a=5Fg-P5V0s$H!1T0~f$8ZK2BxPQ8JM2#Vqki@mx1Z&0S2b0hZvZio@QWr zdWC`M>2(ICr?(iGp5A3(disEY>FFZ|rl(IBn4W%QV0!w6f$8aY2BxRK7?_^^Wng;x zpMmL_3<J|MO$MfCdJIg@3>cW688a|FvtVF)X2rnt%$9-anLPv3Gd~8VXMqe%&w?44 zo+U6aJxgU^dX~<>^el^k=~+Gl)3ZVbre`G#OwY;~n4YyVFg=^Z!1Qc61Jkor3{20~ zGB7>cz`*ouGXvAJZ46A$b}}$M+rz;0Y(E3jvqKC_&yF%MJ-fxg^z1GJ)3f^wOwS%N zFg<(B!1U}H1JkpY3{1~nGcY}S%fR&P0|V2uPYg`YzA!L77i3_1Zot6wJcNPic^L!K z^H~f`&kry#J%7T$^n#gz>4g#l(+hhBrWYOzOfS3{m|plXFue$1V0sbB!1N-Cf$2pm z1JjFi2BsHT3`{R_7?@t<F)+QTW?*_z$H4TWk%8$&3j@=Ob_S*woeWGbmN78B*v!E6 zVh01$i(L#%FZMDpy*R|c^x_Bu(~IK_OfOC{Ful0J!1Ura1JjEa3`{THGBCY(&%pHJ z69dzW?+i>Yeljq<_`|^T;vWOkOI`-1mr@K&FZCIiUK%kly)<QDdTGJH^wOGv>7^Y5 z(@RGNrk5@ZOfTITm|l7@Fun9;V0xLv!1OYef$3#B1Jlb)2Bw$U3`{Tc7?@rbGBCX? zVPJY$#=!Kll7Z=EH3QSjS_Y<<vly6O?qpzkd6$9d<$ngISIP`buRIx;Uga_{z3O3L zdbOH?>D37ardJmkm|k6BV0v|(f$7yv2Bue!7?@tYW?*{tj)CdbM+T->Ul^EPeP>{L z^^<|=)o%u-*BlH?uelkRUh^?9y%uC(dM(1h^jeI8>9sKf(`yF?rq`|vOs_o{m|lA^ zFunF?V0s<I!1Owlf$4QP1Jmm?2Bz1U3{0=f7?@sHGcdibWng;Uz`*pnm4WGX2LsdV zZU&~;y$npR=P)q6Udh1pdLIMR>w^qTua7V=y*|#s^!gM7)9bSgOs_96FulIa!1VeW z1Jmo93{0=@FfhIT$iVda3j@>ZZwySYe=sn;{>8xb`Y!|18wLiZH_Qx7Z&(?a-f%E5 zz2RbDdc(uO^hT3`>5T^i)0-RyrZ;^IOm8+ZFul3K!1U%11Jhe+2Bx=G3`}ps8JONC zFfhGMW?*`o#=!J8gMsO7Ap_IfDh8&vwG2#e8yJ}0HZw52ZDU}1+rhx}wwr<JZ7&1U z+gS`uZ|5>Fy<Nb-^mZ`=)7xbXOm9~(Fugs>!1VSK1Jm2<3`}otF)+Qo!@%_RAp_If zCk#w)pEEGMeaXP|_6Gyg+usaK?>HEk-tjUpz2j$KdMCud^iG_C>75h<(>qxPrg!oT zOz-p<nBG}4Fue<4V0stK!1OMRf$3c&1Jk=02BvrM3{3Bm7?|FrGBCZ%U|@Qe&A{|7 zkAdl3GXvARHU_459SltGx)_+=^)N8K>t|qkH;IAi-4q6<cheY{-pyoSdN-Sa>D^og zrgys-nBLuFV0!nLf$6<G1JiqF2B!C!3{3BP8JOO$VPJZHnt|#43kIh59~qe5e_>#H z|DA#9{Z9s_4@?Y9AGjHqKJYOxeGp(^`XJ1}^g)z?>4P`}(+3p>rVr{2Odqrum_Fz- zFnus!VESOh!1TeNf$2jG1Jj2@2Br@w3``%=7??g}GcbL~V_^DFz`*pOh=J)tBLmZi zJ_e=_lNp#kOl4sDFoS{V!(0ZY5AzwAJ}hEj`mlt7>BD9QrVj@gm_A%(VES-_f$76- z2Br`97??ghWMKO6gn{Y9a|WgluNas<yk%he@PUEp!)FGjj~on4AGsNrKJqd!edK3g z`Y6c2^ihO?>7zIU(?=-=rjIfVOdsVLm_8~pFnv^JVEX95!1OVmf$3v21JlQ)3``$S zGBAC7&%pFan1Sh&5d+hwKnA8yc??XS${CnGRWUGqs%2pMRL{Wlse^&((?kZQPg59} zK22v}`ZSAy>C;>Wrcd)3m_DsxVEVM4f$7sG2BuG28JIrpU|{;Ri-GCWbq1zSPZ*d! zy<}ke^oD`y(>n&HPoEi>K7C_g`t*Z=>C-O;rq7%VOrOOVm_AE0FnyL~VEU}U!1P&_ zf$6h41Jh?M2ByzC3{0P`8JIqMFfe_NWnlW8z`*o5nStqZ8UxekOa`XUISfpn^BI^v z7cnq>E@fc)T*1Kfxtf9L^8^N_&yyLLK2K#}`aGS1>GMnmrq6R2m_E;AVEVj(f$8%i z2ByzT8JIpVXJGogl7Z>-F$Sj3PZ^lLa56A`(Pm)!;?KbJrIdl`%S;BQFFP2RzFcQu z`tpT=>C0aRrmqYPOkbH9n7*<yFn#4?VEQV~!1Ps$f$6I(1JhRp2Bxpd3`}2D8JNDR zGcbKMVPN`d&cO85ih=2?Ed$e62L`6EP7F+6;~AK~<}fgQEo5N&TEf8ewTyx3Yc&JY z*E$BKuMG@LUz-@1zD{Id`Z|Sy>FYuUrmxEwn7*!HVEVe6f$8f82Bxo@7?{3pWnlWc zoq_4=F$Siuml>G8zF=Vb`kI01>pKRfuOAthzJ6g~`ud%L>FX~Brmue)n7%PEFnwcY zVEV?!!1PU;f$5tZ1JgGJ2BvRH3{2lt7?{4PGcbMAVqp5F%fR$apMmL{5d+gV69%Sl zW(-W<f*F{;6)`Y<o5sNOZ3hF>w>u0>-<cSgzN;}XeRpMG`kunT^u3XR>3bIg)AwEm zrtcFNn7&V9VER6rf$94a2Bz=J8JNDWWMKNfhJoq(dIqNN8yT3s?_*&4evpCb`w<4F z@5dRKzMo=X`hJFi>HA9trtjYvn7;pJVEX=#f$0YW1Je&y2Bsez3`{?`7?^(WFfjd) zW?=du$H4SMfr06VE(6mKBL=1)CJanJ%o&(|*f22tuw!8Q;mE-B!<m8UM-T(kk9Y>A zA0-S-Kgt=HepE3q{itPN`q99^^rM-9=|>v_(~nLDrXM{FOh5V=n0`!RVEVC~f$7I8 z2Bsft7?^&nV_^ERfr07AW(KAo+ZdRB>||j2v73SE$36z89|stiejH+8`f;Cu>Bm0? zrk_d-Og~*1n0{t3F#YUfVEVa<f$8T(2Bx1M7?^(XGBEuTV_^Cv$-wkWhJopq90SuY zbq1zi1`JHUj2W1InK3Z^vSeWTWy8Sq%Z`ERmp22`FFyvRUx5rvzd{(8euXnI{fcB@ z`c=lj^sAYH=~o8>)30s@reD1bOur^EF#Vd!!1QZ61JkdW3{1aPFfjdE&A{|)Ed$f9 zT?|aW_A@a3I>^BE>j(qWuagW+zfLnS{W{0M^y>lx)35ssOuybRF#USZ!1U`A1Jkds z3{1a%Ffjf4#lZBNoq_2$Cj--OZU&~`d<;y#T^X2u2Qe`H4rXBb9m2r$JB)$pcQOOh z?+FY{zb7*={hr3a^m`@))9*P9Ouy$dF#TS{!1Q}51Jmyn3{1aQGcf&L$H4S^BLma# zEeuS*w=*#P-o?Q5doKgi?*j}>zYjAo{XWLP^!p?O)9*73Oux@FF#Z0+!1Vh+1JfTS z2Btr(3`~DG7?}QWGcf((V_^Ct$iVbRgn{XgI0MrkDF&uLvJ6ar6d0KPC^InqQDb2G zqshSZM~8vwk3Iv_A0q~)Kc);!e=Hc7{#Y|G{jp_W`s2mG^v8#R>5m@+)1N>Frax^A zOn)XbF#Vaz!1QN21Jj>b3`~E{Gcf(R!@%_C9s|>#2MkPq9y2igm0)1{tIELiSDk_B zuO<W2UmXUfzljV?fAbia{uVGW{Vif(`diAt^mi2l)8Fk3On-MWF#X-l!1Q+?1JmEn z3{3wR7?}PsF);mOVPN{l&cO7~hJopyCj-+zZw97+z6?zN0vMS7wK6dMo5aBMZwdp` zziA9i|7J2U{X56N^zSwU)4#h6O#kjPF#UVP!1Q07f$6^r1Ji#s2B!ZS3{3yE8JPYj zFfjekWnlWB&%pG*kb&uc2?Nvrl?+V(w=ppN-@(B2e-{JO|Gf-M|35J>{r}Iv%)rRN z42EnB%na5H%nTk3%nV)(%nUvZ%nbev%nU6I%nTD5m>DKBFf&YLU}l)Xz|3%#ftleJ z12e-N24;qP49pA<8JHQx7?>HA8JHPW8JHQ>8JHQh7?>I38JHP!7?>IJ7?>Fg7?>H0 z8JHPYFfcQ2WngC9&cMvLlYyCW4+AsfM+Robe+<k_3=GUnObpCStPIRdRt(Hc?hMRK zUJT4kz6{Jv0SwGc!3@kyp$yDSg$&G0RSe8bwG7Nm4GhdoO$^LT(;1kV7BVn1ZDC+$ zI>5lpbc%tQ=_~^?(|HDFrV9+rOqUs$nXWM~GjlUAGfOZqGwU!gGutsRGdnUcGrKS_ zGy5_yGlw!TGe<BmGe<KpGp8^xGZ!&1GgmS&GdD0WGj}pDGf!n;W}d~s%)E?&nRz_} zGxG@sX6Ew@%*-zsn3?}EFtczoFthM6FtZ3UFtdm-Ftdm=FtbQ9FteC4FtgY(Fta!^ zFtfNYFtfNZFtbE6FtfxlFta2uFta2wFtemEFtemHFtf~IU}jm#z|69Sfth7J12fAG z24<Gs49qP17?@d3GcdE9V_;^v$iU2Ug@KvnIs-GyO$KI`uMEsA{}`BA85x*aSs0jE z*%+8vr5Tu6<rtV*6&RRV6&aXWRT!9A)ft#sV;GoOGZ~m!YZ#bW>lv6?dl;Bm`x%&7 zCowRyPGw+box#A&I*WmsbsGaS>wX4i)<X=;tVbD`S&uU?v)*A~X1&kA%=(alne`C^ zGwV|ZX4V%B%xtm@%xqc=%xt<0%xne>%xuOC%xq>1%xo46%xsPf%xo?U%xvxq%xs<v z%xrNC%xsAa%xuXF%xozP%xvil%xqZ<%xv=+nAz4aFte>^U}oFIz|6LrfthVT12fwp z24=SN49sko7?|0vGBC5<U|?pu&A`ldmw}n>83QxhO9p1PHw?^d?--cbnHiYb*%+AF zIT)DPIT@JQc^H`4`5BnmT^N|z0~wgvLl~IZ!x@;_6BwA;lNp%V(-@f9iy4^N%NUs1 zD;b#CYZ#c>>lv8Y8yT3{yBL_+dl{J7ConLxPhwzZU(UeHzKVgFeGLOM`&tHO_6-co z?3)>w*<Ua)vwvk^X8*y!%>J8!nf)IFGY2CBGY2yRGlx6_GlvEPGlw<<Glw1nGlu~K zGlwe!GlvHQGlv%gGlw?=Glw4oGe;l;Ge;W(Gsk2GW{znL%p5Zrm^l_PFmo(rVCGoC zz|66gfth0m12e~N24;?Z49pw{8JIZ^Gca?UVPNJs&%n%aiGi8p3Ij98O9p0+Hw?@i z?--al-ZL<Bd}3hc_{zY{sl~v|Y0kjRX~n?IY0JRO>A=9u>CC{)>B_*&>Bqp#8OXrQ z8N$HK8OFfOna#k=na9A)S-`-|S;)Z5S;D}~S<b-BxrTw6b0-5c=N<-T&ixF`oQD{g zIgc_ha~@}4=Dfhb%z2rCne!S0Gv^HkX3n<^%$y$>m^nW&FmrxpVCMYBz|8rRftgE> zftkyiftkyWftkyjftkyXftf3iftf3Wftf3uftf3kftf3bftf3nftf3Vftf3dftjnG zftjm`ftjm?ftjn7ftjm=ftjnDftl+712flI24=1c49r}Y8JM~5FfemHU|{BY%)rd` zfq|LpGXpc%HwI=dkiCBxn7RHjFmtmrFmrP;Fmv-VFmv-WFmtOgFmtOjFmr1%Fmr1$ zFmvlNFmoF)FmtCeFmo3%FmsnOFmqQhFmpFDFmtyuFmrb>Fmq33VCJ5|z|1|Hfth<A z12gwR24?QX49whX7?`=&Gca>+VqoUp!obXZl7X4~3<ERwIR<9#^9;<~ml&A2uQD+6 za4|6Rh%+$rNHH+;$TBeVs4+0}XfZJJ=rS<#STQj3*fKElI505tI5RNwxG^yEcrY;Y z1Trx5gfKAkgflSnL^3e*<S{Vw6f!XL6f-dMlrS*!lru2%R538~tY={6*~7rhv!8*P z=MV!k&rt?uo)ZkrJf|3#c`h?B^IT(K=DEqh%yXN8ndbuoGtXxRW}dGM%sk&1n0bCO zF!TIjVCFSsVCJ=BVCHpXVCHpUVCHpaVCMB=VCMB<VCKzWVCF4kVCF4hVCF4nVCJo4 zVCL;(VCJ33z|1?Dfthy-12gY*24>z_49vXe8JKzRFfjApXJF=i#K6q^nt_@39RoA( zM+Roze+<lgj10_tEDX$i><r9&Tnx;7JPgcyq72M@5)90I(hSUevJA|8Mhwh+rVPw{ z<_yey77WaM)(p&ib_~pX#SF}R4GheD%?!+ZZ4AtO{S3@}lNgx!rZO<|En;BiTgt%9 zw}OG0Z#4rm-#P|nz6}h_d^;JK`Svg{^X+F~<~zv1%y*4}neQe8Gv93nX1+TN%zXD5 znE4(tF!PHuF!QT0F!QT3F!O6MF!LKTF!P%+F!Nh7F!Q@HF!OsdF!TE`F!TE}F!Kj7 zF!P5nF!RSUF!LucF!LufF!QG}F!NV2F!R?kF!R?lF!MJsF!MJvF!Q%DF!S$bVCFx; zz|4P|ftmjt12g}124?<S49xs@8JPKBF);JLWnkw2z`)G^nSq)A8v`@{4+drdMh0d9 z76xVkb_QkvP6lQHIR<6{MFwU8Wd>#e6$WMjbp~buEe2+Rcm`&H90q2AVg_b`G6rUW zN(N?u8U|*8W(H<~HU?&aP6lRy9tLKCJ_cri*$m7Aa~YTg<})x0EMj05_|3p9$icuY z$i=`c$iu)a$j`tmn8m;>SkAyKSjoUFSk1sJSjWIDB*wrjq|Cr9q{YB2q|3l8WWc~I zWX!-UWW~TNWXr%T<iNlz<jlY<<jTM-RKmb4w1k0K=rRMd&>aS5q5BNXLXQ}jg`O}l z3w>o^7W&V?EX>5fEX>NlEX={cEX>WoES$o?ES$^0EL_FFEZoSzEZoAtEZok(EZoJw zEIg5cS$GNqv+#5VX5m>3%))aRn1vTJFbl6@U=}{lz%2Zlfmwu=fmwu)fmuY5fmuX^ zfmuY1fmuYEfmy_Wfmy_ufmy_ifmy_ofmy_cfmy_!fmy_ffmy_#fmtMofmtM!fmtM+ zfmtMyfmtM)fmtMufmtMhfmx)LfmviB1GC5p24<0W49uc@49ub?49udo49ubq49ud= z49udg49uc_49ubd49ucc49ud<49ub@7??#*Gcb#uV_+7&$iOUmg@IZ0Is>!lEe2-M zy9~^t4;Yw5A2TqEK4V}OeaXNq`i6m7^gRQ!=qCnd(XR~5qCXgzMSn9ei~eI^7Gq>! z7Gq&x7Gq~%7UN=I7UN}L7877#787P*787G&7L#OP7L#FM7L#XS7E@wi7E@(l7Smv0 z7Sm>67Sm;57BgdD7PDYr77Jov7K>(J7K>$I7OP=k7Hef-7Hel<7F))^EViD3S!^Q% zv)FkCX0aO#%wo3~n8jHcn8o=Rn8gJcn8l45n8j@vn8ocFn8ni>n8gbin8k}2n8jx@ zFpDo@U>0A(z$|{Afm!?p1G6|t?{@}f2?hpc2_^<+33&!)2@M8j2`vU@32z2wi4X>6 zi7*CciChL|i82Oei3$d0i75=s5_1`tCFV0QOPpt5mbk&dEOCp0S>hW5v&4S}W=Tc{ zW=TZ`W=SmuW=S0eX31a%X2}=^X301PX30thX2~W7X2})?X36CY%#s@zm?bwcFiYNG zV3vHyz%2Qgfmw=|fmuq7fmup|fmzCdfmzCvfmzC%fmy1Mfmy1Gfmy1Cfmv!P1GCgR z24<-Z49rp&8JMMRF)&NrVPKYKVqli$W?+`)Wnh-}Wnh*LV_=q!U|^PB!oV!OmVsG% zJp;4!e+Fh54hCi!E(T_qXa;7P6b5FQGzMmw4GhdOI~kZ|b~7-`yk%gP`NqI3E5^Vq zE6czvYs<ha8_d8go4~*<o6Nv0o5sK_o5{c|o5R2?o5#Q`JDGu5b|wR}>{bS5*+UG> zvZooCWzR7%%U)z)mc7EjEPI`SS@r<~v+QFAX4z*9%(5>Tm}TEEFw4GUV3w0(V3zY` zV3w<4V3u3Tz$~|ifm!Y%1GC&M24=at49s#57?|ZAF)+)0W?+{4#=tE1lYv?84+FE@ ze+FiG4hCj<Q3hstDF$YFSq5f#1qNn$RR(5x4F+a;Ee2+J9R_B3V+Lk<D+XqHe+Fjx z7zSqfSO#YKI0k0<1O{gLTn1+O5(Z}Zat3DkDh6ixS_WqM76xYdb_QnoE(T`#UIu3Q zeg<aweGJU<ZyA^s#2A<r<QbS1lo*&5R2i5R)ESr+EEt#-tQnXU>=>9892uAuTo{-Y z?l3SbJY`^3_{6}h@STBK;THq5!e0hvMJ5JjMOFr8MGgjLMJ@(rMR^8hMQsLVMF$3E zMPCMHMLz~+MSlin#XtsT#W)6L#Y6^X#S{i+#dHQ{#ViJ9#T*7^#YzTd#cBp-#aaet z#Rdju#V-uZN{kH5N<s|GN}>$RN)imrO41C>N^%U$N{S53N-7M@O6m;EN?HueO4ba_ zN_Gs)N{$T7N-hk{O70BIN?r`iO1=!tN&yVaO2G`wN}&wQO8E@TO4SU^N_`B>N-G(d zm9{f5E1hCsR=UH$tn`Y3S?Mzav(h&PW~HAD%u2r*n3V+>n3W|Nn3ZK1n3d%jn3WY7 zn3c^Kn3cmAn3dxhn3Z!Fn3Z!Gn3eMwn3W3{n3Zc8n3WqCn3bCun3dZYn3X#jn3cO3 zn3d-;Fe@)(U{+qqz^uH6fmwMy1GDl*24>}549v>=8JLyNF)%CNW?)vn!@#V3mw{RN zJ_EDz8wO_O_YBO+pBR{xzcMf@|6pKN{>8wo!ok3-BErC|qR7CkV#2_zV$Q&<V#UC$ zV#~m+;=sVH;>^IT;>N(N;>p0Q;={nK;?KaWlElEQlET2OlFq=alF7iVlEc8PlFz`b zQpCWlQp&)rQo+EiQpLcmQp3Qk($2uFGLL~-Wjh12$|(kBm4^(>D&H8GRT&tVRV5gh zRSg-KRjnA9RSOuHRqGj;ReKniRi`sBt1e++R$a@$th#}LS#>i5v+6bmX4Rbx%&LbN zm{pH5Fsq(mU{*cNz^r<Xfm!te1GDN&24*!D24*#R24=M&24=Mg24=N*24=NH24=M^ z24=NF24=Mq24=N#24=M?24=My24=NR24=Mh49sei8JN|kF)*vmWMEcXz`(4wn1NYs z83VK0N(N@N)eOvPR~VSpnHZSW^%$7d4H%f!Z5f!=T^N|v-5HqGy%?C)eHob5Ll~IV z!x@;>qZpXgV;Pv$;~ALM(-@f5^BI`6>lm1|8yT3j`xuzDXEQKs&tqWLUdX_#y@Y{T zdpQHM_9_Nu?X?Wd+PfH-wf8bGYad`>);`R@tbL4uS^Fddv-TMVX6<tf%-WwBm~|u= zn01^On00a(m~~1Sn04wHm~|Q$n03}NFzak%VAk2mz^t>IfmvrS1GCO424<bJ49q&` z8JKl0F)-^~Wnk91&cLkmfPq=(F$1&CQwC<8=M2m`9~hW*J~A-tfXx5Hz^p6Cz^p66 zz^p6Az^p6Dz^p67z^p6Jz^tppz^tpvz^tpmz^tpyz^tpsz^rS)z^rS_z^v=Xz^og{ zz^og>z^oh2z^og^z^og~z^t3Vz^t3hz^t3bz^q%&z^q%zz^q%tz^q%xz^vQAz^vQM zz^vQGz^vQBz^vQFz^vQDz^uE3fmwGm1GDa924+1T24+1y24=l{24=l(24=lw49t3m z8JP7hFfi+Z<exDx>%C-P)_cRitoNRQS??1Av))$*X1yN_%zD2WnDzcKFzX94FzX95 zFzbskFzZV)Fzd@OFzd@RFzYKZFzc%_Fzc%`FzahEFzf3uFzeehFzW{~Fzcr=FzZ(` zFzfd+Fze4^VAkKjz^s3mfm#0|1GD};24?-Q49xmJ7?|~cGcfD_V_-I5WMDR6VPH03 zXJ9tqVqiAlWneZCU|=>7W?(iDV_-JWWneZiU|=>dW?(ijV_-J0WMDS1VPH0}XJ9sP zVqi9KWneb&U|=@zW?(k(V_-H2U|=>VW?(j0z`$&<g@M`NCIhn}I|H+!Bm=XdJp;30 z90Rjq4Fj{`JO*aNJq*l-CmEOxFEKD1US(i5yurY1c$<OQ@E!xR;d2IN!&eN<hHn{| z4L>k28-8YBHvG!KY{bLBY^1=zY-Gv6Y!t%4Y?R2rY?Q*lY?RKxY?Q^oY?RBuY?RNy zY}CcTY;uW#+2kz)v&k<8W|O}R%%%(s%%;o?%%*G%%%&U+%%;i=%%(aF%%+|U%%(mJ z%%=Vf%u%5X%u#U+%u($O%u#&|%u(AJn4@JFn4>irn4@(Vn4|R>n4^stn4?V@n4`@Z zn4^Ojn4_Z^n4>Egn4_y1n4{|$m}86?m}49mm}5K{m}7hxm}C4Im}7z%m}5d2m}BA? zm}3$dm}62Hm}Alzm}9aSm}7Dnm}8n5m}90hFvo0QV2(M>z#MaffjQ<T19QwR2IiPM z49qd#8JJ^P7?@+(8JJ_a7?@*u8JJ@Q7?@*)7?@*q8JJ_u7?@*&8JJ_k7?@)t8JOev z7?|Ts7?|T68JOd|7?|UH8JOb&7?|UN8JOe37?|VY8JOde7?|Ty8JOcT7?|U-8JOd8 z8JOc*7?|T`Ffhk$WMGav!@wN(oPjy+3j=f9cLwITUkuD~e;JtL85o%3nHZSkWf_>` z)fkxLof(+p-58kTJsFte|1mHpa5FF`h%qoHNHQ=d$S^P`$TKh}C^0Z6s4_4o7%(s= z7&9;@m@+UYm@_aZSTQgs*fKCD*fTIE_%SdiR4_0nEMQ<x*u=n`aFT&J;RyqC!bb+? zgf9%t3Evr*6Miu;C;Vk#PWaEjoG8e^oG8b@oG8!0oT$LSoT$XWoT$&hoM^<roM_6x zoM^$ooM_F!oM_9yoan{CoaoKKoan>Aoao2EoEXi(oS4VJoLI=foLIuZoLJ7loLI%c zoLI}ioY=s?oY>63oY=;|oY=|0oH&PpIdMJ%bK)Wf=ES88%!w-)m=jksFek2KU{2h~ zz?`^+fjMzI19Rd|2Ij=a49rRF49rPd49rPE49rQT49rQh7?_g|GB77SVPH;{VPH=7 zVqi|rWMEEiXJAfV#lW0=hJiWxBLj1a90PNTHUo2t2?KMAIRkTw6$5jMEdz6k0|Rr4 zCj)be4+C?GKLc}05Cd~cC<Aj!I0JJ^9s_eq69aR~YzF3(Z4AsQhZ&etjxjK&oMd25 zIm5u5a-M-X<st)f${PmebQ1>Vbbkis^cV)_^mqp5^dtu6^i&4s^b7{(^ehJE^i~Gu z^gagW^wkW^>FXGn(>F3OXQVMOXB0CqXOuB8XH+sUXVfq-XVfz=XEZV}XUt(>&REL8 zoN<VOIpZh;bH)h<=FD0K=FBbz=FI5~%$c(om^0@xFlR1cV9s33z?`{^fjM&}19Rp! z2IkD249uB(7??BnF)(KyU|`NX%)p#^lz}<(I0JL$BL?QoKMc%SVhqe#h78PEfeg%9 zaSY5^nGDQXISkBM`3%fiMGVYYr3}nj6%5Q-%?!+0Z4As=oea!b-3-iGeGJT56BwAY zCNVH)tzux#y1>Ak&BDN(t;)ch?aRQN9mc?%9nHX;9m~L+oxs4Hoy5SLUCO|mUC+Rr z-NC?|-Oa$9-N(S3J%NEadnE&N_8tc2?9&X)*^e2Rv%fJg=Lj({=ZG*c=ZG^f=SVUz z=g2TH=g2cK=O{5S=Y%mZ=fpEG=VUN2=VUW5=j1Uk=M*w9=aeuo=aexp=QJ}g=kzf! z=S*Q>&Y8}@oHL7oIcF{dbIvga=A82k%sKBEm~%ceFy{&}Fz3oMFy|^UFz2c=Fz0G8 zFy|UFFz4DaFy}fjFy}fkFz325Fy{s_Fz1FcFz1FdFy}@wFz41VFz2>1Fz5C$Fz4=M zV9wpgz?}P%fjN(bfjLi*fjLi%fjLi-fjLixfjLi+fjLiwfjLi|fjLi;fjQ5WfjKXj zfjKXMfjKXefjKXSfjKXqfjO^;fjO^~fjO^^fjO^{fjO^*fjO_8fjO^>fjO^-fjMs} z19RRH2IjmA49s~?8JP2)Gcf1<XJF1}VPMV|Wnj*iXJF3PVqnfUWnj*?U|`O-Vqng< zWnj*CU|`PoWnj(^VqngXW?;^bV_?otWMIzEVqnhCVPMWb&cK|1fq^;y1p{;bTL$I= zRtDw*SqA0;H3sGacLwGH9|q=vTn6TXDhB3)W(MYhHU{Q`P6p<J9tP%ueg@`(84Sz? zvl*BR<}olAEM#CVSi-<uu#ADZU@rr6!9@n<f>#X8g{%zBg$fMJg}MyPg$4}Fg~klb zg=P%Qg_aD=h1Lwrg<%ZLh4Bo`g*6P!h4l=~g-s01Mdl35MJ^1?Mg9!TML`VAMWGDL zMG*|lMbQk*MR5$wMVSoDML7)2MR^R&MFkAZMa2xvMP&@kMHLLpMg0uSMXMQ@i!L%S z7ky)3F6LoiE*52AE*4{8E|y?mE;eRhF1BG{F1BT0F1BZ2F7{wxE)Hd2E{<SeE{<kk zE{<bhE>2`%E>31(E^cRFE}p=^Ts)tFxp)x+bMaCJ=He9$%*Cr2n2XmjFc)uRU@qRm zz+AkIfw}l419OQo19M3X19Qn_2Ii7|49q1@7??|y7??}78JJ5g7??|~8JJ7$7??{P z8JJ6*8JJ658JJ6x8JJ587??{-8JJ5e7??||8JJ5O7??|&7??|27??}j7??}vF))`N zU|=pi%fMU;GV?hDbLlGv=F+ze%%vX~m`gu1FqeK~U@ra1z+C!=fw}ZQ19KS@19KTG z19O=S19O=?19O=o19O=Q19O==19O=c19O=!19O=H19O=%19O=f19O=r19O=T19O=j z19Mp-19Mp)19RB|2IjKW49sQc7?{hRF))|&Fff-ZFff-pGccD&GBB5CFff;wGBB4{ zFff-lGccF8GBB6VVqh*`%)nf}f`PewH3M_`ItJ$Q4GhfXdl{I^Pcbl;pJiY!zres; zewl%}{2Bvu`Ar7q@;eO7<u4hS%il0Cm%nFVF8{>9T>h1Tx%>wMbNMd@=JG!b%oXem z%oWlM%oT<V%oX+w%oW}Y%oW)T%oVu|%oSA(%oX(v%oR-x%oVK+%oSY>%oV*1%oP(D zm@6hRFjp*RV6NE3z+7>dfw|%g19QcB2Ih)O49pc*8JH_>Ffdo#VqmWL&A?nK&cIx0 z&A?pg%fMWj&A?n)&%j*S&A?o_l7YE$4FhxKdIsjoO$^MHTN#)ucQ7zl?q*=F+{eIN zd60p*@)iSg<y{8m$_EV0m5&*iE1xkiSH5Imu6)hFTqVoET&2dqTxHC_TxG_<TxH3? zTxG++TxHL|T;;^TT;<BZT;<NdTouB=Toum1TouK@Touc}Tvg4$T-CwAT-D9MT-C?G zTs4t_xoR2%bJb!7=Bi~3%vCEHn5)(>FjwtlV6HmGz+82bfw}4o19R1R2Ii_q49r#U z8JMd+GB8(tW?-)R#=u<7%)ngD#=u<7!N6S2&A?nO&cIx)!oXau&cIx)#lT#x!@yi^ z%D`Oh&A?n8z`$Ic#=u;i&%j(=#lT!$%fMXSz`$I+kAb=RI0JL_Wd`Qz8w||VPZ*f1 ze=#uEXfZI?m@_cf_%JZn_%krq1TiqzgfcMKL@+SdL^Ckg#4#|}Br-79q%bhoq%$zr zWHB(;)H5*GG%+yOv@kH&v@tN(bTBa2bTcs5^f55kOk`lLnasdkGmU|{W(EUu%`67y zn(YkCHP;xJYkn~>*UB(3*E%pT*QPNr*LE>5*REt>u06rPT>F%Px%M3cbL~e4=Grd| z%(dSbm}~ztFxPP~FxPQ2FxT-hFxLq(FxQDNFxQDOFxM$FFxROuFxP1^FxTlYFxTlb zFxMF}FxUApFxN#hFxMq8FxMq9FxRCrFxO=<FxTZUFxTZXFxM3_FxNFOFxT}mFxO3D zV6L0Oz+5+-fw^uD19ROx2Ijhj49s<l8JO!fF)-JiV_>ek&cIyvj)A%EGXrxy7Xx#> zHUo3L9s_f|Ap>*02?KMzIRkUO6$5j<Edz7C0|RrtGXryd3<Gn0JOgum5(9I6Dg$$U z1_N__HUo2gE(3FY83S{DGXryd8v}EFCj)bR4+C?3KLd09BnIaCsSM2Z(;1lSmoPBb zFK1w`U&+8+zlMRiem?_q{TT-4`tuCT^%ohK>#r~{*FRuju7AtGT>pWAxgO-UZw$;0 z+ziYO5)8}@(hSTEatzE3iVVyRnheYhW(>>?77WY{Rt(GywhYV-UJT3)z6{I_{tV0w zK@7|daSY52*$m7Lc?`@Ag$&FM#SF|14Ghc;QyG{WW-u@}%w}M2n8(1}u#kbdVF?3s z!*T}ZhE)vA4Qm;g8#XX7H*98LZaBff+;EzKx#27WbHjNC=7x(5%ner<m>aG$FgM&{ zU~ag>z}#@3fw|!!19QV;2IfWv2IfY22IfX*2Ij_82Ij_22Ij`~49ty}8JHVCF)%j? zGB7vkF)%loGcY$<F)%mTGB7vUGcY%KFfca-GB7uVFfccTGcY$rF)%m9GB7vAGcY&h zFfcdeGcY$5F)%lkGB7t)Ffcb&F)%kxXJBqx!ob|Ll7YEt4Fhx2ItJ#Z%?!*<+ZdRe zb}%qE?P6eVI?2G?bd7<z={5s%(_IGUrUwknO-~t^o1QZ;H@#wDZhFJO-1M7)xtW!L zxmk^YxmlBexmkySxmllqx!H(;x!II~x!Hn&x!Ib5x!I0^xjCGHxjBk~xjB}BxjBJ> zxjC7ExjBu2xjBP@xw(*mxw(dcxw)Q!xw(mfxw(~rxw(UZxw)Hxxw)5txp@`?bMssV z=H>+q%*~4#n49-8FgKrOU~WFgz}$S1fw}n#19S632Il4`49v~X8JL@2F)%lOXJBsr z$-vwUa^pV+<`!-S<`zB%<`w}4<`!WF<`#Jd<`x|W<`#Vh<`yFc<`xqM<`zc==9Vx9 z=9WkX=9U-+=9YK{=9VM|=9W|j=9UZw=9X**=9WAL=9WSR=9Ur$=9W$d=9V4?=9WGN z=9UQz%q^1`m|LbYFt^NLU~ZYsz}zyIfw^S?19QtF2IiI}49qPD8JJrhFfg~WFfg~O zF)+7!F)+6lFfg}HVPJ0E%)s1wiGjKGJp*&=4+iGe-we#H{}`Ct7#Nt_I2oARgcz9H zL>ZXdBp8_6q#2mo<QSOS6d0J>bQzf23>cW(j2W2Q%ov#4EE$;FtQnZwA{dz4QW==r zvKW}#av7N0@)?-hN*I{i${Cp3DjAsDsu`Hux)_+-rZX_N&0%0}o5#T1wvd6jZ5ab| z+X@Eew$%*GZEG2r+x9Rpw_RjlZu`W*-1e1$x$Or7bK7qQ=C*$f%<YT}%<U`;%<b$9 z%<WtZ%<aky%<XCn%<Y;C%<Vc1%<cLN%<V=D%<U!&%<Z-e%<Wzb%<aAm%<TaT%<aJp z%<W+e%<Yj3%<VA@%<XXu%<b6>%<Xv$%<Y8?%<Ux%%<WScnA;aJFt;yZU~XT|z}&uy zfw_G<19ST>2Ils?49x8Z7?|77GBCGaU|?>)%)s1!je)uSF#~h^QwHYt=M2p4uNauy zzcVnm|6*Wn|HHuC{-1%lgPVc5LxO?1Lz;oPLym#DLxF+0LzjWM!-;{p!<B)#!-Ijj z!<&J*!;gWvBanf)BZPsuBb<S`BZ`5!BbI@=BY}arqm+TUqk@6Cql$sKqlSUGqmF^O zqmhBRqlJOFqn&}dqmzNTqlbaHqmO~PV*&$n$65yFjx!9*9UmB&JB1jSJIxrFJ7XA_ zI~y37JLfYnckW|g?!3*w-1&rox$`*#bLT4t=FT?^%$;8um^=S5Fn2LBFn6&qFn6&t zFn4h=Fn94VFn38ZFn7r?Fn7r_Fn1|2Fn6gkFn6glFn75yFn0wqFn5J9Fn2{VFn2{W zFn1*|Fn1+0Fn6UgFn6UhFn5(PFn2XGFn4t@Fn4t^Fn9GbFn3L2VD6g2z}z*Rfw^lY z19R632Ij5{49s0O8JN57Ffe!BXJGDn$iUq7ih;SCm4UgNgMqo5n}NAohk?0UpMkmC zh=IA=l!3Y1f`Pf)nt{37j)A$`k%76}g@L&{mVvoDfq}U@nSr@Gje)s4lYzNAhk>~} zkAb<noPoK!g@L)doq@T#i-Ebjmw~x^0t0jRWCrH$X$;KWGZ>h=mohMSuV7&AUd_PV zy^evodp84f_dW*Z?t=`>-A5RhyDu^@cVA&(?!L~z+<l9Ix%)W-b2rGHZyA`oKQJ(N z|7BqA{?EYN!^ptg!@|JaBgnwqBf`MkBgVkoBgw$rqsqYCW5mGRW6HqXW5K}OW5vMS z<Icd`6T`sV6VJfhlf=N>lghx{lfl5;lg+@~lgGf^Q^>&FQ^LU9Q_jHLQ^mmC)6c-% zGl_w@X9@#z&ol<+o*4|xJ+m2@d*(4P_bg;!?pe&h+_Q{<xn~6fbI&RU=APpW%stN- zn0vVxn0s{?n0o^ln0w0@n0se2F!%0cVD7!az})+lfw}h|19KlE19Kk>19Kl619Klg z19P7Q19P7=19P7o19P7u19P7W19P7m19P7-19P7l19P7x19P7Z19P7}19P7v19M*- z19M+C19M*i19M*y19M*~19M*$19M*u19M+J19M*^19RU52IjuG49tCt7?}H(FfjKm zXJGDI!@%6Pj)A#vBLj2aW(MZILk!G)rx}?09y2iay<lMOXJBCN7h+)UmuFz^*I{7p z*JohvH)3G!H)UY%w_srIw`O4Ow_{-L_hw-3_hVr04`g8O4`E>L4`*QRk78i%k6~c$ zk7Ho&&t_omFJNHqFJ@rwFJoZtuV!HGuVY~DZ(v~VZ(?BXpU%MCzlwpme=`Gf|278Z z{+$fW{ks{M`|mI?_upq=?tjF<-2a4ux&Ju>bN?#_=Ki+~%>5r2nEO97Fi+rNV4lFw zz&t^Sfq8-`1M>t42IdLU49pW`8JH)iF)&XsWni9Q!N5Ghnt^$O9Ru?OM+W8zE)2{Q z+!>fBcrh?f@L^z{5XrziA%=l@LOcWWgd_&$36%`Y6WSP<Cv-9}Pv~J_p3u+0JYf+7 z^Mv&b%o8>-Fi+UZz&v3G1M`HV49pWwFfdOz&A>e290T)&8w|`7o-!~`c)`Ft;WY#E zgm(<g6Mi!=Px#BgJmEhB^F$^F=860a%oBwem?w%bFi#X`V4kSVz&z1_fq9}a1M@^P z2Ih$t49pW#8JH)|U|^oOkb!yP5(egp%Ndv_u4G`IxQT&z;#LOci8~mWC*EXWo_L3W zdE$Kr=82COm?u7EV4nDbfqCL<2Ih(H7?>x1WMH1e#lSp?mw|bb00Z+RVFu<&Vhqfa zBpH||Ni#4{Qej}8WX!-k$&7({k|hK4BpU|iN%joPlbjfsC%G~(Px4@3p5(>AJSm)k zc~TSu^Q2e?=1B<*%#(5%m?sr5Fi$FGV4hUQz&xp$fq7CJ1M{R#2IfgU49t^eGB8h? z!@xXgJ_GZlMGVZ7)-y0q+Qh&-X)6Qsq#X>*la4YlPdd)PJn19@^Q1Ej%#&_1Fi*O} zz&z<51M{SZ49t_>GB8j2#lSr2F9Y*r1_tKIObpDE`5BleD={!nR%KwGtiixMS(|}* zvK|BTWJ3n#$tDcUlg$~JCtEQvPqt-Xo*clyJUN(wd2$#7^W;bd=E*S(%#-67m?tMP zFi%clV4j@Lz&tsVfq8N^1M}os2Ik2f49t_)GcZp+%)mVPJ_GaQpA5`XSQ(h7$TKic zF=AkzV$Hxj#e;!)iZ=uE6h8*$DS-^kQ$iS+r-U;wPl;k+o)W{rJSCHXc}flg^OSrB z<|!u_n5SH2V4iY=fqBYp2Ii?o49rvQ8JMR!F)&YcWni8<mw|ceDhB4MYZ;iQZeU=Z z#=*cmO_YIongj#$G-(FrX+;do)9M+Rr!_G!Pitjho_3dkdD=4u=4qc9n5TVVV4n7s zfqB|@2IlF449wG|7?`KKGcZpNU|^me%)mT7jDdN21OxN*WCrHxH4Mzt>lv7*H!(0z zZ)ISf-od~;y_<n~dM^X>^l1#t(-$)^PhZBsJbfht^Yk?g%+uF1Fi+paz&w2`1M~Fl z49wGyFfdO)&cHnV6a(}0vkc7BZ!s`WzstZp{Q(2>^v4X$(?2jUPyfuoJpCI3^Yot# z%rn>+m}hV@Fwfv&V4lIxz&t~Sfq8};1M>_82Id*c49qhO7?@`mGceCEWni9R!N5Gj zg@JiSAOrJ^5C-NM;S9_(A{m%xq%knh$Yfxik;A||BcFkJMiB$^j1mUs866DFGbS=H z&zQ!*JYyyU^NcwR%roXOFwa=cz&v9U1M`fn49qijFfh;9&A>e45Cij!qYTV5jx#XN zIK{v`;|v4yj9U!MGoCXr&-lf_Jd=fic_uFd^GqoQ=9!8N%rjLOm}japFwfLtV4i8n zz&z80fqAAG1M^Hv2IiU849qiq8JK5=F)+_eW?-I~!oWN;m4SI?Is@~}5(eg(wG7NN z8yJ{pHZw5KY-3=a*~!2>a}opd%&82_GiNX`&z#M`JaZlc^UMVd%rjRqFwfk~z&vvw z1M|#l49qhhGceD5!@xZAJp=R1PYld6zcMh-{K3FHi;;nO7Bd6$ELH~QS?mnVvp5-; zXK^zy&(dUIp5?~CJS&rdc~%nx^Q?Xb=2;6Em}f0!V4k&%fqB+S2Ig677?@|RXJDSS ziGg|6RtDx-I~bT}on&C1b((>B)>#JTS?3v;XI*4qo^_dldDc}1=2_Pnm}lK&V4iiG zfq6D31M_T42Ikpm49v5qGBD3Rz`#8F0|WCMB?jg>feg%Z;ux6cBr-71Nnv1~lg_|A zCyRl3P7VX}oCXHwIh_p5bNU#V=S*Z^o->7kdCoKj<~fTQnCGlwV4ky<fqBjb2Ie`N z8JOqnVql)Lmw|cCeg@__hZvaW9ARLdbC!X5&NT++Igc5b=e%NIp7WN0c@D_l&kW3S qelal5`OCmO=RX7UTqXwQxhxFKbNLv+fQ1Q6F?gs$Xeh}%R~!JshToL{ diff --git a/MiniScanner/Extensions/UIViewController+Extensions.swift b/MiniScanner/Extensions/UIViewController+Extensions.swift index 77d020e..8e3c6b8 100644 --- a/MiniScanner/Extensions/UIViewController+Extensions.swift +++ b/MiniScanner/Extensions/UIViewController+Extensions.swift @@ -1,40 +1,52 @@ import UIKit +import LNExtensionExecutor extension UIViewController { - - func addChildViewControllerWithView(_ childViewController: UIViewController, toView view: UIView? = nil) { - let view: UIView = view ?? self.view - childViewController.removeFromParent() - childViewController.willMove(toParent: self) - addChild(childViewController) - childViewController.didMove(toParent: self) - childViewController.view.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(childViewController.view) - view.addConstraints([ - NSLayoutConstraint(item: childViewController.view!, attribute: .top, relatedBy: .equal, toItem: view, attribute: .top, multiplier: 1, constant: -10), - NSLayoutConstraint(item: childViewController.view!, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier: 1, constant: 0), - NSLayoutConstraint(item: childViewController.view!, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1, constant: 0), - NSLayoutConstraint(item: childViewController.view!, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1, constant: 0) - ]) - view.layoutIfNeeded() - } - - func removeChildViewController(_ childViewController: UIViewController) { - childViewController.removeFromParent() - childViewController.willMove(toParent: nil) - childViewController.removeFromParent() - childViewController.didMove(toParent: nil) - childViewController.view.removeFromSuperview() - view.layoutIfNeeded() - } - - func hideKeyboardWhenTappedAround() { - let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard)) - tap.cancelsTouchesInView = false - view.addGestureRecognizer(tap) - } - - @objc func dismissKeyboard() { - view.endEditing(true) - } + + func addChildViewControllerWithView(_ childViewController: UIViewController, toView view: UIView? = nil) { + let view: UIView = view ?? self.view + childViewController.removeFromParent() + childViewController.willMove(toParent: self) + addChild(childViewController) + childViewController.didMove(toParent: self) + childViewController.view.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(childViewController.view) + view.addConstraints([ + NSLayoutConstraint(item: childViewController.view!, attribute: .top, relatedBy: .equal, toItem: view, attribute: .top, multiplier: 1, constant: -10), + NSLayoutConstraint(item: childViewController.view!, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier: 1, constant: 0), + NSLayoutConstraint(item: childViewController.view!, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1, constant: 0), + NSLayoutConstraint(item: childViewController.view!, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1, constant: 0) + ]) + view.layoutIfNeeded() + } + + func removeChildViewController(_ childViewController: UIViewController) { + childViewController.removeFromParent() + childViewController.willMove(toParent: nil) + childViewController.removeFromParent() + childViewController.didMove(toParent: nil) + childViewController.view.removeFromSuperview() + view.layoutIfNeeded() + } + + func hideKeyboardWhenTappedAround() { + let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard)) + tap.cancelsTouchesInView = false + view.addGestureRecognizer(tap) + } + + @objc func dismissKeyboard() { + view.endEditing(true) + } + + func directShareWith(extensionBundleIdentifier: String, payload: [Any], view: UIViewController) async { + do { + let executor = try LNExtensionExecutor(extensionBundleIdentifier: extensionBundleIdentifier) + let (completed, returnItems) = try await executor.execute(withActivityItems: payload, on: self) + print("completed: \(completed) return items: \(returnItems)") + + } catch(let error) { + print("error: \(error.localizedDescription)") + } + } } diff --git a/MiniScanner/Helpers/Globals.swift b/MiniScanner/Helpers/Globals.swift index c785d14..744e223 100644 --- a/MiniScanner/Helpers/Globals.swift +++ b/MiniScanner/Helpers/Globals.swift @@ -8,9 +8,11 @@ import Foundation import UIKit + typealias AlertViewClosure = () -> () typealias AlertViewTextClosure = (String) -> () +// Global Alert @discardableResult func alert(confirm: String, destructive: String, @@ -38,10 +40,7 @@ func alert(confirm: String, return topV } topViewController()?.present(vc, animated: false, completion: nil) - } - - - + } return vc } diff --git a/MiniScanner/Managers/PDFManager.swift b/MiniScanner/Managers/PDFManager.swift index 01beeaf..f43635b 100644 --- a/MiniScanner/Managers/PDFManager.swift +++ b/MiniScanner/Managers/PDFManager.swift @@ -100,14 +100,14 @@ class PDFManager { let displayName = name == "" ? String.getDocumentName() : name let urlPDFtoSave = scannerURL.appendingPathComponent(displayName) let urlPDFtoSaveInAllDoc = allDoc.appendingPathComponent(displayName) - + if imageURLs.isEmpty { return } let document = PDFDocument() let dispatchGroup = DispatchGroup() - + var pdfPages = [PDFPage?](repeating: nil, count: imageURLs.count) - + for (index, imageURL) in imageURLs.enumerated() { dispatchGroup.enter() DispatchQueue.global().async { @@ -123,7 +123,7 @@ class PDFManager { } } } - + dispatchGroup.notify(queue: .main) { for pdfPage in pdfPages { if let pdfPage = pdfPage { @@ -153,10 +153,10 @@ class PDFManager { existingPDFDocumentObjects = loadedPDFDocumentObjects } } - + // Add the new PDFDocumentObject to the existing array existingPDFDocumentObjects.append(pdfDocumentObject) - + // Save the updated array back to UserDefaults if let encodedData = try? encoder.encode(existingPDFDocumentObjects) { defaults.set(encodedData, forKey: "pdfDocumentObjects") @@ -170,12 +170,12 @@ class PDFManager { guard let scannerURL = localFileManager?.getFolderUrl(folder: folder) else { return } let urlPDFtoSave = scannerURL.appendingPathComponent(name == "" ? String.getDocumentName() : "\(name).pdf") - + if imageURLs.isEmpty { return } let document = PDFDocument() let dispatchGroup = DispatchGroup() - + // Create an array of optional PDFPage with a size equal to the number of images var pdfPages = [PDFPage?](repeating: nil, count: imageURLs.count) @@ -210,7 +210,7 @@ class PDFManager { } catch { print(error.localizedDescription) // handle error } - + print("All images have been processed") } } @@ -235,7 +235,7 @@ class PDFManager { existingPDFDocumentObjects = loadedPDFDocumentObjects } } - + // Add the new PDFDocumentObject to the existing array for item in existingPDFDocumentObjects { if item.name.replacingOccurrences(of: ".pdf", with: "") == name { @@ -243,7 +243,7 @@ class PDFManager { item.session.add(item: newItem) } } - + // Save the updated array back to UserDefaults if let encodedData = try? encoder.encode(existingPDFDocumentObjects) { defaults.set(encodedData, forKey: "pdfDocumentObjects") @@ -341,4 +341,59 @@ class PDFManager { } return pdfDocument } + + class func printPDF(from url: URL) { + let printInfo = UIPrintInfo(dictionary:nil) + printInfo.jobName = url.lastPathComponent + printInfo.outputType = .general + + let printController = UIPrintInteractionController.shared + printController.printInfo = printInfo + + let pdfData = try? Data(contentsOf: url) + if pdfData != nil { + printController.printingItem = pdfData + } + + printController.present(animated: true, completionHandler: nil) + } + + class func sharePDF(payload: [Any], viewController: UIViewController) { + let shareController = UIActivityViewController(activityItems: payload, applicationActivities: nil) + viewController.present(shareController, animated: true, completion: nil) + + } + + class func savePDF(session: MultiPageScanSession, + folder: AppConfigurator.Folder, + fileManager: LocalFileManager?, + name: String, + completion: @escaping () -> ()) { + let items = session.scannedItems + var images = [URL]() + for index in 0..<(items.count) { + if let url = items[index].renderedImage { + images.append(url) + } + } + PDFManager.createMultiPDFPage(from: images, localFileManager: fileManager, folder: folder, name: name, session: session, { + completion() + }) + } + class func savePDFAndReturn(session: MultiPageScanSession, + folder: AppConfigurator.Folder, + fileManager: LocalFileManager?, + name: String, + completion: @escaping (URL) -> ()) { + let items = session.scannedItems + var images = [URL]() + for index in 0..<(items.count) { + if let url = items[index].renderedImage { + images.append(url) + } + } + PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: fileManager, folder: folder, name: name) { document in + completion(document) + } + } } diff --git a/MiniScanner/Modules/DocumentPreview/DocumentPreviewViewController.swift b/MiniScanner/Modules/DocumentPreview/DocumentPreviewViewController.swift index 5bbe5eb..cd2a56c 100644 --- a/MiniScanner/Modules/DocumentPreview/DocumentPreviewViewController.swift +++ b/MiniScanner/Modules/DocumentPreview/DocumentPreviewViewController.swift @@ -44,39 +44,12 @@ final class DocumentPreviewViewController: UIViewController { } - private func directShareWith(extensionBundleIdentifier: String) async { - do { - let executor = try LNExtensionExecutor(extensionBundleIdentifier: extensionBundleIdentifier) - let (completed, returnItems) = try await executor.execute(withActivityItems: payload, on: self) - print("completed: \(completed) return items: \(returnItems)") - - } catch(let error) { - print("error: \(error.localizedDescription)") - } - } - - func printPDF(from url: URL) { - let printInfo = UIPrintInfo(dictionary:nil) - printInfo.jobName = url.lastPathComponent - printInfo.outputType = .general - - let printController = UIPrintInteractionController.shared - printController.printInfo = printInfo - - let pdfData = try? Data(contentsOf: url) - if pdfData != nil { - printController.printingItem = pdfData - } - - printController.present(animated: true, completionHandler: nil) - } - @IBAction func whatsappTapped(_ sender: UIButton) { activityIndicator.startAnimating() DispatchQueue.main.async { Task { - await self.directShareWith(extensionBundleIdentifier: ShareOptions.whatsapp) + await self.directShareWith(extensionBundleIdentifier: ShareOptions.whatsapp, payload: self.payload, view: self) } self.activityIndicator.stopAnimating() } @@ -87,7 +60,7 @@ final class DocumentPreviewViewController: UIViewController { DispatchQueue.main.async { Task { - await self.directShareWith(extensionBundleIdentifier: ShareOptions.telegram) + await self.directShareWith(extensionBundleIdentifier: ShareOptions.telegram, payload: self.payload, view: self) } self.activityIndicator.stopAnimating() } @@ -97,7 +70,7 @@ final class DocumentPreviewViewController: UIViewController { activityIndicator.startAnimating() DispatchQueue.main.async { Task { - await self.directShareWith(extensionBundleIdentifier: ShareOptions.gmail) + await self.directShareWith(extensionBundleIdentifier: ShareOptions.gmail, payload: self.payload, view: self) self.activityIndicator.stopAnimating() } } @@ -105,15 +78,14 @@ final class DocumentPreviewViewController: UIViewController { @IBAction func printTapped(_ sender: UIButton) { DispatchQueue.main.async { - self.printPDF(from: self.payload[0] as! URL) + PDFManager.printPDF(from: self.payload[0] as! URL) } } @IBAction func moreTapped(_ sender: UIButton) { DispatchQueue.main.async { self.activityIndicator.startAnimating() - let shareController = UIActivityViewController(activityItems: self.payload, applicationActivities: nil) - self.present(shareController, animated: true, completion: nil) + PDFManager.sharePDF(payload: self.payload, viewController: self) self.activityIndicator.stopAnimating() } } diff --git a/MiniScanner/Modules/Documents/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.swift b/MiniScanner/Modules/Documents/Customs/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.swift similarity index 100% rename from MiniScanner/Modules/Documents/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.swift rename to MiniScanner/Modules/Documents/Customs/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.swift diff --git a/MiniScanner/Modules/Documents/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.xib b/MiniScanner/Modules/Documents/Customs/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.xib similarity index 100% rename from MiniScanner/Modules/Documents/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.xib rename to MiniScanner/Modules/Documents/Customs/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.xib diff --git a/MiniScanner/Modules/Documents/CustomViews/AllFolderTableView/AllFolderTableViewCell.swift b/MiniScanner/Modules/Documents/Customs/CustomViews/AllFolderTableView/AllFolderTableViewCell.swift similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/AllFolderTableView/AllFolderTableViewCell.swift rename to MiniScanner/Modules/Documents/Customs/CustomViews/AllFolderTableView/AllFolderTableViewCell.swift diff --git a/MiniScanner/Modules/Documents/CustomViews/AllFolderTableView/AllFolderTableViewCell.xib b/MiniScanner/Modules/Documents/Customs/CustomViews/AllFolderTableView/AllFolderTableViewCell.xib similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/AllFolderTableView/AllFolderTableViewCell.xib rename to MiniScanner/Modules/Documents/Customs/CustomViews/AllFolderTableView/AllFolderTableViewCell.xib diff --git a/MiniScanner/Modules/Documents/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.swift b/MiniScanner/Modules/Documents/Customs/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.swift similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.swift rename to MiniScanner/Modules/Documents/Customs/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.swift diff --git a/MiniScanner/Modules/Documents/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.xib b/MiniScanner/Modules/Documents/Customs/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.xib similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.xib rename to MiniScanner/Modules/Documents/Customs/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.xib diff --git a/MiniScanner/Modules/Documents/CustomViews/CustomTabBarView/CustomTabBarView.swift b/MiniScanner/Modules/Documents/Customs/CustomViews/CustomTabBarView/CustomTabBarView.swift similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/CustomTabBarView/CustomTabBarView.swift rename to MiniScanner/Modules/Documents/Customs/CustomViews/CustomTabBarView/CustomTabBarView.swift diff --git a/MiniScanner/Modules/Documents/CustomViews/CustomTabBarView/CustomTabBarView.xib b/MiniScanner/Modules/Documents/Customs/CustomViews/CustomTabBarView/CustomTabBarView.xib similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/CustomTabBarView/CustomTabBarView.xib rename to MiniScanner/Modules/Documents/Customs/CustomViews/CustomTabBarView/CustomTabBarView.xib diff --git a/MiniScanner/Modules/Documents/CustomViews/KNAlert/KNAlertViewController.swift b/MiniScanner/Modules/Documents/Customs/CustomViews/KNAlert/KNAlertViewController.swift similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/KNAlert/KNAlertViewController.swift rename to MiniScanner/Modules/Documents/Customs/CustomViews/KNAlert/KNAlertViewController.swift diff --git a/MiniScanner/Modules/Documents/CustomViews/KNAlert/KNAlertViewController.xib b/MiniScanner/Modules/Documents/Customs/CustomViews/KNAlert/KNAlertViewController.xib similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/KNAlert/KNAlertViewController.xib rename to MiniScanner/Modules/Documents/Customs/CustomViews/KNAlert/KNAlertViewController.xib diff --git a/MiniScanner/Modules/Documents/CustomViews/SearchFilesView/SearchFilesView.swift b/MiniScanner/Modules/Documents/Customs/CustomViews/SearchFilesView/SearchFilesView.swift similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/SearchFilesView/SearchFilesView.swift rename to MiniScanner/Modules/Documents/Customs/CustomViews/SearchFilesView/SearchFilesView.swift diff --git a/MiniScanner/Modules/Documents/CustomViews/SearchFilesView/SearchFilesView.xib b/MiniScanner/Modules/Documents/Customs/CustomViews/SearchFilesView/SearchFilesView.xib similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/SearchFilesView/SearchFilesView.xib rename to MiniScanner/Modules/Documents/Customs/CustomViews/SearchFilesView/SearchFilesView.xib diff --git a/MiniScanner/Modules/Documents/CustomViews/ShareSheet/ShareSheetViewController.swift b/MiniScanner/Modules/Documents/Customs/CustomViews/ShareSheet/ShareSheetViewController.swift similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/ShareSheet/ShareSheetViewController.swift rename to MiniScanner/Modules/Documents/Customs/CustomViews/ShareSheet/ShareSheetViewController.swift diff --git a/MiniScanner/Modules/Documents/CustomViews/ShareSheet/ShareSheetViewController.xib b/MiniScanner/Modules/Documents/Customs/CustomViews/ShareSheet/ShareSheetViewController.xib similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/ShareSheet/ShareSheetViewController.xib rename to MiniScanner/Modules/Documents/Customs/CustomViews/ShareSheet/ShareSheetViewController.xib diff --git a/MiniScanner/Modules/Documents/DocumentsTableViewController.swift b/MiniScanner/Modules/Documents/DocumentsTableViewController.swift index e4eaaae..b828d03 100644 --- a/MiniScanner/Modules/Documents/DocumentsTableViewController.swift +++ b/MiniScanner/Modules/Documents/DocumentsTableViewController.swift @@ -435,16 +435,8 @@ extension DocumentsTableViewController: UINavigationControllerDelegate, UIImageP extension DocumentsTableViewController: ImageScannerControllerDelegate { func imageScannerController(_ scanner: ImageScannerController, didFinishWithSession session: MultiPageScanSession) { - var images = [URL]() - - for index in 0..<session.scannedItems.count { - if let url = session.scannedItems[index].renderedImage { - images.append(url) - } - } - print("images: \(images)") if let folder = selectedFolder { - PDFManager.createMultiPDFPage(from: images, localFileManager: localFileManager, folder: folder) { + PDFManager.savePDF(session: session, folder: folder, fileManager: localFileManager, name: "") { scanner.dismiss(animated: true) { self.fetchViewModels() } @@ -567,19 +559,14 @@ extension DocumentsTableViewController: MultiPageScanSessionViewControllerDelega public func multiPageScanSessionViewController(_ multiPageScanSessionViewController: MultiPageScanSessionViewController, finished session: MultiPageScanSession) { - var images = [URL]() - for index in 0..<session.scannedItems.count { - if let url = session.scannedItems[index].renderedImage { - images.append(url) - } - } - print("images: \(images)") if let folder = selectedFolder { - PDFManager.createMultiPDFPage(from: images, localFileManager: localFileManager, folder: folder) { + PDFManager.savePDF(session: session, folder: folder, fileManager: localFileManager, name: "") { self.fetchViewModels() self.navigationController?.popViewController(animated: true) + } } + } } diff --git a/MiniScanner/Modules/Documents/File.swift b/MiniScanner/Modules/Documents/Model/File.swift similarity index 100% rename from MiniScanner/Modules/Documents/File.swift rename to MiniScanner/Modules/Documents/Model/File.swift diff --git a/MiniScanner/Modules/EditViewController/EditViewController.swift b/MiniScanner/Modules/EditViewController/EditViewController.swift index 490d9bf..dc4aa68 100644 --- a/MiniScanner/Modules/EditViewController/EditViewController.swift +++ b/MiniScanner/Modules/EditViewController/EditViewController.swift @@ -67,6 +67,7 @@ public class EditViewController: UIViewController { banner.delegate = self updatePageLabel() } + view.addSubview(activityIndicator) continueButton.backgroundColor = .mainBlue continueButton.setTitle("Continue", for: .normal) @@ -80,6 +81,26 @@ public class EditViewController: UIViewController { } + public override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + deviceOrientationHelper.startDeviceOrientationNotifier { (deviceOrientation) in + print("orientation: \(deviceOrientation)") + self.orientationChanged(deviceOrientation: deviceOrientation) + } + } + + + public init(scanSession: MultiPageScanSession){ + self.scanSession = scanSession + super.init(nibName: nil, bundle: nil) + } + + required init?(coder aDecoder: NSCoder) { + scanSession = MultiPageScanSession() + fatalError("init(coder:) should not be called for this class") + } + + // MARK: - Methods @objc func backTapped() { if self.navigationItem.rightBarButtonItem == nil { self.navigationController?.popViewController(animated: true) @@ -114,13 +135,6 @@ public class EditViewController: UIViewController { self.present(alertController, animated: true, completion: nil) } } - public override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - deviceOrientationHelper.startDeviceOrientationNotifier { (deviceOrientation) in - print("orientation: \(deviceOrientation)") - self.orientationChanged(deviceOrientation: deviceOrientation) - } - } func configImageEditor() { ZLImageEditorConfiguration.default() @@ -215,14 +229,6 @@ public class EditViewController: UIViewController { print("Orientation changed: \(self.deviceOrientationHelper.currentDeviceOrientation.rawValue)") } - @IBAction func backIndex(_ sender: UIButton) { - if banner.pagerView.currentIndex != 0 { - banner.pagerView.scrollToItem(at: banner.pagerView.currentIndex - 1, animated: true) - selectedIndex = banner.pagerView.currentIndex - 1 - self.updatePageLabel() - } - } - func updatePageLabel() { if let session = scanSession { if let url = session.scannedItems[selectedIndex].renderedImage { @@ -232,6 +238,14 @@ public class EditViewController: UIViewController { pageIndex.textAlignment = .center } } + // MARK: - Actions + @IBAction func backIndex(_ sender: UIButton) { + if banner.pagerView.currentIndex != 0 { + banner.pagerView.scrollToItem(at: banner.pagerView.currentIndex - 1, animated: true) + selectedIndex = banner.pagerView.currentIndex - 1 + self.updatePageLabel() + } + } @IBAction func nextIndex(_ sender: UIButton) { if banner.pagerView.currentIndex != (scanSession?.scannedItems.count ?? 0) - 1 { @@ -292,43 +306,6 @@ public class EditViewController: UIViewController { } } - public init(scanSession: MultiPageScanSession){ - self.scanSession = scanSession - super.init(nibName: nil, bundle: nil) - } - - required init?(coder aDecoder: NSCoder) { - scanSession = MultiPageScanSession() - fatalError("init(coder:) should not be called for this class") - } - - private func directShareWith(extensionBundleIdentifier: String) async { - do { - let executor = try LNExtensionExecutor(extensionBundleIdentifier: extensionBundleIdentifier) - let (completed, returnItems) = try await executor.execute(withActivityItems: payload, on: self) - print("completed: \(completed) return items: \(returnItems)") - - } catch(let error) { - print("error: \(error.localizedDescription)") - } - } - - func printPDF(from url: URL) { - let printInfo = UIPrintInfo(dictionary:nil) - printInfo.jobName = url.lastPathComponent - printInfo.outputType = .general - - let printController = UIPrintInteractionController.shared - printController.printInfo = printInfo - - let pdfData = try? Data(contentsOf: url) - if pdfData != nil { - printController.printingItem = pdfData - } - - printController.present(animated: true, completionHandler: nil) - } - @IBAction func whatsappShare(_ sender: UIButton) { self.saveFileAndShare(with: ShareOptions.whatsapp, name: "file:\(Date.now)") @@ -344,15 +321,14 @@ public class EditViewController: UIViewController { @IBAction func printTapped(_ sender: UIButton) { DispatchQueue.main.async { - self.printPDF(from: self.payload[0] as! URL) + PDFManager.printPDF(from: self.payload[0] as! URL) } } @IBAction func moreTapped(_ sender: UIButton) { DispatchQueue.main.async { self.activityIndicator.startAnimating() - let shareController = UIActivityViewController(activityItems: self.payload, applicationActivities: nil) - self.present(shareController, animated: true, completion: nil) + PDFManager.sharePDF(payload: self.payload, viewController: self) self.activityIndicator.stopAnimating() } } @@ -493,20 +469,13 @@ extension EditViewController: BannerViewDelegate { private func saveFileAndShare(with: String, name: String) { activityIndicator.startAnimating() - - var images = [URL]() - for index in 0..<(scanSession?.scannedItems.count ?? 0) { - if let url = scanSession?.scannedItems[index].renderedImage { - images.append(url) - } - } - if let folder = sharedFolder { - PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: localFileManager, folder: folder, name: name, { document in + if let folder = sharedFolder, let session = scanSession { + PDFManager.savePDFAndReturn(session: session, folder: folder, fileManager: localFileManager, name: name) { document in self.payload = [document] Task { - await self.directShareWith(extensionBundleIdentifier: with) + await self.directShareWith(extensionBundleIdentifier: with, payload: self.payload, view: self) } - }) + } } } } @@ -533,56 +502,34 @@ extension EditViewController: ShareSheetViewControllerDelegate { } func printTapped() { - var images = [URL]() - for index in 0..<(scanSession?.scannedItems.count ?? 0) { - if let url = scanSession?.scannedItems[index].renderedImage { - images.append(url) + if let folder = sharedFolder, let session = scanSession { + PDFManager.savePDFAndReturn(session: session, folder: folder, fileManager: localFileManager, name: "") { document in + PDFManager.printPDF(from: document) } } - print("images: \(images)") - if let folder = sharedFolder { - PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: localFileManager, folder: folder, { document in - self.printPDF(from: document) - }) - } } func moreTapped(name: String) { activityIndicator.startAnimating() - var images = [URL]() - for index in 0..<(scanSession?.scannedItems.count ?? 0) { - if let url = scanSession?.scannedItems[index].renderedImage { - images.append(url) - } - } - print("images: \(images)") - if let folder = sharedFolder { - PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: localFileManager, folder: folder, name: name, { document in + if let folder = sharedFolder, let session = scanSession { + PDFManager.savePDFAndReturn(session: session, folder: folder, fileManager: localFileManager, name: name) { document in self.payload = [document] - let shareController = UIActivityViewController(activityItems: self.payload, applicationActivities: nil) - self.present(shareController, animated: true, completion: nil) + PDFManager.sharePDF(payload: self.payload, viewController: self) self.activityIndicator.stopAnimating() - - - }) + + } } } func saveTapped(name: String) { activityIndicator.startAnimating() - var images = [URL]() - for index in 0..<(scanSession?.scannedItems.count ?? 0) { - if let url = scanSession?.scannedItems[index].renderedImage { - images.append(url) - } - } - print("images: \(images)") - if let folder = selectedFolder { - PDFManager.createMultiPDFPage(from: images, localFileManager: localFileManager, folder: folder, name: name, session: scanSession ?? MultiPageScanSession(), { + if let session = self.scanSession, let folder = selectedFolder { + PDFManager.savePDF(session: session, folder: folder, fileManager: localFileManager, name: name) { self.activityIndicator.stopAnimating() self.navigationController?.popViewController(animated: true) - }) + + } } } } @@ -681,7 +628,7 @@ extension EditViewController: EPSignatureDelegate { } } - +// MARK: - setupCropView extension EditViewController { @objc func setUpCropView() { @@ -692,7 +639,7 @@ extension EditViewController { croppedImage = sharedDetector.drawHighlightOverlay(forPoints: croppedImage, topLeft: detectedRectangleFeature.topLeft, topRight: detectedRectangleFeature.topRight, bottomLeft: detectedRectangleFeature.bottomLeft, bottomRight: detectedRectangleFeature.bottomRight) banner.pagerView.isUserInteractionEnabled = true self.magnetActivated() - }else{ + } else{ banner.pagerView.isUserInteractionEnabled = true self.magnetDeActivated() } diff --git a/MiniScanner/Modules/OCRViewController/OCRViewController.swift b/MiniScanner/Modules/OCRViewController/OCRViewController.swift index 9705914..7bc8358 100644 --- a/MiniScanner/Modules/OCRViewController/OCRViewController.swift +++ b/MiniScanner/Modules/OCRViewController/OCRViewController.swift @@ -9,7 +9,7 @@ import UIKit import VisionKit import Vision -import Toast_Swift +import Toast class OCRViewController: UIViewController { // MARK: - Outlets diff --git a/MiniScanner/Modules/Walktrough/ClassicWalkthroughViewController.swift b/MiniScanner/Modules/Walktrough/ClassicWalkthroughViewController/ClassicWalkthroughViewController.swift similarity index 100% rename from MiniScanner/Modules/Walktrough/ClassicWalkthroughViewController.swift rename to MiniScanner/Modules/Walktrough/ClassicWalkthroughViewController/ClassicWalkthroughViewController.swift diff --git a/MiniScanner/Modules/Walktrough/ClassicWalkthroughViewController.xib b/MiniScanner/Modules/Walktrough/ClassicWalkthroughViewController/ClassicWalkthroughViewController.xib similarity index 100% rename from MiniScanner/Modules/Walktrough/ClassicWalkthroughViewController.xib rename to MiniScanner/Modules/Walktrough/ClassicWalkthroughViewController/ClassicWalkthroughViewController.xib diff --git a/MiniScanner/Modules/Walktrough/WalkthroughViewController.swift b/MiniScanner/Modules/Walktrough/WalkthroughViewController/WalkthroughViewController.swift similarity index 100% rename from MiniScanner/Modules/Walktrough/WalkthroughViewController.swift rename to MiniScanner/Modules/Walktrough/WalkthroughViewController/WalkthroughViewController.swift diff --git a/MiniScanner/Modules/Walktrough/WalkthroughViewController.xib b/MiniScanner/Modules/Walktrough/WalkthroughViewController/WalkthroughViewController.xib similarity index 100% rename from MiniScanner/Modules/Walktrough/WalkthroughViewController.xib rename to MiniScanner/Modules/Walktrough/WalkthroughViewController/WalkthroughViewController.xib diff --git a/MiniScanner/Supporting Files/.DS_Store b/MiniScanner/Supporting Files/.DS_Store index 78a7ab646fb79374390768259e53bbf0dc892357..c331cc559e0e044a054d0a099e4b06abd7fa22d0 100644 GIT binary patch delta 445 zcmZn(Xem%&U|?W$DortDU@%}{VBlbY&;mRR3=C}y3<^9G71U*!L5dg{7>pSh7?>Ft z1Q-~K8A=%P8FCrI8B!+}Do-|0VPR!tU|?XG+$StExn7KiD?f<=tdPNRW1%biW_Au1 z4n~>H-C{MI8ylM07{w;@2rQc1C1T7hBqcrhfQYzIya0c3Mt-?xa(-SwQEFLcYWd{H zBD?A%GL!T3f-|d9qtlBrQ-TW;lQZ+umF+(;fB~nng9ezvAi$suVK6W#J5+&u#lXNJ z0uzGLjGQ5P`FW|z4gnAWWe0BvgMouVo57JGm?4ItkfDKLI>Tay^$Z6Y&N0Y8X86j; z%*e|q#;C-o&8Wj@%4p8$!05^7#Td;P!<abPQA~Ampn&}3bpjhfG*4M@QC?1dUOFhm zCQlHQ*jys`iDhF+1-m3G#3}=B1_lOK1_ne3Z!CPzJeglbmlG6%2SBPO+we$FPEcWI cwE*)9R3?Jrg@J)#YvE)AVX@7hgkCZM0C1~UIsgCw delta 168 zcmZoEXbF&DU|?W$DortDU{GLSVBlbY&;mRY3&ketNlrE}VUc8DU|=u=sbgReU|>jP z$YDrjNM}f7DA}ASv6y``I|mB~qv2#8g+-HBDs7znL|Jt6T;)$J6DO-~<`Jmj6l4bJ zXJAm^W?*1&Wnd8C*?93g^JIP#T}Fn<COpcM6HM4SH9%?@85j&E=a@{KtgSd_@-g+3 I5ECjH0lUj31poj5 diff --git a/MiniScanner/Supporting Files/Assets.xcassets/.DS_Store b/MiniScanner/Supporting Files/Assets.xcassets/.DS_Store index 789ef3a6a38ca46bc4afd7c1809c6b73232efcd8..b495e97cfd6c43ceaf25ec332fc4c685d2bf15e2 100644 GIT binary patch literal 10244 zcmZQzU|@7AO)+F(P+(wS;9!8z0z3>@0Z1N%F(jFwA{rp`7#IW?81fiO7@QgM8FCo% zp>m_tXb6mkz-S1JhQMeDjE2DA3IRrlb2zvm^e8zR0;3@?8UpYT0F@7*4g!dFfVA-$ z8Xz=Ch=GxT0o(;(WME){X<`KT0~kPZAgv%8q!mPiv@$S)SYR{2S{WFjS{cFJ5Rg6r zuu+WQt_g?_*3Q5PwwZx}5o|L910zH`10&RCMraR(5u%-e5o|jH10zH`*vwI4Gz3ON z05t?aeRmNCM}}mEWQJ6f{(BLF9z!y;FJHt^%#g}Z;+d15oRpKF!~n_UjtmS8djG)y zY^XFtB11Am2}34B8AB#R2}31=E<+kaDnlwm3WF{~CfKw*20eyMhFpe3hIEEhtfsC< zGgXu!ks*a4g(03Hg(06InIWE7lNe<YCanj#nFN!{f{XHU^7GQcB^AiGi42(xMGPqn zMGW~21%&*-*p09`D~*AHL7X9xA&()EA%~$796rem#l(jQ<4-ixgcuwd3K$9)JmDdl z2<F2=7*|})14q?=u#1Ekk{A*hK=Ddi%s|Zm$2Z7~RE8Xe91{EjiW6irco>ox@);_K z3Q?l;C6yN!K-1{Xq=KBx;t~UcYm7|HEUawo9PAw29I?R}`Q^bSi6y1QPKia)AYMp* zeohjMotPAsnOYt%AmW^#SCW{Sms$i;5}cWmnv_@+6P}rul3(tWUz(Rv4Au*k;Naxo zj2Dost~NBZFwjx3urRFEQK+^wGSE>lF*d8M<>U}m*0&Cd&(6us%LgS7P|AYVWemLF z;6xBT3=9l70|qT=@-ZZXhuc7rP9ST66B2SD@`4BJK!bLWtY6Ha$B@NP%#hEJhndwG z`5?&$>`Y;3(klUH2v8D8WdIcz1hY2W6p-I}!9@e8s37F>ZUzRpPLKnH;X30Pk{EKp z1y44?L?nx53Lk?TLncEGxF90rf}d!5`5D~6g<}c>F+O)>U|_6+gkNznxcGDj7Y87_ zix?`2aye8#$omYU4CyHP;~7dAG8i%$h$>!TE&-dw$B+&#jzQr-C=5Wcfb0rhhFpex zh9ZVkg6;=}9<ojz27d-;h9E-v7(n6n4iau)*YYqFFr+Y~5!APyfq@ZOp8!Jv*qxw? zDV3p|kbXu`N<r4o2i6Y?-x7j)L7{}Kmmh3%F+(Op6_Fu@tecmim?4p&jId5nSTV&R zg_STvF+(!A;&EaqWhh}N0p)8#u4h=!z<^>3KSMA>D!8ghX2>9<8x(FRx&<LsJh;-! zV@PKJl`weA2vF6DVgesSF+&E}exgztie4cGP^hPatKJfZQgA#FNaNs8JcksD{0t=w zi3~{$PGC0>(hUkdWZlA0-H^)Glc50Im?2;aI24gh5o9P~09CZ94CxF-42cZ61mmHb zfq{uc6Oby-ZRiyzJ109gJ8ddXPH@F3R$XmktfOFtRBM`<pw*fk;1U4d1H`B`I~f=l zhzKdP`csgh9Gt#N!1)Z+tRfUUKheS#;;d0}Gz3ONU^E1VPzW$X+^PT?|953zz%~C5 zQ8h}AhQMeD49gH;WN`_0aRLoU;P4)3tQ|C-o&c2x_1!_E`HZ0Pd5Auc641~-csQO3 zvZx3&wg?h4fNBG=!Nc*443N?M0h<i?{~zq6(f&UJ!)X5>G;)SEv<>Qkp^P64zy3b} D+<Lr& delta 143 zcmZn(XfcprU|?W$DortDU=UznVBlbY&`g{Y3&ketDT*?K<iTPo4EYSn4Dk$^49Ob{ zmoqXlPhKUUH+iox|KugYl9TTUeb`vCm1QwI2Zta?56B#D1_lOK1_mb1jfLNtC-bW~ af-GZTWME)nU|?Wig4hNY+Z@j`hZz7S@)&3U diff --git a/MiniScanner/Supporting Files/CustomWeScan/Scan/ScannerViewController.swift b/MiniScanner/Supporting Files/CustomWeScan/Scan/ScannerViewController.swift index 0268529..adab235 100644 --- a/MiniScanner/Supporting Files/CustomWeScan/Scan/ScannerViewController.swift +++ b/MiniScanner/Supporting Files/CustomWeScan/Scan/ScannerViewController.swift @@ -449,21 +449,13 @@ public final class ScannerViewController: UIViewController { private func saveFileAndShare(with: String, name: String) { activityIndicator.startAnimating() - - var images = [URL]() - for index in 0..<multipageSession.scannedItems.count { - if let url = multipageSession.scannedItems[index].renderedImage { - images.append(url) - } - } - print("images: \(images)") - if let folder = sharedFolder { - PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: localFileManager, folder: folder, name: name, { document in + if let folder = sharedFolder, let session = multipageSession { + PDFManager.savePDFAndReturn(session: session, folder: folder, fileManager: localFileManager, name: name) { document in self.payload = [document] Task { - await self.directShareWith(extensionBundleIdentifier: with) + await self.directShareWith(extensionBundleIdentifier: with, payload: self.payload, view: self) } - }) + } } } @@ -474,18 +466,6 @@ public final class ScannerViewController: UIViewController { self.navigationController?.pushViewController(editViewController, animated: true) } - private func directShareWith(extensionBundleIdentifier: String) async { - do { - let executor = try LNExtensionExecutor(extensionBundleIdentifier: extensionBundleIdentifier) - let (completed, returnItems) = try await executor.execute(withActivityItems: payload, on: self) - print("completed: \(completed) return items: \(returnItems)") - activityIndicator.stopAnimating() - - } catch(let error) { - print("error: \(error.localizedDescription)") - } - } - } extension ScannerViewController: RectangleDetectionDelegateProtocol { @@ -498,7 +478,6 @@ extension ScannerViewController: RectangleDetectionDelegateProtocol { func didStartCapturingPicture(for captureSessionManager: CaptureSessionManager) { activityIndicator.startAnimating() - // shutterButton.isUserInteractionEnabled = false } func captureSessionManager(_ captureSessionManager: CaptureSessionManager, didCapturePicture picture: UIImage, withQuad quad: Quadrilateral?) { @@ -592,22 +571,6 @@ extension ScannerViewController: CustomTabBarViewDelegate { bottomSheetController.present(popup, on: self) } } - - func printPDF(from url: URL) { - let printInfo = UIPrintInfo(dictionary:nil) - printInfo.jobName = url.lastPathComponent - printInfo.outputType = .general - - let printController = UIPrintInteractionController.shared - printController.printInfo = printInfo - - let pdfData = try? Data(contentsOf: url) - if pdfData != nil { - printController.printingItem = pdfData - } - - printController.present(animated: true, completionHandler: nil) - } } // MARK: - ShareSheetViewControllerDelegate extension ScannerViewController: ShareSheetViewControllerDelegate, PreviewDelegate { @@ -635,56 +598,33 @@ extension ScannerViewController: ShareSheetViewControllerDelegate, PreviewDelega } func printTapped() { - var images = [URL]() - for index in 0..<multipageSession.scannedItems.count { - if let url = multipageSession.scannedItems[index].renderedImage { - images.append(url) + if let folder = sharedFolder, let session = multipageSession { + PDFManager.savePDFAndReturn(session: session, folder: folder, fileManager: localFileManager, name: "") { document in + PDFManager.printPDF(from: document) } } - print("images: \(images)") - if let folder = sharedFolder { - PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: localFileManager, folder: folder, { document in - self.printPDF(from: document) - }) - } } func moreTapped(name: String) { activityIndicator.startAnimating() - var images = [URL]() - for index in 0..<multipageSession.scannedItems.count { - if let url = multipageSession.scannedItems[index].renderedImage { - images.append(url) - } - } - print("images: \(images)") - if let folder = sharedFolder { - PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: localFileManager, folder: folder, name: name, { document in + if let folder = sharedFolder, let session = multipageSession { + PDFManager.savePDFAndReturn(session: session, folder: folder, fileManager: localFileManager, name: name) { document in self.payload = [document] - let shareController = UIActivityViewController(activityItems: self.payload, applicationActivities: nil) - self.present(shareController, animated: true, completion: nil) + PDFManager.sharePDF(payload: self.payload, viewController: self) self.activityIndicator.stopAnimating() - - - }) + } } } func saveTapped(name: String) { activityIndicator.startAnimating() - var images = [URL]() - for index in 0..<multipageSession.scannedItems.count { - if let url = multipageSession.scannedItems[index].renderedImage { - images.append(url) - } - } - print("images: \(images)") - if let folder = selectedFolder { - PDFManager.createMultiPDFPage(from: images, localFileManager: localFileManager, folder: folder, name: name,session: self.multipageSession, { + if let session = multipageSession, let folder = selectedFolder { + PDFManager.savePDF(session: session, folder: folder, fileManager: localFileManager, name: name) { self.activityIndicator.stopAnimating() self.navigationController?.popViewController(animated: true) - }) + + } } } } diff --git a/Podfile b/Podfile index 528a7a2..8214d1d 100644 --- a/Podfile +++ b/Podfile @@ -4,15 +4,8 @@ target 'MiniScanner' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! - - # Pods for MiniScanner - pod 'LanguageManager-iOS' - pod 'IQKeyboardManagerSwift' -# pod 'ImagePicker' pod 'NBBottomSheet' pod 'EPSignature' - pod 'Toast-Swift' - pod 'ImageViewer.swift', '~> 3.0' diff --git a/Podfile.lock b/Podfile.lock index 962dfd3..197ff52 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,36 +1,20 @@ PODS: - EPSignature (1.0.6) - - ImageViewer.swift (3.3.8) - - IQKeyboardManagerSwift (7.0.3) - - LanguageManager-iOS (1.2.7) - NBBottomSheet (1.2.0) - - Toast-Swift (5.1.1) DEPENDENCIES: - EPSignature - - ImageViewer.swift (~> 3.0) - - IQKeyboardManagerSwift - - LanguageManager-iOS - NBBottomSheet - - Toast-Swift SPEC REPOS: trunk: - EPSignature - - ImageViewer.swift - - IQKeyboardManagerSwift - - LanguageManager-iOS - NBBottomSheet - - Toast-Swift SPEC CHECKSUMS: EPSignature: 3fa3b520c80717b98019723faa60a41794b03fbc - ImageViewer.swift: 284cd8127d31af8e5938674fb9f8e695a4cdf6c6 - IQKeyboardManagerSwift: f9c5dc36cba16ddd2e51fa7d51c34a2e083029b5 - LanguageManager-iOS: 6b2dbb3793445827114708f0759b76e96932d7c8 NBBottomSheet: aa7a52809b2d7b193f733247b8ce391a59904372 - Toast-Swift: 7a03a532afe3a560d4044bc7c237e2864d295173 -PODFILE CHECKSUM: 9775166299988c84acdb7600ce83319349809cb9 +PODFILE CHECKSUM: 7dc47ad90dd5bf8f4d9fb5feaf1b44cbe52e897a -COCOAPODS: 1.14.3 +COCOAPODS: 1.15.2 diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQActiveConfiguration.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQActiveConfiguration.swift deleted file mode 100644 index ef0b892..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQActiveConfiguration.swift +++ /dev/null @@ -1,203 +0,0 @@ -// -// IQActiveConfiguration.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -internal final class IQActiveConfiguration { - - private let keyboardListener: IQKeyboardListener = IQKeyboardListener() - private let textFieldViewListener: IQTextFieldViewListener = IQTextFieldViewListener() - - private var changeObservers: [AnyHashable: ConfigurationCompletion] = [:] - - @objc public enum Event: Int { - case hide - case show - case change - - var name: String { - switch self { - case .hide: - return "hide" - case .show: - return "show" - case .change: - return "change" - } - } - } - - private var lastEvent: Event = .hide - - var rootControllerConfiguration: IQRootControllerConfiguration? - - var isReady: Bool { - if textFieldViewInfo != nil, - let rootControllerConfiguration = rootControllerConfiguration { - return rootControllerConfiguration.isReady - } - return false - } - - init() { - addKeyboardListener() - addTextFieldViewListener() - } - - private func sendEvent() { - - if let textFieldViewInfo = textFieldViewInfo, - let rootControllerConfiguration = rootControllerConfiguration, - rootControllerConfiguration.isReady { - if keyboardInfo.keyboardShowing { - if lastEvent == .hide { - self.notify(event: .show, keyboardInfo: keyboardInfo, textFieldViewInfo: textFieldViewInfo) - } else { - self.notify(event: .change, keyboardInfo: keyboardInfo, textFieldViewInfo: textFieldViewInfo) - } - } else if lastEvent != .hide { - if rootControllerConfiguration.beginOrientation == rootControllerConfiguration.currentOrientation { - self.notify(event: .hide, keyboardInfo: keyboardInfo, textFieldViewInfo: textFieldViewInfo) - self.rootControllerConfiguration = nil - } else if rootControllerConfiguration.hasChanged { - animate(alongsideTransition: { - rootControllerConfiguration.restore() - }, completion: nil) - } - } - } - } - - private func updateRootController(info: IQTextFieldViewInfo?) { - - guard let info = info, - let controller: UIViewController = info.textFieldView.iq.parentContainerViewController() else { - if let rootControllerConfiguration = rootControllerConfiguration, - rootControllerConfiguration.hasChanged { - animate(alongsideTransition: { - rootControllerConfiguration.restore() - }, completion: nil) - } - rootControllerConfiguration = nil - return - } - - let newConfiguration = IQRootControllerConfiguration(rootController: controller) - - if newConfiguration.rootController.view.window != rootControllerConfiguration?.rootController.view.window || - newConfiguration.beginOrientation != rootControllerConfiguration?.beginOrientation { - - if rootControllerConfiguration?.rootController != newConfiguration.rootController { - - // If there was an old configuration but things are changed - if let rootControllerConfiguration = rootControllerConfiguration, - rootControllerConfiguration.hasChanged { - animate(alongsideTransition: { - rootControllerConfiguration.restore() - }, completion: nil) - } - } - - rootControllerConfiguration = newConfiguration - } - } -} - -@available(iOSApplicationExtension, unavailable) -extension IQActiveConfiguration { - - var keyboardInfo: IQKeyboardInfo { - return keyboardListener.keyboardInfo - } - - private func addKeyboardListener() { - keyboardListener.registerSizeChange(identifier: "IQActiveConfiguration", changeHandler: { [self] name, _ in - - if let info = textFieldViewInfo, keyboardInfo.keyboardShowing { - if let rootControllerConfiguration = rootControllerConfiguration { - let beginIsPortrait: Bool = rootControllerConfiguration.beginOrientation.isPortrait - let currentIsPortrait: Bool = rootControllerConfiguration.currentOrientation.isPortrait - if beginIsPortrait != currentIsPortrait { - updateRootController(info: info) - } - } else { - updateRootController(info: info) - } - } - - self.sendEvent() - - if name == .didHide { - updateRootController(info: nil) - } - }) - } - - public func animate(alongsideTransition transition: @escaping () -> Void, completion: (() -> Void)? = nil) { - keyboardListener.animate(alongsideTransition: transition, completion: completion) - } -} - -@available(iOSApplicationExtension, unavailable) -extension IQActiveConfiguration { - - var textFieldViewInfo: IQTextFieldViewInfo? { - return textFieldViewListener.textFieldViewInfo - } - - private func addTextFieldViewListener() { - textFieldViewListener.registerTextFieldViewChange(identifier: "IQActiveConfiguration", - changeHandler: { [self] info in - if info.name == .beginEditing { - updateRootController(info: info) - self.sendEvent() - } - }) - } -} - -@available(iOSApplicationExtension, unavailable) -extension IQActiveConfiguration { - - typealias ConfigurationCompletion = (_ event: Event, - _ keyboardInfo: IQKeyboardInfo, - _ textFieldInfo: IQTextFieldViewInfo) -> Void - - func registerChange(identifier: AnyHashable, changeHandler: @escaping ConfigurationCompletion) { - changeObservers[identifier] = changeHandler - } - - func unregisterChange(identifier: AnyHashable) { - changeObservers[identifier] = nil - } - - private func notify(event: Event, keyboardInfo: IQKeyboardInfo, textFieldViewInfo: IQTextFieldViewInfo) { - lastEvent = event - - for block in changeObservers.values { - block(event, keyboardInfo, textFieldViewInfo) - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQBarButtonItemConfiguration.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQBarButtonItemConfiguration.swift deleted file mode 100644 index 9377c01..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQBarButtonItemConfiguration.swift +++ /dev/null @@ -1,96 +0,0 @@ -// -// IQBarButtonItemConfiguration.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -/** - IQBarButtonItemConfiguration for creating toolbar with bar button items - */ -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc public final class IQBarButtonItemConfiguration: NSObject { - - @objc public init(systemItem: UIBarButtonItem.SystemItem, action: Selector? = nil) { - self.systemItem = systemItem - self.image = nil - self.title = nil - self.action = action - super.init() - } - - @objc public init(image: UIImage, action: Selector? = nil) { - self.systemItem = nil - self.image = image - self.title = nil - self.action = action - super.init() - } - - @objc public init(title: String, action: Selector? = nil) { - self.systemItem = nil - self.image = nil - self.title = title - self.action = action - super.init() - } - - public let systemItem: UIBarButtonItem.SystemItem? // System Item to be used to instantiate bar button. - - @objc public let image: UIImage? // Image to show on bar button item if it's not a system item. - - @objc public let title: String? // Title to show on bar button item if it's not a system item. - - @objc public var action: Selector? // action for bar button item. Usually 'doneAction:(IQBarButtonItem*)item'. - - public override var accessibilityLabel: String? { didSet { } } // Accessibility related labels - - func apply(on oldBarButtonItem: IQBarButtonItem, target: AnyObject?) -> IQBarButtonItem { - - var newBarButtonItem: IQBarButtonItem = oldBarButtonItem - - if systemItem == nil, !oldBarButtonItem.isSystemItem { - newBarButtonItem.title = title - newBarButtonItem.accessibilityLabel = accessibilityLabel - newBarButtonItem.accessibilityIdentifier = newBarButtonItem.accessibilityLabel - newBarButtonItem.image = image - newBarButtonItem.target = target - newBarButtonItem.action = action - } else { - if let systemItem: UIBarButtonItem.SystemItem = systemItem { - newBarButtonItem = IQBarButtonItem(barButtonSystemItem: systemItem, target: target, action: action) - newBarButtonItem.isSystemItem = true - } else if let image: UIImage = image { - newBarButtonItem = IQBarButtonItem(image: image, style: .plain, target: target, action: action) - } else { - newBarButtonItem = IQBarButtonItem(title: title, style: .plain, target: target, action: action) - } - - newBarButtonItem.invocation = oldBarButtonItem.invocation - newBarButtonItem.accessibilityLabel = accessibilityLabel - newBarButtonItem.accessibilityIdentifier = oldBarButtonItem.accessibilityLabel - newBarButtonItem.isEnabled = oldBarButtonItem.isEnabled - newBarButtonItem.tag = oldBarButtonItem.tag - } - return newBarButtonItem - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQKeyboardConfiguration.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQKeyboardConfiguration.swift deleted file mode 100644 index 653bc2c..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQKeyboardConfiguration.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// IQKeyboardConfiguration.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc public final class IQKeyboardConfiguration: NSObject { - - /** - Override the keyboardAppearance for all textField/textView. Default is NO. - */ - @objc public var overrideAppearance: Bool = false - - /** - If overrideKeyboardAppearance is YES, then all the textField keyboardAppearance is set using this property. - */ - @objc public var appearance: UIKeyboardAppearance = UIKeyboardAppearance.default -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQRootControllerConfiguration.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQRootControllerConfiguration.swift deleted file mode 100644 index 93aba8c..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQRootControllerConfiguration.swift +++ /dev/null @@ -1,79 +0,0 @@ -// -// IQRootControllerConfiguration.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -internal struct IQRootControllerConfiguration { - - let rootController: UIViewController - let beginOrigin: CGPoint - let beginSafeAreaInsets: UIEdgeInsets - let beginOrientation: UIInterfaceOrientation - - init(rootController: UIViewController) { - self.rootController = rootController - beginOrigin = rootController.view.frame.origin - beginSafeAreaInsets = rootController.view.safeAreaInsets - - let interfaceOrientation: UIInterfaceOrientation - if let scene = rootController.view.window?.windowScene { - interfaceOrientation = scene.interfaceOrientation - } else { - interfaceOrientation = .unknown - } - - beginOrientation = interfaceOrientation - } - - var currentOrientation: UIInterfaceOrientation { - let interfaceOrientation: UIInterfaceOrientation - if let scene = rootController.view.window?.windowScene { - interfaceOrientation = scene.interfaceOrientation - } else { - interfaceOrientation = .unknown - } - return interfaceOrientation - } - - var isReady: Bool { - return rootController.view.window != nil - } - - var hasChanged: Bool { - return !rootController.view.frame.origin.equalTo(beginOrigin) - } - - @discardableResult - func restore() -> Bool { - if !rootController.view.frame.origin.equalTo(beginOrigin) { - // Setting it's new frame - var rect: CGRect = rootController.view.frame - rect.origin = beginOrigin - rootController.view.frame = rect - return true - } - return false - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQScrollViewConfiguration.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQScrollViewConfiguration.swift deleted file mode 100644 index 49f6f16..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQScrollViewConfiguration.swift +++ /dev/null @@ -1,94 +0,0 @@ -// -// IQScrollViewConfiguration.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -internal struct IQScrollViewConfiguration { - let scrollView: UIScrollView - let startingContentOffset: CGPoint - let startingScrollIndicatorInsets: UIEdgeInsets - let startingContentInset: UIEdgeInsets - - private let canRestoreContentOffset: Bool - - init(scrollView: UIScrollView, canRestoreContentOffset: Bool) { - self.scrollView = scrollView - self.canRestoreContentOffset = canRestoreContentOffset - - startingContentOffset = scrollView.contentOffset - startingContentInset = scrollView.contentInset - startingScrollIndicatorInsets = scrollView.verticalScrollIndicatorInsets - } - - var hasChanged: Bool { - if scrollView.contentInset != self.startingContentInset { - return true - } - - if canRestoreContentOffset, - scrollView.iq.restoreContentOffset, - !scrollView.contentOffset.equalTo(startingContentOffset) { - return true - } - return false - } - - @discardableResult - func restore(for textFieldView: UIView?) -> Bool { - var success: Bool = false - - if scrollView.contentInset != self.startingContentInset { - scrollView.contentInset = self.startingContentInset - scrollView.layoutIfNeeded() // (Bug ID: #1996) - success = true - } - - if scrollView.verticalScrollIndicatorInsets != self.startingScrollIndicatorInsets { - scrollView.verticalScrollIndicatorInsets = self.startingScrollIndicatorInsets - } - - if canRestoreContentOffset, - scrollView.iq.restoreContentOffset, - !scrollView.contentOffset.equalTo(startingContentOffset) { - - // (Bug ID: #1365, #1508, #1541) - let stackView: UIStackView? = textFieldView?.iq.superviewOf(type: UIStackView.self, - belowView: scrollView) - // (Bug ID: #1901, #1996) - let animatedContentOffset: Bool = stackView != nil || - scrollView is UICollectionView || - scrollView is UITableView - - if animatedContentOffset { - scrollView.setContentOffset(startingContentOffset, animated: UIView.areAnimationsEnabled) - } else { - scrollView.contentOffset = startingContentOffset - } - success = true - } - - return success - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarConfiguration.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarConfiguration.swift deleted file mode 100644 index 3c6244b..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarConfiguration.swift +++ /dev/null @@ -1,75 +0,0 @@ -// -// IQToolbarConfiguration.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc public final class IQToolbarConfiguration: NSObject { - - /** - If YES, then uses textField's tintColor property for IQToolbar, otherwise tint color is default. Default is NO. - */ - @objc public var useTextFieldTintColor: Bool = false - - /** - This is used for toolbar.tintColor when textfield.keyboardAppearance is UIKeyboardAppearanceDefault. - If useTextFieldTintColor is YES then this property is ignored. Default is nil and uses black color. - */ - @objc public var tintColor: UIColor? - - /** - This is used for toolbar.barTintColor. Default is nil. - */ - @objc public var barTintColor: UIColor? - - /** - IQPreviousNextDisplayModeDefault: Show NextPrevious when there are more than 1 textField otherwise hide. - IQPreviousNextDisplayModeAlwaysHide: Do not show NextPrevious buttons in any case. - IQPreviousNextDisplayModeAlwaysShow: Always show nextPrevious buttons, - if there are more than 1 textField then both buttons will be visible but will be shown as disabled. - */ - @objc public var previousNextDisplayMode: IQPreviousNextDisplayMode = .default - - /** - /** - IQAutoToolbarBySubviews: Creates Toolbar according to subview's hierarchy of Textfield's in view. - IQAutoToolbarByTag: Creates Toolbar according to tag property of TextField's. - IQAutoToolbarByPosition: Creates Toolbar according to the y,x position - of textField in it's superview coordinate. - - Default is IQAutoToolbarBySubviews. - */ - AutoToolbar managing behavior. Default is IQAutoToolbarBySubviews. - */ - @objc public var manageBehavior: IQAutoToolbarManageBehavior = .bySubviews - - /** - Buttons configuration displayed on the toolbar, the selector parameter is ignored in below configuration - */ - @objc public var previousBarButtonConfiguration: IQBarButtonItemConfiguration? - @objc public var nextBarButtonConfiguration: IQBarButtonItemConfiguration? - @objc public var doneBarButtonConfiguration: IQBarButtonItemConfiguration? - - @objc public let placeholderConfiguration: IQToolbarPlaceholderConfiguration = .init() -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarPlaceholderConfiguration.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarPlaceholderConfiguration.swift deleted file mode 100644 index 5ee4387..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarPlaceholderConfiguration.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// IQToolbarPlaceholderConfiguration.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc public final class IQToolbarPlaceholderConfiguration: NSObject { - - /** - If YES, then it add the textField's placeholder text on IQToolbar. Default is YES. - */ - @objc public var showPlaceholder: Bool = true - - /** - Placeholder Font. Default is nil. - */ - @objc public var font: UIFont? - - /** - Placeholder Color. Default is nil. Which means lightGray - */ - @objc public var color: UIColor? - - /** - Placeholder Button Color when it's treated as button. Default is nil. - */ - @objc public var buttonColor: UIColor? - - /** - Placeholder accessibility Label - */ - public override var accessibilityLabel: String? { didSet { } } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift deleted file mode 100644 index a3aac5c..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift +++ /dev/null @@ -1,151 +0,0 @@ -// -// IQKeyboardManagerConstants.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import Foundation - -// MARK: IQAutoToolbarManageBehavior - -/** -`IQAutoToolbarBySubviews` -Creates Toolbar according to subview's hierarchy of Textfield's in view. - -`IQAutoToolbarByTag` -Creates Toolbar according to tag property of TextField's. - -`IQAutoToolbarByPosition` -Creates Toolbar according to the y,x position of textField in it's superview coordinate. -*/ -@available(iOSApplicationExtension, unavailable) -@objc public enum IQAutoToolbarManageBehavior: Int { - case bySubviews - case byTag - case byPosition -} - -/** - `IQPreviousNextDisplayModeDefault` - Show NextPrevious when there are more than 1 textField otherwise hide. - - `IQPreviousNextDisplayModeAlwaysHide` - Do not show NextPrevious buttons in any case. - - `IQPreviousNextDisplayModeAlwaysShow` - Always show nextPrevious buttons, - if there are more than 1 textField then both buttons will be visible but will be shown as disabled. - */ -@available(iOSApplicationExtension, unavailable) -@objc public enum IQPreviousNextDisplayMode: Int { - case `default` - case alwaysHide - case alwaysShow -} - -/** - `IQEnableModeDefault` - Pick default settings. - - `IQEnableModeEnabled` - setting is enabled. - - `IQEnableModeDisabled` - setting is disabled. - */ -@available(iOSApplicationExtension, unavailable) -@objc public enum IQEnableMode: Int { - case `default` - case enabled - case disabled -} - -/* - /---------------------------------------------------------------------------------------------------\ - \---------------------------------------------------------------------------------------------------/ - | iOS Notification Mechanism | - /---------------------------------------------------------------------------------------------------\ - \---------------------------------------------------------------------------------------------------/ - - ------------------------------------------------------------ - When UITextField become first responder - ------------------------------------------------------------ - - UITextFieldTextDidBeginEditingNotification (UITextField) - - UIKeyboardWillShowNotification - - UIKeyboardDidShowNotification - - ------------------------------------------------------------ - When UITextView become first responder - ------------------------------------------------------------ - - UIKeyboardWillShowNotification - - UITextViewTextDidBeginEditingNotification (UITextView) - - UIKeyboardDidShowNotification - - ------------------------------------------------------------ - When switching focus from UITextField to another UITextField - ------------------------------------------------------------ - - UITextFieldTextDidEndEditingNotification (UITextField1) - - UITextFieldTextDidBeginEditingNotification (UITextField2) - - UIKeyboardWillShowNotification - - UIKeyboardDidShowNotification - - ------------------------------------------------------------ - When switching focus from UITextView to another UITextView - ------------------------------------------------------------ - - UITextViewTextDidEndEditingNotification: (UITextView1) - - UIKeyboardWillShowNotification - - UITextViewTextDidBeginEditingNotification: (UITextView2) - - UIKeyboardDidShowNotification - - ------------------------------------------------------------ - When switching focus from UITextField to UITextView - ------------------------------------------------------------ - - UITextFieldTextDidEndEditingNotification (UITextField) - - UIKeyboardWillShowNotification - - UITextViewTextDidBeginEditingNotification (UITextView) - - UIKeyboardDidShowNotification - - ------------------------------------------------------------ - When switching focus from UITextView to UITextField - ------------------------------------------------------------ - - UITextViewTextDidEndEditingNotification (UITextView) - - UITextFieldTextDidBeginEditingNotification (UITextField) - - UIKeyboardWillShowNotification - - UIKeyboardDidShowNotification - - ------------------------------------------------------------ - When opening/closing UIKeyboard Predictive bar - ------------------------------------------------------------ - - UIKeyboardWillShowNotification - - UIKeyboardDidShowNotification - - ------------------------------------------------------------ - On orientation change - ------------------------------------------------------------ - - UIApplicationWillChangeStatusBarOrientationNotification - - UIKeyboardWillHideNotification - - UIKeyboardDidHideNotification - - UIApplicationDidChangeStatusBarOrientationNotification - - UIKeyboardWillShowNotification - - UIKeyboardDidShowNotification - - UIKeyboardWillShowNotification - - UIKeyboardDidShowNotification - - */ diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Debug.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Debug.swift deleted file mode 100644 index 43df95f..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Debug.swift +++ /dev/null @@ -1,71 +0,0 @@ -// -// IQKeyboardManager+Debug.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -// MARK: Debugging & Developer options -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - @MainActor - private struct AssociatedKeys { - static var enableDebugging: Int = 0 - } - - @objc var enableDebugging: Bool { - get { - return objc_getAssociatedObject(self, &AssociatedKeys.enableDebugging) as? Bool ?? false - } - set(newValue) { - objc_setAssociatedObject(self, &AssociatedKeys.enableDebugging, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - - @MainActor - struct Static { - static var indentation = 0 - } - - internal func showLog(_ logString: String, indentation: Int = 0) { - - guard enableDebugging else { - return - } - - if indentation < 0 { - Static.indentation = max(0, Static.indentation + indentation) - } - - var preLog: String = "IQKeyboardManager" - for _ in 0 ... Static.indentation { - preLog += "|\t" - } - - print(preLog + logString) - - if indentation > 0 { - Static.indentation += indentation - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Deprecated.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Deprecated.swift deleted file mode 100644 index c2cef98..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Deprecated.swift +++ /dev/null @@ -1,220 +0,0 @@ -// -// IQKeyboardManager.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -// swiftlint:disable unused_setter_value -// swiftlint:disable identifier_name -// swiftlint:disable line_length -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - @available(*, unavailable, renamed: "resignOnTouchOutside") - @objc var shouldResignOnTouchOutside: Bool { - get { false } - set { } - } - - @available(*, unavailable, renamed: "playInputClicks") - @objc var shouldPlayInputClicks: Bool { - get { false } - set { } - } - - @available(*, unavailable, message: "This feature has been removed due to few compatibility problems") - @objc func registerTextFieldViewClass(_ aClass: UIView.Type, - didBeginEditingNotificationName: String, - didEndEditingNotificationName: String) { - } - - @available(*, unavailable, message: "This feature has been removed due to few compatibility problems") - @objc func unregisterTextFieldViewClass(_ aClass: UIView.Type, - didBeginEditingNotificationName: String, - didEndEditingNotificationName: String) { - } -} - -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - @available(*, unavailable, renamed: "toolbarConfiguration.manageBehavior") - @objc var toolbarManageBehaviour: IQAutoToolbarManageBehavior { - get { .bySubviews } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.useTextFieldTintColor") - @objc var shouldToolbarUsesTextFieldTintColor: Bool { - get { false } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.tintColor") - @objc var toolbarTintColor: UIColor? { - get { nil } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.barTintColor") - @objc var toolbarBarTintColor: UIColor? { - get { nil } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.previousNextDisplayMode") - @objc var previousNextDisplayMode: IQPreviousNextDisplayMode { - get { .default } - set { } - } -} - -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - @available(*, unavailable, renamed: "toolbarConfiguration.previousBarButtonConfiguration.image", - message: "To change, please assign a new toolbarConfiguration.previousBarButtonConfiguration") - @objc var toolbarPreviousBarButtonItemImage: UIImage? { - get { nil } - set { } - } - @available(*, unavailable, renamed: "toolbarConfiguration.previousBarButtonConfiguration.title", - message: "To change, please assign a new toolbarConfiguration.previousBarButtonConfiguration") - @objc var toolbarPreviousBarButtonItemText: String? { - get { nil } - set { } - } - @available(*, unavailable, renamed: "toolbarConfiguration.previousBarButtonConfiguration.accessibilityLabel", - message: "To change, please assign a new toolbarConfiguration.previousBarButtonConfiguration") - @objc var toolbarPreviousBarButtonItemAccessibilityLabel: String? { - get { nil } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.nextBarButtonConfiguration.image", - message: "To change, please assign a new toolbarConfiguration.nextBarButtonConfiguration") - @objc var toolbarNextBarButtonItemImage: UIImage? { - get { nil } - set { } - } - @available(*, unavailable, renamed: "toolbarConfiguration.nextBarButtonConfiguration.title", - message: "To change, please assign a new toolbarConfiguration.nextBarButtonConfiguration") - @objc var toolbarNextBarButtonItemText: String? { - get { nil } - set { } - } - @available(*, unavailable, renamed: "toolbarConfiguration.nextBarButtonConfiguration.accessibilityLabel", - message: "To change, please assign a new toolbarConfiguration.nextBarButtonConfiguration") - @objc var toolbarNextBarButtonItemAccessibilityLabel: String? { - get { nil } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.doneBarButtonConfiguration.image", - message: "To change, please assign a new toolbarConfiguration.doneBarButtonConfiguration") - @objc var toolbarDoneBarButtonItemImage: UIImage? { - get { nil } - set { } - } - @available(*, unavailable, renamed: "toolbarConfiguration.doneBarButtonConfiguration.title", - message: "To change, please assign a new toolbarConfiguration.doneBarButtonConfiguration") - @objc var toolbarDoneBarButtonItemText: String? { - get { nil } - set { } - } - @available(*, unavailable, renamed: "toolbarConfiguration.doneBarButtonConfiguration.accessibilityLabel", - message: "To change, please assign a new toolbarConfiguration.doneBarButtonConfiguration") - @objc var toolbarDoneBarButtonItemAccessibilityLabel: String? { - get { nil } - set { } - } -} - -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - @available(*, unavailable, renamed: "toolbarConfiguration.placeholderConfiguration.accessibilityLabel") - @objc var toolbarTitlBarButtonItemAccessibilityLabel: String? { - get { nil } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.placeholderConfiguration.showPlaceholder") - @objc var shouldShowToolbarPlaceholder: Bool { - get { false } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.placeholderConfiguration.font") - @objc var placeholderFont: UIFont? { - get { nil } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.placeholderConfiguration.color") - @objc var placeholderColor: UIColor? { - get { nil } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.placeholderConfiguration.buttonColor") - @objc var placeholderButtonColor: UIColor? { - get { nil } - set { } - } -} - -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - @available(*, unavailable, renamed: "keyboardConfiguration.overrideAppearance") - @objc var overrideKeyboardAppearance: Bool { - get { false } - set { } - } - - @available(*, unavailable, renamed: "keyboardConfiguration.appearance") - @objc var keyboardAppearance: UIKeyboardAppearance { - get { .default } - set { } - } -} - -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - typealias SizeBlock = (_ size: CGSize) -> Void - - @available(*, unavailable, message: "This feature has been moved to IQKeyboardListener, use it directly by creating new instance") - @objc func registerKeyboardSizeChange(identifier: AnyHashable, sizeHandler: @escaping SizeBlock) {} - - @available(*, unavailable, message: "This feature has been moved to IQKeyboardListener, use it directly by creating new instance") - @objc func unregisterKeyboardSizeChange(identifier: AnyHashable) {} - - @available(*, unavailable, message: "This feature has been moved to IQKeyboardListener, use it directly by creating new instance") - @objc var keyboardShowing: Bool { false } - - @available(*, unavailable, message: "This feature has been moved to IQKeyboardListener, use it directly by creating new instance") - @objc var keyboardFrame: CGRect { .zero } -} -// swiftlint:enable unused_setter_value -// swiftlint:enable identifier_name -// swiftlint:enable line_length diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift deleted file mode 100644 index 36a1874..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift +++ /dev/null @@ -1,239 +0,0 @@ -// -// IQKeyboardManager+Internal.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -internal extension IQKeyboardManager { - - /** Get all UITextField/UITextView siblings of textFieldView. */ - func responderViews() -> [UIView]? { - - guard let textFieldView: UIView = activeConfiguration.textFieldViewInfo?.textFieldView else { - return nil - } - - var superConsideredView: UIView? - - // If find any consider responderView in it's upper hierarchy then will get deepResponderView. - for allowedClass in toolbarPreviousNextAllowedClasses { - superConsideredView = textFieldView.iq.superviewOf(type: allowedClass) - if superConsideredView != nil { - break - } - } - - var swiftUIHostingView: UIView? - let swiftUIHostingViewName: String = "UIHostingView<" - var superView: UIView? = textFieldView.superview - while let unwrappedSuperView: UIView = superView { - - let classNameString: String = { - var name: String = "\(type(of: unwrappedSuperView.self))" - if name.hasPrefix("_") { - name.removeFirst() - } - return name - }() - - if classNameString.hasPrefix(swiftUIHostingViewName) { - swiftUIHostingView = unwrappedSuperView - break - } - - superView = unwrappedSuperView.superview - } - - // (Enhancement ID: #22) - // If there is a superConsideredView in view's hierarchy, - // then fetching all it's subview that responds. - // No sorting for superConsideredView, it's by subView position. - if let view: UIView = swiftUIHostingView { - return view.iq.deepResponderViews() - } else if let view: UIView = superConsideredView { - return view.iq.deepResponderViews() - } else { // Otherwise fetching all the siblings - - let textFields: [UIView] = textFieldView.iq.responderSiblings() - - // Sorting textFields according to behavior - switch toolbarConfiguration.manageBehavior { - // If autoToolbar behavior is bySubviews, then returning it. - case .bySubviews: return textFields - - // If autoToolbar behavior is by tag, then sorting it according to tag property. - case .byTag: return textFields.sortedByTag() - - // If autoToolbar behavior is by tag, then sorting it according to tag property. - case .byPosition: return textFields.sortedByPosition() - } - } - } - - func privateIsEnabled() -> Bool { - - var isEnabled: Bool = enable - - guard let textFieldViewInfo: IQTextFieldViewInfo = activeConfiguration.textFieldViewInfo else { - return isEnabled - } - - let enableMode: IQEnableMode = textFieldViewInfo.textFieldView.iq.enableMode - - if enableMode == .enabled { - isEnabled = true - } else if enableMode == .disabled { - isEnabled = false - } else if var textFieldViewController = textFieldViewInfo.textFieldView.iq.viewContainingController() { - - // If it is searchBar textField embedded in Navigation Bar - if textFieldViewInfo.textFieldView.iq.textFieldSearchBar() != nil, - let navController: UINavigationController = textFieldViewController as? UINavigationController, - let topController: UIViewController = navController.topViewController { - textFieldViewController = topController - } - - // If viewController is kind of enable viewController class, then assuming it's enabled. - if !isEnabled, enabledDistanceHandlingClasses.contains(where: { textFieldViewController.isKind(of: $0) }) { - isEnabled = true - } - - if isEnabled { - - // If viewController is kind of disabled viewController class, then assuming it's disabled. - if disabledDistanceHandlingClasses.contains(where: { textFieldViewController.isKind(of: $0) }) { - isEnabled = false - } - - // Special Controllers - if isEnabled { - - let classNameString: String = "\(type(of: textFieldViewController.self))" - - // _UIAlertControllerTextFieldViewController - if classNameString.contains("UIAlertController"), - classNameString.hasSuffix("TextFieldViewController") { - isEnabled = false - } - } - } - } - - return isEnabled - } - - func privateIsEnableAutoToolbar() -> Bool { - - var isEnabled: Bool = enableAutoToolbar - - guard let textFieldViewInfo: IQTextFieldViewInfo = activeConfiguration.textFieldViewInfo, - var textFieldViewController = textFieldViewInfo.textFieldView.iq.viewContainingController() else { - return isEnabled - } - - // If it is searchBar textField embedded in Navigation Bar - if textFieldViewInfo.textFieldView.iq.textFieldSearchBar() != nil, - let navController: UINavigationController = textFieldViewController as? UINavigationController, - let topController: UIViewController = navController.topViewController { - textFieldViewController = topController - } - - if !isEnabled, enabledToolbarClasses.contains(where: { textFieldViewController.isKind(of: $0) }) { - isEnabled = true - } - - if isEnabled { - - // If found any toolbar disabled classes then return. - if disabledToolbarClasses.contains(where: { textFieldViewController.isKind(of: $0) }) { - isEnabled = false - } - - // Special Controllers - if isEnabled { - - let classNameString: String = "\(type(of: textFieldViewController.self))" - - // _UIAlertControllerTextFieldViewController - if classNameString.contains("UIAlertController"), classNameString.hasSuffix("TextFieldViewController") { - isEnabled = false - } - } - } - - return isEnabled - } - - func privateResignOnTouchOutside() -> Bool { - - var isEnabled: Bool = resignOnTouchOutside - - guard let textFieldViewInfo: IQTextFieldViewInfo = activeConfiguration.textFieldViewInfo else { - return isEnabled - } - - let enableMode: IQEnableMode = textFieldViewInfo.textFieldView.iq.resignOnTouchOutsideMode - - if enableMode == .enabled { - isEnabled = true - } else if enableMode == .disabled { - isEnabled = false - } else if var textFieldViewController = textFieldViewInfo.textFieldView.iq.viewContainingController() { - - // If it is searchBar textField embedded in Navigation Bar - if textFieldViewInfo.textFieldView.iq.textFieldSearchBar() != nil, - let navController: UINavigationController = textFieldViewController as? UINavigationController, - let topController: UIViewController = navController.topViewController { - textFieldViewController = topController - } - - // If viewController is kind of enable viewController class, then assuming resignOnTouchOutside is enabled. - if !isEnabled, - enabledTouchResignedClasses.contains(where: { textFieldViewController.isKind(of: $0) }) { - isEnabled = true - } - - if isEnabled { - - // If viewController is kind of disable viewController class, - // then assuming resignOnTouchOutside is disable. - if disabledTouchResignedClasses.contains(where: { textFieldViewController.isKind(of: $0) }) { - isEnabled = false - } - - // Special Controllers - if isEnabled { - - let classNameString: String = "\(type(of: textFieldViewController.self))" - - // _UIAlertControllerTextFieldViewController - if classNameString.contains("UIAlertController"), - classNameString.hasSuffix("TextFieldViewController") { - isEnabled = false - } - } - } - } - return isEnabled - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift deleted file mode 100644 index d76cb9d..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift +++ /dev/null @@ -1,718 +0,0 @@ -// -// IQKeyboardManager+Position.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -// swiftlint:disable file_length -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - @MainActor - private struct AssociatedKeys { - static var movedDistance: Int = 0 - static var movedDistanceChanged: Int = 0 - static var lastScrollViewConfiguration: Int = 0 - static var startingTextViewConfiguration: Int = 0 - static var activeConfiguration: Int = 0 - } - - /** - moved distance to the top used to maintain distance between keyboard and textField. - Most of the time this will be a positive value. - */ - private(set) var movedDistance: CGFloat { - get { - return objc_getAssociatedObject(self, &AssociatedKeys.movedDistance) as? CGFloat ?? 0.0 - } - set(newValue) { - objc_setAssociatedObject(self, &AssociatedKeys.movedDistance, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - movedDistanceChanged?(movedDistance) - } - } - - /** - Will be called then movedDistance will be changed - */ - @objc var movedDistanceChanged: ((CGFloat) -> Void)? { - get { - return objc_getAssociatedObject(self, &AssociatedKeys.movedDistanceChanged) as? ((CGFloat) -> Void) - } - set(newValue) { - objc_setAssociatedObject(self, &AssociatedKeys.movedDistanceChanged, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - movedDistanceChanged?(movedDistance) - } - } - - /** Variable to save lastScrollView that was scrolled. */ - internal var lastScrollViewConfiguration: IQScrollViewConfiguration? { - get { - return objc_getAssociatedObject(self, - &AssociatedKeys.lastScrollViewConfiguration) as? IQScrollViewConfiguration - } - set(newValue) { - objc_setAssociatedObject(self, &AssociatedKeys.lastScrollViewConfiguration, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - - /** used to adjust contentInset of UITextView. */ - internal var startingTextViewConfiguration: IQScrollViewConfiguration? { - get { - return objc_getAssociatedObject(self, - &AssociatedKeys.startingTextViewConfiguration) as? IQScrollViewConfiguration - } - set(newValue) { - objc_setAssociatedObject(self, &AssociatedKeys.startingTextViewConfiguration, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - - internal func addActiveConfigurationObserver() { - activeConfiguration.registerChange(identifier: UUID().uuidString, changeHandler: { event, _, _ in - switch event { - case .show: - self.handleKeyboardTextFieldViewVisible() - case .change: - self.handleKeyboardTextFieldViewChanged() - case .hide: - self.handleKeyboardTextFieldViewHide() - } - }) - } - - @objc internal func applicationDidBecomeActive(_ notification: Notification) { - - guard privateIsEnabled(), - activeConfiguration.keyboardInfo.keyboardShowing, - activeConfiguration.isReady else { - return - } - adjustPosition() - } - - /* Adjusting RootViewController's frame according to interface orientation. */ - // swiftlint:disable cyclomatic_complexity - // swiftlint:disable function_body_length - internal func adjustPosition() { - - // We are unable to get textField object while keyboard showing on WKWebView's textField. (Bug ID: #11) - guard UIApplication.shared.applicationState == .active, - let textFieldView: UIView = activeConfiguration.textFieldViewInfo?.textFieldView, - let superview: UIView = textFieldView.superview, - let rootConfiguration = activeConfiguration.rootControllerConfiguration, - let window: UIWindow = rootConfiguration.rootController.view.window else { - return - } - - showLog(">>>>> \(#function) started >>>>>", indentation: 1) - let startTime: CFTimeInterval = CACurrentMediaTime() - - let rootController: UIViewController = rootConfiguration.rootController - let textFieldViewRectInWindow: CGRect = superview.convert(textFieldView.frame, to: window) - let textFieldViewRectInRootSuperview: CGRect = superview.convert(textFieldView.frame, - to: rootController.view.superview) - - // Getting RootViewOrigin. - var rootViewOrigin: CGPoint = rootController.view.frame.origin - - let keyboardDistance: CGFloat - - do { - // Maintain keyboardDistanceFromTextField - let specialKeyboardDistanceFromTextField: CGFloat - - if let searchBar: UIView = textFieldView.iq.textFieldSearchBar() { - specialKeyboardDistanceFromTextField = searchBar.iq.distanceFromKeyboard - } else { - specialKeyboardDistanceFromTextField = textFieldView.iq.distanceFromKeyboard - } - - if specialKeyboardDistanceFromTextField == UIView.defaultKeyboardDistance { - keyboardDistance = keyboardDistanceFromTextField - } else { - keyboardDistance = specialKeyboardDistanceFromTextField - } - } - - let kbSize: CGSize - let originalKbSize: CGSize = activeConfiguration.keyboardInfo.frame.size - - do { - var kbFrame: CGRect = activeConfiguration.keyboardInfo.frame - - kbFrame.origin.y -= keyboardDistance - kbFrame.size.height += keyboardDistance - - kbFrame.origin.y -= rootConfiguration.beginSafeAreaInsets.bottom - kbFrame.size.height += rootConfiguration.beginSafeAreaInsets.bottom - - // (Bug ID: #469) (Bug ID: #381) (Bug ID: #1506) - // Calculating actual keyboard covered size respect to window, - // keyboard frame may be different when hardware keyboard is attached - let intersectRect: CGRect = kbFrame.intersection(window.frame) - - if intersectRect.isNull { - kbSize = CGSize(width: kbFrame.size.width, height: 0) - } else { - kbSize = intersectRect.size - } - } - - let statusBarHeight: CGFloat - - let navigationBarAreaHeight: CGFloat - if let navigationController: UINavigationController = rootController.navigationController { - navigationBarAreaHeight = navigationController.navigationBar.frame.maxY - } else { - statusBarHeight = window.windowScene?.statusBarManager?.statusBarFrame.height ?? 0 - navigationBarAreaHeight = statusBarHeight - } - - let isScrollableTextView: Bool - - if let textView: UIScrollView = textFieldView as? UIScrollView, - textFieldView.responds(to: #selector(getter: UITextView.isEditable)) { - isScrollableTextView = textView.isScrollEnabled - } else { - isScrollableTextView = false - } - - let directionalLayoutMargin: NSDirectionalEdgeInsets = rootController.view.directionalLayoutMargins - let topLayoutGuide: CGFloat = CGFloat.maximum(navigationBarAreaHeight, directionalLayoutMargin.top) - - // Validation of textView for case where there is a tab bar - // at the bottom or running on iPhone X and textView is at the bottom. - let bottomLayoutGuide: CGFloat = isScrollableTextView ? 0 : directionalLayoutMargin.bottom - - // Move positive = textField is hidden. - // Move negative = textField is showing. - // Calculating move position. - var moveUp: CGFloat - - do { - let visibleHeight: CGFloat = window.frame.height-kbSize.height - - let topMovement: CGFloat = textFieldViewRectInRootSuperview.minY-topLayoutGuide - let bottomMovement: CGFloat = textFieldViewRectInWindow.maxY - visibleHeight + bottomLayoutGuide - moveUp = CGFloat.minimum(topMovement, bottomMovement) - moveUp = CGFloat(Int(moveUp)) - } - - showLog("Need to move: \(moveUp), will be moving \(moveUp < 0 ? "down" : "up")") - - var superScrollView: UIScrollView? - var superView: UIScrollView? = textFieldView.iq.superviewOf(type: UIScrollView.self) - - // Getting UIScrollView whose scrolling is enabled. // (Bug ID: #285) - while let view: UIScrollView = superView { - - if view.isScrollEnabled, !view.iq.ignoreScrollingAdjustment { - superScrollView = view - break - } else { - // Getting it's superScrollView. // (Enhancement ID: #21, #24) - superView = view.iq.superviewOf(type: UIScrollView.self) - } - } - - // If there was a lastScrollView. // (Bug ID: #34) - if let lastConfiguration: IQScrollViewConfiguration = lastScrollViewConfiguration { - // If we can't find current superScrollView, then setting lastScrollView to it's original form. - if superScrollView == nil { - - if lastConfiguration.hasChanged { - if lastConfiguration.scrollView.contentInset != lastConfiguration.startingContentInset { - showLog("Restoring contentInset to: \(lastConfiguration.startingContentInset)") - } - - if lastConfiguration.scrollView.iq.restoreContentOffset, - !lastConfiguration.scrollView.contentOffset.equalTo(lastConfiguration.startingContentOffset) { - showLog("Restoring contentOffset to: \(lastConfiguration.startingContentOffset)") - } - - activeConfiguration.animate(alongsideTransition: { - lastConfiguration.restore(for: textFieldView) - }) - } - - self.lastScrollViewConfiguration = nil - } else if superScrollView != lastConfiguration.scrollView { - // If both scrollView's are different, - // then reset lastScrollView to it's original frame and setting current scrollView as last scrollView. - if lastConfiguration.hasChanged { - if lastConfiguration.scrollView.contentInset != lastConfiguration.startingContentInset { - showLog("Restoring contentInset to: \(lastConfiguration.startingContentInset)") - } - - if lastConfiguration.scrollView.iq.restoreContentOffset, - !lastConfiguration.scrollView.contentOffset.equalTo(lastConfiguration.startingContentOffset) { - showLog("Restoring contentOffset to: \(lastConfiguration.startingContentOffset)") - } - - activeConfiguration.animate(alongsideTransition: { - lastConfiguration.restore(for: textFieldView) - }) - } - - if let superScrollView = superScrollView { - let configuration = IQScrollViewConfiguration(scrollView: superScrollView, - canRestoreContentOffset: true) - self.lastScrollViewConfiguration = configuration - showLog(""" - Saving ScrollView New contentInset: \(configuration.startingContentInset) - and contentOffset: \(configuration.startingContentOffset) - """) - } else { - self.lastScrollViewConfiguration = nil - } - } - // Else the case where superScrollView == lastScrollView means we are on same scrollView - // after switching to different textField. So doing nothing, going ahead - } else if let superScrollView: UIScrollView = superScrollView { - // If there was no lastScrollView and we found a current scrollView. then setting it as lastScrollView. - - let configuration = IQScrollViewConfiguration(scrollView: superScrollView, canRestoreContentOffset: true) - self.lastScrollViewConfiguration = configuration - showLog(""" - Saving ScrollView New contentInset: \(configuration.startingContentInset) - and contentOffset: \(configuration.startingContentOffset) - """) - } - - // Special case for ScrollView. - // If we found lastScrollView then setting it's contentOffset to show textField. - if let lastScrollViewConfiguration: IQScrollViewConfiguration = lastScrollViewConfiguration { - // Saving - var lastView: UIView = textFieldView - var superScrollView: UIScrollView? = lastScrollViewConfiguration.scrollView - - while let scrollView: UIScrollView = superScrollView { - - var isContinue: Bool = false - - if moveUp > 0 { - isContinue = moveUp > (-scrollView.contentOffset.y - scrollView.contentInset.top) - - } else if let tableView: UITableView = scrollView.iq.superviewOf(type: UITableView.self) { - // Special treatment for UITableView due to their cell reusing logic - - isContinue = scrollView.contentOffset.y > 0 - - if isContinue, - let tableCell: UITableViewCell = textFieldView.iq.superviewOf(type: UITableViewCell.self), - let indexPath: IndexPath = tableView.indexPath(for: tableCell), - let previousIndexPath: IndexPath = tableView.previousIndexPath(of: indexPath) { - - let previousCellRect: CGRect = tableView.rectForRow(at: previousIndexPath) - if !previousCellRect.isEmpty { - let superview: UIView? = rootController.view.superview - let previousCellRectInRootSuperview: CGRect = tableView.convert(previousCellRect, - to: superview) - - moveUp = CGFloat.minimum(0, previousCellRectInRootSuperview.maxY - topLayoutGuide) - } - } - } else if let collectionView = scrollView.iq.superviewOf(type: UICollectionView.self) { - // Special treatment for UICollectionView due to their cell reusing logic - - isContinue = scrollView.contentOffset.y > 0 - - if isContinue, - let collectionCell = textFieldView.iq.superviewOf(type: UICollectionViewCell.self), - let indexPath: IndexPath = collectionView.indexPath(for: collectionCell), - let previousIndexPath: IndexPath = collectionView.previousIndexPath(of: indexPath), - let attributes = collectionView.layoutAttributesForItem(at: previousIndexPath) { - - let previousCellRect: CGRect = attributes.frame - if !previousCellRect.isEmpty { - let superview: UIView? = rootController.view.superview - let previousCellRectInRootSuperview: CGRect = collectionView.convert(previousCellRect, - to: superview) - - moveUp = CGFloat.minimum(0, previousCellRectInRootSuperview.maxY - topLayoutGuide) - } - } - } else { - isContinue = textFieldViewRectInRootSuperview.minY < topLayoutGuide - - if isContinue { - moveUp = CGFloat.minimum(0, textFieldViewRectInRootSuperview.minY - topLayoutGuide) - } - } - - // Looping in upper hierarchy until we don't found any scrollView then - // in it's upper hierarchy till UIWindow object. - if isContinue { - - var tempScrollView: UIScrollView? = scrollView.iq.superviewOf(type: UIScrollView.self) - var nextScrollView: UIScrollView? - while let view: UIScrollView = tempScrollView { - - if view.isScrollEnabled, !view.iq.ignoreScrollingAdjustment { - nextScrollView = view - break - } else { - tempScrollView = view.iq.superviewOf(type: UIScrollView.self) - } - } - - // Getting lastViewRect. - if let lastViewRect: CGRect = lastView.superview?.convert(lastView.frame, to: scrollView) { - - // Calculating the expected Y offset from move and scrollView's contentOffset. - let minimumMovement: CGFloat = CGFloat.minimum(scrollView.contentOffset.y, -moveUp) - var suggestedOffsetY: CGFloat = scrollView.contentOffset.y - minimumMovement - - // Rearranging the expected Y offset according to the view. - suggestedOffsetY = CGFloat.minimum(suggestedOffsetY, lastViewRect.minY) - - // [_textFieldView isKindOfClass:[UITextView class]] If is a UITextView type - // nextScrollView == nil If processing scrollView is last scrollView in - // upper hierarchy (there is no other scrollView upper hierarchy.) - // [_textFieldView isKindOfClass:[UITextView class]] If is a UITextView type - // suggestedOffsetY >= 0 suggestedOffsetY must be greater than in - // order to keep distance from navigationBar (Bug ID: #92) - if isScrollableTextView, - nextScrollView == nil, - suggestedOffsetY >= 0 { - - // Converting Rectangle according to window bounds. - if let superview: UIView = textFieldView.superview { - - let currentTextFieldViewRect: CGRect = superview.convert(textFieldView.frame, - to: window) - - // Calculating expected fix distance which needs to be managed from navigation bar - let expectedFixDistance: CGFloat = currentTextFieldViewRect.minY - topLayoutGuide - - // Now if expectedOffsetY (scrollView.contentOffset.y + expectedFixDistance) - // is lower than current suggestedOffsetY, which means we're in a position where - // navigationBar up and hide, then reducing suggestedOffsetY with expectedOffsetY - // (scrollView.contentOffset.y + expectedFixDistance) - let expectedOffsetY: CGFloat = scrollView.contentOffset.y + expectedFixDistance - suggestedOffsetY = CGFloat.minimum(suggestedOffsetY, expectedOffsetY) - - // Setting move to 0 because now we don't want to move any view anymore - // (All will be managed by our contentInset logic. - moveUp = 0 - } else { - // Subtracting the Y offset from the move variable, - // because we are going to change scrollView's contentOffset.y to suggestedOffsetY. - moveUp -= (suggestedOffsetY-scrollView.contentOffset.y) - } - } else { - // Subtracting the Y offset from the move variable, - // because we are going to change scrollView's contentOffset.y to suggestedOffsetY. - moveUp -= (suggestedOffsetY-scrollView.contentOffset.y) - } - - let newContentOffset: CGPoint = CGPoint(x: scrollView.contentOffset.x, y: suggestedOffsetY) - - if !scrollView.contentOffset.equalTo(newContentOffset) { - - showLog(""" - old contentOffset: \(scrollView.contentOffset) - new contentOffset: \(newContentOffset) - """) - self.showLog("Remaining Move: \(moveUp)") - - // Getting problem while using `setContentOffset:animated:`, So I used animation API. - activeConfiguration.animate(alongsideTransition: { - - // (Bug ID: #1365, #1508, #1541) - let stackView: UIStackView? = textFieldView.iq.superviewOf(type: UIStackView.self, - belowView: scrollView) - // (Bug ID: #1901, #1996) - let animatedContentOffset: Bool = stackView != nil || - scrollView is UICollectionView || - scrollView is UITableView - - if animatedContentOffset { - scrollView.setContentOffset(newContentOffset, animated: UIView.areAnimationsEnabled) - } else { - scrollView.contentOffset = newContentOffset - } - }, completion: { - - if scrollView is UITableView || scrollView is UICollectionView { - // This will update the next/previous states - self.reloadInputViews() - } - }) - } - } - - // Getting next lastView & superScrollView. - lastView = scrollView - superScrollView = nextScrollView - } else { - moveUp = 0 - break - } - } - - // Updating contentInset - let lastScrollView = lastScrollViewConfiguration.scrollView - if let lastScrollViewRect: CGRect = lastScrollView.superview?.convert(lastScrollView.frame, to: window), - !lastScrollView.iq.ignoreContentInsetAdjustment { - - var bottomInset: CGFloat = (kbSize.height)-(window.frame.height-lastScrollViewRect.maxY) - let keyboardAndSafeArea: CGFloat = keyboardDistance + rootConfiguration.beginSafeAreaInsets.bottom - var bottomScrollIndicatorInset: CGFloat = bottomInset - keyboardAndSafeArea - - // Update the insets so that the scrollView doesn't shift incorrectly - // when the offset is near the bottom of the scroll view. - bottomInset = CGFloat.maximum(lastScrollViewConfiguration.startingContentInset.bottom, bottomInset) - let startingScrollInset: UIEdgeInsets = lastScrollViewConfiguration.startingScrollIndicatorInsets - bottomScrollIndicatorInset = CGFloat.maximum(startingScrollInset.bottom, - bottomScrollIndicatorInset) - - bottomInset -= lastScrollView.safeAreaInsets.bottom - bottomScrollIndicatorInset -= lastScrollView.safeAreaInsets.bottom - - var movedInsets: UIEdgeInsets = lastScrollView.contentInset - movedInsets.bottom = bottomInset - - if lastScrollView.contentInset != movedInsets { - showLog("old ContentInset: \(lastScrollView.contentInset) new ContentInset: \(movedInsets)") - - activeConfiguration.animate(alongsideTransition: { - lastScrollView.contentInset = movedInsets - lastScrollView.layoutIfNeeded() // (Bug ID: #1996) - - var newScrollIndicatorInset: UIEdgeInsets = lastScrollView.verticalScrollIndicatorInsets - - newScrollIndicatorInset.bottom = bottomScrollIndicatorInset - lastScrollView.scrollIndicatorInsets = newScrollIndicatorInset - }) - } - } - } - // Going ahead. No else if. - - // Special case for UITextView - // (Readjusting textView.contentInset when textView hight is too big to fit on screen) - // _lastScrollView If not having inside any scrollView, now contentInset manages the full screen textView. - // [_textFieldView isKindOfClass:[UITextView class]] If is a UITextView type - if isScrollableTextView, let textView = textFieldView as? UIScrollView { - - let keyboardYPosition: CGFloat = window.frame.height - originalKbSize.height - var rootSuperViewFrameInWindow: CGRect = window.frame - if let rootSuperview: UIView = rootController.view.superview { - rootSuperViewFrameInWindow = rootSuperview.convert(rootSuperview.bounds, to: window) - } - - let keyboardOverlapping: CGFloat = rootSuperViewFrameInWindow.maxY - keyboardYPosition - - let availableHeight: CGFloat = rootSuperViewFrameInWindow.height-topLayoutGuide-keyboardOverlapping - let textViewHeight: CGFloat = CGFloat.minimum(textView.frame.height, availableHeight) - - if textView.frame.size.height-textView.contentInset.bottom>textViewHeight { - // If frame is not change by library in past, then saving user textView properties (Bug ID: #92) - if startingTextViewConfiguration == nil { - startingTextViewConfiguration = IQScrollViewConfiguration(scrollView: textView, - canRestoreContentOffset: false) - } - - var newContentInset: UIEdgeInsets = textView.contentInset - newContentInset.bottom = textView.frame.size.height-textViewHeight - newContentInset.bottom -= textView.safeAreaInsets.bottom - - if textView.contentInset != newContentInset { - self.showLog(""" - \(textFieldView) Old UITextView.contentInset: \(textView.contentInset) - New UITextView.contentInset: \(newContentInset) - """) - - activeConfiguration.animate(alongsideTransition: { - - textView.contentInset = newContentInset - textView.layoutIfNeeded() // (Bug ID: #1996) - textView.scrollIndicatorInsets = newContentInset - }) - } - } - } - - // +Positive or zero. - if moveUp >= 0 { - - rootViewOrigin.y = CGFloat.maximum(rootViewOrigin.y - moveUp, CGFloat.minimum(0, -originalKbSize.height)) - - if !rootController.view.frame.origin.equalTo(rootViewOrigin) { - showLog("Moving Upward") - - activeConfiguration.animate(alongsideTransition: { - - var rect: CGRect = rootController.view.frame - rect.origin = rootViewOrigin - rootController.view.frame = rect - - // Animating content if needed (Bug ID: #204) - if self.layoutIfNeededOnUpdate { - // Animating content (Bug ID: #160) - rootController.view.setNeedsLayout() - rootController.view.layoutIfNeeded() - } - - let classNameString: String = "\(type(of: rootController.self))" - self.showLog("Set \(classNameString) origin to: \(rootViewOrigin)") - }) - } - - movedDistance = (rootConfiguration.beginOrigin.y-rootViewOrigin.y) - } else { // -Negative - let disturbDistance: CGFloat = rootViewOrigin.y-rootConfiguration.beginOrigin.y - - // disturbDistance Negative = frame disturbed. - // disturbDistance positive = frame not disturbed. - if disturbDistance <= 0 { - - rootViewOrigin.y -= CGFloat.maximum(moveUp, disturbDistance) - - if !rootController.view.frame.origin.equalTo(rootViewOrigin) { - showLog("Moving Downward") - // Setting adjusted rootViewRect - // Setting adjusted rootViewRect - - activeConfiguration.animate(alongsideTransition: { - - var rect: CGRect = rootController.view.frame - rect.origin = rootViewOrigin - rootController.view.frame = rect - - // Animating content if needed (Bug ID: #204) - if self.layoutIfNeededOnUpdate { - // Animating content (Bug ID: #160) - rootController.view.setNeedsLayout() - rootController.view.layoutIfNeeded() - } - - let classNameString: String = "\(type(of: rootController.self))" - self.showLog("Set \(classNameString) origin to: \(rootViewOrigin)") - }) - } - - movedDistance = (rootConfiguration.beginOrigin.y-rootViewOrigin.y) - } - } - - let elapsedTime: CFTimeInterval = CACurrentMediaTime() - startTime - showLog("<<<<< \(#function) ended: \(elapsedTime) seconds <<<<<", indentation: -1) - } - // swiftlint:enable cyclomatic_complexity - // swiftlint:enable function_body_length - - // swiftlint:disable cyclomatic_complexity - // swiftlint:disable function_body_length - internal func restorePosition() { - - // Setting rootViewController frame to it's original position. // (Bug ID: #18) - guard let configuration: IQRootControllerConfiguration = activeConfiguration.rootControllerConfiguration else { - return - } - let startTime: CFTimeInterval = CACurrentMediaTime() - showLog(">>>>> \(#function) started >>>>>", indentation: 1) - - activeConfiguration.animate(alongsideTransition: { - if configuration.hasChanged { - let classNameString: String = "\(type(of: configuration.rootController.self))" - self.showLog("Restoring \(classNameString) origin to: \(configuration.beginOrigin)") - } - configuration.restore() - - // Animating content if needed (Bug ID: #204) - if self.layoutIfNeededOnUpdate { - // Animating content (Bug ID: #160) - configuration.rootController.view.setNeedsLayout() - configuration.rootController.view.layoutIfNeeded() - } - }) - - // Restoring the contentOffset of the lastScrollView - if let textFieldView: UIView = activeConfiguration.textFieldViewInfo?.textFieldView, - let lastConfiguration: IQScrollViewConfiguration = lastScrollViewConfiguration { - - activeConfiguration.animate(alongsideTransition: { - - if lastConfiguration.hasChanged { - if lastConfiguration.scrollView.contentInset != lastConfiguration.startingContentInset { - self.showLog("Restoring contentInset to: \(lastConfiguration.startingContentInset)") - } - - if lastConfiguration.scrollView.iq.restoreContentOffset, - !lastConfiguration.scrollView.contentOffset.equalTo(lastConfiguration.startingContentOffset) { - self.showLog("Restoring contentOffset to: \(lastConfiguration.startingContentOffset)") - } - - lastConfiguration.restore(for: textFieldView) - } - - // This is temporary solution. Have to implement the save and restore scrollView state - var superScrollView: UIScrollView? = lastConfiguration.scrollView - - while let scrollView: UIScrollView = superScrollView { - - let width: CGFloat = CGFloat.maximum(scrollView.contentSize.width, scrollView.frame.width) - let height: CGFloat = CGFloat.maximum(scrollView.contentSize.height, scrollView.frame.height) - let contentSize: CGSize = CGSize(width: width, height: height) - - let minimumY: CGFloat = contentSize.height - scrollView.frame.height - - if minimumY < scrollView.contentOffset.y { - - let newContentOffset: CGPoint = CGPoint(x: scrollView.contentOffset.x, y: minimumY) - if !scrollView.contentOffset.equalTo(newContentOffset) { - - // (Bug ID: #1365, #1508, #1541) - let stackView: UIStackView? = textFieldView.iq.superviewOf(type: UIStackView.self, - belowView: scrollView) - - // (Bug ID: #1901, #1996) - let animatedContentOffset: Bool = stackView != nil || - scrollView is UICollectionView || - scrollView is UITableView - - if animatedContentOffset { - scrollView.setContentOffset(newContentOffset, animated: UIView.areAnimationsEnabled) - } else { - scrollView.contentOffset = newContentOffset - } - - self.showLog("Restoring contentOffset to: \(newContentOffset)") - } - } - - superScrollView = scrollView.iq.superviewOf(type: UIScrollView.self) - } - }) - } - - self.movedDistance = 0 - let elapsedTime: CFTimeInterval = CACurrentMediaTime() - startTime - showLog("<<<<< \(#function) ended: \(elapsedTime) seconds <<<<<", indentation: -1) - } - // swiftlint:enable cyclomatic_complexity - // swiftlint:enable function_body_length -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Toolbar.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Toolbar.swift deleted file mode 100644 index a7b1791..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Toolbar.swift +++ /dev/null @@ -1,280 +0,0 @@ -// -// IQKeyboardManager+Toolbar.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - /** - Default tag for toolbar with Done button -1002. - */ - private static let kIQDoneButtonToolbarTag = -1002 - - /** - Default tag for toolbar with Previous/Next buttons -1005. - */ - private static let kIQPreviousNextButtonToolbarTag = -1005 - - // swiftlint:disable function_body_length - // swiftlint:disable cyclomatic_complexity - /** - Add toolbar if it is required to add on textFields and it's siblings. - */ - internal func addToolbarIfRequired() { - - // Either there is no inputAccessoryView or - // if accessoryView is not appropriate for current situation - // (There is Previous/Next/Done toolbar) - guard let siblings: [UIView] = responderViews(), !siblings.isEmpty, - let textField: UIView = activeConfiguration.textFieldViewInfo?.textFieldView, - textField.responds(to: #selector(setter: UITextField.inputAccessoryView)) else { - return - } - - if let inputAccessoryView: UIView = textField.inputAccessoryView { - - if inputAccessoryView.tag == IQKeyboardManager.kIQPreviousNextButtonToolbarTag || - inputAccessoryView.tag == IQKeyboardManager.kIQDoneButtonToolbarTag { - // continue - } else { - let swiftUIAccessoryName: String = "InputAccessoryHost<InputAccessoryBar>" - let classNameString: String = "\(type(of: inputAccessoryView.classForCoder))" - - // If it's SwiftUI accessory view but doesn't have a height (fake accessory view), then we should - // add our own accessoryView otherwise, keep the SwiftUI accessoryView since user has added it from code - guard classNameString.hasPrefix(swiftUIAccessoryName), inputAccessoryView.subviews.isEmpty else { - return - } - } - } - - showLog(">>>>> \(#function) started >>>>>", indentation: 1) - let startTime: CFTimeInterval = CACurrentMediaTime() - - showLog("Found \(siblings.count) responder sibling(s)") - - let rightConfiguration: IQBarButtonItemConfiguration - if let configuration: IQBarButtonItemConfiguration = toolbarConfiguration.doneBarButtonConfiguration { - rightConfiguration = configuration - rightConfiguration.action = #selector(self.doneAction(_:)) - } else { - rightConfiguration = IQBarButtonItemConfiguration(systemItem: .done, action: #selector(self.doneAction(_:))) - rightConfiguration.accessibilityLabel = "Done" - } - - let isTableCollectionView: Bool - if textField.iq.superviewOf(type: UITableView.self) != nil || - textField.iq.superviewOf(type: UICollectionView.self) != nil { - isTableCollectionView = true - } else { - isTableCollectionView = false - } - - let previousNextDisplayMode: IQPreviousNextDisplayMode = toolbarConfiguration.previousNextDisplayMode - - let havePreviousNext: Bool - switch previousNextDisplayMode { - case .default: - // If the textField is part of UITableView/UICollectionView then we should be exposing previous/next too - // Because at this time we don't know the previous or next cell if it contains another textField to move. - if isTableCollectionView { - havePreviousNext = true - } else if siblings.count <= 1 { - // If only one object is found, then adding only Done button. - havePreviousNext = false - } else { - havePreviousNext = true - } - case .alwaysShow: - havePreviousNext = true - case .alwaysHide: - havePreviousNext = false - } - - let placeholderConfig: IQToolbarPlaceholderConfiguration = toolbarConfiguration.placeholderConfiguration - if havePreviousNext { - let prevConfiguration: IQBarButtonItemConfiguration - if let configuration: IQBarButtonItemConfiguration = toolbarConfiguration.previousBarButtonConfiguration { - configuration.action = #selector(self.previousAction(_:)) - prevConfiguration = configuration - } else { - prevConfiguration = IQBarButtonItemConfiguration(image: (UIImage.keyboardPreviousImage), - action: #selector(self.previousAction(_:))) - prevConfiguration.accessibilityLabel = "Previous" - } - - let nextConfiguration: IQBarButtonItemConfiguration - if let configuration: IQBarButtonItemConfiguration = toolbarConfiguration.nextBarButtonConfiguration { - configuration.action = #selector(self.nextAction(_:)) - nextConfiguration = configuration - } else { - nextConfiguration = IQBarButtonItemConfiguration(image: (UIImage.keyboardNextImage), - action: #selector(self.nextAction(_:))) - nextConfiguration.accessibilityLabel = "Next" - } - - let titleText: String? = placeholderConfig.showPlaceholder ? textField.iq.drawingPlaceholder : nil - textField.iq.addToolbar(target: self, - previousConfiguration: prevConfiguration, - nextConfiguration: nextConfiguration, - rightConfiguration: rightConfiguration, title: titleText, - titleAccessibilityLabel: placeholderConfig.accessibilityLabel) - - // (Bug ID: #78) - textField.inputAccessoryView?.tag = IQKeyboardManager.kIQPreviousNextButtonToolbarTag - - if isTableCollectionView { - // (Bug ID: #56) - // In case of UITableView, the next/previous buttons should always be enabled. - textField.iq.toolbar.previousBarButton.isEnabled = true - textField.iq.toolbar.nextBarButton.isEnabled = true - } else { - // If firstTextField, then previous should not be enabled. - textField.iq.toolbar.previousBarButton.isEnabled = (siblings.first != textField) - // If lastTextField then next should not be enabled. - textField.iq.toolbar.nextBarButton.isEnabled = (siblings.last != textField) - } - - } else { - - let titleText: String? = placeholderConfig.showPlaceholder ? textField.iq.drawingPlaceholder : nil - textField.iq.addToolbar(target: self, rightConfiguration: rightConfiguration, - title: titleText, - titleAccessibilityLabel: placeholderConfig.accessibilityLabel) - - textField.inputAccessoryView?.tag = IQKeyboardManager.kIQDoneButtonToolbarTag // (Bug ID: #78) - } - - let toolbar: IQToolbar = textField.iq.toolbar - - // Setting toolbar tintColor // (Enhancement ID: #30) - if toolbarConfiguration.useTextFieldTintColor { - toolbar.tintColor = textField.tintColor - } else { - toolbar.tintColor = toolbarConfiguration.tintColor - } - - // Setting toolbar to keyboard. - if let textFieldView: UITextInput = textField as? UITextInput { - - // Bar style according to keyboard appearance - switch textFieldView.keyboardAppearance { - - case .dark?: - toolbar.barStyle = .black - toolbar.barTintColor = nil - default: - toolbar.barStyle = .default - toolbar.barTintColor = toolbarConfiguration.barTintColor - } - } - - // Setting toolbar title font. // (Enhancement ID: #30) - if toolbarConfiguration.placeholderConfiguration.showPlaceholder, - !textField.iq.hidePlaceholder { - - // Updating placeholder font to toolbar. //(Bug ID: #148, #272) - if toolbar.titleBarButton.title == nil || - toolbar.titleBarButton.title != textField.iq.drawingPlaceholder { - toolbar.titleBarButton.title = textField.iq.drawingPlaceholder - } - - // Setting toolbar title font. // (Enhancement ID: #30) - toolbar.titleBarButton.titleFont = toolbarConfiguration.placeholderConfiguration.font - - // Setting toolbar title color. // (Enhancement ID: #880) - toolbar.titleBarButton.titleColor = toolbarConfiguration.placeholderConfiguration.color - - // Setting toolbar button title color. // (Enhancement ID: #880) - toolbar.titleBarButton.selectableTitleColor = toolbarConfiguration.placeholderConfiguration.buttonColor - - } else { - toolbar.titleBarButton.title = nil - } - - // In case of UITableView (Special), the next/previous buttons has to be refreshed every-time. (Bug ID: #56) - - // If firstTextField, then previous should not be enabled. - textField.iq.toolbar.previousBarButton.isEnabled = (siblings.first != textField) - - // If lastTextField then next should not be enabled. - textField.iq.toolbar.nextBarButton.isEnabled = (siblings.last != textField) - - let elapsedTime: CFTimeInterval = CACurrentMediaTime() - startTime - showLog("<<<<< \(#function) ended: \(elapsedTime) seconds <<<<<", indentation: -1) - } - // swiftlint:enable function_body_length - // swiftlint:enable cyclomatic_complexity - - /** Remove any toolbar if it is IQToolbar. */ - internal func removeToolbarIfRequired() { // (Bug ID: #18) - - guard let siblings: [UIView] = responderViews(), !siblings.isEmpty, - let textField: UIView = activeConfiguration.textFieldViewInfo?.textFieldView, - textField.responds(to: #selector(setter: UITextField.inputAccessoryView)), - textField.inputAccessoryView == nil || - textField.inputAccessoryView?.tag == IQKeyboardManager.kIQPreviousNextButtonToolbarTag || - textField.inputAccessoryView?.tag == IQKeyboardManager.kIQDoneButtonToolbarTag else { - return - } - - showLog(">>>>> \(#function) started >>>>>", indentation: 1) - let startTime: CFTimeInterval = CACurrentMediaTime() - - showLog("Found \(siblings.count) responder sibling(s)") - - for view in siblings { - if let toolbar: IQToolbar = view.inputAccessoryView as? IQToolbar { - - // setInputAccessoryView: check (Bug ID: #307) - if view.responds(to: #selector(setter: UITextField.inputAccessoryView)), - toolbar.tag == IQKeyboardManager.kIQDoneButtonToolbarTag || - toolbar.tag == IQKeyboardManager.kIQPreviousNextButtonToolbarTag { - - if let textField: UITextField = view as? UITextField { - textField.inputAccessoryView = nil - } else if let textView: UITextView = view as? UITextView { - textView.inputAccessoryView = nil - } - - view.reloadInputViews() - } - } - } - - let elapsedTime: CFTimeInterval = CACurrentMediaTime() - startTime - showLog("<<<<< \(#function) ended: \(elapsedTime) seconds <<<<<", indentation: -1) - } - - /** reloadInputViews to reload toolbar buttons enable/disable state on the fly Enhancement ID #434. */ - @objc func reloadInputViews() { - - // If enabled then adding toolbar. - if privateIsEnableAutoToolbar() { - self.addToolbarIfRequired() - } else { - self.removeToolbarIfRequired() - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ToolbarActions.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ToolbarActions.swift deleted file mode 100644 index 5b01190..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ToolbarActions.swift +++ /dev/null @@ -1,205 +0,0 @@ -// -// IQKeyboardManager+ToolbarActions.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -// MARK: Previous next button actions -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - /** - Returns YES if can navigate to previous responder textField/textView, otherwise NO. - */ - @objc var canGoPrevious: Bool { - // If it is not first textField. then it's previous object canBecomeFirstResponder. - guard let textFields: [UIView] = responderViews(), - let textFieldRetain: UIView = activeConfiguration.textFieldViewInfo?.textFieldView, - let index: Int = textFields.firstIndex(of: textFieldRetain), - index > 0 else { - return false - } - return true - } - - /** - Returns YES if can navigate to next responder textField/textView, otherwise NO. - */ - @objc var canGoNext: Bool { - // If it is not first textField. then it's previous object canBecomeFirstResponder. - guard let textFields: [UIView] = responderViews(), - let textFieldRetain: UIView = activeConfiguration.textFieldViewInfo?.textFieldView, - let index: Int = textFields.firstIndex(of: textFieldRetain), - index < textFields.count-1 else { - return false - } - return true - } - - /** - Navigate to previous responder textField/textView. - */ - @discardableResult - @objc func goPrevious() -> Bool { - - // If it is not first textField. then it's previous object becomeFirstResponder. - guard let textFields: [UIView] = responderViews(), - let textFieldRetain: UIView = activeConfiguration.textFieldViewInfo?.textFieldView, - let index: Int = textFields.firstIndex(of: textFieldRetain), - index > 0 else { - return false - } - - let nextTextField: UIView = textFields[index-1] - - let isAcceptAsFirstResponder: Bool = nextTextField.becomeFirstResponder() - - // If it refuses then becoming previous textFieldView as first responder again. (Bug ID: #96) - if !isAcceptAsFirstResponder { - showLog("Refuses to become first responder: \(nextTextField)") - } - - return isAcceptAsFirstResponder - } - - /** - Navigate to next responder textField/textView. - */ - @discardableResult - @objc func goNext() -> Bool { - - // If it is not first textField. then it's previous object becomeFirstResponder. - guard let textFields: [UIView] = responderViews(), - let textFieldRetain: UIView = activeConfiguration.textFieldViewInfo?.textFieldView, - let index: Int = textFields.firstIndex(of: textFieldRetain), - index < textFields.count-1 else { - return false - } - - let nextTextField: UIView = textFields[index+1] - - let isAcceptAsFirstResponder: Bool = nextTextField.becomeFirstResponder() - - // If it refuses then becoming previous textFieldView as first responder again. (Bug ID: #96) - if !isAcceptAsFirstResponder { - showLog("Refuses to become first responder: \(nextTextField)") - } - - return isAcceptAsFirstResponder - } - - /** previousAction. */ - @objc internal func previousAction (_ barButton: IQBarButtonItem) { - - // If user wants to play input Click sound. - if playInputClicks { - // Play Input Click Sound. - UIDevice.current.playInputClick() - } - - guard canGoPrevious, - let textFieldRetain: UIView = activeConfiguration.textFieldViewInfo?.textFieldView else { - return - } - - let isAcceptAsFirstResponder: Bool = goPrevious() - - var invocation: IQInvocation? = barButton.invocation - var sender: UIView = textFieldRetain - - // Handling search bar special case - do { - if let searchBar: UIView = textFieldRetain.iq.textFieldSearchBar() { - invocation = searchBar.iq.toolbar.previousBarButton.invocation - sender = searchBar - } - } - - if isAcceptAsFirstResponder { - invocation?.invoke(from: sender) - } - } - - /** nextAction. */ - @objc internal func nextAction (_ barButton: IQBarButtonItem) { - - // If user wants to play input Click sound. - if playInputClicks { - // Play Input Click Sound. - UIDevice.current.playInputClick() - } - - guard canGoNext, - let textFieldRetain: UIView = activeConfiguration.textFieldViewInfo?.textFieldView else { - return - } - - let isAcceptAsFirstResponder: Bool = goNext() - - var invocation: IQInvocation? = barButton.invocation - var sender: UIView = textFieldRetain - - // Handling search bar special case - do { - if let searchBar: UIView = textFieldRetain.iq.textFieldSearchBar() { - invocation = searchBar.iq.toolbar.nextBarButton.invocation - sender = searchBar - } - } - - if isAcceptAsFirstResponder { - invocation?.invoke(from: sender) - } - } - - /** doneAction. Resigning current textField. */ - @objc internal func doneAction (_ barButton: IQBarButtonItem) { - - // If user wants to play input Click sound. - if playInputClicks { - // Play Input Click Sound. - UIDevice.current.playInputClick() - } - - guard let textFieldRetain: UIView = activeConfiguration.textFieldViewInfo?.textFieldView else { - return - } - - // Resign textFieldView. - let isResignedFirstResponder: Bool = resignFirstResponder() - - var invocation: IQInvocation? = barButton.invocation - var sender: UIView = textFieldRetain - - // Handling search bar special case - do { - if let searchBar: UIView = textFieldRetain.iq.textFieldSearchBar() { - invocation = searchBar.iq.toolbar.doneBarButton.invocation - sender = searchBar - } - } - - if isResignedFirstResponder { - invocation?.invoke(from: sender) - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UIKeyboardNotification.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UIKeyboardNotification.swift deleted file mode 100644 index 3850630..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UIKeyboardNotification.swift +++ /dev/null @@ -1,148 +0,0 @@ -// -// IQKeyboardManager+UIKeyboardNotification.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -// MARK: UIKeyboard Notifications -@available(iOSApplicationExtension, unavailable) -internal extension IQKeyboardManager { - - func handleKeyboardTextFieldViewVisible() { - if self.activeConfiguration.rootControllerConfiguration == nil { // (Bug ID: #5) - - let rootConfiguration: IQRootControllerConfiguration? = self.activeConfiguration.rootControllerConfiguration - if let gestureConfiguration = self.rootConfigurationWhilePopGestureActive, - gestureConfiguration.rootController == rootConfiguration?.rootController { - self.activeConfiguration.rootControllerConfiguration = gestureConfiguration - } - - self.rootConfigurationWhilePopGestureActive = nil - - if let configuration = self.activeConfiguration.rootControllerConfiguration { - let classNameString: String = "\(type(of: configuration.rootController.self))" - self.showLog("Saving \(classNameString) beginning origin: \(configuration.beginOrigin)") - } - } - - setupTextFieldView() - - if !privateIsEnabled() { - restorePosition() - } else { - adjustPosition() - } - } - - func handleKeyboardTextFieldViewChanged() { - - setupTextFieldView() - - if !privateIsEnabled() { - restorePosition() - } else { - adjustPosition() - } - } - - func handleKeyboardTextFieldViewHide() { - - self.restorePosition() - self.banishTextFieldViewSetup() - - if let configuration = self.activeConfiguration.rootControllerConfiguration, - configuration.rootController.navigationController?.interactivePopGestureRecognizer?.state == .began { - self.rootConfigurationWhilePopGestureActive = configuration - } - - self.lastScrollViewConfiguration = nil - } -} - -@available(iOSApplicationExtension, unavailable) -internal extension IQKeyboardManager { - - func setupTextFieldView() { - - guard let textFieldView = activeConfiguration.textFieldViewInfo?.textFieldView else { - return - } - - do { - if let startingConfiguration = startingTextViewConfiguration, - startingConfiguration.hasChanged { - - if startingConfiguration.scrollView.contentInset != startingConfiguration.startingContentInset { - showLog("Restoring textView.contentInset to: \(startingConfiguration.startingContentInset)") - } - - activeConfiguration.animate(alongsideTransition: { - startingConfiguration.restore(for: textFieldView) - }) - } - startingTextViewConfiguration = nil - } - - if keyboardConfiguration.overrideAppearance, - let textInput: UITextInput = textFieldView as? UITextInput, - textInput.keyboardAppearance != keyboardConfiguration.appearance { - // Setting textField keyboard appearance and reloading inputViews. - if let textFieldView: UITextField = textFieldView as? UITextField { - textFieldView.keyboardAppearance = keyboardConfiguration.appearance - } else if let textFieldView: UITextView = textFieldView as? UITextView { - textFieldView.keyboardAppearance = keyboardConfiguration.appearance - } - textFieldView.reloadInputViews() - } - - // If autoToolbar enable, then add toolbar on all the UITextField/UITextView's if required. - reloadInputViews() - - resignFirstResponderGesture.isEnabled = privateResignOnTouchOutside() - textFieldView.window?.addGestureRecognizer(resignFirstResponderGesture) // (Enhancement ID: #14) - } - - func banishTextFieldViewSetup() { - - guard let textFieldView = activeConfiguration.textFieldViewInfo?.textFieldView else { - return - } - - // Removing gesture recognizer (Enhancement ID: #14) - textFieldView.window?.removeGestureRecognizer(resignFirstResponderGesture) - - do { - if let startingConfiguration = startingTextViewConfiguration, - startingConfiguration.hasChanged { - - if startingConfiguration.scrollView.contentInset != startingConfiguration.startingContentInset { - showLog("Restoring textView.contentInset to: \(startingConfiguration.startingContentInset)") - } - - activeConfiguration.animate(alongsideTransition: { - startingConfiguration.restore(for: textFieldView) - }) - } - startingTextViewConfiguration = nil - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UITextFieldViewNotification.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UITextFieldViewNotification.swift deleted file mode 100644 index 676a8bc..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UITextFieldViewNotification.swift +++ /dev/null @@ -1,46 +0,0 @@ -// -// IQKeyboardManager+UITextFieldViewNotification.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -// MARK: UITextField/UITextView Notifications -@available(iOSApplicationExtension, unavailable) -@MainActor -internal extension IQKeyboardManager { - - @MainActor - private struct AssociatedKeys { - static var rootConfigWhilePopActive: Int = 0 - } - - var rootConfigurationWhilePopGestureActive: IQRootControllerConfiguration? { - get { - return objc_getAssociatedObject(self, - &AssociatedKeys.rootConfigWhilePopActive) as? IQRootControllerConfiguration - } - set(newValue) { - objc_setAssociatedObject(self, &AssociatedKeys.rootConfigWhilePopActive, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift deleted file mode 100644 index eeaca4b..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift +++ /dev/null @@ -1,331 +0,0 @@ -// -// IQKeyboardManager.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit -import CoreGraphics -import QuartzCore - -// MARK: IQToolbar tags - -// swiftlint:disable line_length -// A generic version of KeyboardManagement. (OLD DOCUMENTATION) LINK -// https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html -// https://developer.apple.com/documentation/uikit/keyboards_and_input/adjusting_your_layout_with_keyboard_layout_guide -// swiftlint:enable line_length - -/** -Code-less drop-in universal library allows to prevent issues of keyboard sliding up and cover UITextField/UITextView. - Neither need to write any code nor any setup required and much more. -*/ -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc public final class IQKeyboardManager: NSObject { - - /** - Returns the default singleton instance. - */ - @objc public static let shared: IQKeyboardManager = .init() - - // MARK: UIKeyboard handling - - /** - Enable/disable managing distance between keyboard and textField. - Default is YES(Enabled when class loads in `+(void)load` method). - */ - @objc public var enable: Bool = false { - - didSet { - // If not enable, enable it. - if enable, !oldValue { - // If keyboard is currently showing. - if activeConfiguration.keyboardInfo.keyboardShowing { - adjustPosition() - } else { - restorePosition() - } - showLog("Enabled") - } else if !enable, oldValue { // If not disable, disable it. - restorePosition() - showLog("Disabled") - } - } - } - - /** - To set keyboard distance from textField. can't be less than zero. Default is 10.0. - */ - @objc public var keyboardDistanceFromTextField: CGFloat = 10.0 - - // MARK: IQToolbar handling - - /** - Automatic add the IQToolbar functionality. Default is YES. - */ - @objc public var enableAutoToolbar: Bool = true { - didSet { - reloadInputViews() - showLog("enableAutoToolbar: \(enableAutoToolbar ? "Yes" : "NO")") - } - } - - internal var activeConfiguration: IQActiveConfiguration = .init() - - /** - Configurations related to the toolbar display over the keyboard. - */ - @objc public let toolbarConfiguration: IQToolbarConfiguration = .init() - - /** - Configuration related to keyboard appearance - */ - @objc public let keyboardConfiguration: IQKeyboardConfiguration = .init() - - // MARK: UITextField/UITextView Next/Previous/Resign handling - - /** - Resigns Keyboard on touching outside of UITextField/View. Default is NO. - */ - @objc public var resignOnTouchOutside: Bool = false { - - didSet { - resignFirstResponderGesture.isEnabled = privateResignOnTouchOutside() - - showLog("resignOnTouchOutside: \(resignOnTouchOutside ? "Yes" : "NO")") - } - } - - /** TapGesture to resign keyboard on view's touch. - It's a readonly property and exposed only for adding/removing dependencies - if your added gesture does have collision with this one - */ - @objc public lazy var resignFirstResponderGesture: UITapGestureRecognizer = { - - let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapRecognized(_:))) - tapGesture.cancelsTouchesInView = false - tapGesture.delegate = self - - return tapGesture - }() - - /*******************************************/ - - /** - Resigns currently first responder field. - */ - @discardableResult - @objc public func resignFirstResponder() -> Bool { - - guard let textFieldRetain: UIView = activeConfiguration.textFieldViewInfo?.textFieldView else { - return false - } - - // Resigning first responder - guard textFieldRetain.resignFirstResponder() else { - showLog("Refuses to resign first responder: \(textFieldRetain)") - // If it refuses then becoming it as first responder again. (Bug ID: #96) - // If it refuses to resign then becoming it first responder again for getting notifications callback. - textFieldRetain.becomeFirstResponder() - return false - } - return true - } - - // MARK: UISound handling - - /** - If YES, then it plays inputClick sound on next/previous/done click. - */ - @objc public var playInputClicks: Bool = true - - // MARK: UIAnimation handling - - /** - If YES, then calls 'setNeedsLayout' and 'layoutIfNeeded' on any frame update of to viewController's view. - */ - @objc public var layoutIfNeededOnUpdate: Bool = false - - // MARK: Class Level disabling methods - - /** - Disable distance handling within the scope of disabled distance handling viewControllers classes. - Within this scope, 'enabled' property is ignored. Class should be kind of UIViewController. - */ - @objc public var disabledDistanceHandlingClasses: [UIViewController.Type] = [] - - /** - Enable distance handling within the scope of enabled distance handling viewControllers classes. - Within this scope, 'enabled' property is ignored. Class should be kind of UIViewController. - If same Class is added in disabledDistanceHandlingClasses list, - then enabledDistanceHandlingClasses will be ignored. - */ - @objc public var enabledDistanceHandlingClasses: [UIViewController.Type] = [] - - /** - Disable automatic toolbar creation within the scope of disabled toolbar viewControllers classes. - Within this scope, 'enableAutoToolbar' property is ignored. Class should be kind of UIViewController. - */ - @objc public var disabledToolbarClasses: [UIViewController.Type] = [] - - /** - Enable automatic toolbar creation within the scope of enabled toolbar viewControllers classes. - Within this scope, 'enableAutoToolbar' property is ignored. Class should be kind of UIViewController. - If same Class is added in disabledToolbarClasses list, then enabledToolbarClasses will be ignore. - */ - @objc public var enabledToolbarClasses: [UIViewController.Type] = [] - - /** - Allowed subclasses of UIView to add all inner textField, - this will allow to navigate between textField contains in different superview. - Class should be kind of UIView. - */ - @objc public var toolbarPreviousNextAllowedClasses: [UIView.Type] = [] - - /** - Disabled classes to ignore resignOnTouchOutside' property, Class should be kind of UIViewController. - */ - @objc public var disabledTouchResignedClasses: [UIViewController.Type] = [] - - /** - Enabled classes to forcefully enable 'resignOnTouchOutside' property. - Class should be kind of UIViewController - . If same Class is added in disabledTouchResignedClasses list, then enabledTouchResignedClasses will be ignored. - */ - @objc public var enabledTouchResignedClasses: [UIViewController.Type] = [] - - /** - if resignOnTouchOutside is enabled then you can customize the behavior - to not recognize gesture touches on some specific view subclasses. - Class should be kind of UIView. Default is [UIControl, UINavigationBar] - */ - @objc public var touchResignedGestureIgnoreClasses: [UIView.Type] = [] - - // MARK: Third Party Library support - /// Add TextField/TextView Notifications customized Notifications. - /// For example while using YYTextView https://github.com/ibireme/YYText - - /**************************************************************************************/ - - // MARK: Initialization/De-initialization - - /* Singleton Object Initialization. */ - override init() { - - super.init() - - self.addActiveConfigurationObserver() - - // Creating gesture for resignOnTouchOutside. (Enhancement ID: #14) - resignFirstResponderGesture.isEnabled = resignOnTouchOutside - - disabledDistanceHandlingClasses.append(UITableViewController.self) - disabledDistanceHandlingClasses.append(UIInputViewController.self) - disabledDistanceHandlingClasses.append(UIAlertController.self) - - disabledToolbarClasses.append(UIAlertController.self) - disabledToolbarClasses.append(UIInputViewController.self) - - disabledTouchResignedClasses.append(UIAlertController.self) - disabledTouchResignedClasses.append(UIInputViewController.self) - - toolbarPreviousNextAllowedClasses.append(UITableView.self) - toolbarPreviousNextAllowedClasses.append(UICollectionView.self) - toolbarPreviousNextAllowedClasses.append(IQPreviousNextView.self) - - touchResignedGestureIgnoreClasses.append(UIControl.self) - touchResignedGestureIgnoreClasses.append(UINavigationBar.self) - - NotificationCenter.default.addObserver(self, selector: #selector(applicationDidBecomeActive(_:)), - name: UIApplication.didBecomeActiveNotification, object: nil) - - // (Bug ID: #550) - // Loading IQToolbar, IQTitleBarButtonItem, IQBarButtonItem to fix first time keyboard appearance delay - // If you experience exception breakpoint issue at below line then try these solutions - // https://stackoverflow.com/questions/27375640/all-exception-break-point-is-stopping-for-no-reason-on-simulator - DispatchQueue.main.async { - let textField: UIView = UITextField() - textField.iq.addDone(target: nil, action: #selector(self.doneAction(_:))) - textField.iq.addPreviousNextDone(target: nil, previousAction: #selector(self.previousAction(_:)), - nextAction: #selector(self.nextAction(_:)), - doneAction: #selector(self.doneAction(_:))) - } - } - - deinit { - // Disable the keyboard manager. - enable = false - } - - // MARK: Public Methods - - /* Refreshes textField/textView position if any external changes is explicitly made by user. */ - @objc public func reloadLayoutIfNeeded() { - - guard privateIsEnabled(), - activeConfiguration.keyboardInfo.keyboardShowing, - activeConfiguration.isReady else { - return - } - adjustPosition() - } -} - -@available(iOSApplicationExtension, unavailable) -extension IQKeyboardManager: UIGestureRecognizerDelegate { - - /** Resigning on tap gesture. (Enhancement ID: #14)*/ - @objc private func tapRecognized(_ gesture: UITapGestureRecognizer) { - - if gesture.state == .ended { - - // Resigning currently responder textField. - resignFirstResponder() - } - } - - /** Note: returning YES is guaranteed to allow simultaneous recognition. - returning NO is not guaranteed to prevent simultaneous recognition, - as the other gesture's delegate may return YES. - */ - @objc public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, - shouldRecognizeSimultaneouslyWith - otherGestureRecognizer: UIGestureRecognizer) -> Bool { - return false - } - - /** - To not detect touch events in a subclass of UIControl, - these may have added their own selector for specific work - */ - @objc public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, - shouldReceive touch: UITouch) -> Bool { - // (Bug ID: #145) - // Should not recognize gesture if the clicked view is either UIControl or UINavigationBar(<Back button etc...) - - for ignoreClass in touchResignedGestureIgnoreClasses where touch.view?.isKind(of: ignoreClass) ?? false { - return false - } - - return true - } - -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManagerCompatible/IQKeyboardManagerCompatible.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManagerCompatible/IQKeyboardManagerCompatible.swift deleted file mode 100644 index d4bad3c..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManagerCompatible/IQKeyboardManagerCompatible.swift +++ /dev/null @@ -1,59 +0,0 @@ -// -// IQKeyboardManagerCompatible.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import Foundation - -/// Wrapper for IQKeyboardManager compatible types. This type provides an extension point for -/// convenience methods in IQKeyboardManager. -@available(iOSApplicationExtension, unavailable) -public struct IQKeyboardManagerWrapper<Base> { - public let base: Base - public init(_ base: Base) { - self.base = base - } -} - -// swiftlint:disable identifier_name -/// Represents an object type that is compatible with IQKeyboardManager. You can use `iq` property to get a -/// value in the namespace of IQKeyboardManager. -@available(iOSApplicationExtension, unavailable) -public protocol IQKeyboardManagerCompatible { - /// Type being extended. - associatedtype Base - - /// Instance IQKeyboardManager extension point. - var iq: IQKeyboardManagerWrapper<Base> { get set } -} - -// swiftlint:disable unused_setter_value -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManagerCompatible { - - /// Instance IQKeyboardManager extension point. - var iq: IQKeyboardManagerWrapper<Self> { - get { IQKeyboardManagerWrapper(self) } - set {} - } -} -// swiftlint:enable unused_setter_value -// swiftlint:enable identifier_name diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQPlaceholderable.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQPlaceholderable.swift deleted file mode 100644 index e8f7188..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQPlaceholderable.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// IQPlaceholderable.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import Foundation -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -public protocol IQPlaceholderable: AnyObject { - - var placeholder: String? { get set } - var attributedPlaceholder: NSAttributedString? { get set } -} - -@available(iOSApplicationExtension, unavailable) -extension UITextField: IQPlaceholderable { } - -@available(iOSApplicationExtension, unavailable) -extension IQTextView: IQPlaceholderable { } diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQTextView.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQTextView.swift deleted file mode 100644 index b4e5216..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQTextView.swift +++ /dev/null @@ -1,208 +0,0 @@ -// -// IQTextView.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -/** @abstract UITextView with placeholder support */ -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc open class IQTextView: UITextView { - - @objc required public init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - NotificationCenter.default.addObserver(self, selector: #selector(self.refreshPlaceholder), - name: UITextView.textDidChangeNotification, object: self) - } - - @objc override public init(frame: CGRect, textContainer: NSTextContainer?) { - super.init(frame: frame, textContainer: textContainer) - NotificationCenter.default.addObserver(self, selector: #selector(self.refreshPlaceholder), - name: UITextView.textDidChangeNotification, object: self) - } - - @objc override open func awakeFromNib() { - super.awakeFromNib() - NotificationCenter.default.addObserver(self, selector: #selector(self.refreshPlaceholder), - name: UITextView.textDidChangeNotification, object: self) - } - - private var placeholderInsets: UIEdgeInsets { - let top: CGFloat = self.textContainerInset.top - let left: CGFloat = self.textContainerInset.left + self.textContainer.lineFragmentPadding - let bottom: CGFloat = self.textContainerInset.bottom - let right: CGFloat = self.textContainerInset.right + self.textContainer.lineFragmentPadding - return UIEdgeInsets(top: top, left: left, bottom: bottom, right: right) - } - - private var placeholderExpectedFrame: CGRect { - let insets: UIEdgeInsets = self.placeholderInsets - let maxWidth: CGFloat = self.frame.width-insets.left-insets.right - let size: CGSize = CGSize(width: maxWidth, height: self.frame.height-insets.top-insets.bottom) - let expectedSize: CGSize = placeholderLabel.sizeThatFits(size) - - return CGRect(x: insets.left, y: insets.top, width: maxWidth, height: expectedSize.height) - } - - lazy var placeholderLabel: UILabel = { - let label = UILabel() - - label.autoresizingMask = [.flexibleWidth, .flexibleHeight] - label.lineBreakMode = .byWordWrapping - label.numberOfLines = 0 - label.font = self.font - label.textAlignment = self.textAlignment - label.backgroundColor = UIColor.clear - label.isAccessibilityElement = false - label.textColor = UIColor.placeholderText - label.alpha = 0 - self.addSubview(label) - - return label - }() - - /** @abstract To set textView's placeholder text color. */ - @IBInspectable open var placeholderTextColor: UIColor? { - - get { - return placeholderLabel.textColor - } - - set { - placeholderLabel.textColor = newValue - } - } - - /** @abstract To set textView's placeholder text. Default is nil. */ - @IBInspectable open var placeholder: String? { - - get { - return placeholderLabel.text - } - - set { - placeholderLabel.text = newValue - refreshPlaceholder() - } - } - - /** @abstract To set textView's placeholder attributed text. Default is nil. */ - open var attributedPlaceholder: NSAttributedString? { - get { - return placeholderLabel.attributedText - } - - set { - placeholderLabel.attributedText = newValue - refreshPlaceholder() - } - } - - @objc override open func layoutSubviews() { - super.layoutSubviews() - - placeholderLabel.frame = placeholderExpectedFrame - } - - @objc private func refreshPlaceholder() { - - let text: String = text ?? attributedText?.string ?? "" - if text.isEmpty { - placeholderLabel.alpha = 1 - } else { - placeholderLabel.alpha = 0 - } - } - - @objc override open var text: String! { - - didSet { - refreshPlaceholder() - } - } - - open override var attributedText: NSAttributedString! { - - didSet { - refreshPlaceholder() - } - } - - @objc override open var font: UIFont? { - - didSet { - - if let unwrappedFont: UIFont = font { - placeholderLabel.font = unwrappedFont - } else { - placeholderLabel.font = UIFont.systemFont(ofSize: 12) - } - } - } - - @objc override open var textAlignment: NSTextAlignment { - didSet { - placeholderLabel.textAlignment = textAlignment - } - } - - @objc override weak open var delegate: UITextViewDelegate? { - - get { - refreshPlaceholder() - return super.delegate - } - - set { - super.delegate = newValue - } - } - - @objc override open var intrinsicContentSize: CGSize { - guard !hasText else { - return super.intrinsicContentSize - } - - var newSize: CGSize = super.intrinsicContentSize - let placeholderInsets: UIEdgeInsets = self.placeholderInsets - newSize.height = placeholderExpectedFrame.height + placeholderInsets.top + placeholderInsets.bottom - - return newSize - } - - @objc override open func caretRect(for position: UITextPosition) -> CGRect { - var originalRect = super.caretRect(for: position) - - // When placeholder is visible and text alignment is centered - if placeholderLabel.alpha == 1 && self.textAlignment == .center { - // Calculate the width of the placeholder text - let textSize = placeholderLabel.text?.size(withAttributes: [.font: placeholderLabel.font ?? UIFont.systemFont(ofSize: UIFont.systemFontSize)]) ?? .zero - // Calculate the starting x position of the centered placeholder text - let centeredTextX = (self.bounds.size.width - textSize.width) / 2 - // Update the caret position to match the starting x position of the centered text - originalRect.origin.x = centeredTextX - } - - return originalRect - } - -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift deleted file mode 100644 index 52af9cc..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift +++ /dev/null @@ -1,120 +0,0 @@ -// -// IQBarButtonItem.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc open class IQBarButtonItem: UIBarButtonItem { - - internal static let flexibleBarButtonItem: IQBarButtonItem = IQBarButtonItem(barButtonSystemItem: .flexibleSpace, - target: nil, action: nil) - - @objc public override init() { - super.init() - initialize() - } - - @objc public required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - initialize() - } - - private func initialize() { - - let states: [UIControl.State] = [.normal, .highlighted, .disabled, .focused] - - for state in states { - - setBackgroundImage(UIImage(), for: state, barMetrics: .default) - setBackgroundImage(UIImage(), for: state, style: .plain, barMetrics: .default) - setBackButtonBackgroundImage(UIImage(), for: state, barMetrics: .default) - } - - setTitlePositionAdjustment(UIOffset(), for: .default) - setBackgroundVerticalPositionAdjustment(0, for: .default) - setBackButtonBackgroundVerticalPositionAdjustment(0, for: .default) - } - - @objc override open var tintColor: UIColor? { - didSet { - - var textAttributes: [NSAttributedString.Key: Any] = [:] - textAttributes[.foregroundColor] = tintColor - - if let attributes: [NSAttributedString.Key: Any] = titleTextAttributes(for: .normal) { - for (key, value) in attributes { - textAttributes[key] = value - } - } - - setTitleTextAttributes(textAttributes, for: .normal) - } - } - - /** - Boolean to know if it's a system item or custom item, - we are having a limitation that we cannot override a designated initializer, - so we are manually setting this property once in initialization - */ - internal var isSystemItem: Bool = false - - /** - Additional target & action to do get callback action. - Note that setting custom target & selector doesn't affect native functionality, - this is just an additional target to get a callback. - - @param target Target object. - @param action Target Selector. - */ - @objc open func setTarget(_ target: AnyObject?, action: Selector?) { - if let target: AnyObject = target, let action: Selector = action { - invocation = IQInvocation(target, action) - } else { - invocation = nil - } - } - - /** - Customized Invocation to be called when button is pressed. - invocation is internally created using setTarget:action: method. - */ - @objc open var invocation: IQInvocation? { - didSet { - // We have to put this condition here because if we override this function then - // We were getting "Cannot override '_' which has been marked unavailable" in Xcode 15 - if let titleBarButton = self as? IQTitleBarButtonItem { - - if let target = invocation?.target, let action = invocation?.action { - titleBarButton.isEnabled = true - titleBarButton.titleButton?.isEnabled = true - titleBarButton.titleButton?.addTarget(target, action: action, for: .touchUpInside) - } else { - titleBarButton.isEnabled = false - titleBarButton.titleButton?.isEnabled = false - titleBarButton.titleButton?.removeTarget(nil, action: nil, for: .touchUpInside) - } - } - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift deleted file mode 100644 index 2ba446a..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift +++ /dev/null @@ -1,42 +0,0 @@ -// -// IQInvocation.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc public final class IQInvocation: NSObject { - @objc public weak var target: AnyObject? - @objc public var action: Selector - - @objc public init(_ target: AnyObject, _ action: Selector) { - self.target = target - self.action = action - } - - @objc public func invoke(from: Any) { - if let target: AnyObject = target { - UIApplication.shared.sendAction(action, to: target, from: from, for: UIEvent()) - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift deleted file mode 100644 index d841752..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// IQPreviousNextView.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc open class IQPreviousNextView: UIView { -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift deleted file mode 100644 index 9c969d3..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift +++ /dev/null @@ -1,158 +0,0 @@ -// -// IQTitleBarButtonItem.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc open class IQTitleBarButtonItem: IQBarButtonItem { - - @objc open var titleFont: UIFont? { - - didSet { - if let unwrappedFont: UIFont = titleFont { - titleButton?.titleLabel?.font = unwrappedFont - } else { - titleButton?.titleLabel?.font = UIFont.systemFont(ofSize: 13) - } - } - } - - @objc override open var title: String? { - didSet { - titleButton?.setTitle(title, for: .normal) - updateAccessibility() - } - } - - /** - titleColor to be used for displaying button text when displaying title (disabled state). - */ - @objc open var titleColor: UIColor? { - - didSet { - - if let color: UIColor = titleColor { - titleButton?.setTitleColor(color, for: .disabled) - } else { - titleButton?.setTitleColor(UIColor.lightGray, for: .disabled) - } - } - } - - /** - selectableTitleColor to be used for displaying button text when button is enabled. - */ - @objc open var selectableTitleColor: UIColor? { - - didSet { - - if let color: UIColor = selectableTitleColor { - titleButton?.setTitleColor(color, for: .normal) - } else { - titleButton?.setTitleColor(UIColor.systemBlue, for: .normal) - } - } - } - - internal var titleButton: UIButton? - private var _titleView: UIView? - - override init() { - super.init() - } - - @objc public convenience init(title: String?) { - - self.init(title: nil, style: .plain, target: nil, action: nil) - - _titleView = UIView() - _titleView?.backgroundColor = UIColor.clear - - titleButton = UIButton(type: .system) - titleButton?.isAccessibilityElement = false - titleButton?.isEnabled = false - titleButton?.titleLabel?.numberOfLines = 3 - titleButton?.setTitleColor(UIColor.lightGray, for: .disabled) - titleButton?.setTitleColor(UIColor.systemBlue, for: .normal) - titleButton?.backgroundColor = UIColor.clear - titleButton?.titleLabel?.textAlignment = .center - titleButton?.setTitle(title, for: .normal) - titleFont = UIFont.systemFont(ofSize: 13.0) - titleButton?.titleLabel?.font = self.titleFont - _titleView?.addSubview(titleButton!) - - let lowPriority: UILayoutPriority = UILayoutPriority(rawValue: UILayoutPriority.defaultLow.rawValue-1) - let highPriority: UILayoutPriority = UILayoutPriority(rawValue: UILayoutPriority.defaultHigh.rawValue-1) - - _titleView?.translatesAutoresizingMaskIntoConstraints = false - _titleView?.setContentHuggingPriority(lowPriority, for: .vertical) - _titleView?.setContentHuggingPriority(lowPriority, for: .horizontal) - _titleView?.setContentCompressionResistancePriority(highPriority, for: .vertical) - _titleView?.setContentCompressionResistancePriority(highPriority, for: .horizontal) - - titleButton?.translatesAutoresizingMaskIntoConstraints = false - titleButton?.setContentHuggingPriority(lowPriority, for: .vertical) - titleButton?.setContentHuggingPriority(lowPriority, for: .horizontal) - titleButton?.setContentCompressionResistancePriority(highPriority, for: .vertical) - titleButton?.setContentCompressionResistancePriority(highPriority, for: .horizontal) - - let top: NSLayoutConstraint = NSLayoutConstraint(item: titleButton!, attribute: .top, - relatedBy: .equal, - toItem: _titleView, attribute: .top, - multiplier: 1, constant: 0) - let bottom: NSLayoutConstraint = NSLayoutConstraint(item: titleButton!, attribute: .bottom, - relatedBy: .equal, - toItem: _titleView, attribute: .bottom, - multiplier: 1, constant: 0) - let leading: NSLayoutConstraint = NSLayoutConstraint(item: titleButton!, attribute: .leading, - relatedBy: .equal, - toItem: _titleView, attribute: .leading, - multiplier: 1, constant: 0) - let trailing: NSLayoutConstraint = NSLayoutConstraint(item: titleButton!, attribute: .trailing, - relatedBy: .equal, - toItem: _titleView, attribute: .trailing, - multiplier: 1, constant: 0) - - _titleView?.addConstraints([top, bottom, leading, trailing]) - - customView = _titleView - } - - @objc required public init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - } - - private func updateAccessibility() { - if title == nil || title?.isEmpty == true { - isAccessibilityElement = false - accessibilityTraits = .none - } else if titleButton?.isEnabled == true { - isAccessibilityElement = true - accessibilityTraits = .button - } else { - isAccessibilityElement = true - accessibilityTraits = .staticText - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift deleted file mode 100644 index 65d692c..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift +++ /dev/null @@ -1,181 +0,0 @@ -// -// IQToolbar.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -/** @abstract IQToolbar for IQKeyboardManager. */ -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc open class IQToolbar: UIToolbar, UIInputViewAudioFeedback { - - override init(frame: CGRect) { - super.init(frame: frame) - - initialize() - } - - @objc required public init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - - initialize() - } - - private func initialize() { - - sizeToFit() - - autoresizingMask = .flexibleWidth - self.isTranslucent = true - self.barTintColor = nil - - let positions: [UIBarPosition] = [.any, .bottom, .top, .topAttached] - - for position in positions { - - self.setBackgroundImage(nil, forToolbarPosition: position, barMetrics: .default) - self.setShadowImage(nil, forToolbarPosition: .any) - } - - // Background color - self.backgroundColor = nil - } - - /** - Additional bar buttons to show at the leading side. - */ - open var additionalLeadingItems: [UIBarButtonItem] = [] - - /** - Additional bar buttons to show at the trailing side. - */ - open var additionalTrailingItems: [UIBarButtonItem] = [] - - /** - Previous bar button of toolbar. - */ - private var privatePreviousBarButton: IQBarButtonItem? - @objc open var previousBarButton: IQBarButtonItem { - get { - if privatePreviousBarButton == nil { - privatePreviousBarButton = IQBarButtonItem(image: nil, style: .plain, target: nil, action: nil) - } - return privatePreviousBarButton! - } - - set (newValue) { - privatePreviousBarButton = newValue - } - } - - /** - Next bar button of toolbar. - */ - private var privateNextBarButton: IQBarButtonItem? - @objc open var nextBarButton: IQBarButtonItem { - get { - if privateNextBarButton == nil { - privateNextBarButton = IQBarButtonItem(image: nil, style: .plain, target: nil, action: nil) - } - return privateNextBarButton! - } - - set (newValue) { - privateNextBarButton = newValue - } - } - - /** - Title bar button of toolbar. - */ - private var privateTitleBarButton: IQTitleBarButtonItem? - @objc open var titleBarButton: IQTitleBarButtonItem { - get { - if privateTitleBarButton == nil { - privateTitleBarButton = IQTitleBarButtonItem(title: nil) - } - return privateTitleBarButton! - } - - set (newValue) { - privateTitleBarButton = newValue - } - } - - /** - Done bar button of toolbar. - */ - private var privateDoneBarButton: IQBarButtonItem? - @objc open var doneBarButton: IQBarButtonItem { - get { - if privateDoneBarButton == nil { - privateDoneBarButton = IQBarButtonItem(title: nil, style: .done, target: nil, action: nil) - } - return privateDoneBarButton! - } - - set (newValue) { - privateDoneBarButton = newValue - } - } - - /** - Fixed space bar button of toolbar. - */ - private var privateFixedSpaceBarButton: IQBarButtonItem? - @objc open var fixedSpaceBarButton: IQBarButtonItem { - get { - if privateFixedSpaceBarButton == nil { - privateFixedSpaceBarButton = IQBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil) - } - privateFixedSpaceBarButton?.isSystemItem = true - privateFixedSpaceBarButton?.width = 6 - - return privateFixedSpaceBarButton! - } - - set (newValue) { - privateFixedSpaceBarButton = newValue - } - } - - @objc override open func sizeThatFits(_ size: CGSize) -> CGSize { - var sizeThatFit: CGSize = super.sizeThatFits(size) - sizeThatFit.height = 44 - return sizeThatFit - } - - @objc override open var tintColor: UIColor! { - - didSet { - if let unwrappedItems: [UIBarButtonItem] = items { - for item in unwrappedItems { - item.tintColor = tintColor - } - } - } - } - - @objc open var enableInputClicksWhenVisible: Bool { - return true - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift deleted file mode 100644 index b9ae6b1..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift +++ /dev/null @@ -1,319 +0,0 @@ -// -// IQUIView+IQKeyboardToolbar.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -private struct AssociatedKeys { - static var toolbar: Int = 0 - static var hidePlaceholder: Int = 0 - static var placeholder: Int = 0 -} - -@available(iOSApplicationExtension, unavailable) -@MainActor -public extension IQKeyboardManagerWrapper where Base: UIView { - - // MARK: Toolbar - - /** - IQToolbar references for better customization control. - */ - var toolbar: IQToolbar { - var toolbar: IQToolbar? = base.inputAccessoryView as? IQToolbar - - if toolbar == nil { - toolbar = objc_getAssociatedObject(base, &AssociatedKeys.toolbar) as? IQToolbar - } - - if let unwrappedToolbar: IQToolbar = toolbar { - return unwrappedToolbar - } else { - - let width: CGFloat = base.window?.windowScene?.screen.bounds.width ?? 0 - - let frame = CGRect(origin: .zero, size: .init(width: width, height: 44)) - let newToolbar = IQToolbar(frame: frame) - - objc_setAssociatedObject(base, &AssociatedKeys.toolbar, newToolbar, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - - return newToolbar - } - } - - // MARK: Toolbar title - - /** - If `hideToolbarPlaceholder` is YES, then title will not be added to the toolbar. Default to NO. - */ - var hidePlaceholder: Bool { - get { - return objc_getAssociatedObject(base, &AssociatedKeys.hidePlaceholder) as? Bool ?? false - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.hidePlaceholder, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - toolbar.titleBarButton.title = drawingPlaceholder - } - } - - /** - `toolbarPlaceholder` to override default `placeholder` text when drawing text on toolbar. - */ - var placeholder: String? { - get { - return objc_getAssociatedObject(base, &AssociatedKeys.placeholder) as? String - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.placeholder, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - toolbar.titleBarButton.title = drawingPlaceholder - } - } - - /** - `drawingToolbarPlaceholder` will be actual text used to draw on toolbar. - This would either `placeholder` or `toolbarPlaceholder`. - */ - var drawingPlaceholder: String? { - - if hidePlaceholder { - return nil - } else if placeholder?.isEmpty == false { - return placeholder - } else if let placeholderable: IQPlaceholderable = base as? IQPlaceholderable { - - if let placeholder = placeholderable.attributedPlaceholder?.string, - !placeholder.isEmpty { - return placeholder - } else if let placeholder = placeholderable.placeholder { - return placeholder - } else { - return nil - } - } else { - return nil - } - } - - // MARK: Common - - // swiftlint:disable cyclomatic_complexity - // swiftlint:disable function_body_length - func addToolbar(target: AnyObject?, - previousConfiguration: IQBarButtonItemConfiguration? = nil, - nextConfiguration: IQBarButtonItemConfiguration? = nil, - rightConfiguration: IQBarButtonItemConfiguration? = nil, - title: String?, - titleAccessibilityLabel: String? = nil) { - - // If can't set InputAccessoryView. Then return - if base.responds(to: #selector(setter: UITextField.inputAccessoryView)) { - - // Creating a toolBar for phoneNumber keyboard - let toolbar: IQToolbar = toolbar - - var items: [UIBarButtonItem] = [] - - if let previousConfiguration: IQBarButtonItemConfiguration = previousConfiguration { - - let prev: IQBarButtonItem = previousConfiguration.apply(on: toolbar.previousBarButton, target: target) - toolbar.previousBarButton = prev - items.append(prev) - } - - if previousConfiguration != nil, nextConfiguration != nil { - - items.append(toolbar.fixedSpaceBarButton) - } - - if let nextConfiguration: IQBarButtonItemConfiguration = nextConfiguration { - - let next: IQBarButtonItem = nextConfiguration.apply(on: toolbar.nextBarButton, target: target) - toolbar.nextBarButton = next - items.append(next) - } - - if !toolbar.additionalLeadingItems.isEmpty { - items.append(contentsOf: toolbar.additionalLeadingItems) - } - - // Title bar button item - do { - // Flexible space - items.append(IQBarButtonItem.flexibleBarButtonItem) - - // Title button - toolbar.titleBarButton.title = title - toolbar.titleBarButton.accessibilityLabel = titleAccessibilityLabel - toolbar.titleBarButton.accessibilityIdentifier = titleAccessibilityLabel - - toolbar.titleBarButton.customView?.frame = .zero - - items.append(toolbar.titleBarButton) - - // Flexible space - items.append(IQBarButtonItem.flexibleBarButtonItem) - } - - if !toolbar.additionalTrailingItems.isEmpty { - items.append(contentsOf: toolbar.additionalTrailingItems) - } - - if let rightConfiguration: IQBarButtonItemConfiguration = rightConfiguration { - - let done: IQBarButtonItem = rightConfiguration.apply(on: toolbar.doneBarButton, target: target) - toolbar.doneBarButton = done - items.append(done) - } - - // Adding button to toolBar. - toolbar.items = items - - if let textInput: UITextInput = base as? UITextInput { - switch textInput.keyboardAppearance { - case .dark?: - toolbar.barStyle = .black - default: - toolbar.barStyle = .default - } - } - - // Setting toolbar to keyboard. - let reloadInputViews: Bool = base.inputAccessoryView != toolbar - if reloadInputViews { - if let textField: UITextField = base as? UITextField { - textField.inputAccessoryView = toolbar - } else if let textView: UITextView = base as? UITextView { - textView.inputAccessoryView = toolbar - } - base.reloadInputViews() - } - } - } - // swiftlint:enable function_body_length - // swiftlint:enable cyclomatic_complexity - - // MARK: Right - func addDone(target: AnyObject?, - action: Selector, - showPlaceholder: Bool = false, titleAccessibilityLabel: String? = nil) { - - let title: String? = showPlaceholder ? drawingPlaceholder : nil - - addDone(target: target, action: action, - title: title, titleAccessibilityLabel: titleAccessibilityLabel) - } - - func addDone(target: AnyObject?, - action: Selector, - title: String?, titleAccessibilityLabel: String? = nil) { - - let rightConfiguration = IQBarButtonItemConfiguration(systemItem: .done, action: action) - - addToolbar(target: target, rightConfiguration: rightConfiguration, - title: title, titleAccessibilityLabel: titleAccessibilityLabel) - } - - func addRightButton(target: AnyObject?, - configuration: IQBarButtonItemConfiguration, - showPlaceholder: Bool = false, titleAccessibilityLabel: String? = nil) { - let title: String? = showPlaceholder ? drawingPlaceholder : nil - addRightButton(target: target, configuration: configuration, title: title, - titleAccessibilityLabel: titleAccessibilityLabel) - } - - func addRightButton(target: AnyObject?, - configuration: IQBarButtonItemConfiguration, - title: String?, titleAccessibilityLabel: String? = nil) { - addToolbar(target: target, rightConfiguration: configuration, title: title, - titleAccessibilityLabel: titleAccessibilityLabel) - } - - // MARK: Right/Left - func addRightLeft(target: AnyObject?, - rightConfiguration: IQBarButtonItemConfiguration, leftConfiguration: IQBarButtonItemConfiguration, - showPlaceholder: Bool = false, titleAccessibilityLabel: String? = nil) { - let title: String? = showPlaceholder ? drawingPlaceholder : nil - addRightLeft(target: target, - rightConfiguration: rightConfiguration, leftConfiguration: leftConfiguration, - title: title, titleAccessibilityLabel: titleAccessibilityLabel) - } - - func addRightLeft(target: AnyObject?, - rightConfiguration: IQBarButtonItemConfiguration, leftConfiguration: IQBarButtonItemConfiguration, - title: String?, titleAccessibilityLabel: String? = nil) { - addToolbar(target: target, - previousConfiguration: leftConfiguration, rightConfiguration: rightConfiguration, - title: title, titleAccessibilityLabel: titleAccessibilityLabel) - } - - // MARK: Previous/Next/Right - - func addPreviousNextRight(target: AnyObject?, - previousConfiguration: IQBarButtonItemConfiguration? = nil, - nextConfiguration: IQBarButtonItemConfiguration? = nil, - rightConfiguration: IQBarButtonItemConfiguration?, - showPlaceholder: Bool = false, titleAccessibilityLabel: String? = nil) { - - let title: String? = showPlaceholder ? drawingPlaceholder : nil - addPreviousNextRight(target: target, - previousConfiguration: previousConfiguration, nextConfiguration: nextConfiguration, - rightConfiguration: rightConfiguration, - title: title, titleAccessibilityLabel: titleAccessibilityLabel) - } - - func addPreviousNextRight(target: AnyObject?, - previousConfiguration: IQBarButtonItemConfiguration? = nil, - nextConfiguration: IQBarButtonItemConfiguration? = nil, - rightConfiguration: IQBarButtonItemConfiguration?, - title: String?, titleAccessibilityLabel: String? = nil) { - - addToolbar(target: target, - previousConfiguration: previousConfiguration, nextConfiguration: nextConfiguration, - rightConfiguration: rightConfiguration, - title: title, titleAccessibilityLabel: titleAccessibilityLabel) - } - - func addPreviousNextDone(target: AnyObject?, previousAction: Selector, nextAction: Selector, doneAction: Selector, - showPlaceholder: Bool = false, titleAccessibilityLabel: String? = nil) { - let title: String? = showPlaceholder ? drawingPlaceholder : nil - addPreviousNextDone(target: target, previousAction: previousAction, nextAction: nextAction, - doneAction: doneAction, - title: title, titleAccessibilityLabel: titleAccessibilityLabel) - } - - func addPreviousNextDone(target: AnyObject?, - previousAction: Selector, nextAction: Selector, doneAction: Selector, - title: String?, titleAccessibilityLabel: String? = nil) { - - let previousConfiguration = IQBarButtonItemConfiguration(image: UIImage.keyboardPreviousImage, - action: previousAction) - let nextConfiguration = IQBarButtonItemConfiguration(image: UIImage.keyboardNextImage, action: nextAction) - let rightConfiguration = IQBarButtonItemConfiguration(systemItem: .done, action: doneAction) - - addToolbar(target: target, previousConfiguration: previousConfiguration, - nextConfiguration: nextConfiguration, rightConfiguration: rightConfiguration, - title: title, titleAccessibilityLabel: titleAccessibilityLabel) - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbarDeprecated.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbarDeprecated.swift deleted file mode 100644 index 9437935..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbarDeprecated.swift +++ /dev/null @@ -1,228 +0,0 @@ -// -// IQUIView+IQKeyboardToolbarDeprecated.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -// swiftlint:disable unused_setter_value -// swiftlint:disable line_length -// swiftlint:disable function_parameter_count -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc public extension UIView { - - @available(*, unavailable, renamed: "iq.toolbar") - var keyboardToolbar: IQToolbar { - get { fatalError() } - set {} - } - - @available(*, unavailable, renamed: "iq.hidePlaceholder") - var shouldHideToolbarPlaceholder: Bool { - get { false } - set {} - } - - @available(*, unavailable, renamed: "iq.placeholder") - var toolbarPlaceholder: String? { - get { nil } - set {} - } - - @available(*, unavailable, renamed: "iq.drawingPlaceholder") - var drawingToolbarPlaceholder: String? { - get { nil } - set {} - } - - @available(*, unavailable, renamed: "iq.addToolbar(target:previousConfiguration:nextConfiguration:rightConfiguration:title:titleAccessibilityLabel:)") - func addKeyboardToolbarWithTarget(target: AnyObject?, - titleText: String?, - titleAccessibilityLabel: String? = nil, - rightBarButtonConfiguration: IQBarButtonItemConfiguration?, - previousBarButtonConfiguration: IQBarButtonItemConfiguration? = nil, - nextBarButtonConfiguration: IQBarButtonItemConfiguration? = nil) { - } - - @available(*, unavailable, renamed: "iq.addDone(target:action:showPlaceholder:titleAccessibilityLabel:)") - func addDoneOnKeyboardWithTarget(_ target: AnyObject?, - action: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addDone(target:action:title:titleAccessibilityLabel:)") - func addDoneOnKeyboardWithTarget(_ target: AnyObject?, - action: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightButton(target:configuration:showPlaceholder:titleAccessibilityLabel:)") - func addRightButtonOnKeyboardWithImage(_ image: UIImage, - target: AnyObject?, - action: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightButton(target:configuration:title:titleAccessibilityLabel:)") - func addRightButtonOnKeyboardWithImage(_ image: UIImage, - target: AnyObject?, - action: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightButton(target:configuration:showPlaceholder:titleAccessibilityLabel:)") - func addRightButtonOnKeyboardWithText(_ text: String, - target: AnyObject?, - action: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightButton(target:configuration:title:titleAccessibilityLabel:)") - func addRightButtonOnKeyboardWithText(_ text: String, - target: AnyObject?, - action: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightLeft(target:rightConfiguration:leftConfiguration:showPlaceholder:titleAccessibilityLabel:)") - func addCancelDoneOnKeyboardWithTarget(_ target: AnyObject?, - cancelAction: Selector, - doneAction: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightLeft(target:rightConfiguration:leftConfiguration:showPlaceholder:titleAccessibilityLabel:)") - func addRightLeftOnKeyboardWithTarget(_ target: AnyObject?, - leftButtonTitle: String, - rightButtonTitle: String, - leftButtonAction: Selector, - rightButtonAction: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightLeft(target:rightConfiguration:leftConfiguration:showPlaceholder:titleAccessibilityLabel:)") - func addRightLeftOnKeyboardWithTarget(_ target: AnyObject?, - leftButtonImage: UIImage, - rightButtonImage: UIImage, - leftButtonAction: Selector, - rightButtonAction: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightLeft(target:rightConfiguration:leftConfiguration:title:titleAccessibilityLabel:)") - func addCancelDoneOnKeyboardWithTarget(_ target: AnyObject?, - cancelAction: Selector, - doneAction: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightLeft(target:rightConfiguration:leftConfiguration:title:titleAccessibilityLabel:)") - func addRightLeftOnKeyboardWithTarget(_ target: AnyObject?, - leftButtonTitle: String, - rightButtonTitle: String, - leftButtonAction: Selector, - rightButtonAction: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightLeft(target:rightConfiguration:leftConfiguration:title:titleAccessibilityLabel:)") - func addRightLeftOnKeyboardWithTarget(_ target: AnyObject?, - leftButtonImage: UIImage, - rightButtonImage: UIImage, - leftButtonAction: Selector, - rightButtonAction: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addPreviousNextDone(target:previousAction:nextAction:doneAction:showPlaceholder:titleAccessibilityLabel:)") - func addPreviousNextDone(_ target: AnyObject?, - previousAction: Selector, - nextAction: Selector, - doneAction: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addPreviousNextDone(target:previousAction:nextAction:doneAction:title:titleAccessibilityLabel:)") - func addPreviousNextDoneOnKeyboardWithTarget(_ target: AnyObject?, - previousAction: Selector, - nextAction: Selector, - doneAction: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addPreviousNextRight(target:previousConfiguration:nextConfiguration:rightConfiguration:showPlaceholder:titleAccessibilityLabel:)") - func addPreviousNextRightOnKeyboardWithTarget(_ target: AnyObject?, - rightButtonImage: UIImage, - previousAction: Selector, - nextAction: Selector, - rightButtonAction: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addPreviousNextRight(target:previousConfiguration:nextConfiguration:rightConfiguration:showPlaceholder:titleAccessibilityLabel:)") - func addPreviousNextRightOnKeyboardWithTarget(_ target: AnyObject?, - rightButtonTitle: String, - previousAction: Selector, - nextAction: Selector, - rightButtonAction: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addPreviousNextRight(target:previousConfiguration:nextConfiguration:rightConfiguration:title:titleAccessibilityLabel:)") - func addPreviousNextRightOnKeyboardWithTarget(_ target: AnyObject?, - rightButtonImage: UIImage, - previousAction: Selector, - nextAction: Selector, - rightButtonAction: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addPreviousNextRight(target:previousConfiguration:nextConfiguration:rightConfiguration:title:titleAccessibilityLabel:)") - func addPreviousNextRightOnKeyboardWithTarget(_ target: AnyObject?, - rightButtonTitle: String, - previousAction: Selector, - nextAction: Selector, - rightButtonAction: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } -} -// swiftlint:enable unused_setter_value -// swiftlint:enable line_length -// swiftlint:enable function_parameter_count diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQKeyboardListener.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQKeyboardListener.swift deleted file mode 100644 index b0e53a3..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQKeyboardListener.swift +++ /dev/null @@ -1,115 +0,0 @@ -// -// IQKeyboardListener.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -public class IQKeyboardListener { - - private var sizeObservers: [AnyHashable: SizeCompletion] = [:] - - private(set) var keyboardInfo: IQKeyboardInfo { - didSet { - if keyboardInfo != oldValue { - sendEvent() - } - } - } - - public var keyboardShowing: Bool { - keyboardInfo.keyboardShowing - } - - public var frame: CGRect { - keyboardInfo.frame - } - - public init() { - keyboardInfo = IQKeyboardInfo(notification: nil, name: .didHide) - // Registering for keyboard notification. - NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow(_:)), - name: UIResponder.keyboardWillShowNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardDidShow(_:)), - name: UIResponder.keyboardDidShowNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide(_:)), - name: UIResponder.keyboardWillHideNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardDidHide(_:)), - name: UIResponder.keyboardDidHideNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillChangeFrame(_:)), - name: UIResponder.keyboardWillChangeFrameNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardDidChangeFrame(_:)), - name: UIResponder.keyboardDidChangeFrameNotification, object: nil) - } - - @objc private func keyboardWillShow(_ notification: Notification) { - keyboardInfo = IQKeyboardInfo(notification: notification, name: .willShow) - } - - @objc private func keyboardDidShow(_ notification: Notification) { - keyboardInfo = IQKeyboardInfo(notification: notification, name: .didShow) - } - - @objc private func keyboardWillHide(_ notification: Notification?) { - keyboardInfo = IQKeyboardInfo(notification: notification, name: .willHide) - } - - @objc private func keyboardDidHide(_ notification: Notification) { - keyboardInfo = IQKeyboardInfo(notification: notification, name: .didHide) - } - - @objc private func keyboardWillChangeFrame(_ notification: Notification) { - keyboardInfo = IQKeyboardInfo(notification: notification, name: .willChangeFrame) - } - - @objc private func keyboardDidChangeFrame(_ notification: Notification) { - keyboardInfo = IQKeyboardInfo(notification: notification, name: .didChangeFrame) - } - - public func animate(alongsideTransition transition: @escaping () -> Void, completion: (() -> Void)? = nil) { - keyboardInfo.animate(alongsideTransition: transition, completion: completion) - } -} - -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardListener { - - typealias SizeCompletion = (_ name: IQKeyboardInfo.Name, _ size: CGSize) -> Void - - func registerSizeChange(identifier: AnyHashable, changeHandler: @escaping SizeCompletion) { - sizeObservers[identifier] = changeHandler - } - - func unregisterSizeChange(identifier: AnyHashable) { - sizeObservers[identifier] = nil - } - - private func sendEvent() { - - let size: CGSize = keyboardInfo.frame.size - - for block in sizeObservers.values { - block(keyboardInfo.name, size) - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQTextFieldViewListener.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQTextFieldViewListener.swift deleted file mode 100644 index 7718e81..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQTextFieldViewListener.swift +++ /dev/null @@ -1,126 +0,0 @@ -// -// IQTextFieldViewListener.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -public class IQTextFieldViewListener { - - private var textFieldViewObservers: [AnyHashable: TextFieldViewCompletion] = [:] - -#if swift(>=5.7) - private(set) var lastTextFieldViewInfo: IQTextFieldViewInfo? -#endif - - private(set) var textFieldViewInfo: IQTextFieldViewInfo? - - public var textFieldView: UIView? { - return textFieldViewInfo?.textFieldView - } - - public init() { - // Registering for keyboard notification. - NotificationCenter.default.addObserver(self, selector: #selector(self.didBeginEditing(_:)), - name: UITextField.textDidBeginEditingNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(self.didEndEditing(_:)), - name: UITextField.textDidEndEditingNotification, object: nil) - - NotificationCenter.default.addObserver(self, selector: #selector(self.didBeginEditing(_:)), - name: UITextView.textDidBeginEditingNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(self.didEndEditing(_:)), - name: UITextView.textDidEndEditingNotification, object: nil) - } - - @objc private func didBeginEditing(_ notification: Notification) { - guard let info: IQTextFieldViewInfo = IQTextFieldViewInfo(notification: notification, - name: .beginEditing) else { - return - } - -#if swift(>=5.7) - - if #available(iOS 16.0, *), - let lastTextFieldViewInfo = lastTextFieldViewInfo, - let textView: UITextView = lastTextFieldViewInfo.textFieldView as? UITextView, - textView.findInteraction?.isFindNavigatorVisible == true { - // // This means the this didBeginEditing call comes due to find interaction - textFieldViewInfo = lastTextFieldViewInfo - sendEvent(info: lastTextFieldViewInfo) - } else if textFieldViewInfo != info { - textFieldViewInfo = info - lastTextFieldViewInfo = nil - sendEvent(info: info) - } else { - lastTextFieldViewInfo = nil - } -#else - if textFieldViewInfo != info { - textFieldViewInfo = info - sendEvent(info: info) - } -#endif - } - - @objc private func didEndEditing(_ notification: Notification) { - guard let info: IQTextFieldViewInfo = IQTextFieldViewInfo(notification: notification, name: .endEditing) else { - return - } - - if textFieldViewInfo != info { -#if swift(>=5.7) - if #available(iOS 16.0, *), - let textView: UITextView = info.textFieldView as? UITextView, - textView.isFindInteractionEnabled { - lastTextFieldViewInfo = textFieldViewInfo - } else { - lastTextFieldViewInfo = nil - } -#endif - textFieldViewInfo = info - sendEvent(info: info) - textFieldViewInfo = nil - } - } -} - -@available(iOSApplicationExtension, unavailable) -public extension IQTextFieldViewListener { - - typealias TextFieldViewCompletion = (_ info: IQTextFieldViewInfo) -> Void - - func registerTextFieldViewChange(identifier: AnyHashable, changeHandler: @escaping TextFieldViewCompletion) { - textFieldViewObservers[identifier] = changeHandler - } - - func unregisterSizeChange(identifier: AnyHashable) { - textFieldViewObservers[identifier] = nil - } - - private func sendEvent(info: IQTextFieldViewInfo) { - - for block in textFieldViewObservers.values { - block(info) - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQKeyboardInfo.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQKeyboardInfo.swift deleted file mode 100644 index b06a473..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQKeyboardInfo.swift +++ /dev/null @@ -1,135 +0,0 @@ -// -// IQKeyboardInfo.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -public struct IQKeyboardInfo: Equatable { - nonisolated public static func == (lhs: Self, rhs: Self) -> Bool { - lhs.frame.equalTo(rhs.frame) - } - - @objc public enum Name: Int { - case willShow - case didShow - case willHide - case didHide - case willChangeFrame - case didChangeFrame - } - - public let name: Name - - /** To save keyboard frame. */ - public let frame: CGRect - - /** To save keyboard animation duration. */ - public let animationDuration: TimeInterval - - /** To mimic the keyboard animation */ - public let animationCurve: UIView.AnimationCurve - - public var keyboardShowing: Bool { - frame.height > 0 - } - - public init(notification: Notification?, name: Name) { - self.name = name - - let screenBounds: CGRect - if let screen: UIScreen = notification?.object as? UIScreen { - screenBounds = screen.bounds - } else { - screenBounds = UIScreen.main.bounds - } - - if let info: [AnyHashable: Any] = notification?.userInfo { - - // Getting keyboard animation. - if let curveValue: Int = info[UIResponder.keyboardAnimationCurveUserInfoKey] as? Int, - let curve: UIView.AnimationCurve = UIView.AnimationCurve(rawValue: curveValue) { - animationCurve = curve - } else { - animationCurve = .easeOut - } - - // Getting keyboard animation duration - if let duration: TimeInterval = info[UIResponder.keyboardAnimationDurationUserInfoKey] as? TimeInterval, - duration != 0.0 { - animationDuration = duration - } else { - animationDuration = 0.25 - } - - // Getting UIKeyboardSize. - if var kbFrame: CGRect = info[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect { - - // If this is floating keyboard - if kbFrame.width < screenBounds.width, - kbFrame.maxY < screenBounds.height { - kbFrame.size = CGSize(width: kbFrame.size.width, height: 0) - } else { - // (Bug ID: #469) (Bug ID: #381) (Bug ID: #1506) - // Calculating actual keyboard covered size respect to window, - // keyboard frame may be different when hardware keyboard is attached - let keyboardHeight = CGFloat.maximum(screenBounds.height - kbFrame.minY, 0) - kbFrame.size = CGSize(width: kbFrame.size.width, height: keyboardHeight) - } - - frame = kbFrame - } else { - frame = CGRect(x: 0, y: screenBounds.height, width: screenBounds.width, height: 0) - } - } else { - animationCurve = .easeOut - animationDuration = 0.25 - frame = CGRect(x: 0, y: screenBounds.height, width: screenBounds.width, height: 0) - } - } - - public func animate(alongsideTransition transition: @escaping () -> Void, completion: (() -> Void)? = nil) { - -// if let timing = UIView.AnimationCurve.RawValue(exactly: animationCurve.rawValue), -// let curve = UIView.AnimationCurve(rawValue: timing) { -// let animator = UIViewPropertyAnimator(duration: animationDuration, curve: curve) { -// transition() -// } -// animator.addCompletion { _ in -// completion?() -// } -// animator.isUserInteractionEnabled = true -// animator.startAnimation() -// } else { - var animationOptions: UIView.AnimationOptions = .init(rawValue: UInt(animationCurve.rawValue << 16)) - animationOptions.formUnion(.allowUserInteraction) - animationOptions.formUnion(.beginFromCurrentState) - UIView.animate(withDuration: animationDuration, delay: 0, - options: animationOptions, - animations: transition, - completion: { _ in - completion?() - }) -// } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQTextFieldViewInfo.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQTextFieldViewInfo.swift deleted file mode 100644 index eb0eaf6..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQTextFieldViewInfo.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// IQTextFieldViewInfo.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -public struct IQTextFieldViewInfo: Equatable { - - nonisolated public static func == (lhs: Self, rhs: Self) -> Bool { - return lhs.textFieldView == rhs.textFieldView && - lhs.name == rhs.name - } - - @MainActor - @objc public enum Name: Int { - case beginEditing - case endEditing - } - - public let name: Name - - public let textFieldView: UIView - - public init?(notification: Notification?, name: Name) { - guard let view: UIView = notification?.object as? UIView else { - return nil - } - - guard !view.iq.isAlertViewTextField() else { - return nil - } - - self.name = name - textFieldView = view - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/PrivacyInfo.xcprivacy b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/PrivacyInfo.xcprivacy deleted file mode 100644 index 9021190..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/PrivacyInfo.xcprivacy +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>NSPrivacyAccessedAPITypes</key> - <array/> - <key>NSPrivacyTrackingDomains</key> - <array/> - <key>NSPrivacyCollectedDataTypes</key> - <array/> - <key>NSPrivacyTracking</key> - <false/> -</dict> -</plist> diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextFieldDelegate.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextFieldDelegate.swift deleted file mode 100644 index 8cc195f..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextFieldDelegate.swift +++ /dev/null @@ -1,154 +0,0 @@ -// -// IQKeyboardReturnKeyHandler+TextFieldDelegate.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -// MARK: UITextFieldDelegate -@available(iOSApplicationExtension, unavailable) -extension IQKeyboardReturnKeyHandler: UITextFieldDelegate { - - @objc public func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextFieldDelegate = textFieldViewCachedInfo(textField)?.textFieldDelegate { - if unwrapDelegate.responds(to: #selector(UITextFieldDelegate.textFieldShouldBeginEditing(_:))) { - return unwrapDelegate.textFieldShouldBeginEditing?(textField) ?? false - } - } - } - - return true - } - - @objc public func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextFieldDelegate = textFieldViewCachedInfo(textField)?.textFieldDelegate { - if unwrapDelegate.responds(to: #selector(UITextFieldDelegate.textFieldShouldEndEditing(_:))) { - return unwrapDelegate.textFieldShouldEndEditing?(textField) ?? false - } - } - } - - return true - } - - @objc public func textFieldDidBeginEditing(_ textField: UITextField) { - updateReturnKeyTypeOnTextField(textField) - - var aDelegate: UITextFieldDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(textField) { - aDelegate = model.textFieldDelegate - } - } - - aDelegate?.textFieldDidBeginEditing?(textField) - } - - @objc public func textFieldDidEndEditing(_ textField: UITextField) { - - var aDelegate: UITextFieldDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(textField) { - aDelegate = model.textFieldDelegate - } - } - - aDelegate?.textFieldDidEndEditing?(textField) - } - - @objc public func textFieldDidEndEditing(_ textField: UITextField, reason: UITextField.DidEndEditingReason) { - - var aDelegate: UITextFieldDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(textField) { - aDelegate = model.textFieldDelegate - } - } - - aDelegate?.textFieldDidEndEditing?(textField, reason: reason) - } - - @objc public func textField(_ textField: UITextField, - shouldChangeCharactersIn range: NSRange, - replacementString string: String) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextFieldDelegate = textFieldViewCachedInfo(textField)?.textFieldDelegate { - let selector: Selector = #selector(UITextFieldDelegate.textField(_:shouldChangeCharactersIn: - replacementString:)) - if unwrapDelegate.responds(to: selector) { - return unwrapDelegate.textField?(textField, - shouldChangeCharactersIn: range, - replacementString: string) ?? false - } - } - } - return true - } - - @objc public func textFieldShouldClear(_ textField: UITextField) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextFieldDelegate = textFieldViewCachedInfo(textField)?.textFieldDelegate { - if unwrapDelegate.responds(to: #selector(UITextFieldDelegate.textFieldShouldClear(_:))) { - return unwrapDelegate.textFieldShouldClear?(textField) ?? false - } - } - } - - return true - } - - @objc public func textFieldShouldReturn(_ textField: UITextField) -> Bool { - - var isReturn: Bool = true - - if delegate == nil { - - if let unwrapDelegate: UITextFieldDelegate = textFieldViewCachedInfo(textField)?.textFieldDelegate { - if unwrapDelegate.responds(to: #selector(UITextFieldDelegate.textFieldShouldReturn(_:))) { - isReturn = unwrapDelegate.textFieldShouldReturn?(textField) ?? false - } - } - } - - if isReturn { - goToNextResponderOrResign(textField) - return true - } else { - return goToNextResponderOrResign(textField) - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextViewDelegate.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextViewDelegate.swift deleted file mode 100644 index 6519cc3..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextViewDelegate.swift +++ /dev/null @@ -1,347 +0,0 @@ -// -// IQKeyboardReturnKeyHandler+TextViewDelegate.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -// MARK: UITextViewDelegate -@available(iOSApplicationExtension, unavailable) -extension IQKeyboardReturnKeyHandler: UITextViewDelegate { - - @objc public func textViewShouldBeginEditing(_ textView: UITextView) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextViewDelegate = textFieldViewCachedInfo(textView)?.textViewDelegate { - if unwrapDelegate.responds(to: #selector(UITextViewDelegate.textViewShouldBeginEditing(_:))) { - return unwrapDelegate.textViewShouldBeginEditing?(textView) ?? false - } - } - } - - return true - } - - @objc public func textViewShouldEndEditing(_ textView: UITextView) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextViewDelegate = textFieldViewCachedInfo(textView)?.textViewDelegate { - if unwrapDelegate.responds(to: #selector(UITextViewDelegate.textViewShouldEndEditing(_:))) { - return unwrapDelegate.textViewShouldEndEditing?(textView) ?? false - } - } - } - - return true - } - - @objc public func textViewDidBeginEditing(_ textView: UITextView) { - updateReturnKeyTypeOnTextField(textView) - - var aDelegate: UITextViewDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(textView) { - aDelegate = model.textViewDelegate - } - } - - aDelegate?.textViewDidBeginEditing?(textView) - } - - @objc public func textViewDidEndEditing(_ textView: UITextView) { - - var aDelegate: UITextViewDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(textView) { - aDelegate = model.textViewDelegate - } - } - - aDelegate?.textViewDidEndEditing?(textView) - } - - @objc public func textView(_ textView: UITextView, - shouldChangeTextIn range: NSRange, - replacementText text: String) -> Bool { - - var isReturn = true - - if delegate == nil { - - if let unwrapDelegate: UITextViewDelegate = textFieldViewCachedInfo(textView)?.textViewDelegate { - let selector: Selector = #selector(UITextViewDelegate.textView(_:shouldChangeTextIn:replacementText:)) - if unwrapDelegate.responds(to: selector) { - isReturn = (unwrapDelegate.textView?(textView, - shouldChangeTextIn: range, - replacementText: text)) ?? false - } - } - } - - if isReturn, text == "\n" { - isReturn = goToNextResponderOrResign(textView) - } - - return isReturn - } - - @objc public func textViewDidChange(_ textView: UITextView) { - - var aDelegate: UITextViewDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(textView) { - aDelegate = model.textViewDelegate - } - } - - aDelegate?.textViewDidChange?(textView) - } - - @objc public func textViewDidChangeSelection(_ textView: UITextView) { - - var aDelegate: UITextViewDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(textView) { - aDelegate = model.textViewDelegate - } - } - - aDelegate?.textViewDidChangeSelection?(textView) - } - - @objc public func textView(_ aTextView: UITextView, - shouldInteractWith URL: URL, - in characterRange: NSRange, - interaction: UITextItemInteraction) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextViewDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { - let selector: Selector = #selector(textView as - (UITextView, URL, NSRange, UITextItemInteraction) -> Bool) - if unwrapDelegate.responds(to: selector) { - return unwrapDelegate.textView?(aTextView, - shouldInteractWith: URL, - in: characterRange, - interaction: interaction) ?? false - } - } - } - - return true - } - - @objc public func textView(_ aTextView: UITextView, - shouldInteractWith textAttachment: NSTextAttachment, - in characterRange: NSRange, - interaction: UITextItemInteraction) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextViewDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { - let selector: Selector = #selector(textView as - (UITextView, NSTextAttachment, NSRange, UITextItemInteraction) - -> Bool) - if unwrapDelegate.responds(to: selector) { - return unwrapDelegate.textView?(aTextView, - shouldInteractWith: textAttachment, - in: characterRange, - interaction: interaction) ?? false - } - } - } - - return true - } - - @available(iOS, deprecated: 10.0) - @objc public func textView(_ aTextView: UITextView, - shouldInteractWith URL: URL, - in characterRange: NSRange) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextViewDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { - if unwrapDelegate.responds(to: #selector(textView as (UITextView, URL, NSRange) -> Bool)) { - return unwrapDelegate.textView?(aTextView, - shouldInteractWith: URL, - in: characterRange) ?? false - } - } - } - - return true - } - - @available(iOS, deprecated: 10.0) - @objc public func textView(_ aTextView: UITextView, - shouldInteractWith textAttachment: NSTextAttachment, - in characterRange: NSRange) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextViewDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { - if unwrapDelegate.responds(to: #selector(textView as (UITextView, NSTextAttachment, NSRange) -> Bool)) { - return unwrapDelegate.textView?(aTextView, - shouldInteractWith: textAttachment, - in: characterRange) ?? false - } - } - } - - return true - } -} - -#if swift(>=5.7) -@available(iOS 16.0, *) -@available(iOSApplicationExtension, unavailable) -extension IQKeyboardReturnKeyHandler { - public func textView(_ aTextView: UITextView, - editMenuForTextIn range: NSRange, - suggestedActions: [UIMenuElement]) -> UIMenu? { - if delegate == nil { - - if let unwrapDelegate: UITextViewDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { - - let selector: Selector = #selector(textView as - (UITextView, NSRange, [UIMenuElement]) -> UIMenu?) - if unwrapDelegate.responds(to: selector) { - return unwrapDelegate.textView?(aTextView, - editMenuForTextIn: range, - suggestedActions: suggestedActions) - } - } - } - - return nil - } - - public func textView(_ aTextView: UITextView, willPresentEditMenuWith animator: UIEditMenuInteractionAnimating) { - var aDelegate: UITextViewDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(aTextView) { - aDelegate = model.textViewDelegate - } - } - - aDelegate?.textView?(aTextView, willPresentEditMenuWith: animator) - } - - public func textView(_ aTextView: UITextView, willDismissEditMenuWith animator: UIEditMenuInteractionAnimating) { - var aDelegate: UITextViewDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(aTextView) { - aDelegate = model.textViewDelegate - } - } - - aDelegate?.textView?(aTextView, willDismissEditMenuWith: animator) - } -} -#endif - -#if swift(>=5.9) -@available(iOS 17.0, *) -@available(iOSApplicationExtension, unavailable) -extension IQKeyboardReturnKeyHandler { - - public func textView(_ aTextView: UITextView, - primaryActionFor textItem: UITextItem, - defaultAction: UIAction) -> UIAction? { - if delegate == nil { - - if let unwrapDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { - if unwrapDelegate.responds(to: #selector(textView as (UITextView, UITextItem, UIAction) -> UIAction?)) { - return unwrapDelegate.textView?(aTextView, - primaryActionFor: textItem, - defaultAction: defaultAction) - } - } - } - - return nil - } - - public func textView(_ aTextView: UITextView, - menuConfigurationFor textItem: UITextItem, - defaultMenu: UIMenu) -> UITextItem.MenuConfiguration? { - if delegate == nil { - - if let unwrapDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { - let selector: Selector = #selector(textView as (UITextView, UITextItem, UIMenu) - -> UITextItem.MenuConfiguration?) - if unwrapDelegate.responds(to: selector) { - return unwrapDelegate.textView?(aTextView, - menuConfigurationFor: textItem, - defaultMenu: defaultMenu) - } - } - } - - return nil - } - - public func textView(_ textView: UITextView, - textItemMenuWillDisplayFor textItem: UITextItem, - animator: UIContextMenuInteractionAnimating) { - var aDelegate: UITextViewDelegate? = delegate - - if aDelegate == nil { - - if let model = textFieldViewCachedInfo(textView) { - aDelegate = model.textViewDelegate - } - } - - aDelegate?.textView?(textView, textItemMenuWillDisplayFor: textItem, animator: animator) - } - - public func textView(_ textView: UITextView, - textItemMenuWillEndFor textItem: UITextItem, - animator: UIContextMenuInteractionAnimating) { - var aDelegate: UITextViewDelegate? = delegate - - if aDelegate == nil { - - if let model = textFieldViewCachedInfo(textView) { - aDelegate = model.textViewDelegate - } - } - - aDelegate?.textView?(textView, textItemMenuWillEndFor: textItem, animator: animator) - } -} -#endif diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler.swift deleted file mode 100644 index f1a4efe..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler.swift +++ /dev/null @@ -1,261 +0,0 @@ -// -// IQKeyboardReturnKeyHandler.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -/** -Manages the return key to work like next/done in a view hierarchy. -*/ -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc public final class IQKeyboardReturnKeyHandler: NSObject { - - // MARK: Settings - - /** - Delegate of textField/textView. - */ - @objc public weak var delegate: (UITextFieldDelegate & UITextViewDelegate)? - - /** - Set the last textfield return key type. Default is UIReturnKeyDefault. - */ - @objc public var lastTextFieldReturnKeyType: UIReturnKeyType = UIReturnKeyType.default { - - didSet { - for model in textFieldInfoCache { - if let view: UIView = model.textFieldView { - updateReturnKeyTypeOnTextField(view) - } - } - } - } - - // MARK: Initialization/De-initialization - - @objc public override init() { - super.init() - } - - /** - Add all the textFields available in UIViewController's view. - */ - @objc public init(controller: UIViewController) { - super.init() - - addResponderFromView(controller.view) - } - - deinit { - -// for model in textFieldInfoCache { -// model.restore() -// } - - textFieldInfoCache.removeAll() - } - - // MARK: Private variables - private var textFieldInfoCache: [IQTextFieldViewInfoModel] = [] - - // MARK: Private Functions - internal func textFieldViewCachedInfo(_ textField: UIView) -> IQTextFieldViewInfoModel? { - - for model in textFieldInfoCache { - - if let view: UIView = model.textFieldView { - if view == textField { - return model - } - } - } - - return nil - } - - internal func updateReturnKeyTypeOnTextField(_ view: UIView) { - var superConsideredView: UIView? - - // If find any consider responderView in it's upper hierarchy then will get deepResponderView. (Bug ID: #347) - for allowedClasse in IQKeyboardManager.shared.toolbarPreviousNextAllowedClasses { - - superConsideredView = view.iq.superviewOf(type: allowedClasse) - - if superConsideredView != nil { - break - } - } - - var textFields: [UIView] = [] - - // If there is a tableView in view's hierarchy, then fetching all it's subview that responds. - if let unwrappedTableView: UIView = superConsideredView { // (Enhancement ID: #22) - textFields = unwrappedTableView.iq.deepResponderViews() - } else { // Otherwise fetching all the siblings - - textFields = view.iq.responderSiblings() - - // Sorting textFields according to behavior - switch IQKeyboardManager.shared.toolbarConfiguration.manageBehavior { - // If needs to sort it by tag - case .byTag: textFields = textFields.sortedByTag() - // If needs to sort it by Position - case .byPosition: textFields = textFields.sortedByPosition() - default: break - } - } - - if let lastView: UIView = textFields.last { - - if let textField: UITextField = view as? UITextField { - - // If it's the last textField in responder view, else next - textField.returnKeyType = (view == lastView) ? lastTextFieldReturnKeyType: UIReturnKeyType.next - } else if let textView: UITextView = view as? UITextView { - - // If it's the last textField in responder view, else next - textView.returnKeyType = (view == lastView) ? lastTextFieldReturnKeyType: UIReturnKeyType.next - } - } - } - - // MARK: Registering/Unregistering textFieldView - - /** - Should pass UITextField/UITextView instance. Assign textFieldView delegate to self, change it's returnKeyType. - - @param view UITextField/UITextView object to register. - */ - @objc public func addTextFieldView(_ view: UIView) { - - if let textField: UITextField = view as? UITextField { - let model = IQTextFieldViewInfoModel(textField: textField) - textFieldInfoCache.append(model) - textField.delegate = self - - } else if let textView: UITextView = view as? UITextView { - let model = IQTextFieldViewInfoModel(textView: textView) - textFieldInfoCache.append(model) - textView.delegate = self - } - } - - /** - Should pass UITextField/UITextView instance. Restore it's textFieldView delegate and it's returnKeyType. - - @param view UITextField/UITextView object to unregister. - */ - @objc public func removeTextFieldView(_ view: UIView) { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(view) { - model.restore() - - if let index: Int = textFieldInfoCache.firstIndex(where: { $0.textFieldView == view}) { - textFieldInfoCache.remove(at: index) - } - } - } - - /** - Add all the UITextField/UITextView responderView's. - - @param view UIView object to register all it's responder subviews. - */ - @objc public func addResponderFromView(_ view: UIView) { - - let textFields: [UIView] = view.iq.deepResponderViews() - - for textField in textFields { - - addTextFieldView(textField) - } - } - - /** - Remove all the UITextField/UITextView responderView's. - - @param view UIView object to unregister all it's responder subviews. - */ - @objc public func removeResponderFromView(_ view: UIView) { - - let textFields: [UIView] = view.iq.deepResponderViews() - - for textField in textFields { - - removeTextFieldView(textField) - } - } - - @discardableResult - internal func goToNextResponderOrResign(_ view: UIView) -> Bool { - - var superConsideredView: UIView? - - // If find any consider responderView in it's upper hierarchy then will get deepResponderView. (Bug ID: #347) - for allowedClass in IQKeyboardManager.shared.toolbarPreviousNextAllowedClasses { - - superConsideredView = view.iq.superviewOf(type: allowedClass) - - if superConsideredView != nil { - break - } - } - - var textFields: [UIView] = [] - - // If there is a tableView in view's hierarchy, then fetching all it's subview that responds. - if let unwrappedTableView: UIView = superConsideredView { // (Enhancement ID: #22) - textFields = unwrappedTableView.iq.deepResponderViews() - } else { // Otherwise fetching all the siblings - - textFields = view.iq.responderSiblings() - - // Sorting textFields according to behavior - switch IQKeyboardManager.shared.toolbarConfiguration.manageBehavior { - // If needs to sort it by tag - case .byTag: textFields = textFields.sortedByTag() - // If needs to sort it by Position - case .byPosition: textFields = textFields.sortedByPosition() - default: - break - } - } - - // Getting index of current textField. - if let index: Int = textFields.firstIndex(of: view) { - // If it is not last textField. then it's next object becomeFirstResponder. - if index < (textFields.count - 1) { - - let nextTextField: UIView = textFields[index+1] - nextTextField.becomeFirstResponder() - return false - } else { - - view.resignFirstResponder() - return true - } - } else { - return true - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQTextFieldViewInfoModel.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQTextFieldViewInfoModel.swift deleted file mode 100644 index 562c99c..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQTextFieldViewInfoModel.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// IQTextFieldViewInfoModel.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -internal final class IQTextFieldViewInfoModel: NSObject { - - weak var textFieldDelegate: UITextFieldDelegate? - weak var textViewDelegate: UITextViewDelegate? - weak var textFieldView: UIView? - let originalReturnKeyType: UIReturnKeyType - - init(textField: UITextField) { - self.textFieldView = textField - self.textFieldDelegate = textField.delegate - self.originalReturnKeyType = textField.returnKeyType - } - - init(textView: UITextView) { - self.textFieldView = textView - self.textViewDelegate = textView.delegate - self.originalReturnKeyType = textView.returnKeyType - } - - func restore() { - if let textField = textFieldView as? UITextField { - textField.returnKeyType = originalReturnKeyType - textField.delegate = textFieldDelegate - } else if let textView = textFieldView as? UITextView { - textView.returnKeyType = originalReturnKeyType - textView.delegate = textViewDelegate - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQNSArray+Sort.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQNSArray+Sort.swift deleted file mode 100644 index 24c542a..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQNSArray+Sort.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// IQNSArray+Sort.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -/** -UIView.subviews sorting category. -*/ -@available(iOSApplicationExtension, unavailable) -@MainActor -internal extension Array where Element: UIView { - - /** - Returns the array by sorting the UIView's by their tag property. - */ - func sortedByTag() -> [Element] { - - return sorted(by: { (obj1: Element, obj2: Element) -> Bool in - - return (obj1.tag < obj2.tag) - }) - } - - /** - Returns the array by sorting the UIView's by their tag property. - */ - func sortedByPosition() -> [Element] { - - return sorted(by: { (obj1: Element, obj2: Element) -> Bool in - if obj1.frame.minY != obj2.frame.minY { - return obj1.frame.minY < obj2.frame.minY - } else { - return obj1.frame.minX < obj2.frame.minX - } - }) - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUICollectionView+Additions.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUICollectionView+Additions.swift deleted file mode 100644 index 7da92ea..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUICollectionView+Additions.swift +++ /dev/null @@ -1,48 +0,0 @@ -// -// IQUICollectionView+Additions.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -internal extension UICollectionView { - - func previousIndexPath(of indexPath: IndexPath) -> IndexPath? { - var previousRow: Int = indexPath.row - 1 - var previousSection: Int = indexPath.section - - // Fixing indexPath - if previousRow < 0 { - previousSection -= 1 - if previousSection >= 0 { - previousRow = self.numberOfItems(inSection: previousSection) - 1 - } - } - - if previousRow >= 0, previousSection >= 0 { - return IndexPath(item: previousRow, section: previousSection) - } else { - return nil - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIScrollView+Additions.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIScrollView+Additions.swift deleted file mode 100644 index 8b8753f..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIScrollView+Additions.swift +++ /dev/null @@ -1,116 +0,0 @@ -// -// IQUIScrollView+Additions.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -private struct AssociatedKeys { - static var ignoreScrollingAdjustment: Int = 0 - static var ignoreContentInsetAdjustment: Int = 0 - static var restoreContentOffset: Int = 0 -} - -// swiftlint:disable identifier_name -// swiftlint:disable unused_setter_value -@available(iOSApplicationExtension, unavailable) -extension UIScrollView: IQKeyboardManagerCompatible { - - // This property is explicitly written otherwise we were having - // compilation error when archiving - public var iq: IQKeyboardManagerWrapper<UIView> { - get { IQKeyboardManagerWrapper(self) } - set {} - } -} -// swiftlint:enable unused_setter_value -// swiftlint:enable identifier_name - -@available(iOSApplicationExtension, unavailable) -@MainActor -public extension IQKeyboardManagerWrapper where Base: UIScrollView { - - /** - If YES, then scrollview will ignore scrolling (simply not scroll it) for adjusting textfield position. - Default is NO. - */ - var ignoreScrollingAdjustment: Bool { - get { - return objc_getAssociatedObject(base, &AssociatedKeys.ignoreScrollingAdjustment) as? Bool ?? false - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.ignoreScrollingAdjustment, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - - /** - If YES, then scrollview will ignore content inset adjustment (simply not updating it) when keyboard is shown. - Default is NO. - */ - var ignoreContentInsetAdjustment: Bool { - get { - return objc_getAssociatedObject(base, &AssociatedKeys.ignoreContentInsetAdjustment) as? Bool ?? false - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.ignoreContentInsetAdjustment, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - - /** - To set customized distance from keyboard for textField/textView. Can't be less than zero - */ - var restoreContentOffset: Bool { - get { - return objc_getAssociatedObject(base, &AssociatedKeys.restoreContentOffset) as? Bool ?? false - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.restoreContentOffset, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } -} - -// swiftlint:disable unused_setter_value -@available(iOSApplicationExtension, unavailable) -@objc public extension UIScrollView { - @available(*, unavailable, renamed: "iq.ignoreScrollingAdjustment") - var shouldIgnoreScrollingAdjustment: Bool { - get { false } - set { } - } - - @available(*, unavailable, renamed: "iq.ignoreContentInsetAdjustment") - var shouldIgnoreContentInsetAdjustment: Bool { - get { false } - set { } - } - - @available(*, unavailable, renamed: "iq.restoreContentOffset") - var shouldRestoreScrollViewContentOffset: Bool { - get { false } - set { } - } -} -// swiftlint:enable unused_setter_value diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITableView+Additions.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITableView+Additions.swift deleted file mode 100644 index 022a94d..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITableView+Additions.swift +++ /dev/null @@ -1,48 +0,0 @@ -// -// IQUITableView+Additions.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -internal extension UITableView { - - func previousIndexPath(of indexPath: IndexPath) -> IndexPath? { - var previousRow: Int = indexPath.row - 1 - var previousSection: Int = indexPath.section - - // Fixing indexPath - if previousRow < 0 { - previousSection -= 1 - if previousSection >= 0 { - previousRow = self.numberOfRows(inSection: previousSection) - 1 - } - } - - if previousRow >= 0, previousSection >= 0 { - return IndexPath(row: previousRow, section: previousSection) - } else { - return nil - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITextFieldView+Additions.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITextFieldView+Additions.swift deleted file mode 100644 index d108f96..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITextFieldView+Additions.swift +++ /dev/null @@ -1,137 +0,0 @@ -// -// IQUITextFieldView+Additions.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -private struct AssociatedKeys { - static var distanceFromKeyboard: Int = 0 - static var ignoreSwitchingByNextPrevious: Int = 0 - static var enableMode: Int = 0 - static var resignOnTouchOutsideMode: Int = 0 -} - -@available(iOSApplicationExtension, unavailable) -extension UIView: IQKeyboardManagerCompatible { - - public static let defaultKeyboardDistance: CGFloat = CGFloat.greatestFiniteMagnitude -} - -@available(iOSApplicationExtension, unavailable) -@available(*, unavailable, renamed: "UIView.defaultKeyboardDistance") -public let kIQUseDefaultKeyboardDistance = CGFloat.greatestFiniteMagnitude - -/** -UIView category for managing UITextField/UITextView -*/ -@available(iOSApplicationExtension, unavailable) -@MainActor -public extension IQKeyboardManagerWrapper where Base: UIView { - - /** - To set customized distance from keyboard for textField/textView. Can't be less than zero - */ - var distanceFromKeyboard: CGFloat { - get { - if let value = objc_getAssociatedObject(base, &AssociatedKeys.distanceFromKeyboard) as? CGFloat { - return value - } else { - return UIView.defaultKeyboardDistance - } - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.distanceFromKeyboard, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - - /** - If ignoreSwitchingByNextPrevious is true then library will ignore this textField/textView - while moving to other textField/textView using keyboard toolbar next previous buttons. - Default is false - */ - var ignoreSwitchingByNextPrevious: Bool { - get { - return objc_getAssociatedObject(base, &AssociatedKeys.ignoreSwitchingByNextPrevious) as? Bool ?? false - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.ignoreSwitchingByNextPrevious, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - - /** - Override Enable/disable managing distance between keyboard and textField behavior for this particular textField. - */ - var enableMode: IQEnableMode { - get { - return objc_getAssociatedObject(base, &AssociatedKeys.enableMode) as? IQEnableMode ?? .default - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.enableMode, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - - /** - Override resigns Keyboard on touching outside of UITextField/View behavior for this particular textField. - */ - var resignOnTouchOutsideMode: IQEnableMode { - get { - return objc_getAssociatedObject(base, &AssociatedKeys.resignOnTouchOutsideMode) as? IQEnableMode ?? .default - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.resignOnTouchOutsideMode, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } -} - -// swiftlint:disable unused_setter_value -@available(iOSApplicationExtension, unavailable) -@objc public extension UIView { - @available(*, unavailable, renamed: "iq.distanceFromKeyboard") - var keyboardDistanceFromTextField: CGFloat { - get { 0 } - set { } - } - - @available(*, unavailable, renamed: "iq.ignoreSwitchingByNextPrevious") - var ignoreSwitchingByNextPrevious: Bool { - get { false } - set { } - } - - @available(*, unavailable, renamed: "iq.enableMode") - var enableMode: IQEnableMode { - get { .default } - set { } - } - - @available(*, unavailable, renamed: "iq.resignOnTouchOutsideMode") - var shouldResignOnTouchOutsideMode: IQEnableMode { - get { .default } - set { } - } -} -// swiftlint:enable unused_setter_value diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIView+Hierarchy.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIView+Hierarchy.swift deleted file mode 100644 index 907f51f..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIView+Hierarchy.swift +++ /dev/null @@ -1,354 +0,0 @@ -// -// IQUIView+Hierarchy.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -/** -UIView hierarchy category. -*/ - -@available(iOSApplicationExtension, unavailable) -@MainActor -public extension IQKeyboardManagerWrapper where Base: UIView { - - // MARK: viewControllers - - /** - Returns the UIViewController object that manages the receiver. - */ - func viewContainingController() -> UIViewController? { - - var nextResponder: UIResponder? = base - - repeat { - nextResponder = nextResponder?.next - - if let viewController: UIViewController = nextResponder as? UIViewController { - return viewController - } - - } while nextResponder != nil - - return nil - } - - /** - Returns the topMost UIViewController object in hierarchy. - */ - func topMostController() -> UIViewController? { - - var controllersHierarchy: [UIViewController] = [] - - if var topController: UIViewController = base.window?.rootViewController { - controllersHierarchy.append(topController) - - while let presented: UIViewController = topController.presentedViewController { - - topController = presented - - controllersHierarchy.append(presented) - } - - var matchController: UIResponder? = viewContainingController() - - while let mController: UIViewController = matchController as? UIViewController, - !controllersHierarchy.contains(mController) { - - repeat { - matchController = matchController?.next - - } while matchController != nil && matchController is UIViewController == false - } - - return matchController as? UIViewController - - } else { - return viewContainingController() - } - } - - /** - Returns the UIViewController object that is actually the parent of this object. - Most of the time it's the viewController object which actually contains it, - but result may be different if it's viewController is added as childViewController of another viewController. - */ - func parentContainerViewController() -> UIViewController? { - - var matchController: UIViewController? = viewContainingController() - var parentContainerViewController: UIViewController? - - if var navController: UINavigationController = matchController?.navigationController { - - while let parentNav: UINavigationController = navController.navigationController { - navController = parentNav - } - - var parentController: UIViewController = navController - - while let parent: UIViewController = parentController.parent, - !(parent is UINavigationController) && - !(parent is UITabBarController) && - !(parent is UISplitViewController) { - - parentController = parent - } - - if navController == parentController { - parentContainerViewController = navController.topViewController - } else { - parentContainerViewController = parentController - } - } else if let tabController: UITabBarController = matchController?.tabBarController { - let selectedController = tabController.selectedViewController - if let navController: UINavigationController = selectedController as? UINavigationController { - parentContainerViewController = navController.topViewController - } else { - parentContainerViewController = tabController.selectedViewController - } - } else { - while let parent: UIViewController = matchController?.parent, - !(parent is UINavigationController) && - !(parent is UITabBarController) && - !(parent is UISplitViewController) { - - matchController = parent - } - - parentContainerViewController = matchController - } - - if let controller: UIViewController = parentContainerViewController?.iq_parentContainerViewController() { - return controller - } else { - return parentContainerViewController - } - } - - // MARK: Superviews/Subviews/Siblings - - /** - Returns the superView of provided class type. - - - @param classType class type of the object which is to be search in above hierarchy and return - - @param belowView view object in upper hierarchy where method should stop searching and return nil -*/ - func superviewOf<T: UIView>(type classType: T.Type, belowView: UIView? = nil) -> T? { - - var superView: UIView? = base.superview - - while let unwrappedSuperView: UIView = superView { - - if unwrappedSuperView.isKind(of: classType) { - - // If it's UIScrollView, then validating for special cases - if unwrappedSuperView is UIScrollView { - - let classNameString: String = "\(type(of: unwrappedSuperView.self))" - - // If it's not UITableViewWrapperView class, - // this is internal class which is actually manage in UITableview. - // The speciality of this class is that it's superview is UITableView. - // If it's not UITableViewCellScrollView class, - // this is internal class which is actually manage in UITableviewCell. - // The speciality of this class is that it's superview is UITableViewCell. - // If it's not _UIQueuingScrollView class, - // actually we validate for _ prefix which usually used by Apple internal classes - if !(unwrappedSuperView.superview is UITableView), - !(unwrappedSuperView.superview is UITableViewCell), - !classNameString.hasPrefix("_") { - return superView as? T - } - } else { - return superView as? T - } - } else if unwrappedSuperView == belowView { - return nil - } - - superView = unwrappedSuperView.superview - } - - return nil - } -} - -@available(iOSApplicationExtension, unavailable) -@MainActor -internal extension IQKeyboardManagerWrapper where Base: UIView { - - /** - Returns all siblings of the receiver which canBecomeFirstResponder. - */ - func responderSiblings() -> [UIView] { - - // Array of (UITextField/UITextView's). - var tempTextFields: [UIView] = [] - - // Getting all siblings - if let siblings: [UIView] = base.superview?.subviews { - for textField in siblings { - if textField == base || !textField.iq.ignoreSwitchingByNextPrevious, - textField.iq.canBecomeFirstResponder() { - tempTextFields.append(textField) - } - } - } - - return tempTextFields - } - - /** - Returns all deep subViews of the receiver which canBecomeFirstResponder. - */ - func deepResponderViews() -> [UIView] { - - // Array of (UITextField/UITextView's). - var textfields: [UIView] = [] - - for textField in base.subviews { - - if textField == base || !textField.iq.ignoreSwitchingByNextPrevious, - textField.iq.canBecomeFirstResponder() { - textfields.append(textField) - } - // Sometimes there are hidden or disabled views and textField inside them still recorded, - // so we added some more validations here (Bug ID: #458) - // Uncommented else (Bug ID: #625) - else if textField.subviews.count != 0, base.isUserInteractionEnabled, !base.isHidden, base.alpha != 0.0 { - for deepView in textField.iq.deepResponderViews() { - textfields.append(deepView) - } - } - } - - // subviews are returning in opposite order. Sorting according the frames 'y'. - return textfields.sorted(by: { (view1: UIView, view2: UIView) -> Bool in - - let frame1: CGRect = view1.convert(view1.bounds, to: base) - let frame2: CGRect = view2.convert(view2.bounds, to: base) - - if frame1.minY != frame2.minY { - return frame1.minY < frame2.minY - } else { - return frame1.minX < frame2.minX - } - }) - } - - private func canBecomeFirstResponder() -> Bool { - - var canBecomeFirstResponder: Bool = false - - if base.conforms(to: UITextInput.self) { - // Setting toolbar to keyboard. - if let textView: UITextView = base as? UITextView { - canBecomeFirstResponder = textView.isEditable - } else if let textField: UITextField = base as? UITextField { - canBecomeFirstResponder = textField.isEnabled - } - } - - if canBecomeFirstResponder { - canBecomeFirstResponder = base.isUserInteractionEnabled && - !base.isHidden && - base.alpha != 0.0 && - !isAlertViewTextField() && - textFieldSearchBar() == nil - } - - return canBecomeFirstResponder - } - - // MARK: Special TextFields - - /** - Returns searchBar if receiver object is UISearchBarTextField, otherwise return nil. - */ - func textFieldSearchBar() -> UISearchBar? { - - var responder: UIResponder? = base.next - - while let bar: UIResponder = responder { - - if let searchBar: UISearchBar = bar as? UISearchBar { - return searchBar - } else if bar is UIViewController { - break - } - - responder = bar.next - } - - return nil - } - - /** - Returns YES if the receiver object is UIAlertSheetTextField, otherwise return NO. - */ - func isAlertViewTextField() -> Bool { - - var alertViewController: UIResponder? = viewContainingController() - - var isAlertViewTextField: Bool = false - - while let controller: UIResponder = alertViewController, !isAlertViewTextField { - - if controller is UIAlertController { - isAlertViewTextField = true - break - } - - alertViewController = controller.next - } - - return isAlertViewTextField - } - - func depth() -> Int { - var depth: Int = 0 - - if let superView: UIView = base.superview { - depth = superView.iq.depth()+1 - } - - return depth - } -} - -@available(iOSApplicationExtension, unavailable) -@objc public extension UIView { - - @available(*, unavailable, renamed: "iq.viewContainingController()") - func viewContainingController() -> UIViewController? { nil } - - @available(*, unavailable, renamed: "iq.topMostController()") - func topMostController() -> UIViewController? { nil } - - @available(*, unavailable, renamed: "iq.parentContainerViewController()") - func parentContainerViewController() -> UIViewController? { nil } - - @available(*, unavailable, renamed: "iq.superviewOf(type:belowView:)") - func superviewOfClassType(_ classType: UIView.Type, belowView: UIView? = nil) -> UIView? { nil } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIViewController+Additions.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIViewController+Additions.swift deleted file mode 100644 index 7bd0792..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIViewController+Additions.swift +++ /dev/null @@ -1,48 +0,0 @@ -// -// IQUIViewController+Additions.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc extension UIViewController { - - /** - This method is provided to override by viewController's - if the library lifts a viewController which you doesn't want to lift. - This may happen if you have implemented side menu feature - in your app and the library try to lift the side menu controller. - Overriding this method in side menu class to return correct controller should fix the problem. - */ - open func iq_parentContainerViewController() -> UIViewController? { - return self - } -} - -@available(iOSApplicationExtension, unavailable) -@objc extension UIViewController { - @available(*, unavailable, renamed: "iq_parentContainerViewController()") - open func parentIQContainerViewController() -> UIViewController? { - return self - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/UIImage+NextPrevious.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/UIImage+NextPrevious.swift deleted file mode 100644 index fe1d1a1..0000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/UIImage+NextPrevious.swift +++ /dev/null @@ -1,60 +0,0 @@ -// -// UIImage+NextPrevious.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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. - -import UIKit - -/** - UIImage category methods to get next/prev images - */ -@available(iOSApplicationExtension, unavailable) -@objc public extension UIImage { - - static let keyboardPreviousImage: UIImage = { - // swiftlint:disable line_length - let base64Data: String = "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" - // swiftlint:enable line_length - - // Support for RTL languages like Arabic, Persia etc... (Bug ID: #448) - if let data: Data = Data(base64Encoded: base64Data, options: .ignoreUnknownCharacters), - let image = UIImage(data: data, scale: 3)?.imageFlippedForRightToLeftLayoutDirection() { - return image - } - - return UIImage() - }() - - static let keyboardNextImage: UIImage = { - - // swiftlint:disable line_length - let base64Data: String = "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" - // swiftlint:enable line_length - - // Support for RTL languages like Arabic, Persia etc... (Bug ID: #448) - if let data: Data = Data(base64Encoded: base64Data, options: .ignoreUnknownCharacters), - let image = UIImage(data: data, scale: 3)?.imageFlippedForRightToLeftLayoutDirection() { - return image - } - - return UIImage() - }() -} diff --git a/Pods/IQKeyboardManagerSwift/LICENSE.md b/Pods/IQKeyboardManagerSwift/LICENSE.md deleted file mode 100644 index 0c652ed..0000000 --- a/Pods/IQKeyboardManagerSwift/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2013-2023 Iftekhar Qurashi - -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/Pods/IQKeyboardManagerSwift/README.md b/Pods/IQKeyboardManagerSwift/README.md deleted file mode 100644 index 01f6f96..0000000 --- a/Pods/IQKeyboardManagerSwift/README.md +++ /dev/null @@ -1,220 +0,0 @@ -<p align="center"> - <img src="https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/master/Demo/Resources/icon.png" alt="Icon"/> -</p> -<H1 align="center">IQKeyboardManager</H1> -<p align="center"> - <img src="https://img.shields.io/github/license/hackiftekhar/IQKeyboardManager.svg" - alt="GitHub license"/> - - -[](https://travis-ci.org/hackiftekhar/IQKeyboardManager) - - -While developing iOS apps, we often run into issues where the iPhone keyboard slides up and covers the `UITextField/UITextView`. `IQKeyboardManager` allows you to prevent this issue of keyboard sliding up and covering `UITextField/UITextView` without needing you to write any code or make any additional setup. To use `IQKeyboardManager` you simply need to add source files to your project. - - -#### Key Features - -1) `**CODELESS**, Zero Lines of Code` - -2) `Works Automatically` - -3) `No More UIScrollView` - -4) `No More Subclasses` - -5) `No More Manual Work` - -6) `No More #imports` - -`IQKeyboardManager` works on all orientations, and with the toolbar. It also has nice optional features allowing you to customize the distance from the text field, behaviour of previous, next and done buttons in the keyboard toolbar, play sound when the user navigates through the form and more. - - -## Screenshot -[](http://youtu.be/6nhLw6hju2A) -[](http://youtu.be/6nhLw6hju2A) -[](http://youtu.be/6nhLw6hju2A) -[](http://youtu.be/6nhLw6hju2A) -[](http://youtu.be/6nhLw6hju2A) - -## GIF animation -[](http://youtu.be/6nhLw6hju2A) - -## Video - -<a href="http://youtu.be/WAYc2Qj-OQg" target="_blank"><img src="http://img.youtube.com/vi/WAYc2Qj-OQg/0.jpg" -alt="IQKeyboardManager Demo Video" width="480" height="360" border="10" /></a> - -## Tutorial video by @rebeloper ([#1135](https://github.com/hackiftekhar/IQKeyboardManager/issues/1135)) - -@rebeloper demonstrated two videos on how to implement **IQKeyboardManager** at it's core: - -<a href="https://www.youtube.com/playlist?list=PL_csAAO9PQ8aTL87XnueOXi3RpWE2m_8v" target="_blank"><img src="https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/master/Screenshot/ThirdPartyYoutubeTutorial.jpg" -alt="Youtube Tutorial Playlist"/></a> - -https://www.youtube.com/playlist?list=PL_csAAO9PQ8aTL87XnueOXi3RpWE2m_8v - -## Warning - -- **If you're planning to build SDK/library/framework and want to handle UITextField/UITextView with IQKeyboardManager then you're totally going the wrong way.** I would never suggest to add **IQKeyboardManager** as **dependency/adding/shipping** with any third-party library. Instead of adding **IQKeyboardManager** you should implement your own solution to achieve same kind of results. **IQKeyboardManager** is totally designed for projects to help developers for their convenience, it's not designed for **adding/dependency/shipping** with any **third-party library**, because **doing this could block adoption by other developers for their projects as well (who are not using IQKeyboardManager and have implemented their custom solution to handle UITextField/UITextView in the project).** -- If **IQKeyboardManager** conflicts with other **third-party library**, then it's **developer responsibility** to **enable/disable IQKeyboardManager** when **presenting/dismissing** third-party library UI. Third-party libraries are not responsible to handle IQKeyboardManager. - -## Requirements -[]() - -| | Language | Minimum iOS Target | Minimum Xcode Version | -|------------------------|----------|--------------------|-----------------------| -| IQKeyboardManager | Obj-C | iOS 11.0 | Xcode 13 | -| IQKeyboardManagerSwift | Swift | iOS 13.0 | Xcode 13 | -| Demo Project | | | Xcode 15 | - -#### Swift versions support - -| Swift | Xcode | IQKeyboardManagerSwift | -|-------------------|-------|------------------------| -| 5.9, 5.8, 5.7, 5.6| 15 | >= 7.0.0 | -| 5.5, 5.4, 5.3, 5.2, 5.1, 5.0, 4.2| 11 | >= 6.5.7 | -| 5.1, 5.0, 4.2, 4.0, 3.2, 3.0| 11 | >= 6.5.0 | -| 5.0,4.2, 4.0, 3.2, 3.0| 10.2 | >= 6.2.1 | -| 4.2, 4.0, 3.2, 3.0| 10.0 | >= 6.0.4 | -| 4.0, 3.2, 3.0 | 9.0 | 5.0.0 | - -## 7.0.0 version notes -- In this major release, a lot of variables and functions have been moved here and there. We have mentioned most of the major things in the MIGRATION GUIDE. So please take a look to make changes in your project when upgrading to this version. -- The 7.0.0 version adopted the latest Swift Concurrency/Actor feature and only available iOS 13.0 and above. -- Internal keyboard management handling have been updated with a different and better approach than legacy versions. However when adopting 7.0.0, please verify if it is working as expected in your apps, if there are any serious problems with 7.0.0 please open an issue with all the details and switch back to legacy version temporarily. - -Installation -========================== - -#### Installation with CocoaPods - -[](http://cocoadocs.org/docsets/IQKeyboardManager) - -***IQKeyboardManager (Objective-C):*** IQKeyboardManager is available through [CocoaPods](http://cocoapods.org). To install -it, simply add the following line to your Podfile: ([#9](https://github.com/hackiftekhar/IQKeyboardManager/issues/9)) - -```ruby -pod 'IQKeyboardManager' #iOS13 and later -``` - -***IQKeyboardManager (Swift):*** IQKeyboardManagerSwift is available through [CocoaPods](http://cocoapods.org). To install -it, simply add the following line to your Podfile: ([#236](https://github.com/hackiftekhar/IQKeyboardManager/issues/236)) - -*Swift 5.9, 5.8, 5.7, 5.6, 5.5 (Xcode 15)* - -```ruby -pod 'IQKeyboardManagerSwift' -``` - -*Or you can choose the version you need based on Swift support table from [Requirements](README.md#requirements)* - -```ruby -pod 'IQKeyboardManagerSwift', '6.3.0' -``` - -In AppDelegate.swift, just import IQKeyboardManagerSwift framework and enable IQKeyboardManager. - -```swift -import IQKeyboardManagerSwift - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - - IQKeyboardManager.shared.enable = true - - return true - } -} -``` - -#### Installation with Carthage - -[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. - -You can install Carthage with [Homebrew](http://brew.sh/) using the following command: - -```bash -$ brew update -$ brew install carthage -``` - -To integrate `IQKeyboardManger` or `IQKeyboardManagerSwift` into your Xcode project using Carthage, add the following line to your `Cartfile`: - -```ogdl -github "hackiftekhar/IQKeyboardManager" -``` - -Run `carthage` to build the frameworks and drag the appropriate framework (`IQKeyboardManager.framework` or `IQKeyboardManagerSwift.framework`) into your Xcode project based on your need. Make sure to add only one framework and not both. - - -#### Installation with Source Code - -[]() - - - -***IQKeyboardManager (Objective-C):*** Just ***drag and drop*** `IQKeyboardManager` directory from demo project to your project. That's it. - -***IQKeyboardManager (Swift):*** ***Drag and drop*** `IQKeyboardManagerSwift` directory from demo project to your project - -In AppDelegate.swift, just enable IQKeyboardManager. - -```swift -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - - IQKeyboardManager.shared.enable = true - - return true - } -} -``` - -#### Installation with Swift Package Manager - -[Swift Package Manager(SPM)](https://swift.org/package-manager/) is Apple's dependency manager tool. It is now supported in Xcode 11. So it can be used in all appleOS types of projects. It can be used alongside other tools like CocoaPods and Carthage as well. - -To install IQKeyboardManagerSwift package via Xcode - - * Go to File -> Swift Packages -> Add Package Dependency... - * Then search for https://github.com/hackiftekhar/IQKeyboardManager.git - * And choose the version you want - -Migration Guide -========================== -- [IQKeyboardManager 6.0.0 Migration Guide](https://github.com/hackiftekhar/IQKeyboardManager/wiki/IQKeyboardManager-6.0.0-Migration-Guide) -- [IQKeyboardManager 7.0.0 Migration Guide](https://github.com/hackiftekhar/IQKeyboardManager/wiki/IQKeyboardManager-7.0.0-Migration-Guide) - -Other Links -========================== - -- [Known Issues](https://github.com/hackiftekhar/IQKeyboardManager/wiki/Known-Issues) -- [Manual Management Tweaks](https://github.com/hackiftekhar/IQKeyboardManager/wiki/Manual-Management) -- [Properties and functions usage](https://github.com/hackiftekhar/IQKeyboardManager/wiki/Properties-&-Functions) - -## Flow Diagram -[](https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/master/Screenshot/IQKeyboardManagerFlowDiagram.jpg) - -If you would like to see detailed Flow diagram then check [Detailed Flow Diagram](https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/v3.3.0/Screenshot/IQKeyboardManagerCFD.jpg). - - -LICENSE ---- -Distributed under the MIT License. - -Contributions ---- -Any contribution is more than welcome! You can contribute through pull requests and issues on GitHub. - -Author ---- -If you wish to contact me, email at: hack.iftekhar@gmail.com diff --git a/Pods/ImageViewer.swift/README.md b/Pods/ImageViewer.swift/README.md deleted file mode 100644 index 88f6bba..0000000 --- a/Pods/ImageViewer.swift/README.md +++ /dev/null @@ -1,141 +0,0 @@ -ImageViewer.swift -======================= - -An easy to use Image Viewer that is inspired by Facebook - -[](https://cocoapods.org/pods/ImageViewer.swift) -[](https://github.com/michaelhenry/ImageViewer.swift/actions) -[](https://cocoapods.org/pods/ImageViewer.swift) -[](https://cocoapods.org/pods/ImageViewer.swift) - - - - -# Supports - -- From iOS 10 -- Swift versions - - Swift 4.0 - - Swift 4.2 - - Swift 5.0 - -## Installation - -### CocoaPods - -Using [cocoapods](https://cocoapods.org) - -```ruby -pod 'ImageViewer.swift', '~> 3.0' -``` - -If you need remote image fetching: - -```ruby -pod 'ImageViewer.swift', '~> 3.0' -pod 'ImageViewer.swift/Fetcher', '~> 3.0' -``` - -### Carthage - -[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. To integrate Alamofire into your Xcode project using Carthage, specify it in your `Cartfile`: - -```ogdl -github "michaelhenry/ImageViewer.swift" ~> 3.2 -``` - -## How to use it - -The simplest way to to use this is by using the [imageView.setupImageViewer()](https://github.com/michaelhenry/MHFacebookImageViewer/blob/master/Example/Demo/BasicViewController.swift#L11) - - -```swift -imageView.setupImageViewer() -``` - -Example: - -```swift -import ImageViewer_swift - -let imageView = UIImageView() -imageView.image = UIImage(named: 'cat1') -... -imageView.setupImageViewer() -``` - -Or you might load it from a URL - -```swift -imageView.setupImageViewer(url: URL(string: "https://example.com/image.jpg")!) -``` - -Or you might load it with an array of images `[UIImage]` - -```swift -let images = [ - UIImage(named: "cat1"), - UIImage(named: "cat1"), - UIImage(named: "cat1") -] -imageView.setupImageViewer(images: images) -``` - -Or you might load it with an array of URL `[URL]` - -```swift -let urls = [ - URL(string: "https://example.com/your-image-1.jpg")!, - URL(string: "https://example.com/your-image-2.jpg")!, - URL(string: "https://example.com/your-image-3.jpg")! -] -imageView.setupImageViewer(urls: urls) -``` - -### How to change the layout or options that are available - -You can check this file [ImageViewerOption.swift](https://github.com/michaelhenry/ImageViewer.swift/blob/master/Sources/ImageViewerOption.swift) to see what are the available options that will fit to your needs. - -```swift -public enum ImageViewerOption { - case theme(ImageViewerTheme) - case closeIcon(UIImage) - case rightNavItemTitle(String, onTap: ((Int) -> Void)?) - case rightNavItemIcon(UIImage, onTap: ((Int) -> Void)?) -} -``` - - -You could also check the [Demo](Example) Project for more information. - - -### Easy peasy :) - -Please let me know if you have any questions. - -Cheers, -[Michael Henry Pantaleon](http://www.iamkel.net) - -Twitter: [@michaelhenry119](https://twitter.com/michaelhenry119) - -Linked in: [ken119](http://ph.linkedin.com/in/ken119) - -http://www.iamkel.net - - -# Dependency - -- [SDWebImage](https://github.com/SDWebImage/SDWebImage), for downloading and caching images. - - -# License - -MIT - -Copyright (c) 2013 Michael Henry Pantaleon (http://www.iamkel.net). All rights reserved. - -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/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageCarouselViewController.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageCarouselViewController.swift deleted file mode 100644 index 14ef49d..0000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageCarouselViewController.swift +++ /dev/null @@ -1,224 +0,0 @@ -import UIKit - -public protocol ImageDataSource: AnyObject { - func numberOfImages() -> Int - func imageItem(at index:Int) -> ImageItem -} - -public class ImageCarouselViewController:UIPageViewController, ImageViewerTransitionViewControllerConvertible { - - unowned var initialSourceView: UIImageView? - var sourceView: UIImageView? { - guard let vc = viewControllers?.first as? ImageViewerController else { - return nil - } - return initialIndex == vc.index ? initialSourceView : nil - } - - var targetView: UIImageView? { - guard let vc = viewControllers?.first as? ImageViewerController else { - return nil - } - return vc.imageView - } - - weak var imageDatasource:ImageDataSource? - let imageLoader:ImageLoader - - var initialIndex = 0 - - var theme:ImageViewerTheme = .light { - didSet { - navItem.leftBarButtonItem?.tintColor = theme.tintColor - backgroundView?.backgroundColor = theme.color - } - } - - var imageContentMode: UIView.ContentMode = .scaleAspectFill - var options:[ImageViewerOption] = [] - - private var onRightNavBarTapped:((Int) -> Void)? - - private(set) lazy var navBar:UINavigationBar = { - let _navBar = UINavigationBar(frame: .zero) - _navBar.isTranslucent = true - _navBar.setBackgroundImage(UIImage(), for: .default) - _navBar.shadowImage = UIImage() - return _navBar - }() - - private(set) lazy var backgroundView:UIView? = { - let _v = UIView() - _v.backgroundColor = theme.color - _v.alpha = 1.0 - return _v - }() - - private(set) lazy var navItem = UINavigationItem() - - private let imageViewerPresentationDelegate: ImageViewerTransitionPresentationManager - - public init( - sourceView:UIImageView, - imageDataSource: ImageDataSource?, - imageLoader: ImageLoader, - options:[ImageViewerOption] = [], - initialIndex:Int = 0) { - - self.initialSourceView = sourceView - self.initialIndex = initialIndex - self.options = options - self.imageDatasource = imageDataSource - self.imageLoader = imageLoader - let pageOptions = [UIPageViewController.OptionsKey.interPageSpacing: 20] - - var _imageContentMode = imageContentMode - options.forEach { - switch $0 { - case .contentMode(let contentMode): - _imageContentMode = contentMode - default: - break - } - } - imageContentMode = _imageContentMode - - self.imageViewerPresentationDelegate = ImageViewerTransitionPresentationManager(imageContentMode: imageContentMode) - super.init( - transitionStyle: .scroll, - navigationOrientation: .horizontal, - options: pageOptions) - - transitioningDelegate = imageViewerPresentationDelegate - modalPresentationStyle = .custom - modalPresentationCapturesStatusBarAppearance = true - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - private func addNavBar() { - // Add Navigation Bar - let closeBarButton = UIBarButtonItem( - title: NSLocalizedString("Close", comment: "Close button title"), - style: .plain, - target: self, - action: #selector(dismiss(_:))) - - navItem.leftBarButtonItem = closeBarButton - navItem.leftBarButtonItem?.tintColor = theme.tintColor - navBar.alpha = 0.0 - navBar.items = [navItem] - navBar.insert(to: view) - } - - private func addBackgroundView() { - guard let backgroundView = backgroundView else { return } - view.addSubview(backgroundView) - backgroundView.bindFrameToSuperview() - view.sendSubviewToBack(backgroundView) - } - - private func applyOptions() { - - options.forEach { - switch $0 { - case .theme(let theme): - self.theme = theme - case .contentMode(let contentMode): - self.imageContentMode = contentMode - case .closeIcon(let icon): - navItem.leftBarButtonItem?.image = icon - case .rightNavItemTitle(let title, let onTap): - navItem.rightBarButtonItem = UIBarButtonItem( - title: title, - style: .plain, - target: self, - action: #selector(diTapRightNavBarItem(_:))) - onRightNavBarTapped = onTap - case .rightNavItemIcon(let icon, let onTap): - navItem.rightBarButtonItem = UIBarButtonItem( - image: icon, - style: .plain, - target: self, - action: #selector(diTapRightNavBarItem(_:))) - onRightNavBarTapped = onTap - } - } - } - - override public func viewDidLoad() { - super.viewDidLoad() - - addBackgroundView() - addNavBar() - applyOptions() - - dataSource = self - - if let imageDatasource = imageDatasource { - let initialVC:ImageViewerController = .init( - index: initialIndex, - imageItem: imageDatasource.imageItem(at: initialIndex), - imageLoader: imageLoader) - setViewControllers([initialVC], direction: .forward, animated: true) - } - } - - @objc - private func dismiss(_ sender:UIBarButtonItem) { - self.dismiss(animated: true, completion: nil) - } - - deinit { - initialSourceView?.alpha = 1.0 - } - - @objc - func diTapRightNavBarItem(_ sender:UIBarButtonItem) { - guard let onTap = onRightNavBarTapped, - let _firstVC = viewControllers?.first as? ImageViewerController - else { return } - onTap(_firstVC.index) - } - - override public var preferredStatusBarStyle: UIStatusBarStyle { - if theme == .dark { - return .lightContent - } - return .default - } -} - -extension ImageCarouselViewController:UIPageViewControllerDataSource { - public func pageViewController( - _ pageViewController: UIPageViewController, - viewControllerBefore viewController: UIViewController) -> UIViewController? { - - guard let vc = viewController as? ImageViewerController else { return nil } - guard let imageDatasource = imageDatasource else { return nil } - guard vc.index > 0 else { return nil } - - let newIndex = vc.index - 1 - return ImageViewerController.init( - index: newIndex, - imageItem: imageDatasource.imageItem(at: newIndex), - imageLoader: vc.imageLoader) - } - - public func pageViewController( - _ pageViewController: UIPageViewController, - viewControllerAfter viewController: UIViewController) -> UIViewController? { - - guard let vc = viewController as? ImageViewerController else { return nil } - guard let imageDatasource = imageDatasource else { return nil } - guard vc.index <= (imageDatasource.numberOfImages() - 2) else { return nil } - - let newIndex = vc.index + 1 - return ImageViewerController.init( - index: newIndex, - imageItem: imageDatasource.imageItem(at: newIndex), - imageLoader: vc.imageLoader) - } -} diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageItem.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageItem.swift deleted file mode 100644 index ca9e1e3..0000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageItem.swift +++ /dev/null @@ -1,6 +0,0 @@ -import UIKit - -public enum ImageItem { - case image(UIImage?) - case url(URL, placeholder: UIImage?) -} diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageLoader.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageLoader.swift deleted file mode 100644 index d5b97db..0000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageLoader.swift +++ /dev/null @@ -1,46 +0,0 @@ -import Foundation -#if canImport(SDWebImage) -import SDWebImage -#endif - -public protocol ImageLoader { - func loadImage(_ url: URL, placeholder: UIImage?, imageView: UIImageView, completion: @escaping (_ image: UIImage?) -> Void) -} - -public struct URLSessionImageLoader: ImageLoader { - public init() {} - - public func loadImage(_ url: URL, placeholder: UIImage?, imageView: UIImageView, completion: @escaping (UIImage?) -> Void) { - if let placeholder = placeholder { - imageView.image = placeholder - } - - DispatchQueue.global(qos: .background).async { - guard let data = try? Data(contentsOf: url), let image = UIImage(data: data) else { - completion(nil) - return - } - - DispatchQueue.main.async { - imageView.image = image - completion(image) - } - } - } -} - -#if canImport(SDWebImage) -struct SDWebImageLoader: ImageLoader { - func loadImage(_ url: URL, placeholder: UIImage?, imageView: UIImageView, completion: @escaping (UIImage?) -> Void) { - imageView.sd_setImage( - with: url, - placeholderImage: placeholder, - options: [], - progress: nil) {(img, err, type, url) in - DispatchQueue.main.async { - completion(img) - } - } - } -} -#endif diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerController.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerController.swift deleted file mode 100644 index bad0b76..0000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerController.swift +++ /dev/null @@ -1,295 +0,0 @@ -import UIKit - -class ImageViewerController:UIViewController, -UIGestureRecognizerDelegate { - - var imageView: UIImageView = UIImageView(frame: .zero) - let imageLoader: ImageLoader - - var backgroundView:UIView? { - guard let _parent = parent as? ImageCarouselViewController - else { return nil} - return _parent.backgroundView - } - - var index:Int = 0 - var imageItem:ImageItem! - - var navBar:UINavigationBar? { - guard let _parent = parent as? ImageCarouselViewController - else { return nil} - return _parent.navBar - } - - // MARK: Layout Constraints - private var top:NSLayoutConstraint! - private var leading:NSLayoutConstraint! - private var trailing:NSLayoutConstraint! - private var bottom:NSLayoutConstraint! - - private var scrollView:UIScrollView! - - private var lastLocation:CGPoint = .zero - private var isAnimating:Bool = false - private var maxZoomScale:CGFloat = 1.0 - - init( - index: Int, - imageItem:ImageItem, - imageLoader: ImageLoader) { - - self.index = index - self.imageItem = imageItem - self.imageLoader = imageLoader - super.init(nibName: nil, bundle: nil) - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override func loadView() { - let view = UIView() - - view.backgroundColor = .clear - self.view = view - - scrollView = UIScrollView() - scrollView.delegate = self - scrollView.showsVerticalScrollIndicator = false - - if #available(iOS 11.0, *) { - scrollView.contentInsetAdjustmentBehavior = .never - } else { - // Fallback on earlier versions - } - view.addSubview(scrollView) - scrollView.bindFrameToSuperview() - scrollView.backgroundColor = .clear - scrollView.addSubview(imageView) - - imageView.translatesAutoresizingMaskIntoConstraints = false - top = imageView.topAnchor.constraint(equalTo: scrollView.topAnchor) - leading = imageView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor) - trailing = scrollView.trailingAnchor.constraint(equalTo: imageView.trailingAnchor) - bottom = scrollView.bottomAnchor.constraint(equalTo: imageView.bottomAnchor) - - top.isActive = true - leading.isActive = true - trailing.isActive = true - bottom.isActive = true - - } - - override func viewDidLoad() { - super.viewDidLoad() - - switch imageItem { - case .image(let img): - imageView.image = img - imageView.layoutIfNeeded() - case .url(let url, let placeholder): - imageLoader.loadImage(url, placeholder: placeholder, imageView: imageView) { (image) in - DispatchQueue.main.async {[weak self] in - self?.layout() - } - } - default: - break - } - - addGestureRecognizers() - } - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - self.navBar?.alpha = 1.0 - } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - self.navBar?.alpha = 0.0 - } - - override func viewWillLayoutSubviews() { - super.viewWillLayoutSubviews() - layout() - } - - private func layout() { - updateConstraintsForSize(view.bounds.size) - updateMinMaxZoomScaleForSize(view.bounds.size) - } - - // MARK: Add Gesture Recognizers - func addGestureRecognizers() { - - let panGesture = UIPanGestureRecognizer( - target: self, action: #selector(didPan(_:))) - panGesture.cancelsTouchesInView = false - panGesture.delegate = self - scrollView.addGestureRecognizer(panGesture) - - let pinchRecognizer = UITapGestureRecognizer( - target: self, action: #selector(didPinch(_:))) - pinchRecognizer.numberOfTapsRequired = 1 - pinchRecognizer.numberOfTouchesRequired = 2 - scrollView.addGestureRecognizer(pinchRecognizer) - - let singleTapGesture = UITapGestureRecognizer( - target: self, action: #selector(didSingleTap(_:))) - singleTapGesture.numberOfTapsRequired = 1 - singleTapGesture.numberOfTouchesRequired = 1 - scrollView.addGestureRecognizer(singleTapGesture) - - let doubleTapRecognizer = UITapGestureRecognizer( - target: self, action: #selector(didDoubleTap(_:))) - doubleTapRecognizer.numberOfTapsRequired = 2 - doubleTapRecognizer.numberOfTouchesRequired = 1 - scrollView.addGestureRecognizer(doubleTapRecognizer) - - singleTapGesture.require(toFail: doubleTapRecognizer) - } - - @objc - func didPan(_ gestureRecognizer: UIPanGestureRecognizer) { - guard - isAnimating == false, - scrollView.zoomScale == scrollView.minimumZoomScale - else { return } - - let container:UIView! = imageView - if gestureRecognizer.state == .began { - lastLocation = container.center - } - - if gestureRecognizer.state != .cancelled { - let translation: CGPoint = gestureRecognizer - .translation(in: view) - container.center = CGPoint( - x: lastLocation.x + translation.x, - y: lastLocation.y + translation.y) - } - - let diffY = view.center.y - container.center.y - backgroundView?.alpha = 1.0 - abs(diffY/view.center.y) - if gestureRecognizer.state == .ended { - if abs(diffY) > 60 { - dismiss(animated: true) - } else { - executeCancelAnimation() - } - } - } - - @objc - func didPinch(_ recognizer: UITapGestureRecognizer) { - var newZoomScale = scrollView.zoomScale / 1.5 - newZoomScale = max(newZoomScale, scrollView.minimumZoomScale) - scrollView.setZoomScale(newZoomScale, animated: true) - } - - @objc - func didSingleTap(_ recognizer: UITapGestureRecognizer) { - - let currentNavAlpha = self.navBar?.alpha ?? 0.0 - UIView.animate(withDuration: 0.235) { - self.navBar?.alpha = currentNavAlpha > 0.5 ? 0.0 : 1.0 - } - } - - @objc - func didDoubleTap(_ recognizer:UITapGestureRecognizer) { - let pointInView = recognizer.location(in: imageView) - zoomInOrOut(at: pointInView) - } - - func gestureRecognizerShouldBegin( - _ gestureRecognizer: UIGestureRecognizer) -> Bool { - guard scrollView.zoomScale == scrollView.minimumZoomScale, - let panGesture = gestureRecognizer as? UIPanGestureRecognizer - else { return false } - - let velocity = panGesture.velocity(in: scrollView) - return abs(velocity.y) > abs(velocity.x) - } - - -} - -// MARK: Adjusting the dimensions -extension ImageViewerController { - - func updateMinMaxZoomScaleForSize(_ size: CGSize) { - - let targetSize = imageView.bounds.size - if targetSize.width == 0 || targetSize.height == 0 { - return - } - - let minScale = min( - size.width/targetSize.width, - size.height/targetSize.height) - let maxScale = max( - (size.width + 1.0) / targetSize.width, - (size.height + 1.0) / targetSize.height) - - scrollView.minimumZoomScale = minScale - scrollView.zoomScale = minScale - maxZoomScale = maxScale - scrollView.maximumZoomScale = maxZoomScale * 1.1 - } - - - func zoomInOrOut(at point:CGPoint) { - let newZoomScale = scrollView.zoomScale == scrollView.minimumZoomScale - ? maxZoomScale : scrollView.minimumZoomScale - let size = scrollView.bounds.size - let w = size.width / newZoomScale - let h = size.height / newZoomScale - let x = point.x - (w * 0.5) - let y = point.y - (h * 0.5) - let rect = CGRect(x: x, y: y, width: w, height: h) - scrollView.zoom(to: rect, animated: true) - } - - func updateConstraintsForSize(_ size: CGSize) { - let yOffset = max(0, (size.height - imageView.frame.height) / 2) - top.constant = yOffset - bottom.constant = yOffset - - let xOffset = max(0, (size.width - imageView.frame.width) / 2) - leading.constant = xOffset - trailing.constant = xOffset - view.layoutIfNeeded() - } - -} - -// MARK: Animation Related stuff -extension ImageViewerController { - - private func executeCancelAnimation() { - self.isAnimating = true - UIView.animate( - withDuration: 0.237, - animations: { - self.imageView.center = self.view.center - self.backgroundView?.alpha = 1.0 - }) {[weak self] _ in - self?.isAnimating = false - } - } -} - -extension ImageViewerController:UIScrollViewDelegate { - - func viewForZooming(in scrollView: UIScrollView) -> UIView? { - return imageView - } - - func scrollViewDidZoom(_ scrollView: UIScrollView) { - updateConstraintsForSize(view.bounds.size) - } -} - diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerOption.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerOption.swift deleted file mode 100644 index 0921147..0000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerOption.swift +++ /dev/null @@ -1,10 +0,0 @@ -import UIKit - -public enum ImageViewerOption { - - case theme(ImageViewerTheme) - case contentMode(UIView.ContentMode) - case closeIcon(UIImage) - case rightNavItemTitle(String, onTap: ((Int) -> Void)?) - case rightNavItemIcon(UIImage, onTap: ((Int) -> Void)?) -} diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerTheme.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerTheme.swift deleted file mode 100644 index 357549d..0000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerTheme.swift +++ /dev/null @@ -1,24 +0,0 @@ -import UIKit - -public enum ImageViewerTheme { - case light - case dark - - var color:UIColor { - switch self { - case .light: - return .white - case .dark: - return .black - } - } - - var tintColor:UIColor { - switch self { - case .light: - return .black - case .dark: - return .white - } - } -} diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerTransitionPresentationManager.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerTransitionPresentationManager.swift deleted file mode 100644 index 3802e66..0000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerTransitionPresentationManager.swift +++ /dev/null @@ -1,222 +0,0 @@ -// -// ImageViewerTransitionPresentationManager.swift -// ImageViewer.swift -// -// Created by Michael Henry Pantaleon on 2020/08/19. -// - -import Foundation -import UIKit - -protocol ImageViewerTransitionViewControllerConvertible { - - // The source view - var sourceView: UIImageView? { get } - - // The final view - var targetView: UIImageView? { get } -} - -final class ImageViewerTransitionPresentationAnimator:NSObject { - - let isPresenting: Bool - let imageContentMode: UIView.ContentMode - - var observation: NSKeyValueObservation? - - init(isPresenting: Bool, imageContentMode: UIView.ContentMode) { - self.isPresenting = isPresenting - self.imageContentMode = imageContentMode - super.init() - } -} - -// MARK: - UIViewControllerAnimatedTransitioning -extension ImageViewerTransitionPresentationAnimator: UIViewControllerAnimatedTransitioning { - - func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) - -> TimeInterval { - return 0.3 - } - - func animateTransition(using transitionContext: UIViewControllerContextTransitioning) { - let key: UITransitionContextViewControllerKey = isPresenting ? .to : .from - guard let controller = transitionContext.viewController(forKey: key) - else { return } - - let animationDuration = transitionDuration(using: transitionContext) - - if isPresenting { - presentAnimation( - transitionView: transitionContext.containerView, - controller: controller, - duration: animationDuration) { finished in - transitionContext.completeTransition(finished) - } - - } else { - dismissAnimation( - transitionView: transitionContext.containerView, - controller: controller, - duration: animationDuration) { finished in - transitionContext.completeTransition(finished) - } - } - } - - private func createDummyImageView(frame: CGRect, image:UIImage? = nil) - -> UIImageView { - let dummyImageView:UIImageView = UIImageView(frame: frame) - dummyImageView.clipsToBounds = true - dummyImageView.contentMode = imageContentMode - dummyImageView.alpha = 1.0 - dummyImageView.image = image - return dummyImageView - } - - private func presentAnimation( - transitionView:UIView, - controller: UIViewController, - duration: TimeInterval, - completed: @escaping((Bool) -> Void)) { - - guard - let transitionVC = controller as? ImageViewerTransitionViewControllerConvertible, - let sourceView = transitionVC.sourceView - else { return } - - sourceView.alpha = 0.0 - controller.view.alpha = 0.0 - - transitionView.addSubview(controller.view) - transitionVC.targetView?.alpha = 0.0 - transitionVC.targetView?.tintColor = sourceView.tintColor - - let dummyImageView = createDummyImageView( - frame: sourceView.frameRelativeToWindow(), - image: sourceView.image) - dummyImageView.contentMode = .scaleAspectFit - dummyImageView.tintColor = sourceView.tintColor - transitionView.addSubview(dummyImageView) - - UIView.animate(withDuration: duration, animations: { - dummyImageView.frame = UIScreen.main.bounds - controller.view.alpha = 1.0 - }) { [weak self] finished in - self?.observation = transitionVC.targetView?.observe(\.image, options: [.new, .initial]) { img, change in - if img.image != nil { - transitionVC.targetView?.alpha = 1.0 - dummyImageView.removeFromSuperview() - completed(finished) - } - } - } - } - - private func dismissAnimation( - transitionView:UIView, - controller: UIViewController, - duration:TimeInterval, - completed: @escaping((Bool) -> Void)) { - - guard - let transitionVC = controller as? ImageViewerTransitionViewControllerConvertible - else { return } - - let sourceView = transitionVC.sourceView - let targetView = transitionVC.targetView - - let dummyImageView = createDummyImageView( - frame: targetView?.frameRelativeToWindow() ?? UIScreen.main.bounds, - image: targetView?.image) - dummyImageView.tintColor = sourceView?.tintColor - transitionView.addSubview(dummyImageView) - targetView?.isHidden = true - - controller.view.alpha = 1.0 - UIView.animate(withDuration: duration, animations: { - if let sourceView = sourceView { - // return to original position - dummyImageView.frame = sourceView.frameRelativeToWindow() - } else { - // just disappear - dummyImageView.alpha = 0.0 - } - controller.view.alpha = 0.0 - }) { finished in - sourceView?.alpha = 1.0 - controller.view.removeFromSuperview() - completed(finished) - } - } -} - -final class ImageViewerTransitionPresentationController: UIPresentationController { - - override var frameOfPresentedViewInContainerView: CGRect { - var frame: CGRect = .zero - frame.size = size(forChildContentContainer: presentedViewController, - withParentContainerSize: containerView!.bounds.size) - return frame - } - - override func containerViewWillLayoutSubviews() { - presentedView?.frame = frameOfPresentedViewInContainerView - } -} - -final class ImageViewerTransitionPresentationManager: NSObject { - private let imageContentMode: UIView.ContentMode - - public init(imageContentMode: UIView.ContentMode) { - self.imageContentMode = imageContentMode - } - -} - -// MARK: - UIViewControllerTransitioningDelegate -extension ImageViewerTransitionPresentationManager: UIViewControllerTransitioningDelegate { - func presentationController( - forPresented presented: UIViewController, - presenting: UIViewController?, - source: UIViewController - ) -> UIPresentationController? { - let presentationController = ImageViewerTransitionPresentationController( - presentedViewController: presented, - presenting: presenting) - return presentationController - } - - func animationController( - forPresented presented: UIViewController, - presenting: UIViewController, - source: UIViewController - ) -> UIViewControllerAnimatedTransitioning? { - - return ImageViewerTransitionPresentationAnimator(isPresenting: true, imageContentMode: imageContentMode) - } - - func animationController( - forDismissed dismissed: UIViewController - ) -> UIViewControllerAnimatedTransitioning? { - return ImageViewerTransitionPresentationAnimator(isPresenting: false, imageContentMode: imageContentMode) - } -} - -// MARK: - UIAdaptivePresentationControllerDelegate -extension ImageViewerTransitionPresentationManager: UIAdaptivePresentationControllerDelegate { - - func adaptivePresentationStyle( - for controller: UIPresentationController, - traitCollection: UITraitCollection - ) -> UIModalPresentationStyle { - return .none - } - - func presentationController( - _ controller: UIPresentationController, - viewControllerForAdaptivePresentationStyle style: UIModalPresentationStyle - ) -> UIViewController? { - return nil - } -} diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewer_swift.h b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewer_swift.h deleted file mode 100644 index 9f726fa..0000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewer_swift.h +++ /dev/null @@ -1,11 +0,0 @@ -#import <Foundation/Foundation.h> - -//! Project version number for ImageViewer_swift. -FOUNDATION_EXPORT double ImageViewer_swiftVersionNumber; - -//! Project version string for ImageViewer_swift. -FOUNDATION_EXPORT const unsigned char ImageViewer_swiftVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import <ImageViewer_swift/PublicHeader.h> - - diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/SimpleImageDatasource.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/SimpleImageDatasource.swift deleted file mode 100644 index c79c9a6..0000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/SimpleImageDatasource.swift +++ /dev/null @@ -1,16 +0,0 @@ -class SimpleImageDatasource:ImageDataSource { - - private(set) var imageItems:[ImageItem] - - init(imageItems: [ImageItem]) { - self.imageItems = imageItems - } - - func numberOfImages() -> Int { - return imageItems.count - } - - func imageItem(at index: Int) -> ImageItem { - return imageItems[index] - } -} diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UIImageView_Extensions.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UIImageView_Extensions.swift deleted file mode 100644 index 3d4f7fe..0000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UIImageView_Extensions.swift +++ /dev/null @@ -1,162 +0,0 @@ -import UIKit - -extension UIImageView { - - // Data holder tap recognizer - private class TapWithDataRecognizer:UITapGestureRecognizer { - weak var from:UIViewController? - var imageDatasource:ImageDataSource? - var imageLoader:ImageLoader? - var initialIndex:Int = 0 - var options:[ImageViewerOption] = [] - } - - private var vc:UIViewController? { - guard let rootVC = UIApplication.shared.keyWindow?.rootViewController - else { return nil } - return rootVC.presentedViewController != nil ? rootVC.presentedViewController : rootVC - } - - public func setupImageViewer( - options:[ImageViewerOption] = [], - from:UIViewController? = nil, - imageLoader:ImageLoader? = nil) { - setup( - datasource: SimpleImageDatasource(imageItems: [.image(image)]), - options: options, - from: from, - imageLoader: imageLoader) - } - - public func setupImageViewer( - url:URL, - initialIndex:Int = 0, - placeholder: UIImage? = nil, - options:[ImageViewerOption] = [], - from:UIViewController? = nil, - imageLoader:ImageLoader? = nil) { - - let datasource = SimpleImageDatasource( - imageItems: [url].compactMap { - ImageItem.url($0, placeholder: placeholder) - }) - setup( - datasource: datasource, - initialIndex: initialIndex, - options: options, - from: from, - imageLoader: imageLoader) - } - - public func setupImageViewer( - images:[UIImage], - initialIndex:Int = 0, - options:[ImageViewerOption] = [], - from:UIViewController? = nil, - imageLoader:ImageLoader? = nil) { - - let datasource = SimpleImageDatasource( - imageItems: images.compactMap { - ImageItem.image($0) - }) - setup( - datasource: datasource, - initialIndex: initialIndex, - options: options, - from: from, - imageLoader: imageLoader) - } - - public func setupImageViewer( - urls:[URL], - initialIndex:Int = 0, - options:[ImageViewerOption] = [], - placeholder: UIImage? = nil, - from:UIViewController? = nil, - imageLoader:ImageLoader? = nil) { - - let datasource = SimpleImageDatasource( - imageItems: urls.compactMap { - ImageItem.url($0, placeholder: placeholder) - }) - setup( - datasource: datasource, - initialIndex: initialIndex, - options: options, - from: from, - imageLoader: imageLoader) - } - - public func setupImageViewer( - datasource:ImageDataSource, - initialIndex:Int = 0, - options:[ImageViewerOption] = [], - from:UIViewController? = nil, - imageLoader:ImageLoader? = nil) { - - setup( - datasource: datasource, - initialIndex: initialIndex, - options: options, - from: from, - imageLoader: imageLoader) - } - - private func setup( - datasource:ImageDataSource?, - initialIndex:Int = 0, - options:[ImageViewerOption] = [], - from: UIViewController? = nil, - imageLoader:ImageLoader? = nil) { - - var _tapRecognizer:TapWithDataRecognizer? - gestureRecognizers?.forEach { - if let _tr = $0 as? TapWithDataRecognizer { - // if found, just use existing - _tapRecognizer = _tr - } - } - - isUserInteractionEnabled = true - - var imageContentMode: UIView.ContentMode = .scaleAspectFill - options.forEach { - switch $0 { - case .contentMode(let contentMode): - imageContentMode = contentMode - default: - break - } - } - contentMode = imageContentMode - - clipsToBounds = true - - if _tapRecognizer == nil { - _tapRecognizer = TapWithDataRecognizer( - target: self, action: #selector(showImageViewer(_:))) - _tapRecognizer!.numberOfTouchesRequired = 1 - _tapRecognizer!.numberOfTapsRequired = 1 - } - // Pass the Data - _tapRecognizer!.imageDatasource = datasource - _tapRecognizer!.imageLoader = imageLoader - _tapRecognizer!.initialIndex = initialIndex - _tapRecognizer!.options = options - _tapRecognizer!.from = from - addGestureRecognizer(_tapRecognizer!) - } - - @objc - private func showImageViewer(_ sender:TapWithDataRecognizer) { - guard let sourceView = sender.view as? UIImageView else { return } - let imageCarousel = ImageCarouselViewController.init( - sourceView: sourceView, - imageDataSource: sender.imageDatasource, - imageLoader: sender.imageLoader ?? URLSessionImageLoader(), - options: sender.options, - initialIndex: sender.initialIndex) - let presentFromVC = sender.from ?? vc - presentFromVC?.present(imageCarousel, animated: true) - } -} diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UINavigationBar_Extensions.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UINavigationBar_Extensions.swift deleted file mode 100644 index 7d1c138..0000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UINavigationBar_Extensions.swift +++ /dev/null @@ -1,19 +0,0 @@ -import UIKit - -extension UINavigationBar { - - func insert(to view: UIView) { - view.addSubview(self) - translatesAutoresizingMaskIntoConstraints = false - leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true - rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true - - if #available(iOS 11.0, *) { - topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor) - .isActive = true - } else { - topAnchor.constraint(equalTo: view.topAnchor) - .isActive = true - } - } -} diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UIView_Extensions.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UIView_Extensions.swift deleted file mode 100644 index 15f35ec..0000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UIView_Extensions.swift +++ /dev/null @@ -1,20 +0,0 @@ -import UIKit - -extension UIView { - func bindFrameToSuperview(top:CGFloat = 0, leading: CGFloat = 0, trailing:CGFloat = 0, bottom:CGFloat = 0) { - guard let superview = self.superview else { return } - self.translatesAutoresizingMaskIntoConstraints = false - self.topAnchor.constraint(equalTo: superview.topAnchor, constant: top).isActive = true - self.leadingAnchor.constraint(equalTo: superview.leadingAnchor, constant: leading).isActive = true - superview.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: trailing).isActive = true - superview.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: bottom).isActive = true - } - - func bindFrameToSuperview(margin:CGFloat) { - bindFrameToSuperview(top: margin, leading: margin, trailing: margin, bottom: margin) - } - - func frameRelativeToWindow() -> CGRect { - return convert(bounds, to: nil) - } -} diff --git a/Pods/LanguageManager-iOS/LICENSE b/Pods/LanguageManager-iOS/LICENSE deleted file mode 100644 index 46273a9..0000000 --- a/Pods/LanguageManager-iOS/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2017 Abedalkareem - -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/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/DefaultsKeys.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/DefaultsKeys.swift deleted file mode 100644 index 1a130b7..0000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/DefaultsKeys.swift +++ /dev/null @@ -1,13 +0,0 @@ -// -// DefaultsKeys.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import Foundation - -enum DefaultsKeys: String { - case selectedLanguage = "LanguageManagerSelectedLanguage" - case defaultLanguage = "LanguageManagerDefaultLanguage" -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/Languages.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/Languages.swift deleted file mode 100644 index 1ed7cc7..0000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/Languages.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// Languages.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import Foundation - -public enum Languages: String { - case ar, en, nl, ja, ko, vi, ru, sv, fr, es, pt, it, de, da, fi, nb, tr, el, id, - ms, th, hi, hu, pl, cs, sk, uk, hr, ca, ro, he, ur, fa, ku, arc, sl, ml, am, zh, mn, ka, sw - case enGB = "en-GB" - case enAU = "en-AU" - case enCA = "en-CA" - case enIN = "en-IN" - case frCA = "fr-CA" - case esMX = "es-MX" - case ptBR = "pt-BR" - case zhHans = "zh-Hans" - case zhHant = "zh-Hant" - case zhHK = "zh-HK" - case es419 = "es-419" - case ptPT = "pt-PT" - case deviceLanguage -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/ViewDirection.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/ViewDirection.swift deleted file mode 100644 index 5c1d225..0000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/ViewDirection.swift +++ /dev/null @@ -1,12 +0,0 @@ -// -// ViewDirection.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import Foundation - -public enum ViewDirection: Int { - case fixed, leftToRight, rightToLeft -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/String+Localiz.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/String+Localiz.swift deleted file mode 100644 index bd9bbfe..0000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/String+Localiz.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// String+Helpers.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import Foundation - -public extension String { - - /// - /// Localize the current string to the selected language - /// - /// - returns: The localized string - /// - func localiz(comment: String = "") -> String { - guard let bundle = Bundle.main.path(forResource: LanguageManager.shared.currentLanguage.rawValue, - ofType: "lproj") else { - return NSLocalizedString(self, comment: comment) - } - - let langBundle = Bundle(path: bundle) - return NSLocalizedString(self, tableName: nil, bundle: langBundle!, comment: comment) - } - -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIButton+Direction.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIButton+Direction.swift deleted file mode 100644 index c669713..0000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIButton+Direction.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// UIButton+Direction.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import UIKit - -@IBDesignable -public extension UIButton { - /// - /// Change the direction of the image depeneding in the language, there is no return value for this variable. - /// The expectid values: - /// - /// -`fixed`: if the image must not change the direction depending on the language you need to set the value as 0. - /// - /// -`leftToRight`: if the image must change the direction depending on the language - /// and the image is left to right image then you need to set the value as 1. - /// - /// -`rightToLeft`: if the image must change the direction depending on the language - /// and the image is right to left image then you need to set the value as 2. - /// - @IBInspectable var imageDirection: Int { - get { - return direction.rawValue - } - set { - direction = ViewDirection(rawValue: newValue)! - } - } -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIImageView+Direction.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIImageView+Direction.swift deleted file mode 100644 index d68735a..0000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIImageView+Direction.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// UIImageView+Direction.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import UIKit - -@IBDesignable -public extension UIImageView { - /// - /// Change the direction of the image depeneding in the language, there is no return value for this variable. - /// The expectid values: - /// - /// -`fixed`: if the image must not change the direction depending on the language you need to set the value as 0. - /// - /// -`leftToRight`: if the image must change the direction depending on the language - /// and the image is left to right image then you need to set the value as 1. - /// - /// -`rightToLeft`: if the image must change the direction depending on the language - /// and the image is right to left image then you need to set the value as 2. - /// - @IBInspectable var imageDirection: Int { - get { - return direction.rawValue - } - set { - direction = ViewDirection(rawValue: newValue)! - } - } -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Direction.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Direction.swift deleted file mode 100644 index 0d9172c..0000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Direction.swift +++ /dev/null @@ -1,44 +0,0 @@ -// -// UIView+Direction.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import UIKit - -extension UIView { - /// - /// Change the direction of the view depeneding in the language, there is no return value for this variable. - /// - /// The expectid values: - /// - /// -`fixed`: if the view must not change the direction depending on the language. - /// - /// -`leftToRight`: if the view must change the direction depending on the language - /// and the view is left to right view. - /// - /// -`rightToLeft`: if the view must change the direction depending on the language - /// and the view is right to left view. - /// - var direction: ViewDirection { - get { - fatalError(""" - There is no value return from this variable, - this variable used to change the view direction depending on the langauge - """) - } - set { - switch newValue { - case .fixed: - break - case .leftToRight where LanguageManager.shared.isRightToLeft: - transform = CGAffineTransform(scaleX: -1, y: 1) - case .rightToLeft where !LanguageManager.shared.isRightToLeft: - transform = CGAffineTransform(scaleX: -1, y: 1) - default: - break - } - } - } -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Swizzling.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Swizzling.swift deleted file mode 100644 index 0a5fed8..0000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Swizzling.swift +++ /dev/null @@ -1,58 +0,0 @@ -// -// UIView+Swizzling.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import UIKit - -extension UIView { - static func localize() { - - let orginalSelector = #selector(awakeFromNib) - let swizzledSelector = #selector(swizzledAwakeFromNib) - - let orginalMethod = class_getInstanceMethod(self, orginalSelector) - let swizzledMethod = class_getInstanceMethod(self, swizzledSelector) - - let didAddMethod = class_addMethod(self, - orginalSelector, - method_getImplementation(swizzledMethod!), - method_getTypeEncoding(swizzledMethod!)) - - if didAddMethod { - class_replaceMethod(self, - swizzledSelector, - method_getImplementation(orginalMethod!), - method_getTypeEncoding(orginalMethod!)) - } else { - method_exchangeImplementations(orginalMethod!, swizzledMethod!) - } - - } - - @objc - func swizzledAwakeFromNib() { - swizzledAwakeFromNib() - - switch self { - case let txtf as UITextField: - txtf.text = txtf.text?.localiz() - txtf.placeholder = txtf.placeholder?.localiz() - case let lbl as UILabel: - lbl.text = lbl.text?.localiz() - case let tabbar as UITabBar: - tabbar.items?.forEach({ $0.title = $0.title?.localiz() }) - case let btn as UIButton: - btn.setTitle(btn.title(for: .normal)?.localiz(), for: .normal) - case let sgmnt as UISegmentedControl: - (0 ..< sgmnt.numberOfSegments) - .forEach { sgmnt.setTitle(sgmnt.titleForSegment(at: $0)?.localiz(), forSegmentAt: $0) } - case let txtv as UITextView: - txtv.text = txtv.text?.localiz() - default: - break - } - } -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Storage.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Storage.swift deleted file mode 100644 index 57aa59d..0000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Storage.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// Storage.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import Foundation - -class Storage { - - // MARK: - Private properties - - private var defaults: UserDefaults { - UserDefaults.standard - } - - // MARK: - Methods - - func string(forKey key: DefaultsKeys) -> String? { - defaults.string(forKey: key.rawValue) - } - - func set(_ value: String, forKey: DefaultsKeys) { - defaults.set(value, forKey: forKey.rawValue) - } -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Main/LanguageManager.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Main/LanguageManager.swift deleted file mode 100755 index afa115b..0000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Main/LanguageManager.swift +++ /dev/null @@ -1,215 +0,0 @@ -// -// LanguageManager.swift -// -// Created by abedalkareem omreyh on 10/23/17. -// Copyright © 2017 abedlkareem omreyh. All rights reserved. -// GitHub: https://github.com/Abedalkareem/LanguageManager-iOS -// The MIT License (MIT) -// -// Copyright (c) 2017 Abedalkareem -// -// 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. - -import UIKit - -public class LanguageManager { - - public typealias Animation = ((UIView) -> Void) - public typealias ViewControllerFactory = ((String?) -> UIViewController) - public typealias WindowAndTitle = (UIWindow?, String?) - - // MARK: - Private properties - - private var storage = Storage() - - // MARK: - Properties - - /// - /// The singleton LanguageManager instance. - /// - public static let shared = LanguageManager() - - /// - /// Current app language. - /// *Note, This property just to get the current lanuage, - /// To set the language use: - /// `setLanguage(language:, for:, viewControllerFactory:, animation:)`* - /// - public private(set) var currentLanguage: Languages { - get { - guard let currentLang = storage.string(forKey: .selectedLanguage) else { - fatalError("Did you set the default language for the app?") - } - return Languages(rawValue: currentLang)! - } - set { - storage.set(newValue.rawValue, forKey: .selectedLanguage) - } - } - - /// - /// The default language that the app will run with first time. - /// You need to set the `defaultLanguage` in the `AppDelegate`, specifically in - /// the first line inside the `application(_:willFinishLaunchingWithOptions:)` method. - /// - public var defaultLanguage: Languages { - get { - guard let defaultLanguage = storage.string(forKey: .defaultLanguage) else { - fatalError("Did you set the default language for the app?") - } - return Languages(rawValue: defaultLanguage)! - } - set { - // swizzle the awakeFromNib from nib and localize the text in the new awakeFromNib - UIView.localize() - - let defaultLanguage = storage.string(forKey: .defaultLanguage) - guard defaultLanguage == nil else { - // If the default language has been set before, - // that means that the user opened the app before and maybe - // he changed the language so here the `currentLanguage` is being set. - setLanguage(language: currentLanguage) - return - } - - var language = newValue - if language == .deviceLanguage { - language = deviceLanguage ?? .en - } - - storage.set(language.rawValue, forKey: .defaultLanguage) - storage.set(language.rawValue, forKey: .selectedLanguage) - setLanguage(language: language) - } - } - - /// - /// The device language is deffrent than the app language, - /// to get the app language use `currentLanguage`. - /// - public var deviceLanguage: Languages? { - guard let deviceLanguage = Bundle.main.preferredLocalizations.first else { - return nil - } - return Languages(rawValue: deviceLanguage) - } - - /// The diriction of the language. - public var isRightToLeft: Bool { - return isLanguageRightToLeft(language: currentLanguage) - } - - /// The app locale to use it in dates and currency. - public var appLocale: Locale { - return Locale(identifier: currentLanguage.rawValue) - } - - // MARK: - Public Methods - - /// - /// Set the current language of the app - /// - /// - parameter language: The language that you need the app to run with. - /// - parameter windows: The windows you want to change the `rootViewController` for. if you didn't - /// set it, it will change the `rootViewController` for all the windows in the - /// scenes. - /// - parameter viewControllerFactory: A closure to make the `ViewController` for a specific `scene`, - /// you can know for which `scene` you need to make the controller you can check - /// the `title` sent to this clouser, this title is the `title` of the `scene`, - /// so if there is 5 scenes this closure will get called 5 times - /// for each scene window. - /// - parameter animation: A closure with the current view to animate to the new view controller, - /// so you need to animate the view, move it out of the screen, change the alpha, - /// or scale it down to zero. - /// - public func setLanguage(language: Languages, - for windows: [WindowAndTitle]? = nil, - viewControllerFactory: ViewControllerFactory? = nil, - animation: Animation? = nil) { - - changeCurrentLanguageTo(language) - - guard let viewControllerFactory = viewControllerFactory else { - return - } - - let windowsToChange = getWindowsToChangeFrom(windows) - - windowsToChange?.forEach({ windowAndTitle in - let (window, title) = windowAndTitle - let viewController = viewControllerFactory(title) - changeViewController(for: window, - rootViewController: viewController, - animation: animation) - }) - - } - - // MARK: - Private Methods - - private func changeCurrentLanguageTo(_ language: Languages) { - // change the dircation of the views - let semanticContentAttribute: UISemanticContentAttribute = isLanguageRightToLeft(language: language) ? - .forceRightToLeft : - .forceLeftToRight - UIView.appearance().semanticContentAttribute = semanticContentAttribute - - // set current language - currentLanguage = language - } - - private func getWindowsToChangeFrom(_ windows: [WindowAndTitle]?) -> [WindowAndTitle]? { - var windowsToChange: [WindowAndTitle]? - if let windows = windows { - windowsToChange = windows - } else { - if #available(iOS 13.0, *) { - windowsToChange = UIApplication.shared.connectedScenes - .compactMap({ $0 as? UIWindowScene }) - .map({ ($0.windows.first, $0.title) }) - } else { - windowsToChange = [(UIApplication.shared.keyWindow, nil)] - } - } - - return windowsToChange - } - - private func changeViewController(for window: UIWindow?, - rootViewController: UIViewController, - animation: Animation? = nil) { - guard let snapshot = window?.snapshotView(afterScreenUpdates: true) else { - return - } - rootViewController.view.addSubview(snapshot) - - window?.rootViewController = rootViewController - - UIView.animate(withDuration: 0.5, animations: { - animation?(snapshot) - }, completion: { _ in - snapshot.removeFromSuperview() - }) - } - - private func isLanguageRightToLeft(language: Languages) -> Bool { - return Locale.characterDirection(forLanguage: language.rawValue) == .rightToLeft - } - -} diff --git a/Pods/LanguageManager-iOS/README.md b/Pods/LanguageManager-iOS/README.md deleted file mode 100644 index 05158a7..0000000 --- a/Pods/LanguageManager-iOS/README.md +++ /dev/null @@ -1,105 +0,0 @@ -<p align="center"> -<img src="https://github.com/Abedalkareem/LanguageManager-iOS/blob/master/Images/logo.png?raw=true" width="150"> </center> -</p> -<br> - -A Language manager to handle changing app language without restarting the app. - -<br> - - -## ScreenShots - -<img src="https://raw.githubusercontent.com/Abedalkareem/LanguageManager-iOS/master/Images/screenrec.gif" width="450"> - - -## LanguageManager-SwiftUI - -For SwiftUI please visit the [LanguageManager-SwiftUI](https://github.com/Abedalkareem/LanguageManager-SwiftUI) - -## Usage - -<a href="http://www.youtube.com/watch?v=CuZb8nUglcg">Youtube: iOS - Support multiple languages (Localization).</a> <br> -[](http://www.youtube.com/watch?v=CuZb8nUglcg "iOS - Support multiple languages (Localization).") - -First of all, remember to add the ```Localizable.strings``` to your project, after adding the ```Localizable.strings``` file, select it then go to file inspector and below localization press localize, after that go to ```PROJECT > Localisation``` then add the languages you want to support (Arabic for example), dialog will appear to ask you which resource file you want to localize, select just the ```Localizable.strings``` file. <br> <br> -Now, go to your storyboard and add ```UILable``` and add text to it, for example ```"Hello !"```, then go to your ```Localizable.strings``` file expand it, you will find Localizable strings file for English and Arabic, for English, add this line with the string you used in the ```UILabel``` inside the storyboard <br> -```"Hello !" = "Hello !";``` <br> -and for Arabic file : <br> -```"Hello !" = "مرحبا !";``` <br> - - -<br> -After that in the `didFinishLaunchingWithOptions` method inside the `AppDelegate.swift` file, set your default language that your app will run first time - -```swift -LanguageManager.shared.defaultLanguage = .en // you can use .deviceLanguage to keep the device default language. -``` - -If you want to change the language use the ```setLanguage(language:)``` method by passing to it the new language - -```swift - @IBAction func changeLanguage(_ sender: UIButton) { - - let selectedLanguage: Languages = sender.tag == 1 ? .en : .ar - - // change the language - LanguageManager.shared.setLanguage(language: selectedLanguage) - { title -> UIViewController in - let storyboard = UIStoryboard(name: "Main", bundle: nil) - // the view controller that you want to show after changing the language - return storyboard.instantiateInitialViewController()! - } animation: { view in - // do custom animation - view.transform = CGAffineTransform(scaleX: 2, y: 2) - view.alpha = 0 - } - } -``` - -If you have an image and you want to change the direction of the image depending on the language, you can use image direction property, the property can be one of the following values: - --`fixed`: if the image must not change the direction depending on the language, you need to set the value as 0. - --`leftToRight`: if the image must change the direction depending on the language -and the image is left to right image then you need to set the value as 1. - --`rightToLeft`: if the image must change the direction depending on the language -and the image is right to left image then you need to set the value as 2. - -<img src="https://raw.githubusercontent.com/Abedalkareem/LanguageManager-iOS/master/Images/ibdesignable.png" width="450"> - -Please check the example project to see how it works. - -## Installation - -LanguageManager-iOS is available through [CocoaPods](https://cocoapods.org). To install -it, simply add the following line to your Podfile: - -```ruby -pod 'LanguageManager-iOS' -``` - -Or you can use [Carthage](https://github.com/Carthage/Carthage). - -``` -github "Abedalkareem/LanguageManager-iOS" -``` - -You can also use [Swift Package Manager](https://developer.apple.com/documentation/xcode/adding_package_dependencies_to_your_app). - -## Support me 🚀 - -You can support this project by: - -1- Checking my [apps](https://apps.apple.com/us/developer/id928910207). -2- Star the repo. -3- Share the repo with your friends. - -## Follow me ❤️ - -[Facebook](https://www.facebook.com/Abedalkareem.Omreyh/) | [Twitter](https://twitter.com/abedalkareemomr) | [Instagram](https://instagram.com/abedalkareemomreyh/) | [Youtube](https:/٧٦٧٦٩٦٧٠ /www.youtube.com/user/AbedalkareemOmreyh) - -## License - -Please check the license file. diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 962dfd3..197ff52 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,36 +1,20 @@ PODS: - EPSignature (1.0.6) - - ImageViewer.swift (3.3.8) - - IQKeyboardManagerSwift (7.0.3) - - LanguageManager-iOS (1.2.7) - NBBottomSheet (1.2.0) - - Toast-Swift (5.1.1) DEPENDENCIES: - EPSignature - - ImageViewer.swift (~> 3.0) - - IQKeyboardManagerSwift - - LanguageManager-iOS - NBBottomSheet - - Toast-Swift SPEC REPOS: trunk: - EPSignature - - ImageViewer.swift - - IQKeyboardManagerSwift - - LanguageManager-iOS - NBBottomSheet - - Toast-Swift SPEC CHECKSUMS: EPSignature: 3fa3b520c80717b98019723faa60a41794b03fbc - ImageViewer.swift: 284cd8127d31af8e5938674fb9f8e695a4cdf6c6 - IQKeyboardManagerSwift: f9c5dc36cba16ddd2e51fa7d51c34a2e083029b5 - LanguageManager-iOS: 6b2dbb3793445827114708f0759b76e96932d7c8 NBBottomSheet: aa7a52809b2d7b193f733247b8ce391a59904372 - Toast-Swift: 7a03a532afe3a560d4044bc7c237e2864d295173 -PODFILE CHECKSUM: 9775166299988c84acdb7600ce83319349809cb9 +PODFILE CHECKSUM: 7dc47ad90dd5bf8f4d9fb5feaf1b44cbe52e897a -COCOAPODS: 1.14.3 +COCOAPODS: 1.15.2 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index c592913..7a6e412 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -7,344 +7,92 @@ objects = { /* Begin PBXBuildFile section */ - 0615219BFD2EBBE27FF41C2C8816791E /* IQTextFieldViewInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17005516AECC44640576DA5164FDB65E /* IQTextFieldViewInfo.swift */; }; - 0718CCD0E19136B8DB2A7D4C6585E3ED /* LanguageManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 960AF11999B2A894B5169B422BF12FE4 /* LanguageManager.swift */; }; - 07F7FEADEEC19C1818C92894406EE311 /* UINavigationBar_Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E99695448BB4EA162AD177960DBEC1BB /* UINavigationBar_Extensions.swift */; }; - 08822D4E49DB8618D27BAEDED7911733 /* IQKeyboardManager+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 900BB5CFA6B47D29E110933244F58449 /* IQKeyboardManager+Internal.swift */; }; - 08C234F2981017EEF271582022F339F3 /* IQUIView+IQKeyboardToolbarDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9809B6990F88A273200A6FB37E4386E /* IQUIView+IQKeyboardToolbarDeprecated.swift */; }; - 0A4DB572ACD97EC492C4E93A0FFB2E47 /* IQTextFieldViewListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 414C89E33EB4D8A44D82A4E98DE5565E /* IQTextFieldViewListener.swift */; }; - 0EF056C9B77C11BF2BEF81888B17769C /* ImageItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F083907BC24781499FDEE1620DB89110 /* ImageItem.swift */; }; - 103FE4EEFF1BE8BAD0FA047987AFED74 /* IQUIView+Hierarchy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CF31620D028C1CCA7BA4731E81B6C9D /* IQUIView+Hierarchy.swift */; }; - 10D1A87F45AFB52D2B34D9ABA1A86105 /* UIImageView+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8356D39B1D7094CE112D14AFFCB419B7 /* UIImageView+Direction.swift */; }; - 14063E1AF70EDDC9F33C8E08DCA0BEF3 /* IQPreviousNextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6181C5C905D6F417E99706D739C8A3A1 /* IQPreviousNextView.swift */; }; - 154362EFC8EC0F61F54E24B09266DEB1 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1359935F9974FC169C02584D31EB3ADC /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */; }; - 15BEDD8F76A1ADF659597113D96C97CF /* UIImageView_Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7315BFBE8EBD0F2C0D6CE97F982C9069 /* UIImageView_Extensions.swift */; }; - 15F04D15A4DC87FF877C2857720F8D72 /* Toast-Swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BF0BFBEA7071CD62777B3661360B1AFD /* Toast-Swift-dummy.m */; }; - 178BF9CAADACBF4E8FE49574A848C12A /* NBBottomSheetPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4A52BED6B36260F78D9759112FE066 /* NBBottomSheetPresentationController.swift */; }; - 1A7787DB0275CF4A44CA312DD3BA5D33 /* EPSignatureViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 42E4F8E67126057EC888EFDC10BA3DDD /* EPSignatureViewController.xib */; }; - 1C3881B0113D3219398154E16AA4413C /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12E8962DF01D0F73372CED14D7E4F6D4 /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */; }; - 2039598D067E7D39727311391022D3A3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; - 237A96A092EA5A5B0CB41160BEA22E16 /* Toast-Swift-Toast-Swift in Resources */ = {isa = PBXBuildFile; fileRef = 13FD39576595D8A884BF5166065C5236 /* Toast-Swift-Toast-Swift */; }; - 23D11E770DF137CBF802A30E2B19C054 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; - 24C699F9653980B77F44634EF44641C1 /* IQKeyboardInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 392B95135956F8BFD2BD794C459E180A /* IQKeyboardInfo.swift */; }; - 3402A26F7BBA359E410BEB33C8B74254 /* NBBottomSheetTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5DCAF7921EC15817545E2C255BC27D5 /* NBBottomSheetTransitioningDelegate.swift */; }; - 3452528F3B9B79AD67D45FEA174F71E4 /* IQUICollectionView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 005537FD214FB7AF75AEABD1381F2ED7 /* IQUICollectionView+Additions.swift */; }; - 34BDB069A96125DAF2FEF6FF93A3F6AF /* IQToolbarPlaceholderConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757EB6FDC52B1FC003926AA07A86E8C5 /* IQToolbarPlaceholderConfiguration.swift */; }; - 35699581E68E1E6F640C681EEDEEE2B6 /* EPSignature-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FA1E0D437A4D407F87C451B63A101490 /* EPSignature-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3573FA382FBE08F99039CED491DB9FF0 /* IQKeyboardManagerSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A125CBE2A769DCFA442C7B9188F5994 /* IQKeyboardManagerSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 38CBE3196BDD577B5E72BC65508A77F8 /* IQTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1A9AD095397B2255EC06CD994A45C27 /* IQTextView.swift */; }; - 3CCAA73182C09F77A88AFFA24E96DBB6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; - 3E21C9612D00C6B92D3FCE3589917729 /* UIView+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EF1A9B4B0069DCB3CD78CE9AFDFB4AB /* UIView+Direction.swift */; }; - 4017CF2B3EE45E7E579E68E6FCFBF732 /* IQKeyboardManager+UIKeyboardNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB65FF2384D17A78A0FEEC199D4B6471 /* IQKeyboardManager+UIKeyboardNotification.swift */; }; - 42B931814C7B25871333D5DA9A0E2A41 /* IQKeyboardReturnKeyHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F01860EA41E94EA9E52A6FC477110E6 /* IQKeyboardReturnKeyHandler.swift */; }; - 48A4D5E4D954CB4212E540A92570BBF0 /* UIView+Swizzling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0668626D9926F6CE57864C747CEEF9E4 /* UIView+Swizzling.swift */; }; - 4CDBAE55660ED186441E9E4EDE6B3D31 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift in Resources */ = {isa = PBXBuildFile; fileRef = 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */; }; - 4ED2AE6187D476E7382AD69C5908A586 /* ImageViewer.swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DFC2CF7F3DB84126054E7B91671C8CFC /* ImageViewer.swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 524FC16C683888AB0462F4DD6BDB5725 /* ImageLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1A2D57CBACA8ECA7983B665AA1DCBAA /* ImageLoader.swift */; }; - 54BAE903D82C39392943869866252D93 /* IQNSArray+Sort.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE11B8C15341D9CDF0972B066E0E18F9 /* IQNSArray+Sort.swift */; }; - 597994C3AE8908B1E462BC03AC8C23FB /* IQKeyboardManagerCompatible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08503E375F5DA3F7DE5AD83AB160CF40 /* IQKeyboardManagerCompatible.swift */; }; - 59D76AD0378678CB0D3236021BF96A09 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A42DBD2F42D55606EEBA514009498B87 /* QuartzCore.framework */; }; - 5AB7C5D27CA6D49509FB1B87C95D5C9B /* Pods-MiniScanner-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E8A070B594D65627DD64F5ABC65D271 /* Pods-MiniScanner-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5D35C19C362961F919BE9820991D761E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; - 5F0469C5B154DC20B844EA2A9B7F8D42 /* IQPlaceholderable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A667127B2C277764D5CAD60BBAC94CA /* IQPlaceholderable.swift */; }; - 5F62DAE67CF97B7C42471EA91B79AA9A /* IQTextFieldViewInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0FD4D5BFC8D1FE707AEC705F835CA64 /* IQTextFieldViewInfoModel.swift */; }; - 61E476CDBAC0F819982D258267423D8F /* ImageViewerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F78BE606608A1BC48D0AB5488FEF220A /* ImageViewerController.swift */; }; - 6418A8A5D32E73D898AB155952180B0C /* LanguageManager-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F91C093ED7B1A58B9C59D5B85DC0374 /* LanguageManager-iOS-dummy.m */; }; - 64F33F487DE5F9FE3C20F2C3FB5AB085 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 0321B651FFD7BE92EE97707E2CD9077C /* PrivacyInfo.xcprivacy */; }; - 674C6B2E317E657D8EAD3CC73F608540 /* IQKeyboardManager+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0420E9FB2A54DB55ECF95432358052BB /* IQKeyboardManager+Debug.swift */; }; - 6D55C34EF7CE4718D8B2FE6CE95C5674 /* DefaultsKeys.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5345F3CC88236EB713719B9684427DF /* DefaultsKeys.swift */; }; - 6F875A0983E3FB0E0CC0BDA6376F73E8 /* String+Localiz.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4B89D5340E9A3D93064EC99E8091E15 /* String+Localiz.swift */; }; - 701904768C60A3F9060518DD58EC2882 /* IQToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83431FDB65F2866361AB9532FF025216 /* IQToolbar.swift */; }; - 733CF7F19636AFF4A97708DFDE0AE53C /* IQKeyboardManagerSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 31A1FFA445855E537858C2A2102D8075 /* IQKeyboardManagerSwift-dummy.m */; }; - 7586D1882B962E1E31C28CC6396668B3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04D60AC13D33197690A05C641925DDDA /* UIKit.framework */; }; - 797DF46337EAC66E47C5ADAF32515524 /* NBBottomSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = 57947335957481465C8757C3D7561A44 /* NBBottomSheet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7B2263CFC47393D3FB5CD8D5F7EB57AD /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04D60AC13D33197690A05C641925DDDA /* UIKit.framework */; }; - 8086BD2DB5F1A0CC88E4F3386570A21C /* IQUITextFieldView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18CBA833812BB5BA28B7D9A586E13FD6 /* IQUITextFieldView+Additions.swift */; }; - 8234444617FD513B81095D920BFA796B /* NBConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5EBA409FC91D5F3514DF63A0EB302A /* NBConfiguration.swift */; }; - 82950EE4BDD57F74749742A3E1566073 /* IQKeyboardManager+UITextFieldViewNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD594C3B4E7F741A5F6879BAD9102D6D /* IQKeyboardManager+UITextFieldViewNotification.swift */; }; - 852E6AB133CF7BDE7DE7D836AE201868 /* Languages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33BE3AAA190504ECB00EE2CCC8637B5A /* Languages.swift */; }; - 8EAF267614A5AB6196921C15E719AE35 /* NBBottomSheetDismissalTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = D212C85376884AB5C4668DBA49DDDF49 /* NBBottomSheetDismissalTransition.swift */; }; - 8ED2E941DF0803C8AA331D0D8C722615 /* IQBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61AC252473E61EBEA2741BD3B62C44C1 /* IQBarButtonItem.swift */; }; - 8FDA28363A5E49017498FD69AAA8F59F /* IQKeyboardListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527814487B4E944AB1448A2B1F3DF1A3 /* IQKeyboardListener.swift */; }; - 907FCA3049CAAF64B579D08D339D118D /* IQBarButtonItemConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7785B233B8110C51D40D5C00B38DA9F6 /* IQBarButtonItemConfiguration.swift */; }; - 93C0AD77AB416AE90A6BD03E44A9B684 /* EPSignature-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4132102B3811026C0FA8B7512EBC2601 /* EPSignature-dummy.m */; }; - 94F893223EB4C1C0F829C17900114AFA /* IQUIScrollView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAD7429B43D433D607F44E0D774B1A31 /* IQUIScrollView+Additions.swift */; }; - 98A4D0D5928A35C7DB3D9272187789A8 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 840FA0B75AF62912A30DDC66B647ED98 /* CoreGraphics.framework */; }; - 9A00A25ED34A7687C62B02EBB76C1248 /* IQKeyboardConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0DB6F7515A79425490CE2C45D5814E8 /* IQKeyboardConfiguration.swift */; }; - 9E704111CAAACBF64155A576FC337323 /* LanguageManager-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F25D3C2E5BF000995E17A861BB22DD94 /* LanguageManager-iOS-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9F78D56352F7D932DCEBE416C668C7BA /* IQKeyboardManager+ToolbarActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F21A8CF35A5BAD74338B110E46C3BF14 /* IQKeyboardManager+ToolbarActions.swift */; }; - A4AE2538C33D06CB8C70D5FF35A65D98 /* EPSignatureViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 800A055821CD9469429504DE4CCE6122 /* EPSignatureViewController.swift */; }; - A5E69CC013C4311C8AF52C7F7AB095C9 /* IQUITableView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF8F72EB71F1ED1788133B0C5B21824E /* IQUITableView+Additions.swift */; }; - AB8B0F2C54FFDE0C5809F687C973CF12 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; - AE7D065E1D48171258FD8F07F7CD592C /* IQKeyboardManagerConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22F9A10C284AAB590E7C4E7A82AC4EC7 /* IQKeyboardManagerConstants.swift */; }; - AF715064CF6458D3D89BB563DFDB00C6 /* UIButton+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A2884C9052277C44C03FFD8F25BF442 /* UIButton+Direction.swift */; }; - B1A786B1A2F11EBD1BF77305EEB710F5 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A42DBD2F42D55606EEBA514009498B87 /* QuartzCore.framework */; }; - B1BFC54288364884DDEAE75027BABE1A /* IQActiveConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = A025312E27CC4428B6F282B56E170285 /* IQActiveConfiguration.swift */; }; - B6EF20981D365C6945DA37B8D524D59C /* ImageCarouselViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C304A8D46A2901CF4AF3087887521E23 /* ImageCarouselViewController.swift */; }; - B9CF878085ABA2991A9C6F12F9B9DAB3 /* IQTitleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46773385F05CC946146AADCD857D60A1 /* IQTitleBarButtonItem.swift */; }; - BBF6B5C579EAC85F4A26DA1F994B89E0 /* ImageViewerTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06BB8B8E6B78949B39F1CAE146BA9B36 /* ImageViewerTheme.swift */; }; - C13C6459FE4D7B6CC28B9C99D34954EF /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 75FCC307A8979A99234E9D57DB4070DF /* PrivacyInfo.xcprivacy */; }; - CA6D6333D723B4391BD689F68FCF23DF /* EPSignatureView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7ED05BB6BF7CF061D65143C8602A089 /* EPSignatureView.swift */; }; - CC25A043BA48D6042178B5B5148723B6 /* ImageViewerOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D4DC65480D7A44E964D6E47FE20D5D /* ImageViewerOption.swift */; }; - CC897E71556348377B4C31307E208C80 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; - CC96488C33BFB3BCEE4A665A438CAC36 /* IQUIViewController+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8915E92A00CE442AA263798AD59B7BB7 /* IQUIViewController+Additions.swift */; }; - CE3D249A1D64388C72BBB40C4E5818C8 /* ImageViewer.swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CBEAEBC0755D340B7F6FA4178AE27247 /* ImageViewer.swift-dummy.m */; }; - D181D49DE6D7885B2834AF4E96170171 /* Toast-Swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 35A738047E0EB5A57E08000F04795C07 /* Toast-Swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D2A598E7174826A7B04036E7AC8AA3B6 /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5437535C54228EA8C21A56543CF29E6 /* Storage.swift */; }; - D3D1F63C30E95311B687FA924B872C15 /* IQKeyboardManager+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14887AB6864ADB209F4850C2CEFE1513 /* IQKeyboardManager+Deprecated.swift */; }; - D46F90A0F6FC8F1D2AA4129BC2A934DD /* NBBottomSheet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 25BED61676B1924AF5C8D3720E47D495 /* NBBottomSheet-dummy.m */; }; - D809C0A429034849D9AFDF320D6CC6B3 /* ImageViewerTransitionPresentationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 755CF0A8E8DCD17EEC04D495FD4FD4EE /* ImageViewerTransitionPresentationManager.swift */; }; - D8322CBE73400EE4382D1A042D2D53D3 /* IQUIView+IQKeyboardToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = E98B25A00C5BD8E1CFC837B364AFF2C4 /* IQUIView+IQKeyboardToolbar.swift */; }; - D88C2EA8ACCC0DE031D9E7A768062E2C /* IQKeyboardManager+Toolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB5D2831F4E5E4871D0F33815B0B42E9 /* IQKeyboardManager+Toolbar.swift */; }; - DCD7B925667D6834875DECB61303162A /* Pods-MiniScanner-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 123ADF4A6B2F1DEBA5B7482D4983B685 /* Pods-MiniScanner-dummy.m */; }; - DE3B5070A41194C21898D92DBFFCBE4C /* IQRootControllerConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF3176DC2042D2AFEF0BA4111003347A /* IQRootControllerConfiguration.swift */; }; - E483FA24409A56AAEDF8A1DEC5F55F16 /* UIImage+NextPrevious.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34C3DB226A6195FDA912228C88553462 /* UIImage+NextPrevious.swift */; }; - E8770A941545BB190D76BF7E5262797D /* IQToolbarConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCEDF67E74AC4A5480D38D4CD3467F4 /* IQToolbarConfiguration.swift */; }; - EA280E998F6C42AE8492336F762F92D5 /* EPExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CA428D4C35A8536978E9F7F7BF2CD69 /* EPExtensions.swift */; }; - EBB5F245DBEEB13D48F09E0DD75A6C95 /* IQKeyboardManager+Position.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8B3FE298AA4920F9F99DFA06A8264AF /* IQKeyboardManager+Position.swift */; }; - EECD3881761258240C223D7FF03C0DD1 /* SimpleImageDatasource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0415ED93CA1C6E9CA7EC01BB2ACE70F3 /* SimpleImageDatasource.swift */; }; - F01E61A9BFB56BB44FCE5558797FAF80 /* UIView_Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EA3D8A888A9CB6D2589EB69034D4EB8 /* UIView_Extensions.swift */; }; - F56475ACE1A1CFE322DBFA35CDA1A204 /* NBBottomSheetConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBA888243160DAAFEC320F5098062E86 /* NBBottomSheetConfiguration.swift */; }; - F681FB74C756E0AAFFDC0D414EBD8FA0 /* IQScrollViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = F25B6571CD63C88398C6F771FBBB849F /* IQScrollViewConfiguration.swift */; }; - F7C3A4FED58118F9ADC5B4AF9A10B9FC /* ViewDirection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 399EBA1EABB335DCBE4EF1388CF69190 /* ViewDirection.swift */; }; - F7E2900D9AF732C627F184A258F48DF0 /* NBBottomSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BC7142EB2F11A8117CF9C4CE7773D77 /* NBBottomSheetController.swift */; }; - F912129FB7C53C428FE247D6ECF633AC /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ED73ECDE4EEF35880CEFF7186CE0396 /* Toast.swift */; }; - F9DE1A3C506E506F4DA4B7714359E8D1 /* IQKeyboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C0AA180F4F800D5683FC4071F398BC1 /* IQKeyboardManager.swift */; }; - FB0A76B10B5927494469B16B28CF2B9A /* NBBottomSheetPresentationTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = D993BAD38A74EE07695C9A67B6B030F5 /* NBBottomSheetPresentationTransition.swift */; }; - FB7D384E51C9E1ADAEE50C64A694BB61 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; - FD4FA33C33903D85344344979508E750 /* ImageViewer_swift.h in Headers */ = {isa = PBXBuildFile; fileRef = 37275DD2C6E89B8A1B330D98EEAA7D43 /* ImageViewer_swift.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FDEFBFB34E35A4BB332264E0CACCF5D8 /* IQInvocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644434A62AD15BCD099A235BCC219949 /* IQInvocation.swift */; }; - FE4936BFE1B6B6A9E8136010E413A24B /* NBBottomSheet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 53738E1E5D1A90F125908C4D7EE82271 /* NBBottomSheet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 178BF9CAADACBF4E8FE49574A848C12A /* NBBottomSheetPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4950EB2B8365F46BC56A064AD48BF6 /* NBBottomSheetPresentationController.swift */; }; + 1A7787DB0275CF4A44CA312DD3BA5D33 /* EPSignatureViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9311D435EB5FF3E24E7932038D65D926 /* EPSignatureViewController.xib */; }; + 29E84D1618616538382E25E994B8BAE3 /* Pods-MiniScanner-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 123ADF4A6B2F1DEBA5B7482D4983B685 /* Pods-MiniScanner-dummy.m */; }; + 2A1CD6399519B60D49B7E499577EC252 /* Pods-MiniScanner-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E8A070B594D65627DD64F5ABC65D271 /* Pods-MiniScanner-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3402A26F7BBA359E410BEB33C8B74254 /* NBBottomSheetTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FA6383580051D555D63451B7A81EE88 /* NBBottomSheetTransitioningDelegate.swift */; }; + 35699581E68E1E6F640C681EEDEEE2B6 /* EPSignature-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A8BAAC480D87C215DBF67E7EE52B0B0 /* EPSignature-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CCAA73182C09F77A88AFFA24E96DBB6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */; }; + 564CDC78EAAD3D537143C0AF32A296E8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */; }; + 5D35C19C362961F919BE9820991D761E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */; }; + 797DF46337EAC66E47C5ADAF32515524 /* NBBottomSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = EE091368FE4AA6BC0970A84D8EB62AD4 /* NBBottomSheet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7B2263CFC47393D3FB5CD8D5F7EB57AD /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D245E0514AAC1A2B9A6D5EA2F383E90F /* UIKit.framework */; }; + 8234444617FD513B81095D920BFA796B /* NBConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC9E338141AAC78DA68EE142D4F21C5B /* NBConfiguration.swift */; }; + 8EAF267614A5AB6196921C15E719AE35 /* NBBottomSheetDismissalTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0286553719EE7714F31E1EE269820352 /* NBBottomSheetDismissalTransition.swift */; }; + 93C0AD77AB416AE90A6BD03E44A9B684 /* EPSignature-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB35CAE22A8D6C0BE783A689D5D3541 /* EPSignature-dummy.m */; }; + A4AE2538C33D06CB8C70D5FF35A65D98 /* EPSignatureViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE267668BA96CB7E325F61FA76B6CBCD /* EPSignatureViewController.swift */; }; + CA6D6333D723B4391BD689F68FCF23DF /* EPSignatureView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15F9A321C9AB81F483ECE0E416A881C0 /* EPSignatureView.swift */; }; + D46F90A0F6FC8F1D2AA4129BC2A934DD /* NBBottomSheet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 976B8085DC82710F9620DDCE5BA70A32 /* NBBottomSheet-dummy.m */; }; + EA280E998F6C42AE8492336F762F92D5 /* EPExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2569FA6CF0041F826042344C8D002A7C /* EPExtensions.swift */; }; + F56475ACE1A1CFE322DBFA35CDA1A204 /* NBBottomSheetConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = D18CB03EE27978DC40D668C05314A6B0 /* NBBottomSheetConfiguration.swift */; }; + F7E2900D9AF732C627F184A258F48DF0 /* NBBottomSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28B9F2046C635AE195E6439A2BAFD804 /* NBBottomSheetController.swift */; }; + FB0A76B10B5927494469B16B28CF2B9A /* NBBottomSheetPresentationTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBB6316686E0FE5CC7D0C42A233FD6E /* NBBottomSheetPresentationTransition.swift */; }; + FE4936BFE1B6B6A9E8136010E413A24B /* NBBottomSheet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C077B03D2AE345D24123F5F0A56768B /* NBBottomSheet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 3A741A805CA84A8E49872D4C96838AC8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 982A68D37F5DCBC1FC1FDC0BB2F0EB8E; - remoteInfo = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; - }; - 5A95F7AC3875947C31796EDB0B856459 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B990BD87169C76A3ED3FE8A9258D91A3; - remoteInfo = "Toast-Swift"; - }; - 6675BD8F3B1EEE8B78C450C1B94DC727 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 75F1EA88CB9544AB5CBE20DEC9A011AE; - remoteInfo = "LanguageManager-iOS"; - }; - 79663F39931A50F6454880483831F20F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 3CAF5EBFE5D1550CFF58AEC93594990A; - remoteInfo = EPSignature; - }; - 8DA8415961388AABC31B257BE3AD32C9 /* PBXContainerItemProxy */ = { + EA27ADD31350A678EFD8A97FBFAC0C6A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 727C2007A89D1AD73613E3E2E22998E5; remoteInfo = NBBottomSheet; }; - AA3237DE651554C28EA760562DFF81C8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B490E7485944099E16C9CBD79119D1D4; - remoteInfo = IQKeyboardManagerSwift; - }; - D174B0FB299B16CD41E3019F93E429F4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = C344E85893FCDEE5B70436E0A4A3472B; - remoteInfo = "Toast-Swift-Toast-Swift"; - }; - F1763414C63B74B894B708614A5129AE /* PBXContainerItemProxy */ = { + FA9818C323BDDC5CE32AB6B1347E6DF3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 332B68EA081CEBFDA8881E0F51713DED; - remoteInfo = ImageViewer.swift; + remoteGlobalIDString = 3CAF5EBFE5D1550CFF58AEC93594990A; + remoteInfo = EPSignature; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 005537FD214FB7AF75AEABD1381F2ED7 /* IQUICollectionView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUICollectionView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUICollectionView+Additions.swift"; sourceTree = "<group>"; }; - 0321B651FFD7BE92EE97707E2CD9077C /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Toast/Resources/PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; - 0415ED93CA1C6E9CA7EC01BB2ACE70F3 /* SimpleImageDatasource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SimpleImageDatasource.swift; path = Sources/ImageViewer_swift/SimpleImageDatasource.swift; sourceTree = "<group>"; }; - 0420E9FB2A54DB55ECF95432358052BB /* IQKeyboardManager+Debug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Debug.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Debug.swift"; sourceTree = "<group>"; }; - 04D60AC13D33197690A05C641925DDDA /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 0668626D9926F6CE57864C747CEEF9E4 /* UIView+Swizzling.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Swizzling.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Swizzling.swift"; sourceTree = "<group>"; }; - 06BB8B8E6B78949B39F1CAE146BA9B36 /* ImageViewerTheme.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageViewerTheme.swift; path = Sources/ImageViewer_swift/ImageViewerTheme.swift; sourceTree = "<group>"; }; - 08503E375F5DA3F7DE5AD83AB160CF40 /* IQKeyboardManagerCompatible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerCompatible.swift; path = IQKeyboardManagerSwift/IQKeyboardManagerCompatible/IQKeyboardManagerCompatible.swift; sourceTree = "<group>"; }; - 0C0AA180F4F800D5683FC4071F398BC1 /* IQKeyboardManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManager.swift; path = IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift; sourceTree = "<group>"; }; - 0CCEDF67E74AC4A5480D38D4CD3467F4 /* IQToolbarConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbarConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQToolbarConfiguration.swift; sourceTree = "<group>"; }; - 0D549B41652BBAC21AB153BD9D3B6E40 /* NBBottomSheet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NBBottomSheet-prefix.pch"; sourceTree = "<group>"; }; + 0286553719EE7714F31E1EE269820352 /* NBBottomSheetDismissalTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetDismissalTransition.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetDismissalTransition.swift; sourceTree = "<group>"; }; 0E8A070B594D65627DD64F5ABC65D271 /* Pods-MiniScanner-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-MiniScanner-umbrella.h"; sourceTree = "<group>"; }; - 105B1722B8849106475AB5FE35F15855 /* NBBottomSheet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = NBBottomSheet.modulemap; sourceTree = "<group>"; }; + 0FA6383580051D555D63451B7A81EE88 /* NBBottomSheetTransitioningDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetTransitioningDelegate.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetTransitioningDelegate.swift; sourceTree = "<group>"; }; 123ADF4A6B2F1DEBA5B7482D4983B685 /* Pods-MiniScanner-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-MiniScanner-dummy.m"; sourceTree = "<group>"; }; - 12E8962DF01D0F73372CED14D7E4F6D4 /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardReturnKeyHandler+TextViewDelegate.swift"; path = "IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextViewDelegate.swift"; sourceTree = "<group>"; }; - 1359935F9974FC169C02584D31EB3ADC /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardReturnKeyHandler+TextFieldDelegate.swift"; path = "IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextFieldDelegate.swift"; sourceTree = "<group>"; }; - 13FD39576595D8A884BF5166065C5236 /* Toast-Swift-Toast-Swift */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "Toast-Swift-Toast-Swift"; path = "Toast-Swift.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; - 14887AB6864ADB209F4850C2CEFE1513 /* IQKeyboardManager+Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Deprecated.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Deprecated.swift"; sourceTree = "<group>"; }; - 16C65F87206DFAED7027521770B46247 /* EPSignature-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "EPSignature-Info.plist"; sourceTree = "<group>"; }; - 17005516AECC44640576DA5164FDB65E /* IQTextFieldViewInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewInfo.swift; path = IQKeyboardManagerSwift/LIsteners/Info/IQTextFieldViewInfo.swift; sourceTree = "<group>"; }; - 17C3E8DCDAA1F639684AE52919D2802D /* EPSignature.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EPSignature.debug.xcconfig; sourceTree = "<group>"; }; - 18CBA833812BB5BA28B7D9A586E13FD6 /* IQUITextFieldView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITextFieldView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUITextFieldView+Additions.swift"; sourceTree = "<group>"; }; - 1A667127B2C277764D5CAD60BBAC94CA /* IQPlaceholderable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPlaceholderable.swift; path = IQKeyboardManagerSwift/IQTextView/IQPlaceholderable.swift; sourceTree = "<group>"; }; + 15F9A321C9AB81F483ECE0E416A881C0 /* EPSignatureView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPSignatureView.swift; path = Pod/Classes/EPSignatureView.swift; sourceTree = "<group>"; }; + 165646F2F6EF5448EE905D7E83235E81 /* NBBottomSheet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NBBottomSheet.release.xcconfig; sourceTree = "<group>"; }; 21A62BB316C6336F03408E50D730FD01 /* Pods-MiniScanner.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-MiniScanner.modulemap"; sourceTree = "<group>"; }; - 22F9A10C284AAB590E7C4E7A82AC4EC7 /* IQKeyboardManagerConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerConstants.swift; path = IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift; sourceTree = "<group>"; }; - 25BED61676B1924AF5C8D3720E47D495 /* NBBottomSheet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NBBottomSheet-dummy.m"; sourceTree = "<group>"; }; - 28BD1A8F01342747611B8E9AAA31F4AE /* ImageViewer.swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ImageViewer.swift-Info.plist"; sourceTree = "<group>"; }; - 2CF31620D028C1CCA7BA4731E81B6C9D /* IQUIView+Hierarchy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+Hierarchy.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIView+Hierarchy.swift"; sourceTree = "<group>"; }; - 2F4A52BED6B36260F78D9759112FE066 /* NBBottomSheetPresentationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetPresentationController.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetPresentationController.swift; sourceTree = "<group>"; }; - 31A1FFA445855E537858C2A2102D8075 /* IQKeyboardManagerSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardManagerSwift-dummy.m"; sourceTree = "<group>"; }; - 33BE3AAA190504ECB00EE2CCC8637B5A /* Languages.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Languages.swift; path = "LanguageManager-iOS/Classes/Constants/Languages.swift"; sourceTree = "<group>"; }; + 2569FA6CF0041F826042344C8D002A7C /* EPExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPExtensions.swift; path = Pod/Classes/EPExtensions.swift; sourceTree = "<group>"; }; + 28B9F2046C635AE195E6439A2BAFD804 /* NBBottomSheetController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetController.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetController.swift; sourceTree = "<group>"; }; + 2A8DF5F2709E91F83E60451BDD4CB21F /* NBBottomSheet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = NBBottomSheet.modulemap; sourceTree = "<group>"; }; + 2F4950EB2B8365F46BC56A064AD48BF6 /* NBBottomSheetPresentationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetPresentationController.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetPresentationController.swift; sourceTree = "<group>"; }; 3438B9790556194C521D4C9806D29C85 /* Pods-MiniScanner */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-MiniScanner"; path = Pods_MiniScanner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 34C3DB226A6195FDA912228C88553462 /* UIImage+NextPrevious.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImage+NextPrevious.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/UIImage+NextPrevious.swift"; sourceTree = "<group>"; }; - 3563182E7A1BECE34BE1DBF63C4520C2 /* IQKeyboardManagerSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-prefix.pch"; sourceTree = "<group>"; }; - 35A738047E0EB5A57E08000F04795C07 /* Toast-Swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Toast-Swift-umbrella.h"; sourceTree = "<group>"; }; - 37275DD2C6E89B8A1B330D98EEAA7D43 /* ImageViewer_swift.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ImageViewer_swift.h; path = Sources/ImageViewer_swift/ImageViewer_swift.h; sourceTree = "<group>"; }; - 392B95135956F8BFD2BD794C459E180A /* IQKeyboardInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardInfo.swift; path = IQKeyboardManagerSwift/LIsteners/Info/IQKeyboardInfo.swift; sourceTree = "<group>"; }; - 399EBA1EABB335DCBE4EF1388CF69190 /* ViewDirection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ViewDirection.swift; path = "LanguageManager-iOS/Classes/Constants/ViewDirection.swift"; sourceTree = "<group>"; }; 3B6258C4E2C1059AABC67D66F9314FE8 /* Pods-MiniScanner-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-MiniScanner-acknowledgements.markdown"; sourceTree = "<group>"; }; + 3C53B8519BC6ACB20FAB10CD35EA45E4 /* NBBottomSheet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NBBottomSheet.debug.xcconfig; sourceTree = "<group>"; }; + 3CB35CAE22A8D6C0BE783A689D5D3541 /* EPSignature-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EPSignature-dummy.m"; sourceTree = "<group>"; }; 3DFAC6F70B9CECADF5873F487AF082BA /* EPSignature */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = EPSignature; path = EPSignature.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 3F570B7AD8949CD4D893BABFC492E5AC /* NBBottomSheet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NBBottomSheet.debug.xcconfig; sourceTree = "<group>"; }; - 4132102B3811026C0FA8B7512EBC2601 /* EPSignature-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EPSignature-dummy.m"; sourceTree = "<group>"; }; - 414C89E33EB4D8A44D82A4E98DE5565E /* IQTextFieldViewListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewListener.swift; path = IQKeyboardManagerSwift/LIsteners/IQTextFieldViewListener.swift; sourceTree = "<group>"; }; - 42E4F8E67126057EC888EFDC10BA3DDD /* EPSignatureViewController.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = EPSignatureViewController.xib; path = Pod/Classes/EPSignatureViewController.xib; sourceTree = "<group>"; }; - 448795080C247DAF7C36FE881781B848 /* NBBottomSheet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NBBottomSheet.release.xcconfig; sourceTree = "<group>"; }; - 46773385F05CC946146AADCD857D60A1 /* IQTitleBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTitleBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift; sourceTree = "<group>"; }; - 49CA089DA67BE142B04058B852447756 /* ImageViewer.swift */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ImageViewer.swift; path = ImageViewer_swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4BDFA192FA55BABEAA2B2318E0D18194 /* IQKeyboardManagerSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardManagerSwift.modulemap; sourceTree = "<group>"; }; - 4C78A52926C4D71DB286DB2E918A83D2 /* Toast-Swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Toast-Swift.debug.xcconfig"; sourceTree = "<group>"; }; - 4EA3D8A888A9CB6D2589EB69034D4EB8 /* UIView_Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIView_Extensions.swift; path = Sources/ImageViewer_swift/UIView_Extensions.swift; sourceTree = "<group>"; }; - 4EF1A9B4B0069DCB3CD78CE9AFDFB4AB /* UIView+Direction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Direction.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Direction.swift"; sourceTree = "<group>"; }; - 4F01860EA41E94EA9E52A6FC477110E6 /* IQKeyboardReturnKeyHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardReturnKeyHandler.swift; path = IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler.swift; sourceTree = "<group>"; }; - 50D4DC65480D7A44E964D6E47FE20D5D /* ImageViewerOption.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageViewerOption.swift; path = Sources/ImageViewer_swift/ImageViewerOption.swift; sourceTree = "<group>"; }; - 527814487B4E944AB1448A2B1F3DF1A3 /* IQKeyboardListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardListener.swift; path = IQKeyboardManagerSwift/LIsteners/IQKeyboardListener.swift; sourceTree = "<group>"; }; - 53738E1E5D1A90F125908C4D7EE82271 /* NBBottomSheet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NBBottomSheet-umbrella.h"; sourceTree = "<group>"; }; - 57947335957481465C8757C3D7561A44 /* NBBottomSheet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NBBottomSheet.h; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheet.h; sourceTree = "<group>"; }; - 5EC3502DA31CDA1300AF35C0EEDA995B /* EPSignature.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EPSignature.release.xcconfig; sourceTree = "<group>"; }; - 5ED73ECDE4EEF35880CEFF7186CE0396 /* Toast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Toast.swift; path = Toast/Toast.swift; sourceTree = "<group>"; }; - 6181C5C905D6F417E99706D739C8A3A1 /* IQPreviousNextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPreviousNextView.swift; path = IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift; sourceTree = "<group>"; }; - 61AC252473E61EBEA2741BD3B62C44C1 /* IQBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift; sourceTree = "<group>"; }; - 61FC27EB607964064FBFB4EF73C223F9 /* EPSignature.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = EPSignature.modulemap; sourceTree = "<group>"; }; - 644434A62AD15BCD099A235BCC219949 /* IQInvocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQInvocation.swift; path = IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift; sourceTree = "<group>"; }; - 6473C16F43F7217C13AEA5FBA6C8247F /* LanguageManager-iOS */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "LanguageManager-iOS"; path = LanguageManager_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6707BED408DD2CD2F9C73030CA1BD766 /* LanguageManager-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "LanguageManager-iOS.modulemap"; sourceTree = "<group>"; }; - 6B3A8FDD9AAB273950ECF930388BD5D0 /* ImageViewer.swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ImageViewer.swift.release.xcconfig; sourceTree = "<group>"; }; - 6BC7142EB2F11A8117CF9C4CE7773D77 /* NBBottomSheetController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetController.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetController.swift; sourceTree = "<group>"; }; - 71F05D20AA997D5AE1787F2CE525E52F /* LanguageManager-iOS-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LanguageManager-iOS-Info.plist"; sourceTree = "<group>"; }; - 728666BCFE7936C71FA476DB880E4A29 /* Toast-Swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Toast-Swift.modulemap"; sourceTree = "<group>"; }; - 7315BFBE8EBD0F2C0D6CE97F982C9069 /* UIImageView_Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIImageView_Extensions.swift; path = Sources/ImageViewer_swift/UIImageView_Extensions.swift; sourceTree = "<group>"; }; - 74AF036DAB58C01137D6C9CB10E6C533 /* Toast-Swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Toast-Swift.release.xcconfig"; sourceTree = "<group>"; }; - 755CF0A8E8DCD17EEC04D495FD4FD4EE /* ImageViewerTransitionPresentationManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageViewerTransitionPresentationManager.swift; path = Sources/ImageViewer_swift/ImageViewerTransitionPresentationManager.swift; sourceTree = "<group>"; }; - 757EB6FDC52B1FC003926AA07A86E8C5 /* IQToolbarPlaceholderConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbarPlaceholderConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQToolbarPlaceholderConfiguration.swift; sourceTree = "<group>"; }; - 75FCC307A8979A99234E9D57DB4070DF /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQKeyboardManagerSwift/PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; - 7785B233B8110C51D40D5C00B38DA9F6 /* IQBarButtonItemConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItemConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQBarButtonItemConfiguration.swift; sourceTree = "<group>"; }; + 55096EB5A40F7CB24180EDC9F3EC511B /* EPSignature.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EPSignature.debug.xcconfig; sourceTree = "<group>"; }; + 5801546255F9EF1F65284B93A54FA593 /* NBBottomSheet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NBBottomSheet-prefix.pch"; sourceTree = "<group>"; }; + 5D07C1C57799623C9E72ED017D80D19A /* EPSignature-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EPSignature-prefix.pch"; sourceTree = "<group>"; }; + 63983AAB4B4FBF961A8D588A0320085A /* EPSignature.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EPSignature.release.xcconfig; sourceTree = "<group>"; }; 798C61760B9BC4B07BC60D42FCC09855 /* Pods-MiniScanner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MiniScanner.release.xcconfig"; sourceTree = "<group>"; }; - 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 7A2884C9052277C44C03FFD8F25BF442 /* UIButton+Direction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIButton+Direction.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/UIButton+Direction.swift"; sourceTree = "<group>"; }; + 7A8BAAC480D87C215DBF67E7EE52B0B0 /* EPSignature-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EPSignature-umbrella.h"; sourceTree = "<group>"; }; + 7C077B03D2AE345D24123F5F0A56768B /* NBBottomSheet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NBBottomSheet-umbrella.h"; sourceTree = "<group>"; }; 7CC191E7994C3C7161A6641B457C9166 /* Pods-MiniScanner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MiniScanner.debug.xcconfig"; sourceTree = "<group>"; }; - 7F91C093ED7B1A58B9C59D5B85DC0374 /* LanguageManager-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LanguageManager-iOS-dummy.m"; sourceTree = "<group>"; }; - 800A055821CD9469429504DE4CCE6122 /* EPSignatureViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPSignatureViewController.swift; path = Pod/Classes/EPSignatureViewController.swift; sourceTree = "<group>"; }; - 83431FDB65F2866361AB9532FF025216 /* IQToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbar.swift; path = IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift; sourceTree = "<group>"; }; - 8356D39B1D7094CE112D14AFFCB419B7 /* UIImageView+Direction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImageView+Direction.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/UIImageView+Direction.swift"; sourceTree = "<group>"; }; - 840FA0B75AF62912A30DDC66B647ED98 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 882DE46DEF022FCA0242F83E7F7B7F02 /* IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardManagerSwift-Info.plist"; sourceTree = "<group>"; }; - 8915E92A00CE442AA263798AD59B7BB7 /* IQUIViewController+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIViewController+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIViewController+Additions.swift"; sourceTree = "<group>"; }; + 86B11CF937B3CCD0B6A6541ADF4B8C64 /* EPSignature-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "EPSignature-Info.plist"; sourceTree = "<group>"; }; 89194C84FD5E62D9D2C9F2157676FF5C /* Pods-MiniScanner-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MiniScanner-acknowledgements.plist"; sourceTree = "<group>"; }; - 8B45F1E127A5460E4F1CEB650879E86E /* EPSignature-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EPSignature-prefix.pch"; sourceTree = "<group>"; }; - 8C83EE9856D1BC7B5B1CF020B88300C3 /* IQKeyboardManagerSwift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.release.xcconfig; sourceTree = "<group>"; }; - 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; path = IQKeyboardManagerSwift.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 900BB5CFA6B47D29E110933244F58449 /* IQKeyboardManager+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Internal.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift"; sourceTree = "<group>"; }; 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = NBBottomSheet; path = NBBottomSheet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 94126D4475C67118A54EAC862AD7E0CD /* LanguageManager-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "LanguageManager-iOS.debug.xcconfig"; sourceTree = "<group>"; }; - 960AF11999B2A894B5169B422BF12FE4 /* LanguageManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LanguageManager.swift; path = "LanguageManager-iOS/Classes/Main/LanguageManager.swift"; sourceTree = "<group>"; }; - 986588FA5B8D6CC0E5530E3CECCCC3E3 /* ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; sourceTree = "<group>"; }; - 9A125CBE2A769DCFA442C7B9188F5994 /* IQKeyboardManagerSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-umbrella.h"; sourceTree = "<group>"; }; - 9CA428D4C35A8536978E9F7F7BF2CD69 /* EPExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPExtensions.swift; path = Pod/Classes/EPExtensions.swift; sourceTree = "<group>"; }; + 9311D435EB5FF3E24E7932038D65D926 /* EPSignatureViewController.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = EPSignatureViewController.xib; path = Pod/Classes/EPSignatureViewController.xib; sourceTree = "<group>"; }; + 976B8085DC82710F9620DDCE5BA70A32 /* NBBottomSheet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NBBottomSheet-dummy.m"; sourceTree = "<group>"; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - A025312E27CC4428B6F282B56E170285 /* IQActiveConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQActiveConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQActiveConfiguration.swift; sourceTree = "<group>"; }; - A42DBD2F42D55606EEBA514009498B87 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - A47BFF07791E42C6657FC3087754BAD6 /* Toast-Swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Toast-Swift-Info.plist"; sourceTree = "<group>"; }; - A5345F3CC88236EB713719B9684427DF /* DefaultsKeys.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DefaultsKeys.swift; path = "LanguageManager-iOS/Classes/Constants/DefaultsKeys.swift"; sourceTree = "<group>"; }; - A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IQKeyboardManagerSwift; path = IQKeyboardManagerSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - ABA9DA8FFEEBB28AFAE5AD2CC777CB91 /* ResourceBundle-Toast-Swift-Toast-Swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-Toast-Swift-Toast-Swift-Info.plist"; sourceTree = "<group>"; }; - AC5EBA409FC91D5F3514DF63A0EB302A /* NBConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBConfiguration.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBConfiguration.swift; sourceTree = "<group>"; }; - AD594C3B4E7F741A5F6879BAD9102D6D /* IQKeyboardManager+UITextFieldViewNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+UITextFieldViewNotification.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UITextFieldViewNotification.swift"; sourceTree = "<group>"; }; + AC9E338141AAC78DA68EE142D4F21C5B /* NBConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBConfiguration.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBConfiguration.swift; sourceTree = "<group>"; }; B2968141E72EA49CC006DD4020E3386D /* Pods-MiniScanner-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-MiniScanner-frameworks.sh"; sourceTree = "<group>"; }; - B909045ECCACC331FFB279B2914C204D /* ImageViewer.swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ImageViewer.swift.debug.xcconfig; sourceTree = "<group>"; }; - BB669260C593F0C98A48A67C79F93654 /* ImageViewer.swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ImageViewer.swift.modulemap; sourceTree = "<group>"; }; - BDA3A2057897901810C098FD336C8AF1 /* LanguageManager-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "LanguageManager-iOS.release.xcconfig"; sourceTree = "<group>"; }; - BF0BFBEA7071CD62777B3661360B1AFD /* Toast-Swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Toast-Swift-dummy.m"; sourceTree = "<group>"; }; - BF3176DC2042D2AFEF0BA4111003347A /* IQRootControllerConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQRootControllerConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQRootControllerConfiguration.swift; sourceTree = "<group>"; }; - C304A8D46A2901CF4AF3087887521E23 /* ImageCarouselViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageCarouselViewController.swift; path = Sources/ImageViewer_swift/ImageCarouselViewController.swift; sourceTree = "<group>"; }; - C5437535C54228EA8C21A56543CF29E6 /* Storage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Storage.swift; path = "LanguageManager-iOS/Classes/Helpers/Storage.swift"; sourceTree = "<group>"; }; - CBEAEBC0755D340B7F6FA4178AE27247 /* ImageViewer.swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ImageViewer.swift-dummy.m"; sourceTree = "<group>"; }; - D212C85376884AB5C4668DBA49DDDF49 /* NBBottomSheetDismissalTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetDismissalTransition.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetDismissalTransition.swift; sourceTree = "<group>"; }; - D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast-Swift */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Toast-Swift"; path = Toast_Swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D7ED05BB6BF7CF061D65143C8602A089 /* EPSignatureView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPSignatureView.swift; path = Pod/Classes/EPSignatureView.swift; sourceTree = "<group>"; }; - D993BAD38A74EE07695C9A67B6B030F5 /* NBBottomSheetPresentationTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetPresentationTransition.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetPresentationTransition.swift; sourceTree = "<group>"; }; - DB65FF2384D17A78A0FEEC199D4B6471 /* IQKeyboardManager+UIKeyboardNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+UIKeyboardNotification.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UIKeyboardNotification.swift"; sourceTree = "<group>"; }; - DFC2CF7F3DB84126054E7B91671C8CFC /* ImageViewer.swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ImageViewer.swift-umbrella.h"; sourceTree = "<group>"; }; - E0FD4D5BFC8D1FE707AEC705F835CA64 /* IQTextFieldViewInfoModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewInfoModel.swift; path = IQKeyboardManagerSwift/ReturnKeyHandler/IQTextFieldViewInfoModel.swift; sourceTree = "<group>"; }; - E1A2D57CBACA8ECA7983B665AA1DCBAA /* ImageLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageLoader.swift; path = Sources/ImageViewer_swift/ImageLoader.swift; sourceTree = "<group>"; }; - E1A9AD095397B2255EC06CD994A45C27 /* IQTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextView.swift; path = IQKeyboardManagerSwift/IQTextView/IQTextView.swift; sourceTree = "<group>"; }; - E3FFF35EA6937D981529D8ADB68D7149 /* LanguageManager-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LanguageManager-iOS-prefix.pch"; sourceTree = "<group>"; }; - E5DCAF7921EC15817545E2C255BC27D5 /* NBBottomSheetTransitioningDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetTransitioningDelegate.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetTransitioningDelegate.swift; sourceTree = "<group>"; }; - E632447E16D33D207376AF32085001C2 /* Toast-Swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Toast-Swift-prefix.pch"; sourceTree = "<group>"; }; - E98B25A00C5BD8E1CFC837B364AFF2C4 /* IQUIView+IQKeyboardToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbar.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift"; sourceTree = "<group>"; }; - E99695448BB4EA162AD177960DBEC1BB /* UINavigationBar_Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UINavigationBar_Extensions.swift; path = Sources/ImageViewer_swift/UINavigationBar_Extensions.swift; sourceTree = "<group>"; }; - EB5D2831F4E5E4871D0F33815B0B42E9 /* IQKeyboardManager+Toolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Toolbar.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Toolbar.swift"; sourceTree = "<group>"; }; - EBA888243160DAAFEC320F5098062E86 /* NBBottomSheetConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetConfiguration.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetConfiguration.swift; sourceTree = "<group>"; }; - ED4A8A32A2BA818D6750EA676864B21E /* IQKeyboardManagerSwift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.debug.xcconfig; sourceTree = "<group>"; }; + BBBB6316686E0FE5CC7D0C42A233FD6E /* NBBottomSheetPresentationTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetPresentationTransition.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetPresentationTransition.swift; sourceTree = "<group>"; }; + CE267668BA96CB7E325F61FA76B6CBCD /* EPSignatureViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPSignatureViewController.swift; path = Pod/Classes/EPSignatureViewController.swift; sourceTree = "<group>"; }; + D18CB03EE27978DC40D668C05314A6B0 /* NBBottomSheetConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetConfiguration.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetConfiguration.swift; sourceTree = "<group>"; }; + D245E0514AAC1A2B9A6D5EA2F383E90F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + E9C78D20E2201A31400729E65C02D0EE /* EPSignature.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = EPSignature.modulemap; sourceTree = "<group>"; }; + EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; ED8E7C0ED656254925E918D5509B655C /* Pods-MiniScanner-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MiniScanner-Info.plist"; sourceTree = "<group>"; }; - EE11B8C15341D9CDF0972B066E0E18F9 /* IQNSArray+Sort.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQNSArray+Sort.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQNSArray+Sort.swift"; sourceTree = "<group>"; }; - F083907BC24781499FDEE1620DB89110 /* ImageItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageItem.swift; path = Sources/ImageViewer_swift/ImageItem.swift; sourceTree = "<group>"; }; - F0DB6F7515A79425490CE2C45D5814E8 /* IQKeyboardConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQKeyboardConfiguration.swift; sourceTree = "<group>"; }; - F21A8CF35A5BAD74338B110E46C3BF14 /* IQKeyboardManager+ToolbarActions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+ToolbarActions.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ToolbarActions.swift"; sourceTree = "<group>"; }; - F25B6571CD63C88398C6F771FBBB849F /* IQScrollViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQScrollViewConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQScrollViewConfiguration.swift; sourceTree = "<group>"; }; - F25D3C2E5BF000995E17A861BB22DD94 /* LanguageManager-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LanguageManager-iOS-umbrella.h"; sourceTree = "<group>"; }; - F380A7B97D811F1D7D0159785FEB5473 /* NBBottomSheet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "NBBottomSheet-Info.plist"; sourceTree = "<group>"; }; - F4B89D5340E9A3D93064EC99E8091E15 /* String+Localiz.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Localiz.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/String+Localiz.swift"; sourceTree = "<group>"; }; - F78BE606608A1BC48D0AB5488FEF220A /* ImageViewerController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageViewerController.swift; path = Sources/ImageViewer_swift/ImageViewerController.swift; sourceTree = "<group>"; }; - F8B3FE298AA4920F9F99DFA06A8264AF /* IQKeyboardManager+Position.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Position.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift"; sourceTree = "<group>"; }; - F9809B6990F88A273200A6FB37E4386E /* IQUIView+IQKeyboardToolbarDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbarDeprecated.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbarDeprecated.swift"; sourceTree = "<group>"; }; - FA0AE8DAC8B9B26E60024F35F90C031C /* ImageViewer.swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ImageViewer.swift-prefix.pch"; sourceTree = "<group>"; }; - FA1E0D437A4D407F87C451B63A101490 /* EPSignature-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EPSignature-umbrella.h"; sourceTree = "<group>"; }; - FAD7429B43D433D607F44E0D774B1A31 /* IQUIScrollView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIScrollView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIScrollView+Additions.swift"; sourceTree = "<group>"; }; - FF8F72EB71F1ED1788133B0C5B21824E /* IQUITableView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITableView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUITableView+Additions.swift"; sourceTree = "<group>"; }; + EE091368FE4AA6BC0970A84D8EB62AD4 /* NBBottomSheet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NBBottomSheet.h; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheet.h; sourceTree = "<group>"; }; + F1A7A270201697B289B6FB51C01059DF /* NBBottomSheet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "NBBottomSheet-Info.plist"; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 2686166D750D9A28FD494C120A7ECBC7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3130A51D7DFF19A4DA7649752464E8ED /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 98A4D0D5928A35C7DB3D9272187789A8 /* CoreGraphics.framework in Frameworks */, - 23D11E770DF137CBF802A30E2B19C054 /* Foundation.framework in Frameworks */, - B1A786B1A2F11EBD1BF77305EEB710F5 /* QuartzCore.framework in Frameworks */, - 7586D1882B962E1E31C28CC6396668B3 /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 4D23CB6E5CEA9796267913468D4A3CD3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -353,29 +101,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 57B95D66C3370F069FEC3D2A767EBFBD /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 2039598D067E7D39727311391022D3A3 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 74614F0446C86F10EA58F6139161612E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A576A6B66E7FF54F0F06CD54397C2528 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - CC897E71556348377B4C31307E208C80 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; A84948CC16232EA7760DD790F66BA178 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -385,169 +110,79 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A8F124B5A31CA96F8BB2B1EBB150409F /* Frameworks */ = { + F878B015DE915196E6CDB414876A2B35 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AB8B0F2C54FFDE0C5809F687C973CF12 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B09EAF63101BB931799B76BFC00BB24A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - FB7D384E51C9E1ADAEE50C64A694BB61 /* Foundation.framework in Frameworks */, - 59D76AD0378678CB0D3236021BF96A09 /* QuartzCore.framework in Frameworks */, + 564CDC78EAAD3D537143C0AF32A296E8 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 032D25D94DBF91B3F0ABC9D99E9FC1D9 /* NBBottomSheet */ = { + 009E190AEFA92AD872F6491697F92847 /* Resources */ = { isa = PBXGroup; children = ( - 57947335957481465C8757C3D7561A44 /* NBBottomSheet.h */, - EBA888243160DAAFEC320F5098062E86 /* NBBottomSheetConfiguration.swift */, - 6BC7142EB2F11A8117CF9C4CE7773D77 /* NBBottomSheetController.swift */, - D212C85376884AB5C4668DBA49DDDF49 /* NBBottomSheetDismissalTransition.swift */, - 2F4A52BED6B36260F78D9759112FE066 /* NBBottomSheetPresentationController.swift */, - D993BAD38A74EE07695C9A67B6B030F5 /* NBBottomSheetPresentationTransition.swift */, - E5DCAF7921EC15817545E2C255BC27D5 /* NBBottomSheetTransitioningDelegate.swift */, - AC5EBA409FC91D5F3514DF63A0EB302A /* NBConfiguration.swift */, - 9F3A59021095ECD66E140B6A8208DA34 /* Support Files */, + 9311D435EB5FF3E24E7932038D65D926 /* EPSignatureViewController.xib */, ); - name = NBBottomSheet; - path = NBBottomSheet; + name = Resources; sourceTree = "<group>"; }; - 057933695580A91C40058E7303120BF9 /* Toast-Swift */ = { + 05D8EDC9B75500E1478BF0AD8E3426C9 /* Pods */ = { isa = PBXGroup; children = ( - 5ED73ECDE4EEF35880CEFF7186CE0396 /* Toast.swift */, - 8448A62024F9FD395E1A45272F4081F3 /* Resources */, - F1C0679D23534E1B672FF4CF79D7FDE8 /* Support Files */, + 4306011EC4EE5AB5253F21F92C121EFC /* EPSignature */, + 1F8A9269A103019BDF0927EE9B4D335B /* NBBottomSheet */, ); - name = "Toast-Swift"; - path = "Toast-Swift"; + name = Pods; sourceTree = "<group>"; }; - 19FB58719A93DC5C6346185907FB98E2 /* Support Files */ = { + 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */ = { isa = PBXGroup; children = ( - 4BDFA192FA55BABEAA2B2318E0D18194 /* IQKeyboardManagerSwift.modulemap */, - 31A1FFA445855E537858C2A2102D8075 /* IQKeyboardManagerSwift-dummy.m */, - 882DE46DEF022FCA0242F83E7F7B7F02 /* IQKeyboardManagerSwift-Info.plist */, - 3563182E7A1BECE34BE1DBF63C4520C2 /* IQKeyboardManagerSwift-prefix.pch */, - 9A125CBE2A769DCFA442C7B9188F5994 /* IQKeyboardManagerSwift-umbrella.h */, - ED4A8A32A2BA818D6750EA676864B21E /* IQKeyboardManagerSwift.debug.xcconfig */, - 8C83EE9856D1BC7B5B1CF020B88300C3 /* IQKeyboardManagerSwift.release.xcconfig */, - 986588FA5B8D6CC0E5530E3CECCCC3E3 /* ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist */, + 59DA5C1F72E1D5BABC43EACBA672C3BA /* iOS */, ); - name = "Support Files"; - path = "../Target Support Files/IQKeyboardManagerSwift"; + name = Frameworks; sourceTree = "<group>"; }; - 2ECD98B880F14C0DBA951963456BCED5 /* LanguageManager-iOS */ = { + 1F8A9269A103019BDF0927EE9B4D335B /* NBBottomSheet */ = { isa = PBXGroup; children = ( - A5345F3CC88236EB713719B9684427DF /* DefaultsKeys.swift */, - 960AF11999B2A894B5169B422BF12FE4 /* LanguageManager.swift */, - 33BE3AAA190504ECB00EE2CCC8637B5A /* Languages.swift */, - C5437535C54228EA8C21A56543CF29E6 /* Storage.swift */, - F4B89D5340E9A3D93064EC99E8091E15 /* String+Localiz.swift */, - 7A2884C9052277C44C03FFD8F25BF442 /* UIButton+Direction.swift */, - 8356D39B1D7094CE112D14AFFCB419B7 /* UIImageView+Direction.swift */, - 4EF1A9B4B0069DCB3CD78CE9AFDFB4AB /* UIView+Direction.swift */, - 0668626D9926F6CE57864C747CEEF9E4 /* UIView+Swizzling.swift */, - 399EBA1EABB335DCBE4EF1388CF69190 /* ViewDirection.swift */, - C5B5A18F62DDB06582A3FF48BE32AB13 /* Support Files */, + EE091368FE4AA6BC0970A84D8EB62AD4 /* NBBottomSheet.h */, + D18CB03EE27978DC40D668C05314A6B0 /* NBBottomSheetConfiguration.swift */, + 28B9F2046C635AE195E6439A2BAFD804 /* NBBottomSheetController.swift */, + 0286553719EE7714F31E1EE269820352 /* NBBottomSheetDismissalTransition.swift */, + 2F4950EB2B8365F46BC56A064AD48BF6 /* NBBottomSheetPresentationController.swift */, + BBBB6316686E0FE5CC7D0C42A233FD6E /* NBBottomSheetPresentationTransition.swift */, + 0FA6383580051D555D63451B7A81EE88 /* NBBottomSheetTransitioningDelegate.swift */, + AC9E338141AAC78DA68EE142D4F21C5B /* NBConfiguration.swift */, + B51EDF87BDDABDD39EFDF561D09C6D84 /* Support Files */, ); - name = "LanguageManager-iOS"; - path = "LanguageManager-iOS"; + name = NBBottomSheet; + path = NBBottomSheet; sourceTree = "<group>"; }; - 3835C2651F2BAB04D14D0BF78128B876 /* IQKeyboardManagerSwift */ = { + 4306011EC4EE5AB5253F21F92C121EFC /* EPSignature */ = { isa = PBXGroup; children = ( - A025312E27CC4428B6F282B56E170285 /* IQActiveConfiguration.swift */, - 61AC252473E61EBEA2741BD3B62C44C1 /* IQBarButtonItem.swift */, - 7785B233B8110C51D40D5C00B38DA9F6 /* IQBarButtonItemConfiguration.swift */, - 644434A62AD15BCD099A235BCC219949 /* IQInvocation.swift */, - F0DB6F7515A79425490CE2C45D5814E8 /* IQKeyboardConfiguration.swift */, - 392B95135956F8BFD2BD794C459E180A /* IQKeyboardInfo.swift */, - 527814487B4E944AB1448A2B1F3DF1A3 /* IQKeyboardListener.swift */, - 0C0AA180F4F800D5683FC4071F398BC1 /* IQKeyboardManager.swift */, - 0420E9FB2A54DB55ECF95432358052BB /* IQKeyboardManager+Debug.swift */, - 14887AB6864ADB209F4850C2CEFE1513 /* IQKeyboardManager+Deprecated.swift */, - 900BB5CFA6B47D29E110933244F58449 /* IQKeyboardManager+Internal.swift */, - F8B3FE298AA4920F9F99DFA06A8264AF /* IQKeyboardManager+Position.swift */, - EB5D2831F4E5E4871D0F33815B0B42E9 /* IQKeyboardManager+Toolbar.swift */, - F21A8CF35A5BAD74338B110E46C3BF14 /* IQKeyboardManager+ToolbarActions.swift */, - DB65FF2384D17A78A0FEEC199D4B6471 /* IQKeyboardManager+UIKeyboardNotification.swift */, - AD594C3B4E7F741A5F6879BAD9102D6D /* IQKeyboardManager+UITextFieldViewNotification.swift */, - 08503E375F5DA3F7DE5AD83AB160CF40 /* IQKeyboardManagerCompatible.swift */, - 22F9A10C284AAB590E7C4E7A82AC4EC7 /* IQKeyboardManagerConstants.swift */, - 4F01860EA41E94EA9E52A6FC477110E6 /* IQKeyboardReturnKeyHandler.swift */, - 1359935F9974FC169C02584D31EB3ADC /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */, - 12E8962DF01D0F73372CED14D7E4F6D4 /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */, - EE11B8C15341D9CDF0972B066E0E18F9 /* IQNSArray+Sort.swift */, - 1A667127B2C277764D5CAD60BBAC94CA /* IQPlaceholderable.swift */, - 6181C5C905D6F417E99706D739C8A3A1 /* IQPreviousNextView.swift */, - BF3176DC2042D2AFEF0BA4111003347A /* IQRootControllerConfiguration.swift */, - F25B6571CD63C88398C6F771FBBB849F /* IQScrollViewConfiguration.swift */, - 17005516AECC44640576DA5164FDB65E /* IQTextFieldViewInfo.swift */, - E0FD4D5BFC8D1FE707AEC705F835CA64 /* IQTextFieldViewInfoModel.swift */, - 414C89E33EB4D8A44D82A4E98DE5565E /* IQTextFieldViewListener.swift */, - E1A9AD095397B2255EC06CD994A45C27 /* IQTextView.swift */, - 46773385F05CC946146AADCD857D60A1 /* IQTitleBarButtonItem.swift */, - 83431FDB65F2866361AB9532FF025216 /* IQToolbar.swift */, - 0CCEDF67E74AC4A5480D38D4CD3467F4 /* IQToolbarConfiguration.swift */, - 757EB6FDC52B1FC003926AA07A86E8C5 /* IQToolbarPlaceholderConfiguration.swift */, - 005537FD214FB7AF75AEABD1381F2ED7 /* IQUICollectionView+Additions.swift */, - FAD7429B43D433D607F44E0D774B1A31 /* IQUIScrollView+Additions.swift */, - FF8F72EB71F1ED1788133B0C5B21824E /* IQUITableView+Additions.swift */, - 18CBA833812BB5BA28B7D9A586E13FD6 /* IQUITextFieldView+Additions.swift */, - 2CF31620D028C1CCA7BA4731E81B6C9D /* IQUIView+Hierarchy.swift */, - E98B25A00C5BD8E1CFC837B364AFF2C4 /* IQUIView+IQKeyboardToolbar.swift */, - F9809B6990F88A273200A6FB37E4386E /* IQUIView+IQKeyboardToolbarDeprecated.swift */, - 8915E92A00CE442AA263798AD59B7BB7 /* IQUIViewController+Additions.swift */, - 34C3DB226A6195FDA912228C88553462 /* UIImage+NextPrevious.swift */, - DD1618276A12914B36D04790EC560046 /* Resources */, - 19FB58719A93DC5C6346185907FB98E2 /* Support Files */, + 2569FA6CF0041F826042344C8D002A7C /* EPExtensions.swift */, + 15F9A321C9AB81F483ECE0E416A881C0 /* EPSignatureView.swift */, + CE267668BA96CB7E325F61FA76B6CBCD /* EPSignatureViewController.swift */, + 009E190AEFA92AD872F6491697F92847 /* Resources */, + 8BBB5D6887F53A525D1A845FDC973674 /* Support Files */, ); - name = IQKeyboardManagerSwift; - path = IQKeyboardManagerSwift; - sourceTree = "<group>"; - }; - 5FAF7BEDEBF8EC038908BCC4F25D5B6F /* Products */ = { - isa = PBXGroup; - children = ( - 3DFAC6F70B9CECADF5873F487AF082BA /* EPSignature */, - 49CA089DA67BE142B04058B852447756 /* ImageViewer.swift */, - A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift */, - 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */, - 6473C16F43F7217C13AEA5FBA6C8247F /* LanguageManager-iOS */, - 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet */, - 3438B9790556194C521D4C9806D29C85 /* Pods-MiniScanner */, - D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast-Swift */, - 13FD39576595D8A884BF5166065C5236 /* Toast-Swift-Toast-Swift */, - ); - name = Products; + name = EPSignature; + path = EPSignature; sourceTree = "<group>"; }; - 643FA737CF4D99DB71EC64A0705FD1DD /* Pods */ = { + 59DA5C1F72E1D5BABC43EACBA672C3BA /* iOS */ = { isa = PBXGroup; children = ( - FC05667939FD86F5E40BF5FF2D51FD34 /* EPSignature */, - BC0FD30EE9CB3C73086BCC2F7176688C /* ImageViewer.swift */, - 3835C2651F2BAB04D14D0BF78128B876 /* IQKeyboardManagerSwift */, - 2ECD98B880F14C0DBA951963456BCED5 /* LanguageManager-iOS */, - 032D25D94DBF91B3F0ABC9D99E9FC1D9 /* NBBottomSheet */, - 057933695580A91C40058E7303120BF9 /* Toast-Swift */, + EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */, + D245E0514AAC1A2B9A6D5EA2F383E90F /* UIKit.framework */, ); - name = Pods; + name = iOS; sourceTree = "<group>"; }; 67EA5FFBCFCDDED6A445407A917EE0A1 /* Targets Support Files */ = { @@ -558,122 +193,47 @@ name = "Targets Support Files"; sourceTree = "<group>"; }; - 7F904AB9460D49414EFAC8F33152234A /* Support Files */ = { + 8BBB5D6887F53A525D1A845FDC973674 /* Support Files */ = { isa = PBXGroup; children = ( - 61FC27EB607964064FBFB4EF73C223F9 /* EPSignature.modulemap */, - 4132102B3811026C0FA8B7512EBC2601 /* EPSignature-dummy.m */, - 16C65F87206DFAED7027521770B46247 /* EPSignature-Info.plist */, - 8B45F1E127A5460E4F1CEB650879E86E /* EPSignature-prefix.pch */, - FA1E0D437A4D407F87C451B63A101490 /* EPSignature-umbrella.h */, - 17C3E8DCDAA1F639684AE52919D2802D /* EPSignature.debug.xcconfig */, - 5EC3502DA31CDA1300AF35C0EEDA995B /* EPSignature.release.xcconfig */, + E9C78D20E2201A31400729E65C02D0EE /* EPSignature.modulemap */, + 3CB35CAE22A8D6C0BE783A689D5D3541 /* EPSignature-dummy.m */, + 86B11CF937B3CCD0B6A6541ADF4B8C64 /* EPSignature-Info.plist */, + 5D07C1C57799623C9E72ED017D80D19A /* EPSignature-prefix.pch */, + 7A8BAAC480D87C215DBF67E7EE52B0B0 /* EPSignature-umbrella.h */, + 55096EB5A40F7CB24180EDC9F3EC511B /* EPSignature.debug.xcconfig */, + 63983AAB4B4FBF961A8D588A0320085A /* EPSignature.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/EPSignature"; sourceTree = "<group>"; }; - 8448A62024F9FD395E1A45272F4081F3 /* Resources */ = { - isa = PBXGroup; - children = ( - 0321B651FFD7BE92EE97707E2CD9077C /* PrivacyInfo.xcprivacy */, - ); - name = Resources; - sourceTree = "<group>"; - }; - 9F3A59021095ECD66E140B6A8208DA34 /* Support Files */ = { + B51EDF87BDDABDD39EFDF561D09C6D84 /* Support Files */ = { isa = PBXGroup; children = ( - 105B1722B8849106475AB5FE35F15855 /* NBBottomSheet.modulemap */, - 25BED61676B1924AF5C8D3720E47D495 /* NBBottomSheet-dummy.m */, - F380A7B97D811F1D7D0159785FEB5473 /* NBBottomSheet-Info.plist */, - 0D549B41652BBAC21AB153BD9D3B6E40 /* NBBottomSheet-prefix.pch */, - 53738E1E5D1A90F125908C4D7EE82271 /* NBBottomSheet-umbrella.h */, - 3F570B7AD8949CD4D893BABFC492E5AC /* NBBottomSheet.debug.xcconfig */, - 448795080C247DAF7C36FE881781B848 /* NBBottomSheet.release.xcconfig */, + 2A8DF5F2709E91F83E60451BDD4CB21F /* NBBottomSheet.modulemap */, + 976B8085DC82710F9620DDCE5BA70A32 /* NBBottomSheet-dummy.m */, + F1A7A270201697B289B6FB51C01059DF /* NBBottomSheet-Info.plist */, + 5801546255F9EF1F65284B93A54FA593 /* NBBottomSheet-prefix.pch */, + 7C077B03D2AE345D24123F5F0A56768B /* NBBottomSheet-umbrella.h */, + 3C53B8519BC6ACB20FAB10CD35EA45E4 /* NBBottomSheet.debug.xcconfig */, + 165646F2F6EF5448EE905D7E83235E81 /* NBBottomSheet.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/NBBottomSheet"; sourceTree = "<group>"; }; - B1B84997529E71EAC38EF71A8006F594 /* Support Files */ = { - isa = PBXGroup; - children = ( - BB669260C593F0C98A48A67C79F93654 /* ImageViewer.swift.modulemap */, - CBEAEBC0755D340B7F6FA4178AE27247 /* ImageViewer.swift-dummy.m */, - 28BD1A8F01342747611B8E9AAA31F4AE /* ImageViewer.swift-Info.plist */, - FA0AE8DAC8B9B26E60024F35F90C031C /* ImageViewer.swift-prefix.pch */, - DFC2CF7F3DB84126054E7B91671C8CFC /* ImageViewer.swift-umbrella.h */, - B909045ECCACC331FFB279B2914C204D /* ImageViewer.swift.debug.xcconfig */, - 6B3A8FDD9AAB273950ECF930388BD5D0 /* ImageViewer.swift.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/ImageViewer.swift"; - sourceTree = "<group>"; - }; - BA4F31F07263C99FC76E66D632A59F09 /* Frameworks */ = { - isa = PBXGroup; - children = ( - F9D206BABE81E6BF0B9B23880B238CC7 /* iOS */, - ); - name = Frameworks; - sourceTree = "<group>"; - }; - BC0FD30EE9CB3C73086BCC2F7176688C /* ImageViewer.swift */ = { - isa = PBXGroup; - children = ( - C304A8D46A2901CF4AF3087887521E23 /* ImageCarouselViewController.swift */, - F083907BC24781499FDEE1620DB89110 /* ImageItem.swift */, - E1A2D57CBACA8ECA7983B665AA1DCBAA /* ImageLoader.swift */, - 37275DD2C6E89B8A1B330D98EEAA7D43 /* ImageViewer_swift.h */, - F78BE606608A1BC48D0AB5488FEF220A /* ImageViewerController.swift */, - 50D4DC65480D7A44E964D6E47FE20D5D /* ImageViewerOption.swift */, - 06BB8B8E6B78949B39F1CAE146BA9B36 /* ImageViewerTheme.swift */, - 755CF0A8E8DCD17EEC04D495FD4FD4EE /* ImageViewerTransitionPresentationManager.swift */, - 0415ED93CA1C6E9CA7EC01BB2ACE70F3 /* SimpleImageDatasource.swift */, - 7315BFBE8EBD0F2C0D6CE97F982C9069 /* UIImageView_Extensions.swift */, - E99695448BB4EA162AD177960DBEC1BB /* UINavigationBar_Extensions.swift */, - 4EA3D8A888A9CB6D2589EB69034D4EB8 /* UIView_Extensions.swift */, - B1B84997529E71EAC38EF71A8006F594 /* Support Files */, - ); - name = ImageViewer.swift; - path = ImageViewer.swift; - sourceTree = "<group>"; - }; - C5B5A18F62DDB06582A3FF48BE32AB13 /* Support Files */ = { - isa = PBXGroup; - children = ( - 6707BED408DD2CD2F9C73030CA1BD766 /* LanguageManager-iOS.modulemap */, - 7F91C093ED7B1A58B9C59D5B85DC0374 /* LanguageManager-iOS-dummy.m */, - 71F05D20AA997D5AE1787F2CE525E52F /* LanguageManager-iOS-Info.plist */, - E3FFF35EA6937D981529D8ADB68D7149 /* LanguageManager-iOS-prefix.pch */, - F25D3C2E5BF000995E17A861BB22DD94 /* LanguageManager-iOS-umbrella.h */, - 94126D4475C67118A54EAC862AD7E0CD /* LanguageManager-iOS.debug.xcconfig */, - BDA3A2057897901810C098FD336C8AF1 /* LanguageManager-iOS.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/LanguageManager-iOS"; - sourceTree = "<group>"; - }; CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - BA4F31F07263C99FC76E66D632A59F09 /* Frameworks */, - 643FA737CF4D99DB71EC64A0705FD1DD /* Pods */, - 5FAF7BEDEBF8EC038908BCC4F25D5B6F /* Products */, + 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */, + 05D8EDC9B75500E1478BF0AD8E3426C9 /* Pods */, + F5C3923B4670EB0FDE0960B441ABF085 /* Products */, 67EA5FFBCFCDDED6A445407A917EE0A1 /* Targets Support Files */, ); sourceTree = "<group>"; }; - DD1618276A12914B36D04790EC560046 /* Resources */ = { - isa = PBXGroup; - children = ( - 75FCC307A8979A99234E9D57DB4070DF /* PrivacyInfo.xcprivacy */, - ); - name = Resources; - sourceTree = "<group>"; - }; EC99F10DC5C191754BE16B2F6AC739A8 /* Pods-MiniScanner */ = { isa = PBXGroup; children = ( @@ -691,90 +251,19 @@ path = "Target Support Files/Pods-MiniScanner"; sourceTree = "<group>"; }; - F1C0679D23534E1B672FF4CF79D7FDE8 /* Support Files */ = { + F5C3923B4670EB0FDE0960B441ABF085 /* Products */ = { isa = PBXGroup; children = ( - ABA9DA8FFEEBB28AFAE5AD2CC777CB91 /* ResourceBundle-Toast-Swift-Toast-Swift-Info.plist */, - 728666BCFE7936C71FA476DB880E4A29 /* Toast-Swift.modulemap */, - BF0BFBEA7071CD62777B3661360B1AFD /* Toast-Swift-dummy.m */, - A47BFF07791E42C6657FC3087754BAD6 /* Toast-Swift-Info.plist */, - E632447E16D33D207376AF32085001C2 /* Toast-Swift-prefix.pch */, - 35A738047E0EB5A57E08000F04795C07 /* Toast-Swift-umbrella.h */, - 4C78A52926C4D71DB286DB2E918A83D2 /* Toast-Swift.debug.xcconfig */, - 74AF036DAB58C01137D6C9CB10E6C533 /* Toast-Swift.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Toast-Swift"; - sourceTree = "<group>"; - }; - F9D206BABE81E6BF0B9B23880B238CC7 /* iOS */ = { - isa = PBXGroup; - children = ( - 840FA0B75AF62912A30DDC66B647ED98 /* CoreGraphics.framework */, - 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */, - A42DBD2F42D55606EEBA514009498B87 /* QuartzCore.framework */, - 04D60AC13D33197690A05C641925DDDA /* UIKit.framework */, - ); - name = iOS; - sourceTree = "<group>"; - }; - FC05667939FD86F5E40BF5FF2D51FD34 /* EPSignature */ = { - isa = PBXGroup; - children = ( - 9CA428D4C35A8536978E9F7F7BF2CD69 /* EPExtensions.swift */, - D7ED05BB6BF7CF061D65143C8602A089 /* EPSignatureView.swift */, - 800A055821CD9469429504DE4CCE6122 /* EPSignatureViewController.swift */, - FEAC82163E4F6A3FB262494701F865DF /* Resources */, - 7F904AB9460D49414EFAC8F33152234A /* Support Files */, - ); - name = EPSignature; - path = EPSignature; - sourceTree = "<group>"; - }; - FEAC82163E4F6A3FB262494701F865DF /* Resources */ = { - isa = PBXGroup; - children = ( - 42E4F8E67126057EC888EFDC10BA3DDD /* EPSignatureViewController.xib */, + 3DFAC6F70B9CECADF5873F487AF082BA /* EPSignature */, + 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet */, + 3438B9790556194C521D4C9806D29C85 /* Pods-MiniScanner */, ); - name = Resources; + name = Products; sourceTree = "<group>"; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 116CC8963ED1B6B79A4F4C4A66B573EB /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 4ED2AE6187D476E7382AD69C5908A586 /* ImageViewer.swift-umbrella.h in Headers */, - FD4FA33C33903D85344344979508E750 /* ImageViewer_swift.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1E7BDC089B22E2F58EEE97E5CC40B0DB /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 9E704111CAAACBF64155A576FC337323 /* LanguageManager-iOS-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 77150D3DA409E22AAAE3AC967B0FDC17 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 3573FA382FBE08F99039CED491DB9FF0 /* IQKeyboardManagerSwift-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9B6764F56E23F50BCA863630CB9001BF /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - D181D49DE6D7885B2834AF4E96170171 /* Toast-Swift-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 9C1E51FBB23B8F5AC126898FEDD00F52 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -784,11 +273,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - C59973939DC99E2D619E094BE8A74971 /* Headers */ = { + BFB0ADB8D236C1B1E46AAE0FB8CFFA92 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 5AB7C5D27CA6D49509FB1B87C95D5C9B /* Pods-MiniScanner-umbrella.h in Headers */, + 2A1CD6399519B60D49B7E499577EC252 /* Pods-MiniScanner-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -803,24 +292,6 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 332B68EA081CEBFDA8881E0F51713DED /* ImageViewer.swift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 8651241C94D90BE69E6FFE2D39BB8C01 /* Build configuration list for PBXNativeTarget "ImageViewer.swift" */; - buildPhases = ( - 116CC8963ED1B6B79A4F4C4A66B573EB /* Headers */, - FB7FC773E10161906541E42252995885 /* Sources */, - A8F124B5A31CA96F8BB2B1EBB150409F /* Frameworks */, - 14DD49BAF7998B809B18E24666C97E03 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ImageViewer.swift; - productName = ImageViewer_swift; - productReference = 49CA089DA67BE142B04058B852447756 /* ImageViewer.swift */; - productType = "com.apple.product-type.framework"; - }; 3CAF5EBFE5D1550CFF58AEC93594990A /* EPSignature */ = { isa = PBXNativeTarget; buildConfigurationList = E72F7AA6A99974A3F5B74D95CB9A76A6 /* Build configuration list for PBXNativeTarget "EPSignature" */; @@ -841,22 +312,18 @@ }; 4372AB6A3C495222906A1ABFD39A4463 /* Pods-MiniScanner */ = { isa = PBXNativeTarget; - buildConfigurationList = 573C4B61987DE43DB07309DF76E91F57 /* Build configuration list for PBXNativeTarget "Pods-MiniScanner" */; + buildConfigurationList = A3FB6F9A17FD1FDA6C39D9D9B1615E6D /* Build configuration list for PBXNativeTarget "Pods-MiniScanner" */; buildPhases = ( - C59973939DC99E2D619E094BE8A74971 /* Headers */, - 85FED63764B284FB31C59CF84326CA5D /* Sources */, - 57B95D66C3370F069FEC3D2A767EBFBD /* Frameworks */, - A0352E70EC4026D4C15300F4384CCD09 /* Resources */, + BFB0ADB8D236C1B1E46AAE0FB8CFFA92 /* Headers */, + 7F5775AF8BDA90F9FB28C370A09AF51C /* Sources */, + F878B015DE915196E6CDB414876A2B35 /* Frameworks */, + 083719B11F8317BA2AB4A96F14AA4138 /* Resources */, ); buildRules = ( ); dependencies = ( - 9EE2DC39C966CF6157073047D32D3567 /* PBXTargetDependency */, - 22B96AF61476060D000F74D1FD3F42BC /* PBXTargetDependency */, - C4834FD6836AC1E1C00FD3EC69B3F24D /* PBXTargetDependency */, - CFFBF7541D02CD9E126B56101FF1B167 /* PBXTargetDependency */, - F3511CC1DE13C59E9E7A56D18C64F4A8 /* PBXTargetDependency */, - 448B4450C1BEDB745BA75EA8A688A75C /* PBXTargetDependency */, + 2385F7DC3DC83F9ADB6E096CC98947C5 /* PBXTargetDependency */, + 2157F01990E15F66B12D0872A2D2AFE0 /* PBXTargetDependency */, ); name = "Pods-MiniScanner"; productName = Pods_MiniScanner; @@ -881,96 +348,6 @@ productReference = 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet */; productType = "com.apple.product-type.framework"; }; - 75F1EA88CB9544AB5CBE20DEC9A011AE /* LanguageManager-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 3E005A95330A065B56DC3405DE620CD6 /* Build configuration list for PBXNativeTarget "LanguageManager-iOS" */; - buildPhases = ( - 1E7BDC089B22E2F58EEE97E5CC40B0DB /* Headers */, - E4E13B13EC996935352882F0DB7D948C /* Sources */, - A576A6B66E7FF54F0F06CD54397C2528 /* Frameworks */, - 3B58EC4259531E84AFA63D59D1133D3E /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "LanguageManager-iOS"; - productName = LanguageManager_iOS; - productReference = 6473C16F43F7217C13AEA5FBA6C8247F /* LanguageManager-iOS */; - productType = "com.apple.product-type.framework"; - }; - 982A68D37F5DCBC1FC1FDC0BB2F0EB8E /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 3C874D3149242BE26EBEC83F2F026059 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift-IQKeyboardManagerSwift" */; - buildPhases = ( - B99E90C0A4D0714D983977A3E6D8F8A9 /* Sources */, - 2686166D750D9A28FD494C120A7ECBC7 /* Frameworks */, - AFA280B8122EDB2027C56FCD48174665 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; - productName = IQKeyboardManagerSwift; - productReference = 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */; - productType = "com.apple.product-type.bundle"; - }; - B490E7485944099E16C9CBD79119D1D4 /* IQKeyboardManagerSwift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 397157E58CC1977C23EB745CC0C04035 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift" */; - buildPhases = ( - 77150D3DA409E22AAAE3AC967B0FDC17 /* Headers */, - 335F86AE3E21D4BDAD21A4F79F2DA8F9 /* Sources */, - 3130A51D7DFF19A4DA7649752464E8ED /* Frameworks */, - 4A72A323CCD420112722EDFB4439C184 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 4A2BD12C47A8FD3098BB4FD950BB2E7B /* PBXTargetDependency */, - ); - name = IQKeyboardManagerSwift; - productName = IQKeyboardManagerSwift; - productReference = A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift */; - productType = "com.apple.product-type.framework"; - }; - B990BD87169C76A3ED3FE8A9258D91A3 /* Toast-Swift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2B1739CC185CEDE3A990F521808D3137 /* Build configuration list for PBXNativeTarget "Toast-Swift" */; - buildPhases = ( - 9B6764F56E23F50BCA863630CB9001BF /* Headers */, - 13C5F240F8D39EE11E8E48310FE556B5 /* Sources */, - B09EAF63101BB931799B76BFC00BB24A /* Frameworks */, - F7C0CC2CF9E43466CF842FCC6397F349 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 86065F13F2DC438F5A1719C5E7DD80F4 /* PBXTargetDependency */, - ); - name = "Toast-Swift"; - productName = Toast_Swift; - productReference = D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast-Swift */; - productType = "com.apple.product-type.framework"; - }; - C344E85893FCDEE5B70436E0A4A3472B /* Toast-Swift-Toast-Swift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 46E4E17E9F82D55726E7C0308E6EE21E /* Build configuration list for PBXNativeTarget "Toast-Swift-Toast-Swift" */; - buildPhases = ( - C93F80A352A36EE12F193CAD6EBC7404 /* Sources */, - 74614F0446C86F10EA58F6139161612E /* Frameworks */, - 2E6B25A0868EB909E6B174F336194BB6 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Toast-Swift-Toast-Swift"; - productName = "Toast-Swift"; - productReference = 13FD39576595D8A884BF5166065C5236 /* Toast-Swift-Toast-Swift */; - productType = "com.apple.product-type.bundle"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -989,51 +366,22 @@ en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 5FAF7BEDEBF8EC038908BCC4F25D5B6F /* Products */; + productRefGroup = F5C3923B4670EB0FDE0960B441ABF085 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 3CAF5EBFE5D1550CFF58AEC93594990A /* EPSignature */, - 332B68EA081CEBFDA8881E0F51713DED /* ImageViewer.swift */, - B490E7485944099E16C9CBD79119D1D4 /* IQKeyboardManagerSwift */, - 982A68D37F5DCBC1FC1FDC0BB2F0EB8E /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */, - 75F1EA88CB9544AB5CBE20DEC9A011AE /* LanguageManager-iOS */, 727C2007A89D1AD73613E3E2E22998E5 /* NBBottomSheet */, 4372AB6A3C495222906A1ABFD39A4463 /* Pods-MiniScanner */, - B990BD87169C76A3ED3FE8A9258D91A3 /* Toast-Swift */, - C344E85893FCDEE5B70436E0A4A3472B /* Toast-Swift-Toast-Swift */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 14DD49BAF7998B809B18E24666C97E03 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2E6B25A0868EB909E6B174F336194BB6 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 64F33F487DE5F9FE3C20F2C3FB5AB085 /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3B58EC4259531E84AFA63D59D1133D3E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4A72A323CCD420112722EDFB4439C184 /* Resources */ = { + 083719B11F8317BA2AB4A96F14AA4138 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4CDBAE55660ED186441E9E4EDE6B3D31 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1045,21 +393,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A0352E70EC4026D4C15300F4384CCD09 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AFA280B8122EDB2027C56FCD48174665 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C13C6459FE4D7B6CC28B9C99D34954EF /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; D0133C29AEDAF3E8111D05F827EE7C4E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1067,82 +400,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - F7C0CC2CF9E43466CF842FCC6397F349 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 237A96A092EA5A5B0CB41160BEA22E16 /* Toast-Swift-Toast-Swift in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 13C5F240F8D39EE11E8E48310FE556B5 /* Sources */ = { + 7F5775AF8BDA90F9FB28C370A09AF51C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F912129FB7C53C428FE247D6ECF633AC /* Toast.swift in Sources */, - 15F04D15A4DC87FF877C2857720F8D72 /* Toast-Swift-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 335F86AE3E21D4BDAD21A4F79F2DA8F9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B1BFC54288364884DDEAE75027BABE1A /* IQActiveConfiguration.swift in Sources */, - 8ED2E941DF0803C8AA331D0D8C722615 /* IQBarButtonItem.swift in Sources */, - 907FCA3049CAAF64B579D08D339D118D /* IQBarButtonItemConfiguration.swift in Sources */, - FDEFBFB34E35A4BB332264E0CACCF5D8 /* IQInvocation.swift in Sources */, - 9A00A25ED34A7687C62B02EBB76C1248 /* IQKeyboardConfiguration.swift in Sources */, - 24C699F9653980B77F44634EF44641C1 /* IQKeyboardInfo.swift in Sources */, - 8FDA28363A5E49017498FD69AAA8F59F /* IQKeyboardListener.swift in Sources */, - F9DE1A3C506E506F4DA4B7714359E8D1 /* IQKeyboardManager.swift in Sources */, - 674C6B2E317E657D8EAD3CC73F608540 /* IQKeyboardManager+Debug.swift in Sources */, - D3D1F63C30E95311B687FA924B872C15 /* IQKeyboardManager+Deprecated.swift in Sources */, - 08822D4E49DB8618D27BAEDED7911733 /* IQKeyboardManager+Internal.swift in Sources */, - EBB5F245DBEEB13D48F09E0DD75A6C95 /* IQKeyboardManager+Position.swift in Sources */, - D88C2EA8ACCC0DE031D9E7A768062E2C /* IQKeyboardManager+Toolbar.swift in Sources */, - 9F78D56352F7D932DCEBE416C668C7BA /* IQKeyboardManager+ToolbarActions.swift in Sources */, - 4017CF2B3EE45E7E579E68E6FCFBF732 /* IQKeyboardManager+UIKeyboardNotification.swift in Sources */, - 82950EE4BDD57F74749742A3E1566073 /* IQKeyboardManager+UITextFieldViewNotification.swift in Sources */, - 597994C3AE8908B1E462BC03AC8C23FB /* IQKeyboardManagerCompatible.swift in Sources */, - AE7D065E1D48171258FD8F07F7CD592C /* IQKeyboardManagerConstants.swift in Sources */, - 733CF7F19636AFF4A97708DFDE0AE53C /* IQKeyboardManagerSwift-dummy.m in Sources */, - 42B931814C7B25871333D5DA9A0E2A41 /* IQKeyboardReturnKeyHandler.swift in Sources */, - 154362EFC8EC0F61F54E24B09266DEB1 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift in Sources */, - 1C3881B0113D3219398154E16AA4413C /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift in Sources */, - 54BAE903D82C39392943869866252D93 /* IQNSArray+Sort.swift in Sources */, - 5F0469C5B154DC20B844EA2A9B7F8D42 /* IQPlaceholderable.swift in Sources */, - 14063E1AF70EDDC9F33C8E08DCA0BEF3 /* IQPreviousNextView.swift in Sources */, - DE3B5070A41194C21898D92DBFFCBE4C /* IQRootControllerConfiguration.swift in Sources */, - F681FB74C756E0AAFFDC0D414EBD8FA0 /* IQScrollViewConfiguration.swift in Sources */, - 0615219BFD2EBBE27FF41C2C8816791E /* IQTextFieldViewInfo.swift in Sources */, - 5F62DAE67CF97B7C42471EA91B79AA9A /* IQTextFieldViewInfoModel.swift in Sources */, - 0A4DB572ACD97EC492C4E93A0FFB2E47 /* IQTextFieldViewListener.swift in Sources */, - 38CBE3196BDD577B5E72BC65508A77F8 /* IQTextView.swift in Sources */, - B9CF878085ABA2991A9C6F12F9B9DAB3 /* IQTitleBarButtonItem.swift in Sources */, - 701904768C60A3F9060518DD58EC2882 /* IQToolbar.swift in Sources */, - E8770A941545BB190D76BF7E5262797D /* IQToolbarConfiguration.swift in Sources */, - 34BDB069A96125DAF2FEF6FF93A3F6AF /* IQToolbarPlaceholderConfiguration.swift in Sources */, - 3452528F3B9B79AD67D45FEA174F71E4 /* IQUICollectionView+Additions.swift in Sources */, - 94F893223EB4C1C0F829C17900114AFA /* IQUIScrollView+Additions.swift in Sources */, - A5E69CC013C4311C8AF52C7F7AB095C9 /* IQUITableView+Additions.swift in Sources */, - 8086BD2DB5F1A0CC88E4F3386570A21C /* IQUITextFieldView+Additions.swift in Sources */, - 103FE4EEFF1BE8BAD0FA047987AFED74 /* IQUIView+Hierarchy.swift in Sources */, - D8322CBE73400EE4382D1A042D2D53D3 /* IQUIView+IQKeyboardToolbar.swift in Sources */, - 08C234F2981017EEF271582022F339F3 /* IQUIView+IQKeyboardToolbarDeprecated.swift in Sources */, - CC96488C33BFB3BCEE4A665A438CAC36 /* IQUIViewController+Additions.swift in Sources */, - E483FA24409A56AAEDF8A1DEC5F55F16 /* UIImage+NextPrevious.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 85FED63764B284FB31C59CF84326CA5D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DCD7B925667D6834875DECB61303162A /* Pods-MiniScanner-dummy.m in Sources */, + 29E84D1618616538382E25E994B8BAE3 /* Pods-MiniScanner-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1157,270 +422,42 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B99E90C0A4D0714D983977A3E6D8F8A9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C93F80A352A36EE12F193CAD6EBC7404 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E4E13B13EC996935352882F0DB7D948C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6D55C34EF7CE4718D8B2FE6CE95C5674 /* DefaultsKeys.swift in Sources */, - 0718CCD0E19136B8DB2A7D4C6585E3ED /* LanguageManager.swift in Sources */, - 6418A8A5D32E73D898AB155952180B0C /* LanguageManager-iOS-dummy.m in Sources */, - 852E6AB133CF7BDE7DE7D836AE201868 /* Languages.swift in Sources */, - D2A598E7174826A7B04036E7AC8AA3B6 /* Storage.swift in Sources */, - 6F875A0983E3FB0E0CC0BDA6376F73E8 /* String+Localiz.swift in Sources */, - AF715064CF6458D3D89BB563DFDB00C6 /* UIButton+Direction.swift in Sources */, - 10D1A87F45AFB52D2B34D9ABA1A86105 /* UIImageView+Direction.swift in Sources */, - 3E21C9612D00C6B92D3FCE3589917729 /* UIView+Direction.swift in Sources */, - 48A4D5E4D954CB4212E540A92570BBF0 /* UIView+Swizzling.swift in Sources */, - F7C3A4FED58118F9ADC5B4AF9A10B9FC /* ViewDirection.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; F504107C31E77537B61A2F14571BB10C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D46F90A0F6FC8F1D2AA4129BC2A934DD /* NBBottomSheet-dummy.m in Sources */, - F56475ACE1A1CFE322DBFA35CDA1A204 /* NBBottomSheetConfiguration.swift in Sources */, - F7E2900D9AF732C627F184A258F48DF0 /* NBBottomSheetController.swift in Sources */, - 8EAF267614A5AB6196921C15E719AE35 /* NBBottomSheetDismissalTransition.swift in Sources */, - 178BF9CAADACBF4E8FE49574A848C12A /* NBBottomSheetPresentationController.swift in Sources */, - FB0A76B10B5927494469B16B28CF2B9A /* NBBottomSheetPresentationTransition.swift in Sources */, - 3402A26F7BBA359E410BEB33C8B74254 /* NBBottomSheetTransitioningDelegate.swift in Sources */, - 8234444617FD513B81095D920BFA796B /* NBConfiguration.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FB7FC773E10161906541E42252995885 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B6EF20981D365C6945DA37B8D524D59C /* ImageCarouselViewController.swift in Sources */, - 0EF056C9B77C11BF2BEF81888B17769C /* ImageItem.swift in Sources */, - 524FC16C683888AB0462F4DD6BDB5725 /* ImageLoader.swift in Sources */, - CE3D249A1D64388C72BBB40C4E5818C8 /* ImageViewer.swift-dummy.m in Sources */, - 61E476CDBAC0F819982D258267423D8F /* ImageViewerController.swift in Sources */, - CC25A043BA48D6042178B5B5148723B6 /* ImageViewerOption.swift in Sources */, - BBF6B5C579EAC85F4A26DA1F994B89E0 /* ImageViewerTheme.swift in Sources */, - D809C0A429034849D9AFDF320D6CC6B3 /* ImageViewerTransitionPresentationManager.swift in Sources */, - EECD3881761258240C223D7FF03C0DD1 /* SimpleImageDatasource.swift in Sources */, - 15BEDD8F76A1ADF659597113D96C97CF /* UIImageView_Extensions.swift in Sources */, - 07F7FEADEEC19C1818C92894406EE311 /* UINavigationBar_Extensions.swift in Sources */, - F01E61A9BFB56BB44FCE5558797FAF80 /* UIView_Extensions.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 22B96AF61476060D000F74D1FD3F42BC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = IQKeyboardManagerSwift; - target = B490E7485944099E16C9CBD79119D1D4 /* IQKeyboardManagerSwift */; - targetProxy = AA3237DE651554C28EA760562DFF81C8 /* PBXContainerItemProxy */; - }; - 448B4450C1BEDB745BA75EA8A688A75C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Toast-Swift"; - target = B990BD87169C76A3ED3FE8A9258D91A3 /* Toast-Swift */; - targetProxy = 5A95F7AC3875947C31796EDB0B856459 /* PBXContainerItemProxy */; - }; - 4A2BD12C47A8FD3098BB4FD950BB2E7B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; - target = 982A68D37F5DCBC1FC1FDC0BB2F0EB8E /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */; - targetProxy = 3A741A805CA84A8E49872D4C96838AC8 /* PBXContainerItemProxy */; - }; - 86065F13F2DC438F5A1719C5E7DD80F4 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Toast-Swift-Toast-Swift"; - target = C344E85893FCDEE5B70436E0A4A3472B /* Toast-Swift-Toast-Swift */; - targetProxy = D174B0FB299B16CD41E3019F93E429F4 /* PBXContainerItemProxy */; - }; - 9EE2DC39C966CF6157073047D32D3567 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = EPSignature; - target = 3CAF5EBFE5D1550CFF58AEC93594990A /* EPSignature */; - targetProxy = 79663F39931A50F6454880483831F20F /* PBXContainerItemProxy */; - }; - C4834FD6836AC1E1C00FD3EC69B3F24D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ImageViewer.swift; - target = 332B68EA081CEBFDA8881E0F51713DED /* ImageViewer.swift */; - targetProxy = F1763414C63B74B894B708614A5129AE /* PBXContainerItemProxy */; - }; - CFFBF7541D02CD9E126B56101FF1B167 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "LanguageManager-iOS"; - target = 75F1EA88CB9544AB5CBE20DEC9A011AE /* LanguageManager-iOS */; - targetProxy = 6675BD8F3B1EEE8B78C450C1B94DC727 /* PBXContainerItemProxy */; - }; - F3511CC1DE13C59E9E7A56D18C64F4A8 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = NBBottomSheet; - target = 727C2007A89D1AD73613E3E2E22998E5 /* NBBottomSheet */; - targetProxy = 8DA8415961388AABC31B257BE3AD32C9 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 0B8ECEE9A19E3873AA2196631B3DA06C /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8C83EE9856D1BC7B5B1CF020B88300C3 /* IQKeyboardManagerSwift.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardManagerSwift"; - IBSC_MODULE = IQKeyboardManagerSwift; - INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardManagerSwift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 0F8CB5C565508E62AB65834BB57034B4 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7CC191E7994C3C7161A6641B457C9166 /* Pods-MiniScanner.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 0FA1FBAB3886CB709C39BA2DF5FAD314 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = ED4A8A32A2BA818D6750EA676864B21E /* IQKeyboardManagerSwift.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardManagerSwift"; - IBSC_MODULE = IQKeyboardManagerSwift; - INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardManagerSwift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - 335888624B863A53F482B2E5A5CB861C /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4C78A52926C4D71DB286DB2E918A83D2 /* Toast-Swift.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Toast-Swift/Toast-Swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Toast-Swift/Toast-Swift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/Toast-Swift/Toast-Swift.modulemap"; - PRODUCT_MODULE_NAME = Toast_Swift; - PRODUCT_NAME = Toast_Swift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D46F90A0F6FC8F1D2AA4129BC2A934DD /* NBBottomSheet-dummy.m in Sources */, + F56475ACE1A1CFE322DBFA35CDA1A204 /* NBBottomSheetConfiguration.swift in Sources */, + F7E2900D9AF732C627F184A258F48DF0 /* NBBottomSheetController.swift in Sources */, + 8EAF267614A5AB6196921C15E719AE35 /* NBBottomSheetDismissalTransition.swift in Sources */, + 178BF9CAADACBF4E8FE49574A848C12A /* NBBottomSheetPresentationController.swift in Sources */, + FB0A76B10B5927494469B16B28CF2B9A /* NBBottomSheetPresentationTransition.swift in Sources */, + 3402A26F7BBA359E410BEB33C8B74254 /* NBBottomSheetTransitioningDelegate.swift in Sources */, + 8234444617FD513B81095D920BFA796B /* NBConfiguration.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; }; - 39440596D0B39AE8ECC2717121684FEC /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = BDA3A2057897901810C098FD336C8AF1 /* LanguageManager-iOS.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/LanguageManager-iOS/LanguageManager-iOS-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/LanguageManager-iOS/LanguageManager-iOS-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/LanguageManager-iOS/LanguageManager-iOS.modulemap"; - PRODUCT_MODULE_NAME = LanguageManager_iOS; - PRODUCT_NAME = LanguageManager_iOS; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 2157F01990E15F66B12D0872A2D2AFE0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = NBBottomSheet; + target = 727C2007A89D1AD73613E3E2E22998E5 /* NBBottomSheet */; + targetProxy = EA27ADD31350A678EFD8A97FBFAC0C6A /* PBXContainerItemProxy */; + }; + 2385F7DC3DC83F9ADB6E096CC98947C5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = EPSignature; + target = 3CAF5EBFE5D1550CFF58AEC93594990A /* EPSignature */; + targetProxy = FA9818C323BDDC5CE32AB6B1347E6DF3 /* PBXContainerItemProxy */; }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ 40133D3EB8F5F41DEF101CB7F221DB6B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 17C3E8DCDAA1F639684AE52919D2802D /* EPSignature.debug.xcconfig */; + baseConfigurationReference = 55096EB5A40F7CB24180EDC9F3EC511B /* EPSignature.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1452,42 +489,7 @@ }; name = Debug; }; - 4214354B215D0E0E97976853BE9BC6C8 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B909045ECCACC331FFB279B2914C204D /* ImageViewer.swift.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/ImageViewer.swift/ImageViewer.swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ImageViewer.swift/ImageViewer.swift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/ImageViewer.swift/ImageViewer.swift.modulemap"; - PRODUCT_MODULE_NAME = ImageViewer_swift; - PRODUCT_NAME = ImageViewer_swift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 4BA02157CE3459D31B18098900DBDC03 /* Release */ = { + 8697CB3C21F286E42F47DD9911761EB8 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 798C61760B9BC4B07BC60D42FCC09855 /* Pods-MiniScanner.release.xcconfig */; buildSettings = { @@ -1525,98 +527,9 @@ }; name = Release; }; - 587F6847DBCBE9579002441D0DB73E24 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 74AF036DAB58C01137D6C9CB10E6C533 /* Toast-Swift.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Toast-Swift/Toast-Swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Toast-Swift/Toast-Swift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/Toast-Swift/Toast-Swift.modulemap"; - PRODUCT_MODULE_NAME = Toast_Swift; - PRODUCT_NAME = Toast_Swift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 5AC66F34D6495E28B4F94DD62C4B576D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 74AF036DAB58C01137D6C9CB10E6C533 /* Toast-Swift.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Toast-Swift"; - IBSC_MODULE = Toast_Swift; - INFOPLIST_FILE = "Target Support Files/Toast-Swift/ResourceBundle-Toast-Swift-Toast-Swift-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = "Toast-Swift"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 631A35B62346118D661FD5917F1B5E3F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6B3A8FDD9AAB273950ECF930388BD5D0 /* ImageViewer.swift.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/ImageViewer.swift/ImageViewer.swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ImageViewer.swift/ImageViewer.swift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/ImageViewer.swift/ImageViewer.swift.modulemap"; - PRODUCT_MODULE_NAME = ImageViewer_swift; - PRODUCT_NAME = ImageViewer_swift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; 8C7488EEB2FF7D44EDD6A1FBA48C75CC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5EC3502DA31CDA1300AF35C0EEDA995B /* EPSignature.release.xcconfig */; + baseConfigurationReference = 63983AAB4B4FBF961A8D588A0320085A /* EPSignature.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1777,78 +690,9 @@ }; name = Release; }; - A73A28CEE205ACFB6072250615C7D39D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 94126D4475C67118A54EAC862AD7E0CD /* LanguageManager-iOS.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/LanguageManager-iOS/LanguageManager-iOS-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/LanguageManager-iOS/LanguageManager-iOS-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/LanguageManager-iOS/LanguageManager-iOS.modulemap"; - PRODUCT_MODULE_NAME = LanguageManager_iOS; - PRODUCT_NAME = LanguageManager_iOS; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B3CF11682A60F02B60820C17EE93D35E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = ED4A8A32A2BA818D6750EA676864B21E /* IQKeyboardManagerSwift.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap"; - PRODUCT_MODULE_NAME = IQKeyboardManagerSwift; - PRODUCT_NAME = IQKeyboardManagerSwift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.9; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; B89AE063F35BBC5F3358209AF37E6D16 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3F570B7AD8949CD4D893BABFC492E5AC /* NBBottomSheet.debug.xcconfig */; + baseConfigurationReference = 3C53B8519BC6ACB20FAB10CD35EA45E4 /* NBBottomSheet.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1880,27 +724,11 @@ }; name = Debug; }; - C0D99FD8A2F12560912EB2607DBF6B65 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4C78A52926C4D71DB286DB2E918A83D2 /* Toast-Swift.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Toast-Swift"; - IBSC_MODULE = Toast_Swift; - INFOPLIST_FILE = "Target Support Files/Toast-Swift/ResourceBundle-Toast-Swift-Toast-Swift-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = "Toast-Swift"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - C15C4E31ADF19556825A2743AEF62A77 /* Release */ = { + DE6ADE9FF7EA40B8F0775290864539DD /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8C83EE9856D1BC7B5B1CF020B88300C3 /* IQKeyboardManagerSwift.release.xcconfig */; + baseConfigurationReference = 7CC191E7994C3C7161A6641B457C9166 /* Pods-MiniScanner.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1910,32 +738,32 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap"; - PRODUCT_MODULE_NAME = IQKeyboardManagerSwift; - PRODUCT_NAME = IQKeyboardManagerSwift; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.9; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; F8AD79C5141E28EAE67B8011B5C3B8F5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 448795080C247DAF7C36FE881781B848 /* NBBottomSheet.release.xcconfig */; + baseConfigurationReference = 165646F2F6EF5448EE905D7E83235E81 /* NBBottomSheet.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1971,51 +799,6 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 2B1739CC185CEDE3A990F521808D3137 /* Build configuration list for PBXNativeTarget "Toast-Swift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 335888624B863A53F482B2E5A5CB861C /* Debug */, - 587F6847DBCBE9579002441D0DB73E24 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 397157E58CC1977C23EB745CC0C04035 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3CF11682A60F02B60820C17EE93D35E /* Debug */, - C15C4E31ADF19556825A2743AEF62A77 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 3C874D3149242BE26EBEC83F2F026059 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift-IQKeyboardManagerSwift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0FA1FBAB3886CB709C39BA2DF5FAD314 /* Debug */, - 0B8ECEE9A19E3873AA2196631B3DA06C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 3E005A95330A065B56DC3405DE620CD6 /* Build configuration list for PBXNativeTarget "LanguageManager-iOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A73A28CEE205ACFB6072250615C7D39D /* Debug */, - 39440596D0B39AE8ECC2717121684FEC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 46E4E17E9F82D55726E7C0308E6EE21E /* Build configuration list for PBXNativeTarget "Toast-Swift-Toast-Swift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C0D99FD8A2F12560912EB2607DBF6B65 /* Debug */, - 5AC66F34D6495E28B4F94DD62C4B576D /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -2025,15 +808,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 573C4B61987DE43DB07309DF76E91F57 /* Build configuration list for PBXNativeTarget "Pods-MiniScanner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0F8CB5C565508E62AB65834BB57034B4 /* Debug */, - 4BA02157CE3459D31B18098900DBDC03 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 5D7A5BCA6DF599B98DA57AB77B8B2795 /* Build configuration list for PBXNativeTarget "NBBottomSheet" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -2043,11 +817,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8651241C94D90BE69E6FFE2D39BB8C01 /* Build configuration list for PBXNativeTarget "ImageViewer.swift" */ = { + A3FB6F9A17FD1FDA6C39D9D9B1615E6D /* Build configuration list for PBXNativeTarget "Pods-MiniScanner" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4214354B215D0E0E97976853BE9BC6C8 /* Debug */, - 631A35B62346118D661FD5917F1B5E3F /* Release */, + DE6ADE9FF7EA40B8F0775290864539DD /* Debug */, + 8697CB3C21F286E42F47DD9911761EB8 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/IQKeyboardManagerSwift-IQKeyboardManagerSwift.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/IQKeyboardManagerSwift-IQKeyboardManagerSwift.xcscheme deleted file mode 100644 index 4a29221..0000000 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/IQKeyboardManagerSwift-IQKeyboardManagerSwift.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Scheme - LastUpgradeVersion = "1500" - version = "1.3"> - <BuildAction - parallelizeBuildables = "YES" - buildImplicitDependencies = "YES"> - <BuildActionEntries> - <BuildActionEntry - buildForTesting = "YES" - buildForRunning = "YES" - buildForProfiling = "YES" - buildForArchiving = "YES" - buildForAnalyzing = "YES"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "982A68D37F5DCBC1FC1FDC0BB2F0EB8E" - BuildableName = "IQKeyboardManagerSwift.bundle" - BlueprintName = "IQKeyboardManagerSwift-IQKeyboardManagerSwift" - ReferencedContainer = "container:Pods.xcodeproj"> - </BuildableReference> - </BuildActionEntry> - </BuildActionEntries> - </BuildAction> - <TestAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> - <Testables> - </Testables> - </TestAction> - <LaunchAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - launchStyle = "0" - useCustomWorkingDirectory = "NO" - ignoresPersistentStateOnLaunch = "NO" - debugDocumentVersioning = "YES" - debugServiceExtension = "internal" - allowLocationSimulation = "YES"> - </LaunchAction> - <ProfileAction - buildConfiguration = "Release" - shouldUseLaunchSchemeArgsEnv = "YES" - savedToolIdentifier = "" - useCustomWorkingDirectory = "NO" - debugDocumentVersioning = "YES"> - </ProfileAction> - <AnalyzeAction - buildConfiguration = "Debug"> - </AnalyzeAction> - <ArchiveAction - buildConfiguration = "Release" - revealArchiveInOrganizer = "YES"> - </ArchiveAction> -</Scheme> diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/IQKeyboardManagerSwift.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/IQKeyboardManagerSwift.xcscheme deleted file mode 100644 index 78a923d..0000000 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/IQKeyboardManagerSwift.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Scheme - LastUpgradeVersion = "1500" - version = "1.3"> - <BuildAction - parallelizeBuildables = "YES" - buildImplicitDependencies = "YES"> - <BuildActionEntries> - <BuildActionEntry - buildForTesting = "YES" - buildForRunning = "YES" - buildForProfiling = "YES" - buildForArchiving = "YES" - buildForAnalyzing = "YES"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "B490E7485944099E16C9CBD79119D1D4" - BuildableName = "IQKeyboardManagerSwift.framework" - BlueprintName = "IQKeyboardManagerSwift" - ReferencedContainer = "container:Pods.xcodeproj"> - </BuildableReference> - </BuildActionEntry> - </BuildActionEntries> - </BuildAction> - <TestAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> - <Testables> - </Testables> - </TestAction> - <LaunchAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - launchStyle = "0" - useCustomWorkingDirectory = "NO" - ignoresPersistentStateOnLaunch = "NO" - debugDocumentVersioning = "YES" - debugServiceExtension = "internal" - allowLocationSimulation = "YES"> - </LaunchAction> - <ProfileAction - buildConfiguration = "Release" - shouldUseLaunchSchemeArgsEnv = "YES" - savedToolIdentifier = "" - useCustomWorkingDirectory = "NO" - debugDocumentVersioning = "YES"> - </ProfileAction> - <AnalyzeAction - buildConfiguration = "Debug"> - </AnalyzeAction> - <ArchiveAction - buildConfiguration = "Release" - revealArchiveInOrganizer = "YES"> - </ArchiveAction> -</Scheme> diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/ImageViewer.swift.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/ImageViewer.swift.xcscheme deleted file mode 100644 index d857409..0000000 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/ImageViewer.swift.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Scheme - LastUpgradeVersion = "1500" - version = "1.3"> - <BuildAction - parallelizeBuildables = "YES" - buildImplicitDependencies = "YES"> - <BuildActionEntries> - <BuildActionEntry - buildForTesting = "YES" - buildForRunning = "YES" - buildForProfiling = "YES" - buildForArchiving = "YES" - buildForAnalyzing = "YES"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "332B68EA081CEBFDA8881E0F51713DED" - BuildableName = "ImageViewer_swift.framework" - BlueprintName = "ImageViewer.swift" - ReferencedContainer = "container:Pods.xcodeproj"> - </BuildableReference> - </BuildActionEntry> - </BuildActionEntries> - </BuildAction> - <TestAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> - <Testables> - </Testables> - </TestAction> - <LaunchAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - launchStyle = "0" - useCustomWorkingDirectory = "NO" - ignoresPersistentStateOnLaunch = "NO" - debugDocumentVersioning = "YES" - debugServiceExtension = "internal" - allowLocationSimulation = "YES"> - </LaunchAction> - <ProfileAction - buildConfiguration = "Release" - shouldUseLaunchSchemeArgsEnv = "YES" - savedToolIdentifier = "" - useCustomWorkingDirectory = "NO" - debugDocumentVersioning = "YES"> - </ProfileAction> - <AnalyzeAction - buildConfiguration = "Debug"> - </AnalyzeAction> - <ArchiveAction - buildConfiguration = "Release" - revealArchiveInOrganizer = "YES"> - </ArchiveAction> -</Scheme> diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/LanguageManager-iOS.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/LanguageManager-iOS.xcscheme deleted file mode 100644 index 798a93a..0000000 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/LanguageManager-iOS.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Scheme - LastUpgradeVersion = "1500" - version = "1.3"> - <BuildAction - parallelizeBuildables = "YES" - buildImplicitDependencies = "YES"> - <BuildActionEntries> - <BuildActionEntry - buildForTesting = "YES" - buildForRunning = "YES" - buildForProfiling = "YES" - buildForArchiving = "YES" - buildForAnalyzing = "YES"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "75F1EA88CB9544AB5CBE20DEC9A011AE" - BuildableName = "LanguageManager_iOS.framework" - BlueprintName = "LanguageManager-iOS" - ReferencedContainer = "container:Pods.xcodeproj"> - </BuildableReference> - </BuildActionEntry> - </BuildActionEntries> - </BuildAction> - <TestAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> - <Testables> - </Testables> - </TestAction> - <LaunchAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - launchStyle = "0" - useCustomWorkingDirectory = "NO" - ignoresPersistentStateOnLaunch = "NO" - debugDocumentVersioning = "YES" - debugServiceExtension = "internal" - allowLocationSimulation = "YES"> - </LaunchAction> - <ProfileAction - buildConfiguration = "Release" - shouldUseLaunchSchemeArgsEnv = "YES" - savedToolIdentifier = "" - useCustomWorkingDirectory = "NO" - debugDocumentVersioning = "YES"> - </ProfileAction> - <AnalyzeAction - buildConfiguration = "Debug"> - </AnalyzeAction> - <ArchiveAction - buildConfiguration = "Release" - revealArchiveInOrganizer = "YES"> - </ArchiveAction> -</Scheme> diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/Toast-Swift-Toast-Swift.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/Toast-Swift-Toast-Swift.xcscheme deleted file mode 100644 index 76e73bb..0000000 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/Toast-Swift-Toast-Swift.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Scheme - LastUpgradeVersion = "1500" - version = "1.3"> - <BuildAction - parallelizeBuildables = "YES" - buildImplicitDependencies = "YES"> - <BuildActionEntries> - <BuildActionEntry - buildForTesting = "YES" - buildForRunning = "YES" - buildForProfiling = "YES" - buildForArchiving = "YES" - buildForAnalyzing = "YES"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "C344E85893FCDEE5B70436E0A4A3472B" - BuildableName = "Toast-Swift.bundle" - BlueprintName = "Toast-Swift-Toast-Swift" - ReferencedContainer = "container:Pods.xcodeproj"> - </BuildableReference> - </BuildActionEntry> - </BuildActionEntries> - </BuildAction> - <TestAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> - <Testables> - </Testables> - </TestAction> - <LaunchAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - launchStyle = "0" - useCustomWorkingDirectory = "NO" - ignoresPersistentStateOnLaunch = "NO" - debugDocumentVersioning = "YES" - debugServiceExtension = "internal" - allowLocationSimulation = "YES"> - </LaunchAction> - <ProfileAction - buildConfiguration = "Release" - shouldUseLaunchSchemeArgsEnv = "YES" - savedToolIdentifier = "" - useCustomWorkingDirectory = "NO" - debugDocumentVersioning = "YES"> - </ProfileAction> - <AnalyzeAction - buildConfiguration = "Debug"> - </AnalyzeAction> - <ArchiveAction - buildConfiguration = "Release" - revealArchiveInOrganizer = "YES"> - </ArchiveAction> -</Scheme> diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/Toast-Swift.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/Toast-Swift.xcscheme deleted file mode 100644 index 212dab8..0000000 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/Toast-Swift.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Scheme - LastUpgradeVersion = "1500" - version = "1.3"> - <BuildAction - parallelizeBuildables = "YES" - buildImplicitDependencies = "YES"> - <BuildActionEntries> - <BuildActionEntry - buildForTesting = "YES" - buildForRunning = "YES" - buildForProfiling = "YES" - buildForArchiving = "YES" - buildForAnalyzing = "YES"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "B990BD87169C76A3ED3FE8A9258D91A3" - BuildableName = "Toast_Swift.framework" - BlueprintName = "Toast-Swift" - ReferencedContainer = "container:Pods.xcodeproj"> - </BuildableReference> - </BuildActionEntry> - </BuildActionEntries> - </BuildAction> - <TestAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> - <Testables> - </Testables> - </TestAction> - <LaunchAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - launchStyle = "0" - useCustomWorkingDirectory = "NO" - ignoresPersistentStateOnLaunch = "NO" - debugDocumentVersioning = "YES" - debugServiceExtension = "internal" - allowLocationSimulation = "YES"> - </LaunchAction> - <ProfileAction - buildConfiguration = "Release" - shouldUseLaunchSchemeArgsEnv = "YES" - savedToolIdentifier = "" - useCustomWorkingDirectory = "NO" - debugDocumentVersioning = "YES"> - </ProfileAction> - <AnalyzeAction - buildConfiguration = "Debug"> - </AnalyzeAction> - <ArchiveAction - buildConfiguration = "Release" - revealArchiveInOrganizer = "YES"> - </ArchiveAction> -</Scheme> diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist index fbd9eb3..9edb6f8 100644 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist @@ -11,61 +11,19 @@ <key>orderHint</key> <integer>0</integer> </dict> - <key>IQKeyboardManagerSwift-IQKeyboardManagerSwift.xcscheme</key> - <dict> - <key>isShown</key> - <false/> - <key>orderHint</key> - <integer>3</integer> - </dict> - <key>IQKeyboardManagerSwift.xcscheme</key> - <dict> - <key>isShown</key> - <false/> - <key>orderHint</key> - <integer>2</integer> - </dict> - <key>ImageViewer.swift.xcscheme</key> - <dict> - <key>isShown</key> - <false/> - <key>orderHint</key> - <integer>1</integer> - </dict> - <key>LanguageManager-iOS.xcscheme</key> - <dict> - <key>isShown</key> - <false/> - <key>orderHint</key> - <integer>4</integer> - </dict> <key>NBBottomSheet.xcscheme</key> <dict> <key>isShown</key> <false/> <key>orderHint</key> - <integer>5</integer> + <integer>1</integer> </dict> <key>Pods-MiniScanner.xcscheme</key> <dict> <key>isShown</key> <false/> <key>orderHint</key> - <integer>6</integer> - </dict> - <key>Toast-Swift-Toast-Swift.xcscheme</key> - <dict> - <key>isShown</key> - <false/> - <key>orderHint</key> - <integer>8</integer> - </dict> - <key>Toast-Swift.xcscheme</key> - <dict> - <key>isShown</key> - <false/> - <key>orderHint</key> - <integer>7</integer> + <integer>2</integer> </dict> </dict> <key>SuppressBuildableAutocreation</key> diff --git a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist b/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist deleted file mode 100644 index 1281ca3..0000000 --- a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>${PODS_DEVELOPMENT_LANGUAGE}</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>FMWK</string> - <key>CFBundleShortVersionString</key> - <string>7.0.3</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>${CURRENT_PROJECT_VERSION}</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> diff --git a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-dummy.m b/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-dummy.m deleted file mode 100644 index 7937f27..0000000 --- a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import <Foundation/Foundation.h> -@interface PodsDummy_IQKeyboardManagerSwift : NSObject -@end -@implementation PodsDummy_IQKeyboardManagerSwift -@end diff --git a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch b/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch deleted file mode 100644 index beb2a24..0000000 --- a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-umbrella.h b/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-umbrella.h deleted file mode 100644 index e95b398..0000000 --- a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double IQKeyboardManagerSwiftVersionNumber; -FOUNDATION_EXPORT const unsigned char IQKeyboardManagerSwiftVersionString[]; - diff --git a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.debug.xcconfig b/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.debug.xcconfig deleted file mode 100644 index 1472651..0000000 --- a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.debug.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "CoreGraphics" -framework "Foundation" -framework "QuartzCore" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/IQKeyboardManagerSwift -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap b/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap deleted file mode 100644 index 6d9b343..0000000 --- a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module IQKeyboardManagerSwift { - umbrella header "IQKeyboardManagerSwift-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.release.xcconfig b/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.release.xcconfig deleted file mode 100644 index 1472651..0000000 --- a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.release.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "CoreGraphics" -framework "Foundation" -framework "QuartzCore" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/IQKeyboardManagerSwift -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist b/Pods/Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist deleted file mode 100644 index 394246f..0000000 --- a/Pods/Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>${PODS_DEVELOPMENT_LANGUAGE}</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>BNDL</string> - <key>CFBundleShortVersionString</key> - <string>7.0.3</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>1</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> diff --git a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-Info.plist b/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-Info.plist deleted file mode 100644 index ed3fafc..0000000 --- a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>${PODS_DEVELOPMENT_LANGUAGE}</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>FMWK</string> - <key>CFBundleShortVersionString</key> - <string>3.3.8</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>${CURRENT_PROJECT_VERSION}</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> diff --git a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-dummy.m b/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-dummy.m deleted file mode 100644 index 2a36e87..0000000 --- a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import <Foundation/Foundation.h> -@interface PodsDummy_ImageViewer_swift : NSObject -@end -@implementation PodsDummy_ImageViewer_swift -@end diff --git a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-prefix.pch b/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-prefix.pch deleted file mode 100644 index beb2a24..0000000 --- a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-umbrella.h b/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-umbrella.h deleted file mode 100644 index 704bc6b..0000000 --- a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-umbrella.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "ImageViewer_swift.h" - -FOUNDATION_EXPORT double ImageViewer_swiftVersionNumber; -FOUNDATION_EXPORT const unsigned char ImageViewer_swiftVersionString[]; - diff --git a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.debug.xcconfig b/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.debug.xcconfig deleted file mode 100644 index 8ffb994..0000000 --- a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.debug.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ImageViewer.swift -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/ImageViewer.swift -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.modulemap b/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.modulemap deleted file mode 100644 index 8681a66..0000000 --- a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module ImageViewer_swift { - umbrella header "ImageViewer.swift-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.release.xcconfig b/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.release.xcconfig deleted file mode 100644 index 8ffb994..0000000 --- a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.release.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ImageViewer.swift -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/ImageViewer.swift -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-Info.plist b/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-Info.plist deleted file mode 100644 index b58bca3..0000000 --- a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>${PODS_DEVELOPMENT_LANGUAGE}</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>FMWK</string> - <key>CFBundleShortVersionString</key> - <string>1.2.7</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>${CURRENT_PROJECT_VERSION}</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> diff --git a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-dummy.m b/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-dummy.m deleted file mode 100644 index d91438a..0000000 --- a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import <Foundation/Foundation.h> -@interface PodsDummy_LanguageManager_iOS : NSObject -@end -@implementation PodsDummy_LanguageManager_iOS -@end diff --git a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-prefix.pch b/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-prefix.pch deleted file mode 100644 index beb2a24..0000000 --- a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-umbrella.h b/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-umbrella.h deleted file mode 100644 index 5613e48..0000000 --- a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double LanguageManager_iOSVersionNumber; -FOUNDATION_EXPORT const unsigned char LanguageManager_iOSVersionString[]; - diff --git a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.debug.xcconfig b/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.debug.xcconfig deleted file mode 100644 index 154e1a3..0000000 --- a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.debug.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/LanguageManager-iOS -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.modulemap b/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.modulemap deleted file mode 100644 index 4b5ef1c..0000000 --- a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module LanguageManager_iOS { - umbrella header "LanguageManager-iOS-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.release.xcconfig b/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.release.xcconfig deleted file mode 100644 index 154e1a3..0000000 --- a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.release.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/LanguageManager-iOS -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.markdown b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.markdown index ec64880..2387ad3 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.markdown @@ -24,68 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -## IQKeyboardManagerSwift - -MIT License - -Copyright (c) 2013-2023 Iftekhar Qurashi - -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. - - -## ImageViewer.swift - -Copyright (c) 2013 Michael Henry Pantaleon (http://www.iamkel.net). All rights reserved. - -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. - - - -## LanguageManager-iOS - -The MIT License (MIT) - -Copyright (c) 2017 Abedalkareem - -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. - - ## NBBottomSheet MIT License @@ -110,28 +48,4 @@ 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. - -## Toast-Swift - -Copyright (c) 2015-2024 Charles Scalesse. - -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. - Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.plist b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.plist index 73ba9c7..3a2a0b7 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.plist @@ -45,86 +45,6 @@ THE SOFTWARE. <key>FooterText</key> <string>MIT License -Copyright (c) 2013-2023 Iftekhar Qurashi - -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. -</string> - <key>License</key> - <string>MIT</string> - <key>Title</key> - <string>IQKeyboardManagerSwift</string> - <key>Type</key> - <string>PSGroupSpecifier</string> - </dict> - <dict> - <key>FooterText</key> - <string>Copyright (c) 2013 Michael Henry Pantaleon (http://www.iamkel.net). All rights reserved. - -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. - -</string> - <key>License</key> - <string>MIT</string> - <key>Title</key> - <string>ImageViewer.swift</string> - <key>Type</key> - <string>PSGroupSpecifier</string> - </dict> - <dict> - <key>FooterText</key> - <string>The MIT License (MIT) - -Copyright (c) 2017 Abedalkareem - -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. -</string> - <key>License</key> - <string>MIT</string> - <key>Title</key> - <string>LanguageManager-iOS</string> - <key>Type</key> - <string>PSGroupSpecifier</string> - </dict> - <dict> - <key>FooterText</key> - <string>MIT License - Copyright (c) 2018 Nicolas Bichon Permission is hereby granted, free of charge, to any person obtaining a copy @@ -152,36 +72,6 @@ SOFTWARE. <key>Type</key> <string>PSGroupSpecifier</string> </dict> - <dict> - <key>FooterText</key> - <string>Copyright (c) 2015-2024 Charles Scalesse. - -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. -</string> - <key>License</key> - <string>MIT</string> - <key>Title</key> - <string>Toast-Swift</string> - <key>Type</key> - <string>PSGroupSpecifier</string> - </dict> <dict> <key>FooterText</key> <string>Generated by CocoaPods - https://cocoapods.org</string> diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-input-files.xcfilelist b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-input-files.xcfilelist index db7e648..2688999 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-input-files.xcfilelist @@ -1,7 +1,3 @@ ${PODS_ROOT}/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh ${BUILT_PRODUCTS_DIR}/EPSignature/EPSignature.framework -${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework -${BUILT_PRODUCTS_DIR}/ImageViewer.swift/ImageViewer_swift.framework -${BUILT_PRODUCTS_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework -${BUILT_PRODUCTS_DIR}/NBBottomSheet/NBBottomSheet.framework -${BUILT_PRODUCTS_DIR}/Toast-Swift/Toast_Swift.framework \ No newline at end of file +${BUILT_PRODUCTS_DIR}/NBBottomSheet/NBBottomSheet.framework \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-output-files.xcfilelist b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-output-files.xcfilelist index b773078..46dc42c 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-output-files.xcfilelist @@ -1,6 +1,2 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/EPSignature.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManagerSwift.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ImageViewer_swift.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LanguageManager_iOS.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NBBottomSheet.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Toast_Swift.framework \ No newline at end of file +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NBBottomSheet.framework \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-input-files.xcfilelist b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-input-files.xcfilelist index db7e648..2688999 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-input-files.xcfilelist @@ -1,7 +1,3 @@ ${PODS_ROOT}/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh ${BUILT_PRODUCTS_DIR}/EPSignature/EPSignature.framework -${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework -${BUILT_PRODUCTS_DIR}/ImageViewer.swift/ImageViewer_swift.framework -${BUILT_PRODUCTS_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework -${BUILT_PRODUCTS_DIR}/NBBottomSheet/NBBottomSheet.framework -${BUILT_PRODUCTS_DIR}/Toast-Swift/Toast_Swift.framework \ No newline at end of file +${BUILT_PRODUCTS_DIR}/NBBottomSheet/NBBottomSheet.framework \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-output-files.xcfilelist b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-output-files.xcfilelist index b773078..46dc42c 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-output-files.xcfilelist @@ -1,6 +1,2 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/EPSignature.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManagerSwift.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ImageViewer_swift.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LanguageManager_iOS.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NBBottomSheet.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Toast_Swift.framework \ No newline at end of file +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NBBottomSheet.framework \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh index e30f02a..5aa3411 100755 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh @@ -177,19 +177,11 @@ code_sign_if_enabled() { if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/EPSignature/EPSignature.framework" - install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework" - install_framework "${BUILT_PRODUCTS_DIR}/ImageViewer.swift/ImageViewer_swift.framework" - install_framework "${BUILT_PRODUCTS_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework" install_framework "${BUILT_PRODUCTS_DIR}/NBBottomSheet/NBBottomSheet.framework" - install_framework "${BUILT_PRODUCTS_DIR}/Toast-Swift/Toast_Swift.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/EPSignature/EPSignature.framework" - install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework" - install_framework "${BUILT_PRODUCTS_DIR}/ImageViewer.swift/ImageViewer_swift.framework" - install_framework "${BUILT_PRODUCTS_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework" install_framework "${BUILT_PRODUCTS_DIR}/NBBottomSheet/NBBottomSheet.framework" - install_framework "${BUILT_PRODUCTS_DIR}/Toast-Swift/Toast_Swift.framework" fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.debug.xcconfig b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.debug.xcconfig index 6a65574..f8d7344 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.debug.xcconfig +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.debug.xcconfig @@ -1,11 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/EPSignature" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/ImageViewer.swift" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/EPSignature" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/EPSignature/EPSignature.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ImageViewer.swift/ImageViewer_swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet/NBBottomSheet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift/Toast_Swift.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/EPSignature/EPSignature.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet/NBBottomSheet.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "CoreGraphics" -framework "EPSignature" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "ImageViewer_swift" -framework "LanguageManager_iOS" -framework "NBBottomSheet" -framework "QuartzCore" -framework "Toast_Swift" -framework "UIKit" +LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift +OTHER_LDFLAGS = $(inherited) -framework "EPSignature" -framework "Foundation" -framework "NBBottomSheet" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.release.xcconfig b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.release.xcconfig index 6a65574..f8d7344 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.release.xcconfig +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.release.xcconfig @@ -1,11 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/EPSignature" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/ImageViewer.swift" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/EPSignature" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/EPSignature/EPSignature.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ImageViewer.swift/ImageViewer_swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet/NBBottomSheet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift/Toast_Swift.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/EPSignature/EPSignature.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet/NBBottomSheet.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "CoreGraphics" -framework "EPSignature" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "ImageViewer_swift" -framework "LanguageManager_iOS" -framework "NBBottomSheet" -framework "QuartzCore" -framework "Toast_Swift" -framework "UIKit" +LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift +OTHER_LDFLAGS = $(inherited) -framework "EPSignature" -framework "Foundation" -framework "NBBottomSheet" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Toast-Swift/ResourceBundle-Toast-Swift-Toast-Swift-Info.plist b/Pods/Target Support Files/Toast-Swift/ResourceBundle-Toast-Swift-Toast-Swift-Info.plist deleted file mode 100644 index 5b2072c..0000000 --- a/Pods/Target Support Files/Toast-Swift/ResourceBundle-Toast-Swift-Toast-Swift-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>${PODS_DEVELOPMENT_LANGUAGE}</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>BNDL</string> - <key>CFBundleShortVersionString</key> - <string>5.1.1</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>1</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> diff --git a/Pods/Target Support Files/Toast-Swift/Toast-Swift-Info.plist b/Pods/Target Support Files/Toast-Swift/Toast-Swift-Info.plist deleted file mode 100644 index 021370d..0000000 --- a/Pods/Target Support Files/Toast-Swift/Toast-Swift-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>${PODS_DEVELOPMENT_LANGUAGE}</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>FMWK</string> - <key>CFBundleShortVersionString</key> - <string>5.1.1</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>${CURRENT_PROJECT_VERSION}</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> diff --git a/Pods/Target Support Files/Toast-Swift/Toast-Swift-dummy.m b/Pods/Target Support Files/Toast-Swift/Toast-Swift-dummy.m deleted file mode 100644 index 2962aa4..0000000 --- a/Pods/Target Support Files/Toast-Swift/Toast-Swift-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import <Foundation/Foundation.h> -@interface PodsDummy_Toast_Swift : NSObject -@end -@implementation PodsDummy_Toast_Swift -@end diff --git a/Pods/Target Support Files/Toast-Swift/Toast-Swift-prefix.pch b/Pods/Target Support Files/Toast-Swift/Toast-Swift-prefix.pch deleted file mode 100644 index beb2a24..0000000 --- a/Pods/Target Support Files/Toast-Swift/Toast-Swift-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/Toast-Swift/Toast-Swift-umbrella.h b/Pods/Target Support Files/Toast-Swift/Toast-Swift-umbrella.h deleted file mode 100644 index 8abdfa0..0000000 --- a/Pods/Target Support Files/Toast-Swift/Toast-Swift-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double Toast_SwiftVersionNumber; -FOUNDATION_EXPORT const unsigned char Toast_SwiftVersionString[]; - diff --git a/Pods/Target Support Files/Toast-Swift/Toast-Swift.debug.xcconfig b/Pods/Target Support Files/Toast-Swift/Toast-Swift.debug.xcconfig deleted file mode 100644 index 8c4b186..0000000 --- a/Pods/Target Support Files/Toast-Swift/Toast-Swift.debug.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_LDFLAGS = $(inherited) -framework "QuartzCore" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/Toast-Swift -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Toast-Swift/Toast-Swift.modulemap b/Pods/Target Support Files/Toast-Swift/Toast-Swift.modulemap deleted file mode 100644 index af3db9f..0000000 --- a/Pods/Target Support Files/Toast-Swift/Toast-Swift.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Toast_Swift { - umbrella header "Toast-Swift-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/Toast-Swift/Toast-Swift.release.xcconfig b/Pods/Target Support Files/Toast-Swift/Toast-Swift.release.xcconfig deleted file mode 100644 index 8c4b186..0000000 --- a/Pods/Target Support Files/Toast-Swift/Toast-Swift.release.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_LDFLAGS = $(inherited) -framework "QuartzCore" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/Toast-Swift -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Toast-Swift/LICENSE b/Pods/Toast-Swift/LICENSE deleted file mode 100644 index 6b3b982..0000000 --- a/Pods/Toast-Swift/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2015-2024 Charles Scalesse. - -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/Pods/Toast-Swift/README.md b/Pods/Toast-Swift/README.md deleted file mode 100644 index e7ae831..0000000 --- a/Pods/Toast-Swift/README.md +++ /dev/null @@ -1,143 +0,0 @@ -Toast-Swift -============= - -[](http://cocoadocs.org/docsets/Toast-Swift) -[](https://github.com/Carthage/Carthage) - -Toast-Swift is a Swift extension that adds toast notifications to the `UIView` object class. It is intended to be simple, lightweight, and easy to use. Most toast notifications can be triggered with a single line of code. - -**Toast-Swift is a native Swift port of [Toast for iOS](https://github.com/scalessec/Toast "Toast for iOS").** - -Screenshots ---------- - - - -Basic Examples ---------- -```swift -// basic usage -self.view.makeToast("This is a piece of toast") - -// toast with a specific duration and position -self.view.makeToast("This is a piece of toast", duration: 3.0, position: .top) - -// toast presented with multiple options and with a completion closure -self.view.makeToast("This is a piece of toast", duration: 2.0, point: CGPoint(x: 110.0, y: 110.0), title: "Toast Title", image: UIImage(named: "toast.png")) { didTap in - if didTap { - print("completion from tap") - } else { - print("completion without tap") - } -} - -// display toast with an activity spinner -self.view.makeToastActivity(.center) - -// display any view as toast -self.view.showToast(myView) - -// immediately hides all toast views in self.view -self.view.hideAllToasts() -``` - -But wait, there's more! ---------- -```swift -// create a new style -var style = ToastStyle() - -// this is just one of many style options -style.messageColor = .blue - -// present the toast with the new style -self.view.makeToast("This is a piece of toast", duration: 3.0, position: .bottom, style: style) - -// or perhaps you want to use this style for all toasts going forward? -// just set the shared style and there's no need to provide the style again -ToastManager.shared.style = style -self.view.makeToast("This is a piece of toast") // now uses the shared style - -// toggle "tap to dismiss" functionality -ToastManager.shared.isTapToDismissEnabled = true - -// toggle queueing behavior -ToastManager.shared.isQueueEnabled = true -``` - -See the demo project for more examples. - - -Setup Instructions ------------------- - -[CocoaPods](http://cocoapods.org) ------------------- - -To integrate Toast-Swift into your Xcode project using CocoaPods, specify it in your `Podfile`: - -```ruby -pod 'Toast-Swift', '~> 5.1.0' -``` - -and in your code add `import Toast_Swift`. - -[Carthage](https://github.com/Carthage/Carthage) ------------------- - -To integrate Toast-Swift into your Xcode project using Carthage, specify it in your `Cartfile`: - -```ogdl -github "scalessec/Toast-Swift" ~> 5.1.0 -``` - -Run `carthage update` to build the framework and drag the built `ToastSwiftFramework.framework` into your Xcode project. - -and in your code add `import ToastSwiftFramework`. - -[Swift Package Manager](https://swift.org/package-manager/) ------------------- - -When using Xcode 11 or later, you can install `Toast` by going to your Project settings > `Swift Packages` and add the repository by providing the GitHub URL. Alternatively, you can go to `File` > `Swift Packages` > `Add Package Dependencies...` - -Manually ------------------- - -1. Add `Toast.swift` to your project. -2. Grab yourself a cold 🍺. - -Compatibility ------------------- -* Version `5.x.x` requires Swift 5 and Xcode 10.2 or later. -* Version `4.x.x` requires Swift 4.2 and Xcode 10. -* Version `3.x.x` requires Swift 4 and Xcode 9. -* Version `2.x.x` requires Swift 3 and Xcode 8. -* Version `1.4.x` requires Swift 2.2 and Xcode 7.3. -* Version `1.0.0` can be used with Swift 2.1 and earlier versions of Xcode. - -Privacy ------------ -Toast-Swift does not collect any data. A [privacy manifest](Toast/Resources/PrivacyInfo.xcprivacy) is provided with the library. See [Apple's documentation](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files) for related details. - -MIT License ------------ - Copyright (c) 2015-2024 Charles Scalesse. - - 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/Pods/Toast-Swift/Toast/Resources/PrivacyInfo.xcprivacy b/Pods/Toast-Swift/Toast/Resources/PrivacyInfo.xcprivacy deleted file mode 100644 index 3421b16..0000000 --- a/Pods/Toast-Swift/Toast/Resources/PrivacyInfo.xcprivacy +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>NSPrivacyTracking</key> - <false/> - <key>NSPrivacyCollectedDataTypes</key> - <array/> - <key>NSPrivacyTrackingDomains</key> - <array/> - <key>NSPrivacyAccessedAPITypes</key> - <array/> -</dict> -</plist> \ No newline at end of file diff --git a/Pods/Toast-Swift/Toast/Toast.swift b/Pods/Toast-Swift/Toast/Toast.swift deleted file mode 100644 index 5b4dd05..0000000 --- a/Pods/Toast-Swift/Toast/Toast.swift +++ /dev/null @@ -1,797 +0,0 @@ -// -// Toast.swift -// Toast-Swift -// -// Copyright (c) 2015-2024 Charles Scalesse. -// -// 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. - -import UIKit -import ObjectiveC - -/** - Toast is a Swift extension that adds toast notifications to the `UIView` object class. - It is intended to be simple, lightweight, and easy to use. Most toast notifications - can be triggered with a single line of code. - - The `makeToast` methods create a new view and then display it as toast. - - The `showToast` methods display any view as toast. - - */ -public extension UIView { - - /** - Keys used for associated objects. - */ - private struct ToastKeys { - static var timer = malloc(1) - static var duration = malloc(1) - static var point = malloc(1) - static var completion = malloc(1) - static var activeToasts = malloc(1) - static var activityView = malloc(1) - static var queue = malloc(1) - } - - /** - Swift closures can't be directly associated with objects via the - Objective-C runtime, so the (ugly) solution is to wrap them in a - class that can be used with associated objects. - */ - private class ToastCompletionWrapper { - let completion: ((Bool) -> Void)? - - init(_ completion: ((Bool) -> Void)?) { - self.completion = completion - } - } - - private enum ToastError: Error { - case missingParameters - } - - private var activeToasts: NSMutableArray { - get { - if let activeToasts = objc_getAssociatedObject(self, &ToastKeys.activeToasts) as? NSMutableArray { - return activeToasts - } else { - let activeToasts = NSMutableArray() - objc_setAssociatedObject(self, &ToastKeys.activeToasts, activeToasts, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - return activeToasts - } - } - } - - private var queue: NSMutableArray { - get { - if let queue = objc_getAssociatedObject(self, &ToastKeys.queue) as? NSMutableArray { - return queue - } else { - let queue = NSMutableArray() - objc_setAssociatedObject(self, &ToastKeys.queue, queue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - return queue - } - } - } - - // MARK: - Make Toast Methods - - /** - Creates and presents a new toast view. - - @param message The message to be displayed - @param duration The toast duration - @param position The toast's position - @param title The title - @param image The image - @param style The style. The shared style will be used when nil - @param completion The completion closure, executed after the toast view disappears. - didTap will be `true` if the toast view was dismissed from a tap. - */ - func makeToast(_ message: String?, duration: TimeInterval = ToastManager.shared.duration, position: ToastPosition = ToastManager.shared.position, title: String? = nil, image: UIImage? = nil, style: ToastStyle = ToastManager.shared.style, completion: ((_ didTap: Bool) -> Void)? = nil) { - do { - let toast = try toastViewForMessage(message, title: title, image: image, style: style) - showToast(toast, duration: duration, position: position, completion: completion) - } catch ToastError.missingParameters { - print("Error: message, title, and image are all nil") - } catch {} - } - - /** - Creates a new toast view and presents it at a given center point. - - @param message The message to be displayed - @param duration The toast duration - @param point The toast's center point - @param title The title - @param image The image - @param style The style. The shared style will be used when nil - @param completion The completion closure, executed after the toast view disappears. - didTap will be `true` if the toast view was dismissed from a tap. - */ - func makeToast(_ message: String?, duration: TimeInterval = ToastManager.shared.duration, point: CGPoint, title: String?, image: UIImage?, style: ToastStyle = ToastManager.shared.style, completion: ((_ didTap: Bool) -> Void)?) { - do { - let toast = try toastViewForMessage(message, title: title, image: image, style: style) - showToast(toast, duration: duration, point: point, completion: completion) - } catch ToastError.missingParameters { - print("Error: message, title, and image cannot all be nil") - } catch {} - } - - // MARK: - Show Toast Methods - - /** - Displays any view as toast at a provided position and duration. The completion closure - executes when the toast view completes. `didTap` will be `true` if the toast view was - dismissed from a tap. - - @param toast The view to be displayed as toast - @param duration The notification duration - @param position The toast's position - @param completion The completion block, executed after the toast view disappears. - didTap will be `true` if the toast view was dismissed from a tap. - */ - func showToast(_ toast: UIView, duration: TimeInterval = ToastManager.shared.duration, position: ToastPosition = ToastManager.shared.position, completion: ((_ didTap: Bool) -> Void)? = nil) { - let point = position.centerPoint(forToast: toast, inSuperview: self) - showToast(toast, duration: duration, point: point, completion: completion) - } - - /** - Displays any view as toast at a provided center point and duration. The completion closure - executes when the toast view completes. `didTap` will be `true` if the toast view was - dismissed from a tap. - - @param toast The view to be displayed as toast - @param duration The notification duration - @param point The toast's center point - @param completion The completion block, executed after the toast view disappears. - didTap will be `true` if the toast view was dismissed from a tap. - */ - func showToast(_ toast: UIView, duration: TimeInterval = ToastManager.shared.duration, point: CGPoint, completion: ((_ didTap: Bool) -> Void)? = nil) { - objc_setAssociatedObject(toast, &ToastKeys.completion, ToastCompletionWrapper(completion), .OBJC_ASSOCIATION_RETAIN_NONATOMIC); - - if ToastManager.shared.isQueueEnabled, activeToasts.count > 0 { - objc_setAssociatedObject(toast, &ToastKeys.duration, NSNumber(value: duration), .OBJC_ASSOCIATION_RETAIN_NONATOMIC); - objc_setAssociatedObject(toast, &ToastKeys.point, NSValue(cgPoint: point), .OBJC_ASSOCIATION_RETAIN_NONATOMIC); - - queue.add(toast) - } else { - showToast(toast, duration: duration, point: point) - } - } - - // MARK: - Hide Toast Methods - - /** - Hides the active toast. If there are multiple toasts active in a view, this method - hides the oldest toast (the first of the toasts to have been presented). - - @see `hideAllToasts()` to remove all active toasts from a view. - - @warning This method has no effect on activity toasts. Use `hideToastActivity` to - hide activity toasts. - - */ - func hideToast() { - guard let activeToast = activeToasts.firstObject as? UIView else { return } - hideToast(activeToast) - } - - /** - Hides an active toast. - - @param toast The active toast view to dismiss. Any toast that is currently being displayed - on the screen is considered active. - - @warning this does not clear a toast view that is currently waiting in the queue. - */ - func hideToast(_ toast: UIView) { - guard activeToasts.contains(toast) else { return } - hideToast(toast, fromTap: false) - } - - /** - Hides all toast views. - - @param includeActivity If `true`, toast activity will also be hidden. Default is `false`. - @param clearQueue If `true`, removes all toast views from the queue. Default is `true`. - */ - func hideAllToasts(includeActivity: Bool = false, clearQueue: Bool = true) { - if clearQueue { - clearToastQueue() - } - - activeToasts.compactMap { $0 as? UIView } - .forEach { hideToast($0) } - - if includeActivity { - hideToastActivity() - } - } - - /** - Removes all toast views from the queue. This has no effect on toast views that are - active. Use `hideAllToasts(clearQueue:)` to hide the active toasts views and clear - the queue. - */ - func clearToastQueue() { - queue.removeAllObjects() - } - - // MARK: - Activity Methods - - /** - Creates and displays a new toast activity indicator view at a specified position. - - @warning Only one toast activity indicator view can be presented per superview. Subsequent - calls to `makeToastActivity(position:)` will be ignored until `hideToastActivity()` is called. - - @warning `makeToastActivity(position:)` works independently of the `showToast` methods. Toast - activity views can be presented and dismissed while toast views are being displayed. - `makeToastActivity(position:)` has no effect on the queueing behavior of the `showToast` methods. - - @param position The toast's position - */ - func makeToastActivity(_ position: ToastPosition) { - // sanity - guard objc_getAssociatedObject(self, &ToastKeys.activityView) as? UIView == nil else { return } - - let toast = createToastActivityView() - let point = position.centerPoint(forToast: toast, inSuperview: self) - makeToastActivity(toast, point: point) - } - - /** - Creates and displays a new toast activity indicator view at a specified position. - - @warning Only one toast activity indicator view can be presented per superview. Subsequent - calls to `makeToastActivity(position:)` will be ignored until `hideToastActivity()` is called. - - @warning `makeToastActivity(position:)` works independently of the `showToast` methods. Toast - activity views can be presented and dismissed while toast views are being displayed. - `makeToastActivity(position:)` has no effect on the queueing behavior of the `showToast` methods. - - @param point The toast's center point - */ - func makeToastActivity(_ point: CGPoint) { - // sanity - guard objc_getAssociatedObject(self, &ToastKeys.activityView) as? UIView == nil else { return } - - let toast = createToastActivityView() - makeToastActivity(toast, point: point) - } - - /** - Dismisses the active toast activity indicator view. - */ - func hideToastActivity() { - if let toast = objc_getAssociatedObject(self, &ToastKeys.activityView) as? UIView { - UIView.animate(withDuration: ToastManager.shared.style.fadeDuration, delay: 0.0, options: [.curveEaseIn, .beginFromCurrentState], animations: { - toast.alpha = 0.0 - }) { _ in - toast.removeFromSuperview() - objc_setAssociatedObject(self, &ToastKeys.activityView, nil, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - } - - // MARK: - Helper Methods - - /** - Returns `true` if a toast view or toast activity view is actively being displayed. - */ - func isShowingToast() -> Bool { - return activeToasts.count > 0 || objc_getAssociatedObject(self, &ToastKeys.activityView) != nil - } - - // MARK: - Private Activity Methods - - private func makeToastActivity(_ toast: UIView, point: CGPoint) { - toast.alpha = 0.0 - toast.center = point - - objc_setAssociatedObject(self, &ToastKeys.activityView, toast, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - - self.addSubview(toast) - - UIView.animate(withDuration: ToastManager.shared.style.fadeDuration, delay: 0.0, options: .curveEaseOut, animations: { - toast.alpha = 1.0 - }) - } - - private func createToastActivityView() -> UIView { - let style = ToastManager.shared.style - - let activityView = UIView(frame: CGRect(x: 0.0, y: 0.0, width: style.activitySize.width, height: style.activitySize.height)) - activityView.backgroundColor = style.activityBackgroundColor - activityView.autoresizingMask = [.flexibleLeftMargin, .flexibleRightMargin, .flexibleTopMargin, .flexibleBottomMargin] - activityView.layer.cornerRadius = style.cornerRadius - - if style.displayShadow { - activityView.layer.shadowColor = style.shadowColor.cgColor - activityView.layer.shadowOpacity = style.shadowOpacity - activityView.layer.shadowRadius = style.shadowRadius - activityView.layer.shadowOffset = style.shadowOffset - } - - let activityIndicatorView = UIActivityIndicatorView(style: .whiteLarge) - activityIndicatorView.center = CGPoint(x: activityView.bounds.size.width / 2.0, y: activityView.bounds.size.height / 2.0) - activityView.addSubview(activityIndicatorView) - activityIndicatorView.color = style.activityIndicatorColor - activityIndicatorView.startAnimating() - - return activityView - } - - // MARK: - Private Show/Hide Methods - - private func showToast(_ toast: UIView, duration: TimeInterval, point: CGPoint) { - toast.center = point - toast.alpha = 0.0 - - if ToastManager.shared.isTapToDismissEnabled { - let recognizer = UITapGestureRecognizer(target: self, action: #selector(UIView.handleToastTapped(_:))) - toast.addGestureRecognizer(recognizer) - toast.isUserInteractionEnabled = true - toast.isExclusiveTouch = true - } - - activeToasts.add(toast) - self.addSubview(toast) - - let timer = Timer(timeInterval: duration, target: self, selector: #selector(UIView.toastTimerDidFinish(_:)), userInfo: toast, repeats: false) - objc_setAssociatedObject(toast, &ToastKeys.timer, timer, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - - UIView.animate(withDuration: ToastManager.shared.style.fadeDuration, delay: 0.0, options: [.curveEaseOut, .allowUserInteraction], animations: { - toast.alpha = 1.0 - }) { _ in - guard let timer = objc_getAssociatedObject(toast, &ToastKeys.timer) as? Timer else { return } - RunLoop.main.add(timer, forMode: .common) - } - - UIAccessibility.post(notification: .screenChanged, argument: toast) - } - - private func hideToast(_ toast: UIView, fromTap: Bool) { - if let timer = objc_getAssociatedObject(toast, &ToastKeys.timer) as? Timer { - timer.invalidate() - } - - UIView.animate(withDuration: ToastManager.shared.style.fadeDuration, delay: 0.0, options: [.curveEaseIn, .beginFromCurrentState], animations: { - toast.alpha = 0.0 - }) { _ in - toast.removeFromSuperview() - self.activeToasts.remove(toast) - - if let wrapper = objc_getAssociatedObject(toast, &ToastKeys.completion) as? ToastCompletionWrapper, let completion = wrapper.completion { - completion(fromTap) - } - - if let nextToast = self.queue.firstObject as? UIView, let duration = objc_getAssociatedObject(nextToast, &ToastKeys.duration) as? NSNumber, let point = objc_getAssociatedObject(nextToast, &ToastKeys.point) as? NSValue { - self.queue.removeObject(at: 0) - self.showToast(nextToast, duration: duration.doubleValue, point: point.cgPointValue) - } - } - } - - // MARK: - Events - - @objc - private func handleToastTapped(_ recognizer: UITapGestureRecognizer) { - guard let toast = recognizer.view else { return } - hideToast(toast, fromTap: true) - } - - @objc - private func toastTimerDidFinish(_ timer: Timer) { - guard let toast = timer.userInfo as? UIView else { return } - hideToast(toast) - } - - // MARK: - Toast Construction - - /** - Creates a new toast view with any combination of message, title, and image. - The look and feel is configured via the style. Unlike the `makeToast` methods, - this method does not present the toast view automatically. One of the `showToast` - methods must be used to present the resulting view. - - @warning if message, title, and image are all nil, this method will throw - `ToastError.missingParameters` - - @param message The message to be displayed - @param title The title - @param image The image - @param style The style. The shared style will be used when nil - @throws `ToastError.missingParameters` when message, title, and image are all nil - @return The newly created toast view - */ - func toastViewForMessage(_ message: String?, title: String?, image: UIImage?, style: ToastStyle) throws -> UIView { - // sanity - guard message != nil || title != nil || image != nil else { - throw ToastError.missingParameters - } - - var messageLabel: UILabel? - var titleLabel: UILabel? - var imageView: UIImageView? - - let wrapperView = UIView() - wrapperView.backgroundColor = style.backgroundColor - wrapperView.autoresizingMask = [.flexibleLeftMargin, .flexibleRightMargin, .flexibleTopMargin, .flexibleBottomMargin] - wrapperView.layer.cornerRadius = style.cornerRadius - - if style.displayShadow { - wrapperView.layer.shadowColor = style.shadowColor.cgColor - wrapperView.layer.shadowOpacity = style.shadowOpacity - wrapperView.layer.shadowRadius = style.shadowRadius - wrapperView.layer.shadowOffset = style.shadowOffset - } - - if let image = image { - imageView = UIImageView(image: image) - imageView?.contentMode = .scaleAspectFit - imageView?.frame = CGRect(x: style.horizontalPadding, y: style.verticalPadding, width: style.imageSize.width, height: style.imageSize.height) - } - - var imageRect = CGRect.zero - - if let imageView = imageView { - imageRect.origin.x = style.horizontalPadding - imageRect.origin.y = style.verticalPadding - imageRect.size.width = imageView.bounds.size.width - imageRect.size.height = imageView.bounds.size.height - } - - if let title = title { - titleLabel = UILabel() - titleLabel?.numberOfLines = style.titleNumberOfLines - titleLabel?.font = style.titleFont - titleLabel?.textAlignment = style.titleAlignment - titleLabel?.lineBreakMode = .byTruncatingTail - titleLabel?.textColor = style.titleColor - titleLabel?.backgroundColor = UIColor.clear - titleLabel?.text = title; - - let maxTitleSize = CGSize(width: (self.bounds.size.width * style.maxWidthPercentage) - imageRect.size.width, height: self.bounds.size.height * style.maxHeightPercentage) - let titleSize = titleLabel?.sizeThatFits(maxTitleSize) - if let titleSize = titleSize { - titleLabel?.frame = CGRect(x: 0.0, y: 0.0, width: titleSize.width, height: titleSize.height) - } - } - - if let message = message { - messageLabel = UILabel() - messageLabel?.text = message - messageLabel?.numberOfLines = style.messageNumberOfLines - messageLabel?.font = style.messageFont - messageLabel?.textAlignment = style.messageAlignment - messageLabel?.lineBreakMode = .byTruncatingTail; - messageLabel?.textColor = style.messageColor - messageLabel?.backgroundColor = UIColor.clear - - let maxMessageSize = CGSize(width: (self.bounds.size.width * style.maxWidthPercentage) - imageRect.size.width, height: self.bounds.size.height * style.maxHeightPercentage) - let messageSize = messageLabel?.sizeThatFits(maxMessageSize) - if let messageSize = messageSize { - let actualWidth = min(messageSize.width, maxMessageSize.width) - let actualHeight = min(messageSize.height, maxMessageSize.height) - messageLabel?.frame = CGRect(x: 0.0, y: 0.0, width: actualWidth, height: actualHeight) - } - } - - var titleRect = CGRect.zero - - if let titleLabel = titleLabel { - titleRect.origin.x = imageRect.origin.x + imageRect.size.width + style.horizontalPadding - titleRect.origin.y = style.verticalPadding - titleRect.size.width = titleLabel.bounds.size.width - titleRect.size.height = titleLabel.bounds.size.height - } - - var messageRect = CGRect.zero - - if let messageLabel = messageLabel { - messageRect.origin.x = imageRect.origin.x + imageRect.size.width + style.horizontalPadding - messageRect.origin.y = titleRect.origin.y + titleRect.size.height + style.verticalPadding - messageRect.size.width = messageLabel.bounds.size.width - messageRect.size.height = messageLabel.bounds.size.height - } - - let longerWidth = max(titleRect.size.width, messageRect.size.width) - let longerX = max(titleRect.origin.x, messageRect.origin.x) - let wrapperWidth = max((imageRect.size.width + (style.horizontalPadding * 2.0)), (longerX + longerWidth + style.horizontalPadding)) - - let textMaxY = messageRect.size.height <= 0.0 && titleRect.size.height > 0.0 ? titleRect.maxY : messageRect.maxY - let wrapperHeight = max((textMaxY + style.verticalPadding), (imageRect.size.height + (style.verticalPadding * 2.0))) - - wrapperView.frame = CGRect(x: 0.0, y: 0.0, width: wrapperWidth, height: wrapperHeight) - - if let titleLabel = titleLabel { - titleRect.size.width = longerWidth - titleLabel.frame = titleRect - wrapperView.addSubview(titleLabel) - } - - if let messageLabel = messageLabel { - messageRect.size.width = longerWidth - messageLabel.frame = messageRect - wrapperView.addSubview(messageLabel) - } - - if let imageView = imageView { - wrapperView.addSubview(imageView) - } - - return wrapperView - } - -} - -// MARK: - Toast Style - -/** - `ToastStyle` instances define the look and feel for toast views created via the - `makeToast` methods as well for toast views created directly with - `toastViewForMessage(message:title:image:style:)`. - - @warning `ToastStyle` offers relatively simple styling options for the default - toast view. If you require a toast view with more complex UI, it probably makes more - sense to create your own custom UIView subclass and present it with the `showToast` - methods. -*/ -public struct ToastStyle { - - public init() {} - - /** - The background color. Default is `.black` at 80% opacity. - */ - public var backgroundColor: UIColor = UIColor.black.withAlphaComponent(0.8) - - /** - The title color. Default is `UIColor.whiteColor()`. - */ - public var titleColor: UIColor = .white - - /** - The message color. Default is `.white`. - */ - public var messageColor: UIColor = .white - - /** - A percentage value from 0.0 to 1.0, representing the maximum width of the toast - view relative to it's superview. Default is 0.8 (80% of the superview's width). - */ - public var maxWidthPercentage: CGFloat = 0.8 { - didSet { - maxWidthPercentage = max(min(maxWidthPercentage, 1.0), 0.0) - } - } - - /** - A percentage value from 0.0 to 1.0, representing the maximum height of the toast - view relative to it's superview. Default is 0.8 (80% of the superview's height). - */ - public var maxHeightPercentage: CGFloat = 0.8 { - didSet { - maxHeightPercentage = max(min(maxHeightPercentage, 1.0), 0.0) - } - } - - /** - The spacing from the horizontal edge of the toast view to the content. When an image - is present, this is also used as the padding between the image and the text. - Default is 10.0. - - */ - public var horizontalPadding: CGFloat = 10.0 - - /** - The spacing from the vertical edge of the toast view to the content. When a title - is present, this is also used as the padding between the title and the message. - Default is 10.0. On iOS11+, this value is added added to the `safeAreaInset.top` - and `safeAreaInsets.bottom`. - */ - public var verticalPadding: CGFloat = 10.0 - - /** - The corner radius. Default is 10.0. - */ - public var cornerRadius: CGFloat = 10.0; - - /** - The title font. Default is `.boldSystemFont(16.0)`. - */ - public var titleFont: UIFont = .boldSystemFont(ofSize: 16.0) - - /** - The message font. Default is `.systemFont(ofSize: 16.0)`. - */ - public var messageFont: UIFont = .systemFont(ofSize: 16.0) - - /** - The title text alignment. Default is `NSTextAlignment.Left`. - */ - public var titleAlignment: NSTextAlignment = .left - - /** - The message text alignment. Default is `NSTextAlignment.Left`. - */ - public var messageAlignment: NSTextAlignment = .left - - /** - The maximum number of lines for the title. The default is 0 (no limit). - */ - public var titleNumberOfLines = 0 - - /** - The maximum number of lines for the message. The default is 0 (no limit). - */ - public var messageNumberOfLines = 0 - - /** - Enable or disable a shadow on the toast view. Default is `false`. - */ - public var displayShadow = false - - /** - The shadow color. Default is `.black`. - */ - public var shadowColor: UIColor = .black - - /** - A value from 0.0 to 1.0, representing the opacity of the shadow. - Default is 0.8 (80% opacity). - */ - public var shadowOpacity: Float = 0.8 { - didSet { - shadowOpacity = max(min(shadowOpacity, 1.0), 0.0) - } - } - - /** - The shadow radius. Default is 6.0. - */ - public var shadowRadius: CGFloat = 6.0 - - /** - The shadow offset. The default is 4 x 4. - */ - public var shadowOffset = CGSize(width: 4.0, height: 4.0) - - /** - The image size. The default is 80 x 80. - */ - public var imageSize = CGSize(width: 80.0, height: 80.0) - - /** - The size of the toast activity view when `makeToastActivity(position:)` is called. - Default is 100 x 100. - */ - public var activitySize = CGSize(width: 100.0, height: 100.0) - - /** - The fade in/out animation duration. Default is 0.2. - */ - public var fadeDuration: TimeInterval = 0.2 - - /** - Activity indicator color. Default is `.white`. - */ - public var activityIndicatorColor: UIColor = .white - - /** - Activity background color. Default is `.black` at 80% opacity. - */ - public var activityBackgroundColor: UIColor = UIColor.black.withAlphaComponent(0.8) - -} - -// MARK: - Toast Manager - -/** - `ToastManager` provides general configuration options for all toast - notifications. Backed by a singleton instance. -*/ -public class ToastManager { - - /** - The `ToastManager` singleton instance. - - */ - public static let shared = ToastManager() - - /** - The shared style. Used whenever toastViewForMessage(message:title:image:style:) is called - with with a nil style. - - */ - public var style = ToastStyle() - - /** - Enables or disables tap to dismiss on toast views. Default is `true`. - - */ - public var isTapToDismissEnabled = true - - /** - Enables or disables queueing behavior for toast views. When `true`, - toast views will appear one after the other. When `false`, multiple toast - views will appear at the same time (potentially overlapping depending - on their positions). This has no effect on the toast activity view, - which operates independently of normal toast views. Default is `false`. - - */ - public var isQueueEnabled = false - - /** - The default duration. Used for the `makeToast` and - `showToast` methods that don't require an explicit duration. - Default is 3.0. - - */ - public var duration: TimeInterval = 3.0 - - /** - Sets the default position. Used for the `makeToast` and - `showToast` methods that don't require an explicit position. - Default is `ToastPosition.Bottom`. - - */ - public var position: ToastPosition = .bottom - -} - -// MARK: - ToastPosition - -public enum ToastPosition { - case top - case center - case bottom - - fileprivate func centerPoint(forToast toast: UIView, inSuperview superview: UIView) -> CGPoint { - let topPadding: CGFloat = ToastManager.shared.style.verticalPadding + superview.csSafeAreaInsets.top - let bottomPadding: CGFloat = ToastManager.shared.style.verticalPadding + superview.csSafeAreaInsets.bottom - - switch self { - case .top: - return CGPoint(x: superview.bounds.size.width / 2.0, y: (toast.frame.size.height / 2.0) + topPadding) - case .center: - return CGPoint(x: superview.bounds.size.width / 2.0, y: superview.bounds.size.height / 2.0) - case .bottom: - return CGPoint(x: superview.bounds.size.width / 2.0, y: (superview.bounds.size.height - (toast.frame.size.height / 2.0)) - bottomPadding) - } - } -} - -// MARK: - Private UIView Extensions - -private extension UIView { - - var csSafeAreaInsets: UIEdgeInsets { - if #available(iOS 11.0, *) { - return self.safeAreaInsets - } else { - return .zero - } - } - -} -- GitLab